stream-chat-react-native-core 4.6.0 → 4.7.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/Attachment.js +22 -13
  2. package/lib/commonjs/components/Attachment/Attachment.js.map +1 -1
  3. package/lib/commonjs/components/Attachment/Gallery.js +72 -37
  4. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  5. package/lib/commonjs/components/Attachment/VideoThumbnail.js +83 -0
  6. package/lib/commonjs/components/Attachment/VideoThumbnail.js.map +1 -0
  7. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js +1 -1
  8. package/lib/commonjs/components/Attachment/hooks/useGoToURL.js.map +1 -1
  9. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js +1 -0
  10. package/lib/commonjs/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  11. package/lib/commonjs/components/Attachment/utils/getAspectRatio.js +5 -5
  12. package/lib/commonjs/components/Attachment/utils/getAspectRatio.js.map +1 -1
  13. package/lib/commonjs/components/Channel/Channel.js +19 -14
  14. package/lib/commonjs/components/Channel/Channel.js.map +1 -1
  15. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js +4 -2
  16. package/lib/commonjs/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  17. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js +43 -28
  18. package/lib/commonjs/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  19. package/lib/commonjs/components/ImageGallery/ImageGallery.js +167 -345
  20. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  21. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js +4 -4
  22. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  23. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js +225 -0
  24. package/lib/commonjs/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -0
  25. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js +102 -40
  26. package/lib/commonjs/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  27. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js +145 -0
  28. package/lib/commonjs/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -0
  29. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +31 -34
  30. package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
  31. package/lib/commonjs/components/ImageGallery/components/ProgressControl.js +153 -0
  32. package/lib/commonjs/components/ImageGallery/components/ProgressControl.js.map +1 -0
  33. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js +373 -0
  34. package/lib/commonjs/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -0
  35. package/lib/commonjs/components/Message/Message.js +23 -13
  36. package/lib/commonjs/components/Message/Message.js.map +1 -1
  37. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js +58 -33
  38. package/lib/commonjs/components/Message/MessageSimple/MessageContent.js.map +1 -1
  39. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js +4 -2
  40. package/lib/commonjs/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  41. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js +25 -23
  42. package/lib/commonjs/components/MessageOverlay/MessageOverlay.js.map +1 -1
  43. package/lib/commonjs/components/Reply/Reply.js +32 -12
  44. package/lib/commonjs/components/Reply/Reply.js.map +1 -1
  45. package/lib/commonjs/components/Spinner/Spinner.js +12 -4
  46. package/lib/commonjs/components/Spinner/Spinner.js.map +1 -1
  47. package/lib/commonjs/components/index.js +26 -0
  48. package/lib/commonjs/components/index.js.map +1 -1
  49. package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
  50. package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
  51. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js +2 -2
  52. package/lib/commonjs/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  53. package/lib/commonjs/contexts/messagesContext/MessagesContext.js +2 -2
  54. package/lib/commonjs/contexts/messagesContext/MessagesContext.js.map +1 -1
  55. package/lib/commonjs/contexts/themeContext/utils/theme.js +10 -1
  56. package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
  57. package/lib/commonjs/icons/Pause.js +61 -0
  58. package/lib/commonjs/icons/Pause.js.map +1 -0
  59. package/lib/commonjs/icons/Play.js +42 -0
  60. package/lib/commonjs/icons/Play.js.map +1 -0
  61. package/lib/commonjs/icons/index.js +26 -0
  62. package/lib/commonjs/icons/index.js.map +1 -1
  63. package/lib/commonjs/mock-builders/api/queryMembers.js +98 -1
  64. package/lib/commonjs/mock-builders/api/queryMembers.js.map +1 -1
  65. package/lib/commonjs/native.js +7 -1
  66. package/lib/commonjs/native.js.map +1 -1
  67. package/lib/commonjs/utils/getUrlOfImageAttachment.js +1 -1
  68. package/lib/commonjs/utils/getUrlOfImageAttachment.js.map +1 -1
  69. package/lib/commonjs/version.json +1 -1
  70. package/lib/module/components/Attachment/Attachment.js +22 -13
  71. package/lib/module/components/Attachment/Attachment.js.map +1 -1
  72. package/lib/module/components/Attachment/Gallery.js +72 -37
  73. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  74. package/lib/module/components/Attachment/VideoThumbnail.js +83 -0
  75. package/lib/module/components/Attachment/VideoThumbnail.js.map +1 -0
  76. package/lib/module/components/Attachment/hooks/useGoToURL.js +1 -1
  77. package/lib/module/components/Attachment/hooks/useGoToURL.js.map +1 -1
  78. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js +1 -0
  79. package/lib/module/components/Attachment/utils/buildGallery/buildThumbnail.js.map +1 -1
  80. package/lib/module/components/Attachment/utils/getAspectRatio.js +5 -5
  81. package/lib/module/components/Attachment/utils/getAspectRatio.js.map +1 -1
  82. package/lib/module/components/Channel/Channel.js +19 -14
  83. package/lib/module/components/Channel/Channel.js.map +1 -1
  84. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js +4 -2
  85. package/lib/module/components/Channel/hooks/useCreateMessagesContext.js.map +1 -1
  86. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js +43 -28
  87. package/lib/module/components/ChannelPreview/hooks/useChannelPreviewDisplayName.js.map +1 -1
  88. package/lib/module/components/ImageGallery/ImageGallery.js +167 -345
  89. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  90. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js +4 -4
  91. package/lib/module/components/ImageGallery/components/AnimatedGalleryImage.js.map +1 -1
  92. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js +225 -0
  93. package/lib/module/components/ImageGallery/components/AnimatedGalleryVideo.js.map +1 -0
  94. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js +102 -40
  95. package/lib/module/components/ImageGallery/components/ImageGalleryFooter.js.map +1 -1
  96. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js +145 -0
  97. package/lib/module/components/ImageGallery/components/ImageGalleryVideoControl.js.map +1 -0
  98. package/lib/module/components/ImageGallery/components/ImageGrid.js +31 -34
  99. package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
  100. package/lib/module/components/ImageGallery/components/ProgressControl.js +153 -0
  101. package/lib/module/components/ImageGallery/components/ProgressControl.js.map +1 -0
  102. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js +373 -0
  103. package/lib/module/components/ImageGallery/hooks/useImageGalleryGestures.js.map +1 -0
  104. package/lib/module/components/Message/Message.js +23 -13
  105. package/lib/module/components/Message/Message.js.map +1 -1
  106. package/lib/module/components/Message/MessageSimple/MessageContent.js +58 -33
  107. package/lib/module/components/Message/MessageSimple/MessageContent.js.map +1 -1
  108. package/lib/module/components/Message/hooks/useCreateMessageContext.js +4 -2
  109. package/lib/module/components/Message/hooks/useCreateMessageContext.js.map +1 -1
  110. package/lib/module/components/MessageOverlay/MessageOverlay.js +25 -23
  111. package/lib/module/components/MessageOverlay/MessageOverlay.js.map +1 -1
  112. package/lib/module/components/Reply/Reply.js +32 -12
  113. package/lib/module/components/Reply/Reply.js.map +1 -1
  114. package/lib/module/components/Spinner/Spinner.js +12 -4
  115. package/lib/module/components/Spinner/Spinner.js.map +1 -1
  116. package/lib/module/components/index.js +26 -0
  117. package/lib/module/components/index.js.map +1 -1
  118. package/lib/module/contexts/messageContext/MessageContext.js +2 -2
  119. package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
  120. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js +2 -2
  121. package/lib/module/contexts/messageOverlayContext/MessageOverlayContext.js.map +1 -1
  122. package/lib/module/contexts/messagesContext/MessagesContext.js +2 -2
  123. package/lib/module/contexts/messagesContext/MessagesContext.js.map +1 -1
  124. package/lib/module/contexts/themeContext/utils/theme.js +10 -1
  125. package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
  126. package/lib/module/icons/Pause.js +61 -0
  127. package/lib/module/icons/Pause.js.map +1 -0
  128. package/lib/module/icons/Play.js +42 -0
  129. package/lib/module/icons/Play.js.map +1 -0
  130. package/lib/module/icons/index.js +26 -0
  131. package/lib/module/icons/index.js.map +1 -1
  132. package/lib/module/mock-builders/api/queryMembers.js +98 -1
  133. package/lib/module/mock-builders/api/queryMembers.js.map +1 -1
  134. package/lib/module/native.js +7 -1
  135. package/lib/module/native.js.map +1 -1
  136. package/lib/module/utils/getUrlOfImageAttachment.js +1 -1
  137. package/lib/module/utils/getUrlOfImageAttachment.js.map +1 -1
  138. package/lib/module/version.json +1 -1
  139. package/lib/typescript/components/Attachment/Gallery.d.ts +1 -1
  140. package/lib/typescript/components/Attachment/VideoThumbnail.d.ts +4 -0
  141. package/lib/typescript/components/Attachment/utils/buildGallery/types.d.ts +1 -0
  142. package/lib/typescript/components/Attachment/utils/getAspectRatio.d.ts +1 -1
  143. package/lib/typescript/components/Channel/Channel.d.ts +1 -1
  144. package/lib/typescript/components/Channel/hooks/useCreateMessagesContext.d.ts +1 -1
  145. package/lib/typescript/components/ChannelPreview/hooks/__tests__/useChannelPreviewDisplayName.test.d.ts +1 -0
  146. package/lib/typescript/components/ChannelPreview/hooks/useChannelPreviewDisplayName.d.ts +4 -4
  147. package/lib/typescript/components/ImageGallery/ImageGallery.d.ts +2 -0
  148. package/lib/typescript/components/ImageGallery/components/AnimatedGalleryVideo.d.ts +27 -0
  149. package/lib/typescript/components/ImageGallery/components/ImageGalleryFooter.d.ts +18 -2
  150. package/lib/typescript/components/ImageGallery/components/ImageGalleryVideoControl.d.ts +3 -0
  151. package/lib/typescript/components/ImageGallery/components/ProgressControl.d.ts +5 -0
  152. package/lib/typescript/components/ImageGallery/hooks/useImageGalleryGestures.d.ts +36 -0
  153. package/lib/typescript/components/Message/hooks/useCreateMessageContext.d.ts +1 -1
  154. package/lib/typescript/components/Spinner/Spinner.d.ts +7 -1
  155. package/lib/typescript/components/index.d.ts +2 -0
  156. package/lib/typescript/contexts/messageContext/MessageContext.d.ts +3 -1
  157. package/lib/typescript/contexts/messageOverlayContext/MessageOverlayContext.d.ts +1 -0
  158. package/lib/typescript/contexts/messagesContext/MessagesContext.d.ts +2 -0
  159. package/lib/typescript/contexts/themeContext/utils/theme.d.ts +9 -0
  160. package/lib/typescript/icons/Pause.d.ts +3 -0
  161. package/lib/typescript/icons/Play.d.ts +3 -0
  162. package/lib/typescript/icons/index.d.ts +2 -0
  163. package/lib/typescript/mock-builders/api/queryMembers.d.ts +161 -0
  164. package/lib/typescript/mock-builders/api/utils.d.ts +7 -0
  165. package/lib/typescript/mock-builders/generator/user.d.ts +30 -0
  166. package/lib/typescript/mock-builders/mock.d.ts +3 -0
  167. package/lib/typescript/native.d.ts +66 -1
  168. package/package.json +1 -1
  169. package/src/components/Attachment/Attachment.tsx +11 -7
  170. package/src/components/Attachment/Gallery.tsx +75 -36
  171. package/src/components/Attachment/VideoThumbnail.tsx +45 -0
  172. package/src/components/Attachment/hooks/useGoToURL.ts +1 -1
  173. package/src/components/Attachment/utils/buildGallery/buildThumbnail.ts +1 -0
  174. package/src/components/Attachment/utils/buildGallery/types.ts +1 -0
  175. package/src/components/Attachment/utils/getAspectRatio.ts +7 -5
  176. package/src/components/Channel/Channel.tsx +4 -0
  177. package/src/components/Channel/hooks/useCreateMessagesContext.ts +2 -0
  178. package/src/components/ChannelPreview/hooks/__tests__/useChannelPreviewDisplayName.test.tsx +83 -0
  179. package/src/components/ChannelPreview/hooks/useChannelPreviewDisplayName.ts +43 -26
  180. package/src/components/ImageGallery/ImageGallery.tsx +145 -667
  181. package/src/components/ImageGallery/components/AnimatedGalleryImage.tsx +4 -4
  182. package/src/components/ImageGallery/components/AnimatedGalleryVideo.tsx +224 -0
  183. package/src/components/ImageGallery/components/ImageGalleryFooter.tsx +114 -19
  184. package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx +103 -0
  185. package/src/components/ImageGallery/components/ImageGrid.tsx +12 -25
  186. package/src/components/ImageGallery/components/ProgressControl.tsx +107 -0
  187. package/src/components/ImageGallery/hooks/useImageGalleryGestures.tsx +722 -0
  188. package/src/components/Message/Message.tsx +10 -3
  189. package/src/components/Message/MessageSimple/MessageContent.tsx +50 -16
  190. package/src/components/Message/hooks/useCreateMessageContext.ts +2 -0
  191. package/src/components/MessageOverlay/MessageOverlay.tsx +2 -0
  192. package/src/components/Reply/Reply.tsx +36 -23
  193. package/src/components/Spinner/Spinner.tsx +11 -4
  194. package/src/components/Thread/__tests__/__snapshots__/Thread.test.js.snap +0 -12
  195. package/src/components/index.ts +2 -0
  196. package/src/contexts/messageContext/MessageContext.tsx +2 -0
  197. package/src/contexts/messageOverlayContext/MessageOverlayContext.tsx +1 -0
  198. package/src/contexts/messagesContext/MessagesContext.tsx +2 -0
  199. package/src/contexts/themeContext/utils/theme.ts +18 -0
  200. package/src/icons/Pause.tsx +14 -0
  201. package/src/icons/Play.tsx +17 -0
  202. package/src/icons/index.ts +2 -0
  203. package/src/mock-builders/api/queryMembers.js +98 -0
  204. package/src/native.ts +59 -1
  205. package/src/utils/getUrlOfImageAttachment.ts +1 -1
  206. package/src/version.json +1 -1
