stream-chat-react-native-core 5.6.0-beta.0 → 5.6.0-beta.2

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 (171) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +21 -16
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/GalleryImage.js +3 -3
  4. package/lib/commonjs/components/Attachment/GalleryImage.js.map +1 -1
  5. package/lib/commonjs/components/Channel/Channel.js +43 -33
  6. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  7. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js +5 -1
  8. package/lib/commonjs/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  9. package/lib/commonjs/components/Chat/Chat.js +1 -1
  10. package/lib/commonjs/components/Chat/Chat.js.map +1 -1
  11. package/lib/commonjs/components/Chat/hooks/useAppSettings.js +51 -22
  12. package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +1 -1
  13. package/lib/commonjs/components/Chat/hooks/useIsOnline.js +1 -1
  14. package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
  15. package/lib/commonjs/components/Message/hooks/useMessageActions.js +2 -2
  16. package/lib/commonjs/components/Message/hooks/useMessageActions.js.map +1 -1
  17. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +18 -21
  18. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  19. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +7 -32
  20. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  21. package/lib/commonjs/components/index.js +1 -1
  22. package/lib/commonjs/components/index.js.map +1 -1
  23. package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
  24. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +128 -89
  25. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  26. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  27. package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  28. package/lib/commonjs/store/QuickSqliteClient.js +46 -1
  29. package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
  30. package/lib/commonjs/store/QuickSqliteClient_v4.js +112 -0
  31. package/lib/commonjs/store/QuickSqliteClient_v4.js.map +1 -0
  32. package/lib/commonjs/store/apis/getAppSettings.js +23 -0
  33. package/lib/commonjs/store/apis/getAppSettings.js.map +1 -0
  34. package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -1
  35. package/lib/commonjs/store/apis/index.js +26 -0
  36. package/lib/commonjs/store/apis/index.js.map +1 -1
  37. package/lib/commonjs/store/apis/queries/selectChannels.js.map +1 -1
  38. package/lib/commonjs/store/apis/queries/selectMembersForChannels.js.map +1 -1
  39. package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  40. package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  41. package/lib/commonjs/store/apis/queries/selectReadsForChannels.js.map +1 -1
  42. package/lib/commonjs/store/apis/upsertAppSettings.js +26 -0
  43. package/lib/commonjs/store/apis/upsertAppSettings.js.map +1 -0
  44. package/lib/commonjs/store/schema.js +1 -0
  45. package/lib/commonjs/store/schema.js.map +1 -1
  46. package/lib/commonjs/utils/DBSyncManager.js +16 -16
  47. package/lib/commonjs/utils/DBSyncManager.js.map +1 -1
  48. package/lib/commonjs/{components/Message/utils → utils}/removeReservedFields.js +1 -1
  49. package/lib/commonjs/utils/removeReservedFields.js.map +1 -0
  50. package/lib/commonjs/utils/utils.js +2 -2
  51. package/lib/commonjs/utils/utils.js.map +1 -1
  52. package/lib/commonjs/version.json +1 -1
  53. package/lib/module/components/Attachment/Gallery.js +21 -16
  54. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  55. package/lib/module/components/Attachment/GalleryImage.js +3 -3
  56. package/lib/module/components/Attachment/GalleryImage.js.map +1 -1
  57. package/lib/module/components/Channel/Channel.js +43 -33
  58. package/lib/module/components/Channel/Channel.js.map +1 -1
  59. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js +5 -1
  60. package/lib/module/components/ChannelList/hooks/usePaginatedChannels.js.map +1 -1
  61. package/lib/module/components/Chat/Chat.js +1 -1
  62. package/lib/module/components/Chat/Chat.js.map +1 -1
  63. package/lib/module/components/Chat/hooks/useAppSettings.js +51 -22
  64. package/lib/module/components/Chat/hooks/useAppSettings.js.map +1 -1
  65. package/lib/module/components/Chat/hooks/useIsOnline.js +1 -1
  66. package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
  67. package/lib/module/components/Message/hooks/useMessageActions.js +2 -2
  68. package/lib/module/components/Message/hooks/useMessageActions.js.map +1 -1
  69. package/lib/module/components/MessageInput/FileUploadPreview.js +18 -21
  70. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  71. package/lib/module/components/MessageInput/ImageUploadPreview.js +7 -32
  72. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  73. package/lib/module/components/index.js +1 -1
  74. package/lib/module/components/index.js.map +1 -1
  75. package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
  76. package/lib/module/contexts/messageInputContext/MessageInputContext.js +128 -89
  77. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  78. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js +1 -0
  79. package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
  80. package/lib/module/store/QuickSqliteClient.js +46 -1
  81. package/lib/module/store/QuickSqliteClient.js.map +1 -1
  82. package/lib/module/store/QuickSqliteClient_v4.js +112 -0
  83. package/lib/module/store/QuickSqliteClient_v4.js.map +1 -0
  84. package/lib/module/store/apis/getAppSettings.js +23 -0
  85. package/lib/module/store/apis/getAppSettings.js.map +1 -0
  86. package/lib/module/store/apis/getPendingTasks.js.map +1 -1
  87. package/lib/module/store/apis/index.js +26 -0
  88. package/lib/module/store/apis/index.js.map +1 -1
  89. package/lib/module/store/apis/queries/selectChannels.js.map +1 -1
  90. package/lib/module/store/apis/queries/selectMembersForChannels.js.map +1 -1
  91. package/lib/module/store/apis/queries/selectMessagesForChannels.js.map +1 -1
  92. package/lib/module/store/apis/queries/selectReactionsForMessages.js.map +1 -1
  93. package/lib/module/store/apis/queries/selectReadsForChannels.js.map +1 -1
  94. package/lib/module/store/apis/upsertAppSettings.js +26 -0
  95. package/lib/module/store/apis/upsertAppSettings.js.map +1 -0
  96. package/lib/module/store/schema.js +1 -0
  97. package/lib/module/store/schema.js.map +1 -1
  98. package/lib/module/utils/DBSyncManager.js +16 -16
  99. package/lib/module/utils/DBSyncManager.js.map +1 -1
  100. package/lib/module/{components/Message/utils → utils}/removeReservedFields.js +1 -1
  101. package/lib/module/utils/removeReservedFields.js.map +1 -0
  102. package/lib/module/utils/utils.js +2 -2
  103. package/lib/module/utils/utils.js.map +1 -1
  104. package/lib/module/version.json +1 -1
  105. package/lib/typescript/components/Chat/hooks/useAppSettings.d.ts +2 -2
  106. package/lib/typescript/components/Chat/hooks/useIsOnline.d.ts +1 -1
  107. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
  108. package/lib/typescript/components/MessageInput/ImageUploadPreview.d.ts +1 -1
  109. package/lib/typescript/components/index.d.ts +1 -1
  110. package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -1
  111. package/lib/typescript/store/QuickSqliteClient.d.ts +4 -1
  112. package/lib/typescript/store/QuickSqliteClient_v4.d.ts +12 -0
  113. package/lib/typescript/store/apis/getAppSettings.d.ts +4 -0
  114. package/lib/typescript/store/apis/getPendingTasks.d.ts +1 -1
  115. package/lib/typescript/store/apis/index.d.ts +2 -0
  116. package/lib/typescript/store/apis/upsertAppSettings.d.ts +6 -0
  117. package/lib/typescript/store/mappers/mapTaskToStorable.d.ts +0 -8
  118. package/lib/typescript/store/schema.d.ts +1 -0
  119. package/lib/typescript/store/types.d.ts +0 -4
  120. package/lib/typescript/utils/DBSyncManager.d.ts +1 -1
  121. package/lib/typescript/{components/Message/utils → utils}/removeReservedFields.d.ts +2 -2
  122. package/lib/typescript/utils/utils.d.ts +1 -1
  123. package/package.json +1 -1
  124. package/src/components/Attachment/Gallery.tsx +5 -1
  125. package/src/components/Attachment/GalleryImage.tsx +2 -0
  126. package/src/components/Attachment/__tests__/Gallery.test.js +9 -2
  127. package/src/components/Attachment/__tests__/Giphy.test.js +9 -5
  128. package/src/components/Channel/Channel.tsx +20 -12
  129. package/src/components/ChannelList/hooks/usePaginatedChannels.ts +6 -4
  130. package/src/components/Chat/Chat.tsx +1 -1
  131. package/src/components/Chat/hooks/__tests__/useAppSettings.test.tsx +1 -0
  132. package/src/components/Chat/hooks/useAppSettings.ts +19 -6
  133. package/src/components/Chat/hooks/useIsOnline.ts +1 -1
  134. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +29 -15
  135. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +12 -6
  136. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +9 -4
  137. package/src/components/Message/hooks/useMessageActions.tsx +1 -1
  138. package/src/components/MessageInput/FileUploadPreview.tsx +4 -5
  139. package/src/components/MessageInput/ImageUploadPreview.tsx +10 -35
  140. package/src/components/index.ts +1 -1
  141. package/src/contexts/chatContext/ChatContext.tsx +1 -1
  142. package/src/contexts/messageInputContext/MessageInputContext.tsx +94 -75
  143. package/src/contexts/messageInputContext/__tests__/MessageInputContext.test.tsx +8 -3
  144. package/src/contexts/messageInputContext/__tests__/__snapshots__/sendMessage.test.tsx.snap +0 -3
  145. package/src/contexts/messageInputContext/__tests__/uploadFile.test.tsx +16 -6
  146. package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +1 -0
  147. package/src/store/QuickSqliteClient.ts +49 -5
  148. package/src/store/QuickSqliteClient_v4.ts +98 -0
  149. package/src/store/apis/getAppSettings.ts +19 -0
  150. package/src/store/apis/getPendingTasks.ts +2 -1
  151. package/src/store/apis/index.ts +2 -0
  152. package/src/store/apis/queries/selectChannels.ts +4 -1
  153. package/src/store/apis/queries/selectMembersForChannels.ts +1 -1
  154. package/src/store/apis/queries/selectMessagesForChannels.ts +1 -1
  155. package/src/store/apis/queries/selectReactionsForMessages.ts +1 -1
  156. package/src/store/apis/queries/selectReadsForChannels.ts +1 -1
  157. package/src/store/apis/upsertAppSettings.ts +23 -0
  158. package/src/store/schema.ts +2 -0
  159. package/src/store/types.ts +0 -5
  160. package/src/utils/DBSyncManager.ts +1 -1
  161. package/src/{components/Message/utils → utils}/removeReservedFields.ts +7 -3
  162. package/src/utils/utils.ts +7 -6
  163. package/src/version.json +1 -1
  164. package/lib/commonjs/components/Message/utils/removeReservedFields.js.map +0 -1
  165. package/lib/commonjs/utils/pendingTaskUtils.js +0 -302
  166. package/lib/commonjs/utils/pendingTaskUtils.js.map +0 -1
  167. package/lib/module/components/Message/utils/removeReservedFields.js.map +0 -1
  168. package/lib/module/utils/pendingTaskUtils.js +0 -302
  169. package/lib/module/utils/pendingTaskUtils.js.map +0 -1
  170. package/lib/typescript/utils/pendingTaskUtils.d.ts +0 -13
  171. package/src/utils/pendingTaskUtils.ts +0 -131
