stream-chat-react-native-core 4.6.0 → 4.6.1-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -27,7 +27,7 @@ var _icons = require("../../../icons");
27
27
 
28
28
  var _utils = require("../../../utils/utils");
29
29
 
30
- var _excluded = ["borderRadius", "borderRadiusL", "borderRadiusS"];
30
+ var _excluded = ["borderBottomLeftRadius", "borderBottomRightRadius", "borderRadius", "borderRadiusL", "borderRadiusS", "borderTopLeftRadius", "borderTopRightRadius"];
31
31
 
32
32
  var _this = this,
33
33
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Message/MessageSimple/MessageContent.tsx";
@@ -109,9 +109,13 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
109
109
  _useTheme$theme$messa = _useTheme$theme.messageSimple,
110
110
  _useTheme$theme$messa2 = _useTheme$theme$messa.content,
111
111
  _useTheme$theme$messa3 = _useTheme$theme$messa2.container,
112
+ borderBottomLeftRadius = _useTheme$theme$messa3.borderBottomLeftRadius,
113
+ borderBottomRightRadius = _useTheme$theme$messa3.borderBottomRightRadius,
112
114
  borderRadius = _useTheme$theme$messa3.borderRadius,
113
115
  borderRadiusL = _useTheme$theme$messa3.borderRadiusL,
114
116
  borderRadiusS = _useTheme$theme$messa3.borderRadiusS,
117
+ borderTopLeftRadius = _useTheme$theme$messa3.borderTopLeftRadius,
118
+ borderTopRightRadius = _useTheme$theme$messa3.borderTopRightRadius,
115
119
  container = (0, _objectWithoutProperties2["default"])(_useTheme$theme$messa3, _excluded),
116
120
  containerInner = _useTheme$theme$messa2.containerInner,
117
121
  errorContainer = _useTheme$theme$messa2.errorContainer,
@@ -169,7 +173,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
169
173
  __self: _this,
170
174
  __source: {
171
175
  fileName: _jsxFileName,
172
- lineNumber: 202,
176
+ lineNumber: 211,
173
177
  columnNumber: 7
174
178
  }
175
179
  });
@@ -192,16 +196,42 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
192
196
  var repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;
193
197
  var isBorderColor = isMyMessage && !error;
194
198
 
195
- var shouldApplyBorderRadius = function shouldApplyBorderRadius(firstGroupStyle, secondGroupStyle) {
196
- return (groupStyle === firstGroupStyle || groupStyle === secondGroupStyle) && (!hasThreadReplies || threadList);
199
+ var getBorderRadius = function getBorderRadius() {
200
+ var groupPosition = groupStyles == null ? void 0 : groupStyles[0];
201
+ var isBottomOrSingle = groupPosition === 'single' || groupPosition === 'bottom';
202
+ var borderBottomLeftRadius = borderRadiusL;
203
+ var borderBottomRightRadius = borderRadiusL;
204
+
205
+ if (isBottomOrSingle && (!hasThreadReplies || threadList)) {
206
+ if (alignment === 'left') {
207
+ borderBottomLeftRadius = borderRadiusS;
208
+ } else {
209
+ borderBottomRightRadius = borderRadiusS;
210
+ }
211
+ }
212
+
213
+ return {
214
+ borderBottomLeftRadius: borderBottomLeftRadius,
215
+ borderBottomRightRadius: borderBottomRightRadius
216
+ };
197
217
  };
198
218
 
199
- var applyBorderRadius = function applyBorderRadius(firstGroupStyle, secondGroupStyle) {
200
- if (shouldApplyBorderRadius(firstGroupStyle, secondGroupStyle)) {
201
- return borderRadiusS;
219
+ var getBorderRadiusFromTheme = function getBorderRadiusFromTheme() {
220
+ var bordersFromTheme = {
221
+ borderBottomLeftRadius: borderBottomLeftRadius,
222
+ borderBottomRightRadius: borderBottomRightRadius,
223
+ borderRadius: borderRadius,
224
+ borderTopLeftRadius: borderTopLeftRadius,
225
+ borderTopRightRadius: borderTopRightRadius
226
+ };
227
+
228
+ for (var key in bordersFromTheme) {
229
+ if (bordersFromTheme[key] === undefined) {
230
+ delete bordersFromTheme[key];
231
+ }
202
232
  }
203
233
 
204
- return borderRadiusL;
234
+ return bordersFromTheme;
205
235
  };
206
236
 
207
237
  return _react["default"].createElement(_reactNative.TouchableOpacity, (0, _extends2["default"])({
@@ -239,7 +269,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
239
269
  __self: _this,
240
270
  __source: {
241
271
  fileName: _jsxFileName,
242
- lineNumber: 243,
272
+ lineNumber: 280,
243
273
  columnNumber: 5
244
274
  }
245
275
  }), MessageHeader && _react["default"].createElement(MessageHeader, {
@@ -255,7 +285,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
255
285
  __self: _this,
256
286
  __source: {
257
287
  fileName: _jsxFileName,
258
- lineNumber: 284,
288
+ lineNumber: 321,
259
289
  columnNumber: 9
260
290
  }
261
291
  }), _react["default"].createElement(_reactNative.View, {
@@ -264,7 +294,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
264
294
  __self: _this,
265
295
  __source: {
266
296
  fileName: _jsxFileName,
267
- lineNumber: 296,
297
+ lineNumber: 333,
268
298
  columnNumber: 7
269
299
  }
270
300
  }, hasThreadReplies && !threadList && !noBorder && _react["default"].createElement(_reactNative.View, {
@@ -277,26 +307,21 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
277
307
  __self: _this,
278
308
  __source: {
279
309
  fileName: _jsxFileName,
280
- lineNumber: 298,
310
+ lineNumber: 335,
281
311
  columnNumber: 11
282
312
  }
283
313
  }), _react["default"].createElement(_reactNative.View, {
284
- style: [styles.containerInner, {
314
+ style: [styles.containerInner, (0, _extends2["default"])({
285
315
  backgroundColor: backgroundColor,
286
- borderBottomLeftRadius: applyBorderRadius('left_bottom', 'left_single'),
287
- borderBottomRightRadius: applyBorderRadius('right_bottom', 'right_single'),
288
- borderColor: isBorderColor ? backgroundColor : grey_whisper,
289
- borderRadius: borderRadius,
290
- borderTopLeftRadius: applyBorderRadius('left_top', 'right_single'),
291
- borderTopRightRadius: applyBorderRadius('right_top', 'right_single')
292
- }, noBorder ? {
316
+ borderColor: isBorderColor ? backgroundColor : grey_whisper
317
+ }, getBorderRadius(), getBorderRadiusFromTheme()), noBorder ? {
293
318
  borderWidth: 0
294
319
  } : {}, containerInner],
295
320
  testID: "message-content-wrapper",
296
321
  __self: _this,
297
322
  __source: {
298
323
  fileName: _jsxFileName,
299
- lineNumber: 311,
324
+ lineNumber: 348,
300
325
  columnNumber: 9
301
326
  }
302
327
  }, messageContentOrder.map(function (messageContentType, messageContentOrderIndex) {
@@ -308,7 +333,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
308
333
  __self: _this,
309
334
  __source: {
310
335
  fileName: _jsxFileName,
311
- lineNumber: 333,
336
+ lineNumber: 367,
312
337
  columnNumber: 21
313
338
  }
314
339
  }, _react["default"].createElement(Reply, {
@@ -320,7 +345,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
320
345
  __self: _this,
321
346
  __source: {
322
347
  fileName: _jsxFileName,
323
- lineNumber: 337,
348
+ lineNumber: 371,
324
349
  columnNumber: 23
325
350
  }
326
351
  }));
@@ -333,7 +358,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
333
358
  __self: _this,
334
359
  __source: {
335
360
  fileName: _jsxFileName,
336
- lineNumber: 343,
361
+ lineNumber: 377,
337
362
  columnNumber: 19
338
363
  }
339
364
  });
@@ -346,7 +371,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
346
371
  __self: _this,
347
372
  __source: {
348
373
  fileName: _jsxFileName,
349
- lineNumber: 347,
374
+ lineNumber: 381,
350
375
  columnNumber: 19
351
376
  }
352
377
  });
@@ -357,7 +382,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
357
382
  __self: _this,
358
383
  __source: {
359
384
  fileName: _jsxFileName,
360
- lineNumber: 353,
385
+ lineNumber: 387,
361
386
  columnNumber: 24
362
387
  }
363
388
  });
@@ -369,7 +394,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
369
394
  __self: _this,
370
395
  __source: {
371
396
  fileName: _jsxFileName,
372
- lineNumber: 357,
397
+ lineNumber: 391,
373
398
  columnNumber: 19
374
399
  }
375
400
  });
@@ -380,7 +405,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
380
405
  __self: _this,
381
406
  __source: {
382
407
  fileName: _jsxFileName,
383
- lineNumber: 365,
408
+ lineNumber: 399,
384
409
  columnNumber: 11
385
410
  }
386
411
  }, _react["default"].createElement(_reactNative.View, {
@@ -388,7 +413,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
388
413
  __self: _this,
389
414
  __source: {
390
415
  fileName: _jsxFileName,
391
- lineNumber: 366,
416
+ lineNumber: 400,
392
417
  columnNumber: 13
393
418
  }
394
419
  }, _react["default"].createElement(_icons.Error, (0, _extends2["default"])({
@@ -397,7 +422,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
397
422
  __self: _this,
398
423
  __source: {
399
424
  fileName: _jsxFileName,
400
- lineNumber: 367,
425
+ lineNumber: 401,
401
426
  columnNumber: 15
402
427
  }
403
428
  }))))), _react["default"].createElement(MessageReplies, {
@@ -406,7 +431,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
406
431
  __self: _this,
407
432
  __source: {
408
433
  fileName: _jsxFileName,
409
- lineNumber: 372,
434
+ lineNumber: 406,
410
435
  columnNumber: 7
411
436
  }
412
437
  }), _react["default"].createElement(MessageFooter, {
@@ -415,7 +440,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
415
440
  __self: _this,
416
441
  __source: {
417
442
  fileName: _jsxFileName,
418
- lineNumber: 373,
443
+ lineNumber: 407,
419
444
  columnNumber: 7
420
445
  }
421
446
  }));