@@ -5,10 +5,12 @@ var _typeof = require("@babel/runtime/helpers/typeof");
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.ImageGalleryFooter = void 0;
8
+ exports.ImageGalleryFooterWithContext = exports.ImageGalleryFooter = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
12
14
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
15
 
14
16
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
@@ -19,6 +21,8 @@ var _reactNative = require("react-native");
19
21
 
20
22
  var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
21
23
 
24
+ var _ImageGalleryVideoControl = require("./ImageGalleryVideoControl");
25
+
22
26
  var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
23
27
 
24
28
  var _TranslationContext = require("../../../contexts/translationContext/TranslationContext");
@@ -68,17 +72,23 @@ var styles = _reactNative.StyleSheet.create({
68
72
  }
69
73
  });
70
74
 
71
- var ImageGalleryFooter = function ImageGalleryFooter(props) {
75
+ var ImageGalleryFooterWithContext = function ImageGalleryFooterWithContext(props) {
72
76
  var centerElement = props.centerElement,
77
+ duration = props.duration,
73
78
  GridIcon = props.GridIcon,
74
79
  leftElement = props.leftElement,
80
+ onPlayPause = props.onPlayPause,
81
+ onProgressDrag = props.onProgressDrag,
75
82
  opacity = props.opacity,
76
83
  openGridView = props.openGridView,
84
+ paused = props.paused,
77
85
  photo = props.photo,
78
86
  photoLength = props.photoLength,
87
+ progress = props.progress,
79
88
  rightElement = props.rightElement,
80
89
  selectedIndex = props.selectedIndex,
81
90
  ShareIcon = props.ShareIcon,
91
+ videoControlElement = props.videoControlElement,
82
92
  visible = props.visible;
83
93
 
84
94
  var _useState = (0, _react.useState)(200),
@@ -93,9 +103,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
93
103
 
94
104
  var _useTheme = (0, _ThemeContext.useTheme)(),
95
105
  _useTheme$theme = _useTheme.theme,
96
- _useTheme$theme$color = _useTheme$theme.colors,
97
- black = _useTheme$theme$color.black,
98
- white = _useTheme$theme$color.white,
106
+ black = _useTheme$theme.colors.black,
99
107
  _useTheme$theme$image = _useTheme$theme.imageGallery.footer,
100
108
  centerContainer = _useTheme$theme$image.centerContainer,
101
109
  container = _useTheme$theme$image.container,
@@ -114,11 +122,11 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
114
122
  translateY: (0, _reactNativeReanimated.interpolate)(visible.value, [0, 1], [height, 0], _reactNativeReanimated.Extrapolate.CLAMP)
115
123
  }]