@@ -138,13 +138,18 @@ var GalleryWithContext = function GalleryWithContext(props) {
138
138
  minWidth: minWidth
139
139
  };
140
140
  var imagesAndVideos = [].concat((0, _toConsumableArray2["default"])(images || []), (0, _toConsumableArray2["default"])(videos || []));
141
+ var imagesAndVideosValue = "" + (images == null ? void 0 : images.length) + (videos == null ? void 0 : videos.length) + (images == null ? void 0 : images.map(function (i) {
142
+ return "" + i.image_url + i.thumb_url;
143
+ }).join('')) + (videos == null ? void 0 : videos.map(function (i) {
144
+ return "" + i.image_url + i.thumb_url;
145
+ }).join(''));
141
146
 
142
147
  var _useMemo = (0, _react.useMemo)(function () {
143
148
  return (0, _buildGallery.buildGallery)({
144
149
  images: imagesAndVideos,
145
150
  sizeConfig: sizeConfig
146
151
  });
147
- }, [imagesAndVideos.length]),
152
+ }, [imagesAndVideosValue]),
148
153
  height = _useMemo.height,
149
154
  invertedDirections = _useMemo.invertedDirections,
150
155
  thumbnailGrid = _useMemo.thumbnailGrid,
@@ -163,7 +168,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
163
168
  __self: _this,
