stream-chat-react-native-core 4.11.1-beta.4 → 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 (190) 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 +4 -5
  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/ImageGallery/ImageGallery.js +37 -30
  18. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  19. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +5 -3
  20. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  21. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -6
  22. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  23. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +17 -14
  24. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  25. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js +1 -0
  26. package/lib/commonjs/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  27. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js +2 -1
  28. package/lib/commonjs/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  29. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +36 -18
  30. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  31. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +3 -1
  32. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  33. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +5 -4
  34. package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  35. package/lib/commonjs/components/Message/Message.js +8 -6
  36. package/lib/commonjs/components/Message/Message.js.map +1 -1
  37. package/lib/commonjs/components/MessageInput/AudioAttachmentUploadPreview.js +538 -0
  38. package/lib/commonjs/components/MessageInput/AudioAttachmentUploadPreview.js.map +1 -0
  39. package/lib/commonjs/components/MessageInput/FileUploadPreview.js +143 -32
  40. package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
  41. package/lib/{module/components/ImageGallery/components → commonjs/components/ProgressControl}/ProgressControl.js +37 -24
  42. package/lib/commonjs/components/ProgressControl/ProgressControl.js.map +1 -0
  43. package/lib/commonjs/components/index.js +26 -0
  44. package/lib/commonjs/components/index.js.map +1 -1
  45. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +5 -2
  46. package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  47. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -2
  48. package/lib/commonjs/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  49. package/lib/commonjs/contexts/themeContext/utils/theme.js +9 -0
  50. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  51. package/lib/commonjs/icons/Pause.js +2 -2
  52. package/lib/commonjs/icons/Pause.js.map +1 -1
  53. package/lib/commonjs/mock-builders/api/channelMocks.js +1 -0
  54. package/lib/commonjs/mock-builders/api/channelMocks.js.map +1 -1
  55. package/lib/commonjs/native.js +13 -5
  56. package/lib/commonjs/native.js.map +1 -1
  57. package/lib/commonjs/version.json +1 -1
  58. package/lib/module/components/Attachment/Gallery.js +2 -2
  59. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  60. package/lib/module/components/Attachment/{GallaryImage.js → GalleryImage.js} +3 -3
  61. package/lib/{commonjs/components/Attachment/GallaryImage.js.map → module/components/Attachment/GalleryImage.js.map} +1 -1
  62. package/lib/module/components/Attachment/Giphy.js +1 -1
  63. package/lib/module/components/Attachment/Giphy.js.map +1 -1
  64. package/lib/module/components/Attachment/VideoThumbnail.js +4 -5
  65. package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -1
  66. package/lib/module/components/Avatar/Avatar.js +1 -1
  67. package/lib/module/components/Avatar/Avatar.js.map +1 -1
  68. package/lib/module/components/Avatar/GroupAvatar.js +1 -1
  69. package/lib/module/components/Avatar/GroupAvatar.js.map +1 -1
  70. package/lib/module/components/Channel/Channel.js +18 -13
  71. package/lib/module/components/Channel/Channel.js.map +1 -1
  72. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js +2 -0
  73. package/lib/module/components/Channel/hooks/useCreateInputMessageInputContext.js.map +1 -1
  74. package/lib/module/components/ImageGallery/ImageGallery.js +37 -30
  75. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  76. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +5 -3
  77. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  78. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +10 -6
  79. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -1
  80. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +17 -14
  81. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  82. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js +1 -0
  83. package/lib/module/components/ImageGallery/components/ImageGalleryHeader.js.map +1 -1
  84. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js +2 -1
  85. package/lib/module/components/ImageGallery/components/ImageGalleryOverlay.js.map +1 -1
  86. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +36 -18
  87. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -1
  88. package/lib/module/components/ImageGallery/components/ImageGrid.js +3 -1
  89. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  90. package/lib/module/components/ImageGallery/components/ImageGridHandle.js +5 -4
  91. package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
  92. package/lib/module/components/Message/Message.js +8 -6
  93. package/lib/module/components/Message/Message.js.map +1 -1
  94. package/lib/module/components/MessageInput/AudioAttachmentUploadPreview.js +538 -0
  95. package/lib/module/components/MessageInput/AudioAttachmentUploadPreview.js.map +1 -0
  96. package/lib/module/components/MessageInput/FileUploadPreview.js +143 -32
  97. package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
  98. package/lib/{commonjs/components/ImageGallery/components → module/components/ProgressControl}/ProgressControl.js +37 -24
  99. package/lib/module/components/ProgressControl/ProgressControl.js.map +1 -0
  100. package/lib/module/components/index.js +26 -0
  101. package/lib/module/components/index.js.map +1 -1
  102. package/lib/module/contexts/messageInputContext/MessageInputContext.js +5 -2
  103. package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
  104. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js +7 -2
  105. package/lib/module/contexts/messageInputContext/hooks/useCreateMessageInputContext.js.map +1 -1
  106. package/lib/module/contexts/themeContext/utils/theme.js +9 -0
  107. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  108. package/lib/module/icons/Pause.js +2 -2
  109. package/lib/module/icons/Pause.js.map +1 -1
  110. package/lib/module/mock-builders/api/channelMocks.js +1 -0
  111. package/lib/module/mock-builders/api/channelMocks.js.map +1 -1
  112. package/lib/module/native.js +13 -5
  113. package/lib/module/native.js.map +1 -1
  114. package/lib/module/version.json +1 -1
  115. package/lib/typescript/components/Attachment/{GallaryImage.d.ts → GalleryImage.d.ts} +0 -0
  116. package/lib/typescript/components/Channel/hooks/useCreateInputMessageInputContext.d.ts +1 -1
  117. package/lib/typescript/components/ImageGallery/__tests__/AnimatedVideoGallery.test.d.ts +1 -0
  118. package/lib/typescript/components/ImageGallery/__tests__/ImageGallery.test.d.ts +1 -0
  119. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryFooter.test.d.ts +1 -0
  120. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryGrid.test.d.ts +1 -0
  121. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.d.ts +1 -0
  122. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryHeader.test.d.ts +1 -0
  123. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryOverlay.test.d.ts +1 -0
  124. package/lib/typescript/components/ImageGallery/__tests__/ImageGalleryVideoControl.test.d.ts +1 -0
  125. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryImage.d.ts +1 -0
  126. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts +2 -3
  127. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +2 -1
  128. package/lib/typescript/components/ImageGallery/components/ImageGrid.d.ts +2 -3
  129. package/lib/typescript/components/Message/hooks/useMessageActionHandlers.d.ts +1 -1
  130. package/lib/typescript/components/Message/hooks/useMessageActions.d.ts +1 -1
  131. package/lib/typescript/components/MessageInput/AudioAttachmentUploadPreview.d.ts +26 -0
  132. package/lib/typescript/components/MessageInput/FileUploadPreview.d.ts +1 -1
  133. package/lib/typescript/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.d.ts +1 -0
  134. package/lib/typescript/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.d.ts +1 -0
  135. package/lib/typescript/components/ProgressControl/ProgressControl.d.ts +11 -0
  136. package/lib/typescript/components/index.d.ts +2 -0
  137. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +1 -1
  138. package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +7 -1
  139. package/lib/typescript/contexts/messageInputContext/hooks/useCreateMessageInputContext.d.ts +1 -1
  140. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +9 -0
  141. package/lib/typescript/native.d.ts +59 -2
  142. package/package.json +1 -1
  143. package/src/components/Attachment/Gallery.tsx +1 -1
  144. package/src/components/Attachment/{GallaryImage.tsx → GalleryImage.tsx} +1 -1
  145. package/src/components/Attachment/Giphy.tsx +1 -1
  146. package/src/components/Attachment/VideoThumbnail.tsx +1 -2
  147. package/src/components/Attachment/__tests__/Gallery.test.js +6 -6
  148. package/src/components/Attachment/__tests__/Giphy.test.js +4 -4
  149. package/src/components/Avatar/Avatar.tsx +1 -1
  150. package/src/components/Avatar/GroupAvatar.tsx +1 -1
  151. package/src/components/Channel/Channel.tsx +3 -0
  152. package/src/components/Channel/hooks/useCreateInputMessageInputContext.ts +2 -0
  153. package/src/components/ImageGallery/ImageGallery.tsx +21 -11
  154. package/src/components/ImageGallery/__tests__/AnimatedVideoGallery.test.tsx +241 -0
  155. package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +192 -0
  156. package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +190 -0
  157. package/src/components/ImageGallery/__tests__/ImageGalleryGrid.test.tsx +98 -0
  158. package/src/components/ImageGallery/__tests__/ImageGalleryGridHandle.test.tsx +79 -0
  159. package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +172 -0
  160. package/src/components/ImageGallery/__tests__/ImageGalleryOverlay.test.tsx +94 -0
  161. package/src/components/ImageGallery/__tests__/ImageGalleryVideoControl.test.tsx +84 -0
  162. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +3 -0
  163. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +11 -3
  164. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +9 -2
  165. package/src/components/ImageGallery/components/ImageGalleryHeader.tsx +1 -1
  166. package/src/components/ImageGallery/components/ImageGalleryOverlay.tsx +6 -1
  167. package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +22 -9
  168. package/src/components/ImageGallery/components/ImageGrid.tsx +19 -17
  169. package/src/components/ImageGallery/components/ImageGridHandle.tsx +4 -1
  170. package/src/components/Message/Message.tsx +2 -1
  171. package/src/components/Message/MessageSimple/__tests__/MessageContent.test.js +9 -3
  172. package/src/components/Message/MessageSimple/__tests__/__snapshots__/MessageAvatar.test.js.snap +1 -1
  173. package/src/components/MessageInput/AudioAttachmentUploadPreview.tsx +362 -0
  174. package/src/components/MessageInput/FileUploadPreview.tsx +162 -57
  175. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewExpo.test.tsx +199 -0
  176. package/src/components/MessageInput/__tests__/AudioAttachmentUploadPreviewNative.test.tsx +215 -0
  177. package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +64 -0
  178. package/src/components/{ImageGallery/components → ProgressControl}/ProgressControl.tsx +37 -19
  179. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +4 -4
  180. package/src/components/index.ts +3 -0
  181. package/src/contexts/messageInputContext/MessageInputContext.tsx +13 -0
  182. package/src/contexts/messageInputContext/hooks/useCreateMessageInputContext.ts +5 -1
  183. package/src/contexts/themeContext/utils/theme.ts +15 -0
  184. package/src/icons/Pause.tsx +2 -2
  185. package/src/mock-builders/api/channelMocks.tsx +1 -0
  186. package/src/native.ts +67 -7
  187. package/src/version.json +1 -1
  188. package/lib/commonjs/components/ImageGallery/components/ProgressControl.js.map +0 -1
  189. package/lib/module/components/ImageGallery/components/ProgressControl.js.map +0 -1
  190. 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,6 +181,46 @@ 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,