116
124
  };
117
- }, []);
125
+ }, [height]);
118
126
 
119
127
  var share = function () {
120
128
  var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
121
- var _photo$user, localImage;
129
+ var _photo$mime_type, _photo$user, extension, localFile;
122
130
 
123
131
  return _regenerator["default"].wrap(function _callee$(_context) {
124
132
  while (1) {
@@ -126,44 +134,45 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
126
134
  case 0:
127
135
  setShareMenuOpen(true);
128
136
  _context.prev = 1;
129
- _context.next = 4;
137
+ extension = ((_photo$mime_type = photo.mime_type) == null ? void 0 : _photo$mime_type.split('/')[1]) || 'jpg';
138
+ _context.next = 5;
130
139
  return (0, _native.saveFile)({
131
- fileName: (((_photo$user = photo.user) == null ? void 0 : _photo$user.id) || 'ChatPhoto') + "-" + photo.messageId + "-" + selectedIndex + ".jpg",
140
+ fileName: (((_photo$user = photo.user) == null ? void 0 : _photo$user.id) || 'ChatPhoto') + "-" + photo.messageId + "-" + selectedIndex + "." + extension,
132
141
  fromUrl: photo.uri
133
142
  });
134
143
 
135
- case 4:
136
- localImage = _context.sent;
137
- _context.next = 7;
144
+ case 5:
145
+ localFile = _context.sent;
146
+ _context.next = 8;
138
147
  return (0, _native.shareImage)({
139
- type: 'image/jpeg',
140
- url: localImage
148
+ type: photo.mime_type,
149
+ url: localFile
141
150
  });
142
151
 
143
- case 7:
144
- _context.next = 9;
152
+ case 8:
153
+ _context.next = 10;
145
154
  return (0, _native.deleteFile)({
146
- uri: localImage
155
+ uri: localFile
147
156
  });
148
157
 
149
- case 9:
150
- _context.next = 14;
158
+ case 10:
159
+ _context.next = 15;
151
160
  break;
152
161
 
153
- case 11:
154
- _context.prev = 11;
162
+ case 12:
163
+ _context.prev = 12;
155
164
  _context.t0 = _context["catch"](1);
156
165
  console.log(_context.t0);
157
166
 
158
- case 14:
167
+ case 15:
159
168
  setShareMenuOpen(false);
160
169
 
161
- case 15:
170
+ case 16:
162
171
  case "end":
163
172
  return _context.stop();
164
173
  }
165
174
  }
166
- }, _callee, null, [[1, 11]]);
175
+ }, _callee, null, [[1, 12]]);
167
176
  }));
168
177
 