164
169
  __source: {
165
170
  fileName: _jsxFileName,
166
- lineNumber: 186,
171
+ lineNumber: 190,
167
172
  columnNumber: 5
168
173
  }
169
174
  }, thumbnailGrid.map(function (rows, colIndex) {
@@ -177,7 +182,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
177
182
  __self: _this,
178
183
  __source: {
179
184
  fileName: _jsxFileName,
180
- lineNumber: 203,
185
+ lineNumber: 207,
181
186
  columnNumber: 11
182
187
  }
183
188
  }, rows.map(function (thumbnail, rowIndex) {
@@ -227,7 +232,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
227
232
  __self: _this,
228
233
  __source: {
229
234
  fileName: _jsxFileName,
230
- lineNumber: 235,
235
+ lineNumber: 239,
231
236
  columnNumber: 17
232
237
  }
233
238
  });
@@ -331,7 +336,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
331
336
  __self: _this,
332
337
  __source: {
333
338
  fileName: _jsxFileName,
334
- lineNumber: 359,
339
+ lineNumber: 363,
335
340
  columnNumber: 5
336
341
  }
337
342
  }), thumbnail.type === 'video' ? _react["default"].createElement(VideoThumbnail, {
@@ -343,7 +348,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
343
348
  __self: _this,
344
349
  __source: {
345
350
  fileName: _jsxFileName,
346
- lineNumber: 401,
351
+ lineNumber: 405,
347
352
  columnNumber: 9
348
353
  }
349
354
  }) : _react["default"].createElement(_reactNative.View, {
@@ -351,7 +356,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
351
356
  __self: _this,
352
357
  __source: {
353
358
  fileName: _jsxFileName,
354
- lineNumber: 413,
359
+ lineNumber: 417,
355
360
  columnNumber: 9
356
361
  }
357
362
  }, _react["default"].createElement(GalleryImageThumbnail, {
@@ -362,7 +367,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
362
367
  __self: _this,
363
368
  __source: {
364
369
  fileName: _jsxFileName,
365
- lineNumber: 414,
370
+ lineNumber: 418,
366
371
  columnNumber: 11
367
372
  }
368
373
  })), colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? _react["default"].createElement(_reactNative.View, {
@@ -372,7 +377,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
372
377
  __self: _this,
373
378
  __source: {
374
379
  fileName: _jsxFileName,
375
- lineNumber: 423,
380
+ lineNumber: 427,
376
381
  columnNumber: 9
377
382
  }
378
383
  }, _react["default"].createElement(_reactNative.Text, {
@@ -380,7 +385,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
380
385
  __self: _this,
381
386
  __source: {
382
387
  fileName: _jsxFileName,
383
- lineNumber: 431,
388
+ lineNumber: 435,
384
389
  columnNumber: 11
385
390
  }
386
391
  }, "+" + (imagesAndVideos.length - 4))) : null);
