stream-chat-react-native-core 5.24.0-beta.5 → 5.24.0

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.
Files changed (90) hide show
  1. package/lib/commonjs/components/Attachment/Attachment.js +22 -14
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/Card.js +11 -4
  4. package/lib/commonjs/components/Attachment/Card.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/Gallery.js +24 -16
  6. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  7. package/lib/commonjs/components/Message/Message.js +14 -7
  8. package/lib/commonjs/components/Message/Message.js.map +1 -1
  9. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +22 -16
  10. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  11. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js +14 -8
  12. package/lib/commonjs/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  13. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js +10 -4
  14. package/lib/commonjs/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  15. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +6 -1
  16. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  17. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +9 -3
  18. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  19. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  20. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  21. package/lib/commonjs/i18n/en.json +1 -1
  22. package/lib/commonjs/i18n/fr.json +54 -54
  23. package/lib/commonjs/i18n/hi.json +54 -54
  24. package/lib/commonjs/i18n/it.json +54 -54
  25. package/lib/commonjs/i18n/nl.json +54 -54
  26. package/lib/commonjs/i18n/ru.json +54 -54
  27. package/lib/commonjs/i18n/tr.json +54 -54
  28. package/lib/commonjs/version.json +1 -1
  29. package/lib/module/components/Attachment/Attachment.js +22 -14
  30. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  31. package/lib/module/components/Attachment/Card.js +11 -4
  32. package/lib/module/components/Attachment/Card.js.map +1 -1
  33. package/lib/module/components/Attachment/Gallery.js +24 -16
  34. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  35. package/lib/module/components/Message/Message.js +14 -7
  36. package/lib/module/components/Message/Message.js.map +1 -1
  37. package/lib/module/components/Message/MessageSimple/MessageContent.js +22 -16
  38. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  39. package/lib/module/components/Message/MessageSimple/MessageSimple.js +14 -8
  40. package/lib/module/components/Message/MessageSimple/MessageSimple.js.map +1 -1
  41. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js +10 -4
  42. package/lib/module/components/Message/MessageSimple/MessageTextContainer.js.map +1 -1
  43. package/lib/module/components/Message/hooks/useCreateMessageContext.js +6 -1
  44. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  45. package/lib/module/components/MessageOverlay/MessageOverlay.js +9 -3
  46. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  47. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  48. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  49. package/lib/module/i18n/en.json +1 -1
  50. package/lib/module/i18n/fr.json +54 -54
  51. package/lib/module/i18n/hi.json +54 -54
  52. package/lib/module/i18n/it.json +54 -54
  53. package/lib/module/i18n/nl.json +54 -54
  54. package/lib/module/i18n/ru.json +54 -54
  55. package/lib/module/i18n/tr.json +54 -54
  56. package/lib/module/version.json +1 -1
  57. package/lib/typescript/components/Attachment/Attachment.d.ts +2 -2
  58. package/lib/typescript/components/Attachment/Card.d.ts +2 -2
  59. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  60. package/lib/typescript/components/Message/MessageSimple/MessageContent.d.ts +1 -1
  61. package/lib/typescript/components/Message/MessageSimple/MessageSimple.d.ts +1 -1
  62. package/lib/typescript/components/Message/MessageSimple/MessageTextContainer.d.ts +1 -1
  63. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  64. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +8 -2
  65. package/lib/typescript/i18n/en.json +1 -1
  66. package/lib/typescript/i18n/fr.json +54 -54
  67. package/lib/typescript/i18n/hi.json +54 -54
  68. package/lib/typescript/i18n/it.json +54 -54
  69. package/lib/typescript/i18n/nl.json +54 -54
  70. package/lib/typescript/i18n/ru.json +54 -54
  71. package/lib/typescript/i18n/tr.json +54 -54
  72. package/package.json +1 -1
  73. package/src/components/Attachment/Attachment.tsx +16 -2
  74. package/src/components/Attachment/Card.tsx +22 -4
  75. package/src/components/Attachment/Gallery.tsx +11 -0
  76. package/src/components/Message/Message.tsx +9 -0
  77. package/src/components/Message/MessageSimple/MessageContent.tsx +9 -0
  78. package/src/components/Message/MessageSimple/MessageSimple.tsx +9 -0
  79. package/src/components/Message/MessageSimple/MessageTextContainer.tsx +12 -2
  80. package/src/components/Message/hooks/useCreateMessageContext.ts +4 -0
  81. package/src/components/MessageOverlay/MessageOverlay.tsx +8 -0
  82. package/src/contexts/messageContext/MessageContext.tsx +7 -1
  83. package/src/i18n/en.json +1 -1
  84. package/src/i18n/fr.json +54 -54
  85. package/src/i18n/hi.json +54 -54
  86. package/src/i18n/it.json +54 -54
  87. package/src/i18n/nl.json +54 -54
  88. package/src/i18n/ru.json +54 -54
  89. package/src/i18n/tr.json +54 -54
  90. package/src/version.json +1 -1
@@ -91,7 +91,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
91
91
  __self: _this,
92
92
  __source: {
93
93
  fileName: _jsxFileName,
94
- lineNumber: 150,
94
+ lineNumber: 151,
95
95
  columnNumber: 5
96
96
  }