169
178
  return function share() {
@@ -180,25 +189,43 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
180
189
  __self: _this,
181
190
  __source: {
182
191
  fileName: _jsxFileName,
183
- lineNumber: 148,
192
+ lineNumber: 183,
184
193
  columnNumber: 5
185
194
  }
186
195
  }, _react["default"].createElement(ReanimatedSafeAreaView, {
187
- style: [{
188
- backgroundColor: white
189
- }, container, footerStyle],
196
+ style: [container, footerStyle],
190
197
  __self: _this,
191
198
  __source: {
192
199
  fileName: _jsxFileName,
193
- lineNumber: 153,
200
+ lineNumber: 188,
194
201
  columnNumber: 7
195
202
  }
196
- }, _react["default"].createElement(_reactNative.View, {
197
- style: [styles.innerContainer, innerContainer],
203
+ }, photo.type === 'video' ? videoControlElement ? videoControlElement({
204
+ duration: duration,
205
+ onPlayPause: onPlayPause,
206
+ onProgressDrag: onProgressDrag,
207
+ paused: paused,
208
+ progress: progress
209
+ }) : _react["default"].createElement(_ImageGalleryVideoControl.ImageGalleryVideoControl, {
210
+ duration: duration,
211
+ onPlayPause: onPlayPause,
212
+ onProgressDrag: onProgressDrag,
213
+ paused: paused,
214
+ progress: progress,
215
+ __self: _this,
216
+ __source: {
217
+ fileName: _jsxFileName,
218
+ lineNumber: 193,
219
+ columnNumber: 13
220
+ }
221
+ }) : null, _react["default"].createElement(_reactNative.View, {
222
+ style: [styles.innerContainer, innerContainer, {
223
+ backgroundColor: 'white'
224
+ }],
198
225
  __self: _this,
199
226
  __source: {
200
227
  fileName: _jsxFileName,
201
- lineNumber: 154,
228
+ lineNumber: 202,
202
229
  columnNumber: 9
203
230
  }
204
231
  }, leftElement ? leftElement({
@@ -212,7 +239,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
212
239
  __self: _this,
213
240
  __source: {
214
241
  fileName: _jsxFileName,
215
- lineNumber: 158,
242
+ lineNumber: 206,
216
243
  columnNumber: 13
217
244
  }
218
245
  }, _react["default"].createElement(_reactNative.View, {
@@ -220,14 +247,14 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
220
247
  __self: _this,
221
248
  __source: {
222
249
  fileName: _jsxFileName,
223
- lineNumber: 159,
250
+ lineNumber: 207,
224
251
  columnNumber: 15
225
252
  }
226
253
  }, ShareIcon ? ShareIcon : _react["default"].createElement(_icons.Share, {
227
254
  __self: _this,
228
255
  __source: {
229
256
  fileName: _jsxFileName,
230
- lineNumber: 160,
257
+ lineNumber: 208,
231
258
  columnNumber: 42
232
259
  }
233
260
  }))), centerElement ? centerElement({
@@ -240,7 +267,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
240
267
  __self: _this,
241
268
  __source: {
242
269
  fileName: _jsxFileName,
243
- lineNumber: 167,
270
+ lineNumber: 215,
244
271
  columnNumber: 13
245
272
  }
246
273
  }, _react["default"].createElement(_reactNative.Text, {
@@ -250,7 +277,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
250
277
  __self: _this,
251
278
  __source: {
252
279
  fileName: _jsxFileName,
253
- lineNumber: 168,
280
+ lineNumber: 216,
254
281
  columnNumber: 15
255
282
  }
256
283
  }, t('{{ index }} of {{ photoLength }}', {
@@ -266,7 +293,7 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
266
293
  __self: _this,
267
294
  __source: {
268
295
  fileName: _jsxFileName,
269
- lineNumber: 179,
296
+ lineNumber: 227,
270
297
  columnNumber: 13
271
298
  }
272
299
  }, _react["default"].createElement(_reactNative.View, {
@@ -274,19 +301,54 @@ var ImageGalleryFooter = function ImageGalleryFooter(props) {
274
301
  __self: _this,
275
302
  __source: {
276
303
  fileName: _jsxFileName,
277
- lineNumber: 180,
304
+ lineNumber: 228,
278
305
  columnNumber: 15
279
306
  }
280
307
  }, GridIcon ? GridIcon : _react["default"].createElement(_icons.Grid, {
281
308
  __self: _this,
282
309
  __source: {
283
310
  fileName: _jsxFileName,
284
- lineNumber: 181,
311
+ lineNumber: 229,
285
312
  columnNumber: 40
286
313
  }
287
314
  }))))));
288
315
  };
289
316
 
317
+ exports.ImageGalleryFooterWithContext = ImageGalleryFooterWithContext;
318
+
319
+ var areEqual = function areEqual(prevProps, nextProps) {
320
+ var prevDuration = prevProps.duration,
321
+ prevPaused = prevProps.paused,
322
+ prevProgress = prevProps.progress,
323
+ prevSelectedIndex = prevProps.selectedIndex;
324
+ var nextDuration = nextProps.duration,
325
+ nextPaused = nextProps.paused,
326
+ nextProgress = nextProps.progress,
327
+ nextSelectedIndex = nextProps.selectedIndex;
328
+ var isDurationEqual = prevDuration === nextDuration;
329
+ if (!isDurationEqual) return false;
330
+ var isPausedEqual = prevPaused === nextPaused;
331
+ if (!isPausedEqual) return false;
332
+ var isProgressEqual = prevProgress === nextProgress;
333
+ if (!isProgressEqual) return false;
334
+ var isSelectedIndexEqual = prevSelectedIndex === nextSelectedIndex;
335
+ if (!isSelectedIndexEqual) return false;
336
+ return true;
337
+ };
338
+
339
+ var MemoizedImageGalleryFooter = _react["default"].memo(ImageGalleryFooterWithContext, areEqual);
340
+
341
+ var ImageGalleryFooter = function ImageGalleryFooter(props) {
342
+ return _react["default"].createElement(MemoizedImageGalleryFooter, (0, _extends2["default"])({}, props, {
343
+ __self: _this,
344
+ __source: {
345
+ fileName: _jsxFileName,
346
+ lineNumber: 284,
347
+ columnNumber: 6
348
+ }
349
+ }));
350
+ };
351
+
290
352
  exports.ImageGalleryFooter = ImageGalleryFooter;
291
353
  ImageGalleryFooter.displayName = 'ImageGalleryFooter{imageGallery{footer}}';
292
354
  //# sourceMappingURL=ImageGalleryFooter.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["ImageGalleryFooter.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","imageCountText","fontSize","fontWeight","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","wrapper","bottom","left","position","right","ImageGalleryFooter","props","centerElement","GridIcon","leftElement","opacity","openGridView","photo","photoLength","rightElement","selectedIndex","ShareIcon","visible","setHeight","shareMenuOpen","setShareMenuOpen","theme","colors","black","white","imageGallery","footer","container","t","footerStyle","value","transform","translateY","Extrapolate","CLAMP","share","fileName","user","id","messageId","fromUrl","uri","localImage","type","url","console","log","event","nativeEvent","layout","backgroundColor","color","index","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { SafeAreaView, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Grid as GridIconDefault, Share as ShareIconDefault } from '../../../icons';\nimport { deleteFile, saveFile, shareImage } from '../../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n imageCountText: {\n fontSize: 16,\n fontWeight: '600',\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n flex: 1,\n justifyContent: 'center',\n marginRight: 8,\n },\n wrapper: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n },\n});\n\nexport type ImageGalleryFooterCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n openGridView,\n photo,\n share,\n shareMenuOpen,\n}: {\n openGridView: () => void;\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryFooterCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n GridIcon?: React.ReactElement;\n leftElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n ShareIcon?: React.ReactElement;\n};\n\ntype Props<StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics> =\n ImageGalleryFooterCustomComponentProps<StreamChatGenerics> & {\n opacity: Animated.SharedValue<number>;\n openGridView: () => void;\n photo: Photo<StreamChatGenerics>;\n photoLength: number;\n selectedIndex: number;\n visible: Animated.SharedValue<number>;\n };\n\nexport const ImageGalleryFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: Props<StreamChatGenerics>,\n) => {\n const {\n centerElement,\n GridIcon,\n leftElement,\n opacity,\n openGridView,\n photo,\n photoLength,\n rightElement,\n selectedIndex,\n ShareIcon,\n visible,\n } = props;\n const [height, setHeight] = useState(200);\n const [shareMenuOpen, setShareMenuOpen] = useState(false);\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n footer: {\n centerContainer,\n container,\n imageCountText,\n innerContainer,\n leftContainer,\n rightContainer,\n },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const footerStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [height, 0], Extrapolate.CLAMP),\n },\n ],\n }),\n [],\n );\n\n const share = async () => {\n setShareMenuOpen(true);\n try {\n const localImage = await saveFile({\n fileName: `${photo.user?.id || 'ChatPhoto'}-${photo.messageId}-${selectedIndex}.jpg`,\n fromUrl: photo.uri,\n });\n await shareImage({ type: 'image/jpeg', url: localImage });\n await deleteFile({ uri: localImage });\n } catch (error) {\n console.log(error);\n }\n setShareMenuOpen(false);\n };\n\n return (\n <Animated.View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n style={styles.wrapper}\n >\n <ReanimatedSafeAreaView style={[{ backgroundColor: white }, container, footerStyle]}>\n <View style={[styles.innerContainer, innerContainer]}>\n {leftElement ? (\n leftElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity disabled={shareMenuOpen} onPress={share}>\n <View style={[styles.leftContainer, leftContainer]}>\n {ShareIcon ? ShareIcon : <ShareIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.imageCountText, { color: black }, imageCountText]}>\n {t('{{ index }} of {{ photoLength }}', {\n index: photoLength - selectedIndex,\n photoLength,\n })}\n </Text>\n </View>\n )}\n {rightElement ? (\n rightElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity onPress={openGridView}>\n <View style={[styles.rightContainer, rightContainer]}>\n {GridIcon ? GridIcon : <GridIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n </View>\n </ReanimatedSafeAreaView>\n </Animated.View>\n );\n};\n\nImageGalleryFooter.displayName = 'ImageGalleryFooter{imageGallery{footer}}';\n"]}
1
+ {"version":3,"sources":["ImageGalleryFooter.tsx"],"names":["ReanimatedSafeAreaView","Animated","createAnimatedComponent","SafeAreaView","styles","StyleSheet","create","centerContainer","alignItems","flex","justifyContent","imageCountText","fontSize","fontWeight","innerContainer","flexDirection","height","leftContainer","marginLeft","rightContainer","marginRight","wrapper","bottom","left","position","right","ImageGalleryFooterWithContext","props","centerElement","duration","GridIcon","leftElement","onPlayPause","onProgressDrag","opacity","openGridView","paused","photo","photoLength","progress","rightElement","selectedIndex","ShareIcon","videoControlElement","visible","setHeight","shareMenuOpen","setShareMenuOpen","theme","black","colors","imageGallery","footer","container","t","footerStyle","value","transform","translateY","Extrapolate","CLAMP","share","extension","mime_type","split","fileName","user","id","messageId","fromUrl","uri","localFile","type","url","console","log","event","nativeEvent","layout","backgroundColor","color","index","areEqual","prevProps","nextProps","prevDuration","prevPaused","prevProgress","prevSelectedIndex","nextDuration","nextPaused","nextProgress","nextSelectedIndex","isDurationEqual","isPausedEqual","isProgressEqual","isSelectedIndexEqual","MemoizedImageGalleryFooter","React","memo","ImageGalleryFooter","displayName"],"mappings":"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","sourcesContent":["import React, { useState } from 'react';\nimport { SafeAreaView, StyleSheet, Text, TouchableOpacity, View, ViewStyle } from 'react-native';\nimport Animated, { Extrapolate, interpolate, useAnimatedStyle } from 'react-native-reanimated';\n\nimport { ImageGalleryVideoControl } from './ImageGalleryVideoControl';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Grid as GridIconDefault, Share as ShareIconDefault } from '../../../icons';\nimport { deleteFile, saveFile, shareImage } from '../../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport type { Photo } from '../ImageGallery';\n\nconst ReanimatedSafeAreaView = Animated.createAnimatedComponent\n ? Animated.createAnimatedComponent(SafeAreaView)\n : SafeAreaView;\n\nconst styles = StyleSheet.create({\n centerContainer: {\n alignItems: 'center',\n flex: 1,\n justifyContent: 'center',\n },\n imageCountText: {\n fontSize: 16,\n fontWeight: '600',\n },\n innerContainer: {\n flexDirection: 'row',\n height: 56,\n },\n leftContainer: {\n flex: 1,\n justifyContent: 'center',\n marginLeft: 8,\n },\n rightContainer: {\n flex: 1,\n justifyContent: 'center',\n marginRight: 8,\n },\n wrapper: {\n bottom: 0,\n left: 0,\n position: 'absolute',\n right: 0,\n },\n});\n\nexport type ImageGalleryFooterCustomComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n openGridView,\n photo,\n share,\n shareMenuOpen,\n}: {\n openGridView: () => void;\n share: () => Promise<void>;\n shareMenuOpen: boolean;\n photo?: Photo<StreamChatGenerics>;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryFooterVideoControlProps = {\n duration: number;\n onPlayPause: () => void;\n onProgressDrag: (progress: number) => void;\n paused: boolean;\n progress: number;\n};\n\nexport type ImageGalleryFooterVideoControlComponent = ({\n duration,\n onPlayPause,\n onProgressDrag,\n paused,\n progress,\n}: ImageGalleryFooterVideoControlProps) => React.ReactElement | null;\n\nexport type ImageGalleryFooterCustomComponentProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n centerElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n GridIcon?: React.ReactElement;\n leftElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n rightElement?: ImageGalleryFooterCustomComponent<StreamChatGenerics>;\n ShareIcon?: React.ReactElement;\n videoControlElement?: ImageGalleryFooterVideoControlComponent;\n};\n\ntype ImageGalleryFooterPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterCustomComponentProps<StreamChatGenerics> & {\n duration: number;\n onPlayPause: () => void;\n onProgressDrag: (progress: number) => void;\n opacity: Animated.SharedValue<number>;\n openGridView: () => void;\n paused: boolean;\n photo: Photo<StreamChatGenerics>;\n photoLength: number;\n progress: number;\n selectedIndex: number;\n visible: Animated.SharedValue<number>;\n};\n\nexport const ImageGalleryFooterWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n centerElement,\n duration,\n GridIcon,\n leftElement,\n onPlayPause,\n onProgressDrag,\n opacity,\n openGridView,\n paused,\n photo,\n photoLength,\n progress,\n rightElement,\n selectedIndex,\n ShareIcon,\n videoControlElement,\n visible,\n } = props;\n\n const [height, setHeight] = useState(200);\n const [shareMenuOpen, setShareMenuOpen] = useState(false);\n const {\n theme: {\n colors: { black },\n imageGallery: {\n footer: {\n centerContainer,\n container,\n imageCountText,\n innerContainer,\n leftContainer,\n rightContainer,\n },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n const footerStyle = useAnimatedStyle<ViewStyle>(\n () => ({\n opacity: opacity.value,\n transform: [\n {\n translateY: interpolate(visible.value, [0, 1], [height, 0], Extrapolate.CLAMP),\n },\n ],\n }),\n [height],\n );\n\n const share = async () => {\n setShareMenuOpen(true);\n try {\n const extension = photo.mime_type?.split('/')[1] || 'jpg';\n const localFile = await saveFile({\n fileName: `${photo.user?.id || 'ChatPhoto'}-${\n photo.messageId\n }-${selectedIndex}.${extension}`,\n fromUrl: photo.uri,\n });\n await shareImage({ type: photo.mime_type, url: localFile });\n await deleteFile({ uri: localFile });\n } catch (error) {\n console.log(error);\n }\n setShareMenuOpen(false);\n };\n\n return (\n <Animated.View\n onLayout={(event) => setHeight(event.nativeEvent.layout.height)}\n pointerEvents={'box-none'}\n style={styles.wrapper}\n >\n <ReanimatedSafeAreaView style={[container, footerStyle]}>\n {photo.type === 'video' ? (\n videoControlElement ? (\n videoControlElement({ duration, onPlayPause, onProgressDrag, paused, progress })\n ) : (\n <ImageGalleryVideoControl\n duration={duration}\n onPlayPause={onPlayPause}\n onProgressDrag={onProgressDrag}\n paused={paused}\n progress={progress}\n />\n )\n ) : null}\n <View style={[styles.innerContainer, innerContainer, { backgroundColor: 'white' }]}>\n {leftElement ? (\n leftElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity disabled={shareMenuOpen} onPress={share}>\n <View style={[styles.leftContainer, leftContainer]}>\n {ShareIcon ? ShareIcon : <ShareIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n {centerElement ? (\n centerElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <View style={[styles.centerContainer, centerContainer]}>\n <Text style={[styles.imageCountText, { color: black }, imageCountText]}>\n {t('{{ index }} of {{ photoLength }}', {\n index: photoLength - selectedIndex,\n photoLength,\n })}\n </Text>\n </View>\n )}\n {rightElement ? (\n rightElement({ openGridView, photo, share, shareMenuOpen })\n ) : (\n <TouchableOpacity onPress={openGridView}>\n <View style={[styles.rightContainer, rightContainer]}>\n {GridIcon ? GridIcon : <GridIconDefault />}\n </View>\n </TouchableOpacity>\n )}\n </View>\n </ReanimatedSafeAreaView>\n </Animated.View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n nextProps: ImageGalleryFooterPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n duration: prevDuration,\n paused: prevPaused,\n progress: prevProgress,\n selectedIndex: prevSelectedIndex,\n } = prevProps;\n const {\n duration: nextDuration,\n paused: nextPaused,\n progress: nextProgress,\n selectedIndex: nextSelectedIndex,\n } = nextProps;\n\n const isDurationEqual = prevDuration === nextDuration;\n if (!isDurationEqual) return false;\n\n const isPausedEqual = prevPaused === nextPaused;\n if (!isPausedEqual) return false;\n\n const isProgressEqual = prevProgress === nextProgress;\n if (!isProgressEqual) return false;\n\n const isSelectedIndexEqual = prevSelectedIndex === nextSelectedIndex;\n if (!isSelectedIndexEqual) return false;\n\n return true;\n};\n\nconst MemoizedImageGalleryFooter = React.memo(\n ImageGalleryFooterWithContext,\n areEqual,\n) as typeof ImageGalleryFooterWithContext;\n\nexport type ImageGalleryFooterProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryFooterPropsWithContext<StreamChatGenerics>;\n\nexport const ImageGalleryFooter = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGalleryFooterProps<StreamChatGenerics>,\n) => <MemoizedImageGalleryFooter {...props} />;\n\nImageGalleryFooter.displayName = 'ImageGalleryFooter{imageGallery{footer}}';\n"]}
@@ -0,0 +1,145 @@
1
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.ImageGalleryVideoControl = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _reactNative = require("react-native");
11
+
12
+ var _dayjs = _interopRequireDefault(require("dayjs"));
13
+
14
+ var _ProgressControl = require("./ProgressControl");
15
+
16
+ var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
17
+
18
+ var _icons = require("../../../icons");
19
+
20
+ var _this = this,
21
+ _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/ImageGallery/components/ImageGalleryVideoControl.tsx";
22
+
23
+ var styles = _reactNative.StyleSheet.create({
24
+ durationTextStyle: {
25
+ color: '#fff',
26
+ fontWeight: 'bold'
27
+ },
28
+ roundedView: {
29
+ alignItems: 'center',
30
+ backgroundColor: '#fff',
31
+ borderRadius: 50,
32
+ display: 'flex',
33
+ elevation: 2,
34
+ height: 36,
35
+ justifyContent: 'center',
36
+ width: 36
37
+ },
38
+ videoContainer: {
39
+ alignItems: 'center',
40
+ backgroundColor: 'rgba(52, 52, 52, 0.1)',
41
+ display: 'flex',
42
+ flexDirection: 'row',
43
+ justifyContent: 'space-between',
44
+ padding: 10
45
+ }
46
+ });
47
+
48
+ var ImageGalleryVideoControl = _react["default"].memo(function (props) {
49
+ var duration = props.duration,
50
+ onPlayPause = props.onPlayPause,
51
+ onProgressDrag = props.onProgressDrag,
52
+ paused = props.paused,
53
+ progress = props.progress;
54
+ var videoDuration = duration ? duration / 3600 >= 1 ? _dayjs["default"].duration(duration, 'second').format('HH:mm:ss') : _dayjs["default"].duration(duration, 'second').format('mm:ss') : null;
55
+ var progressValueInSeconds = progress * duration;
56
+ var progressDuration = progressValueInSeconds ? progressValueInSeconds / 3600 >= 1 ? _dayjs["default"].duration(progressValueInSeconds, 'second').format('HH:mm:ss') : _dayjs["default"].duration(progressValueInSeconds, 'second').format('mm:ss') : null;
57
+
58
+ var _useTheme = (0, _ThemeContext.useTheme)(),
59
+ _useTheme$theme$image = _useTheme.theme.imageGallery.videoControl,
60
+ durationTextStyle = _useTheme$theme$image.durationTextStyle,
61
+ roundedView = _useTheme$theme$image.roundedView,
62
+ videoContainer = _useTheme$theme$image.videoContainer;
63
+
64
+ return _react["default"].createElement(_reactNative.View, {
65
+ style: [styles.videoContainer, videoContainer],
66
+ __self: _this,
67
+ __source: {
68
+ fileName: _jsxFileName,
69
+ lineNumber: 65,
70
+ columnNumber: 7
71
+ }
72
+ }, _react["default"].createElement(_reactNative.TouchableOpacity, {
73
+ onPress: onPlayPause,
74
+ __self: _this,
75
+ __source: {
76
+ fileName: _jsxFileName,
77
+ lineNumber: 66,
78
+ columnNumber: 9
79
+ }
80
+ }, _react["default"].createElement(_reactNative.View, {
81
+ style: [styles.roundedView, roundedView],
82
+ __self: _this,
83
+ __source: {
84
+ fileName: _jsxFileName,
85
+ lineNumber: 67,
86
+ columnNumber: 11
87
+ }
88
+ }, paused ? _react["default"].createElement(_icons.Play, {
89
+ height: 24,
90
+ pathFill: '#000',
91
+ width: 24,
92
+ __self: _this,
93
+ __source: {
94
+ fileName: _jsxFileName,
95
+ lineNumber: 69,
96
+ columnNumber: 15
97
+ }
98
+ }) : _react["default"].createElement(_icons.Pause, {
99
+ height: 24,
100
+ width: 24,
101
+ __self: _this,
102
+ __source: {
103
+ fileName: _jsxFileName,
104
+ lineNumber: 71,
105
+ columnNumber: 15
106
+ }
107
+ }))), _react["default"].createElement(_reactNative.Text, {
108
+ style: [styles.durationTextStyle, durationTextStyle],
109
+ __self: _this,
110
+ __source: {
111
+ fileName: _jsxFileName,
112
+ lineNumber: 75,
113
+ columnNumber: 9
114
+ }
115
+ }, progressDuration ? progressDuration : '00:00'), _react["default"].createElement(_ProgressControl.ProgressControl, {
116
+ duration: duration,
117
+ onPlayPause: onPlayPause,
118
+ onProgressDrag: onProgressDrag,
119
+ progress: progress,
120
+ __self: _this,
121
+ __source: {
122
+ fileName: _jsxFileName,
123
+ lineNumber: 78,
124
+ columnNumber: 9
125
+ }
126
+ }), _react["default"].createElement(_reactNative.Text, {
127
+ style: [styles.durationTextStyle, durationTextStyle],
128
+ __self: _this,
129
+ __source: {
130
+ fileName: _jsxFileName,
131
+ lineNumber: 84,
132
+ columnNumber: 9
133
+ }
134
+ }, videoDuration ? videoDuration : '00:00'));
135
+ }, function (prevProps, nextProps) {
136
+ if (prevProps.duration === nextProps.duration && prevProps.paused === nextProps.paused && prevProps.progress === nextProps.progress) {
137
+ return true;
138
+ } else {
139
+ return false;
140
+ }
141
+ });
142
+
143
+ exports.ImageGalleryVideoControl = ImageGalleryVideoControl;
144
+ ImageGalleryVideoControl.displayName = 'ImageGalleryVideoControl{imageGallery{videoControl}}';
145
+ //# sourceMappingURL=ImageGalleryVideoControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ImageGalleryVideoControl.tsx"],"names":["styles","StyleSheet","create","durationTextStyle","color","fontWeight","roundedView","alignItems","backgroundColor","borderRadius","display","elevation","height","justifyContent","width","videoContainer","flexDirection","padding","ImageGalleryVideoControl","React","memo","props","duration","onPlayPause","onProgressDrag","paused","progress","videoDuration","dayjs","format","progressValueInSeconds","progressDuration","theme","imageGallery","videoControl","prevProps","nextProps","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport dayjs from 'dayjs';\n\nimport type { ImageGalleryFooterVideoControlProps } from './ImageGalleryFooter';\nimport { ProgressControl } from './ProgressControl';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\n\nimport { Pause, Play } from '../../../icons';\n\nconst styles = StyleSheet.create({\n durationTextStyle: {\n color: '#fff',\n fontWeight: 'bold',\n },\n roundedView: {\n alignItems: 'center',\n backgroundColor: '#fff',\n borderRadius: 50,\n display: 'flex',\n elevation: 2,\n height: 36,\n justifyContent: 'center',\n width: 36,\n },\n videoContainer: {\n alignItems: 'center',\n backgroundColor: 'rgba(52, 52, 52, 0.1)',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n padding: 10,\n },\n});\n\nexport const ImageGalleryVideoControl: React.FC<ImageGalleryFooterVideoControlProps> = React.memo(\n (props) => {\n const { duration, onPlayPause, onProgressDrag, paused, progress } = props;\n\n const videoDuration = duration\n ? duration / 3600 >= 1\n ? dayjs.duration(duration, 'second').format('HH:mm:ss')\n : dayjs.duration(duration, 'second').format('mm:ss')\n : null;\n\n const progressValueInSeconds = progress * duration;\n\n const progressDuration = progressValueInSeconds\n ? progressValueInSeconds / 3600 >= 1\n ? dayjs.duration(progressValueInSeconds, 'second').format('HH:mm:ss')\n : dayjs.duration(progressValueInSeconds, 'second').format('mm:ss')\n : null;\n\n const {\n theme: {\n imageGallery: {\n videoControl: { durationTextStyle, roundedView, videoContainer },\n },\n },\n } = useTheme();\n\n return (\n <View style={[styles.videoContainer, videoContainer]}>\n <TouchableOpacity onPress={onPlayPause}>\n <View style={[styles.roundedView, roundedView]}>\n {paused ? (\n <Play height={24} pathFill={'#000'} width={24} />\n ) : (\n <Pause height={24} width={24} />\n )}\n </View>\n </TouchableOpacity>\n <Text style={[styles.durationTextStyle, durationTextStyle]}>\n {progressDuration ? progressDuration : '00:00'}\n </Text>\n <ProgressControl\n duration={duration}\n onPlayPause={onPlayPause}\n onProgressDrag={onProgressDrag}\n progress={progress}\n />\n <Text style={[styles.durationTextStyle, durationTextStyle]}>\n {videoDuration ? videoDuration : '00:00'}\n </Text>\n </View>\n );\n },\n (prevProps, nextProps) => {\n if (\n prevProps.duration === nextProps.duration &&\n prevProps.paused === nextProps.paused &&\n prevProps.progress === nextProps.progress\n ) {\n return true;\n } else {\n return false;\n }\n },\n);\n\nImageGalleryVideoControl.displayName = 'ImageGalleryVideoControl{imageGallery{videoControl}}';\n"]}
@@ -15,13 +15,13 @@ var _reactNative = require("react-native");
15
15
 
16
16
  var _bottomSheet = require("@gorhom/bottom-sheet");
17
17
 
18
+ var _VideoThumbnail = require("../../../components/Attachment/VideoThumbnail");
19
+
18
20
  var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
19
21
 
20
22
  var _utils = require("../../../utils/utils");
21
23
 
22
- var _Avatar = require("../../Avatar/Avatar");
23
-
24
- var _excluded = ["avatarComponent", "imageComponent"];
24
+ var _excluded = ["imageComponent"];
25
25
 
26
26
  var _this = this,
27
27
  _jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/ImageGallery/components/ImageGrid.tsx";
@@ -51,20 +51,14 @@ var GridImage = function GridImage(_ref) {
51
51
  var item = _ref.item;
52
52
 
53
53
  var _useTheme = (0, _ThemeContext.useTheme)(),
54
- _useTheme$theme = _useTheme.theme,
55
- white = _useTheme$theme.colors.white,
56
- _useTheme$theme$image = _useTheme$theme.imageGallery.grid,
57
- gridAvatar = _useTheme$theme$image.gridAvatar,
58
- gridAvatarWrapper = _useTheme$theme$image.gridAvatarWrapper,
59
- gridImage = _useTheme$theme$image.gridImage;
60
-
61
- var avatarComponent = item.avatarComponent,
62
- imageComponent = item.imageComponent,
54
+ gridImage = _useTheme.theme.imageGallery.grid.gridImage;
55
+
56
+ var imageComponent = item.imageComponent,
63
57
  restItem = (0, _objectWithoutProperties2["default"])(item, _excluded);
64
58
  var numberOfImageGalleryGridColumns = restItem.numberOfImageGalleryGridColumns,
65
59
  selectAndClose = restItem.selectAndClose,
66
- uri = restItem.uri,
67
- user = restItem.user;
60
+ type = restItem.type,
61
+ uri = restItem.uri;
68
62
  var size = (0, _utils.vw)(100) / (numberOfImageGalleryGridColumns || 3) - 2;
69
63
 
70
64
  if (imageComponent) {
@@ -78,13 +72,10 @@ var GridImage = function GridImage(_ref) {
78
72
  __self: _this,
79
73
  __source: {
80
74
  fileName: _jsxFileName,
81
- lineNumber: 86,
75
+ lineNumber: 85,
82
76
  columnNumber: 5
83
77
  }
84
- }, _react["default"].createElement(_reactNative.ImageBackground, {
85
- source: {
86
- uri: uri
87
- },
78
+ }, type === 'video' ? _react["default"].createElement(_reactNative.View, {
88
79
  style: [styles.image, {
89
80
  height: size,
90
81
  width: size
@@ -93,24 +84,30 @@ var GridImage = function GridImage(_ref) {
93
84
  __source: {
94
85
  fileName: _jsxFileName,
95
86
  lineNumber: 87,
96
- columnNumber: 7
87
+ columnNumber: 9
97
88
  }
98
- }, avatarComponent ? avatarComponent({
99
- item: restItem
100
- }) : !!(user != null && user.image) && _react["default"].createElement(_Avatar.Avatar, {
101
- containerStyle: [styles.avatarImageWrapper, {
102
- backgroundColor: white
103
- }, gridAvatarWrapper],
104
- image: user.image,
105
- imageStyle: gridAvatar,
106
- size: 22,
89
+ }, _react["default"].createElement(_VideoThumbnail.VideoThumbnail, {
90
+ __self: _this,
91
+ __source: {
92
+ fileName: _jsxFileName,
93
+ lineNumber: 88,
94
+ columnNumber: 11
95
+ }
96
+ })) : _react["default"].createElement(_reactNative.Image, {
97
+ source: {
98
+ uri: uri
99
+ },
100
+ style: [styles.image, {
101
+ height: size,
102
+ width: size
103
+ }],
107
104
  __self: _this,
108
105
  __source: {
109
106
  fileName: _jsxFileName,
110
- lineNumber: 94,
111
- columnNumber: 15
107
+ lineNumber: 91,
108
+ columnNumber: 9
112
109
  }
113
- })));
110
+ }));
114
111
  };
115
112
 
116
113
  var renderItem = function renderItem(_ref2) {
@@ -120,7 +117,7 @@ var renderItem = function renderItem(_ref2) {
120
117
  __self: _this,
121
118
  __source: {
122
119
  fileName: _jsxFileName,
123
- lineNumber: 116,
120
+ lineNumber: 103,
124
121
  columnNumber: 7
125
122
  }
126
123
  });
@@ -166,7 +163,7 @@ var ImageGrid = function ImageGrid(props) {
166
163
  __self: _this,
167
164
  __source: {
168
165
  fileName: _jsxFileName,
169
- lineNumber: 169,
166
+ lineNumber: 156,
170
167
  columnNumber: 5
171
168
  }
172
169
  });