@@ -409,7 +414,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
409
414
  __self: _this,
410
415
  __source: {
411
416
  fileName: _jsxFileName,
412
- lineNumber: 463,
417
+ lineNumber: 467,
413
418
  columnNumber: 5
414
419
  }
415
420
  }, isLoadingImageError ? _react["default"].createElement(ImageLoadingFailedIndicator, {
@@ -417,7 +422,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
417
422
  __self: _this,
418
423
  __source: {
419
424
  fileName: _jsxFileName,
420
- lineNumber: 470,
425
+ lineNumber: 474,
421
426
  columnNumber: 9
422
427
  }
423
428
  }) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_GalleryImage.GalleryImage, {
@@ -441,7 +446,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
441
446
  __self: _this,
442
447
  __source: {
443
448
  fileName: _jsxFileName,
444
- lineNumber: 473,
449
+ lineNumber: 477,
445
450
  columnNumber: 11
446
451
  }
447
452
  }), isLoadingImage && _react["default"].createElement(_reactNative.View, {
@@ -449,7 +454,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
449
454
  __self: _this,
450
455
  __source: {
451
456
  fileName: _jsxFileName,
452
- lineNumber: 493,
457
+ lineNumber: 497,
453
458
  columnNumber: 13
454
459
  }
455
460
  }, _react["default"].createElement(ImageLoadingIndicator, {
@@ -457,7 +462,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
457
462
  __self: _this,
458
463
  __source: {
459
464
  fileName: _jsxFileName,
460
- lineNumber: 494,
465
+ lineNumber: 498,
461
466
  columnNumber: 15
462
467
  }
463
468
  }))));