@@ -178,6 +229,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
178
229
  grey_gainsboro = _useTheme2$theme$colo.grey_gainsboro,
179
230
  grey_whisper = _useTheme2$theme$colo.grey_whisper,
180
231
  _useTheme2$theme$mess = _useTheme2$theme.messageInput.fileUploadPreview,
232
+ audioAttachmentFileContainer = _useTheme2$theme$mess.audioAttachmentFileContainer,
181
233
  dismiss = _useTheme2$theme$mess.dismiss,
182
234
  fileContainer = _useTheme2$theme$mess.fileContainer,
183
235
  fileContentContainer = _useTheme2$theme$mess.fileContentContainer,
@@ -186,9 +238,12 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
186
238
  flatList = _useTheme2$theme$mess.flatList;
187
239
 
188
240
  var renderItem = function renderItem(_ref2) {
241
+ var _item$file$type;
242
+
189
243
  var index = _ref2.index,
190
244
  item = _ref2.item;
191
245
  var indicatorType = (0, _utils.getIndicatorTypeForFileState)(item.state);
246
+ var lastIndexOfDot = item.file.name.lastIndexOf('.');
192
247
  return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_UploadProgressIndicator.UploadProgressIndicator, {
193
248
  action: function action() {
194
249
  uploadFile({
@@ -200,10 +255,33 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
200
255
  __self: _this,
201
256
  __source: {
202
257
  fileName: _jsxFileName,
203
- lineNumber: 154,
258
+ lineNumber: 219,
204
259
  columnNumber: 9
205
260
  }
206
- }, _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, {
207
285
  style: [styles.fileContainer, index === fileUploads.length - 1 ? {
208
286
  marginBottom: 0
209
287
  } : {}, {
@@ -213,32 +291,40 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
213
291
  __self: _this,
214
292
  __source: {
215
293
  fileName: _jsxFileName,
216
- lineNumber: 161,
217
- columnNumber: 11
294
+ lineNumber: 243,
295
+ columnNumber: 13
218
296
  }
219
297
  }, _react["default"].createElement(_reactNative.View, {
220
298
  style: [styles.fileContentContainer, fileContentContainer],
221
299
  __self: _this,
222
300
  __source: {
223
301
  fileName: _jsxFileName,
224
- lineNumber: 176,
225
- 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
226
312
  }
227
313
  }, _react["default"].createElement(FileAttachmentIcon, {
228
314
  mimeType: item.file.type,
229
315
  __self: _this,
230
316
  __source: {
231
317
  fileName: _jsxFileName,
232
- lineNumber: 177,
233
- columnNumber: 15
318
+ lineNumber: 260,
319
+ columnNumber: 19
234
320
  }
235
- }), _react["default"].createElement(_reactNative.View, {
321
+ })), _react["default"].createElement(_reactNative.View, {
236
322
  style: [styles.fileTextContainer, fileTextContainer],
237
323
  __self: _this,
238
324
  __source: {
239
325
  fileName: _jsxFileName,
240
- lineNumber: 178,
241
- columnNumber: 15
326
+ lineNumber: 262,
327
+ columnNumber: 17
242
328
  }
243
329
  }, _react["default"].createElement(_reactNative.Text, {
244
330
  numberOfLines: 1,
@@ -253,19 +339,40 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
253
339
  __self: _this,
254
340
  __source: {
255
341
  fileName: _jsxFileName,
256
- lineNumber: 179,
257
- columnNumber: 17
342
+ lineNumber: 263,
343
+ columnNumber: 19
258
344
  }
259
- }, 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, {
260
346
  indicatorType: indicatorType,
261
347
  item: item,
262
348
  __self: _this,
263
349
  __source: {
264
350
  fileName: _jsxFileName,
265
- lineNumber: 199,
266
- 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
267
374
  }
268
- }))))), _react["default"].createElement(_reactNative.TouchableOpacity, {
375
+ }))), _react["default"].createElement(_reactNative.TouchableOpacity, {
269
376
  onPress: function onPress() {
270
377
  removeFile(item.id);
271
378
  },
@@ -276,7 +383,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
276
383
  __self: _this,
277
384
  __source: {
278
385
  fileName: _jsxFileName,
279
- lineNumber: 208,
386
+ lineNumber: 302,
280
387
  columnNumber: 9
281
388
  }
282
389
  }, _react["default"].createElement(_Close.Close, {
@@ -284,7 +391,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
284
391
  __self: _this,
285
392
  __source: {
286
393
  fileName: _jsxFileName,
287
- lineNumber: 215,
394
+ lineNumber: 309,
288
395
  columnNumber: 11
289
396
  }
290
397
  })));