@@ -575,7 +600,7 @@ var MessageContent = function MessageContent(props) {
575
600
  __self: _this,
576
601
  __source: {
577
602
  fileName: _jsxFileName,
578
- lineNumber: 558,
603
+ lineNumber: 592,
579
604
  columnNumber: 5
580
605
  }
581
606
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageContent.tsx"],"names":["styles","StyleSheet","create","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","leftAlignContent","justifyContent","leftAlignItems","alignItems","replyBorder","borderLeftWidth","bottom","position","replyContainer","flexDirection","paddingHorizontal","paddingTop","rightAlignContent","rightAlignItems","MessageContentWithContext","props","additionalTouchableProps","alignment","Attachment","disabled","FileAttachmentGroup","formatDate","Gallery","groupStyles","hasReactions","isMyMessage","lastGroupMessage","members","message","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageReplies","MessageStatus","onLongPress","onlyEmojis","onPress","onPressIn","otherAttachments","preventPress","Reply","setMessageContentWidth","showMessageStatus","tDateTimeParser","threadList","theme","colors","accent_red","blue_alice","grey_gainsboro","grey_whisper","transparent","white","messageSimple","content","container","borderRadius","borderRadiusL","borderRadiusS","errorContainer","errorIcon","errorIconContainer","wrapper","reactionList","radius","reactionSize","getDateText","formatter","created_at","parserOutput","format","onLayout","width","nativeEvent","layout","error","type","status","MessageStatusTypes","FAILED","groupStyle","toLowerCase","hasThreadReplies","reply_count","noBorder","quoted_message","length","isMessageTypeDeleted","backgroundColor","repliesCurveColor","isBorderColor","shouldApplyBorderRadius","firstGroupStyle","secondGroupStyle","applyBorderRadius","event","emitter","borderColor","height","left","undefined","right","borderBottomLeftRadius","borderBottomRightRadius","map","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","id","actions","absoluteFill","areEqual","prevProps","nextProps","prevGoToMessage","goToMessage","prevGroupStyles","prevHasReactions","isAttachmentEqual","prevLastGroupMessage","prevMembers","prevMessage","prevMessageContentOrder","prevOnlyEmojis","prevOtherAttachments","prevT","t","prevTDateTimeParser","nextGoToMessage","nextGroupStyles","nextHasReactions","nextLastGroupMessage","nextMembers","nextMessage","nextMessageContentOrder","nextOnlyEmojis","nextOtherAttachments","nextT","nextTDateTimeParser","hasReactionsEqual","lastGroupMessageEqual","goToMessageChangedAndMatters","quoted_message_id","onlyEmojisEqual","otherAttachmentsEqual","membersEqual","Object","keys","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","text","pinned","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","prevMessageAttachments","attachments","nextMessageAttachments","attachmentsEqual","Array","isArray","every","index","attachmentKeysEqual","image_url","og_scrape_url","thumb_url","latestReactionsEqual","latest_reactions","messageContentOrderEqual","tEqual","tDateTimeParserEqual","MemoizedMessageContent","React","memo","MessageContent","lastReceivedId","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { LayoutChangeEvent, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { MessageTextContainer } from './MessageTextContainer';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n TranslationContextValue,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport { Error } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes, vw } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n leftAlignContent: {\n justifyContent: 'flex-start',\n },\n leftAlignItems: {\n alignItems: 'flex-start',\n },\n replyBorder: {\n borderLeftWidth: 1,\n bottom: 0,\n position: 'absolute',\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n rightAlignContent: {\n justifyContent: 'flex-end',\n },\n rightAlignItems: {\n alignItems: 'flex-end',\n },\n});\n\nexport type MessageContentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'disabled'\n | 'goToMessage'\n | 'groupStyles'\n | 'hasReactions'\n | 'isMyMessage'\n | 'lastGroupMessage'\n | 'members'\n | 'message'\n | 'messageContentOrder'\n | 'onLongPress'\n | 'onlyEmojis'\n | 'onPress'\n | 'onPressIn'\n | 'otherAttachments'\n | 'preventPress'\n | 'showMessageStatus'\n | 'threadList'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'FileAttachmentGroup'\n | 'formatDate'\n | 'Gallery'\n | 'isAttachmentEqual'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageDeleted'\n | 'MessageReplies'\n | 'MessageStatus'\n | 'onPressInMessage'\n | 'Reply'\n > &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n setMessageContentWidth: React.Dispatch<React.SetStateAction<number>>;\n };\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nconst MessageContentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n setMessageContentWidth,\n showMessageStatus,\n tDateTimeParser,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { accent_red, blue_alice, grey_gainsboro, grey_whisper, transparent, white },\n messageSimple: {\n content: {\n container: { borderRadius, borderRadiusL, borderRadiusS, ...container },\n containerInner,\n errorContainer,\n errorIcon,\n errorIconContainer,\n replyBorder,\n replyContainer,\n wrapper,\n },\n reactionList: { radius, reactionSize },\n },\n },\n } = useTheme();\n\n const getDateText = (formatter?: (date: TDateTimeParserInput) => string) => {\n if (!message.created_at) return '';\n\n if (formatter) {\n return formatter(message.created_at);\n }\n\n const parserOutput = tDateTimeParser(message.created_at);\n\n if (isDayOrMoment(parserOutput)) {\n return parserOutput.format('LT');\n }\n return message.created_at;\n };\n\n const onLayout: (event: LayoutChangeEvent) => void = ({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setMessageContentWidth(width);\n };\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n let noBorder = onlyEmojis && !message.quoted_message;\n if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy' && !isMyMessage) {\n noBorder = false;\n } else {\n noBorder = true;\n }\n }\n\n const isMessageTypeDeleted = message.type === 'deleted';\n\n if (isMessageTypeDeleted) {\n return (\n <MessageDeleted\n formattedDate={getDateText(formatDate)}\n groupStyle={groupStyle}\n noBorder={noBorder}\n onLayout={onLayout}\n />\n );\n }\n\n let backgroundColor = grey_gainsboro;\n if (onlyEmojis && !message.quoted_message) {\n backgroundColor = transparent;\n } else if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy') {\n backgroundColor = message.quoted_message ? grey_gainsboro : transparent;\n } else {\n backgroundColor = blue_alice;\n }\n } else if (alignment === 'left' || error) {\n backgroundColor = white;\n }\n\n const repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;\n\n const isBorderColor = isMyMessage && !error;\n\n const shouldApplyBorderRadius = (firstGroupStyle: string, secondGroupStyle: string): boolean =>\n (groupStyle === firstGroupStyle || groupStyle === secondGroupStyle) &&\n (!hasThreadReplies || threadList);\n\n const applyBorderRadius = (\n firstGroupStyle: string,\n secondGroupStyle: string,\n ): number | undefined => {\n if (shouldApplyBorderRadius(firstGroupStyle, secondGroupStyle)) {\n return borderRadiusS;\n }\n return borderRadiusL;\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.7}\n disabled={disabled || preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n testID='message-content'\n {...additionalTouchableProps}\n /**\n * Border radii are useful for the case of error message types only.\n * Otherwise background is transparent, so border radius is not really visible.\n */\n style={[\n alignment === 'left' ? styles.leftAlignItems : styles.rightAlignItems,\n { paddingTop: hasReactions ? reactionSize / 2 + radius : 2 },\n error ? errorContainer : {},\n container,\n ]}\n >\n {MessageHeader && (\n <MessageHeader\n alignment={alignment}\n formattedDate={getDateText(formatDate)}\n isDeleted={!!isMessageTypeDeleted}\n lastGroupMessage={lastGroupMessage}\n members={members}\n message={message}\n MessageStatus={MessageStatus}\n otherAttachments={otherAttachments}\n showMessageStatus={showMessageStatus}\n />\n )}\n <View onLayout={onLayout} style={wrapper}>\n {hasThreadReplies && !threadList && !noBorder && (\n <View\n style={[\n styles.replyBorder,\n {\n borderColor: repliesCurveColor,\n height: borderRadiusL,\n left: alignment === 'left' ? 0 : undefined,\n right: alignment === 'right' ? 0 : undefined,\n },\n replyBorder,\n ]}\n />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor,\n borderBottomLeftRadius: applyBorderRadius('left_bottom', 'left_single'),\n borderBottomRightRadius: applyBorderRadius('right_bottom', 'right_single'),\n borderColor: isBorderColor ? backgroundColor : grey_whisper,\n borderRadius,\n borderTopLeftRadius: applyBorderRadius('left_top', 'right_single'),\n borderTopRightRadius: applyBorderRadius('right_top', 'right_single'),\n },\n noBorder ? { borderWidth: 0 } : {},\n containerInner,\n ]}\n testID='message-content-wrapper'\n >\n {messageContentOrder.map((messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply styles={{ messageContainer: { maxWidth: vw(60) } }} />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments.map((attachment, attachmentIndex) => (\n <Attachment attachment={attachment} key={`${message.id}-${attachmentIndex}`} />\n ));\n case 'files':\n return (\n <FileAttachmentGroup\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n );\n case 'gallery':\n return <Gallery key={`gallery_${messageContentOrderIndex}`} />;\n case 'text':\n default:\n return otherAttachments.length && otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n />\n );\n }\n })}\n </View>\n {error && (\n <View style={StyleSheet.absoluteFill} testID='message-error'>\n <View style={errorIconContainer}>\n <Error pathFill={accent_red} {...errorIcon} />\n </View>\n </View>\n )}\n </View>\n <MessageReplies noBorder={noBorder} repliesCurveColor={repliesCurveColor} />\n <MessageFooter formattedDate={getDateText(formatDate)} isDeleted={!!isMessageTypeDeleted} />\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageContentPropsWithContext<StreamChatGenerics>,\n nextProps: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n isAttachmentEqual,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n messageContentOrder: prevMessageContentOrder,\n onlyEmojis: prevOnlyEmojis,\n otherAttachments: prevOtherAttachments,\n t: prevT,\n tDateTimeParser: prevTDateTimeParser,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n messageContentOrder: nextMessageContentOrder,\n onlyEmojis: nextOnlyEmojis,\n otherAttachments: nextOtherAttachments,\n t: nextT,\n tDateTimeParser: nextTDateTimeParser,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n if (goToMessageChangedAndMatters) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length &&\n prevGroupStyles?.[0] === nextGroupStyles?.[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n if (!quotedMessageEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments)\n ? prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.og_scrape_url === nextMessageAttachments[index].og_scrape_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })\n : prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const messageContentOrderEqual =\n prevMessageContentOrder.length === nextMessageContentOrder.length &&\n prevMessageContentOrder.every(\n (messageContentType, index) => messageContentType === nextMessageContentOrder[index],\n );\n if (!messageContentOrderEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;\n if (!tDateTimeParserEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageContent = React.memo(\n MessageContentWithContext,\n areEqual,\n) as typeof MessageContentWithContext;\n\nexport type MessageContentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>> &\n Pick<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>;\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nexport const MessageContent = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n disabled,\n goToMessage,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n showMessageStatus,\n threadList,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n Attachment,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n isAttachmentEqual,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n Reply,\n } = useMessagesContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MemoizedMessageContent<StreamChatGenerics>\n {...{\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n goToMessage,\n groupStyles,\n hasReactions,\n isAttachmentEqual,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n showMessageStatus,\n t,\n tDateTimeParser,\n threadList,\n }}\n {...props}\n />\n );\n};\n\nMessageContent.displayName = 'MessageContent{messageSimple{content}}';\n"]}
1
+ {"version":3,"sources":["MessageContent.tsx"],"names":["styles","StyleSheet","create","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","leftAlignContent","justifyContent","leftAlignItems","alignItems","replyBorder","borderLeftWidth","bottom","position","replyContainer","flexDirection","paddingHorizontal","paddingTop","rightAlignContent","rightAlignItems","MessageContentWithContext","props","additionalTouchableProps","alignment","Attachment","disabled","FileAttachmentGroup","formatDate","Gallery","groupStyles","hasReactions","isMyMessage","lastGroupMessage","members","message","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageReplies","MessageStatus","onLongPress","onlyEmojis","onPress","onPressIn","otherAttachments","preventPress","Reply","setMessageContentWidth","showMessageStatus","tDateTimeParser","threadList","theme","colors","accent_red","blue_alice","grey_gainsboro","grey_whisper","transparent","white","messageSimple","content","container","borderBottomLeftRadius","borderBottomRightRadius","borderRadius","borderRadiusL","borderRadiusS","errorContainer","errorIcon","errorIconContainer","wrapper","reactionList","radius","reactionSize","getDateText","formatter","created_at","parserOutput","format","onLayout","width","nativeEvent","layout","error","type","status","MessageStatusTypes","FAILED","groupStyle","toLowerCase","hasThreadReplies","reply_count","noBorder","quoted_message","length","isMessageTypeDeleted","backgroundColor","repliesCurveColor","isBorderColor","getBorderRadius","groupPosition","isBottomOrSingle","getBorderRadiusFromTheme","bordersFromTheme","key","undefined","event","emitter","borderColor","height","left","right","map","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","id","actions","absoluteFill","areEqual","prevProps","nextProps","prevGoToMessage","goToMessage","prevGroupStyles","prevHasReactions","isAttachmentEqual","prevLastGroupMessage","prevMembers","prevMessage","prevMessageContentOrder","prevOnlyEmojis","prevOtherAttachments","prevT","t","prevTDateTimeParser","nextGoToMessage","nextGroupStyles","nextHasReactions","nextLastGroupMessage","nextMembers","nextMessage","nextMessageContentOrder","nextOnlyEmojis","nextOtherAttachments","nextT","nextTDateTimeParser","hasReactionsEqual","lastGroupMessageEqual","goToMessageChangedAndMatters","quoted_message_id","onlyEmojisEqual","otherAttachmentsEqual","membersEqual","Object","keys","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","text","pinned","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","prevMessageAttachments","attachments","nextMessageAttachments","attachmentsEqual","Array","isArray","every","index","attachmentKeysEqual","image_url","og_scrape_url","thumb_url","latestReactionsEqual","latest_reactions","messageContentOrderEqual","tEqual","tDateTimeParserEqual","MemoizedMessageContent","React","memo","MessageContent","lastReceivedId","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { LayoutChangeEvent, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { MessageTextContainer } from './MessageTextContainer';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n TranslationContextValue,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport { Error } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes, vw } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n leftAlignContent: {\n justifyContent: 'flex-start',\n },\n leftAlignItems: {\n alignItems: 'flex-start',\n },\n replyBorder: {\n borderLeftWidth: 1,\n bottom: 0,\n position: 'absolute',\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n rightAlignContent: {\n justifyContent: 'flex-end',\n },\n rightAlignItems: {\n alignItems: 'flex-end',\n },\n});\n\nexport type MessageContentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'disabled'\n | 'goToMessage'\n | 'groupStyles'\n | 'hasReactions'\n | 'isMyMessage'\n | 'lastGroupMessage'\n | 'members'\n | 'message'\n | 'messageContentOrder'\n | 'onLongPress'\n | 'onlyEmojis'\n | 'onPress'\n | 'onPressIn'\n | 'otherAttachments'\n | 'preventPress'\n | 'showMessageStatus'\n | 'threadList'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'FileAttachmentGroup'\n | 'formatDate'\n | 'Gallery'\n | 'isAttachmentEqual'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageDeleted'\n | 'MessageReplies'\n | 'MessageStatus'\n | 'onPressInMessage'\n | 'Reply'\n > &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n setMessageContentWidth: React.Dispatch<React.SetStateAction<number>>;\n };\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nconst MessageContentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n setMessageContentWidth,\n showMessageStatus,\n tDateTimeParser,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { accent_red, blue_alice, grey_gainsboro, grey_whisper, transparent, white },\n messageSimple: {\n content: {\n container: {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderRadius,\n borderRadiusL,\n borderRadiusS,\n borderTopLeftRadius,\n borderTopRightRadius,\n ...container\n },\n containerInner,\n errorContainer,\n errorIcon,\n errorIconContainer,\n replyBorder,\n replyContainer,\n wrapper,\n },\n reactionList: { radius, reactionSize },\n },\n },\n } = useTheme();\n\n const getDateText = (formatter?: (date: TDateTimeParserInput) => string) => {\n if (!message.created_at) return '';\n\n if (formatter) {\n return formatter(message.created_at);\n }\n\n const parserOutput = tDateTimeParser(message.created_at);\n\n if (isDayOrMoment(parserOutput)) {\n return parserOutput.format('LT');\n }\n return message.created_at;\n };\n\n const onLayout: (event: LayoutChangeEvent) => void = ({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setMessageContentWidth(width);\n };\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n let noBorder = onlyEmojis && !message.quoted_message;\n if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy' && !isMyMessage) {\n noBorder = false;\n } else {\n noBorder = true;\n }\n }\n\n const isMessageTypeDeleted = message.type === 'deleted';\n\n if (isMessageTypeDeleted) {\n return (\n <MessageDeleted\n formattedDate={getDateText(formatDate)}\n groupStyle={groupStyle}\n noBorder={noBorder}\n onLayout={onLayout}\n />\n );\n }\n\n let backgroundColor = grey_gainsboro;\n if (onlyEmojis && !message.quoted_message) {\n backgroundColor = transparent;\n } else if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy') {\n backgroundColor = message.quoted_message ? grey_gainsboro : transparent;\n } else {\n backgroundColor = blue_alice;\n }\n } else if (alignment === 'left' || error) {\n backgroundColor = white;\n }\n\n const repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;\n\n const isBorderColor = isMyMessage && !error;\n\n const getBorderRadius = () => {\n // enum('top', 'middle', 'bottom', 'single')\n const groupPosition = groupStyles?.[0];\n\n const isBottomOrSingle = groupPosition === 'single' || groupPosition === 'bottom';\n let borderBottomLeftRadius = borderRadiusL;\n let borderBottomRightRadius = borderRadiusL;\n\n if (isBottomOrSingle && (!hasThreadReplies || threadList)) {\n // add relevant sharp corner\n if (alignment === 'left') {\n borderBottomLeftRadius = borderRadiusS;\n } else {\n borderBottomRightRadius = borderRadiusS;\n }\n }\n\n return {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n };\n };\n\n const getBorderRadiusFromTheme = () => {\n const bordersFromTheme: Record<string, number | undefined> = {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderRadius,\n borderTopLeftRadius,\n borderTopRightRadius,\n };\n\n // filter out undefined values\n for (const key in bordersFromTheme) {\n if (bordersFromTheme[key] === undefined) {\n delete bordersFromTheme[key];\n }\n }\n\n return bordersFromTheme;\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.7}\n disabled={disabled || preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n testID='message-content'\n {...additionalTouchableProps}\n /**\n * Border radii are useful for the case of error message types only.\n * Otherwise background is transparent, so border radius is not really visible.\n */\n style={[\n alignment === 'left' ? styles.leftAlignItems : styles.rightAlignItems,\n { paddingTop: hasReactions ? reactionSize / 2 + radius : 2 },\n error ? errorContainer : {},\n container,\n ]}\n >\n {MessageHeader && (\n <MessageHeader\n alignment={alignment}\n formattedDate={getDateText(formatDate)}\n isDeleted={!!isMessageTypeDeleted}\n lastGroupMessage={lastGroupMessage}\n members={members}\n message={message}\n MessageStatus={MessageStatus}\n otherAttachments={otherAttachments}\n showMessageStatus={showMessageStatus}\n />\n )}\n <View onLayout={onLayout} style={wrapper}>\n {hasThreadReplies && !threadList && !noBorder && (\n <View\n style={[\n styles.replyBorder,\n {\n borderColor: repliesCurveColor,\n height: borderRadiusL,\n left: alignment === 'left' ? 0 : undefined,\n right: alignment === 'right' ? 0 : undefined,\n },\n replyBorder,\n ]}\n />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor,\n borderColor: isBorderColor ? backgroundColor : grey_whisper,\n ...getBorderRadius(),\n ...getBorderRadiusFromTheme(),\n },\n noBorder ? { borderWidth: 0 } : {},\n containerInner,\n ]}\n testID='message-content-wrapper'\n >\n {messageContentOrder.map((messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply styles={{ messageContainer: { maxWidth: vw(60) } }} />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments.map((attachment, attachmentIndex) => (\n <Attachment attachment={attachment} key={`${message.id}-${attachmentIndex}`} />\n ));\n case 'files':\n return (\n <FileAttachmentGroup\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n );\n case 'gallery':\n return <Gallery key={`gallery_${messageContentOrderIndex}`} />;\n case 'text':\n default:\n return otherAttachments.length && otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n />\n );\n }\n })}\n </View>\n {error && (\n <View style={StyleSheet.absoluteFill} testID='message-error'>\n <View style={errorIconContainer}>\n <Error pathFill={accent_red} {...errorIcon} />\n </View>\n </View>\n )}\n </View>\n <MessageReplies noBorder={noBorder} repliesCurveColor={repliesCurveColor} />\n <MessageFooter formattedDate={getDateText(formatDate)} isDeleted={!!isMessageTypeDeleted} />\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageContentPropsWithContext<StreamChatGenerics>,\n nextProps: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n isAttachmentEqual,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n messageContentOrder: prevMessageContentOrder,\n onlyEmojis: prevOnlyEmojis,\n otherAttachments: prevOtherAttachments,\n t: prevT,\n tDateTimeParser: prevTDateTimeParser,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n messageContentOrder: nextMessageContentOrder,\n onlyEmojis: nextOnlyEmojis,\n otherAttachments: nextOtherAttachments,\n t: nextT,\n tDateTimeParser: nextTDateTimeParser,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n if (goToMessageChangedAndMatters) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length &&\n prevGroupStyles?.[0] === nextGroupStyles?.[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n if (!quotedMessageEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments)\n ? prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.og_scrape_url === nextMessageAttachments[index].og_scrape_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })\n : prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const messageContentOrderEqual =\n prevMessageContentOrder.length === nextMessageContentOrder.length &&\n prevMessageContentOrder.every(\n (messageContentType, index) => messageContentType === nextMessageContentOrder[index],\n );\n if (!messageContentOrderEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;\n if (!tDateTimeParserEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageContent = React.memo(\n MessageContentWithContext,\n areEqual,\n) as typeof MessageContentWithContext;\n\nexport type MessageContentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>> &\n Pick<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>;\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nexport const MessageContent = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n disabled,\n goToMessage,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n showMessageStatus,\n threadList,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n Attachment,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n isAttachmentEqual,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n Reply,\n } = useMessagesContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MemoizedMessageContent<StreamChatGenerics>\n {...{\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n goToMessage,\n groupStyles,\n hasReactions,\n isAttachmentEqual,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n showMessageStatus,\n t,\n tDateTimeParser,\n threadList,\n }}\n {...props}\n />\n );\n};\n\nMessageContent.displayName = 'MessageContent{messageSimple{content}}';\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.6.0"
2
+ "version": "4.6.1-beta.1"
3
3
  }
@@ -27,7 +27,7 @@ var _icons = require("../../../icons");
27
27
 
28
28
  var _utils = require("../../../utils/utils");
29
29
 
30
- var _excluded = ["borderRadius", "borderRadiusL", "borderRadiusS"];
30
+ var _excluded = ["borderBottomLeftRadius", "borderBottomRightRadius", "borderRadius", "borderRadiusL", "borderRadiusS", "borderTopLeftRadius", "borderTopRightRadius"];
31
31
 
32
32
  var _this = this,
33
33
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Message/MessageSimple/MessageContent.tsx";
@@ -109,9 +109,13 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
109
109
  _useTheme$theme$messa = _useTheme$theme.messageSimple,
110
110
  _useTheme$theme$messa2 = _useTheme$theme$messa.content,
111
111
  _useTheme$theme$messa3 = _useTheme$theme$messa2.container,
112
+ borderBottomLeftRadius = _useTheme$theme$messa3.borderBottomLeftRadius,
113
+ borderBottomRightRadius = _useTheme$theme$messa3.borderBottomRightRadius,
112
114
  borderRadius = _useTheme$theme$messa3.borderRadius,
113
115
  borderRadiusL = _useTheme$theme$messa3.borderRadiusL,
114
116
  borderRadiusS = _useTheme$theme$messa3.borderRadiusS,
117
+ borderTopLeftRadius = _useTheme$theme$messa3.borderTopLeftRadius,
118
+ borderTopRightRadius = _useTheme$theme$messa3.borderTopRightRadius,
115
119
  container = (0, _objectWithoutProperties2["default"])(_useTheme$theme$messa3, _excluded),
116
120
  containerInner = _useTheme$theme$messa2.containerInner,
117
121
  errorContainer = _useTheme$theme$messa2.errorContainer,
@@ -169,7 +173,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
169
173
  __self: _this,
170
174
  __source: {
171
175
  fileName: _jsxFileName,
172
- lineNumber: 202,
176
+ lineNumber: 211,
173
177
  columnNumber: 7
174
178
  }
175
179
  });