97
97
  }, thumbnailGrid.map(function (rows, colIndex) {
@@ -105,7 +105,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
105
105
  __self: _this,
106
106
  __source: {
107
107
  fileName: _jsxFileName,
108
- lineNumber: 165,
108
+ lineNumber: 166,
109
109
  columnNumber: 11
110
110
  }
111
111
  }, rows.map(function (thumbnail, rowIndex) {
@@ -153,7 +153,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
153
153
  __self: _this,
154
154
  __source: {
155
155
  fileName: _jsxFileName,
156
- lineNumber: 197,
156
+ lineNumber: 198,
157
157
  columnNumber: 17
158
158
  }
159
159
  });
@@ -255,7 +255,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
255
255
  __self: _this,
256
256
  __source: {
257
257
  fileName: _jsxFileName,
258
- lineNumber: 324,
258
+ lineNumber: 325,
259
259
  columnNumber: 5
260
260
  }
261
261
  }), thumbnail.type === 'video' ? _react["default"].createElement(VideoThumbnail, {
@@ -267,7 +267,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
267
267
  __self: _this,
268
268
  __source: {
269
269
  fileName: _jsxFileName,
270
- lineNumber: 366,
270
+ lineNumber: 367,
271
271
  columnNumber: 9
272
272
  }
273
273
  }) : _react["default"].createElement(_reactNative.View, {
@@ -275,7 +275,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
275
275
  __self: _this,
276
276
  __source: {
277
277
  fileName: _jsxFileName,
278
- lineNumber: 378,
278
+ lineNumber: 379,
279
279
  columnNumber: 9
280
280
  }
281
281
  }, _react["default"].createElement(GalleryImageThumbnail, {
@@ -286,7 +286,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
286
286
  __self: _this,
287
287
  __source: {
288
288
  fileName: _jsxFileName,
289
- lineNumber: 379,
289
+ lineNumber: 380,
290
290
  columnNumber: 11
291
291
  }
292
292
  })), colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? _react["default"].createElement(_reactNative.View, {
@@ -296,7 +296,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
296
296
  __self: _this,
297
297
  __source: {
298
298
  fileName: _jsxFileName,
299
- lineNumber: 388,
299
+ lineNumber: 389,
300
300
  columnNumber: 9
301
301
  }
302
302
  }, _react["default"].createElement(_reactNative.Text, {
@@ -304,7 +304,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
304
304
  __self: _this,
305
305
  __source: {
306
306
  fileName: _jsxFileName,
307
- lineNumber: 396,
307
+ lineNumber: 397,
308
308
  columnNumber: 11
309
309
  }
310
310
  }, "+" + (imagesAndVideos.length - 4))) : null);
@@ -330,7 +330,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
330
330
  __self: _this,
331
331
  __source: {
332
332
  fileName: _jsxFileName,
333
- lineNumber: 431,
333
+ lineNumber: 432,
334
334
  columnNumber: 5
335
335
  }
336
336
  }, isLoadingImageError ? _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(ImageLoadingFailedIndicator, {
@@ -338,7 +338,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
338
338
  __self: _this,
339
339
  __source: {
340
340
  fileName: _jsxFileName,
341
- lineNumber: 442,
341
+ lineNumber: 443,
342
342
  columnNumber: 11
343
343
  }
344
344
  }), _react["default"].createElement(_ImageReloadIndicator.ImageReloadIndicator, {
@@ -347,7 +347,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
347
347
  __self: _this,
348
348
  __source: {
349
349
  fileName: _jsxFileName,
350
- lineNumber: 443,
350
+ lineNumber: 444,
351
351
  columnNumber: 11
352
352
  }
353
353
  })) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_GalleryImage.GalleryImage, {
@@ -372,7 +372,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
372
372
  __self: _this,
373
373
  __source: {
374
374
  fileName: _jsxFileName,
375
- lineNumber: 450,
375
+ lineNumber: 451,
376
376
  columnNumber: 11
377
377
  }
378
378
  }), isLoadingImage && _react["default"].createElement(_reactNative.View, {
@@ -380,7 +380,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
380
380
  __self: _this,
381
381
  __source: {
382
382
  fileName: _jsxFileName,
383
- lineNumber: 470,
383
+ lineNumber: 471,
384
384
  columnNumber: 13
385
385
  }
386
386
  }, _react["default"].createElement(ImageLoadingIndicator, {
@@ -388,7 +388,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
388
388
  __self: _this,
389
389
  __source: {
390
390
  fileName: _jsxFileName,
391
- lineNumber: 471,
391
+ lineNumber: 472,
392
392
  columnNumber: 15
393
393
  }
394
394
  }))));