@@ -310,7 +417,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
310
417
  };
311
418
  },
312
419
  keyExtractor: function keyExtractor(item) {
313
- return item.id;
420
+ return "" + item.id;
314
421
  },
315
422
  onLayout: function onLayout(_ref3) {
316
423
  var width = _ref3.nativeEvent.layout.width;
@@ -322,7 +429,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
322
429
  __self: _this,
323
430
  __source: {
324
431
  fileName: _jsxFileName,
325
- lineNumber: 230,
432
+ lineNumber: 324,
326
433
  columnNumber: 5
327
434
  }
328
435
  }) : null;
@@ -332,7 +439,7 @@ var areEqual = function areEqual(prevProps, nextProps) {
332
439
  var prevFileUploads = prevProps.fileUploads;
333
440
  var nextFileUploads = nextProps.fileUploads;
334
441
  return prevFileUploads.length === nextFileUploads.length && prevFileUploads.every(function (prevFileUpload, index) {
335
- 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;
336
443
  });
337
444
  };
338
445
 
@@ -340,23 +447,27 @@ var MemoizedFileUploadPreview = _react["default"].memo(FileUploadPreviewWithCont
340
447
 
341
448
  var FileUploadPreview = function FileUploadPreview(props) {
342
449
  var _useMessageInputConte = (0, _MessageInputContext.useMessageInputContext)(),
450
+ AudioAttachmentUploadPreview = _useMessageInputConte.AudioAttachmentUploadPreview,
343
451
  fileUploads = _useMessageInputConte.fileUploads,
344
452
  removeFile = _useMessageInputConte.removeFile,
453
+ setFileUploads = _useMessageInputConte.setFileUploads,
345
454
  uploadFile = _useMessageInputConte.uploadFile;
346
455
 
347
456
  var _useMessagesContext = (0, _MessagesContext.useMessagesContext)(),
348
457
  FileAttachmentIcon = _useMessagesContext.FileAttachmentIcon;
349
458
 
350
459
  return _react["default"].createElement(MemoizedFileUploadPreview, (0, _extends2["default"])({
460
+ AudioAttachmentUploadPreview: AudioAttachmentUploadPreview,
351
461
  FileAttachmentIcon: FileAttachmentIcon,
352
462
  fileUploads: fileUploads,
353
463
  removeFile: removeFile,
464
+ setFileUploads: setFileUploads,
354
465
  uploadFile: uploadFile
355
466
  }, props, {
356
467
  __self: _this,
357
468
  __source: {
358
469
  fileName: _jsxFileName,
359
- lineNumber: 290,
470
+ lineNumber: 388,
360
471
  columnNumber: 5
361
472
  }
362
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_dark","grey_gainsboro","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":"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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 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_dark, grey_gainsboro, grey_whisper },\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: 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) => 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"]}
@@ -13,58 +13,69 @@ var _reactNativeGestureHandler = require("react-native-gesture-handler");
13
13
 
14
14
  var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
15
15
 
16
- var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
16
+ var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
17
17
 
18
18
  var _this = this,
19
- _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/ImageGallery/components/ProgressControl.tsx";
19
+ _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/ProgressControl/ProgressControl.tsx";
20
20
 
21
21
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
22
22
 
23
23
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
24
24
 
25
- var width = 180;
26
25
  var height = 2;
27
26
 
28
27
  var styles = _reactNative.StyleSheet.create({
29
28
  containerStyle: {
30
29
  borderRadius: 50,
31
- height: height,
32
- width: width
30
+ height: height
33
31
  },
34
32
  innerStyle: {
35
33
  height: height
36
34
  },
37
35
  progressControlThumbStyle: {
38
- backgroundColor: '#fff',
39
36
  borderRadius: 5,
37
+ elevation: 6,
40
38
  height: 20,
39
+ shadowOffset: {
40
+ height: 3,
41
+ width: 0
42
+ },
43
+ shadowOpacity: 0.27,
44
+ shadowRadius: 4.65,
41
45
  top: -11,
42
- width: 4
46
+ width: 5
43
47
  }
44
48
  });
45
49
 
46
50
  var ProgressControlThumb = function ProgressControlThumb() {
51
+ var _useTheme = (0, _ThemeContext.useTheme)(),
52
+ black = _useTheme.theme.colors.black;
53
+
47
54
  return _react["default"].createElement(_reactNative.View, {
48
- style: styles.progressControlThumbStyle,
55
+ style: [styles.progressControlThumbStyle, {
56
+ backgroundColor: '#ffffff',
57
+ shadowColor: black
58
+ }],
49
59
  __self: _this,
50
60
  __source: {
51
61
  fileName: _jsxFileName,
52
- lineNumber: 41,
53
- columnNumber: 36
62
+ lineNumber: 55,
63
+ columnNumber: 5
54
64
  }
55
65
  });
56
66
  };
57
67
 
58
68
  var ProgressControl = _react["default"].memo(function (props) {
59
69
  var duration = props.duration,
70
+ filledColor = props.filledColor,
60
71
  onPlayPause = props.onPlayPause,
61
72
  onProgressDrag = props.onProgressDrag,
62
- progress = props.progress;
73
+ progress = props.progress,
74
+ testID = props.testID,
75
+ width = props.width;
63
76
 
64
- var _useTheme = (0, _ThemeContext.useTheme)(),
65
- _useTheme$theme$color = _useTheme.theme.colors,
66
- grey_dark = _useTheme$theme$color.grey_dark,
67
- white_snow = _useTheme$theme$color.white_snow;
77
+ var _useTheme2 = (0, _ThemeContext.useTheme)(),
78
+ grey_dark = _useTheme2.theme.colors.grey_dark;
68
79
 
69
80
  var state = (0, _reactNativeReanimated.useSharedValue)(0);
70
81
  var translateX = (0, _reactNativeReanimated.useSharedValue)(0);
@@ -74,7 +85,7 @@ var ProgressControl = _react["default"].memo(function (props) {
74
85
  }, [progress]);
75
86
  var animatedStyles = (0, _reactNativeReanimated.useAnimatedStyle)(function () {
76
87
  return {
77
- backgroundColor: white_snow,
88
+ backgroundColor: filledColor,
78
89
  width: state.value
79
90
  };
80
91
  });
@@ -94,22 +105,23 @@ var ProgressControl = _react["default"].memo(function (props) {
94
105
  translateX.value = state.value;
95
106
  var dragFinishLocationInSeconds = state.value / width * duration;
96
107
  (0, _reactNativeReanimated.runOnJS)(onProgressDrag)(dragFinishLocationInSeconds);
97
- (0, _reactNativeReanimated.runOnJS)(onPlayPause)();
108
+ (0, _reactNativeReanimated.runOnJS)(onPlayPause)(false);
98
109
  },
99
110
  onStart: function onStart() {
100
- (0, _reactNativeReanimated.runOnJS)(onPlayPause)();
111
+ (0, _reactNativeReanimated.runOnJS)(onPlayPause)(true);
101
112
  (0, _reactNativeReanimated.cancelAnimation)(translateX);
102
113
  state.value = translateX.value;
103
114
  }
104
115
  }, [duration]);
105
116
  return _react["default"].createElement(_reactNative.View, {
106
117
  style: [styles.containerStyle, {
107
- backgroundColor: grey_dark
118
+ backgroundColor: grey_dark,
119
+ width: width
108
120
  }],
109
121
  __self: _this,
110
122
  __source: {
111
123
  fileName: _jsxFileName,
112
- lineNumber: 91,
124
+ lineNumber: 109,
113
125
  columnNumber: 7
114
126
  }
115
127
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -117,16 +129,17 @@ var ProgressControl = _react["default"].memo(function (props) {
117
129
  __self: _this,
118
130
  __source: {
119
131
  fileName: _jsxFileName,
120
- lineNumber: 92,
132
+ lineNumber: 110,
121
133
  columnNumber: 9
122
134
  }
123
135
  }), _react["default"].createElement(_reactNativeGestureHandler.PanGestureHandler, {
124
136
  maxPointers: 1,
125
137
  onGestureEvent: onGestureEvent,
138
+ testID: testID,
126
139
  __self: _this,
127
140
  __source: {
128
141
  fileName: _jsxFileName,
129
- lineNumber: 94,
142
+ lineNumber: 112,
130
143
  columnNumber: 9
131
144
  }
132
145
  }, _react["default"].createElement(_reactNativeReanimated["default"].View, {
@@ -134,14 +147,14 @@ var ProgressControl = _react["default"].memo(function (props) {
134
147
  __self: _this,
135
148
  __source: {
136
149
  fileName: _jsxFileName,
137
- lineNumber: 95,
150
+ lineNumber: 113,
138
151
  columnNumber: 11
139
152
  }
140
153
  }, _react["default"].createElement(ProgressControlThumb, {
141
154
  __self: _this,
142
155
  __source: {
143
156
  fileName: _jsxFileName,
144
- lineNumber: 96,
157
+ lineNumber: 114,
145
158
  columnNumber: 13
146
159
  }
147
160
  }))));
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ProgressControl.tsx"],"names":["height","styles","StyleSheet","create","containerStyle","borderRadius","innerStyle","progressControlThumbStyle","elevation","shadowOffset","width","shadowOpacity","shadowRadius","top","ProgressControlThumb","black","theme","colors","backgroundColor","shadowColor","ProgressControl","React","memo","props","duration","filledColor","onPlayPause","onProgressDrag","progress","testID","grey_dark","state","translateX","value","animatedStyles","thumbStyles","transform","onGestureEvent","onActive","event","translationX","onFinish","dragFinishLocationInSeconds","onStart","prevProps","nextProps"],"mappings":"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","sourcesContent":["import React, { useEffect } from 'react';\nimport { StyleSheet, View } from 'react-native';\nimport { PanGestureHandler } from 'react-native-gesture-handler';\nimport Animated, {\n cancelAnimation,\n runOnJS,\n useAnimatedGestureHandler,\n useAnimatedStyle,\n useSharedValue,\n} from 'react-native-reanimated';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\n\nexport type ProgressControlProps = {\n duration: number;\n filledColor: string;\n onPlayPause: (status?: boolean) => void;\n onProgressDrag: (progress: number) => void;\n progress: number;\n testID: string;\n width: number;\n};\n\nconst height = 2;\nconst styles = StyleSheet.create({\n containerStyle: {\n borderRadius: 50,\n height,\n },\n innerStyle: {\n height,\n },\n progressControlThumbStyle: {\n borderRadius: 5,\n elevation: 6,\n height: 20,\n shadowOffset: {\n height: 3,\n width: 0,\n },\n shadowOpacity: 0.27,\n shadowRadius: 4.65,\n top: -11,\n width: 5,\n },\n});\n\nconst ProgressControlThumb = () => {\n const {\n theme: {\n colors: { black },\n },\n } = useTheme();\n return (\n <View\n style={[styles.progressControlThumbStyle, { backgroundColor: '#ffffff', shadowColor: black }]}\n />\n );\n};\n\nexport const ProgressControl: React.FC<ProgressControlProps> = React.memo(\n (props) => {\n const { duration, filledColor, onPlayPause, onProgressDrag, progress, testID, width } = props;\n const {\n theme: {\n colors: { grey_dark },\n },\n } = useTheme();\n\n const state = useSharedValue(0);\n const translateX = useSharedValue(0);\n\n useEffect(() => {\n state.value = progress * width;\n translateX.value = progress * width;\n }, [progress]);\n\n const animatedStyles = useAnimatedStyle(() => ({\n backgroundColor: filledColor,\n width: state.value,\n }));\n\n const thumbStyles = useAnimatedStyle(() => ({\n transform: [{ translateX: state.value }],\n }));\n\n const onGestureEvent = useAnimatedGestureHandler(\n {\n onActive: (event) => {\n state.value = translateX.value + event.translationX;\n if (state.value > width) state.value = width;\n else if (state.value < 0) state.value = 0;\n },\n onFinish: () => {\n translateX.value = state.value;\n const dragFinishLocationInSeconds = (state.value / width) * duration;\n runOnJS(onProgressDrag)(dragFinishLocationInSeconds);\n runOnJS(onPlayPause)(false);\n },\n onStart: () => {\n runOnJS(onPlayPause)(true);\n cancelAnimation(translateX);\n state.value = translateX.value;\n },\n },\n [duration],\n );\n return (\n <View style={[styles.containerStyle, { backgroundColor: grey_dark, width }]}>\n <Animated.View style={[styles.innerStyle, animatedStyles]} />\n\n <PanGestureHandler maxPointers={1} onGestureEvent={onGestureEvent} testID={testID}>\n <Animated.View style={[thumbStyles]}>\n <ProgressControlThumb />\n </Animated.View>\n </PanGestureHandler>\n </View>\n );\n },\n (prevProps, nextProps) => {\n if (prevProps.duration === nextProps.duration && prevProps.progress === nextProps.progress)\n return true;\n else return false;\n },\n);\n"]}