@@ -192,16 +196,42 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
192
196
  var repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;
193
197
  var isBorderColor = isMyMessage && !error;
194
198
 
195
- var shouldApplyBorderRadius = function shouldApplyBorderRadius(firstGroupStyle, secondGroupStyle) {
196
- return (groupStyle === firstGroupStyle || groupStyle === secondGroupStyle) && (!hasThreadReplies || threadList);
199
+ var getBorderRadius = function getBorderRadius() {
200
+ var groupPosition = groupStyles == null ? void 0 : groupStyles[0];
201
+ var isBottomOrSingle = groupPosition === 'single' || groupPosition === 'bottom';
202
+ var borderBottomLeftRadius = borderRadiusL;
203
+ var borderBottomRightRadius = borderRadiusL;
204
+
205
+ if (isBottomOrSingle && (!hasThreadReplies || threadList)) {
206
+ if (alignment === 'left') {
207
+ borderBottomLeftRadius = borderRadiusS;
208
+ } else {
209
+ borderBottomRightRadius = borderRadiusS;
210
+ }
211
+ }
212
+
213
+ return {
214
+ borderBottomLeftRadius: borderBottomLeftRadius,
215
+ borderBottomRightRadius: borderBottomRightRadius
216
+ };
197
217
  };
198
218
 
199
- var applyBorderRadius = function applyBorderRadius(firstGroupStyle, secondGroupStyle) {
200
- if (shouldApplyBorderRadius(firstGroupStyle, secondGroupStyle)) {
201
- return borderRadiusS;
219
+ var getBorderRadiusFromTheme = function getBorderRadiusFromTheme() {
220
+ var bordersFromTheme = {
221
+ borderBottomLeftRadius: borderBottomLeftRadius,
222
+ borderBottomRightRadius: borderBottomRightRadius,
223
+ borderRadius: borderRadius,
224
+ borderTopLeftRadius: borderTopLeftRadius,
225
+ borderTopRightRadius: borderTopRightRadius
226
+ };
227
+
228
+ for (var key in bordersFromTheme) {
229
+ if (bordersFromTheme[key] === undefined) {
230
+ delete bordersFromTheme[key];
231
+ }
202
232
  }
203
233
 
204
- return borderRadiusL;
234
+ return bordersFromTheme;
205
235
  };
206
236
 
207
237
  return _react["default"].createElement(_reactNative.TouchableOpacity, (0, _extends2["default"])({
@@ -239,7 +269,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
239
269
  __self: _this,
240
270
  __source: {
241
271
  fileName: _jsxFileName,
242
- lineNumber: 243,
272
+ lineNumber: 280,
243
273
  columnNumber: 5
244
274
  }
245
275
  }), MessageHeader && _react["default"].createElement(MessageHeader, {
@@ -255,7 +285,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
255
285
  __self: _this,
256
286
  __source: {
257
287
  fileName: _jsxFileName,
258
- lineNumber: 284,
288
+ lineNumber: 321,
259
289
  columnNumber: 9
260
290
  }
261
291
  }), _react["default"].createElement(_reactNative.View, {
@@ -264,7 +294,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
264
294
  __self: _this,
265
295
  __source: {
266
296
  fileName: _jsxFileName,
267
- lineNumber: 296,
297
+ lineNumber: 333,
268
298
  columnNumber: 7
269
299
  }
270
300
  }, hasThreadReplies && !threadList && !noBorder && _react["default"].createElement(_reactNative.View, {
@@ -277,26 +307,21 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
277
307
  __self: _this,
278
308
  __source: {
279
309
  fileName: _jsxFileName,
280
- lineNumber: 298,
310
+ lineNumber: 335,
281
311
  columnNumber: 11
282
312
  }
283
313
  }), _react["default"].createElement(_reactNative.View, {
284
- style: [styles.containerInner, {
314
+ style: [styles.containerInner, (0, _extends2["default"])({
285
315
  backgroundColor: backgroundColor,
286
- borderBottomLeftRadius: applyBorderRadius('left_bottom', 'left_single'),
287
- borderBottomRightRadius: applyBorderRadius('right_bottom', 'right_single'),
288
- borderColor: isBorderColor ? backgroundColor : grey_whisper,
289
- borderRadius: borderRadius,
290
- borderTopLeftRadius: applyBorderRadius('left_top', 'right_single'),
291
- borderTopRightRadius: applyBorderRadius('right_top', 'right_single')
292
- }, noBorder ? {
316
+ borderColor: isBorderColor ? backgroundColor : grey_whisper
317
+ }, getBorderRadius(), getBorderRadiusFromTheme()), noBorder ? {
293
318
  borderWidth: 0
294
319
  } : {}, containerInner],
295
320
  testID: "message-content-wrapper",
296
321
  __self: _this,
297
322
  __source: {
298
323
  fileName: _jsxFileName,
299
- lineNumber: 311,
324
+ lineNumber: 348,
300
325
  columnNumber: 9
301
326
  }
302
327
  }, messageContentOrder.map(function (messageContentType, messageContentOrderIndex) {
@@ -308,7 +333,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
308
333
  __self: _this,
309
334
  __source: {
310
335
  fileName: _jsxFileName,
311
- lineNumber: 333,
336
+ lineNumber: 367,
312
337
  columnNumber: 21
313
338
  }
314
339
  }, _react["default"].createElement(Reply, {
@@ -320,7 +345,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
320
345
  __self: _this,
321
346
  __source: {
322
347
  fileName: _jsxFileName,
323
- lineNumber: 337,
348
+ lineNumber: 371,
324
349
  columnNumber: 23
325
350
  }
326
351
  }));
@@ -333,7 +358,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
333
358
  __self: _this,
334
359
  __source: {
335
360
  fileName: _jsxFileName,
336
- lineNumber: 343,
361
+ lineNumber: 377,
337
362
  columnNumber: 19
338
363
  }
339
364
  });
@@ -346,7 +371,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
346
371
  __self: _this,
347
372
  __source: {
348
373
  fileName: _jsxFileName,
349
- lineNumber: 347,
374
+ lineNumber: 381,
350
375
  columnNumber: 19
351
376
  }
352
377
  });
@@ -357,7 +382,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
357
382
  __self: _this,
358
383
  __source: {
359
384
  fileName: _jsxFileName,
360
- lineNumber: 353,
385
+ lineNumber: 387,
361
386
  columnNumber: 24
362
387
  }
363
388
  });
@@ -369,7 +394,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
369
394
  __self: _this,
370
395
  __source: {
371
396
  fileName: _jsxFileName,
372
- lineNumber: 357,
397
+ lineNumber: 391,
373
398
  columnNumber: 19
374
399
  }
375
400
  });