@@ -579,7 +584,7 @@ var Gallery = function Gallery(props) {
579
584
  __self: _this,
580
585
  __source: {
581
586
  fileName: _jsxFileName,
582
- lineNumber: 635,
587
+ lineNumber: 639,
583
588
  columnNumber: 5
584
589
  }
585
590
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["Gallery.tsx"],"names":["styles","StyleSheet","create","errorTextSize","fontSize","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","alignItems","display","justifyContent","padding","imageContainerStyle","flex","imageLoadingErrorIndicatorStyle","bottom","left","position","imageLoadingIndicatorContainer","height","width","imageLoadingIndicatorStyle","moreImagesContainer","margin","moreImagesText","color","fontWeight","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","theme","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","length","invertedDirections","thumbnailGrid","numOfColumns","map","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","messageText","text","undefined","GalleryThumbnail","overlay","colors","image","openImageViewer","messageId","id","url","defaultOnPress","type","event","emitter","defaultHandler","thumb_url","absoluteFillObject","backgroundColor","GalleryImageThumbnail","isLoadingImage","isLoadingImageError","setLoadingImage","setLoadingImageError","error","console","warn","resizeMode","areEqual","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","image_url","videosEqual","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","contextSetSelectedMessage","contextAlignment","contextGroupStyles","contextImages","contextMessage","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","ContextVideoThumnbnail","contextSetOverlay","channelId","cid","reply_count","displayName"],"mappings":"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","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 { 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\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 moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\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 \"exccesive 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 { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideos.length],\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 height,\n width,\n },\n galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n },\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' && !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 image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\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 { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError } =\n useLoadingImage();\n\n const {\n theme: {\n messageSimple: {\n gallery: { image },\n },\n },\n } = useTheme();\n\n return (\n <View\n style={{\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n }}\n >\n {isLoadingImageError ? (\n <ImageLoadingFailedIndicator style={[styles.imageLoadingErrorIndicatorStyle]} />\n ) : (\n <>\n <GalleryImage\n onError={(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 image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\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\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
1
+ {"version":3,"sources":["Gallery.tsx"],"names":["styles","StyleSheet","create","errorTextSize","fontSize","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","alignItems","display","justifyContent","padding","imageContainerStyle","flex","imageLoadingErrorIndicatorStyle","bottom","left","position","imageLoadingIndicatorContainer","height","width","imageLoadingIndicatorStyle","moreImagesContainer","margin","moreImagesText","color","fontWeight","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","theme","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","imagesAndVideosValue","length","map","i","image_url","thumb_url","join","invertedDirections","thumbnailGrid","numOfColumns","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","messageText","text","undefined","GalleryThumbnail","overlay","colors","image","openImageViewer","messageId","id","url","defaultOnPress","type","event","emitter","defaultHandler","absoluteFillObject","backgroundColor","GalleryImageThumbnail","isLoadingImage","isLoadingImageError","setLoadingImage","setLoadingImageError","error","console","warn","resizeMode","areEqual","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","videosEqual","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","contextSetSelectedMessage","contextAlignment","contextGroupStyles","contextImages","contextMessage","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","ContextVideoThumnbnail","contextSetOverlay","channelId","cid","reply_count","displayName"],"mappings":"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","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 { 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\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 moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\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 \"exccesive 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 height,\n width,\n },\n galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n },\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' && !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 image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\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 { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError } =\n useLoadingImage();\n\n const {\n theme: {\n messageSimple: {\n gallery: { image },\n },\n },\n } = useTheme();\n\n return (\n <View\n style={{\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n }}\n >\n {isLoadingImageError ? (\n <ImageLoadingFailedIndicator style={[styles.imageLoadingErrorIndicatorStyle]} />\n ) : (\n <>\n <GalleryImage\n onError={(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 image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\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\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"]}
@@ -37,7 +37,7 @@ var GalleryImageWithContext = function GalleryImageWithContext(props) {
37
37
  __self: _this,
38
38
  __source: {
39
39
  fileName: _jsxFileName,
40
- lineNumber: 18,
40
+ lineNumber: 20,
41
41
  columnNumber: 7
42
42
  }
43
43
  }));