@@ -398,11 +398,13 @@ var areEqual = function areEqual(prevProps, nextProps) {
398
398
  prevHasThreadReplies = prevProps.hasThreadReplies,
399
399
  prevImages = prevProps.images,
400
400
  prevMessage = prevProps.message,
401
+ prevMyMessageTheme = prevProps.myMessageTheme,
401
402
  prevVideos = prevProps.videos;
402
403
  var nextGroupStyles = nextProps.groupStyles,
403
404
  nextHasThreadReplies = nextProps.hasThreadReplies,
404
405
  nextImages = nextProps.images,
405
406
  nextMessage = nextProps.message,
407
+ nextMyMessageTheme = nextProps.myMessageTheme,
406
408
  nextVideos = nextProps.videos;
407
409
  var messageEqual = (prevMessage == null ? void 0 : prevMessage.id) === (nextMessage == null ? void 0 : nextMessage.id) && "" + (prevMessage == null ? void 0 : prevMessage.updated_at) === "" + (nextMessage == null ? void 0 : nextMessage.updated_at);
408
410
  if (!messageEqual) return false;
@@ -418,6 +420,8 @@ var areEqual = function areEqual(prevProps, nextProps) {
418
420
  return (0, _utils.getUrlWithoutParams)(image.image_url) === (0, _utils.getUrlWithoutParams)(nextVideos[index].image_url) && (0, _utils.getUrlWithoutParams)(image.thumb_url) === (0, _utils.getUrlWithoutParams)(nextVideos[index].thumb_url);
419
421
  });
420
422
  if (!videosEqual) return false;
423
+ var messageThemeEqual = JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);
424
+ if (!messageThemeEqual) return false;
421
425
  return true;
422
426
  };
423
427
  var MemoizedGallery = _react["default"].memo(GalleryWithContext, areEqual);
