stream-chat-react-native-core 4.4.0-beta.2 → 4.4.0-beta.3
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/README.md +2 -2
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js +4 -12
- package/lib/commonjs/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
- package/lib/commonjs/components/Channel/hooks/useCreateThreadContext.js +4 -12
- package/lib/commonjs/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js +8 -4
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useAppSettings.js +80 -0
- package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +1 -0
- package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js +3 -1
- package/lib/commonjs/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/commonjs/components/Message/Message.js +27 -22
- package/lib/commonjs/components/Message/Message.js.map +1 -1
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js +22 -14
- package/lib/commonjs/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js +108 -40
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/ImageUploadPreview.js +117 -24
- package/lib/commonjs/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js +52 -20
- package/lib/commonjs/components/MessageInput/UploadProgressIndicator.js.map +1 -1
- package/lib/commonjs/contexts/chatContext/ChatContext.js +2 -2
- package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/commonjs/contexts/messageContext/MessageContext.js +2 -2
- package/lib/commonjs/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +145 -119
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/commonjs/i18n/en.json +2 -0
- package/lib/commonjs/i18n/fr.json +2 -0
- package/lib/commonjs/i18n/hi.json +2 -0
- package/lib/commonjs/i18n/it.json +2 -0
- package/lib/commonjs/i18n/ja.json +3 -1
- package/lib/commonjs/i18n/ko.json +3 -1
- package/lib/commonjs/i18n/nl.json +2 -0
- package/lib/commonjs/i18n/ru.json +2 -0
- package/lib/commonjs/i18n/tr.json +2 -0
- package/lib/commonjs/icons/Warning.js +38 -0
- package/lib/commonjs/icons/Warning.js.map +1 -0
- package/lib/commonjs/icons/index.js +13 -0
- package/lib/commonjs/icons/index.js.map +1 -1
- package/lib/commonjs/utils/utils.js +33 -2
- package/lib/commonjs/utils/utils.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js +4 -12
- package/lib/module/components/Channel/hooks/useCreatePaginatedMessageListContext.js.map +1 -1
- package/lib/module/components/Channel/hooks/useCreateThreadContext.js +4 -12
- package/lib/module/components/Channel/hooks/useCreateThreadContext.js.map +1 -1
- package/lib/module/components/Chat/Chat.js +8 -4
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/Chat/hooks/useAppSettings.js +80 -0
- package/lib/module/components/Chat/hooks/useAppSettings.js.map +1 -0
- package/lib/module/components/Chat/hooks/useCreateChatContext.js +3 -1
- package/lib/module/components/Chat/hooks/useCreateChatContext.js.map +1 -1
- package/lib/module/components/Message/Message.js +27 -22
- package/lib/module/components/Message/Message.js.map +1 -1
- package/lib/module/components/Message/MessageSimple/utils/renderText.js +22 -14
- package/lib/module/components/Message/MessageSimple/utils/renderText.js.map +1 -1
- package/lib/module/components/MessageInput/FileUploadPreview.js +108 -40
- package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/ImageUploadPreview.js +117 -24
- package/lib/module/components/MessageInput/ImageUploadPreview.js.map +1 -1
- package/lib/module/components/MessageInput/UploadProgressIndicator.js +52 -20
- package/lib/module/components/MessageInput/UploadProgressIndicator.js.map +1 -1
- package/lib/module/contexts/chatContext/ChatContext.js +2 -2
- package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/module/contexts/messageContext/MessageContext.js +2 -2
- package/lib/module/contexts/messageContext/MessageContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +145 -119
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/hooks/useMessageDetailsForState.js.map +1 -1
- package/lib/module/i18n/en.json +2 -0
- package/lib/module/i18n/fr.json +2 -0
- package/lib/module/i18n/hi.json +2 -0
- package/lib/module/i18n/it.json +2 -0
- package/lib/module/i18n/ja.json +3 -1
- package/lib/module/i18n/ko.json +3 -1
- package/lib/module/i18n/nl.json +2 -0
- package/lib/module/i18n/ru.json +2 -0
- package/lib/module/i18n/tr.json +2 -0
- package/lib/module/icons/Warning.js +38 -0
- package/lib/module/icons/Warning.js.map +1 -0
- package/lib/module/icons/index.js +13 -0
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/utils/utils.js +33 -2
- package/lib/module/utils/utils.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Chat/hooks/__tests__/useAppSettings.test.d.ts +1 -0
- package/lib/typescript/components/Chat/hooks/useAppSettings.d.ts +3 -0
- package/lib/typescript/components/Chat/hooks/useCreateChatContext.d.ts +1 -1
- package/lib/typescript/components/Message/Message.d.ts +12 -2
- package/lib/typescript/components/MessageInput/UploadProgressIndicator.d.ts +1 -3
- package/lib/typescript/contexts/chatContext/ChatContext.d.ts +5 -1
- package/lib/typescript/contexts/messageContext/MessageContext.d.ts +4 -4
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +3 -3
- package/lib/typescript/i18n/en.json +2 -0
- package/lib/typescript/i18n/fr.json +2 -0
- package/lib/typescript/i18n/hi.json +2 -0
- package/lib/typescript/i18n/it.json +2 -0
- package/lib/typescript/i18n/ja.json +3 -1
- package/lib/typescript/i18n/ko.json +3 -1
- package/lib/typescript/i18n/nl.json +2 -0
- package/lib/typescript/i18n/ru.json +2 -0
- package/lib/typescript/i18n/tr.json +2 -0
- package/lib/typescript/icons/Warning.d.ts +3 -0
- package/lib/typescript/icons/index.d.ts +1 -0
- package/lib/typescript/utils/Streami18n.d.ts +6 -0
- package/lib/typescript/utils/utils.d.ts +15 -2
- package/package.json +1 -1
- package/src/components/Channel/Channel.tsx +1 -1
- package/src/components/Channel/hooks/useCreatePaginatedMessageListContext.ts +3 -9
- package/src/components/Channel/hooks/useCreateThreadContext.ts +3 -9
- package/src/components/ChannelList/hooks/listeners/__tests__/useChannelUpdated.test.tsx +1 -0
- package/src/components/Chat/Chat.tsx +4 -0
- package/src/components/Chat/hooks/__tests__/useAppSettings.test.tsx +34 -0
- package/src/components/Chat/hooks/useAppSettings.ts +39 -0
- package/src/components/Chat/hooks/useCreateChatContext.ts +2 -0
- package/src/components/Message/Message.tsx +56 -48
- package/src/components/Message/MessageSimple/utils/renderText.tsx +9 -0
- package/src/components/MessageInput/FileUploadPreview.tsx +60 -14
- package/src/components/MessageInput/ImageUploadPreview.tsx +95 -42
- package/src/components/MessageInput/UploadProgressIndicator.tsx +49 -22
- package/src/components/MessageInput/__tests__/FileUploadPreview.test.js +50 -80
- package/src/components/MessageInput/__tests__/ImageUploadPreview.test.js +49 -74
- package/src/components/MessageInput/__tests__/UploadProgressIndicator.test.js +36 -13
- package/src/components/MessageInput/__tests__/__snapshots__/UploadProgressIndicator.test.js.snap +122 -17
- package/src/contexts/chatContext/ChatContext.tsx +5 -1
- package/src/contexts/messageContext/MessageContext.tsx +7 -4
- package/src/contexts/messageInputContext/MessageInputContext.tsx +127 -96
- package/src/contexts/messageInputContext/hooks/useMessageDetailsForState.ts +2 -2
- package/src/i18n/en.json +2 -0
- package/src/i18n/fr.json +2 -0
- package/src/i18n/hi.json +2 -0
- package/src/i18n/it.json +2 -0
- package/src/i18n/ja.json +3 -1
- package/src/i18n/ko.json +3 -1
- package/src/i18n/nl.json +2 -0
- package/src/i18n/ru.json +2 -0
- package/src/i18n/tr.json +2 -0
- package/src/icons/Warning.tsx +12 -0
- package/src/icons/index.ts +1 -0
- package/src/utils/utils.ts +53 -1
- package/src/version.json +1 -1
- package/src/components/MessageInput/__tests__/__snapshots__/FileUploadPreview.test.js.snap +0 -4413
- package/src/components/MessageInput/__tests__/__snapshots__/ImageUploadPreview.test.js.snap +0 -2373
|
@@ -23,8 +23,12 @@ var _MessagesContext = require("../../contexts/messagesContext/MessagesContext")
|
|
|
23
23
|
|
|
24
24
|
var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
|
|
25
25
|
|
|
26
|
+
var _TranslationContext = require("../../contexts/translationContext/TranslationContext");
|
|
27
|
+
|
|
26
28
|
var _Close = require("../../icons/Close");
|
|
27
29
|
|
|
30
|
+
var _Warning = require("../../icons/Warning");
|
|
31
|
+
|
|
28
32
|
var _utils = require("../../utils/utils");
|
|
29
33
|
|
|
30
34
|
var _FileAttachment = require("../Attachment/FileAttachment");
|
|
@@ -37,6 +41,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
37
41
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
38
42
|
|
|
39
43
|
var FILE_PREVIEW_HEIGHT = 60;
|
|
44
|
+
var WARNING_ICON_SIZE = 16;
|
|
40
45
|
|
|
41
46
|
var styles = _reactNative.StyleSheet.create({
|
|
42
47
|
dismiss: {
|
|
@@ -80,9 +85,76 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
80
85
|
borderRadius: 12,
|
|
81
86
|
marginLeft: 8,
|
|
82
87
|
marginRight: 8
|
|
88
|
+
},
|
|
89
|
+
unsupportedFile: {
|
|
90
|
+
flexDirection: 'row',
|
|
91
|
+
paddingLeft: 10
|
|
92
|
+
},
|
|
93
|
+
unsupportedFileText: {
|
|
94
|
+
fontSize: 16
|
|
95
|
+
},
|
|
96
|
+
warningIconStyle: {
|
|
97
|
+
borderRadius: 24,
|
|
98
|
+
marginTop: 4
|
|
83
99
|
}
|
|
84
100
|
});
|
|
85
101
|
|
|
102
|
+
var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileSizeIndicator(_ref) {
|
|
103
|
+
var indicatorType = _ref.indicatorType,
|
|
104
|
+
item = _ref.item;
|
|
105
|
+
|
|
106
|
+
var _useTheme = (0, _ThemeContext.useTheme)(),
|
|
107
|
+
_useTheme$theme = _useTheme.theme,
|
|
108
|
+
_useTheme$theme$color = _useTheme$theme.colors,
|
|
109
|
+
accent_red = _useTheme$theme$color.accent_red,
|
|
110
|
+
grey = _useTheme$theme$color.grey,
|
|
111
|
+
fileSizeText = _useTheme$theme.messageInput.fileUploadPreview.fileSizeText;
|
|
112
|
+
|
|
113
|
+
var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(),
|
|
114
|
+
t = _useTranslationContex.t;
|
|
115
|
+
|
|
116
|
+
return indicatorType === _utils.ProgressIndicatorTypes.NOT_SUPPORTED ? _react["default"].createElement(_reactNative.View, {
|
|
117
|
+
style: styles.unsupportedFile,
|
|
118
|
+
__self: _this,
|
|
119
|
+
__source: {
|
|
120
|
+
fileName: _jsxFileName,
|
|
121
|
+
lineNumber: 95,
|
|
122
|
+
columnNumber: 5
|
|
123
|
+
}
|
|
124
|
+
}, _react["default"].createElement(_Warning.Warning, {
|
|
125
|
+
height: WARNING_ICON_SIZE,
|
|
126
|
+
pathFill: accent_red,
|
|
127
|
+
style: styles.warningIconStyle,
|
|
128
|
+
width: WARNING_ICON_SIZE,
|
|
129
|
+
__self: _this,
|
|
130
|
+
__source: {
|
|
131
|
+
fileName: _jsxFileName,
|
|
132
|
+
lineNumber: 96,
|
|
133
|
+
columnNumber: 7
|
|
134
|
+
}
|
|
135
|
+
}), _react["default"].createElement(_reactNative.Text, {
|
|
136
|
+
style: [styles.unsupportedFileText, {
|
|
137
|
+
color: grey
|
|
138
|
+
}],
|
|
139
|
+
__self: _this,
|
|
140
|
+
__source: {
|
|
141
|
+
fileName: _jsxFileName,
|
|
142
|
+
lineNumber: 102,
|
|
143
|
+
columnNumber: 7
|
|
144
|
+
}
|
|
145
|
+
}, t('File type not supported'))) : _react["default"].createElement(_reactNative.Text, {
|
|
146
|
+
style: [styles.fileSizeText, {
|
|
147
|
+
color: grey
|
|
148
|
+
}, fileSizeText],
|
|
149
|
+
__self: _this,
|
|
150
|
+
__source: {
|
|
151
|
+
fileName: _jsxFileName,
|
|
152
|
+
lineNumber: 107,
|
|
153
|
+
columnNumber: 5
|
|
154
|
+
}
|
|
155
|
+
}, (0, _FileAttachment.getFileSizeDisplayText)(item.file.size));
|
|
156
|
+
};
|
|
157
|
+
|
|
86
158
|
var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props) {
|
|
87
159
|
var FileAttachmentIcon = props.FileAttachmentIcon,
|
|
88
160
|
fileUploads = props.fileUploads,
|
|
@@ -95,39 +167,36 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
95
167
|
flatListWidth = _useState2[0],
|
|
96
168
|
setFlatListWidth = _useState2[1];
|
|
97
169
|
|
|
98
|
-
var
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
black =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
var
|
|
116
|
-
item = _ref.item;
|
|
117
|
-
var indicatorType = item.state === _utils.FileState.UPLOADING ? _utils.ProgressIndicatorTypes.IN_PROGRESS : item.state === _utils.FileState.UPLOAD_FAILED ? _utils.ProgressIndicatorTypes.RETRY : undefined;
|
|
170
|
+
var _useTheme2 = (0, _ThemeContext.useTheme)(),
|
|
171
|
+
_useTheme2$theme = _useTheme2.theme,
|
|
172
|
+
_useTheme2$theme$colo = _useTheme2$theme.colors,
|
|
173
|
+
black = _useTheme2$theme$colo.black,
|
|
174
|
+
grey_whisper = _useTheme2$theme$colo.grey_whisper,
|
|
175
|
+
overlay = _useTheme2$theme$colo.overlay,
|
|
176
|
+
_useTheme2$theme$mess = _useTheme2$theme.messageInput.fileUploadPreview,
|
|
177
|
+
dismiss = _useTheme2$theme$mess.dismiss,
|
|
178
|
+
fileContainer = _useTheme2$theme$mess.fileContainer,
|
|
179
|
+
fileContentContainer = _useTheme2$theme$mess.fileContentContainer,
|
|
180
|
+
filenameText = _useTheme2$theme$mess.filenameText,
|
|
181
|
+
fileTextContainer = _useTheme2$theme$mess.fileTextContainer,
|
|
182
|
+
flatList = _useTheme2$theme$mess.flatList;
|
|
183
|
+
|
|
184
|
+
var renderItem = function renderItem(_ref2) {
|
|
185
|
+
var index = _ref2.index,
|
|
186
|
+
item = _ref2.item;
|
|
187
|
+
var indicatorType = (0, _utils.getIndicatorTypeForFileState)(item.state);
|
|
118
188
|
return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_UploadProgressIndicator.UploadProgressIndicator, {
|
|
119
189
|
action: function action() {
|
|
120
190
|
uploadFile({
|
|
121
191
|
newFile: item
|
|
122
192
|
});
|
|
123
193
|
},
|
|
124
|
-
active: item.state !== _utils.FileState.UPLOADED && item.state !== _utils.FileState.FINISHED,
|
|
125
194
|
style: styles.overlay,
|
|
126
195
|
type: indicatorType,
|
|
127
196
|
__self: _this,
|
|
128
197
|
__source: {
|
|
129
198
|
fileName: _jsxFileName,
|
|
130
|
-
lineNumber:
|
|
199
|
+
lineNumber: 152,
|
|
131
200
|
columnNumber: 9
|
|
132
201
|
}
|
|
133
202
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -140,7 +209,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
140
209
|
__self: _this,
|
|
141
210
|
__source: {
|
|
142
211
|
fileName: _jsxFileName,
|
|
143
|
-
lineNumber:
|
|
212
|
+
lineNumber: 159,
|
|
144
213
|
columnNumber: 11
|
|
145
214
|
}
|
|
146
215
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -148,7 +217,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
148
217
|
__self: _this,
|
|
149
218
|
__source: {
|
|
150
219
|
fileName: _jsxFileName,
|
|
151
|
-
lineNumber:
|
|
220
|
+
lineNumber: 174,
|
|
152
221
|
columnNumber: 13
|
|
153
222
|
}
|
|
154
223
|
}, _react["default"].createElement(FileAttachmentIcon, {
|
|
@@ -156,7 +225,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
156
225
|
__self: _this,
|
|
157
226
|
__source: {
|
|
158
227
|
fileName: _jsxFileName,
|
|
159
|
-
lineNumber:
|
|
228
|
+
lineNumber: 175,
|
|
160
229
|
columnNumber: 15
|
|
161
230
|
}
|
|
162
231
|
}), _react["default"].createElement(_reactNative.View, {
|
|
@@ -164,7 +233,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
164
233
|
__self: _this,
|
|
165
234
|
__source: {
|
|
166
235
|
fileName: _jsxFileName,
|
|
167
|
-
lineNumber:
|
|
236
|
+
lineNumber: 176,
|
|
168
237
|
columnNumber: 15
|
|
169
238
|
}
|
|
170
239
|
}, _react["default"].createElement(_reactNative.Text, {
|
|
@@ -176,20 +245,19 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
176
245
|
__self: _this,
|
|
177
246
|
__source: {
|
|
178
247
|
fileName: _jsxFileName,
|
|
179
|
-
lineNumber:
|
|
248
|
+
lineNumber: 177,
|
|
180
249
|
columnNumber: 17
|
|
181
250
|
}
|
|
182
|
-
}, item.file.name || ''), _react["default"].createElement(
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
}, fileSizeText],
|
|
251
|
+
}, item.file.name || ''), indicatorType !== null && _react["default"].createElement(UnsupportedFileTypeOrFileSizeIndicator, {
|
|
252
|
+
indicatorType: indicatorType,
|
|
253
|
+
item: item,
|
|
186
254
|
__self: _this,
|
|
187
255
|
__source: {
|
|
188
256
|
fileName: _jsxFileName,
|
|
189
|
-
lineNumber:
|
|
190
|
-
columnNumber:
|
|
257
|
+
lineNumber: 196,
|
|
258
|
+
columnNumber: 19
|
|
191
259
|
}
|
|
192
|
-
}
|
|
260
|
+
}))))), _react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
193
261
|
onPress: function onPress() {
|
|
194
262
|
removeFile(item.id);
|
|
195
263
|
},
|
|
@@ -200,14 +268,14 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
200
268
|
__self: _this,
|
|
201
269
|
__source: {
|
|
202
270
|
fileName: _jsxFileName,
|
|
203
|
-
lineNumber:
|
|
271
|
+
lineNumber: 205,
|
|
204
272
|
columnNumber: 9
|
|
205
273
|
}
|
|
206
274
|
}, _react["default"].createElement(_Close.Close, {
|
|
207
275
|
__self: _this,
|
|
208
276
|
__source: {
|
|
209
277
|
fileName: _jsxFileName,
|
|
210
|
-
lineNumber:
|
|
278
|
+
lineNumber: 212,
|
|
211
279
|
columnNumber: 11
|
|
212
280
|
}
|
|
213
281
|
})));
|
|
@@ -235,8 +303,8 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
235
303
|
keyExtractor: function keyExtractor(item) {
|
|
236
304
|
return item.id;
|
|
237
305
|
},
|
|
238
|
-
onLayout: function onLayout(
|
|
239
|
-
var width =
|
|
306
|
+
onLayout: function onLayout(_ref3) {
|
|
307
|
+
var width = _ref3.nativeEvent.layout.width;
|
|
240
308
|
setFlatListWidth(width);
|
|
241
309
|
},
|
|
242
310
|
ref: flatListRef,
|
|
@@ -245,7 +313,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
245
313
|
__self: _this,
|
|
246
314
|
__source: {
|
|
247
315
|
fileName: _jsxFileName,
|
|
248
|
-
lineNumber:
|
|
316
|
+
lineNumber: 227,
|
|
249
317
|
columnNumber: 5
|
|
250
318
|
}
|
|
251
319
|
}) : null;
|
|
@@ -279,7 +347,7 @@ var FileUploadPreview = function FileUploadPreview(props) {
|
|
|
279
347
|
__self: _this,
|
|
280
348
|
__source: {
|
|
281
349
|
fileName: _jsxFileName,
|
|
282
|
-
lineNumber:
|
|
350
|
+
lineNumber: 287,
|
|
283
351
|
columnNumber: 5
|
|
284
352
|
}
|
|
285
353
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FileUploadPreview.tsx"],"names":["FILE_PREVIEW_HEIGHT","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","padding","fileContentContainer","filenameText","fontSize","fontWeight","paddingLeft","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","FileUploadPreviewWithContext","props","FileAttachmentIcon","fileUploads","removeFile","uploadFile","flatListRef","flatListWidth","setFlatListWidth","theme","colors","black","grey","grey_whisper","messageInput","fileUploadPreview","renderItem","index","item","indicatorType","state","FileState","UPLOADING","ProgressIndicatorTypes","IN_PROGRESS","UPLOAD_FAILED","RETRY","undefined","newFile","UPLOADED","FINISHED","length","borderColor","file","type","color","name","size","id","backgroundColor","fileUploadsLength","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","prevFileUploads","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n FileUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Close } from '../../icons/Close';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { FileState, ProgressIndicatorTypes } from '../../utils/utils';\n\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\n\nconst FILE_PREVIEW_HEIGHT = 60;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 14,\n top: 4,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n padding: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingLeft: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingLeft: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n});\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { FileAttachmentIcon, fileUploads, removeFile, uploadFile } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n const {\n theme: {\n colors: { black, grey, grey_whisper, overlay },\n messageInput: {\n fileUploadPreview: {\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileSizeText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType =\n item.state === FileState.UPLOADING\n ? ProgressIndicatorTypes.IN_PROGRESS\n : item.state === FileState.UPLOAD_FAILED\n ? ProgressIndicatorTypes.RETRY\n : undefined;\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n active={item.state !== FileState.UPLOADED && item.state !== FileState.FINISHED}\n style={styles.overlay}\n type={indicatorType}\n >\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <FileAttachmentIcon mimeType={item.file.type} />\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n filenameText,\n ]}\n >\n {item.file.name || ''}\n </Text>\n <Text style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {getFileSizeDisplayText(item.file.size)}\n </Text>\n </View>\n </View>\n </View>\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: overlay }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close />\n </TouchableOpacity>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => item.id}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) => prevFileUpload.state === nextFileUploads[index].state,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { fileUploads, removeFile, uploadFile } = useMessageInputContext<StreamChatGenerics>();\n const { FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{ FileAttachmentIcon, fileUploads, removeFile, uploadFile }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["FileUploadPreview.tsx"],"names":["FILE_PREVIEW_HEIGHT","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","padding","fileContentContainer","filenameText","fontSize","fontWeight","paddingLeft","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","unsupportedFile","unsupportedFileText","warningIconStyle","marginTop","UnsupportedFileTypeOrFileSizeIndicator","indicatorType","item","theme","colors","accent_red","grey","messageInput","fileUploadPreview","t","ProgressIndicatorTypes","NOT_SUPPORTED","color","file","size","FileUploadPreviewWithContext","props","FileAttachmentIcon","fileUploads","removeFile","uploadFile","flatListRef","flatListWidth","setFlatListWidth","black","grey_whisper","renderItem","index","state","newFile","length","borderColor","type","name","id","backgroundColor","fileUploadsLength","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","prevFileUploads","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n FileUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\n\nconst FILE_PREVIEW_HEIGHT = 60;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 14,\n top: 4,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n padding: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingLeft: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingLeft: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n unsupportedFile: {\n flexDirection: 'row',\n paddingLeft: 10,\n },\n unsupportedFileText: {\n fontSize: 16,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 4,\n },\n});\n\nconst UnsupportedFileTypeOrFileSizeIndicator = ({\n indicatorType,\n item,\n}: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes];\n item: FileUpload;\n}) => {\n const {\n theme: {\n colors: { accent_red, grey },\n messageInput: {\n fileUploadPreview: { fileSizeText },\n },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={styles.unsupportedFile}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.unsupportedFileText, { color: grey }]}>\n {t('File type not supported')}\n </Text>\n </View>\n ) : (\n <Text style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {getFileSizeDisplayText(item.file.size)}\n </Text>\n );\n};\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'FileAttachmentIcon'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { FileAttachmentIcon, fileUploads, removeFile, uploadFile } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n const {\n theme: {\n colors: { black, grey_whisper, overlay },\n messageInput: {\n fileUploadPreview: {\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n style={styles.overlay}\n type={indicatorType}\n >\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <FileAttachmentIcon mimeType={item.file.type} />\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n filenameText,\n ]}\n >\n {item.file.name || ''}\n </Text>\n {indicatorType !== null && (\n <UnsupportedFileTypeOrFileSizeIndicator\n indicatorType={indicatorType}\n item={item}\n />\n )}\n </View>\n </View>\n </View>\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: overlay }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close />\n </TouchableOpacity>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => item.id}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) => prevFileUpload.state === nextFileUploads[index].state,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { fileUploads, removeFile, uploadFile } = useMessageInputContext<StreamChatGenerics>();\n\n const { FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{ FileAttachmentIcon, fileUploads, removeFile, uploadFile }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"]}
|
|
@@ -17,14 +17,19 @@ var _MessageInputContext = require("../../contexts/messageInputContext/MessageIn
|
|
|
17
17
|
|
|
18
18
|
var _ThemeContext = require("../../contexts/themeContext/ThemeContext");
|
|
19
19
|
|
|
20
|
+
var _TranslationContext = require("../../contexts/translationContext/TranslationContext");
|
|
21
|
+
|
|
20
22
|
var _Close = require("../../icons/Close");
|
|
21
23
|
|
|
24
|
+
var _Warning = require("../../icons/Warning");
|
|
25
|
+
|
|
22
26
|
var _utils = require("../../utils/utils");
|
|
23
27
|
|
|
24
28
|
var _this = this,
|
|
25
29
|
_jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/MessageInput/ImageUploadPreview.tsx";
|
|
26
30
|
|
|
27
31
|
var IMAGE_PREVIEW_SIZE = 100;
|
|
32
|
+
var WARNING_ICON_SIZE = 16;
|
|
28
33
|
|
|
29
34
|
var styles = _reactNative.StyleSheet.create({
|
|
30
35
|
dismiss: {
|
|
@@ -33,18 +38,46 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
33
38
|
right: 8,
|
|
34
39
|
top: 8
|
|
35
40
|
},
|
|
41
|
+
fileSizeText: {
|
|
42
|
+
fontSize: 12,
|
|
43
|
+
paddingLeft: 10
|
|
44
|
+
},
|
|
36
45
|
flatList: {
|
|
37
46
|
paddingBottom: 12
|
|
38
47
|
},
|
|
48
|
+
iconContainer: {
|
|
49
|
+
alignItems: 'center',
|
|
50
|
+
flexDirection: 'row',
|
|
51
|
+
justifyContent: 'center'
|
|
52
|
+
},
|
|
39
53
|
itemContainer: {
|
|
40
54
|
flexDirection: 'row',
|
|
41
55
|
height: IMAGE_PREVIEW_SIZE,
|
|
42
56
|
marginLeft: 8
|
|
43
57
|
},
|
|
58
|
+
unsupportedImage: {
|
|
59
|
+
borderRadius: 20,
|
|
60
|
+
bottom: 8,
|
|
61
|
+
flexDirection: 'row',
|
|
62
|
+
marginLeft: 3,
|
|
63
|
+
position: 'absolute'
|
|
64
|
+
},
|
|
44
65
|
upload: {
|
|
45
66
|
borderRadius: 10,
|
|
46
67
|
height: IMAGE_PREVIEW_SIZE,
|
|
47
68
|
width: IMAGE_PREVIEW_SIZE
|
|
69
|
+
},
|
|
70
|
+
warningIconStyle: {
|
|
71
|
+
borderRadius: 24,
|
|
72
|
+
marginLeft: 4,
|
|
73
|
+
marginTop: 4
|
|
74
|
+
},
|
|
75
|
+
warningText: {
|
|
76
|
+
alignItems: 'center',
|
|
77
|
+
color: 'black',
|
|
78
|
+
fontSize: 10,
|
|
79
|
+
justifyContent: 'center',
|
|
80
|
+
paddingRight: 8
|
|
48
81
|
}
|
|
49
82
|
});
|
|
50
83
|
|
|
@@ -55,27 +88,81 @@ var ImageUploadPreviewWithContext = function ImageUploadPreviewWithContext(props
|
|
|
55
88
|
|
|
56
89
|
var _useTheme = (0, _ThemeContext.useTheme)(),
|
|
57
90
|
_useTheme$theme = _useTheme.theme,
|
|
58
|
-
|
|
59
|
-
overlay = _useTheme$theme$color.overlay,
|
|
60
|
-
white = _useTheme$theme$color.white,
|
|
91
|
+
overlay = _useTheme$theme.colors.overlay,
|
|
61
92
|
_useTheme$theme$messa = _useTheme$theme.messageInput.imageUploadPreview,
|
|
62
93
|
dismiss = _useTheme$theme$messa.dismiss,
|
|
63
94
|
flatList = _useTheme$theme$messa.flatList,
|
|
64
95
|
itemContainer = _useTheme$theme$messa.itemContainer,
|
|
65
96
|
upload = _useTheme$theme$messa.upload;
|
|
66
97
|
|
|
67
|
-
var
|
|
68
|
-
var
|
|
69
|
-
|
|
98
|
+
var UnsupportedImageTypeIndicator = function UnsupportedImageTypeIndicator(_ref) {
|
|
99
|
+
var indicatorType = _ref.indicatorType;
|
|
100
|
+
|
|
101
|
+
var _useTheme2 = (0, _ThemeContext.useTheme)(),
|
|
102
|
+
_useTheme2$theme$colo = _useTheme2.theme.colors,
|
|
103
|
+
accent_red = _useTheme2$theme$colo.accent_red,
|
|
104
|
+
overlay = _useTheme2$theme$colo.overlay,
|
|
105
|
+
white = _useTheme2$theme$colo.white;
|
|
106
|
+
|
|
107
|
+
var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(),
|
|
108
|
+
t = _useTranslationContex.t;
|
|
109
|
+
|
|
110
|
+
return indicatorType === _utils.ProgressIndicatorTypes.NOT_SUPPORTED ? _react["default"].createElement(_reactNative.View, {
|
|
111
|
+
style: [styles.unsupportedImage, {
|
|
112
|
+
backgroundColor: overlay
|
|
113
|
+
}],
|
|
114
|
+
__self: _this,
|
|
115
|
+
__source: {
|
|
116
|
+
fileName: _jsxFileName,
|
|
117
|
+
lineNumber: 111,
|
|
118
|
+
columnNumber: 7
|
|
119
|
+
}
|
|
120
|
+
}, _react["default"].createElement(_reactNative.View, {
|
|
121
|
+
style: [styles.iconContainer],
|
|
122
|
+
__self: _this,
|
|
123
|
+
__source: {
|
|
124
|
+
fileName: _jsxFileName,
|
|
125
|
+
lineNumber: 112,
|
|
126
|
+
columnNumber: 9
|
|
127
|
+
}
|
|
128
|
+
}, _react["default"].createElement(_Warning.Warning, {
|
|
129
|
+
height: WARNING_ICON_SIZE,
|
|
130
|
+
pathFill: accent_red,
|
|
131
|
+
style: styles.warningIconStyle,
|
|
132
|
+
width: WARNING_ICON_SIZE,
|
|
133
|
+
__self: _this,
|
|
134
|
+
__source: {
|
|
135
|
+
fileName: _jsxFileName,
|
|
136
|
+
lineNumber: 113,
|
|
137
|
+
columnNumber: 11
|
|
138
|
+
}
|
|
139
|
+
}), _react["default"].createElement(_reactNative.Text, {
|
|
140
|
+
style: [styles.warningText, {
|
|
141
|
+
color: white
|
|
142
|
+
}],
|
|
143
|
+
__self: _this,
|
|
144
|
+
__source: {
|
|
145
|
+
fileName: _jsxFileName,
|
|
146
|
+
lineNumber: 119,
|
|
147
|
+
columnNumber: 11
|
|
148
|
+
}
|
|
149
|
+
}, t('Not supported')))) : null;
|
|
150
|
+
};
|
|
151
|
+
|
|
152
|
+
var renderItem = function renderItem(_ref2) {
|
|
153
|
+
var index = _ref2.index,
|
|
154
|
+
item = _ref2.item;
|
|
155
|
+
var indicatorType = (0, _utils.getIndicatorTypeForFileState)(item.state);
|
|
156
|
+
var itemMarginForIndex = index === imageUploads.length - 1 ? {
|
|
157
|
+
marginRight: 8
|
|
158
|
+
} : {};
|
|
70
159
|
return _react["default"].createElement(_reactNative.View, {
|
|
71
|
-
style: [styles.itemContainer,
|
|
72
|
-
marginRight: 8
|
|
73
|
-
} : {}, itemContainer],
|
|
160
|
+
style: [styles.itemContainer, itemMarginForIndex, itemContainer],
|
|
74
161
|
__self: _this,
|
|
75
162
|
__source: {
|
|
76
163
|
fileName: _jsxFileName,
|
|
77
|
-
lineNumber:
|
|
78
|
-
columnNumber:
|
|
164
|
+
lineNumber: 130,
|
|
165
|
+
columnNumber: 7
|
|
79
166
|
}
|
|
80
167
|
}, _react["default"].createElement(_UploadProgressIndicator.UploadProgressIndicator, {
|
|
81
168
|
action: function action() {
|
|
@@ -83,14 +170,13 @@ var ImageUploadPreviewWithContext = function ImageUploadPreviewWithContext(props
|
|
|
83
170
|
newImage: item
|
|
84
171
|
});
|
|
85
172
|
},
|
|
86
|
-
active: item.state !== _utils.FileState.UPLOADED && item.state !== _utils.FileState.FINISHED,
|
|
87
173
|
style: styles.upload,
|
|
88
|
-
type:
|
|
174
|
+
type: indicatorType,
|
|
89
175
|
__self: _this,
|
|
90
176
|
__source: {
|
|
91
177
|
fileName: _jsxFileName,
|
|
92
|
-
lineNumber:
|
|
93
|
-
columnNumber:
|
|
178
|
+
lineNumber: 131,
|
|
179
|
+
columnNumber: 9
|
|
94
180
|
}
|
|
95
181
|
}, _react["default"].createElement(_reactNative.Image, {
|
|
96
182
|
resizeMode: "cover",
|
|
@@ -101,8 +187,8 @@ var ImageUploadPreviewWithContext = function ImageUploadPreviewWithContext(props
|
|
|
101
187
|
__self: _this,
|
|
102
188
|
__source: {
|
|
103
189
|
fileName: _jsxFileName,
|
|
104
|
-
lineNumber:
|
|
105
|
-
columnNumber:
|
|
190
|
+
lineNumber: 138,
|
|
191
|
+
columnNumber: 11
|
|
106
192
|
}
|
|
107
193
|
})), _react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
108
194
|
onPress: function onPress() {
|
|
@@ -115,18 +201,25 @@ var ImageUploadPreviewWithContext = function ImageUploadPreviewWithContext(props
|
|
|
115
201
|
__self: _this,
|
|
116
202
|
__source: {
|
|
117
203
|
fileName: _jsxFileName,
|
|
118
|
-
lineNumber:
|
|
119
|
-
columnNumber:
|
|
204
|
+
lineNumber: 144,
|
|
205
|
+
columnNumber: 9
|
|
120
206
|
}
|
|
121
207
|
}, _react["default"].createElement(_Close.Close, {
|
|
122
|
-
pathFill: white,
|
|
123
208
|
__self: _this,
|
|
124
209
|
__source: {
|
|
125
210
|
fileName: _jsxFileName,
|
|
126
|
-
lineNumber:
|
|
211
|
+
lineNumber: 151,
|
|
212
|
+
columnNumber: 11
|
|
213
|
+
}
|
|
214
|
+
})), _react["default"].createElement(UnsupportedImageTypeIndicator, {
|
|
215
|
+
indicatorType: indicatorType,
|
|
216
|
+
__self: _this,
|
|
217
|
+
__source: {
|
|
218
|
+
fileName: _jsxFileName,
|
|
219
|
+
lineNumber: 153,
|
|
127
220
|
columnNumber: 9
|
|
128
221
|
}
|
|
129
|
-
}))
|
|
222
|
+
}));
|
|
130
223
|
};
|
|
131
224
|
|
|
132
225
|
return imageUploads.length > 0 ? _react["default"].createElement(_reactNative.FlatList, {
|
|
@@ -147,7 +240,7 @@ var ImageUploadPreviewWithContext = function ImageUploadPreviewWithContext(props
|
|
|
147
240
|
__self: _this,
|
|
148
241
|
__source: {
|
|
149
242
|
fileName: _jsxFileName,
|
|
150
|
-
lineNumber:
|
|
243
|
+
lineNumber: 159,
|
|
151
244
|
columnNumber: 5
|
|
152
245
|
}
|
|
153
246
|
}) : null;
|
|
@@ -177,7 +270,7 @@ var ImageUploadPreview = function ImageUploadPreview(props) {
|
|
|
177
270
|
__self: _this,
|
|
178
271
|
__source: {
|
|
179
272
|
fileName: _jsxFileName,
|
|
180
|
-
lineNumber:
|
|
273
|
+
lineNumber: 205,
|
|
181
274
|
columnNumber: 5
|
|
182
275
|
}
|
|
183
276
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImageUploadPreview.tsx"],"names":["IMAGE_PREVIEW_SIZE","styles","StyleSheet","create","dismiss","borderRadius","position","right","top","flatList","paddingBottom","itemContainer","flexDirection","height","marginLeft","upload","width","ImageUploadPreviewWithContext","props","imageUploads","removeImage","uploadImage","theme","colors","overlay","white","messageInput","imageUploadPreview","renderItem","index","item","length","marginRight","newImage","state","FileState","UPLOADED","FINISHED","UPLOADING","ProgressIndicatorTypes","IN_PROGRESS","UPLOAD_FAILED","RETRY","undefined","uri","file","url","id","backgroundColor","_","offset","areEqual","prevProps","nextProps","prevImageUploads","nextImageUploads","every","prevImageUpload","MemoizedImageUploadPreviewWithContext","React","memo","ImageUploadPreview","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { FlatList, Image, StyleSheet, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n ImageUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { Close } from '../../icons/Close';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { FileState, ProgressIndicatorTypes } from '../../utils/utils';\n\nconst IMAGE_PREVIEW_SIZE = 100;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n position: 'absolute',\n right: 8,\n top: 8,\n },\n flatList: { paddingBottom: 12 },\n itemContainer: {\n flexDirection: 'row',\n height: IMAGE_PREVIEW_SIZE,\n marginLeft: 8,\n },\n upload: {\n borderRadius: 10,\n height: IMAGE_PREVIEW_SIZE,\n width: IMAGE_PREVIEW_SIZE,\n },\n});\n\ntype ImageUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'imageUploads' | 'removeImage' | 'uploadImage'\n>;\n\nexport type ImageUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ImageUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\nconst ImageUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { imageUploads, removeImage, uploadImage } = props;\n\n const {\n theme: {\n colors: { overlay, white },\n messageInput: {\n imageUploadPreview: { dismiss, flatList, itemContainer, upload },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: ImageUpload }) => (\n <View\n style={[\n styles.itemContainer,\n index === imageUploads.length - 1 ? { marginRight: 8 } : {},\n itemContainer,\n ]}\n >\n <UploadProgressIndicator\n action={() => {\n uploadImage({ newImage: item });\n }}\n active={item.state !== FileState.UPLOADED && item.state !== FileState.FINISHED}\n style={styles.upload}\n type={\n item.state === FileState.UPLOADING\n ? ProgressIndicatorTypes.IN_PROGRESS\n : item.state === FileState.UPLOAD_FAILED\n ? ProgressIndicatorTypes.RETRY\n : undefined\n }\n >\n <Image\n resizeMode='cover'\n source={{ uri: item.file.uri || item.url }}\n style={[styles.upload, upload]}\n />\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeImage(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: overlay }, dismiss]}\n testID='remove-image-upload-preview'\n >\n <Close pathFill={white} />\n </TouchableOpacity>\n </View>\n );\n\n return imageUploads.length > 0 ? (\n <FlatList\n data={imageUploads}\n getItemLayout={(_, index) => ({\n index,\n length: IMAGE_PREVIEW_SIZE + 8,\n offset: (IMAGE_PREVIEW_SIZE + 8) * index,\n })}\n horizontal\n keyExtractor={(item) => item.id}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { imageUploads: prevImageUploads } = prevProps;\n const { imageUploads: nextImageUploads } = nextProps;\n\n return (\n prevImageUploads.length === nextImageUploads.length &&\n prevImageUploads.every(\n (prevImageUpload, index) => prevImageUpload.state === nextImageUploads[index].state,\n )\n );\n};\n\nconst MemoizedImageUploadPreviewWithContext = React.memo(\n ImageUploadPreviewWithContext,\n areEqual,\n) as typeof ImageUploadPreviewWithContext;\n\n/**\n * UI Component to preview the images set for upload\n */\nexport const ImageUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { imageUploads, removeImage, uploadImage } = useMessageInputContext<StreamChatGenerics>();\n\n return (\n <MemoizedImageUploadPreviewWithContext\n {...{ imageUploads, removeImage, uploadImage }}\n {...props}\n />\n );\n};\n\nImageUploadPreview.displayName = 'ImageUploadPreview{messageInput{imageUploadPreview}}';\n"]}
|
|
1
|
+
{"version":3,"sources":["ImageUploadPreview.tsx"],"names":["IMAGE_PREVIEW_SIZE","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","position","right","top","fileSizeText","fontSize","paddingLeft","flatList","paddingBottom","iconContainer","alignItems","flexDirection","justifyContent","itemContainer","height","marginLeft","unsupportedImage","bottom","upload","width","warningIconStyle","marginTop","warningText","color","paddingRight","ImageUploadPreviewWithContext","props","imageUploads","removeImage","uploadImage","theme","overlay","colors","messageInput","imageUploadPreview","UnsupportedImageTypeIndicator","indicatorType","accent_red","white","t","ProgressIndicatorTypes","NOT_SUPPORTED","backgroundColor","renderItem","index","item","state","itemMarginForIndex","length","marginRight","newImage","uri","file","url","id","_","offset","areEqual","prevProps","nextProps","prevImageUploads","nextImageUploads","every","prevImageUpload","MemoizedImageUploadPreviewWithContext","React","memo","ImageUploadPreview","displayName"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AAKA;;AACA;;AACA;;AACA;;AAEA;;;;;AAEA,IAAMA,kBAAkB,GAAG,GAA3B;AACA,IAAMC,iBAAiB,GAAG,EAA1B;;AAEA,IAAMC,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,OAAO,EAAE;AACPC,IAAAA,YAAY,EAAE,EADP;AAEPC,IAAAA,QAAQ,EAAE,UAFH;AAGPC,IAAAA,KAAK,EAAE,CAHA;AAIPC,IAAAA,GAAG,EAAE;AAJE,GADsB;AAO/BC,EAAAA,YAAY,EAAE;AACZC,IAAAA,QAAQ,EAAE,EADE;AAEZC,IAAAA,WAAW,EAAE;AAFD,GAPiB;AAW/BC,EAAAA,QAAQ,EAAE;AAAEC,IAAAA,aAAa,EAAE;AAAjB,GAXqB;AAY/BC,EAAAA,aAAa,EAAE;AACbC,IAAAA,UAAU,EAAE,QADC;AAEbC,IAAAA,aAAa,EAAE,KAFF;AAGbC,IAAAA,cAAc,EAAE;AAHH,GAZgB;AAiB/BC,EAAAA,aAAa,EAAE;AACbF,IAAAA,aAAa,EAAE,KADF;AAEbG,IAAAA,MAAM,EAAEpB,kBAFK;AAGbqB,IAAAA,UAAU,EAAE;AAHC,GAjBgB;AAsB/BC,EAAAA,gBAAgB,EAAE;AAChBhB,IAAAA,YAAY,EAAE,EADE;AAEhBiB,IAAAA,MAAM,EAAE,CAFQ;AAGhBN,IAAAA,aAAa,EAAE,KAHC;AAIhBI,IAAAA,UAAU,EAAE,CAJI;AAKhBd,IAAAA,QAAQ,EAAE;AALM,GAtBa;AA6B/BiB,EAAAA,MAAM,EAAE;AACNlB,IAAAA,YAAY,EAAE,EADR;AAENc,IAAAA,MAAM,EAAEpB,kBAFF;AAGNyB,IAAAA,KAAK,EAAEzB;AAHD,GA7BuB;AAkC/B0B,EAAAA,gBAAgB,EAAE;AAChBpB,IAAAA,YAAY,EAAE,EADE;AAEhBe,IAAAA,UAAU,EAAE,CAFI;AAGhBM,IAAAA,SAAS,EAAE;AAHK,GAlCa;AAuC/BC,EAAAA,WAAW,EAAE;AACXZ,IAAAA,UAAU,EAAE,QADD;AAEXa,IAAAA,KAAK,EAAE,OAFI;AAGXlB,IAAAA,QAAQ,EAAE,EAHC;AAIXO,IAAAA,cAAc,EAAE,QAJL;AAKXY,IAAAA,YAAY,EAAE;AALH;AAvCkB,CAAlB,CAAf;;AA6DA,IAAMC,6BAA6B,GAAG,SAAhCA,6BAAgC,CAGpCC,KAHoC,EAIjC;AACH,MAAQC,YAAR,GAAmDD,KAAnD,CAAQC,YAAR;AAAA,MAAsBC,WAAtB,GAAmDF,KAAnD,CAAsBE,WAAtB;AAAA,MAAmCC,WAAnC,GAAmDH,KAAnD,CAAmCG,WAAnC;;AAEA,kBAOI,6BAPJ;AAAA,kCACEC,KADF;AAAA,MAEcC,OAFd,mBAEIC,MAFJ,CAEcD,OAFd;AAAA,8CAGIE,YAHJ,CAIMC,kBAJN;AAAA,MAI4BnC,OAJ5B,yBAI4BA,OAJ5B;AAAA,MAIqCQ,QAJrC,yBAIqCA,QAJrC;AAAA,MAI+CM,aAJ/C,yBAI+CA,aAJ/C;AAAA,MAI8DK,MAJ9D,yBAI8DA,MAJ9D;;AASA,MAAMiB,6BAA6B,GAAG,SAAhCA,6BAAgC,OAIhC;AAAA,QAHJC,aAGI,QAHJA,aAGI;;AACJ,qBAII,6BAJJ;AAAA,2CACEN,KADF,CAEIE,MAFJ;AAAA,QAEcK,UAFd,yBAEcA,UAFd;AAAA,QAE0BN,OAF1B,yBAE0BA,OAF1B;AAAA,QAEmCO,KAFnC,yBAEmCA,KAFnC;;AAMA,gCAAc,gDAAd;AAAA,QAAQC,CAAR,yBAAQA,CAAR;;AACA,WAAOH,aAAa,KAAKI,8BAAuBC,aAAzC,GACL,gCAAC,iBAAD;AAAM,MAAA,KAAK,EAAE,CAAC7C,MAAM,CAACoB,gBAAR,EAA0B;AAAE0B,QAAAA,eAAe,EAAEX;AAAnB,OAA1B,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,iBAAD;AAAM,MAAA,KAAK,EAAE,CAACnC,MAAM,CAACa,aAAR,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,gBAAD;AACE,MAAA,MAAM,EAAEd,iBADV;AAEE,MAAA,QAAQ,EAAE0C,UAFZ;AAGE,MAAA,KAAK,EAAEzC,MAAM,CAACwB,gBAHhB;AAIE,MAAA,KAAK,EAAEzB,iBAJT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MADF,EAOE,gCAAC,iBAAD;AAAM,MAAA,KAAK,EAAE,CAACC,MAAM,CAAC0B,WAAR,EAAqB;AAAEC,QAAAA,KAAK,EAAEe;AAAT,OAArB,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAsDC,CAAC,CAAC,eAAD,CAAvD,CAPF,CADF,CADK,GAYH,IAZJ;AAaD,GAzBD;;AA2BA,MAAMI,UAAU,GAAG,SAAbA,UAAa,QAA6C;AAAA,QAA1CC,KAA0C,SAA1CA,KAA0C;AAAA,QAAnCC,IAAmC,SAAnCA,IAAmC;AAC9D,QAAMT,aAAa,GAAG,yCAA6BS,IAAI,CAACC,KAAlC,CAAtB;AACA,QAAMC,kBAAkB,GAAGH,KAAK,KAAKjB,YAAY,CAACqB,MAAb,GAAsB,CAAhC,GAAoC;AAAEC,MAAAA,WAAW,EAAE;AAAf,KAApC,GAAyD,EAApF;AAEA,WACE,gCAAC,iBAAD;AAAM,MAAA,KAAK,EAAE,CAACrD,MAAM,CAACiB,aAAR,EAAuBkC,kBAAvB,EAA2ClC,aAA3C,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OACE,gCAAC,gDAAD;AACE,MAAA,MAAM,EAAE,kBAAM;AACZgB,QAAAA,WAAW,CAAC;AAAEqB,UAAAA,QAAQ,EAAEL;AAAZ,SAAD,CAAX;AACD,OAHH;AAIE,MAAA,KAAK,EAAEjD,MAAM,CAACsB,MAJhB;AAKE,MAAA,IAAI,EAAEkB,aALR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAOE,gCAAC,kBAAD;AACE,MAAA,UAAU,EAAC,OADb;AAEE,MAAA,MAAM,EAAE;AAAEe,QAAAA,GAAG,EAAEN,IAAI,CAACO,IAAL,CAAUD,GAAV,IAAiBN,IAAI,CAACQ;AAA7B,OAFV;AAGE,MAAA,KAAK,EAAE,CAACzD,MAAM,CAACsB,MAAR,EAAgBA,MAAhB,CAHT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAPF,CADF,EAcE,gCAAC,6BAAD;AACE,MAAA,OAAO,EAAE,mBAAM;AACbU,QAAAA,WAAW,CAACiB,IAAI,CAACS,EAAN,CAAX;AACD,OAHH;AAIE,MAAA,KAAK,EAAE,CAAC1D,MAAM,CAACG,OAAR,EAAiB;AAAE2C,QAAAA,eAAe,EAAEX;AAAnB,OAAjB,EAA+ChC,OAA/C,CAJT;AAKE,MAAA,MAAM,EAAC,6BALT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAOE,gCAAC,YAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAPF,CAdF,EAuBE,gCAAC,6BAAD;AAA+B,MAAA,aAAa,EAAEqC,aAA9C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAvBF,CADF;AA2BD,GA/BD;;AAiCA,SAAOT,YAAY,CAACqB,MAAb,GAAsB,CAAtB,GACL,gCAAC,qBAAD;AACE,IAAA,IAAI,EAAErB,YADR;AAEE,IAAA,aAAa,EAAE,uBAAC4B,CAAD,EAAIX,KAAJ;AAAA,aAAe;AAC5BA,QAAAA,KAAK,EAALA,KAD4B;AAE5BI,QAAAA,MAAM,EAAEtD,kBAAkB,GAAG,CAFD;AAG5B8D,QAAAA,MAAM,EAAE,CAAC9D,kBAAkB,GAAG,CAAtB,IAA2BkD;AAHP,OAAf;AAAA,KAFjB;AAOE,IAAA,UAAU,MAPZ;AAQE,IAAA,YAAY,EAAE,sBAACC,IAAD;AAAA,aAAUA,IAAI,CAACS,EAAf;AAAA,KARhB;AASE,IAAA,UAAU,EAAEX,UATd;AAUE,IAAA,KAAK,EAAE,CAAC/C,MAAM,CAACW,QAAR,EAAkBA,QAAlB,CAVT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADK,GAaH,IAbJ;AAcD,CA1FD;;AA4FA,IAAMkD,QAAQ,GAAG,SAAXA,QAAW,CACfC,SADe,EAEfC,SAFe,EAGZ;AACH,MAAsBC,gBAAtB,GAA2CF,SAA3C,CAAQ/B,YAAR;AACA,MAAsBkC,gBAAtB,GAA2CF,SAA3C,CAAQhC,YAAR;AAEA,SACEiC,gBAAgB,CAACZ,MAAjB,KAA4Ba,gBAAgB,CAACb,MAA7C,IACAY,gBAAgB,CAACE,KAAjB,CACE,UAACC,eAAD,EAAkBnB,KAAlB;AAAA,WAA4BmB,eAAe,CAACjB,KAAhB,KAA0Be,gBAAgB,CAACjB,KAAD,CAAhB,CAAwBE,KAA9E;AAAA,GADF,CAFF;AAMD,CAbD;;AAeA,IAAMkB,qCAAqC,GAAGC,kBAAMC,IAAN,CAC5CzC,6BAD4C,EAE5CgC,QAF4C,CAA9C;;AAQO,IAAMU,kBAAkB,GAAG,SAArBA,kBAAqB,CAGhCzC,KAHgC,EAI7B;AACH,8BAAmD,kDAAnD;AAAA,MAAQC,YAAR,yBAAQA,YAAR;AAAA,MAAsBC,WAAtB,yBAAsBA,WAAtB;AAAA,MAAmCC,WAAnC,yBAAmCA,WAAnC;;AAEA,SACE,gCAAC,qCAAD;AACQF,IAAAA,YAAY,EAAZA,YADR;AACsBC,IAAAA,WAAW,EAAXA,WADtB;AACmCC,IAAAA,WAAW,EAAXA;AADnC,KAEMH,KAFN;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KADF;AAMD,CAbM;;;AAePyC,kBAAkB,CAACC,WAAnB,GAAiC,sDAAjC","sourcesContent":["import React from 'react';\nimport { FlatList, Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport {\n ImageUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\n\nconst IMAGE_PREVIEW_SIZE = 100;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n position: 'absolute',\n right: 8,\n top: 8,\n },\n fileSizeText: {\n fontSize: 12,\n paddingLeft: 10,\n },\n flatList: { paddingBottom: 12 },\n iconContainer: {\n alignItems: 'center',\n flexDirection: 'row',\n justifyContent: 'center',\n },\n itemContainer: {\n flexDirection: 'row',\n height: IMAGE_PREVIEW_SIZE,\n marginLeft: 8,\n },\n unsupportedImage: {\n borderRadius: 20,\n bottom: 8,\n flexDirection: 'row',\n marginLeft: 3,\n position: 'absolute',\n },\n upload: {\n borderRadius: 10,\n height: IMAGE_PREVIEW_SIZE,\n width: IMAGE_PREVIEW_SIZE,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginLeft: 4,\n marginTop: 4,\n },\n warningText: {\n alignItems: 'center',\n color: 'black',\n fontSize: 10,\n justifyContent: 'center',\n paddingRight: 8,\n },\n});\n\ntype ImageUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'imageUploads' | 'removeImage' | 'uploadImage'\n>;\n\nexport type ImageUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<ImageUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\ntype ImageUploadPreviewItem = { index: number; item: ImageUpload };\n\nconst ImageUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { imageUploads, removeImage, uploadImage } = props;\n\n const {\n theme: {\n colors: { overlay },\n messageInput: {\n imageUploadPreview: { dismiss, flatList, itemContainer, upload },\n },\n },\n } = useTheme();\n\n const UnsupportedImageTypeIndicator = ({\n indicatorType,\n }: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes] | null;\n }) => {\n const {\n theme: {\n colors: { accent_red, overlay, white },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={[styles.unsupportedImage, { backgroundColor: overlay }]}>\n <View style={[styles.iconContainer]}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.warningText, { color: white }]}>{t('Not supported')}</Text>\n </View>\n </View>\n ) : null;\n };\n\n const renderItem = ({ index, item }: ImageUploadPreviewItem) => {\n const indicatorType = getIndicatorTypeForFileState(item.state);\n const itemMarginForIndex = index === imageUploads.length - 1 ? { marginRight: 8 } : {};\n\n return (\n <View style={[styles.itemContainer, itemMarginForIndex, itemContainer]}>\n <UploadProgressIndicator\n action={() => {\n uploadImage({ newImage: item });\n }}\n style={styles.upload}\n type={indicatorType}\n >\n <Image\n resizeMode='cover'\n source={{ uri: item.file.uri || item.url }}\n style={[styles.upload, upload]}\n />\n </UploadProgressIndicator>\n <TouchableOpacity\n onPress={() => {\n removeImage(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: overlay }, dismiss]}\n testID='remove-image-upload-preview'\n >\n <Close />\n </TouchableOpacity>\n <UnsupportedImageTypeIndicator indicatorType={indicatorType} />\n </View>\n );\n };\n\n return imageUploads.length > 0 ? (\n <FlatList\n data={imageUploads}\n getItemLayout={(_, index) => ({\n index,\n length: IMAGE_PREVIEW_SIZE + 8,\n offset: (IMAGE_PREVIEW_SIZE + 8) * index,\n })}\n horizontal\n keyExtractor={(item) => item.id}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: ImageUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { imageUploads: prevImageUploads } = prevProps;\n const { imageUploads: nextImageUploads } = nextProps;\n\n return (\n prevImageUploads.length === nextImageUploads.length &&\n prevImageUploads.every(\n (prevImageUpload, index) => prevImageUpload.state === nextImageUploads[index].state,\n )\n );\n};\n\nconst MemoizedImageUploadPreviewWithContext = React.memo(\n ImageUploadPreviewWithContext,\n areEqual,\n) as typeof ImageUploadPreviewWithContext;\n\n/**\n * UI Component to preview the images set for upload\n */\nexport const ImageUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { imageUploads, removeImage, uploadImage } = useMessageInputContext<StreamChatGenerics>();\n\n return (\n <MemoizedImageUploadPreviewWithContext\n {...{ imageUploads, removeImage, uploadImage }}\n {...props}\n />\n );\n};\n\nImageUploadPreview.displayName = 'ImageUploadPreview{messageInput{imageUploadPreview}}';\n"]}
|