stream-chat-react-native-core 5.11.3-beta.7 → 5.12.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/commonjs/components/Attachment/Gallery.js +38 -22
- package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
- package/lib/commonjs/components/Attachment/ImageReloadIndicator.js +40 -0
- package/lib/commonjs/components/Attachment/ImageReloadIndicator.js.map +1 -0
- package/lib/commonjs/components/Channel/Channel.js +20 -18
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/hooks/useLoadingImage.js +57 -16
- package/lib/commonjs/hooks/useLoadingImage.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Attachment/Gallery.js +38 -22
- package/lib/module/components/Attachment/Gallery.js.map +1 -1
- package/lib/module/components/Attachment/ImageReloadIndicator.js +40 -0
- package/lib/module/components/Attachment/ImageReloadIndicator.js.map +1 -0
- package/lib/module/components/Channel/Channel.js +20 -18
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/hooks/useLoadingImage.js +57 -16
- package/lib/module/hooks/useLoadingImage.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Attachment/ImageReloadIndicator.d.ts +6 -0
- package/lib/typescript/hooks/useLoadingImage.d.ts +3 -3
- package/package.json +1 -1
- package/src/components/Attachment/Gallery.tsx +22 -5
- package/src/components/Attachment/ImageReloadIndicator.tsx +27 -0
- package/src/components/Attachment/__tests__/Gallery.test.js +3 -1
- package/src/components/Channel/Channel.tsx +4 -1
- package/src/hooks/useLoadingImage.tsx +57 -9
- package/src/version.json +1 -1
|
@@ -4,11 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.Gallery = void 0;
|
|
7
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
8
7
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
9
|
var _react = _interopRequireWildcard(require("react"));
|
|
10
10
|
var _reactNative = require("react-native");
|
|
11
11
|
var _GalleryImage = require("./GalleryImage");
|
|
12
|
+
var _ImageReloadIndicator = require("./ImageReloadIndicator");
|
|
12
13
|
var _buildGallery = require("./utils/buildGallery/buildGallery");
|
|
13
14
|
var _getGalleryImageBorderRadius = require("./utils/getGalleryImageBorderRadius");
|
|
14
15
|
var _openUrlSafely = require("./utils/openUrlSafely");
|
|
@@ -63,6 +64,10 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
63
64
|
justifyContent: 'center',
|
|
64
65
|
position: 'absolute'
|
|
65
66
|
},
|
|
67
|
+
imageReloadContainerStyle: (0, _extends2["default"])({}, _reactNative.StyleSheet.absoluteFillObject, {
|
|
68
|
+
alignItems: 'center',
|
|
69
|
+
justifyContent: 'center'
|
|
70
|
+
}),
|
|
66
71
|
moreImagesContainer: {
|
|
67
72
|
alignItems: 'center',
|
|
68
73
|
justifyContent: 'center',
|
|
@@ -141,7 +146,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
141
146
|
__self: _this,
|
|
142
147
|
__source: {
|
|
143
148
|
fileName: _jsxFileName,
|
|
144
|
-
lineNumber:
|
|
149
|
+
lineNumber: 196,
|
|
145
150
|
columnNumber: 5
|
|
146
151
|
}
|
|
147
152
|
}, thumbnailGrid.map(function (rows, colIndex) {
|
|
@@ -155,7 +160,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
155
160
|
__self: _this,
|
|
156
161
|
__source: {
|
|
157
162
|
fileName: _jsxFileName,
|
|
158
|
-
lineNumber:
|
|
163
|
+
lineNumber: 213,
|
|
159
164
|
columnNumber: 11
|
|
160
165
|
}
|
|
161
166
|
}, rows.map(function (thumbnail, rowIndex) {
|
|
@@ -203,7 +208,7 @@ var GalleryWithContext = function GalleryWithContext(props) {
|
|
|
203
208
|
__self: _this,
|
|
204
209
|
__source: {
|
|
205
210
|
fileName: _jsxFileName,
|
|
206
|
-
lineNumber:
|
|
211
|
+
lineNumber: 245,
|
|
207
212
|
columnNumber: 17
|
|
208
213
|
}
|
|
209
214
|
});
|
|
@@ -302,7 +307,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
|
|
|
302
307
|
__self: _this,
|
|
303
308
|
__source: {
|
|
304
309
|
fileName: _jsxFileName,
|
|
305
|
-
lineNumber:
|
|
310
|
+
lineNumber: 369,
|
|
306
311
|
columnNumber: 5
|
|
307
312
|
}
|
|
308
313
|
}), thumbnail.type === 'video' ? _react["default"].createElement(VideoThumbnail, {
|
|
@@ -314,7 +319,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
|
|
|
314
319
|
__self: _this,
|
|
315
320
|
__source: {
|
|
316
321
|
fileName: _jsxFileName,
|
|
317
|
-
lineNumber:
|
|
322
|
+
lineNumber: 411,
|
|
318
323
|
columnNumber: 9
|
|
319
324
|
}
|
|
320
325
|
}) : _react["default"].createElement(_reactNative.View, {
|
|
@@ -322,7 +327,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
|
|
|
322
327
|
__self: _this,
|
|
323
328
|
__source: {
|
|
324
329
|
fileName: _jsxFileName,
|
|
325
|
-
lineNumber:
|
|
330
|
+
lineNumber: 423,
|
|
326
331
|
columnNumber: 9
|
|
327
332
|
}
|
|
328
333
|
}, _react["default"].createElement(GalleryImageThumbnail, {
|
|
@@ -333,7 +338,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
|
|
|
333
338
|
__self: _this,
|
|
334
339
|
__source: {
|
|
335
340
|
fileName: _jsxFileName,
|
|
336
|
-
lineNumber:
|
|
341
|
+
lineNumber: 424,
|
|
337
342
|
columnNumber: 11
|
|
338
343
|
}
|
|
339
344
|
})), colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? _react["default"].createElement(_reactNative.View, {
|
|
@@ -343,7 +348,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
|
|
|
343
348
|
__self: _this,
|
|
344
349
|
__source: {
|
|
345
350
|
fileName: _jsxFileName,
|
|
346
|
-
lineNumber:
|
|
351
|
+
lineNumber: 433,
|
|
347
352
|
columnNumber: 9
|
|
348
353
|
}
|
|
349
354
|
}, _react["default"].createElement(_reactNative.Text, {
|
|
@@ -351,7 +356,7 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
|
|
|
351
356
|
__self: _this,
|
|
352
357
|
__source: {
|
|
353
358
|
fileName: _jsxFileName,
|
|
354
|
-
lineNumber:
|
|
359
|
+
lineNumber: 441,
|
|
355
360
|
columnNumber: 11
|
|
356
361
|
}
|
|
357
362
|
}, "+" + (imagesAndVideos.length - 4))) : null);
|
|
@@ -364,6 +369,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
|
|
|
364
369
|
var _useLoadingImage = (0, _useLoadingImage2.useLoadingImage)(),
|
|
365
370
|
isLoadingImage = _useLoadingImage.isLoadingImage,
|
|
366
371
|
isLoadingImageError = _useLoadingImage.isLoadingImageError,
|
|
372
|
+
onReloadImage = _useLoadingImage.onReloadImage,
|
|
367
373
|
setLoadingImage = _useLoadingImage.setLoadingImage,
|
|
368
374
|
setLoadingImageError = _useLoadingImage.setLoadingImageError;
|
|
369
375
|
var _useTheme3 = (0, _ThemeContext.useTheme)(),
|
|
@@ -376,19 +382,29 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
|
|
|
376
382
|
__self: _this,
|
|
377
383
|
__source: {
|
|
378
384
|
fileName: _jsxFileName,
|
|
379
|
-
lineNumber:
|
|
385
|
+
lineNumber: 478,
|
|
380
386
|
columnNumber: 5
|
|
381
387
|
}
|
|
382
|
-
}, isLoadingImageError ? _react["default"].createElement(ImageLoadingFailedIndicator, {
|
|
383
|
-
style:
|
|
388
|
+
}, isLoadingImageError ? _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(ImageLoadingFailedIndicator, {
|
|
389
|
+
style: styles.imageLoadingErrorIndicatorStyle,
|
|
384
390
|
__self: _this,
|
|
385
391
|
__source: {
|
|
386
392
|
fileName: _jsxFileName,
|
|
387
|
-
lineNumber:
|
|
388
|
-
columnNumber:
|
|
393
|
+
lineNumber: 486,
|
|
394
|
+
columnNumber: 11
|
|
395
|
+
}
|
|
396
|
+
}), _react["default"].createElement(_ImageReloadIndicator.ImageReloadIndicator, {
|
|
397
|
+
onReloadImage: onReloadImage,
|
|
398
|
+
style: styles.imageReloadContainerStyle,
|
|
399
|
+
__self: _this,
|
|
400
|
+
__source: {
|
|
401
|
+
fileName: _jsxFileName,
|
|
402
|
+
lineNumber: 487,
|
|
403
|
+
columnNumber: 11
|
|
389
404
|
}
|
|
390
|
-
}) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_GalleryImage.GalleryImage, {
|
|
391
|
-
onError: function onError(
|
|
405
|
+
})) : _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_GalleryImage.GalleryImage, {
|
|
406
|
+
onError: function onError(_ref3) {
|
|
407
|
+
var error = _ref3.nativeEvent.error;
|
|
392
408
|
console.warn(error);
|
|
393
409
|
setLoadingImage(false);
|
|
394
410
|
setLoadingImageError(true);
|
|
@@ -408,15 +424,15 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
|
|
|
408
424
|
__self: _this,
|
|
409
425
|
__source: {
|
|
410
426
|
fileName: _jsxFileName,
|
|
411
|
-
lineNumber:
|
|
427
|
+
lineNumber: 494,
|
|
412
428
|
columnNumber: 11
|
|
413
429
|
}
|
|
414
430
|
}), isLoadingImage && _react["default"].createElement(_reactNative.View, {
|
|
415
|
-
style:
|
|
431
|
+
style: styles.imageLoadingIndicatorContainer,
|
|
416
432
|
__self: _this,
|
|
417
433
|
__source: {
|
|
418
434
|
fileName: _jsxFileName,
|
|
419
|
-
lineNumber:
|
|
435
|
+
lineNumber: 514,
|
|
420
436
|
columnNumber: 13
|
|
421
437
|
}
|
|
422
438
|
}, _react["default"].createElement(ImageLoadingIndicator, {
|
|
@@ -424,7 +440,7 @@ var GalleryImageThumbnail = function GalleryImageThumbnail(_ref2) {
|
|
|
424
440
|
__self: _this,
|
|
425
441
|
__source: {
|
|
426
442
|
fileName: _jsxFileName,
|
|
427
|
-
lineNumber:
|
|
443
|
+
lineNumber: 515,
|
|
428
444
|
columnNumber: 15
|
|
429
445
|
}
|
|
430
446
|
}))));
|
|
@@ -538,7 +554,7 @@ var Gallery = function Gallery(props) {
|
|
|
538
554
|
__self: _this,
|
|
539
555
|
__source: {
|
|
540
556
|
fileName: _jsxFileName,
|
|
541
|
-
lineNumber:
|
|
557
|
+
lineNumber: 656,
|
|
542
558
|
columnNumber: 5
|
|
543
559
|
}
|
|
544
560
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_GalleryImage","_buildGallery","_getGalleryImageBorderRadius","_openUrlSafely","_ImageGalleryContext","_MessageContext","_MessagesContext","_OverlayContext","_ThemeContext","_useLoadingImage2","_native","_utils","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","errorTextSize","fontSize","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","alignItems","display","justifyContent","padding","imageContainerStyle","flex","imageLoadingErrorIndicatorStyle","bottom","left","position","imageLoadingIndicatorContainer","height","width","imageLoadingIndicatorStyle","moreImagesContainer","margin","moreImagesText","color","fontWeight","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","_useTheme","useTheme","_useTheme$theme$messa","theme","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","concat","_toConsumableArray2","imagesAndVideosValue","length","map","i","image_url","thumb_url","join","_useMemo","useMemo","buildGallery","invertedDirections","thumbnailGrid","numOfColumns","createElement","View","style","testID","__self","__source","fileName","lineNumber","columnNumber","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","getGalleryImageBorderRadius","messageText","text","undefined","GalleryThumbnail","_ref","_useTheme2","_useTheme2$theme","overlay","colors","_useTheme2$theme$mess","image","openImageViewer","messageId","id","url","defaultOnPress","type","isVideoPackageAvailable","openUrlSafely","TouchableOpacity","_extends2","activeOpacity","disabled","event","emitter","defaultHandler","GalleryImageThumbnail","absoluteFillObject","backgroundColor","Text","_ref2","_useLoadingImage","useLoadingImage","isLoadingImage","isLoadingImageError","setLoadingImage","setLoadingImageError","_useTheme3","Fragment","GalleryImage","onError","error","console","warn","onLoadEnd","onLoadStart","resizeMode","uri","areEqual","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","getUrlWithoutParams","videosEqual","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","_useImageGalleryConte","useImageGalleryContext","contextSetSelectedMessage","_useMessageContext","useMessageContext","contextAlignment","contextGroupStyles","contextImages","contextMessage","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","_useMessagesContext","useMessagesContext","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","ContextVideoThumnbnail","_useOverlayContext","useOverlayContext","contextSetOverlay","channelId","cid","reply_count","exports","displayName"],"sources":["Gallery.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { GalleryImage } from './GalleryImage';\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport type { Thumbnail } from './utils/buildGallery/types';\nimport { getGalleryImageBorderRadius } from './utils/getGalleryImageBorderRadius';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useLoadingImage } from '../../hooks/useLoadingImage';\nimport { isVideoPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n errorTextSize: { fontSize: 10 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n padding: 1,\n },\n imageContainerStyle: { alignItems: 'center', flex: 1, justifyContent: 'center' },\n imageLoadingErrorIndicatorStyle: {\n bottom: 4,\n left: 4,\n position: 'absolute',\n },\n imageLoadingIndicatorContainer: {\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\n },\n imageLoadingIndicatorStyle: {\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nexport type GalleryPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'videos'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n > &\n Pick<OverlayContextValue, 'setOverlay'> & {\n channelId: string | undefined;\n hasThreadReplies?: boolean;\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"excessive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO: Fix circular dependencies of imports\n */\n message?: MessageType<StreamChatGenerics>;\n };\n\nconst GalleryWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n } = props;\n\n const {\n theme: {\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n },\n },\n },\n } = useTheme();\n\n const sizeConfig = {\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n };\n\n const imagesAndVideos = [...(images || []), ...(videos || [])];\n const imagesAndVideosValue = `${images?.length}${videos?.length}${images\n ?.map((i) => `${i.image_url}${i.thumb_url}`)\n .join('')}${videos?.map((i) => `${i.image_url}${i.thumb_url}`).join('')}`;\n\n const { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideosValue],\n );\n\n if (!imagesAndVideos?.length) return null;\n const numOfColumns = thumbnailGrid.length;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n height,\n width,\n },\n galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n },\n ]}\n testID='gallery-container'\n >\n {thumbnailGrid.map((rows, colIndex) => {\n const numOfRows = rows.length;\n return (\n <View\n key={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n style={[\n {\n flexDirection: invertedDirections ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n >\n {rows.map((thumbnail, rowIndex) => {\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText: message?.text,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n if (message === undefined) {\n return null;\n }\n\n return (\n <GalleryThumbnail\n additionalTouchableProps={additionalTouchableProps}\n borderRadius={borderRadius}\n colIndex={colIndex}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n imagesAndVideos={imagesAndVideos}\n invertedDirections={invertedDirections || false}\n key={rowIndex}\n legacyImageViewerSwipeBehaviour={legacyImageViewerSwipeBehaviour}\n message={message}\n numOfColumns={numOfColumns}\n numOfRows={numOfRows}\n onLongPress={onLongPress}\n onPress={onPress}\n onPressIn={onPressIn}\n preventPress={preventPress}\n rowIndex={rowIndex}\n setMessages={setMessages}\n setOverlay={setOverlay}\n setSelectedMessage={setSelectedMessage}\n thumbnail={thumbnail}\n VideoThumbnail={VideoThumbnail}\n />\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\ntype GalleryThumbnailProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n borderRadius: {\n borderBottomLeftRadius: number;\n borderBottomRightRadius: number;\n borderTopLeftRadius: number;\n borderTopRightRadius: number;\n };\n colIndex: number;\n imagesAndVideos: Attachment<StreamChatGenerics>[];\n invertedDirections: boolean;\n message: MessageType<StreamChatGenerics>;\n numOfColumns: number;\n numOfRows: number;\n rowIndex: number;\n thumbnail: Thumbnail;\n} & Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GalleryThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n borderRadius,\n colIndex,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n imagesAndVideos,\n invertedDirections,\n legacyImageViewerSwipeBehaviour,\n message,\n numOfColumns,\n numOfRows,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n rowIndex,\n setMessages,\n setOverlay,\n setSelectedMessage,\n thumbnail,\n VideoThumbnail,\n}: GalleryThumbnailProps<StreamChatGenerics>) => {\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: { image, imageContainer, moreImagesContainer, moreImagesText },\n },\n },\n } = useTheme();\n\n const openImageViewer = () => {\n if (!legacyImageViewerSwipeBehaviour && message) {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n setMessages([message]);\n setSelectedMessage({ messageId: message.id, url: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setSelectedMessage({ messageId: message?.id, url: thumbnail.url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n if (thumbnail.type === 'video' && !isVideoPackageAvailable()) {\n // This condition is kinda unreachable, since we render videos as file attachment if the video\n // library is not installed. But doesn't hurt to have extra safeguard, in case of some customizations.\n openUrlSafely(thumbnail.url);\n } else {\n openImageViewer();\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${message.id}/${colIndex}/${rowIndex}/${imagesAndVideos.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height: thumbnail.height,\n width: thumbnail.width,\n },\n imageContainer,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {thumbnail.type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n ]}\n thumb_url={thumbnail.thumb_url}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <GalleryImageThumbnail\n borderRadius={borderRadius}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n thumbnail={thumbnail}\n />\n </View>\n )}\n {colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${imagesAndVideos.length - 4}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n};\n\nconst GalleryImageThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n borderRadius,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n thumbnail,\n}: Pick<\n GalleryThumbnailProps<StreamChatGenerics>,\n 'ImageLoadingFailedIndicator' | 'ImageLoadingIndicator' | 'thumbnail' | 'borderRadius'\n>) => {\n const { isLoadingImage, isLoadingImageError, setLoadingImage, setLoadingImageError } =\n useLoadingImage();\n\n const {\n theme: {\n messageSimple: {\n gallery: { image },\n },\n },\n } = useTheme();\n\n return (\n <View\n style={{\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n }}\n >\n {isLoadingImageError ? (\n <ImageLoadingFailedIndicator style={[styles.imageLoadingErrorIndicatorStyle]} />\n ) : (\n <>\n <GalleryImage\n onError={(error) => {\n console.warn(error);\n setLoadingImage(false);\n setLoadingImageError(true);\n }}\n onLoadEnd={() => setLoadingImage(false)}\n onLoadStart={() => setLoadingImage(true)}\n resizeMode={thumbnail.resizeMode}\n style={[\n borderRadius,\n image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n ]}\n uri={thumbnail.url}\n />\n {isLoadingImage && (\n <View style={[styles.imageLoadingIndicatorContainer]}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n </>\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GalleryPropsWithContext<StreamChatGenerics>,\n nextProps: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n message: prevMessage,\n videos: prevVideos,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n message: nextMessage,\n videos: nextVideos,\n } = nextProps;\n\n const messageEqual =\n prevMessage?.id === nextMessage?.id &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n if (!messageEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n const videosEqual =\n prevVideos.length === nextVideos.length &&\n prevVideos.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextVideos[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextVideos[index].thumb_url),\n );\n if (!videosEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GalleryPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryProps<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator: PropImageLoadingFailedIndicator,\n ImageLoadingIndicator: PropImageLoadingIndicator,\n images: propImages,\n message: propMessage,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setOverlay: propSetOverlay,\n setSelectedMessage: propSetSelectedMessage,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setMessages, setSelectedMessage: contextSetSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message: contextMessage,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n videos: contextVideos,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n ImageLoadingFailedIndicator: ContextImageLoadingFailedIndicator,\n ImageLoadingIndicator: ContextImageLoadingIndicator,\n legacyImageViewerSwipeBehaviour,\n VideoThumbnail: ContextVideoThumnbnail,\n } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n const videos = propVideos || contextVideos;\n const message = propMessage || contextMessage;\n\n if (!images.length && !videos.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setSelectedMessage = propSetSelectedMessage || contextSetSelectedMessage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n const VideoThumbnail = PropVideoThumbnail || ContextVideoThumnbnail;\n const ImageLoadingFailedIndicator =\n PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;\n const ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_GalleryImage","_ImageReloadIndicator","_buildGallery","_getGalleryImageBorderRadius","_openUrlSafely","_ImageGalleryContext","_MessageContext","_MessagesContext","_OverlayContext","_ThemeContext","_useLoadingImage2","_native","_utils","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","styles","StyleSheet","create","errorTextSize","fontSize","galleryContainer","borderTopLeftRadius","borderTopRightRadius","flexDirection","flexWrap","overflow","imageContainer","alignItems","display","justifyContent","padding","imageContainerStyle","flex","imageLoadingErrorIndicatorStyle","bottom","left","position","imageLoadingIndicatorContainer","height","width","imageLoadingIndicatorStyle","imageReloadContainerStyle","_extends2","absoluteFillObject","moreImagesContainer","margin","moreImagesText","color","fontWeight","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","_useTheme","useTheme","_useTheme$theme$messa","theme","messageSimple","gallery","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","concat","_toConsumableArray2","imagesAndVideosValue","length","map","i","image_url","thumb_url","join","_useMemo","useMemo","buildGallery","invertedDirections","thumbnailGrid","numOfColumns","createElement","View","style","testID","__self","__source","fileName","lineNumber","columnNumber","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","getGalleryImageBorderRadius","messageText","text","undefined","GalleryThumbnail","_ref","_useTheme2","_useTheme2$theme","overlay","colors","_useTheme2$theme$mess","image","openImageViewer","messageId","id","url","defaultOnPress","type","isVideoPackageAvailable","openUrlSafely","TouchableOpacity","activeOpacity","disabled","event","emitter","defaultHandler","GalleryImageThumbnail","backgroundColor","Text","_ref2","_useLoadingImage","useLoadingImage","isLoadingImage","isLoadingImageError","onReloadImage","setLoadingImage","setLoadingImageError","_useTheme3","Fragment","ImageReloadIndicator","GalleryImage","onError","_ref3","error","nativeEvent","console","warn","onLoadEnd","onLoadStart","resizeMode","uri","areEqual","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","getUrlWithoutParams","videosEqual","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","_useImageGalleryConte","useImageGalleryContext","contextSetSelectedMessage","_useMessageContext","useMessageContext","contextAlignment","contextGroupStyles","contextImages","contextMessage","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","_useMessagesContext","useMessagesContext","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","ContextVideoThumnbnail","_useOverlayContext","useOverlayContext","contextSetOverlay","channelId","cid","reply_count","exports","displayName"],"sources":["Gallery.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { GalleryImage } from './GalleryImage';\nimport { ImageReloadIndicator } from './ImageReloadIndicator';\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport type { Thumbnail } from './utils/buildGallery/types';\nimport { getGalleryImageBorderRadius } from './utils/getGalleryImageBorderRadius';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useLoadingImage } from '../../hooks/useLoadingImage';\nimport { isVideoPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams } from '../../utils/utils';\n\nconst styles = StyleSheet.create({\n errorTextSize: { fontSize: 10 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n padding: 1,\n },\n imageContainerStyle: { alignItems: 'center', flex: 1, justifyContent: 'center' },\n imageLoadingErrorIndicatorStyle: {\n bottom: 4,\n left: 4,\n position: 'absolute',\n },\n imageLoadingIndicatorContainer: {\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\n },\n imageLoadingIndicatorStyle: {\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n imageReloadContainerStyle: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nexport type GalleryPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'videos'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n > &\n Pick<OverlayContextValue, 'setOverlay'> & {\n channelId: string | undefined;\n hasThreadReplies?: boolean;\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"excessive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO: Fix circular dependencies of imports\n */\n message?: MessageType<StreamChatGenerics>;\n };\n\nconst GalleryWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n } = props;\n\n const {\n theme: {\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n },\n },\n },\n } = useTheme();\n\n const sizeConfig = {\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n };\n\n const imagesAndVideos = [...(images || []), ...(videos || [])];\n const imagesAndVideosValue = `${images?.length}${videos?.length}${images\n ?.map((i) => `${i.image_url}${i.thumb_url}`)\n .join('')}${videos?.map((i) => `${i.image_url}${i.thumb_url}`).join('')}`;\n\n const { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideosValue],\n );\n\n if (!imagesAndVideos?.length) return null;\n const numOfColumns = thumbnailGrid.length;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n height,\n width,\n },\n galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n },\n ]}\n testID='gallery-container'\n >\n {thumbnailGrid.map((rows, colIndex) => {\n const numOfRows = rows.length;\n return (\n <View\n key={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n style={[\n {\n flexDirection: invertedDirections ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n >\n {rows.map((thumbnail, rowIndex) => {\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText: message?.text,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n if (message === undefined) {\n return null;\n }\n\n return (\n <GalleryThumbnail\n additionalTouchableProps={additionalTouchableProps}\n borderRadius={borderRadius}\n colIndex={colIndex}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n imagesAndVideos={imagesAndVideos}\n invertedDirections={invertedDirections || false}\n key={rowIndex}\n legacyImageViewerSwipeBehaviour={legacyImageViewerSwipeBehaviour}\n message={message}\n numOfColumns={numOfColumns}\n numOfRows={numOfRows}\n onLongPress={onLongPress}\n onPress={onPress}\n onPressIn={onPressIn}\n preventPress={preventPress}\n rowIndex={rowIndex}\n setMessages={setMessages}\n setOverlay={setOverlay}\n setSelectedMessage={setSelectedMessage}\n thumbnail={thumbnail}\n VideoThumbnail={VideoThumbnail}\n />\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\ntype GalleryThumbnailProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n borderRadius: {\n borderBottomLeftRadius: number;\n borderBottomRightRadius: number;\n borderTopLeftRadius: number;\n borderTopRightRadius: number;\n };\n colIndex: number;\n imagesAndVideos: Attachment<StreamChatGenerics>[];\n invertedDirections: boolean;\n message: MessageType<StreamChatGenerics>;\n numOfColumns: number;\n numOfRows: number;\n rowIndex: number;\n thumbnail: Thumbnail;\n} & Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GalleryThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n borderRadius,\n colIndex,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n imagesAndVideos,\n invertedDirections,\n legacyImageViewerSwipeBehaviour,\n message,\n numOfColumns,\n numOfRows,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n rowIndex,\n setMessages,\n setOverlay,\n setSelectedMessage,\n thumbnail,\n VideoThumbnail,\n}: GalleryThumbnailProps<StreamChatGenerics>) => {\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: { image, imageContainer, moreImagesContainer, moreImagesText },\n },\n },\n } = useTheme();\n\n const openImageViewer = () => {\n if (!legacyImageViewerSwipeBehaviour && message) {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n setMessages([message]);\n setSelectedMessage({ messageId: message.id, url: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setSelectedMessage({ messageId: message?.id, url: thumbnail.url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n if (thumbnail.type === 'video' && !isVideoPackageAvailable()) {\n // This condition is kinda unreachable, since we render videos as file attachment if the video\n // library is not installed. But doesn't hurt to have extra safeguard, in case of some customizations.\n openUrlSafely(thumbnail.url);\n } else {\n openImageViewer();\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${message.id}/${colIndex}/${rowIndex}/${imagesAndVideos.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height: thumbnail.height,\n width: thumbnail.width,\n },\n imageContainer,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {thumbnail.type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n ]}\n thumb_url={thumbnail.thumb_url}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <GalleryImageThumbnail\n borderRadius={borderRadius}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n thumbnail={thumbnail}\n />\n </View>\n )}\n {colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${imagesAndVideos.length - 4}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n};\n\nconst GalleryImageThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n borderRadius,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n thumbnail,\n}: Pick<\n GalleryThumbnailProps<StreamChatGenerics>,\n 'ImageLoadingFailedIndicator' | 'ImageLoadingIndicator' | 'thumbnail' | 'borderRadius'\n>) => {\n const {\n isLoadingImage,\n isLoadingImageError,\n onReloadImage,\n setLoadingImage,\n setLoadingImageError,\n } = useLoadingImage();\n\n const {\n theme: {\n messageSimple: {\n gallery: { image },\n },\n },\n } = useTheme();\n\n return (\n <View\n style={{\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n }}\n >\n {isLoadingImageError ? (\n <>\n <ImageLoadingFailedIndicator style={styles.imageLoadingErrorIndicatorStyle} />\n <ImageReloadIndicator\n onReloadImage={onReloadImage}\n style={styles.imageReloadContainerStyle}\n />\n </>\n ) : (\n <>\n <GalleryImage\n onError={({ nativeEvent: { error } }) => {\n console.warn(error);\n setLoadingImage(false);\n setLoadingImageError(true);\n }}\n onLoadEnd={() => setLoadingImage(false)}\n onLoadStart={() => setLoadingImage(true)}\n resizeMode={thumbnail.resizeMode}\n style={[\n borderRadius,\n image,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n ]}\n uri={thumbnail.url}\n />\n {isLoadingImage && (\n <View style={styles.imageLoadingIndicatorContainer}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n </>\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GalleryPropsWithContext<StreamChatGenerics>,\n nextProps: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n message: prevMessage,\n videos: prevVideos,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n message: nextMessage,\n videos: nextVideos,\n } = nextProps;\n\n const messageEqual =\n prevMessage?.id === nextMessage?.id &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n if (!messageEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n const videosEqual =\n prevVideos.length === nextVideos.length &&\n prevVideos.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextVideos[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextVideos[index].thumb_url),\n );\n if (!videosEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GalleryPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryProps<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator: PropImageLoadingFailedIndicator,\n ImageLoadingIndicator: PropImageLoadingIndicator,\n images: propImages,\n message: propMessage,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setOverlay: propSetOverlay,\n setSelectedMessage: propSetSelectedMessage,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setMessages, setSelectedMessage: contextSetSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message: contextMessage,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n videos: contextVideos,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n ImageLoadingFailedIndicator: ContextImageLoadingFailedIndicator,\n ImageLoadingIndicator: ContextImageLoadingIndicator,\n legacyImageViewerSwipeBehaviour,\n VideoThumbnail: ContextVideoThumnbnail,\n } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n const videos = propVideos || contextVideos;\n const message = propMessage || contextMessage;\n\n if (!images.length && !videos.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setSelectedMessage = propSetSelectedMessage || contextSetSelectedMessage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n const VideoThumbnail = PropVideoThumbnail || ContextVideoThumnbnail;\n const ImageLoadingFailedIndicator =\n PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;\n const ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
exports.ImageReloadIndicator = void 0;
|
|
6
|
+
var _react = _interopRequireDefault(require("react"));
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
|
|
9
|
+
var _icons = require("../../icons");
|
|
10
|
+
var _this = this,
|
|
11
|
+
_jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/Attachment/ImageReloadIndicator.tsx";
|
|
12
|
+
var REFRESH_ICON_SIZE = 24;
|
|
13
|
+
var ImageReloadIndicator = function ImageReloadIndicator(_ref) {
|
|
14
|
+
var onReloadImage = _ref.onReloadImage,
|
|
15
|
+
style = _ref.style;
|
|
16
|
+
var _useTheme = (0, _ThemeContext.useTheme)(),
|
|
17
|
+
grey_dark = _useTheme.theme.colors.grey_dark;
|
|
18
|
+
return _react["default"].createElement(_reactNative.Pressable, {
|
|
19
|
+
onPress: onReloadImage,
|
|
20
|
+
style: style,
|
|
21
|
+
__self: _this,
|
|
22
|
+
__source: {
|
|
23
|
+
fileName: _jsxFileName,
|
|
24
|
+
lineNumber: 23,
|
|
25
|
+
columnNumber: 5
|
|
26
|
+
}
|
|
27
|
+
}, _react["default"].createElement(_icons.Refresh, {
|
|
28
|
+
height: REFRESH_ICON_SIZE,
|
|
29
|
+
pathFill: grey_dark,
|
|
30
|
+
width: REFRESH_ICON_SIZE,
|
|
31
|
+
__self: _this,
|
|
32
|
+
__source: {
|
|
33
|
+
fileName: _jsxFileName,
|
|
34
|
+
lineNumber: 24,
|
|
35
|
+
columnNumber: 7
|
|
36
|
+
}
|
|
37
|
+
}));
|
|
38
|
+
};
|
|
39
|
+
exports.ImageReloadIndicator = ImageReloadIndicator;
|
|
40
|
+
//# sourceMappingURL=ImageReloadIndicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_ThemeContext","_icons","_this","_jsxFileName","REFRESH_ICON_SIZE","ImageReloadIndicator","_ref","onReloadImage","style","_useTheme","useTheme","grey_dark","theme","colors","createElement","Pressable","onPress","__self","__source","fileName","lineNumber","columnNumber","Refresh","height","pathFill","width","exports"],"sources":["ImageReloadIndicator.tsx"],"sourcesContent":["import React from 'react';\nimport { Pressable } from 'react-native';\n\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Refresh } from '../../icons';\n\nconst REFRESH_ICON_SIZE = 24;\n\nexport const ImageReloadIndicator = ({\n onReloadImage,\n style,\n}: {\n onReloadImage: () => void;\n style: React.ComponentProps<typeof Pressable>['style'];\n}) => {\n const {\n theme: {\n colors: { grey_dark },\n },\n } = useTheme();\n\n return (\n <Pressable onPress={onReloadImage} style={style}>\n <Refresh height={REFRESH_ICON_SIZE} pathFill={grey_dark} width={REFRESH_ICON_SIZE} />\n </Pressable>\n );\n};\n"],"mappings":";;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,aAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAAsC,IAAAI,KAAA;EAAAC,YAAA;AAEtC,IAAMC,iBAAiB,GAAG,EAAE;AAErB,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAAC,IAAA,EAM3B;EAAA,IALJC,aAAa,GAAAD,IAAA,CAAbC,aAAa;IACbC,KAAK,GAAAF,IAAA,CAALE,KAAK;EAKL,IAAAC,SAAA,GAII,IAAAC,sBAAQ,GAAE;IAFAC,SAAS,GAAAF,SAAA,CADrBG,KAAK,CACHC,MAAM,CAAIF,SAAS;EAIvB,OACEf,MAAA,YAAAkB,aAAA,CAACf,YAAA,CAAAgB,SAAS;IAACC,OAAO,EAAET,aAAc;IAACC,KAAK,EAAEA,KAAM;IAAAS,MAAA,EAAAf,KAAA;IAAAgB,QAAA;MAAAC,QAAA,EAAAhB,YAAA;MAAAiB,UAAA;MAAAC,YAAA;IAAA;EAAA,GAC9CzB,MAAA,YAAAkB,aAAA,CAACb,MAAA,CAAAqB,OAAO;IAACC,MAAM,EAAEnB,iBAAkB;IAACoB,QAAQ,EAAEb,SAAU;IAACc,KAAK,EAAErB,iBAAkB;IAAAa,MAAA,EAAAf,KAAA;IAAAgB,QAAA;MAAAC,QAAA,EAAAhB,YAAA;MAAAiB,UAAA;MAAAC,YAAA;IAAA;EAAA,EAAG,CAC3E;AAEhB,CAAC;AAACK,OAAA,CAAArB,oBAAA,GAAAA,oBAAA"}
|
|
@@ -484,7 +484,9 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
484
484
|
}
|
|
485
485
|
}, [threadPropsExists]);
|
|
486
486
|
var handleAppBackground = (0, _react.useCallback)(function () {
|
|
487
|
-
|
|
487
|
+
var _channelData$own_capa;
|
|
488
|
+
var channelData = channel.data;
|
|
489
|
+
if (channelData != null && (_channelData$own_capa = channelData.own_capabilities) != null && _channelData$own_capa.includes('send-typing-events')) {
|
|
488
490
|
channel.sendEvent({
|
|
489
491
|
parent_id: thread == null ? void 0 : thread.id,
|
|
490
492
|
type: 'typing.stop'
|
|
@@ -1605,7 +1607,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1605
1607
|
}();
|
|
1606
1608
|
var deleteMessage = function () {
|
|
1607
1609
|
var _ref23 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee19(message) {
|
|
1608
|
-
var
|
|
1610
|
+
var _data;
|
|
1609
1611
|
return _regenerator["default"].wrap(function _callee19$(_context19) {
|
|
1610
1612
|
while (1) switch (_context19.prev = _context19.next) {
|
|
1611
1613
|
case 0:
|
|
@@ -1652,9 +1654,9 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1652
1654
|
}
|
|
1653
1655
|
});
|
|
1654
1656
|
case 14:
|
|
1655
|
-
|
|
1656
|
-
if (
|
|
1657
|
-
updateMessage((0, _extends2["default"])({},
|
|
1657
|
+
_data = _context19.sent;
|
|
1658
|
+
if (_data != null && _data.message) {
|
|
1659
|
+
updateMessage((0, _extends2["default"])({}, _data.message));
|
|
1658
1660
|
}
|
|
1659
1661
|
case 16:
|
|
1660
1662
|
case "end":
|
|
@@ -1995,7 +1997,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
1995
1997
|
__self: _this,
|
|
1996
1998
|
__source: {
|
|
1997
1999
|
fileName: _jsxFileName,
|
|
1998
|
-
lineNumber:
|
|
2000
|
+
lineNumber: 1980,
|
|
1999
2001
|
columnNumber: 12
|
|
2000
2002
|
}
|
|
2001
2003
|
});
|
|
@@ -2009,7 +2011,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2009
2011
|
__self: _this,
|
|
2010
2012
|
__source: {
|
|
2011
2013
|
fileName: _jsxFileName,
|
|
2012
|
-
lineNumber:
|
|
2014
|
+
lineNumber: 1985,
|
|
2013
2015
|
columnNumber: 7
|
|
2014
2016
|
}
|
|
2015
2017
|
}, t('Please select a channel first'));
|
|
@@ -2022,7 +2024,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2022
2024
|
__self: _this,
|
|
2023
2025
|
__source: {
|
|
2024
2026
|
fileName: _jsxFileName,
|
|
2025
|
-
lineNumber:
|
|
2027
|
+
lineNumber: 1992,
|
|
2026
2028
|
columnNumber: 5
|
|
2027
2029
|
}
|
|
2028
2030
|
}), _react["default"].createElement(_ChannelContext.ChannelProvider, {
|
|
@@ -2030,7 +2032,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2030
2032
|
__self: _this,
|
|
2031
2033
|
__source: {
|
|
2032
2034
|
fileName: _jsxFileName,
|
|
2033
|
-
lineNumber:
|
|
2035
|
+
lineNumber: 1998,
|
|
2034
2036
|
columnNumber: 7
|
|
2035
2037
|
}
|
|
2036
2038
|
}, _react["default"].createElement(_OwnCapabilitiesContext.OwnCapabilitiesProvider, {
|
|
@@ -2038,7 +2040,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2038
2040
|
__self: _this,
|
|
2039
2041
|
__source: {
|
|
2040
2042
|
fileName: _jsxFileName,
|
|
2041
|
-
lineNumber:
|
|
2043
|
+
lineNumber: 1999,
|
|
2042
2044
|
columnNumber: 9
|
|
2043
2045
|
}
|
|
2044
2046
|
}, _react["default"].createElement(_TypingContext.TypingProvider, {
|
|
@@ -2046,7 +2048,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2046
2048
|
__self: _this,
|
|
2047
2049
|
__source: {
|
|
2048
2050
|
fileName: _jsxFileName,
|
|
2049
|
-
lineNumber:
|
|
2051
|
+
lineNumber: 2000,
|
|
2050
2052
|
columnNumber: 11
|
|
2051
2053
|
}
|
|
2052
2054
|
}, _react["default"].createElement(_PaginatedMessageListContext.PaginatedMessageListProvider, {
|
|
@@ -2054,7 +2056,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2054
2056
|
__self: _this,
|
|
2055
2057
|
__source: {
|
|
2056
2058
|
fileName: _jsxFileName,
|
|
2057
|
-
lineNumber:
|
|
2059
|
+
lineNumber: 2001,
|
|
2058
2060
|
columnNumber: 13
|
|
2059
2061
|
}
|
|
2060
2062
|
}, _react["default"].createElement(_MessagesContext.MessagesProvider, {
|
|
@@ -2062,7 +2064,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2062
2064
|
__self: _this,
|
|
2063
2065
|
__source: {
|
|
2064
2066
|
fileName: _jsxFileName,
|
|
2065
|
-
lineNumber:
|
|
2067
|
+
lineNumber: 2002,
|
|
2066
2068
|
columnNumber: 15
|
|
2067
2069
|
}
|
|
2068
2070
|
}, _react["default"].createElement(_ThreadContext.ThreadProvider, {
|
|
@@ -2070,7 +2072,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2070
2072
|
__self: _this,
|
|
2071
2073
|
__source: {
|
|
2072
2074
|
fileName: _jsxFileName,
|
|
2073
|
-
lineNumber:
|
|
2075
|
+
lineNumber: 2003,
|
|
2074
2076
|
columnNumber: 17
|
|
2075
2077
|
}
|
|
2076
2078
|
}, _react["default"].createElement(_SuggestionsContext.SuggestionsProvider, {
|
|
@@ -2078,7 +2080,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2078
2080
|
__self: _this,
|
|
2079
2081
|
__source: {
|
|
2080
2082
|
fileName: _jsxFileName,
|
|
2081
|
-
lineNumber:
|
|
2083
|
+
lineNumber: 2004,
|
|
2082
2084
|
columnNumber: 19
|
|
2083
2085
|
}
|
|
2084
2086
|
}, _react["default"].createElement(_MessageInputContext.MessageInputProvider, {
|
|
@@ -2086,7 +2088,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2086
2088
|
__self: _this,
|
|
2087
2089
|
__source: {
|
|
2088
2090
|
fileName: _jsxFileName,
|
|
2089
|
-
lineNumber:
|
|
2091
|
+
lineNumber: 2005,
|
|
2090
2092
|
columnNumber: 21
|
|
2091
2093
|
}
|
|
2092
2094
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -2096,7 +2098,7 @@ var ChannelWithContext = function ChannelWithContext(props) {
|
|
|
2096
2098
|
__self: _this,
|
|
2097
2099
|
__source: {
|
|
2098
2100
|
fileName: _jsxFileName,
|
|
2099
|
-
lineNumber:
|
|
2101
|
+
lineNumber: 2006,
|
|
2100
2102
|
columnNumber: 23
|
|
2101
2103
|
}
|
|
2102
2104
|
}, children))))))))));
|
|
@@ -2147,7 +2149,7 @@ var Channel = function Channel(props) {
|
|
|
2147
2149
|
__self: _this,
|
|
2148
2150
|
__source: {
|
|
2149
2151
|
fileName: _jsxFileName,
|
|
2150
|
-
lineNumber:
|
|
2152
|
+
lineNumber: 2063,
|
|
2151
2153
|
columnNumber: 5
|
|
2152
2154
|
}
|
|
2153
2155
|
}));
|