@@ -380,7 +405,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
380
405
  __self: _this,
381
406
  __source: {
382
407
  fileName: _jsxFileName,
383
- lineNumber: 365,
408
+ lineNumber: 399,
384
409
  columnNumber: 11
385
410
  }
386
411
  }, _react["default"].createElement(_reactNative.View, {
@@ -388,7 +413,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
388
413
  __self: _this,
389
414
  __source: {
390
415
  fileName: _jsxFileName,
391
- lineNumber: 366,
416
+ lineNumber: 400,
392
417
  columnNumber: 13
393
418
  }
394
419
  }, _react["default"].createElement(_icons.Error, (0, _extends2["default"])({
@@ -397,7 +422,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
397
422
  __self: _this,
398
423
  __source: {
399
424
  fileName: _jsxFileName,
400
- lineNumber: 367,
425
+ lineNumber: 401,
401
426
  columnNumber: 15
402
427
  }
403
428
  }))))), _react["default"].createElement(MessageReplies, {
@@ -406,7 +431,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
406
431
  __self: _this,
407
432
  __source: {
408
433
  fileName: _jsxFileName,
409
- lineNumber: 372,
434
+ lineNumber: 406,
410
435
  columnNumber: 7
411
436
  }
412
437
  }), _react["default"].createElement(MessageFooter, {
@@ -415,7 +440,7 @@ var MessageContentWithContext = function MessageContentWithContext(props) {
415
440
  __self: _this,
416
441
  __source: {
417
442
  fileName: _jsxFileName,
418
- lineNumber: 373,
443
+ lineNumber: 407,
419
444
  columnNumber: 7
420
445
  }
421
446
  }));