@@ -51,7 +51,7 @@ var GalleryImageWithContext = function GalleryImageWithContext(props) {
51
51
  __self: _this,
52
52
  __source: {
53
53
  fileName: _jsxFileName,
54
- lineNumber: 29,
54
+ lineNumber: 31,
55
55
  columnNumber: 5
56
56
  }
57
57
  }));
@@ -75,7 +75,7 @@ var GalleryImage = function GalleryImage(props) {
75
75
  __self: _this,
76
76
  __source: {
77
77
  fileName: _jsxFileName,
78
- lineNumber: 55,
78
+ lineNumber: 57,
79
79
  columnNumber: 10
80
80
  }
81
81
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["GalleryImage.tsx"],"names":["GalleryImageWithContext","props","ImageComponent","Image","uri","rest","MemoizedGalleryImage","React","memo","prevProps","nextProps","GalleryImage"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AAGA;;;;;;;AAMO,IAAMA,uBAA+D,GAAG,SAAlEA,uBAAkE,CAACC,KAAD,EAAW;AACxF,8BAAiDA,KAAjD,CAAQC,cAAR;AAAA,MAAQA,cAAR,sCAAyBC,kBAAzB;AAAA,MAAgCC,GAAhC,GAAiDH,KAAjD,CAAgCG,GAAhC;AAAA,MAAwCC,IAAxC,6CAAiDJ,KAAjD;;AAEA,MAAI,CAAC,uBAAWG,GAAX,CAAL,EAAsB;AACpB,WACE,gCAAC,cAAD,gCACMC,IADN;AAEE,MAAA,kBAAkB,EAAC,eAFrB;AAGE,MAAA,MAAM,EAAE;AACND,QAAAA,GAAG,EAAE,mCAAuBA,GAAvB;AADC,OAHV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OADF;AASD;;AAED,SACE,gCAAC,kBAAD,gCACMC,IADN;AAEE,IAAA,kBAAkB,EAAC,eAFrB;AAGE,IAAA,MAAM,EAAE;AACND,MAAAA,GAAG,EAAE,mCAAuBA,GAAvB;AADC,KAHV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AASD,CAxBM;;;;AA0BA,IAAME,oBAAoB,GAAGC,kBAAMC,IAAN,CAClCR,uBADkC,EAElC,UAACS,SAAD,EAAYC,SAAZ;AAAA,SACE,gCAAoBD,SAAS,CAACL,GAA9B,MAAuC,gCAAoBM,SAAS,CAACN,GAA9B,CADzC;AAAA,CAFkC,CAA7B;;;;AASA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAG1BV,KAH0B,EAIvB;AACH,wBAA2B,kCAA3B;AAAA,MAAQC,cAAR,mBAAQA,cAAR;;AAEA,SAAO,gCAAC,oBAAD;AAAsB,IAAA,cAAc,EAAEA;AAAtC,KAA0DD,KAA1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","sourcesContent":["import React from 'react';\nimport { Image, ImageProps } from 'react-native';\n\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams, isLocalUrl, makeImageCompatibleUrl } from '../../utils/utils';\n\nexport type GalleryImageWithContextProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = GalleryImageProps & Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>;\n\nexport const GalleryImageWithContext: React.FC<GalleryImageWithContextProps> = (props) => {\n const { ImageComponent = Image, uri, ...rest } = props;\n\n if (!isLocalUrl(uri)) {\n return (\n <ImageComponent\n {...rest}\n accessibilityLabel='Gallery Image'\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n />\n );\n }\n\n return (\n <Image\n {...rest}\n accessibilityLabel='Gallery Image'\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n />\n );\n};\n\nexport const MemoizedGalleryImage = React.memo(\n GalleryImageWithContext,\n (prevProps, nextProps) =>\n getUrlWithoutParams(prevProps.uri) === getUrlWithoutParams(nextProps.uri),\n);\nexport type GalleryImageProps = Omit<ImageProps, 'height' | 'source'> & {\n uri: string;\n};\n\nexport const GalleryImage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryImageProps,\n) => {\n const { ImageComponent } = useChatContext<StreamChatGenerics>();\n\n return <MemoizedGalleryImage ImageComponent={ImageComponent} {...props} />;\n};\n"]}
1
+ {"version":3,"sources":["GalleryImage.tsx"],"names":["GalleryImageWithContext","props","ImageComponent","Image","uri","rest","MemoizedGalleryImage","React","memo","prevProps","nextProps","GalleryImage"],"mappings":";;;;;;;;;;;AAAA;;AACA;;AAEA;;AAGA;;;;;;;AAMO,IAAMA,uBAA+D,GAAG,SAAlEA,uBAAkE,CAACC,KAAD,EAAW;AACxF,8BAAiDA,KAAjD,CAAQC,cAAR;AAAA,MAAQA,cAAR,sCAAyBC,kBAAzB;AAAA,MAAgCC,GAAhC,GAAiDH,KAAjD,CAAgCG,GAAhC;AAAA,MAAwCC,IAAxC,6CAAiDJ,KAAjD;;AAIA,MAAI,CAAC,uBAAWG,GAAX,CAAL,EAAsB;AACpB,WACE,gCAAC,cAAD,gCACMC,IADN;AAEE,MAAA,kBAAkB,EAAC,eAFrB;AAGE,MAAA,MAAM,EAAE;AACND,QAAAA,GAAG,EAAE,mCAAuBA,GAAvB;AADC,OAHV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OADF;AASD;;AAED,SACE,gCAAC,kBAAD,gCACMC,IADN;AAEE,IAAA,kBAAkB,EAAC,eAFrB;AAGE,IAAA,MAAM,EAAE;AACND,MAAAA,GAAG,EAAE,mCAAuBA,GAAvB;AADC,KAHV;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AASD,CA1BM;;;;AA4BA,IAAME,oBAAoB,GAAGC,kBAAMC,IAAN,CAClCR,uBADkC,EAElC,UAACS,SAAD,EAAYC,SAAZ;AAAA,SACE,gCAAoBD,SAAS,CAACL,GAA9B,MAAuC,gCAAoBM,SAAS,CAACN,GAA9B,CADzC;AAAA,CAFkC,CAA7B;;;;AASA,IAAMO,YAAY,GAAG,SAAfA,YAAe,CAG1BV,KAH0B,EAIvB;AACH,wBAA2B,kCAA3B;AAAA,MAAQC,cAAR,mBAAQA,cAAR;;AAEA,SAAO,gCAAC,oBAAD;AAAsB,IAAA,cAAc,EAAEA;AAAtC,KAA0DD,KAA1D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","sourcesContent":["import React from 'react';\nimport { Image, ImageProps } from 'react-native';\n\nimport { ChatContextValue, useChatContext } from '../../contexts/chatContext/ChatContext';\n\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams, isLocalUrl, makeImageCompatibleUrl } from '../../utils/utils';\n\nexport type GalleryImageWithContextProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = GalleryImageProps & Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>;\n\nexport const GalleryImageWithContext: React.FC<GalleryImageWithContextProps> = (props) => {\n const { ImageComponent = Image, uri, ...rest } = props;\n\n // Caching image components such as FastImage will not work with local images.\n // This for the case of local uris, we use the default Image component.\n if (!isLocalUrl(uri)) {\n return (\n <ImageComponent\n {...rest}\n accessibilityLabel='Gallery Image'\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n />\n );\n }\n\n return (\n <Image\n {...rest}\n accessibilityLabel='Gallery Image'\n source={{\n uri: makeImageCompatibleUrl(uri),\n }}\n />\n );\n};\n\nexport const MemoizedGalleryImage = React.memo(\n GalleryImageWithContext,\n (prevProps, nextProps) =>\n getUrlWithoutParams(prevProps.uri) === getUrlWithoutParams(nextProps.uri),\n);\nexport type GalleryImageProps = Omit<ImageProps, 'height' | 'source'> & {\n uri: string;\n};\n\nexport const GalleryImage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryImageProps,\n) => {\n const { ImageComponent } = useChatContext<StreamChatGenerics>();\n\n return <MemoizedGalleryImage ImageComponent={ImageComponent} {...props} />;\n};\n"]}