@@ -430,6 +434,7 @@ var Gallery = function Gallery(props) {
430
434
  PropImageLoadingIndicator = props.ImageLoadingIndicator,
431
435
  propImages = props.images,
432
436
  propMessage = props.message,
437
+ propMyMessageTheme = props.myMessageTheme,
433
438
  propOnLongPress = props.onLongPress,
434
439
  propOnPress = props.onPress,
435
440
  propOnPressIn = props.onPressIn,
@@ -458,6 +463,7 @@ var Gallery = function Gallery(props) {
458
463
  ContextImageLoadingFailedIndicator = _useMessagesContext.ImageLoadingFailedIndicator,
459
464
  ContextImageLoadingIndicator = _useMessagesContext.ImageLoadingIndicator,
460
465
  legacyImageViewerSwipeBehaviour = _useMessagesContext.legacyImageViewerSwipeBehaviour,
466
+ contextMyMessageTheme = _useMessagesContext.myMessageTheme,
461
467
  ContextVideoThumnbnail = _useMessagesContext.VideoThumbnail;
462
468
  var _useOverlayContext = (0, _OverlayContext.useOverlayContext)(),
463
469
  contextSetOverlay = _useOverlayContext.setOverlay;
@@ -478,6 +484,7 @@ var Gallery = function Gallery(props) {
478
484
  var VideoThumbnail = PropVideoThumbnail || ContextVideoThumnbnail;
479
485
  var ImageLoadingFailedIndicator = PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;
480
486
  var ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;
487
+ var myMessageTheme = propMyMessageTheme || contextMyMessageTheme;
481
488
  return _react["default"].createElement(MemoizedGallery, {
482
489
  additionalTouchableProps: additionalTouchableProps,
483
490
  alignment: alignment,
@@ -489,6 +496,7 @@ var Gallery = function Gallery(props) {
489
496
  images: images,
490
497
  legacyImageViewerSwipeBehaviour: legacyImageViewerSwipeBehaviour,
491
498
  message: message,
499
+ myMessageTheme: myMessageTheme,
492
500
  onLongPress: onLongPress,
493
501
  onPress: onPress,
494
502
  onPressIn: onPressIn,
@@ -502,7 +510,7 @@ var Gallery = function Gallery(props) {
502
510
  __self: _this,
503
511
  __source: {
504
512
  fileName: _jsxFileName,
505
- lineNumber: 612,
513
+ lineNumber: 622,
506
514
  columnNumber: 5
507
515
  }
508
516
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_GalleryImage","_ImageReloadIndicator","_buildGallery","_getGalleryImageBorderRadius","_openUrlSafely","_ImageGalleryContext","_MessageContext","_MessagesContext","_OverlayContext","_ThemeContext","_useLoadingImage2","_native","_utils","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","_useTheme","useTheme","_useTheme$theme$messa","theme","messageSimple","gallery","galleryContainer","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","concat","_toConsumableArray2","imagesAndVideosValue","length","map","i","image_url","thumb_url","join","_useMemo","useMemo","buildGallery","height","invertedDirections","thumbnailGrid","width","numOfColumns","createElement","View","style","styles","flexDirection","testID","__self","__source","fileName","lineNumber","columnNumber","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","getGalleryImageBorderRadius","messageText","text","undefined","GalleryThumbnail","_ref","_useTheme2","_useTheme2$theme","overlay","colors","_useTheme2$theme$mess","image","imageContainer","moreImagesContainer","moreImagesText","openImageViewer","messageId","id","url","defaultOnPress","type","isVideoPackageAvailable","openUrlSafely","TouchableOpacity","_extends2","activeOpacity","disabled","event","emitter","defaultHandler","imageContainerStyle","GalleryImageThumbnail","StyleSheet","absoluteFillObject","backgroundColor","Text","_ref2","_useLoadingImage","useLoadingImage","isLoadingImage","isLoadingImageError","onReloadImage","setLoadingImage","setLoadingImageError","_useTheme3","Fragment","imageLoadingErrorIndicatorStyle","ImageReloadIndicator","imageReloadContainerStyle","GalleryImage","onError","_ref3","error","nativeEvent","console","warn","onLoadEnd","onLoadStart","resizeMode","uri","imageLoadingIndicatorContainer","imageLoadingIndicatorStyle","areEqual","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","getUrlWithoutParams","videosEqual","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","_useImageGalleryConte","useImageGalleryContext","contextSetSelectedMessage","_useMessageContext","useMessageContext","contextAlignment","contextGroupStyles","contextImages","contextMessage","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","_useMessagesContext","useMessagesContext","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","ContextVideoThumnbnail","_useOverlayContext","useOverlayContext","contextSetOverlay","channelId","cid","reply_count","exports","create","errorTextSize","fontSize","borderTopLeftRadius","borderTopRightRadius","flexWrap","overflow","alignItems","display","justifyContent","padding","flex","bottom","left","position","margin","color","fontWeight","displayName"],"sources":["Gallery.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { GalleryImage } from './GalleryImage';\nimport { ImageReloadIndicator } from './ImageReloadIndicator';\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport type { Thumbnail } from './utils/buildGallery/types';\nimport { getGalleryImageBorderRadius } from './utils/getGalleryImageBorderRadius';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useLoadingImage } from '../../hooks/useLoadingImage';\nimport { isVideoPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams } from '../../utils/utils';\n\nexport type GalleryPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'videos'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n > &\n Pick<OverlayContextValue, 'setOverlay'> & {\n channelId: string | undefined;\n hasThreadReplies?: boolean;\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"excessive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO: Fix circular dependencies of imports\n */\n message?: MessageType<StreamChatGenerics>;\n };\n\nconst GalleryWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n } = props;\n\n const {\n theme: {\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n },\n },\n },\n } = useTheme();\n\n const sizeConfig = {\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n };\n\n const imagesAndVideos = [...(images || []), ...(videos || [])];\n const imagesAndVideosValue = `${images?.length}${videos?.length}${images\n ?.map((i) => `${i.image_url}${i.thumb_url}`)\n .join('')}${videos?.map((i) => `${i.image_url}${i.thumb_url}`).join('')}`;\n\n const { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideosValue],\n );\n\n if (!imagesAndVideos?.length) return null;\n const numOfColumns = thumbnailGrid.length;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n height,\n width,\n },\n galleryContainer,\n ]}\n testID='gallery-container'\n >\n {thumbnailGrid.map((rows, colIndex) => {\n const numOfRows = rows.length;\n return (\n <View\n key={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n style={[\n {\n flexDirection: invertedDirections ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n >\n {rows.map((thumbnail, rowIndex) => {\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText: message?.text,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n if (message === undefined) {\n return null;\n }\n\n return (\n <GalleryThumbnail\n additionalTouchableProps={additionalTouchableProps}\n borderRadius={borderRadius}\n colIndex={colIndex}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n imagesAndVideos={imagesAndVideos}\n invertedDirections={invertedDirections || false}\n key={rowIndex}\n legacyImageViewerSwipeBehaviour={legacyImageViewerSwipeBehaviour}\n message={message}\n numOfColumns={numOfColumns}\n numOfRows={numOfRows}\n onLongPress={onLongPress}\n onPress={onPress}\n onPressIn={onPressIn}\n preventPress={preventPress}\n rowIndex={rowIndex}\n setMessages={setMessages}\n setOverlay={setOverlay}\n setSelectedMessage={setSelectedMessage}\n thumbnail={thumbnail}\n VideoThumbnail={VideoThumbnail}\n />\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\ntype GalleryThumbnailProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n borderRadius: {\n borderBottomLeftRadius: number;\n borderBottomRightRadius: number;\n borderTopLeftRadius: number;\n borderTopRightRadius: number;\n };\n colIndex: number;\n imagesAndVideos: Attachment<StreamChatGenerics>[];\n invertedDirections: boolean;\n message: MessageType<StreamChatGenerics>;\n numOfColumns: number;\n numOfRows: number;\n rowIndex: number;\n thumbnail: Thumbnail;\n} & Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GalleryThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n borderRadius,\n colIndex,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n imagesAndVideos,\n invertedDirections,\n legacyImageViewerSwipeBehaviour,\n message,\n numOfColumns,\n numOfRows,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n rowIndex,\n setMessages,\n setOverlay,\n setSelectedMessage,\n thumbnail,\n VideoThumbnail,\n}: GalleryThumbnailProps<StreamChatGenerics>) => {\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: { image, imageContainer, moreImagesContainer, moreImagesText },\n },\n },\n } = useTheme();\n\n const openImageViewer = () => {\n if (!legacyImageViewerSwipeBehaviour && message) {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n setMessages([message]);\n setSelectedMessage({ messageId: message.id, url: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setSelectedMessage({ messageId: message?.id, url: thumbnail.url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n if ((thumbnail.type === 'video' && !thumbnail.thumb_url) || !thumbnail.url) {\n return;\n }\n if (thumbnail.type === 'video' && !isVideoPackageAvailable()) {\n // This condition is kinda unreachable, since we render videos as file attachment if the video\n // library is not installed. But doesn't hurt to have extra safeguard, in case of some customizations.\n openUrlSafely(thumbnail.url);\n } else {\n openImageViewer();\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${message.id}/${colIndex}/${rowIndex}/${imagesAndVideos.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height: thumbnail.height,\n width: thumbnail.width,\n },\n imageContainer,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {thumbnail.type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n image,\n ]}\n thumb_url={thumbnail.thumb_url}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <GalleryImageThumbnail\n borderRadius={borderRadius}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n thumbnail={thumbnail}\n />\n </View>\n )}\n {colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${imagesAndVideos.length - 4}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n};\n\nconst GalleryImageThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n borderRadius,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n thumbnail,\n}: Pick<\n GalleryThumbnailProps<StreamChatGenerics>,\n 'ImageLoadingFailedIndicator' | 'ImageLoadingIndicator' | 'thumbnail' | 'borderRadius'\n>) => {\n const {\n isLoadingImage,\n isLoadingImageError,\n onReloadImage,\n setLoadingImage,\n setLoadingImageError,\n } = useLoadingImage();\n\n const {\n theme: {\n messageSimple: { gallery },\n },\n } = useTheme();\n\n return (\n <View\n style={[\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n gallery.thumbnail,\n ]}\n >\n {isLoadingImageError ? (\n <>\n <ImageLoadingFailedIndicator style={styles.imageLoadingErrorIndicatorStyle} />\n <ImageReloadIndicator\n onReloadImage={onReloadImage}\n style={styles.imageReloadContainerStyle}\n />\n </>\n ) : (\n <>\n <GalleryImage\n onError={({ nativeEvent: { error } }) => {\n console.warn(error);\n setLoadingImage(false);\n setLoadingImageError(true);\n }}\n onLoadEnd={() => setLoadingImage(false)}\n onLoadStart={() => setLoadingImage(true)}\n resizeMode={thumbnail.resizeMode}\n style={[\n borderRadius,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n gallery.image,\n ]}\n uri={thumbnail.url}\n />\n {isLoadingImage && (\n <View style={styles.imageLoadingIndicatorContainer}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n </>\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GalleryPropsWithContext<StreamChatGenerics>,\n nextProps: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n message: prevMessage,\n videos: prevVideos,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n message: nextMessage,\n videos: nextVideos,\n } = nextProps;\n\n const messageEqual =\n prevMessage?.id === nextMessage?.id &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n if (!messageEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n const videosEqual =\n prevVideos.length === nextVideos.length &&\n prevVideos.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextVideos[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextVideos[index].thumb_url),\n );\n if (!videosEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GalleryPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryProps<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator: PropImageLoadingFailedIndicator,\n ImageLoadingIndicator: PropImageLoadingIndicator,\n images: propImages,\n message: propMessage,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setOverlay: propSetOverlay,\n setSelectedMessage: propSetSelectedMessage,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setMessages, setSelectedMessage: contextSetSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message: contextMessage,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n videos: contextVideos,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n ImageLoadingFailedIndicator: ContextImageLoadingFailedIndicator,\n ImageLoadingIndicator: ContextImageLoadingIndicator,\n legacyImageViewerSwipeBehaviour,\n VideoThumbnail: ContextVideoThumnbnail,\n } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n const videos = propVideos || contextVideos;\n const message = propMessage || contextMessage;\n\n if (!images.length && !videos.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setSelectedMessage = propSetSelectedMessage || contextSetSelectedMessage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n const VideoThumbnail = PropVideoThumbnail || ContextVideoThumnbnail;\n const ImageLoadingFailedIndicator =\n PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;\n const ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n errorTextSize: { fontSize: 10 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n padding: 1,\n },\n imageContainerStyle: { alignItems: 'center', flex: 1, justifyContent: 'center' },\n imageLoadingErrorIndicatorStyle: {\n bottom: 4,\n left: 4,\n position: 'absolute',\n },\n imageLoadingIndicatorContainer: {\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\n },\n imageLoadingIndicatorStyle: {\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n imageReloadContainerStyle: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_GalleryImage","_ImageReloadIndicator","_buildGallery","_getGalleryImageBorderRadius","_openUrlSafely","_ImageGalleryContext","_MessageContext","_MessagesContext","_OverlayContext","_ThemeContext","_useLoadingImage2","_native","_utils","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","_useTheme","useTheme","_useTheme$theme$messa","theme","messageSimple","gallery","galleryContainer","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","concat","_toConsumableArray2","imagesAndVideosValue","length","map","i","image_url","thumb_url","join","_useMemo","useMemo","buildGallery","height","invertedDirections","thumbnailGrid","width","numOfColumns","createElement","View","style","styles","flexDirection","testID","__self","__source","fileName","lineNumber","columnNumber","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","getGalleryImageBorderRadius","messageText","text","undefined","GalleryThumbnail","_ref","_useTheme2","_useTheme2$theme","overlay","colors","_useTheme2$theme$mess","image","imageContainer","moreImagesContainer","moreImagesText","openImageViewer","messageId","id","url","defaultOnPress","type","isVideoPackageAvailable","openUrlSafely","TouchableOpacity","_extends2","activeOpacity","disabled","event","emitter","defaultHandler","imageContainerStyle","GalleryImageThumbnail","StyleSheet","absoluteFillObject","backgroundColor","Text","_ref2","_useLoadingImage","useLoadingImage","isLoadingImage","isLoadingImageError","onReloadImage","setLoadingImage","setLoadingImageError","_useTheme3","Fragment","imageLoadingErrorIndicatorStyle","ImageReloadIndicator","imageReloadContainerStyle","GalleryImage","onError","_ref3","error","nativeEvent","console","warn","onLoadEnd","onLoadStart","resizeMode","uri","imageLoadingIndicatorContainer","imageLoadingIndicatorStyle","areEqual","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevMyMessageTheme","myMessageTheme","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextMyMessageTheme","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","getUrlWithoutParams","videosEqual","messageThemeEqual","JSON","stringify","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propMyMessageTheme","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","_useImageGalleryConte","useImageGalleryContext","contextSetSelectedMessage","_useMessageContext","useMessageContext","contextAlignment","contextGroupStyles","contextImages","contextMessage","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","_useMessagesContext","useMessagesContext","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","contextMyMessageTheme","ContextVideoThumnbnail","_useOverlayContext","useOverlayContext","contextSetOverlay","channelId","cid","reply_count","exports","create","errorTextSize","fontSize","borderTopLeftRadius","borderTopRightRadius","flexWrap","overflow","alignItems","display","justifyContent","padding","flex","bottom","left","position","margin","color","fontWeight","displayName"],"sources":["Gallery.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { GalleryImage } from './GalleryImage';\nimport { ImageReloadIndicator } from './ImageReloadIndicator';\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport type { Thumbnail } from './utils/buildGallery/types';\nimport { getGalleryImageBorderRadius } from './utils/getGalleryImageBorderRadius';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useLoadingImage } from '../../hooks/useLoadingImage';\nimport { isVideoPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams } from '../../utils/utils';\n\nexport type GalleryPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'videos'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n | 'myMessageTheme'\n > &\n Pick<OverlayContextValue, 'setOverlay'> & {\n channelId: string | undefined;\n hasThreadReplies?: boolean;\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"excessive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO: Fix circular dependencies of imports\n */\n message?: MessageType<StreamChatGenerics>;\n };\n\nconst GalleryWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n } = props;\n\n const {\n theme: {\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n },\n },\n },\n } = useTheme();\n\n const sizeConfig = {\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n };\n\n const imagesAndVideos = [...(images || []), ...(videos || [])];\n const imagesAndVideosValue = `${images?.length}${videos?.length}${images\n ?.map((i) => `${i.image_url}${i.thumb_url}`)\n .join('')}${videos?.map((i) => `${i.image_url}${i.thumb_url}`).join('')}`;\n\n const { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideosValue],\n );\n\n if (!imagesAndVideos?.length) return null;\n const numOfColumns = thumbnailGrid.length;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n height,\n width,\n },\n galleryContainer,\n ]}\n testID='gallery-container'\n >\n {thumbnailGrid.map((rows, colIndex) => {\n const numOfRows = rows.length;\n return (\n <View\n key={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n style={[\n {\n flexDirection: invertedDirections ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n >\n {rows.map((thumbnail, rowIndex) => {\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText: message?.text,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n if (message === undefined) {\n return null;\n }\n\n return (\n <GalleryThumbnail\n additionalTouchableProps={additionalTouchableProps}\n borderRadius={borderRadius}\n colIndex={colIndex}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n imagesAndVideos={imagesAndVideos}\n invertedDirections={invertedDirections || false}\n key={rowIndex}\n legacyImageViewerSwipeBehaviour={legacyImageViewerSwipeBehaviour}\n message={message}\n numOfColumns={numOfColumns}\n numOfRows={numOfRows}\n onLongPress={onLongPress}\n onPress={onPress}\n onPressIn={onPressIn}\n preventPress={preventPress}\n rowIndex={rowIndex}\n setMessages={setMessages}\n setOverlay={setOverlay}\n setSelectedMessage={setSelectedMessage}\n thumbnail={thumbnail}\n VideoThumbnail={VideoThumbnail}\n />\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\ntype GalleryThumbnailProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n borderRadius: {\n borderBottomLeftRadius: number;\n borderBottomRightRadius: number;\n borderTopLeftRadius: number;\n borderTopRightRadius: number;\n };\n colIndex: number;\n imagesAndVideos: Attachment<StreamChatGenerics>[];\n invertedDirections: boolean;\n message: MessageType<StreamChatGenerics>;\n numOfColumns: number;\n numOfRows: number;\n rowIndex: number;\n thumbnail: Thumbnail;\n} & Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GalleryThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n borderRadius,\n colIndex,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n imagesAndVideos,\n invertedDirections,\n legacyImageViewerSwipeBehaviour,\n message,\n numOfColumns,\n numOfRows,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n rowIndex,\n setMessages,\n setOverlay,\n setSelectedMessage,\n thumbnail,\n VideoThumbnail,\n}: GalleryThumbnailProps<StreamChatGenerics>) => {\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: { image, imageContainer, moreImagesContainer, moreImagesText },\n },\n },\n } = useTheme();\n\n const openImageViewer = () => {\n if (!legacyImageViewerSwipeBehaviour && message) {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n setMessages([message]);\n setSelectedMessage({ messageId: message.id, url: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setSelectedMessage({ messageId: message?.id, url: thumbnail.url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n if ((thumbnail.type === 'video' && !thumbnail.thumb_url) || !thumbnail.url) {\n return;\n }\n if (thumbnail.type === 'video' && !isVideoPackageAvailable()) {\n // This condition is kinda unreachable, since we render videos as file attachment if the video\n // library is not installed. But doesn't hurt to have extra safeguard, in case of some customizations.\n openUrlSafely(thumbnail.url);\n } else {\n openImageViewer();\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${message.id}/${colIndex}/${rowIndex}/${imagesAndVideos.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height: thumbnail.height,\n width: thumbnail.width,\n },\n imageContainer,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {thumbnail.type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n image,\n ]}\n thumb_url={thumbnail.thumb_url}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <GalleryImageThumbnail\n borderRadius={borderRadius}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n thumbnail={thumbnail}\n />\n </View>\n )}\n {colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${imagesAndVideos.length - 4}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n};\n\nconst GalleryImageThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n borderRadius,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n thumbnail,\n}: Pick<\n GalleryThumbnailProps<StreamChatGenerics>,\n 'ImageLoadingFailedIndicator' | 'ImageLoadingIndicator' | 'thumbnail' | 'borderRadius'\n>) => {\n const {\n isLoadingImage,\n isLoadingImageError,\n onReloadImage,\n setLoadingImage,\n setLoadingImageError,\n } = useLoadingImage();\n\n const {\n theme: {\n messageSimple: { gallery },\n },\n } = useTheme();\n\n return (\n <View\n style={[\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n gallery.thumbnail,\n ]}\n >\n {isLoadingImageError ? (\n <>\n <ImageLoadingFailedIndicator style={styles.imageLoadingErrorIndicatorStyle} />\n <ImageReloadIndicator\n onReloadImage={onReloadImage}\n style={styles.imageReloadContainerStyle}\n />\n </>\n ) : (\n <>\n <GalleryImage\n onError={({ nativeEvent: { error } }) => {\n console.warn(error);\n setLoadingImage(false);\n setLoadingImageError(true);\n }}\n onLoadEnd={() => setLoadingImage(false)}\n onLoadStart={() => setLoadingImage(true)}\n resizeMode={thumbnail.resizeMode}\n style={[\n borderRadius,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n gallery.image,\n ]}\n uri={thumbnail.url}\n />\n {isLoadingImage && (\n <View style={styles.imageLoadingIndicatorContainer}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n </>\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GalleryPropsWithContext<StreamChatGenerics>,\n nextProps: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n message: prevMessage,\n myMessageTheme: prevMyMessageTheme,\n videos: prevVideos,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n message: nextMessage,\n myMessageTheme: nextMyMessageTheme,\n videos: nextVideos,\n } = nextProps;\n\n const messageEqual =\n prevMessage?.id === nextMessage?.id &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n if (!messageEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n const videosEqual =\n prevVideos.length === nextVideos.length &&\n prevVideos.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextVideos[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextVideos[index].thumb_url),\n );\n if (!videosEqual) return false;\n\n const messageThemeEqual =\n JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);\n if (!messageThemeEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GalleryPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryProps<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator: PropImageLoadingFailedIndicator,\n ImageLoadingIndicator: PropImageLoadingIndicator,\n images: propImages,\n message: propMessage,\n myMessageTheme: propMyMessageTheme,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setOverlay: propSetOverlay,\n setSelectedMessage: propSetSelectedMessage,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setMessages, setSelectedMessage: contextSetSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message: contextMessage,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n videos: contextVideos,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n ImageLoadingFailedIndicator: ContextImageLoadingFailedIndicator,\n ImageLoadingIndicator: ContextImageLoadingIndicator,\n legacyImageViewerSwipeBehaviour,\n myMessageTheme: contextMyMessageTheme,\n VideoThumbnail: ContextVideoThumnbnail,\n } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n const videos = propVideos || contextVideos;\n const message = propMessage || contextMessage;\n\n if (!images.length && !videos.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setSelectedMessage = propSetSelectedMessage || contextSetSelectedMessage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n const VideoThumbnail = PropVideoThumbnail || ContextVideoThumnbnail;\n const ImageLoadingFailedIndicator =\n PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;\n const ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;\n const myMessageTheme = propMyMessageTheme || contextMyMessageTheme;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n myMessageTheme,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n errorTextSize: { fontSize: 10 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n padding: 1,\n },\n imageContainerStyle: { alignItems: 'center', flex: 1, justifyContent: 'center' },\n imageLoadingErrorIndicatorStyle: {\n bottom: 4,\n left: 4,\n position: 'absolute',\n },\n imageLoadingIndicatorContainer: {\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\n },\n imageLoadingIndicatorStyle: {\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n imageReloadContainerStyle: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"],"mappings":"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"}
@@ -465,6 +465,7 @@ var MessageWithContext = function MessageWithContext(props) {
465
465
  members: members,
466
466
  message: message,
467
467
  messageContentOrder: messageContentOrder,
468
+ myMessageTheme: messagesContext.myMessageTheme,
468
469
  onLongPress: onLongPressMessage,
469
470
  onlyEmojis: onlyEmojis,
470
471
  onOpenThread: onOpenThread,
@@ -517,7 +518,7 @@ var MessageWithContext = function MessageWithContext(props) {
517
518
  __self: _this,
518
519
  __source: {
519
520
  fileName: _jsxFileName,
520
- lineNumber: 730,
521
+ lineNumber: 731,
521
522
  columnNumber: 5
522
523
  }
523
524
  }, _react["default"].createElement(_reactNative.View, {
@@ -527,7 +528,7 @@ var MessageWithContext = function MessageWithContext(props) {
527
528
  __self: _this,
528
529
  __source: {
529
530
  fileName: _jsxFileName,
530
- lineNumber: 739,
531
+ lineNumber: 740,
531
532
  columnNumber: 7
532
533
  }
533
534
  }, _react["default"].createElement(_reactNative.View, {
@@ -537,7 +538,7 @@ var MessageWithContext = function MessageWithContext(props) {
537
538
  __self: _this,
538
539
  __source: {
539
540
  fileName: _jsxFileName,
540
- lineNumber: 747,
541
+ lineNumber: 748,
541
542
  columnNumber: 9
542
543
  }
543
544
  }, _react["default"].createElement(_MessageContext.MessageProvider, {
@@ -545,14 +546,14 @@ var MessageWithContext = function MessageWithContext(props) {
545
546
  __self: _this,
546
547
  __source: {
547
548
  fileName: _jsxFileName,
548
- lineNumber: 754,
549
+ lineNumber: 755,
549
550
  columnNumber: 11
550
551
  }
551
552
  }, _react["default"].createElement(MessageSimple, {
552
553
  __self: _this,
553
554
  __source: {
554
555
  fileName: _jsxFileName,
555
- lineNumber: 755,
556
+ lineNumber: 756,
556
557
  columnNumber: 13
557
558
  }
558
559
  }), isBounceDialogOpen && _react["default"].createElement(MessageBounce, {
@@ -560,7 +561,7 @@ var MessageWithContext = function MessageWithContext(props) {
560
561
  __self: _this,
561
562
  __source: {
562
563
  fileName: _jsxFileName,
563
- lineNumber: 756,
564
+ lineNumber: 757,
564
565
  columnNumber: 36
565
566
  }
566
567
  })))));
@@ -575,6 +576,7 @@ var areEqual = function areEqual(prevProps, nextProps) {
575
576
  prevLastReceivedId = prevProps.lastReceivedId,
576
577
  prevMembers = prevProps.members,
577
578
  prevMessage = prevProps.message,
579
+ prevMessagesContext = prevProps.messagesContext,
578
580
  prevShowUnreadUnderlay = prevProps.showUnreadUnderlay,
579
581
  prevT = prevProps.t;
580
582
  var nextMutedUsers = nextProps.chatContext.mutedUsers,
@@ -584,6 +586,7 @@ var areEqual = function areEqual(prevProps, nextProps) {
584
586
  nextLastReceivedId = nextProps.lastReceivedId,
585
587
  nextMembers = nextProps.members,
586
588
  nextMessage = nextProps.message,
589
+ nextMessagesContext = nextProps.messagesContext,
587
590
  nextShowUnreadUnderlay = nextProps.showUnreadUnderlay,
588
591
  nextT = nextProps.t;
589
592
  var membersEqual = Object.keys(prevMembers).length === Object.keys(nextMembers).length;
@@ -634,6 +637,10 @@ var areEqual = function areEqual(prevProps, nextProps) {
634
637
  if (!tEqual) return false;
635
638
  var targetedMessageEqual = prevIsTargetedMessage === nextIsTargetedMessage;
636
639
  if (!targetedMessageEqual) return false;
640
+ var prevMyMessageTheme = JSON.stringify(prevMessagesContext == null ? void 0 : prevMessagesContext.myMessageTheme);
641
+ var nextMyMessageTheme = JSON.stringify(nextMessagesContext == null ? void 0 : nextMessagesContext.myMessageTheme);
642
+ var messageThemeEqual = prevMyMessageTheme === nextMyMessageTheme;
643
+ if (!messageThemeEqual) return false;
637
644
  return true;
638
645
  };
639
646
  var MemoizedMessage = _react["default"].memo(MessageWithContext, areEqual);
@@ -671,7 +678,7 @@ var Message = function Message(props) {
671
678
  __self: _this,
672
679
  __source: {
673
680
  fileName: _jsxFileName,
674
- lineNumber: 922,
681
+ lineNumber: 931,
675
682
  columnNumber: 5
676
683
  }
677
684
  }));