@@ -575,7 +600,7 @@ var MessageContent = function MessageContent(props) {
575
600
  __self: _this,
576
601
  __source: {
577
602
  fileName: _jsxFileName,
578
- lineNumber: 558,
603
+ lineNumber: 592,
579
604
  columnNumber: 5
580
605
  }
581
606
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["MessageContent.tsx"],"names":["styles","StyleSheet","create","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","leftAlignContent","justifyContent","leftAlignItems","alignItems","replyBorder","borderLeftWidth","bottom","position","replyContainer","flexDirection","paddingHorizontal","paddingTop","rightAlignContent","rightAlignItems","MessageContentWithContext","props","additionalTouchableProps","alignment","Attachment","disabled","FileAttachmentGroup","formatDate","Gallery","groupStyles","hasReactions","isMyMessage","lastGroupMessage","members","message","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageReplies","MessageStatus","onLongPress","onlyEmojis","onPress","onPressIn","otherAttachments","preventPress","Reply","setMessageContentWidth","showMessageStatus","tDateTimeParser","threadList","theme","colors","accent_red","blue_alice","grey_gainsboro","grey_whisper","transparent","white","messageSimple","content","container","borderRadius","borderRadiusL","borderRadiusS","errorContainer","errorIcon","errorIconContainer","wrapper","reactionList","radius","reactionSize","getDateText","formatter","created_at","parserOutput","format","onLayout","width","nativeEvent","layout","error","type","status","MessageStatusTypes","FAILED","groupStyle","toLowerCase","hasThreadReplies","reply_count","noBorder","quoted_message","length","isMessageTypeDeleted","backgroundColor","repliesCurveColor","isBorderColor","shouldApplyBorderRadius","firstGroupStyle","secondGroupStyle","applyBorderRadius","event","emitter","borderColor","height","left","undefined","right","borderBottomLeftRadius","borderBottomRightRadius","map","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","id","actions","absoluteFill","areEqual","prevProps","nextProps","prevGoToMessage","goToMessage","prevGroupStyles","prevHasReactions","isAttachmentEqual","prevLastGroupMessage","prevMembers","prevMessage","prevMessageContentOrder","prevOnlyEmojis","prevOtherAttachments","prevT","t","prevTDateTimeParser","nextGoToMessage","nextGroupStyles","nextHasReactions","nextLastGroupMessage","nextMembers","nextMessage","nextMessageContentOrder","nextOnlyEmojis","nextOtherAttachments","nextT","nextTDateTimeParser","hasReactionsEqual","lastGroupMessageEqual","goToMessageChangedAndMatters","quoted_message_id","onlyEmojisEqual","otherAttachmentsEqual","membersEqual","Object","keys","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","text","pinned","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","prevMessageAttachments","attachments","nextMessageAttachments","attachmentsEqual","Array","isArray","every","index","attachmentKeysEqual","image_url","og_scrape_url","thumb_url","latestReactionsEqual","latest_reactions","messageContentOrderEqual","tEqual","tDateTimeParserEqual","MemoizedMessageContent","React","memo","MessageContent","lastReceivedId","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { LayoutChangeEvent, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { MessageTextContainer } from './MessageTextContainer';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n TranslationContextValue,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport { Error } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes, vw } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n leftAlignContent: {\n justifyContent: 'flex-start',\n },\n leftAlignItems: {\n alignItems: 'flex-start',\n },\n replyBorder: {\n borderLeftWidth: 1,\n bottom: 0,\n position: 'absolute',\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n rightAlignContent: {\n justifyContent: 'flex-end',\n },\n rightAlignItems: {\n alignItems: 'flex-end',\n },\n});\n\nexport type MessageContentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'disabled'\n | 'goToMessage'\n | 'groupStyles'\n | 'hasReactions'\n | 'isMyMessage'\n | 'lastGroupMessage'\n | 'members'\n | 'message'\n | 'messageContentOrder'\n | 'onLongPress'\n | 'onlyEmojis'\n | 'onPress'\n | 'onPressIn'\n | 'otherAttachments'\n | 'preventPress'\n | 'showMessageStatus'\n | 'threadList'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'FileAttachmentGroup'\n | 'formatDate'\n | 'Gallery'\n | 'isAttachmentEqual'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageDeleted'\n | 'MessageReplies'\n | 'MessageStatus'\n | 'onPressInMessage'\n | 'Reply'\n > &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n setMessageContentWidth: React.Dispatch<React.SetStateAction<number>>;\n };\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nconst MessageContentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n setMessageContentWidth,\n showMessageStatus,\n tDateTimeParser,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { accent_red, blue_alice, grey_gainsboro, grey_whisper, transparent, white },\n messageSimple: {\n content: {\n container: { borderRadius, borderRadiusL, borderRadiusS, ...container },\n containerInner,\n errorContainer,\n errorIcon,\n errorIconContainer,\n replyBorder,\n replyContainer,\n wrapper,\n },\n reactionList: { radius, reactionSize },\n },\n },\n } = useTheme();\n\n const getDateText = (formatter?: (date: TDateTimeParserInput) => string) => {\n if (!message.created_at) return '';\n\n if (formatter) {\n return formatter(message.created_at);\n }\n\n const parserOutput = tDateTimeParser(message.created_at);\n\n if (isDayOrMoment(parserOutput)) {\n return parserOutput.format('LT');\n }\n return message.created_at;\n };\n\n const onLayout: (event: LayoutChangeEvent) => void = ({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setMessageContentWidth(width);\n };\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n let noBorder = onlyEmojis && !message.quoted_message;\n if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy' && !isMyMessage) {\n noBorder = false;\n } else {\n noBorder = true;\n }\n }\n\n const isMessageTypeDeleted = message.type === 'deleted';\n\n if (isMessageTypeDeleted) {\n return (\n <MessageDeleted\n formattedDate={getDateText(formatDate)}\n groupStyle={groupStyle}\n noBorder={noBorder}\n onLayout={onLayout}\n />\n );\n }\n\n let backgroundColor = grey_gainsboro;\n if (onlyEmojis && !message.quoted_message) {\n backgroundColor = transparent;\n } else if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy') {\n backgroundColor = message.quoted_message ? grey_gainsboro : transparent;\n } else {\n backgroundColor = blue_alice;\n }\n } else if (alignment === 'left' || error) {\n backgroundColor = white;\n }\n\n const repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;\n\n const isBorderColor = isMyMessage && !error;\n\n const shouldApplyBorderRadius = (firstGroupStyle: string, secondGroupStyle: string): boolean =>\n (groupStyle === firstGroupStyle || groupStyle === secondGroupStyle) &&\n (!hasThreadReplies || threadList);\n\n const applyBorderRadius = (\n firstGroupStyle: string,\n secondGroupStyle: string,\n ): number | undefined => {\n if (shouldApplyBorderRadius(firstGroupStyle, secondGroupStyle)) {\n return borderRadiusS;\n }\n return borderRadiusL;\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.7}\n disabled={disabled || preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n testID='message-content'\n {...additionalTouchableProps}\n /**\n * Border radii are useful for the case of error message types only.\n * Otherwise background is transparent, so border radius is not really visible.\n */\n style={[\n alignment === 'left' ? styles.leftAlignItems : styles.rightAlignItems,\n { paddingTop: hasReactions ? reactionSize / 2 + radius : 2 },\n error ? errorContainer : {},\n container,\n ]}\n >\n {MessageHeader && (\n <MessageHeader\n alignment={alignment}\n formattedDate={getDateText(formatDate)}\n isDeleted={!!isMessageTypeDeleted}\n lastGroupMessage={lastGroupMessage}\n members={members}\n message={message}\n MessageStatus={MessageStatus}\n otherAttachments={otherAttachments}\n showMessageStatus={showMessageStatus}\n />\n )}\n <View onLayout={onLayout} style={wrapper}>\n {hasThreadReplies && !threadList && !noBorder && (\n <View\n style={[\n styles.replyBorder,\n {\n borderColor: repliesCurveColor,\n height: borderRadiusL,\n left: alignment === 'left' ? 0 : undefined,\n right: alignment === 'right' ? 0 : undefined,\n },\n replyBorder,\n ]}\n />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor,\n borderBottomLeftRadius: applyBorderRadius('left_bottom', 'left_single'),\n borderBottomRightRadius: applyBorderRadius('right_bottom', 'right_single'),\n borderColor: isBorderColor ? backgroundColor : grey_whisper,\n borderRadius,\n borderTopLeftRadius: applyBorderRadius('left_top', 'right_single'),\n borderTopRightRadius: applyBorderRadius('right_top', 'right_single'),\n },\n noBorder ? { borderWidth: 0 } : {},\n containerInner,\n ]}\n testID='message-content-wrapper'\n >\n {messageContentOrder.map((messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply styles={{ messageContainer: { maxWidth: vw(60) } }} />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments.map((attachment, attachmentIndex) => (\n <Attachment attachment={attachment} key={`${message.id}-${attachmentIndex}`} />\n ));\n case 'files':\n return (\n <FileAttachmentGroup\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n );\n case 'gallery':\n return <Gallery key={`gallery_${messageContentOrderIndex}`} />;\n case 'text':\n default:\n return otherAttachments.length && otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n />\n );\n }\n })}\n </View>\n {error && (\n <View style={StyleSheet.absoluteFill} testID='message-error'>\n <View style={errorIconContainer}>\n <Error pathFill={accent_red} {...errorIcon} />\n </View>\n </View>\n )}\n </View>\n <MessageReplies noBorder={noBorder} repliesCurveColor={repliesCurveColor} />\n <MessageFooter formattedDate={getDateText(formatDate)} isDeleted={!!isMessageTypeDeleted} />\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageContentPropsWithContext<StreamChatGenerics>,\n nextProps: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n isAttachmentEqual,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n messageContentOrder: prevMessageContentOrder,\n onlyEmojis: prevOnlyEmojis,\n otherAttachments: prevOtherAttachments,\n t: prevT,\n tDateTimeParser: prevTDateTimeParser,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n messageContentOrder: nextMessageContentOrder,\n onlyEmojis: nextOnlyEmojis,\n otherAttachments: nextOtherAttachments,\n t: nextT,\n tDateTimeParser: nextTDateTimeParser,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n if (goToMessageChangedAndMatters) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length &&\n prevGroupStyles?.[0] === nextGroupStyles?.[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n if (!quotedMessageEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments)\n ? prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.og_scrape_url === nextMessageAttachments[index].og_scrape_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })\n : prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const messageContentOrderEqual =\n prevMessageContentOrder.length === nextMessageContentOrder.length &&\n prevMessageContentOrder.every(\n (messageContentType, index) => messageContentType === nextMessageContentOrder[index],\n );\n if (!messageContentOrderEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;\n if (!tDateTimeParserEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageContent = React.memo(\n MessageContentWithContext,\n areEqual,\n) as typeof MessageContentWithContext;\n\nexport type MessageContentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>> &\n Pick<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>;\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nexport const MessageContent = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n disabled,\n goToMessage,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n showMessageStatus,\n threadList,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n Attachment,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n isAttachmentEqual,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n Reply,\n } = useMessagesContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MemoizedMessageContent<StreamChatGenerics>\n {...{\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n goToMessage,\n groupStyles,\n hasReactions,\n isAttachmentEqual,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n showMessageStatus,\n t,\n tDateTimeParser,\n threadList,\n }}\n {...props}\n />\n );\n};\n\nMessageContent.displayName = 'MessageContent{messageSimple{content}}';\n"]}
1
+ {"version":3,"sources":["MessageContent.tsx"],"names":["styles","StyleSheet","create","containerInner","borderTopLeftRadius","borderTopRightRadius","borderWidth","overflow","leftAlignContent","justifyContent","leftAlignItems","alignItems","replyBorder","borderLeftWidth","bottom","position","replyContainer","flexDirection","paddingHorizontal","paddingTop","rightAlignContent","rightAlignItems","MessageContentWithContext","props","additionalTouchableProps","alignment","Attachment","disabled","FileAttachmentGroup","formatDate","Gallery","groupStyles","hasReactions","isMyMessage","lastGroupMessage","members","message","messageContentOrder","MessageDeleted","MessageFooter","MessageHeader","MessageReplies","MessageStatus","onLongPress","onlyEmojis","onPress","onPressIn","otherAttachments","preventPress","Reply","setMessageContentWidth","showMessageStatus","tDateTimeParser","threadList","theme","colors","accent_red","blue_alice","grey_gainsboro","grey_whisper","transparent","white","messageSimple","content","container","borderBottomLeftRadius","borderBottomRightRadius","borderRadius","borderRadiusL","borderRadiusS","errorContainer","errorIcon","errorIconContainer","wrapper","reactionList","radius","reactionSize","getDateText","formatter","created_at","parserOutput","format","onLayout","width","nativeEvent","layout","error","type","status","MessageStatusTypes","FAILED","groupStyle","toLowerCase","hasThreadReplies","reply_count","noBorder","quoted_message","length","isMessageTypeDeleted","backgroundColor","repliesCurveColor","isBorderColor","getBorderRadius","groupPosition","isBottomOrSingle","getBorderRadiusFromTheme","bordersFromTheme","key","undefined","event","emitter","borderColor","height","left","right","map","messageContentType","messageContentOrderIndex","messageContainer","maxWidth","attachment","attachmentIndex","id","actions","absoluteFill","areEqual","prevProps","nextProps","prevGoToMessage","goToMessage","prevGroupStyles","prevHasReactions","isAttachmentEqual","prevLastGroupMessage","prevMembers","prevMessage","prevMessageContentOrder","prevOnlyEmojis","prevOtherAttachments","prevT","t","prevTDateTimeParser","nextGoToMessage","nextGroupStyles","nextHasReactions","nextLastGroupMessage","nextMembers","nextMessage","nextMessageContentOrder","nextOnlyEmojis","nextOtherAttachments","nextT","nextTDateTimeParser","hasReactionsEqual","lastGroupMessageEqual","goToMessageChangedAndMatters","quoted_message_id","onlyEmojisEqual","otherAttachmentsEqual","membersEqual","Object","keys","groupStylesEqual","isPrevMessageTypeDeleted","isNextMessageTypeDeleted","messageEqual","text","pinned","isPrevQuotedMessageTypeDeleted","isNextQuotedMessageTypeDeleted","quotedMessageEqual","prevMessageAttachments","attachments","nextMessageAttachments","attachmentsEqual","Array","isArray","every","index","attachmentKeysEqual","image_url","og_scrape_url","thumb_url","latestReactionsEqual","latest_reactions","messageContentOrderEqual","tEqual","tDateTimeParserEqual","MemoizedMessageContent","React","memo","MessageContent","lastReceivedId","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { LayoutChangeEvent, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { MessageTextContainer } from './MessageTextContainer';\n\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport {\n isDayOrMoment,\n TDateTimeParserInput,\n TranslationContextValue,\n useTranslationContext,\n} from '../../../contexts/translationContext/TranslationContext';\n\nimport { Error } from '../../../icons';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { MessageStatusTypes, vw } from '../../../utils/utils';\n\nconst styles = StyleSheet.create({\n containerInner: {\n borderTopLeftRadius: 16,\n borderTopRightRadius: 16,\n borderWidth: 1,\n overflow: 'hidden',\n },\n leftAlignContent: {\n justifyContent: 'flex-start',\n },\n leftAlignItems: {\n alignItems: 'flex-start',\n },\n replyBorder: {\n borderLeftWidth: 1,\n bottom: 0,\n position: 'absolute',\n },\n replyContainer: {\n flexDirection: 'row',\n paddingHorizontal: 8,\n paddingTop: 8,\n },\n rightAlignContent: {\n justifyContent: 'flex-end',\n },\n rightAlignItems: {\n alignItems: 'flex-end',\n },\n});\n\nexport type MessageContentPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'disabled'\n | 'goToMessage'\n | 'groupStyles'\n | 'hasReactions'\n | 'isMyMessage'\n | 'lastGroupMessage'\n | 'members'\n | 'message'\n | 'messageContentOrder'\n | 'onLongPress'\n | 'onlyEmojis'\n | 'onPress'\n | 'onPressIn'\n | 'otherAttachments'\n | 'preventPress'\n | 'showMessageStatus'\n | 'threadList'\n> &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'Attachment'\n | 'FileAttachmentGroup'\n | 'formatDate'\n | 'Gallery'\n | 'isAttachmentEqual'\n | 'MessageFooter'\n | 'MessageHeader'\n | 'MessageDeleted'\n | 'MessageReplies'\n | 'MessageStatus'\n | 'onPressInMessage'\n | 'Reply'\n > &\n Pick<TranslationContextValue, 't' | 'tDateTimeParser'> & {\n setMessageContentWidth: React.Dispatch<React.SetStateAction<number>>;\n };\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nconst MessageContentWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n setMessageContentWidth,\n showMessageStatus,\n tDateTimeParser,\n threadList,\n } = props;\n\n const {\n theme: {\n colors: { accent_red, blue_alice, grey_gainsboro, grey_whisper, transparent, white },\n messageSimple: {\n content: {\n container: {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderRadius,\n borderRadiusL,\n borderRadiusS,\n borderTopLeftRadius,\n borderTopRightRadius,\n ...container\n },\n containerInner,\n errorContainer,\n errorIcon,\n errorIconContainer,\n replyBorder,\n replyContainer,\n wrapper,\n },\n reactionList: { radius, reactionSize },\n },\n },\n } = useTheme();\n\n const getDateText = (formatter?: (date: TDateTimeParserInput) => string) => {\n if (!message.created_at) return '';\n\n if (formatter) {\n return formatter(message.created_at);\n }\n\n const parserOutput = tDateTimeParser(message.created_at);\n\n if (isDayOrMoment(parserOutput)) {\n return parserOutput.format('LT');\n }\n return message.created_at;\n };\n\n const onLayout: (event: LayoutChangeEvent) => void = ({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setMessageContentWidth(width);\n };\n\n const error = message.type === 'error' || message.status === MessageStatusTypes.FAILED;\n\n const groupStyle = `${alignment}_${groupStyles?.[0]?.toLowerCase?.()}`;\n\n const hasThreadReplies = !!message?.reply_count;\n\n let noBorder = onlyEmojis && !message.quoted_message;\n if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy' && !isMyMessage) {\n noBorder = false;\n } else {\n noBorder = true;\n }\n }\n\n const isMessageTypeDeleted = message.type === 'deleted';\n\n if (isMessageTypeDeleted) {\n return (\n <MessageDeleted\n formattedDate={getDateText(formatDate)}\n groupStyle={groupStyle}\n noBorder={noBorder}\n onLayout={onLayout}\n />\n );\n }\n\n let backgroundColor = grey_gainsboro;\n if (onlyEmojis && !message.quoted_message) {\n backgroundColor = transparent;\n } else if (otherAttachments.length) {\n if (otherAttachments[0].type === 'giphy') {\n backgroundColor = message.quoted_message ? grey_gainsboro : transparent;\n } else {\n backgroundColor = blue_alice;\n }\n } else if (alignment === 'left' || error) {\n backgroundColor = white;\n }\n\n const repliesCurveColor = isMyMessage && !error ? backgroundColor : grey_whisper;\n\n const isBorderColor = isMyMessage && !error;\n\n const getBorderRadius = () => {\n // enum('top', 'middle', 'bottom', 'single')\n const groupPosition = groupStyles?.[0];\n\n const isBottomOrSingle = groupPosition === 'single' || groupPosition === 'bottom';\n let borderBottomLeftRadius = borderRadiusL;\n let borderBottomRightRadius = borderRadiusL;\n\n if (isBottomOrSingle && (!hasThreadReplies || threadList)) {\n // add relevant sharp corner\n if (alignment === 'left') {\n borderBottomLeftRadius = borderRadiusS;\n } else {\n borderBottomRightRadius = borderRadiusS;\n }\n }\n\n return {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n };\n };\n\n const getBorderRadiusFromTheme = () => {\n const bordersFromTheme: Record<string, number | undefined> = {\n borderBottomLeftRadius,\n borderBottomRightRadius,\n borderRadius,\n borderTopLeftRadius,\n borderTopRightRadius,\n };\n\n // filter out undefined values\n for (const key in bordersFromTheme) {\n if (bordersFromTheme[key] === undefined) {\n delete bordersFromTheme[key];\n }\n }\n\n return bordersFromTheme;\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.7}\n disabled={disabled || preventPress}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n emitter: 'messageContent',\n event,\n });\n }\n }}\n testID='message-content'\n {...additionalTouchableProps}\n /**\n * Border radii are useful for the case of error message types only.\n * Otherwise background is transparent, so border radius is not really visible.\n */\n style={[\n alignment === 'left' ? styles.leftAlignItems : styles.rightAlignItems,\n { paddingTop: hasReactions ? reactionSize / 2 + radius : 2 },\n error ? errorContainer : {},\n container,\n ]}\n >\n {MessageHeader && (\n <MessageHeader\n alignment={alignment}\n formattedDate={getDateText(formatDate)}\n isDeleted={!!isMessageTypeDeleted}\n lastGroupMessage={lastGroupMessage}\n members={members}\n message={message}\n MessageStatus={MessageStatus}\n otherAttachments={otherAttachments}\n showMessageStatus={showMessageStatus}\n />\n )}\n <View onLayout={onLayout} style={wrapper}>\n {hasThreadReplies && !threadList && !noBorder && (\n <View\n style={[\n styles.replyBorder,\n {\n borderColor: repliesCurveColor,\n height: borderRadiusL,\n left: alignment === 'left' ? 0 : undefined,\n right: alignment === 'right' ? 0 : undefined,\n },\n replyBorder,\n ]}\n />\n )}\n <View\n style={[\n styles.containerInner,\n {\n backgroundColor,\n borderColor: isBorderColor ? backgroundColor : grey_whisper,\n ...getBorderRadius(),\n ...getBorderRadiusFromTheme(),\n },\n noBorder ? { borderWidth: 0 } : {},\n containerInner,\n ]}\n testID='message-content-wrapper'\n >\n {messageContentOrder.map((messageContentType, messageContentOrderIndex) => {\n switch (messageContentType) {\n case 'quoted_reply':\n return (\n message.quoted_message && (\n <View\n key={`quoted_reply_${messageContentOrderIndex}`}\n style={[styles.replyContainer, replyContainer]}\n >\n <Reply styles={{ messageContainer: { maxWidth: vw(60) } }} />\n </View>\n )\n );\n case 'attachments':\n return otherAttachments.map((attachment, attachmentIndex) => (\n <Attachment attachment={attachment} key={`${message.id}-${attachmentIndex}`} />\n ));\n case 'files':\n return (\n <FileAttachmentGroup\n key={`file_attachment_group_${messageContentOrderIndex}`}\n messageId={message.id}\n />\n );\n case 'gallery':\n return <Gallery key={`gallery_${messageContentOrderIndex}`} />;\n case 'text':\n default:\n return otherAttachments.length && otherAttachments[0].actions ? null : (\n <MessageTextContainer<StreamChatGenerics>\n key={`message_text_container_${messageContentOrderIndex}`}\n />\n );\n }\n })}\n </View>\n {error && (\n <View style={StyleSheet.absoluteFill} testID='message-error'>\n <View style={errorIconContainer}>\n <Error pathFill={accent_red} {...errorIcon} />\n </View>\n </View>\n )}\n </View>\n <MessageReplies noBorder={noBorder} repliesCurveColor={repliesCurveColor} />\n <MessageFooter formattedDate={getDateText(formatDate)} isDeleted={!!isMessageTypeDeleted} />\n </TouchableOpacity>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: MessageContentPropsWithContext<StreamChatGenerics>,\n nextProps: MessageContentPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n goToMessage: prevGoToMessage,\n groupStyles: prevGroupStyles,\n hasReactions: prevHasReactions,\n isAttachmentEqual,\n lastGroupMessage: prevLastGroupMessage,\n members: prevMembers,\n message: prevMessage,\n messageContentOrder: prevMessageContentOrder,\n onlyEmojis: prevOnlyEmojis,\n otherAttachments: prevOtherAttachments,\n t: prevT,\n tDateTimeParser: prevTDateTimeParser,\n } = prevProps;\n const {\n goToMessage: nextGoToMessage,\n groupStyles: nextGroupStyles,\n hasReactions: nextHasReactions,\n lastGroupMessage: nextLastGroupMessage,\n members: nextMembers,\n message: nextMessage,\n messageContentOrder: nextMessageContentOrder,\n onlyEmojis: nextOnlyEmojis,\n otherAttachments: nextOtherAttachments,\n t: nextT,\n tDateTimeParser: nextTDateTimeParser,\n } = nextProps;\n\n const hasReactionsEqual = prevHasReactions === nextHasReactions;\n if (!hasReactionsEqual) return false;\n\n const lastGroupMessageEqual = prevLastGroupMessage === nextLastGroupMessage;\n if (!lastGroupMessageEqual) return false;\n\n const goToMessageChangedAndMatters =\n nextMessage.quoted_message_id && prevGoToMessage !== nextGoToMessage;\n if (goToMessageChangedAndMatters) return false;\n\n const onlyEmojisEqual = prevOnlyEmojis === nextOnlyEmojis;\n if (!onlyEmojisEqual) return false;\n\n const otherAttachmentsEqual =\n prevOtherAttachments.length === nextOtherAttachments.length &&\n prevOtherAttachments?.[0]?.actions?.length === nextOtherAttachments?.[0]?.actions?.length;\n if (!otherAttachmentsEqual) return false;\n\n const membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;\n if (!membersEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length &&\n prevGroupStyles?.[0] === nextGroupStyles?.[0];\n if (!groupStylesEqual) return false;\n\n const isPrevMessageTypeDeleted = prevMessage.type === 'deleted';\n const isNextMessageTypeDeleted = nextMessage.type === 'deleted';\n\n const messageEqual =\n isPrevMessageTypeDeleted === isNextMessageTypeDeleted &&\n prevMessage.reply_count === nextMessage.reply_count &&\n prevMessage.status === nextMessage.status &&\n prevMessage.type === nextMessage.type &&\n prevMessage.text === nextMessage.text &&\n prevMessage.pinned === nextMessage.pinned;\n if (!messageEqual) return false;\n\n const isPrevQuotedMessageTypeDeleted = prevMessage.quoted_message?.type === 'deleted';\n const isNextQuotedMessageTypeDeleted = nextMessage.quoted_message?.type === 'deleted';\n\n const quotedMessageEqual =\n prevMessage.quoted_message?.id === nextMessage.quoted_message?.id &&\n isPrevQuotedMessageTypeDeleted === isNextQuotedMessageTypeDeleted;\n if (!quotedMessageEqual) return false;\n\n const prevMessageAttachments = prevMessage.attachments;\n const nextMessageAttachments = nextMessage.attachments;\n const attachmentsEqual =\n Array.isArray(prevMessageAttachments) && Array.isArray(nextMessageAttachments)\n ? prevMessageAttachments.length === nextMessageAttachments.length &&\n prevMessageAttachments.every((attachment, index) => {\n const attachmentKeysEqual =\n attachment.image_url === nextMessageAttachments[index].image_url &&\n attachment.og_scrape_url === nextMessageAttachments[index].og_scrape_url &&\n attachment.thumb_url === nextMessageAttachments[index].thumb_url;\n\n if (isAttachmentEqual)\n return (\n attachmentKeysEqual && !!isAttachmentEqual(attachment, nextMessageAttachments[index])\n );\n\n return attachmentKeysEqual;\n })\n : prevMessageAttachments === nextMessageAttachments;\n if (!attachmentsEqual) return false;\n\n const latestReactionsEqual =\n Array.isArray(prevMessage.latest_reactions) && Array.isArray(nextMessage.latest_reactions)\n ? prevMessage.latest_reactions.length === nextMessage.latest_reactions.length &&\n prevMessage.latest_reactions.every(\n ({ type }, index) => type === nextMessage.latest_reactions?.[index].type,\n )\n : prevMessage.latest_reactions === nextMessage.latest_reactions;\n if (!latestReactionsEqual) return false;\n\n const messageContentOrderEqual =\n prevMessageContentOrder.length === nextMessageContentOrder.length &&\n prevMessageContentOrder.every(\n (messageContentType, index) => messageContentType === nextMessageContentOrder[index],\n );\n if (!messageContentOrderEqual) return false;\n\n const tEqual = prevT === nextT;\n if (!tEqual) return false;\n\n const tDateTimeParserEqual = prevTDateTimeParser === nextTDateTimeParser;\n if (!tDateTimeParserEqual) return false;\n\n return true;\n};\n\nconst MemoizedMessageContent = React.memo(\n MessageContentWithContext,\n areEqual,\n) as typeof MessageContentWithContext;\n\nexport type MessageContentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<Omit<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>> &\n Pick<MessageContentPropsWithContext<StreamChatGenerics>, 'setMessageContentWidth'>;\n\n/**\n * Child of MessageSimple that displays a message's content\n */\nexport const MessageContent = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: MessageContentProps<StreamChatGenerics>,\n) => {\n const {\n alignment,\n disabled,\n goToMessage,\n groupStyles,\n hasReactions,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n showMessageStatus,\n threadList,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps,\n Attachment,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n isAttachmentEqual,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n Reply,\n } = useMessagesContext<StreamChatGenerics>();\n const { t, tDateTimeParser } = useTranslationContext();\n\n return (\n <MemoizedMessageContent<StreamChatGenerics>\n {...{\n additionalTouchableProps,\n alignment,\n Attachment,\n disabled,\n FileAttachmentGroup,\n formatDate,\n Gallery,\n goToMessage,\n groupStyles,\n hasReactions,\n isAttachmentEqual,\n isMyMessage,\n lastGroupMessage,\n lastReceivedId,\n members,\n message,\n messageContentOrder,\n MessageDeleted,\n MessageFooter,\n MessageHeader,\n MessageReplies,\n MessageStatus,\n onLongPress,\n onlyEmojis,\n onPress,\n onPressIn,\n otherAttachments,\n preventPress,\n Reply,\n showMessageStatus,\n t,\n tDateTimeParser,\n threadList,\n }}\n {...props}\n />\n );\n};\n\nMessageContent.displayName = 'MessageContent{messageSimple{content}}';\n"]}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.6.0"
2
+ "version": "4.6.1-beta.1"
3
3
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "stream-chat-react-native-core",
3
3
  "description": "The official React Native and Expo components for Stream Chat, a service for building chat applications",
