stream-chat-react-native-core 4.11.1-beta.2 → 4.12.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (206) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +2 -2
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/{GallaryImage.js → GalleryImage.js} +3 -3
  4. package/lib/{module/components/Attachment/GallaryImage.js.map → commonjs/components/Attachment/GalleryImage.js.map} +1 -1
  5. package/lib/commonjs/components/Attachment/Giphy.js +1 -1
  6. package/lib/commonjs/components/Attachment/Giphy.js.map +1 -1
  7. package/lib/commonjs/components/Attachment/VideoThumbnail.js +19 -18
  8. package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -1
  9. package/lib/commonjs/components/Avatar/Avatar.js +1 -1
  10. package/lib/commonjs/components/Avatar/Avatar.js.map +1 -1
  11. package/lib/commonjs/components/Avatar/GroupAvatar.js +1 -1
  12. package/lib/commonjs/components/Avatar/GroupAvatar.js.map +1 -1
  13. package/lib/commonjs/components/Channel/Channel.js +18 -13
  14. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  15. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
  16. package/lib/commonjs/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  17. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js +17 -12
  18. package/lib/commonjs/components/ChannelPreview/ChannelPreview.js.map +1 -1
  19. package/lib/commonjs/components/ImageGallery/ImageGallery.js +37 -30
  20. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  21. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +5 -3
  22. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  23. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -6
  24. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  25. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +17 -14
  26. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  27. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +1 -0
  28. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  29. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js +2 -1
  30. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  31. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +36 -18
  32. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  33. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +3 -1
  34. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  35. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +5 -4
  36. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  37. package/lib/commonjs/components/Message/Message.js +8 -6
  38. package/lib/commonjs/components/Message/Message.js.map +1 -1
  39. package/lib/commonjs/components/MessageInput/AudioAttachmentUploadPreview.js +538 -0
  40. package/lib/commonjs/components/MessageInput/AudioAttachmentUploadPreview.js.map +1 -0
  41. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +147 -34
  42. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  43. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +4 -1
  44. package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
  45. package/lib/{module/components/ImageGallery/components → commonjs/components/ProgressControl}/ProgressControl.js +37 -24
  46. package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -0
  47. package/lib/commonjs/components/Reply/Reply.js +21 -13
  48. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  49. package/lib/commonjs/components/index.js +26 -0
  50. package/lib/commonjs/components/index.js.map +1 -1
  51. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +5 -2
  52. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  53. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -2
  54. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  55. package/lib/commonjs/contexts/themeContext/utils/theme.js +14 -1
  56. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  57. package/lib/commonjs/icons/Pause.js +2 -2
  58. package/lib/commonjs/icons/Pause.js.map +1 -1
  59. package/lib/commonjs/mock-builders/api/channelMocks.js +1 -0
  60. package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
  61. package/lib/commonjs/native.js +13 -5
  62. package/lib/commonjs/native.js.map +1 -1
  63. package/lib/commonjs/version.json +1 -1
  64. package/lib/module/components/Attachment/Gallery.js +2 -2
  65. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  66. package/lib/module/components/Attachment/{GallaryImage.js → GalleryImage.js} +3 -3
  67. package/lib/{commonjs/components/Attachment/GallaryImage.js.map → module/components/Attachment/GalleryImage.js.map} +1 -1
  68. package/lib/module/components/Attachment/Giphy.js +1 -1
  69. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  70. package/lib/module/components/Attachment/VideoThumbnail.js +19 -18
  71. package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
  72. package/lib/module/components/Avatar/Avatar.js +1 -1
  73. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  74. package/lib/module/components/Avatar/GroupAvatar.js +1 -1
  75. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  76. package/lib/module/components/Channel/Channel.js +18 -13
  77. package/lib/module/components/Channel/Channel.js.map +1 -1
  78. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
  79. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  80. package/lib/module/components/ChannelPreview/ChannelPreview.js +17 -12
  81. package/lib/module/components/ChannelPreview/ChannelPreview.js.map +1 -1
  82. package/lib/module/components/ImageGallery/ImageGallery.js +37 -30
  83. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  84. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +5 -3
  85. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  86. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -6
  87. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  88. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +17 -14
  89. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  90. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +1 -0
  91. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  92. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js +2 -1
  93. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  94. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +36 -18
  95. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  96. package/lib/module/components/ImageGallery/components/ImageGrid.js +3 -1
  97. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  98. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +5 -4
  99. package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  100. package/lib/module/components/Message/Message.js +8 -6
  101. package/lib/module/components/Message/Message.js.map +1 -1
  102. package/lib/module/components/MessageInput/AudioAttachmentUploadPreview.js +538 -0
  103. package/lib/module/components/MessageInput/AudioAttachmentUploadPreview.js.map +1 -0
  104. package/lib/module/components/MessageInput/FileUploadPreview.js +147 -34
  105. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  106. package/lib/module/components/MessageInput/ImageUploadPreview.js +4 -1
  107. package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
  108. package/lib/{commonjs/components/ImageGallery/components → module/components/ProgressControl}/ProgressControl.js +37 -24
  109. package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -0
  110. package/lib/module/components/Reply/Reply.js +21 -13
  111. package/lib/module/components/Reply/Reply.js.map +1 -1
  112. package/lib/module/components/index.js +26 -0
  113. package/lib/module/components/index.js.map +1 -1
  114. package/lib/module/contexts/messageInputContext/MessageInputContext.js +5 -2
  115. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  116. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -2
  117. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  118. package/lib/module/contexts/themeContext/utils/theme.js +14 -1
  119. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  120. package/lib/module/icons/Pause.js +2 -2
  121. package/lib/module/icons/Pause.js.map +1 -1
  122. package/lib/module/mock-builders/api/channelMocks.js +1 -0
  123. package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
  124. package/lib/module/native.js +13 -5
  125. package/lib/module/native.js.map +1 -1
  126. package/lib/module/version.json +1 -1
  127. package/lib/typescript/components/Attachment/{GallaryImage.d.ts → GalleryImage.d.ts} +0 -0
  128. package/lib/typescript/components/Attachment/VideoThumbnail.d.ts +4 -2
  129. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  130. package/lib/typescript/components/ImageGallery/__tests__/AnimatedVideoGallery.test.d.ts +1 -0
  131. package/lib/typescript/components/ImageGallery/__tests__/ImageGallery.test.d.ts +1 -0
  132. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryFooter.test.d.ts +1 -0
  133. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryGrid.test.d.ts +1 -0
  134. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.d.ts +1 -0
  135. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryHeader.test.d.ts +1 -0
  136. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryOverlay.test.d.ts +1 -0
  137. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryVideoControl.test.d.ts +1 -0
  138. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +1 -0
  139. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts +2 -3
  140. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +2 -1
  141. package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +2 -3
  142. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
  143. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  144. package/lib/typescript/components/MessageInput/AudioAttachmentUploadPreview.d.ts +26 -0
  145. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
  146. package/lib/typescript/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.d.ts +1 -0
  147. package/lib/typescript/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.d.ts +1 -0
  148. package/lib/typescript/components/ProgressControl/ProgressControl.d.ts +11 -0
  149. package/lib/typescript/components/index.d.ts +2 -0
  150. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  151. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +7 -1
  152. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  153. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +13 -0
  154. package/lib/typescript/native.d.ts +59 -2
  155. package/package.json +1 -1
  156. package/src/components/Attachment/Gallery.tsx +1 -1
  157. package/src/components/Attachment/{GallaryImage.tsx → GalleryImage.tsx} +1 -1
  158. package/src/components/Attachment/Giphy.tsx +1 -1
  159. package/src/components/Attachment/VideoThumbnail.tsx +15 -6
  160. package/src/components/Attachment/__tests__/Gallery.test.js +6 -6
  161. package/src/components/Attachment/__tests__/Giphy.test.js +4 -4
  162. package/src/components/Avatar/Avatar.tsx +1 -1
  163. package/src/components/Avatar/GroupAvatar.tsx +1 -1
  164. package/src/components/Channel/Channel.tsx +3 -0
  165. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -0
  166. package/src/components/ChannelPreview/ChannelPreview.tsx +14 -12
  167. package/src/components/ImageGallery/ImageGallery.tsx +21 -11
  168. package/src/components/ImageGallery/__tests__/AnimatedVideoGallery.test.tsx +241 -0
  169. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +192 -0
  170. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +190 -0
  171. package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +98 -0
  172. package/src/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.tsx +79 -0
  173. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +172 -0
  174. package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +94 -0
  175. package/src/components/ImageGallery/__tests__/ImageGalleryVideoControl.test.tsx +84 -0
  176. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +3 -0
  177. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +11 -3
  178. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +9 -2
  179. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +1 -1
  180. package/src/components/ImageGallery/components/ImageGalleryOverlay.tsx +6 -1
  181. package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +22 -9
  182. package/src/components/ImageGallery/components/ImageGrid.tsx +19 -17
  183. package/src/components/ImageGallery/components/ImageGridHandle.tsx +4 -1
  184. package/src/components/Message/Message.tsx +2 -1
  185. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +9 -3
  186. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -1
  187. package/src/components/MessageInput/AudioAttachmentUploadPreview.tsx +362 -0
  188. package/src/components/MessageInput/FileUploadPreview.tsx +165 -60
  189. package/src/components/MessageInput/ImageUploadPreview.tsx +2 -2
  190. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +199 -0
  191. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +215 -0
  192. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +64 -0
  193. package/src/components/{ImageGallery/components → ProgressControl}/ProgressControl.tsx +37 -19
  194. package/src/components/Reply/Reply.tsx +14 -2
  195. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +4 -4
  196. package/src/components/index.ts +3 -0
  197. package/src/contexts/messageInputContext/MessageInputContext.tsx +13 -0
  198. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +5 -1
  199. package/src/contexts/themeContext/utils/theme.ts +23 -0
  200. package/src/icons/Pause.tsx +2 -2
  201. package/src/mock-builders/api/channelMocks.tsx +1 -0
  202. package/src/native.ts +67 -7
  203. package/src/version.json +1 -1
  204. package/lib/commonjs/components/ImageGallery/components/ProgressControl.js.map +0 -1
  205. package/lib/module/components/ImageGallery/components/ProgressControl.js.map +0 -1
  206. package/lib/typescript/components/ImageGallery/components/ProgressControl.d.ts +0 -5
@@ -29,6 +29,8 @@ var _Close = require("../../icons/Close");
29
29
 
30
30
  var _Warning = require("../../icons/Warning");
31
31
 
32
+ var _native = require("../../native");
33
+
32
34
  var _utils = require("../../utils/utils");
33
35
 
34
36
  var _FileAttachment = require("../Attachment/FileAttachment");
@@ -50,8 +52,8 @@ var styles = _reactNative.StyleSheet.create({
50
52
  borderRadius: 24,
51
53
  height: 24,
52
54
  position: 'absolute',
53
- right: 14,
54
- top: 4,
55
+ right: 8,
56
+ top: 8,
55
57
  width: 24
56
58
  },
57
59
  fileContainer: {
@@ -61,11 +63,17 @@ var styles = _reactNative.StyleSheet.create({
61
63
  height: FILE_PREVIEW_HEIGHT,
62
64
  justifyContent: 'space-between',
63
65
  marginBottom: 8,
64
- padding: 8
66
+ paddingLeft: 8,
67
+ paddingRight: 8
65
68
  },
66
69
  fileContentContainer: {
67
70
  flexDirection: 'row'
68
71
  },
72
+ fileIcon: {
73
+ alignItems: 'center',
74
+ alignSelf: 'center',
75
+ justifyContent: 'center'
76
+ },
69
77
  filenameText: {
70
78
  fontSize: 14,
71
79
  fontWeight: 'bold',
@@ -111,6 +119,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
111
119
  _useTheme$theme$color = _useTheme$theme.colors,
112
120
  accent_red = _useTheme$theme$color.accent_red,
113
121
  grey = _useTheme$theme$color.grey,
122
+ grey_dark = _useTheme$theme$color.grey_dark,
114
123
  fileSizeText = _useTheme$theme.messageInput.fileUploadPreview.fileSizeText;
115
124
 
116
125
  var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(),
@@ -121,7 +130,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
121
130
  __self: _this,
122
131
  __source: {
123
132
  fileName: _jsxFileName,
124
- lineNumber: 97,
133
+ lineNumber: 104,
125
134
  columnNumber: 5
126
135
  }
127
136
  }, _react["default"].createElement(_Warning.Warning, {
@@ -132,17 +141,17 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
132
141
  __self: _this,
133
142
  __source: {
134
143
  fileName: _jsxFileName,
135
- lineNumber: 98,
144
+ lineNumber: 105,
136
145
  columnNumber: 7
137
146
  }
138
147
  }), _react["default"].createElement(_reactNative.Text, {
139
148
  style: [styles.unsupportedFileText, {
140
- color: grey
149
+ color: grey_dark
141
150
  }],
142
151
  __self: _this,
143
152
  __source: {
144
153
  fileName: _jsxFileName,
145
- lineNumber: 104,
154
+ lineNumber: 111,
146
155
  columnNumber: 7
147
156
  }
148
157
  }, t('File type not supported'))) : _react["default"].createElement(_WritingDirectionAwareText.WritingDirectionAwareText, {
@@ -152,16 +161,18 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
152
161
  __self: _this,
153
162
  __source: {
154
163
  fileName: _jsxFileName,
155
- lineNumber: 109,
164
+ lineNumber: 116,
156
165
  columnNumber: 5
157
166
  }
158
167
  }, item.file.duration || (0, _FileAttachment.getFileSizeDisplayText)(item.file.size));
159
168
  };
160
169
 
161
170
  var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props) {
162
- var FileAttachmentIcon = props.FileAttachmentIcon,
171
+ var AudioAttachmentUploadPreview = props.AudioAttachmentUploadPreview,
172
+ FileAttachmentIcon = props.FileAttachmentIcon,
163
173
  fileUploads = props.fileUploads,
164
174
  removeFile = props.removeFile,
175
+ setFileUploads = props.setFileUploads,
165
176
  uploadFile = props.uploadFile;
166
177
  var flatListRef = (0, _react.useRef)(null);
167
178
 
@@ -170,13 +181,55 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
170
181
  flatListWidth = _useState2[0],
171
182
  setFlatListWidth = _useState2[1];
172
183
 
184
+ var onLoad = function onLoad(index, duration) {
185
+ setFileUploads(function (prevFileUploads) {
186
+ return prevFileUploads.map(function (fileUpload) {
187
+ return (0, _extends2["default"])({}, fileUpload, {
188
+ duration: fileUpload.id === index ? duration : fileUpload.duration
189
+ });
190
+ });
191
+ });
192
+ };
193
+
194
+ var onProgress = function onProgress(index, currentTime, hasEnd) {
195
+ setFileUploads(function (prevFileUploads) {
196
+ return prevFileUploads.map(function (fileUpload) {
197
+ return (0, _extends2["default"])({}, fileUpload, {
198
+ progress: fileUpload.id === index ? hasEnd ? 1 : currentTime ? currentTime / fileUpload.duration : 0 : fileUpload.progress
199
+ });
200
+ });
201
+ });
202
+ };
203
+
204
+ var onPlayPause = function onPlayPause(index, status) {
205
+ if (status === false) {
206
+ setFileUploads(function (prevFileUploads) {
207
+ return prevFileUploads.map(function (fileUpload) {
208
+ return (0, _extends2["default"])({}, fileUpload, {
209
+ paused: fileUpload.id === index ? false : true
210
+ });
211
+ });
212
+ });
213
+ } else {
214
+ setFileUploads(function (prevFileUploads) {
215
+ return prevFileUploads.map(function (fileUpload) {
216
+ return (0, _extends2["default"])({}, fileUpload, {
217
+ paused: true
218
+ });
219
+ });
220
+ });
221
+ }
222
+ };
223
+
173
224
  var _useTheme2 = (0, _ThemeContext.useTheme)(),
174
225
  _useTheme2$theme = _useTheme2.theme,
175
226
  _useTheme2$theme$colo = _useTheme2$theme.colors,
176
227
  black = _useTheme2$theme$colo.black,
228
+ grey_dark = _useTheme2$theme$colo.grey_dark,
229
+ grey_gainsboro = _useTheme2$theme$colo.grey_gainsboro,
177
230
  grey_whisper = _useTheme2$theme$colo.grey_whisper,
178
- overlay = _useTheme2$theme$colo.overlay,
179
231
  _useTheme2$theme$mess = _useTheme2$theme.messageInput.fileUploadPreview,
232
+ audioAttachmentFileContainer = _useTheme2$theme$mess.audioAttachmentFileContainer,
180
233
  dismiss = _useTheme2$theme$mess.dismiss,
181
234
  fileContainer = _useTheme2$theme$mess.fileContainer,
182
235
  fileContentContainer = _useTheme2$theme$mess.fileContentContainer,
@@ -185,9 +238,12 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
185
238
  flatList = _useTheme2$theme$mess.flatList;
186
239
 
187
240
  var renderItem = function renderItem(_ref2) {
241
+ var _item$file$type;
242
+
188
243
  var index = _ref2.index,
189
244
  item = _ref2.item;
190
245
  var indicatorType = (0, _utils.getIndicatorTypeForFileState)(item.state);
246
+ var lastIndexOfDot = item.file.name.lastIndexOf('.');
191
247
  return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_UploadProgressIndicator.UploadProgressIndicator, {
192
248
  action: function action() {
193
249
  uploadFile({
@@ -199,10 +255,33 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
199
255
  __self: _this,
200
256
  __source: {
201
257
  fileName: _jsxFileName,
202
- lineNumber: 154,
258
+ lineNumber: 219,
203
259
  columnNumber: 9
204
260
  }
205
- }, _react["default"].createElement(_reactNative.View, {
261
+ }, (_item$file$type = item.file.type) != null && _item$file$type.startsWith('audio/') && (0, _native.isAudioPackageAvailable)() ? _react["default"].createElement(_reactNative.View, {
262
+ style: [{
263
+ marginBottom: item.state === _utils.FileState.UPLOADED ? 8 : 0
264
+ }, audioAttachmentFileContainer],
265
+ __self: _this,
266
+ __source: {
267
+ fileName: _jsxFileName,
268
+ lineNumber: 227,
269
+ columnNumber: 13
270
+ }
271
+ }, _react["default"].createElement(AudioAttachmentUploadPreview, {
272
+ index: index,
273
+ item: item,
274
+ onLoad: onLoad,
275
+ onPlayPause: onPlayPause,
276
+ onProgress: onProgress,
277
+ testID: "audio-attachment-upload-preview",
278
+ __self: _this,
279
+ __source: {
280
+ fileName: _jsxFileName,
281
+ lineNumber: 233,
282
+ columnNumber: 15
283
+ }
284
+ })) : _react["default"].createElement(_reactNative.View, {
206
285
  style: [styles.fileContainer, index === fileUploads.length - 1 ? {
207
286
  marginBottom: 0
208
287
  } : {}, {
@@ -212,32 +291,40 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
212
291
  __self: _this,
213
292
  __source: {
214
293
  fileName: _jsxFileName,
215
- lineNumber: 161,
216
- columnNumber: 11
294
+ lineNumber: 243,
295
+ columnNumber: 13
217
296
  }
218
297
  }, _react["default"].createElement(_reactNative.View, {
219
298
  style: [styles.fileContentContainer, fileContentContainer],
220
299
  __self: _this,
221
300
  __source: {
222
301
  fileName: _jsxFileName,
223
- lineNumber: 176,
224
- columnNumber: 13
302
+ lineNumber: 258,
303
+ columnNumber: 15
304
+ }
305
+ }, _react["default"].createElement(_reactNative.View, {
306
+ style: styles.fileIcon,
307
+ __self: _this,
308
+ __source: {
309
+ fileName: _jsxFileName,
310
+ lineNumber: 259,
311
+ columnNumber: 17
225
312
  }
226
313
  }, _react["default"].createElement(FileAttachmentIcon, {
227
314
  mimeType: item.file.type,
228
315
  __self: _this,
229
316
  __source: {
230
317
  fileName: _jsxFileName,
231
- lineNumber: 177,
232
- columnNumber: 15
318
+ lineNumber: 260,
319
+ columnNumber: 19
233
320
  }
234
- }), _react["default"].createElement(_reactNative.View, {
321
+ })), _react["default"].createElement(_reactNative.View, {
235
322
  style: [styles.fileTextContainer, fileTextContainer],
236
323
  __self: _this,
237
324
  __source: {
238
325
  fileName: _jsxFileName,
239
- lineNumber: 178,
240
- columnNumber: 15
326
+ lineNumber: 262,
327
+ columnNumber: 17
241
328
  }
242
329
  }, _react["default"].createElement(_reactNative.Text, {
243
330
  numberOfLines: 1,
@@ -252,37 +339,59 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
252
339
  __self: _this,
253
340
  __source: {
254
341
  fileName: _jsxFileName,
255
- lineNumber: 179,
256
- columnNumber: 17
342
+ lineNumber: 263,
343
+ columnNumber: 19
257
344
  }
258
- }, item.file.name || ''), indicatorType !== null && _react["default"].createElement(UnsupportedFileTypeOrFileSizeIndicator, {
345
+ }, item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)), indicatorType !== null && _react["default"].createElement(UnsupportedFileTypeOrFileSizeIndicator, {
259
346
  indicatorType: indicatorType,
260
347
  item: item,
261
348
  __self: _this,
262
349
  __source: {
263
350
  fileName: _jsxFileName,
264
- lineNumber: 199,
265
- columnNumber: 19
351
+ lineNumber: 283,
352
+ columnNumber: 21
353
+ }
354
+ })))), _react["default"].createElement(_reactNative.TouchableOpacity, {
355
+ onPress: function onPress() {
356
+ removeFile(item.id);
357
+ },
358
+ style: [styles.dismiss, {
359
+ backgroundColor: grey_gainsboro
360
+ }, dismiss],
361
+ testID: "remove-file-upload-preview",
362
+ __self: _this,
363
+ __source: {
364
+ fileName: _jsxFileName,
365
+ lineNumber: 292,
366
+ columnNumber: 11
367
+ }
368
+ }, _react["default"].createElement(_Close.Close, {
369
+ __self: _this,
370
+ __source: {
371
+ fileName: _jsxFileName,
372
+ lineNumber: 299,
373
+ columnNumber: 13
266
374
  }
267
- }))))), _react["default"].createElement(_reactNative.TouchableOpacity, {
375
+ }))), _react["default"].createElement(_reactNative.TouchableOpacity, {
268
376
  onPress: function onPress() {
269
377
  removeFile(item.id);
270
378
  },
271
379
  style: [styles.dismiss, {
272
- backgroundColor: overlay
380
+ backgroundColor: grey_gainsboro
273
381
  }, dismiss],
274
382
  testID: "remove-file-upload-preview",
275
383
  __self: _this,
276
384
  __source: {
277
385
  fileName: _jsxFileName,
278
- lineNumber: 208,
386
+ lineNumber: 302,
279
387
  columnNumber: 9
280
388
  }
281
389
  }, _react["default"].createElement(_Close.Close, {
390
+ pathFill: grey_dark,
282
391
  __self: _this,
283
392
  __source: {
284
393
  fileName: _jsxFileName,
285
- lineNumber: 215,
394
+ lineNumber: 309,
286
395
  columnNumber: 11
287
396
  }
288
397
  })));
@@ -308,7 +417,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
308
417
  };