4
- "version": "4.6.0",
4
+ "version": "4.6.1-beta.1",
5
5
  "author": {
6
6
  "company": "Stream.io Inc",
7
7
  "name": "Stream.io Inc"
@@ -143,7 +143,16 @@ const MessageContentWithContext = <
143
143
  colors: { accent_red, blue_alice, grey_gainsboro, grey_whisper, transparent, white },
144
144
  messageSimple: {
145
145
  content: {
146
- container: { borderRadius, borderRadiusL, borderRadiusS, ...container },
146
+ container: {
147
+ borderBottomLeftRadius,
148
+ borderBottomRightRadius,
149
+ borderRadius,
150
+ borderRadiusL,
151
+ borderRadiusS,
152
+ borderTopLeftRadius,
153
+ borderTopRightRadius,
154
+ ...container
155
+ },
147
156
  containerInner,
148
157
  errorContainer,
149
158
  errorIcon,
@@ -225,18 +234,46 @@ const MessageContentWithContext = <
225
234
 
226
235
  const isBorderColor = isMyMessage && !error;
227
236
 
228
- const shouldApplyBorderRadius = (firstGroupStyle: string, secondGroupStyle: string): boolean =>
229
- (groupStyle === firstGroupStyle || groupStyle === secondGroupStyle) &&
230
- (!hasThreadReplies || threadList);
237
+ const getBorderRadius = () => {
238
+ // enum('top', 'middle', 'bottom', 'single')
239
+ const groupPosition = groupStyles?.[0];
240
+
241
+ const isBottomOrSingle = groupPosition === 'single' || groupPosition === 'bottom';
242
+ let borderBottomLeftRadius = borderRadiusL;
243
+ let borderBottomRightRadius = borderRadiusL;
244
+
245
+ if (isBottomOrSingle && (!hasThreadReplies || threadList)) {
246
+ // add relevant sharp corner
247
+ if (alignment === 'left') {
248
+ borderBottomLeftRadius = borderRadiusS;
249
+ } else {
250
+ borderBottomRightRadius = borderRadiusS;
251
+ }
252
+ }
253
+
254
+ return {
255
+ borderBottomLeftRadius,
256
+ borderBottomRightRadius,
257
+ };
258
+ };
231
259
 
232
- const applyBorderRadius = (
233
- firstGroupStyle: string,
234
- secondGroupStyle: string,
235
- ): number | undefined => {
236
- if (shouldApplyBorderRadius(firstGroupStyle, secondGroupStyle)) {
237
- return borderRadiusS;
260
+ const getBorderRadiusFromTheme = () => {
261
+ const bordersFromTheme: Record<string, number | undefined> = {
262
+ borderBottomLeftRadius,
263
+ borderBottomRightRadius,
264
+ borderRadius,
265
+ borderTopLeftRadius,
266
+ borderTopRightRadius,
267
+ };
268
+
269
+ // filter out undefined values
270
+ for (const key in bordersFromTheme) {
271
+ if (bordersFromTheme[key] === undefined) {
272
+ delete bordersFromTheme[key];
273
+ }
238
274
  }
239
- return borderRadiusL;
275
+
276
+ return bordersFromTheme;
240
277
  };
241
278
 
242
279
  return (
@@ -313,12 +350,9 @@ const MessageContentWithContext = <
313
350
  styles.containerInner,
314
351
  {
315
352
  backgroundColor,
316
- borderBottomLeftRadius: applyBorderRadius('left_bottom', 'left_single'),
317
- borderBottomRightRadius: applyBorderRadius('right_bottom', 'right_single'),
318
353
  borderColor: isBorderColor ? backgroundColor : grey_whisper,
319
- borderRadius,
320
- borderTopLeftRadius: applyBorderRadius('left_top', 'right_single'),
321
- borderTopRightRadius: applyBorderRadius('right_top', 'right_single'),
354
+ ...getBorderRadius(),
355
+ ...getBorderRadiusFromTheme(),
322
356
  },
323
357
  noBorder ? { borderWidth: 0 } : {},
324
358
  containerInner,
@@ -369,9 +369,6 @@ exports[`Thread should match thread snapshot 1`] = `
369
369
  "borderBottomLeftRadius": 0,
370
370
  "borderBottomRightRadius": 16,
371
371
  "borderColor": "#ECEBEB",
372
- "borderRadius": undefined,
373
- "borderTopLeftRadius": 16,
374
- "borderTopRightRadius": 16,
375
372
  },
376
373
  Object {},
377
374
  Object {},
@@ -620,9 +617,6 @@ exports[`Thread should match thread snapshot 1`] = `
620
617
  "borderBottomLeftRadius": 0,
621
618
  "borderBottomRightRadius": 16,
622
619
  "borderColor": "#ECEBEB",
623
- "borderRadius": undefined,
624
- "borderTopLeftRadius": 16,
625
- "borderTopRightRadius": 16,
626
620
  },
627
621
  Object {},
628
622
  Object {},
@@ -871,9 +865,6 @@ exports[`Thread should match thread snapshot 1`] = `
871
865
  "borderBottomLeftRadius": 0,
872
866
  "borderBottomRightRadius": 16,
873
867
  "borderColor": "#ECEBEB",
874
- "borderRadius": undefined,
875
- "borderTopLeftRadius": 16,
876
- "borderTopRightRadius": 16,
877
868
  },
878
869
  Object {},
879
870
  Object {},
@@ -1170,9 +1161,6 @@ exports[`Thread should match thread snapshot 1`] = `
1170
1161
  "borderBottomLeftRadius": 0,
1171
1162
  "borderBottomRightRadius": 16,
1172
1163
  "borderColor": "#ECEBEB",
1173
- "borderRadius": undefined,
1174
- "borderTopLeftRadius": 16,
1175
- "borderTopRightRadius": 16,
1176
1164
  },
1177
1165
  Object {},
1178
1166
  Object {},
package/src/version.json CHANGED
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "4.6.0"
2
+ "version": "4.6.1-beta.1"
3
3
  }