309
418
  },
310
419
  keyExtractor: function keyExtractor(item) {
311
- return item.id;
420
+ return "" + item.id;
312
421
  },
313
422
  onLayout: function onLayout(_ref3) {
314
423
  var width = _ref3.nativeEvent.layout.width;
@@ -320,7 +429,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
320
429
  __self: _this,
321
430
  __source: {
322
431
  fileName: _jsxFileName,
323
- lineNumber: 230,
432
+ lineNumber: 324,
324
433
  columnNumber: 5
325
434
  }
326
435
  }) : null;
@@ -330,7 +439,7 @@ var areEqual = function areEqual(prevProps, nextProps) {
330
439
  var prevFileUploads = prevProps.fileUploads;
331
440
  var nextFileUploads = nextProps.fileUploads;
332
441
  return prevFileUploads.length === nextFileUploads.length && prevFileUploads.every(function (prevFileUpload, index) {
333
- return prevFileUpload.state === nextFileUploads[index].state;
442
+ return prevFileUpload.state === nextFileUploads[index].state && prevFileUpload.paused === nextFileUploads[index].paused && prevFileUpload.progress === nextFileUploads[index].progress && prevFileUpload.duration === nextFileUploads[index].duration;
334
443
  });
335
444
  };
336
445
 
@@ -338,23 +447,27 @@ var MemoizedFileUploadPreview = _react["default"].memo(FileUploadPreviewWithCont
338
447
 
339
448
  var FileUploadPreview = function FileUploadPreview(props) {
340
449
  var _useMessageInputConte = (0, _MessageInputContext.useMessageInputContext)(),
450
+ AudioAttachmentUploadPreview = _useMessageInputConte.AudioAttachmentUploadPreview,
341
451
  fileUploads = _useMessageInputConte.fileUploads,
342
452
  removeFile = _useMessageInputConte.removeFile,
453
+ setFileUploads = _useMessageInputConte.setFileUploads,
343
454
  uploadFile = _useMessageInputConte.uploadFile;
344
455
 
345
456
  var _useMessagesContext = (0, _MessagesContext.useMessagesContext)(),
346
457
  FileAttachmentIcon = _useMessagesContext.FileAttachmentIcon;
347
458
 
348
459
  return _react["default"].createElement(MemoizedFileUploadPreview, (0, _extends2["default"])({
460
+ AudioAttachmentUploadPreview: AudioAttachmentUploadPreview,
349
461
  FileAttachmentIcon: FileAttachmentIcon,
350
462
  fileUploads: fileUploads,
351
463
  removeFile: removeFile,
464
+ setFileUploads: setFileUploads,
352
465
  uploadFile: uploadFile
353
466
  }, props, {
354
467
  __self: _this,
355
468
  __source: {
356
469
  fileName: _jsxFileName,
357
- lineNumber: 290,
470
+ lineNumber: 388,
358
471
  columnNumber: 5
359
472
  }
360
473
  }));
@@ -1 +1 @@
1
- {"version":3,"sources":["FileUploadPreview.tsx"],"names":["FILE_PREVIEW_HEIGHT","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","padding","fileContentContainer","filenameText","fontSize","fontWeight","paddingHorizontal","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","unsupportedFile","paddingLeft","unsupportedFileText","marginHorizontal","warningIconStyle","marginTop","UnsupportedFileTypeOrFileSizeIndicator","indicatorType","item","theme","colors","accent_red","grey","messageInput","fileUploadPreview","t","ProgressIndicatorTypes","NOT_SUPPORTED","color","file","duration","size","FileUploadPreviewWithContext","props","FileAttachmentIcon","fileUploads","removeFile","uploadFile","flatListRef","flatListWidth","setFlatListWidth","black","grey_whisper","renderItem","index","state","newFile","length","borderColor","type","I18nManager","isRTL","writingDirection","name","id","backgroundColor","fileUploadsLength","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","prevFileUploads","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","displayName"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AAKA;;AAIA;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;;AAEA,IAAMA,mBAAmB,GAAG,EAA5B;AACA,IAAMC,iBAAiB,GAAG,EAA1B;;AAEA,IAAMC,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,YAAY,EAAE,EADP;AAEPC,IAAAA,MAAM,EAAE,EAFD;AAGPC,IAAAA,QAAQ,EAAE,UAHH;AAIPC,IAAAA,KAAK,EAAE,EAJA;AAKPC,IAAAA,GAAG,EAAE,CALE;AAMPC,IAAAA,KAAK,EAAE;AANA,GADsB;AAS/BC,EAAAA,aAAa,EAAE;AACbN,IAAAA,YAAY,EAAE,EADD;AAEbO,IAAAA,WAAW,EAAE,CAFA;AAGbC,IAAAA,aAAa,EAAE,KAHF;AAIbP,IAAAA,MAAM,EAAEP,mBAJK;AAKbe,IAAAA,cAAc,EAAE,eALH;AAMbC,IAAAA,YAAY,EAAE,CAND;AAObC,IAAAA,OAAO,EAAE;AAPI,GATgB;AAkB/BC,EAAAA,oBAAoB,EAAE;AAAEJ,IAAAA,aAAa,EAAE;AAAjB,GAlBS;AAmB/BK,EAAAA,YAAY,EAAE;AACZC,IAAAA,QAAQ,EAAE,EADE;AAEZC,IAAAA,UAAU,EAAE,MAFA;AAGZC,IAAAA,iBAAiB,EAAE;AAHP,GAnBiB;AAwB/BC,EAAAA,YAAY,EAAE;AACZH,IAAAA,QAAQ,EAAE,EADE;AAEZE,IAAAA,iBAAiB,EAAE;AAFP,GAxBiB;AA4B/BE,EAAAA,iBAAiB,EAAE;AACjBjB,IAAAA,MAAM,EAAE,MADS;AAEjBQ,IAAAA,cAAc,EAAE;AAFC,GA5BY;AAgC/BU,EAAAA,QAAQ,EAAE;AAAET,IAAAA,YAAY,EAAE,EAAhB;AAAoBU,IAAAA,SAAS,EAAE1B,mBAAmB,GAAG,GAAtB,GAA4B;AAA3D,GAhCqB;AAiC/B2B,EAAAA,OAAO,EAAE;AACPrB,IAAAA,YAAY,EAAE,EADP;AAEPsB,IAAAA,UAAU,EAAE,CAFL;AAGPC,IAAAA,WAAW,EAAE;AAHN,GAjCsB;AAsC/BC,EAAAA,eAAe,EAAE;AACfhB,IAAAA,aAAa,EAAE,KADA;AAEfiB,IAAAA,WAAW,EAAE;AAFE,GAtCc;AA0C/BC,EAAAA,mBAAmB,EAAE;AACnBZ,IAAAA,QAAQ,EAAE,EADS;AAEnBa,IAAAA,gBAAgB,EAAE;AAFC,GA1CU;AA8C/BC,EAAAA,gBAAgB,EAAE;AAChB5B,IAAAA,YAAY,EAAE,EADE;AAEhB6B,IAAAA,SAAS,EAAE;AAFK;AA9Ca,CAAlB,CAAf;;AAoDA,IAAMC,sCAAsC,GAAG,SAAzCA,sCAAyC,OAMzC;AAAA,MALJC,aAKI,QALJA,aAKI;AAAA,MAJJC,IAII,QAJJA,IAII;;AACJ,kBAOI,6BAPJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,UAFd,yBAEcA,UAFd;AAAA,MAE0BC,IAF1B,yBAE0BA,IAF1B;AAAA,MAI2BnB,YAJ3B,mBAGIoB,YAHJ,CAIMC,iBAJN,CAI2BrB,YAJ3B;;AASA,8BAAc,gDAAd;AAAA,MAAQsB,CAAR,yBAAQA,CAAR;;AACA,SAAOR,aAAa,KAAKS,8BAAuBC,aAAzC,GACL,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE7C,MAAM,CAAC4B,eAApB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,gBAAD;AACE,IAAA,MAAM,EAAE7B,iBADV;AAEE,IAAA,QAAQ,EAAEwC,UAFZ;AAGE,IAAA,KAAK,EAAEvC,MAAM,CAACgC,gBAHhB;AAIE,IAAA,KAAK,EAAEjC,iBAJT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,EAOE,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACC,MAAM,CAAC8B,mBAAR,EAA6B;AAAEgB,MAAAA,KAAK,EAAEN;AAAT,KAA7B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGG,CAAC,CAAC,yBAAD,CADJ,CAPF,CADK,GAaL,gCAAC,oDAAD;AAA2B,IAAA,KAAK,EAAE,CAAC3C,MAAM,CAACqB,YAAR,EAAsB;AAAEyB,MAAAA,KAAK,EAAEN;AAAT,KAAtB,EAAuCnB,YAAvC,CAAlC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGe,IAAI,CAACW,IAAL,CAAUC,QAAV,IAAsB,4CAAuBZ,IAAI,CAACW,IAAL,CAAUE,IAAjC,CADzB,CAbF;AAiBD,CAlCD;;AA4CA,IAAMC,4BAA4B,GAAG,SAA/BA,4BAA+B,CAGnCC,KAHmC,EAIhC;AACH,MAAQC,kBAAR,GAAoED,KAApE,CAAQC,kBAAR;AAAA,MAA4BC,WAA5B,GAAoEF,KAApE,CAA4BE,WAA5B;AAAA,MAAyCC,UAAzC,GAAoEH,KAApE,CAAyCG,UAAzC;AAAA,MAAqDC,UAArD,GAAoEJ,KAApE,CAAqDI,UAArD;AAEA,MAAMC,WAAW,GAAG,mBAAoC,IAApC,CAApB;;AACA,kBAA0C,qBAAS,CAAT,CAA1C;AAAA;AAAA,MAAOC,aAAP;AAAA,MAAsBC,gBAAtB;;AAEA,mBAcI,6BAdJ;AAAA,oCACErB,KADF;AAAA,+CAEIC,MAFJ;AAAA,MAEcqB,KAFd,yBAEcA,KAFd;AAAA,MAEqBC,YAFrB,yBAEqBA,YAFrB;AAAA,MAEmCnC,OAFnC,yBAEmCA,OAFnC;AAAA,+CAGIgB,YAHJ,CAIMC,iBAJN;AAAA,MAKQvC,OALR,yBAKQA,OALR;AAAA,MAMQO,aANR,yBAMQA,aANR;AAAA,MAOQM,oBAPR,yBAOQA,oBAPR;AAAA,MAQQC,YARR,yBAQQA,YARR;AAAA,MASQK,iBATR,yBASQA,iBATR;AAAA,MAUQC,QAVR,yBAUQA,QAVR;;AAgBA,MAAMsC,UAAU,GAAG,SAAbA,UAAa,QAA0D;AAAA,QAAvDC,KAAuD,SAAvDA,KAAuD;AAAA,QAAhD1B,IAAgD,SAAhDA,IAAgD;AAC3E,QAAMD,aAAa,GAAG,yCAA6BC,IAAI,CAAC2B,KAAlC,CAAtB;AAEA,WACE,kEACE,gCAAC,gDAAD;AACE,MAAA,MAAM,EAAE,kBAAM;AACZR,QAAAA,UAAU,CAAC;AAAES,UAAAA,OAAO,EAAE5B;AAAX,SAAD,CAAV;AACD,OAHH;AAIE,MAAA,KAAK,EAAEpC,MAAM,CAACyB,OAJhB;AAKE,MAAA,IAAI,EAAEU,aALR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAOE,gCAAC,iBAAD;AACE,MAAA,KAAK,EAAE,CACLnC,MAAM,CAACU,aADF,EAELoD,KAAK,KAAKT,WAAW,CAACY,MAAZ,GAAqB,CAA/B,GACI;AACEnD,QAAAA,YAAY,EAAE;AADhB,OADJ,GAII,EANC,EAOL;AACEoD,QAAAA,WAAW,EAAEN,YADf;AAEEnD,QAAAA,KAAK,EAAEgD,aAAa,GAAG;AAFzB,OAPK,EAWL/C,aAXK,CADT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAeE,gCAAC,iBAAD;AAAM,MAAA,KAAK,EAAE,CAACV,MAAM,CAACgB,oBAAR,EAA8BA,oBAA9B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,kBAAD;AAAoB,MAAA,QAAQ,EAAEoB,IAAI,CAACW,IAAL,CAAUoB,IAAxC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADF,EAEE,gCAAC,iBAAD;AAAM,MAAA,KAAK,EAAE,CAACnE,MAAM,CAACsB,iBAAR,EAA2BA,iBAA3B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,iBAAD;AACE,MAAA,aAAa,EAAE,CADjB;AAEE,MAAA,KAAK,EAAE,CACLtB,MAAM,CAACiB,YADF,EAEL;AACE6B,QAAAA,KAAK,EAAEa,KADT;AAEElD,QAAAA,KAAK,EACHgD,aAAa,GACb,EADA,GAEA,EAFA,GAGA,EAHA,GAIA;AAPJ,OAFK,EAWLW,yBAAYC,KAAZ,GAAoB;AAAEC,QAAAA,gBAAgB,EAAE;AAApB,OAApB,GAAkD;AAAEA,QAAAA,gBAAgB,EAAE;AAApB,OAX7C,EAYLrD,YAZK,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAiBGmB,IAAI,CAACW,IAAL,CAAUwB,IAAV,IAAkB,EAjBrB,CADF,EAoBGpC,aAAa,KAAK,IAAlB,IACC,gCAAC,sCAAD;AACE,MAAA,aAAa,EAAEA,aADjB;AAEE,MAAA,IAAI,EAAEC,IAFR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MArBJ,CAFF,CAfF,CAPF,CADF,EAuDE,gCAAC,6BAAD;AACE,MAAA,OAAO,EAAE,mBAAM;AACbkB,QAAAA,UAAU,CAAClB,IAAI,CAACoC,EAAN,CAAV;AACD,OAHH;AAIE,MAAA,KAAK,EAAE,CAACxE,MAAM,CAACG,OAAR,EAAiB;AAAEsE,QAAAA,eAAe,EAAEhD;AAAnB,OAAjB,EAA+CtB,OAA/C,CAJT;AAKE,MAAA,MAAM,EAAC,4BALT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAOE,gCAAC,YAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAPF,CAvDF,CADF;AAmED,GAtED;;AAwEA,MAAMuE,iBAAiB,GAAGrB,WAAW,CAACY,MAAtC;AAEA,wBAAU,YAAM;AACd,QAAIS,iBAAiB,IAAIlB,WAAW,CAACmB,OAArC,EAA8C;AAC5CC,MAAAA,UAAU,CAAC;AAAA;;AAAA,uCAAMpB,WAAW,CAACmB,OAAlB,qBAAM,qBAAqBE,WAArB,EAAN;AAAA,OAAD,EAA2C,CAA3C,CAAV;AACD;AACF,GAJD,EAIG,CAACH,iBAAD,CAJH;AAMA,SAAOA,iBAAiB,GACtB,gCAAC,qBAAD;AACE,IAAA,IAAI,EAAErB,WADR;AAEE,IAAA,aAAa,EAAE,uBAACyB,CAAD,EAAIhB,KAAJ;AAAA,aAAe;AAC5BA,QAAAA,KAAK,EAALA,KAD4B;AAE5BG,QAAAA,MAAM,EAAEnE,mBAAmB,GAAG,CAFF;AAG5BiF,QAAAA,MAAM,EAAE,CAACjF,mBAAmB,GAAG,CAAvB,IAA4BgE;AAHR,OAAf;AAAA,KAFjB;AAOE,IAAA,YAAY,EAAE,sBAAC1B,IAAD;AAAA,aAAUA,IAAI,CAACoC,EAAf;AAAA,KAPhB;AAQE,IAAA,QAAQ,EAAE,yBAIJ;AAAA,UAFQ/D,KAER,SAHJuE,WAGI,CAFFC,MAEE,CAFQxE,KAER;AACJiD,MAAAA,gBAAgB,CAACjD,KAAD,CAAhB;AACD,KAdH;AAeE,IAAA,GAAG,EAAE+C,WAfP;AAgBE,IAAA,UAAU,EAAEK,UAhBd;AAiBE,IAAA,KAAK,EAAE,CAAC7D,MAAM,CAACuB,QAAR,EAAkBA,QAAlB,CAjBT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADsB,GAoBpB,IApBJ;AAqBD,CA/HD;;AAiIA,IAAM2D,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AACH,MAAqBC,eAArB,GAAyCF,SAAzC,CAAQ9B,WAAR;AACA,MAAqBiC,eAArB,GAAyCF,SAAzC,CAAQ/B,WAAR;AAEA,SACEgC,eAAe,CAACpB,MAAhB,KAA2BqB,eAAe,CAACrB,MAA3C,IACAoB,eAAe,CAACE,KAAhB,CACE,UAACC,cAAD,EAAiB1B,KAAjB;AAAA,WAA2B0B,cAAc,CAACzB,KAAf,KAAyBuB,eAAe,CAACxB,KAAD,CAAf,CAAuBC,KAA3E;AAAA,GADF,CAFF;AAMD,CAbD;;AAeA,IAAM0B,yBAAyB,GAAGC,kBAAMC,IAAN,CAChCzC,4BADgC,EAEhCgC,QAFgC,CAAlC;;AAaO,IAAMU,iBAAiB,GAAG,SAApBA,iBAAoB,CAG/BzC,KAH+B,EAI5B;AACH,8BAAgD,kDAAhD;AAAA,MAAQE,WAAR,yBAAQA,WAAR;AAAA,MAAqBC,UAArB,yBAAqBA,UAArB;AAAA,MAAiCC,UAAjC,yBAAiCA,UAAjC;;AAEA,4BAA+B,0CAA/B;AAAA,MAAQH,kBAAR,uBAAQA,kBAAR;;AAEA,SACE,gCAAC,yBAAD;AACQA,IAAAA,kBAAkB,EAAlBA,kBADR;AAC4BC,IAAAA,WAAW,EAAXA,WAD5B;AACyCC,IAAAA,UAAU,EAAVA,UADzC;AACqDC,IAAAA,UAAU,EAAVA;AADrD,KAEMJ,KAFN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAMD,CAfM;;;AAiBPyC,iBAAiB,CAACC,WAAlB,GAAgC,oDAAhC","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, I18nManager, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n FileUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\nimport { WritingDirectionAwareText } from '../RTLComponents/WritingDirectionAwareText';\n\nconst FILE_PREVIEW_HEIGHT = 60;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 14,\n top: 4,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n padding: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingHorizontal: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingHorizontal: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n unsupportedFile: {\n flexDirection: 'row',\n paddingLeft: 10,\n },\n unsupportedFileText: {\n fontSize: 12,\n marginHorizontal: 4,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 2,\n },\n});\n\nconst UnsupportedFileTypeOrFileSizeIndicator = ({\n indicatorType,\n item,\n}: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes];\n item: FileUpload;\n}) => {\n const {\n theme: {\n colors: { accent_red, grey },\n messageInput: {\n fileUploadPreview: { fileSizeText },\n },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={styles.unsupportedFile}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.unsupportedFileText, { color: grey }]}>\n {t('File type not supported')}\n </Text>\n </View>\n ) : (\n <WritingDirectionAwareText style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {item.file.duration || getFileSizeDisplayText(item.file.size)}\n </WritingDirectionAwareText>\n );\n};\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { FileAttachmentIcon, fileUploads, removeFile, uploadFile } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n const {\n theme: {\n colors: { black, grey_whisper, overlay },\n messageInput: {\n fileUploadPreview: {\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n style={styles.overlay}\n type={indicatorType}\n >\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <FileAttachmentIcon mimeType={item.file.type} />\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n I18nManager.isRTL ? { writingDirection: 'rtl' } : { writingDirection: 'ltr' },\n filenameText,\n ]}\n >\n {item.file.name || ''}\n </Text>\n {indicatorType !== null && (\n <UnsupportedFileTypeOrFileSizeIndicator\n indicatorType={indicatorType}\n item={item}\n />\n )}\n </View>\n </View>\n </View>\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: overlay }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close />\n </TouchableOpacity>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => item.id}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) => prevFileUpload.state === nextFileUploads[index].state,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { fileUploads, removeFile, uploadFile } = useMessageInputContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{ FileAttachmentIcon, fileUploads, removeFile, uploadFile }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"]}
1
+ {"version":3,"sources":["FileUploadPreview.tsx"],"names":["FILE_PREVIEW_HEIGHT","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","paddingLeft","paddingRight","fileContentContainer","fileIcon","alignItems","alignSelf","filenameText","fontSize","fontWeight","paddingHorizontal","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","unsupportedFile","unsupportedFileText","marginHorizontal","warningIconStyle","marginTop","UnsupportedFileTypeOrFileSizeIndicator","indicatorType","item","theme","colors","accent_red","grey","grey_dark","messageInput","fileUploadPreview","t","ProgressIndicatorTypes","NOT_SUPPORTED","color","file","duration","size","FileUploadPreviewWithContext","props","AudioAttachmentUploadPreview","FileAttachmentIcon","fileUploads","removeFile","setFileUploads","uploadFile","flatListRef","flatListWidth","setFlatListWidth","onLoad","index","prevFileUploads","map","fileUpload","id","onProgress","currentTime","hasEnd","progress","onPlayPause","status","paused","black","grey_gainsboro","grey_whisper","audioAttachmentFileContainer","renderItem","state","lastIndexOfDot","name","lastIndexOf","newFile","type","startsWith","FileState","UPLOADED","length","borderColor","I18nManager","isRTL","writingDirection","slice","backgroundColor","fileUploadsLength","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, I18nManager, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n FileUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport { isAudioPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { FileState, getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\nimport { WritingDirectionAwareText } from '../RTLComponents/WritingDirectionAwareText';\n\nconst FILE_PREVIEW_HEIGHT = 60;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 8,\n top: 8,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n paddingLeft: 8,\n paddingRight: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n fileIcon: {\n alignItems: 'center',\n alignSelf: 'center',\n justifyContent: 'center',\n },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingHorizontal: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingHorizontal: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n unsupportedFile: {\n flexDirection: 'row',\n paddingLeft: 10,\n },\n unsupportedFileText: {\n fontSize: 12,\n marginHorizontal: 4,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 2,\n },\n});\n\nconst UnsupportedFileTypeOrFileSizeIndicator = ({\n indicatorType,\n item,\n}: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes];\n item: FileUpload;\n}) => {\n const {\n theme: {\n colors: { accent_red, grey, grey_dark },\n messageInput: {\n fileUploadPreview: { fileSizeText },\n },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={styles.unsupportedFile}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.unsupportedFileText, { color: grey_dark }]}>\n {t('File type not supported')}\n </Text>\n </View>\n ) : (\n <WritingDirectionAwareText style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {item.file.duration || getFileSizeDisplayText(item.file.size)}\n </WritingDirectionAwareText>\n );\n};\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads' | 'AudioAttachmentUploadPreview'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n AudioAttachmentUploadPreview,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n // Handler triggered when an audio is loaded in the message input. The initial state is defined for the audio here and the duration is set.\n const onLoad = (index: string, duration: number) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n duration: fileUpload.id === index ? duration : fileUpload.duration,\n })),\n );\n };\n\n // The handler which is triggered when the audio progresses/ the thumb is dragged in the progress control. The progressed duration is set here.\n const onProgress = (index: string, currentTime?: number, hasEnd?: boolean) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n progress:\n fileUpload.id === index\n ? hasEnd\n ? 1\n : currentTime\n ? currentTime / (fileUpload.duration as number)\n : 0\n : fileUpload.progress,\n })),\n );\n };\n\n // The handler which controls or sets the paused/played state of the audio.\n const onPlayPause = (index: string, status?: boolean) => {\n if (status === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: fileUpload.id === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: true,\n })),\n );\n }\n };\n\n const {\n theme: {\n colors: { black, grey_dark, grey_gainsboro, grey_whisper },\n messageInput: {\n fileUploadPreview: {\n audioAttachmentFileContainer,\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n\n const lastIndexOfDot = item.file.name.lastIndexOf('.');\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n style={styles.overlay}\n type={indicatorType}\n >\n {item.file.type?.startsWith('audio/') && isAudioPackageAvailable() ? (\n <View\n style={[\n { marginBottom: item.state === FileState.UPLOADED ? 8 : 0 },\n audioAttachmentFileContainer,\n ]}\n >\n <AudioAttachmentUploadPreview\n index={index}\n item={item}\n onLoad={onLoad}\n onPlayPause={onPlayPause}\n onProgress={onProgress}\n testID='audio-attachment-upload-preview'\n />\n </View>\n ) : (\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <View style={styles.fileIcon}>\n <FileAttachmentIcon mimeType={item.file.type} />\n </View>\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n I18nManager.isRTL ? { writingDirection: 'rtl' } : { writingDirection: 'ltr' },\n filenameText,\n ]}\n >\n {item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)}\n </Text>\n {indicatorType !== null && (\n <UnsupportedFileTypeOrFileSizeIndicator\n indicatorType={indicatorType}\n item={item}\n />\n )}\n </View>\n </View>\n </View>\n )}\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: grey_gainsboro }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close />\n </TouchableOpacity>\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: grey_gainsboro }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close pathFill={grey_dark} />\n </TouchableOpacity>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => `${item.id}`}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) =>\n prevFileUpload.state === nextFileUploads[index].state &&\n prevFileUpload.paused === nextFileUploads[index].paused &&\n prevFileUpload.progress === nextFileUploads[index].progress &&\n prevFileUpload.duration === nextFileUploads[index].duration,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { AudioAttachmentUploadPreview, fileUploads, removeFile, setFileUploads, uploadFile } =\n useMessageInputContext<StreamChatGenerics>();\n const { FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{\n AudioAttachmentUploadPreview,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"]}
@@ -87,7 +87,9 @@ var ImageUploadPreviewWithContext = function ImageUploadPreviewWithContext(props
87
87
 
88
88
  var _useTheme = (0, _ThemeContext.useTheme)(),
89
89
  _useTheme$theme = _useTheme.theme,
90
- overlay = _useTheme$theme.colors.overlay,
90
+ _useTheme$theme$color = _useTheme$theme.colors,
91
+ overlay = _useTheme$theme$color.overlay,
92
+ white = _useTheme$theme$color.white,
91
93
  _useTheme$theme$messa = _useTheme$theme.messageInput.imageUploadPreview,
92
94
  dismiss = _useTheme$theme$messa.dismiss,
93
95
  flatList = _useTheme$theme$messa.flatList,
@@ -204,6 +206,7 @@ var ImageUploadPreviewWithContext = function ImageUploadPreviewWithContext(props
204
206
  columnNumber: 9
205
207
  }
206
208
  }, _react["default"].createElement(_Close.Close, {
209
+ pathFill: white,
207
210
  __self: _this,
208
211
  __source: {
209
212
  fileName: _jsxFileName,
@@ -1 +1 @@
1
- {"version":3,"sources":["ImageUploadPreview.tsx"],"names":["IMAGE_PREVIEW_SIZE","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","position","right","top","fileSizeText","fontSize","paddingHorizontal","flatList","paddingBottom","iconContainer","alignItems","flexDirection","justifyContent","itemContainer","height","marginLeft","unsupportedImage","bottom","marginHorizontal","upload","width","warningIconStyle","marginTop","warningText","color","ImageUploadPreviewWithContext","props","imageUploads","removeImage","uploadImage","theme","overlay","colors","messageInput","imageUploadPreview","UnsupportedImageTypeIndicator","indicatorType","accent_red","white","t","ProgressIndicatorTypes","NOT_SUPPORTED","backgroundColor","renderItem","index","item","state","itemMarginForIndex","length","marginRight","newImage","uri","file","url","id","_","offset","areEqual","prevProps","nextProps","prevImageUploads","nextImageUploads","every","prevImageUpload","MemoizedImageUploadPreviewWithContext","React","memo","ImageUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { FlatList, Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n ImageUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\n\nconst IMAGE_PREVIEW_SIZE = 100;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n position: 'absolute',\n right: 8,\n top: 8,\n },\n fileSizeText: {\n fontSize: 12,\n paddingHorizontal: 10,\n },\n flatList: { paddingBottom: 12 },\n iconContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'center',\n },\n itemContainer: {\n flexDirection: 'row',\n height: IMAGE_PREVIEW_SIZE,\n marginLeft: 8,\n },\n unsupportedImage: {\n borderRadius: 20,\n bottom: 8,\n flexDirection: 'row',\n marginHorizontal: 3,\n position: 'absolute',\n },\n upload: {\n borderRadius: 10,\n height: IMAGE_PREVIEW_SIZE,\n width: IMAGE_PREVIEW_SIZE,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 6,\n },\n warningText: {\n alignItems: 'center',\n color: 'black',\n fontSize: 10,\n justifyContent: 'center',\n marginHorizontal: 4,\n },\n});\n\ntype ImageUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'imageUploads' | 'removeImage' | 'uploadImage'\n>;\n\nexport type ImageUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ImageUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\ntype ImageUploadPreviewItem = { index: number; item: ImageUpload };\n\nconst ImageUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { imageUploads, removeImage, uploadImage } = props;\n\n const {\n theme: {\n colors: { overlay },\n messageInput: {\n imageUploadPreview: { dismiss, flatList, itemContainer, upload },\n },\n },\n } = useTheme();\n\n const UnsupportedImageTypeIndicator = ({\n indicatorType,\n }: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes] | null;\n }) => {\n const {\n theme: {\n colors: { accent_red, overlay, white },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={[styles.unsupportedImage, { backgroundColor: overlay }]}>\n <View style={[styles.iconContainer]}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.warningText, { color: white }]}>{t('Not supported')}</Text>\n </View>\n </View>\n ) : null;\n };\n\n const renderItem = ({ index, item }: ImageUploadPreviewItem) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n const itemMarginForIndex = index === imageUploads.length - 1 ? { marginRight: 8 } : {};\n\n return (\n <View style={[styles.itemContainer, itemMarginForIndex, itemContainer]}>\n <UploadProgressIndicator\n action={() => {\n uploadImage({ newImage: item });\n }}\n style={styles.upload}\n type={indicatorType}\n >\n <Image\n resizeMode='cover'\n source={{ uri: item.file.uri || item.url }}\n style={[styles.upload, upload]}\n />\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeImage(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: overlay }, dismiss]}\n testID='remove-image-upload-preview'\n >\n <Close />\n </TouchableOpacity>\n <UnsupportedImageTypeIndicator indicatorType={indicatorType} />\n </View>\n );\n };\n\n return imageUploads.length > 0 ? (\n <FlatList\n data={imageUploads}\n getItemLayout={(_, index) => ({\n index,\n length: IMAGE_PREVIEW_SIZE + 8,\n offset: (IMAGE_PREVIEW_SIZE + 8) * index,\n })}\n horizontal\n keyExtractor={(item) => item.id}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { imageUploads: prevImageUploads } = prevProps;\n const { imageUploads: nextImageUploads } = nextProps;\n\n return (\n prevImageUploads.length === nextImageUploads.length &&\n prevImageUploads.every(\n (prevImageUpload, index) => prevImageUpload.state === nextImageUploads[index].state,\n )\n );\n};\n\nconst MemoizedImageUploadPreviewWithContext = React.memo(\n ImageUploadPreviewWithContext,\n areEqual,\n) as typeof ImageUploadPreviewWithContext;\n\n/**\n * UI Component to preview the images set for upload\n */\nexport const ImageUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { imageUploads, removeImage, uploadImage } = useMessageInputContext<StreamChatGenerics>();\n\n return (\n <MemoizedImageUploadPreviewWithContext\n {...{ imageUploads, removeImage, uploadImage }}\n {...props}\n />\n );\n};\n\nImageUploadPreview.displayName = 'ImageUploadPreview{messageInput{imageUploadPreview}}';\n"]}
1
+ {"version":3,"sources":["ImageUploadPreview.tsx"],"names":["IMAGE_PREVIEW_SIZE","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","position","right","top","fileSizeText","fontSize","paddingHorizontal","flatList","paddingBottom","iconContainer","alignItems","flexDirection","justifyContent","itemContainer","height","marginLeft","unsupportedImage","bottom","marginHorizontal","upload","width","warningIconStyle","marginTop","warningText","color","ImageUploadPreviewWithContext","props","imageUploads","removeImage","uploadImage","theme","colors","overlay","white","messageInput","imageUploadPreview","UnsupportedImageTypeIndicator","indicatorType","accent_red","t","ProgressIndicatorTypes","NOT_SUPPORTED","backgroundColor","renderItem","index","item","state","itemMarginForIndex","length","marginRight","newImage","uri","file","url","id","_","offset","areEqual","prevProps","nextProps","prevImageUploads","nextImageUploads","every","prevImageUpload","MemoizedImageUploadPreviewWithContext","React","memo","ImageUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { FlatList, Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n ImageUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\n\nconst IMAGE_PREVIEW_SIZE = 100;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n position: 'absolute',\n right: 8,\n top: 8,\n },\n fileSizeText: {\n fontSize: 12,\n paddingHorizontal: 10,\n },\n flatList: { paddingBottom: 12 },\n iconContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'center',\n },\n itemContainer: {\n flexDirection: 'row',\n height: IMAGE_PREVIEW_SIZE,\n marginLeft: 8,\n },\n unsupportedImage: {\n borderRadius: 20,\n bottom: 8,\n flexDirection: 'row',\n marginHorizontal: 3,\n position: 'absolute',\n },\n upload: {\n borderRadius: 10,\n height: IMAGE_PREVIEW_SIZE,\n width: IMAGE_PREVIEW_SIZE,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 6,\n },\n warningText: {\n alignItems: 'center',\n color: 'black',\n fontSize: 10,\n justifyContent: 'center',\n marginHorizontal: 4,\n },\n});\n\ntype ImageUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'imageUploads' | 'removeImage' | 'uploadImage'\n>;\n\nexport type ImageUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ImageUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\ntype ImageUploadPreviewItem = { index: number; item: ImageUpload };\n\nconst ImageUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { imageUploads, removeImage, uploadImage } = props;\n\n const {\n theme: {\n colors: { overlay, white },\n messageInput: {\n imageUploadPreview: { dismiss, flatList, itemContainer, upload },\n },\n },\n } = useTheme();\n\n const UnsupportedImageTypeIndicator = ({\n indicatorType,\n }: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes] | null;\n }) => {\n const {\n theme: {\n colors: { accent_red, overlay, white },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={[styles.unsupportedImage, { backgroundColor: overlay }]}>\n <View style={[styles.iconContainer]}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.warningText, { color: white }]}>{t('Not supported')}</Text>\n </View>\n </View>\n ) : null;\n };\n\n const renderItem = ({ index, item }: ImageUploadPreviewItem) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n const itemMarginForIndex = index === imageUploads.length - 1 ? { marginRight: 8 } : {};\n\n return (\n <View style={[styles.itemContainer, itemMarginForIndex, itemContainer]}>\n <UploadProgressIndicator\n action={() => {\n uploadImage({ newImage: item });\n }}\n style={styles.upload}\n type={indicatorType}\n >\n <Image\n resizeMode='cover'\n source={{ uri: item.file.uri || item.url }}\n style={[styles.upload, upload]}\n />\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeImage(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: overlay }, dismiss]}\n testID='remove-image-upload-preview'\n >\n <Close pathFill={white} />\n </TouchableOpacity>\n <UnsupportedImageTypeIndicator indicatorType={indicatorType} />\n </View>\n );\n };\n\n return imageUploads.length > 0 ? (\n <FlatList\n data={imageUploads}\n getItemLayout={(_, index) => ({\n index,\n length: IMAGE_PREVIEW_SIZE + 8,\n offset: (IMAGE_PREVIEW_SIZE + 8) * index,\n })}\n horizontal\n keyExtractor={(item) => item.id}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { imageUploads: prevImageUploads } = prevProps;\n const { imageUploads: nextImageUploads } = nextProps;\n\n return (\n prevImageUploads.length === nextImageUploads.length &&\n prevImageUploads.every(\n (prevImageUpload, index) => prevImageUpload.state === nextImageUploads[index].state,\n )\n );\n};\n\nconst MemoizedImageUploadPreviewWithContext = React.memo(\n ImageUploadPreviewWithContext,\n areEqual,\n) as typeof ImageUploadPreviewWithContext;\n\n/**\n * UI Component to preview the images set for upload\n */\nexport const ImageUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { imageUploads, removeImage, uploadImage } = useMessageInputContext<StreamChatGenerics>();\n\n return (\n <MemoizedImageUploadPreviewWithContext\n {...{ imageUploads, removeImage, uploadImage }}\n {...props}\n />\n );\n};\n\nImageUploadPreview.displayName = 'ImageUploadPreview{messageInput{imageUploadPreview}}';\n"]}