stream-chat-react-native-core 5.8.1-beta.3 → 5.8.1-beta.4
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/AttachmentPicker/components/AttachmentPickerItem.js +38 -65
- package/lib/commonjs/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js +22 -21
- package/lib/commonjs/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +82 -112
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/types/types.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js +38 -65
- package/lib/module/components/AttachmentPicker/components/AttachmentPickerItem.js.map +1 -1
- package/lib/module/components/MessageInput/FileUploadPreview.js +22 -21
- package/lib/module/components/MessageInput/FileUploadPreview.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +82 -112
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/types/types.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/contexts/messageInputContext/MessageInputContext.d.ts +1 -6
- package/lib/typescript/types/types.d.ts +1 -0
- package/package.json +1 -1
- package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx +3 -5
- package/src/components/MessageInput/FileUploadPreview.tsx +1 -0
- package/src/contexts/messageInputContext/MessageInputContext.tsx +10 -32
- package/src/types/types.ts +1 -0
- package/src/version.json +1 -1
|
@@ -3,9 +3,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
exports.renderAttachmentPickerItem = void 0;
|
|
6
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
7
6
|
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
8
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
9
7
|
var _react = _interopRequireDefault(require("react"));
|
|
10
8
|
var _reactNative = require("react-native");
|
|
11
9
|
var _bottomSheet = require("@gorhom/bottom-sheet");
|
|
@@ -13,7 +11,6 @@ var _dayjs = _interopRequireDefault(require("dayjs"));
|
|
|
13
11
|
var _mimeTypes = require("mime-types");
|
|
14
12
|
var _ThemeContext = require("../../../contexts/themeContext/ThemeContext");
|
|
15
13
|
var _icons = require("../../../icons");
|
|
16
|
-
var _native = require("../../../native");
|
|
17
14
|
var _utils = require("../../../utils/utils");
|
|
18
15
|
var _this = this,
|
|
19
16
|
_jsxFileName = "/home/runner/work/stream-chat-react-native/stream-chat-react-native/package/src/components/AttachmentPicker/components/AttachmentPickerItem.tsx";
|
|
@@ -47,60 +44,36 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
47
44
|
durationLabel = formattedVideoDuration;
|
|
48
45
|
}
|
|
49
46
|
var size = (0, _utils.vw)(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;
|
|
50
|
-
var onPressVideo = function () {
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
return (0, _native.getLocalAssetUri)(asset.id);
|
|
63
|
-
case 4:
|
|
64
|
-
_context.t0 = _context.sent;
|
|
65
|
-
case 5:
|
|
66
|
-
localAssetURI = _context.t0;
|
|
67
|
-
if (selected) {
|
|
68
|
-
setSelectedFiles(function (files) {
|
|
69
|
-
return files.filter(function (file) {
|
|
70
|
-
return file.uri !== asset.uri;
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
} else {
|
|
74
|
-
setSelectedFiles(function (files) {
|
|
75
|
-
if (numberOfUploads >= maxNumberOfFiles) {
|
|
76
|
-
_reactNative.Alert.alert('Maximum number of files reached');
|
|
77
|
-
return files;
|
|
78
|
-
}
|
|
79
|
-
return [].concat((0, _toConsumableArray2["default"])(files), [{
|
|
80
|
-
duration: durationLabel,
|
|
81
|
-
name: asset.filename,
|
|
82
|
-
size: asset.fileSize,
|
|
83
|
-
type: 'video',
|
|
84
|
-
uri: localAssetURI || asset.uri
|
|
85
|
-
}]);
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
case 7:
|
|
89
|
-
case "end":
|
|
90
|
-
return _context.stop();
|
|
47
|
+
var onPressVideo = function onPressVideo() {
|
|
48
|
+
if (selected) {
|
|
49
|
+
setSelectedFiles(function (files) {
|
|
50
|
+
return files.filter(function (file) {
|
|
51
|
+
return file.uri !== asset.uri;
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
} else {
|
|
55
|
+
setSelectedFiles(function (files) {
|
|
56
|
+
if (numberOfUploads >= maxNumberOfFiles) {
|
|
57
|
+
_reactNative.Alert.alert('Maximum number of files reached');
|
|
58
|
+
return files;
|
|
91
59
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
60
|
+
return [].concat((0, _toConsumableArray2["default"])(files), [{
|
|
61
|
+
duration: durationLabel,
|
|
62
|
+
id: asset.id,
|
|
63
|
+
name: asset.filename,
|
|
64
|
+
size: asset.fileSize,
|
|
65
|
+
type: 'video',
|
|
66
|
+
uri: asset.uri
|
|
67
|
+
}]);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
};
|
|
98
71
|
return _react["default"].createElement(_bottomSheet.TouchableOpacity, {
|
|
99
72
|
onPress: onPressVideo,
|
|
100
73
|
__self: _this,
|
|
101
74
|
__source: {
|
|
102
75
|
fileName: _jsxFileName,
|
|
103
|
-
lineNumber:
|
|
76
|
+
lineNumber: 91,
|
|
104
77
|
columnNumber: 5
|
|
105
78
|
}
|
|
106
79
|
}, _react["default"].createElement(_reactNative.ImageBackground, {
|
|
@@ -115,7 +88,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
115
88
|
__self: _this,
|
|
116
89
|
__source: {
|
|
117
90
|
fileName: _jsxFileName,
|
|
118
|
-
lineNumber:
|
|
91
|
+
lineNumber: 92,
|
|
119
92
|
columnNumber: 7
|
|
120
93
|
}
|
|
121
94
|
}, selected && _react["default"].createElement(_reactNative.View, {
|
|
@@ -125,14 +98,14 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
125
98
|
__self: _this,
|
|
126
99
|
__source: {
|
|
127
100
|
fileName: _jsxFileName,
|
|
128
|
-
lineNumber:
|
|
101
|
+
lineNumber: 104,
|
|
129
102
|
columnNumber: 11
|
|
130
103
|
}
|
|
131
104
|
}, _react["default"].createElement(ImageOverlaySelectedComponent, {
|
|
132
105
|
__self: _this,
|
|
133
106
|
__source: {
|
|
134
107
|
fileName: _jsxFileName,
|
|
135
|
-
lineNumber:
|
|
108
|
+
lineNumber: 105,
|
|
136
109
|
columnNumber: 13
|
|
137
110
|
}
|
|
138
111
|
})), _react["default"].createElement(_reactNative.View, {
|
|
@@ -140,7 +113,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
140
113
|
__self: _this,
|
|
141
114
|
__source: {
|
|
142
115
|
fileName: _jsxFileName,
|
|
143
|
-
lineNumber:
|
|
116
|
+
lineNumber: 108,
|
|
144
117
|
columnNumber: 9
|
|
145
118
|
}
|
|
146
119
|
}, _react["default"].createElement(_icons.Recorder, {
|
|
@@ -150,7 +123,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
150
123
|
__self: _this,
|
|
151
124
|
__source: {
|
|
152
125
|
fileName: _jsxFileName,
|
|
153
|
-
lineNumber:
|
|
126
|
+
lineNumber: 109,
|
|
154
127
|
columnNumber: 11
|
|
155
128
|
}
|
|
156
129
|
}), videoDuration ? _react["default"].createElement(_reactNative.Text, {
|
|
@@ -160,7 +133,7 @@ var AttachmentVideo = function AttachmentVideo(props) {
|
|
|
160
133
|
__self: _this,
|
|
161
134
|
__source: {
|
|
162
135
|
fileName: _jsxFileName,
|
|
163
|
-
lineNumber:
|
|
136
|
+
lineNumber: 111,
|
|
164
137
|
columnNumber: 13
|
|
165
138
|
}
|
|
166
139
|
}, durationLabel) : null)));
|
|
@@ -203,7 +176,7 @@ var AttachmentImage = function AttachmentImage(props) {
|
|
|
203
176
|
__self: _this,
|
|
204
177
|
__source: {
|
|
205
178
|
fileName: _jsxFileName,
|
|
206
|
-
lineNumber:
|
|
179
|
+
lineNumber: 157,
|
|
207
180
|
columnNumber: 5
|
|
208
181
|
}
|
|
209
182
|
}, _react["default"].createElement(_reactNative.ImageBackground, {
|
|
@@ -218,7 +191,7 @@ var AttachmentImage = function AttachmentImage(props) {
|
|
|
218
191
|
__self: _this,
|
|
219
192
|
__source: {
|
|
220
193
|
fileName: _jsxFileName,
|
|
221
|
-
lineNumber:
|
|
194
|
+
lineNumber: 158,
|
|
222
195
|
columnNumber: 7
|
|
223
196
|
}
|
|
224
197
|
}, selected && _react["default"].createElement(_reactNative.View, {
|
|
@@ -228,14 +201,14 @@ var AttachmentImage = function AttachmentImage(props) {
|
|
|
228
201
|
__self: _this,
|
|
229
202
|
__source: {
|
|
230
203
|
fileName: _jsxFileName,
|
|
231
|
-
lineNumber:
|
|
204
|
+
lineNumber: 170,
|
|
232
205
|
columnNumber: 11
|
|
233
206
|
}
|
|
234
207
|
}, _react["default"].createElement(ImageOverlaySelectedComponent, {
|
|
235
208
|
__self: _this,
|
|
236
209
|
__source: {
|
|
237
210
|
fileName: _jsxFileName,
|
|
238
|
-
lineNumber:
|
|
211
|
+
lineNumber: 171,
|
|
239
212
|
columnNumber: 13
|
|
240
213
|
}
|
|
241
214
|
}))));
|
|
@@ -249,8 +222,8 @@ var getFileType = function getFileType(asset) {
|
|
|
249
222
|
return asset.type === 'video' ? 'video' : 'image';
|
|
250
223
|
}
|
|
251
224
|
};
|
|
252
|
-
var renderAttachmentPickerItem = function renderAttachmentPickerItem(
|
|
253
|
-
var item =
|
|
225
|
+
var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref) {
|
|
226
|
+
var item = _ref.item;
|
|
254
227
|
var asset = item.asset,
|
|
255
228
|
ImageOverlaySelectedComponent = item.ImageOverlaySelectedComponent,
|
|
256
229
|
maxNumberOfFiles = item.maxNumberOfFiles,
|
|
@@ -271,7 +244,7 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref2) {
|
|
|
271
244
|
__self: _this,
|
|
272
245
|
__source: {
|
|
273
246
|
fileName: _jsxFileName,
|
|
274
|
-
lineNumber:
|
|
247
|
+
lineNumber: 204,
|
|
275
248
|
columnNumber: 5
|
|
276
249
|
}
|
|
277
250
|
}) : _react["default"].createElement(AttachmentVideo, {
|
|
@@ -285,7 +258,7 @@ var renderAttachmentPickerItem = function renderAttachmentPickerItem(_ref2) {
|
|
|
285
258
|
__self: _this,
|
|
286
259
|
__source: {
|
|
287
260
|
fileName: _jsxFileName,
|
|
288
|
-
lineNumber:
|
|
261
|
+
lineNumber: 214,
|
|
289
262
|
columnNumber: 5
|
|
290
263
|
}
|
|
291
264
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","setSelectedFiles","useTheme","theme","attachmentPicker","durationText","image","imageOverlay","colors","overlay","white","duration","playableDuration","uri","videoDuration","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","onPressVideo","id","getLocalAssetUri","localAssetURI","files","filter","file","Alert","alert","name","filename","fileSize","type","height","margin","width","styles","backgroundColor","videoView","color","AttachmentImage","setSelectedImages","onPressImage","images","getFileType","contentType","lookup","startsWith","renderAttachmentPickerItem","item","fileType","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport { getLocalAssetUri } from '../../../native';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n numberOfUploads: number;\n selected: boolean;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration, playableDuration, uri } = asset;\n\n const videoDuration = duration ? duration : playableDuration;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const onPressVideo = async () => {\n // For the case of expo messaging app where you need to fetch the asset uri from asset id\n const localAssetURI = asset.id && (await getLocalAssetUri(asset.id));\n if (selected) {\n setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));\n } else {\n setSelectedFiles((files) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return files;\n }\n return [\n ...files,\n {\n duration: durationLabel,\n name: asset.filename,\n size: asset.fileSize,\n type: 'video',\n uri: localAssetURI || asset.uri,\n },\n ];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n const onPressImage = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst getFileType = (asset: Asset) => {\n const { filename } = asset;\n if (filename) {\n const contentType = lookup(filename) || 'multipart/form-data';\n return contentType.startsWith('image/') ? 'image' : 'video';\n } else {\n return asset.type === 'video' ? 'video' : 'image';\n }\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n const fileType = getFileType(asset);\n\n return fileType === 'image' ? (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedImages={setSelectedImages}\n />\n ) : (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedFiles={setSelectedFiles}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["AttachmentVideo","props","asset","ImageOverlaySelectedComponent","maxNumberOfFiles","numberOfAttachmentPickerImageColumns","numberOfUploads","selected","setSelectedFiles","useTheme","theme","attachmentPicker","durationText","image","imageOverlay","colors","overlay","white","duration","playableDuration","uri","videoDuration","ONE_HOUR_IN_SECONDS","durationLabel","isDurationLongerThanHour","formattedDurationParam","formattedVideoDuration","dayjs","format","size","vw","onPressVideo","files","filter","file","Alert","alert","id","name","filename","fileSize","type","height","margin","width","styles","backgroundColor","videoView","color","AttachmentImage","setSelectedImages","onPressImage","images","getFileType","contentType","lookup","startsWith","renderAttachmentPickerItem","item","fileType","StyleSheet","create","fontWeight","alignItems","flex","bottom","display","flexDirection","justifyContent","paddingHorizontal","position"],"sources":["AttachmentPickerItem.tsx"],"sourcesContent":["import React from 'react';\n\nimport { Alert, ImageBackground, StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\nimport dayjs from 'dayjs';\nimport { lookup } from 'mime-types';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { Recorder } from '../../../icons';\nimport type { Asset, File } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\ntype AttachmentPickerItemType = {\n asset: Asset;\n ImageOverlaySelectedComponent: React.ComponentType;\n maxNumberOfFiles: number;\n numberOfUploads: number;\n selected: boolean;\n setSelectedFiles: React.Dispatch<React.SetStateAction<File[]>>;\n setSelectedImages: React.Dispatch<React.SetStateAction<Asset[]>>;\n numberOfAttachmentPickerImageColumns?: number;\n};\n\ntype AttachmentImageProps = Omit<AttachmentPickerItemType, 'setSelectedFiles'>;\n\ntype AttachmentVideoProps = Omit<AttachmentPickerItemType, 'setSelectedImages'>;\n\nconst AttachmentVideo: React.FC<AttachmentVideoProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n } = props;\n\n const {\n theme: {\n attachmentPicker: { durationText, image, imageOverlay },\n colors: { overlay, white },\n },\n } = useTheme();\n\n const { duration, playableDuration, uri } = asset;\n\n const videoDuration = duration ? duration : playableDuration;\n\n const ONE_HOUR_IN_SECONDS = 3600;\n\n let durationLabel = '00:00';\n\n if (videoDuration) {\n const isDurationLongerThanHour = videoDuration / ONE_HOUR_IN_SECONDS >= 1;\n const formattedDurationParam = isDurationLongerThanHour ? 'HH:mm:ss' : 'mm:ss';\n const formattedVideoDuration = dayjs\n .duration(videoDuration, 'second')\n .format(formattedDurationParam);\n durationLabel = formattedVideoDuration;\n }\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const onPressVideo = () => {\n if (selected) {\n setSelectedFiles((files) => files.filter((file) => file.uri !== asset.uri));\n } else {\n setSelectedFiles((files) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return files;\n }\n return [\n ...files,\n {\n duration: durationLabel,\n id: asset.id,\n name: asset.filename,\n size: asset.fileSize,\n type: 'video',\n uri: asset.uri,\n },\n ];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressVideo}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n <View style={styles.videoView}>\n <Recorder height={20} pathFill={white} width={25} />\n {videoDuration ? (\n <Text style={[styles.durationText, durationText, { color: white }]}>\n {durationLabel}\n </Text>\n ) : null}\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst AttachmentImage: React.FC<AttachmentImageProps> = (props) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedImages,\n } = props;\n const {\n theme: {\n attachmentPicker: { image, imageOverlay },\n colors: { overlay },\n },\n } = useTheme();\n\n const size = vw(100) / (numberOfAttachmentPickerImageColumns || 3) - 2;\n\n const { uri } = asset;\n\n const onPressImage = () => {\n if (selected) {\n setSelectedImages((images) => images.filter((image) => image.uri !== asset.uri));\n } else {\n setSelectedImages((images) => {\n if (numberOfUploads >= maxNumberOfFiles) {\n Alert.alert('Maximum number of files reached');\n return images;\n }\n return [...images, asset];\n });\n }\n };\n\n return (\n <TouchableOpacity onPress={onPressImage}>\n <ImageBackground\n source={{ uri }}\n style={[\n {\n height: size,\n margin: 1,\n width: size,\n },\n image,\n ]}\n >\n {selected && (\n <View style={[styles.overlay, { backgroundColor: overlay }, imageOverlay]}>\n <ImageOverlaySelectedComponent />\n </View>\n )}\n </ImageBackground>\n </TouchableOpacity>\n );\n};\n\nconst getFileType = (asset: Asset) => {\n const { filename } = asset;\n if (filename) {\n const contentType = lookup(filename) || 'multipart/form-data';\n return contentType.startsWith('image/') ? 'image' : 'video';\n } else {\n return asset.type === 'video' ? 'video' : 'image';\n }\n};\n\nexport const renderAttachmentPickerItem = ({ item }: { item: AttachmentPickerItemType }) => {\n const {\n asset,\n ImageOverlaySelectedComponent,\n maxNumberOfFiles,\n numberOfAttachmentPickerImageColumns,\n numberOfUploads,\n selected,\n setSelectedFiles,\n setSelectedImages,\n } = item;\n\n const fileType = getFileType(asset);\n\n return fileType === 'image' ? (\n <AttachmentImage\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedImages={setSelectedImages}\n />\n ) : (\n <AttachmentVideo\n asset={asset}\n ImageOverlaySelectedComponent={ImageOverlaySelectedComponent}\n maxNumberOfFiles={maxNumberOfFiles}\n numberOfAttachmentPickerImageColumns={numberOfAttachmentPickerImageColumns}\n numberOfUploads={numberOfUploads}\n selected={selected}\n setSelectedFiles={setSelectedFiles}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n durationText: {\n fontWeight: 'bold',\n },\n overlay: {\n alignItems: 'flex-end',\n flex: 1,\n },\n videoView: {\n bottom: 5,\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'space-between',\n paddingHorizontal: 5,\n position: 'absolute',\n width: '100%',\n },\n});\n"],"mappings":"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"}
|
|
@@ -73,7 +73,8 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
73
73
|
overlay: {
|
|
74
74
|
borderRadius: 12,
|
|
75
75
|
marginLeft: 8,
|
|
76
|
-
marginRight: 8
|
|
76
|
+
marginRight: 8,
|
|
77
|
+
marginTop: 2
|
|
77
78
|
},
|
|
78
79
|
unsupportedFile: {
|
|
79
80
|
flexDirection: 'row',
|
|
@@ -105,7 +106,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
|
|
|
105
106
|
__self: _this,
|
|
106
107
|
__source: {
|
|
107
108
|
fileName: _jsxFileName,
|
|
108
|
-
lineNumber:
|
|
109
|
+
lineNumber: 107,
|
|
109
110
|
columnNumber: 5
|
|
110
111
|
}
|
|
111
112
|
}, _react["default"].createElement(_Warning.Warning, {
|
|
@@ -116,7 +117,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
|
|
|
116
117
|
__self: _this,
|
|
117
118
|
__source: {
|
|
118
119
|
fileName: _jsxFileName,
|
|
119
|
-
lineNumber:
|
|
120
|
+
lineNumber: 108,
|
|
120
121
|
columnNumber: 7
|
|
121
122
|
}
|
|
122
123
|
}), _react["default"].createElement(_reactNative.Text, {
|
|
@@ -126,7 +127,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
|
|
|
126
127
|
__self: _this,
|
|
127
128
|
__source: {
|
|
128
129
|
fileName: _jsxFileName,
|
|
129
|
-
lineNumber:
|
|
130
|
+
lineNumber: 114,
|
|
130
131
|
columnNumber: 7
|
|
131
132
|
}
|
|
132
133
|
}, t('File type not supported'))) : _react["default"].createElement(_WritingDirectionAwareText.WritingDirectionAwareText, {
|
|
@@ -136,7 +137,7 @@ var UnsupportedFileTypeOrFileSizeIndicator = function UnsupportedFileTypeOrFileS
|
|
|
136
137
|
__self: _this,
|
|
137
138
|
__source: {
|
|
138
139
|
fileName: _jsxFileName,
|
|
139
|
-
lineNumber:
|
|
140
|
+
lineNumber: 119,
|
|
140
141
|
columnNumber: 5
|
|
141
142
|
}
|
|
142
143
|
}, item.file.duration || (0, _FileAttachment.getFileSizeDisplayText)(item.file.size));
|
|
@@ -216,7 +217,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
216
217
|
return _react["default"].createElement(_react["default"].Fragment, {
|
|
217
218
|
__source: {
|
|
218
219
|
fileName: _jsxFileName,
|
|
219
|
-
lineNumber:
|
|
220
|
+
lineNumber: 223,
|
|
220
221
|
columnNumber: 7
|
|
221
222
|
}
|
|
222
223
|
}, _react["default"].createElement(_UploadProgressIndicator.UploadProgressIndicator, {
|
|
@@ -230,7 +231,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
230
231
|
__self: _this,
|
|
231
232
|
__source: {
|
|
232
233
|
fileName: _jsxFileName,
|
|
233
|
-
lineNumber:
|
|
234
|
+
lineNumber: 224,
|
|
234
235
|
columnNumber: 9
|
|
235
236
|
}
|
|
236
237
|
}, (_item$file$type = item.file.type) != null && _item$file$type.startsWith('audio/') && (0, _native.isAudioPackageAvailable)() ? _react["default"].createElement(_reactNative.View, {
|
|
@@ -240,7 +241,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
240
241
|
__self: _this,
|
|
241
242
|
__source: {
|
|
242
243
|
fileName: _jsxFileName,
|
|
243
|
-
lineNumber:
|
|
244
|
+
lineNumber: 232,
|
|
244
245
|
columnNumber: 13
|
|
245
246
|
}
|
|
246
247
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -255,7 +256,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
255
256
|
__self: _this,
|
|
256
257
|
__source: {
|
|
257
258
|
fileName: _jsxFileName,
|
|
258
|
-
lineNumber:
|
|
259
|
+
lineNumber: 238,
|
|
259
260
|
columnNumber: 15
|
|
260
261
|
}
|
|
261
262
|
}, _react["default"].createElement(AudioAttachment, {
|
|
@@ -267,7 +268,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
267
268
|
__self: _this,
|
|
268
269
|
__source: {
|
|
269
270
|
fileName: _jsxFileName,
|
|
270
|
-
lineNumber:
|
|
271
|
+
lineNumber: 255,
|
|
271
272
|
columnNumber: 17
|
|
272
273
|
}
|
|
273
274
|
}))) : _react["default"].createElement(_reactNative.View, {
|
|
@@ -280,7 +281,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
280
281
|
__self: _this,
|
|
281
282
|
__source: {
|
|
282
283
|
fileName: _jsxFileName,
|
|
283
|
-
lineNumber:
|
|
284
|
+
lineNumber: 265,
|
|
284
285
|
columnNumber: 13
|
|
285
286
|
}
|
|
286
287
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -288,7 +289,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
288
289
|
__self: _this,
|
|
289
290
|
__source: {
|
|
290
291
|
fileName: _jsxFileName,
|
|
291
|
-
lineNumber:
|
|
292
|
+
lineNumber: 280,
|
|
292
293
|
columnNumber: 15
|
|
293
294
|
}
|
|
294
295
|
}, _react["default"].createElement(_reactNative.View, {
|
|
@@ -296,7 +297,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
296
297
|
__self: _this,
|
|
297
298
|
__source: {
|
|
298
299
|
fileName: _jsxFileName,
|
|
299
|
-
lineNumber:
|
|
300
|
+
lineNumber: 281,
|
|
300
301
|
columnNumber: 17
|
|
301
302
|
}
|
|
302
303
|
}, _react["default"].createElement(FileAttachmentIcon, {
|
|
@@ -304,7 +305,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
304
305
|
__self: _this,
|
|
305
306
|
__source: {
|
|
306
307
|
fileName: _jsxFileName,
|
|
307
|
-
lineNumber:
|
|
308
|
+
lineNumber: 282,
|
|
308
309
|
columnNumber: 19
|
|
309
310
|
}
|
|
310
311
|
})), _react["default"].createElement(_reactNative.View, {
|
|
@@ -312,7 +313,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
312
313
|
__self: _this,
|
|
313
314
|
__source: {
|
|
314
315
|
fileName: _jsxFileName,
|
|
315
|
-
lineNumber:
|
|
316
|
+
lineNumber: 284,
|
|
316
317
|
columnNumber: 17
|
|
317
318
|
}
|
|
318
319
|
}, _react["default"].createElement(_reactNative.Text, {
|
|
@@ -328,7 +329,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
328
329
|
__self: _this,
|
|
329
330
|
__source: {
|
|
330
331
|
fileName: _jsxFileName,
|
|
331
|
-
lineNumber:
|
|
332
|
+
lineNumber: 285,
|
|
332
333
|
columnNumber: 19
|
|
333
334
|
}
|
|
334
335
|
}, item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)), indicatorType !== null && _react["default"].createElement(UnsupportedFileTypeOrFileSizeIndicator, {
|
|
@@ -337,7 +338,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
337
338
|
__self: _this,
|
|
338
339
|
__source: {
|
|
339
340
|
fileName: _jsxFileName,
|
|
340
|
-
lineNumber:
|
|
341
|
+
lineNumber: 305,
|
|
341
342
|
columnNumber: 21
|
|
342
343
|
}
|
|
343
344
|
})))), _react["default"].createElement(_reactNative.TouchableOpacity, {
|
|
@@ -351,7 +352,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
351
352
|
__self: _this,
|
|
352
353
|
__source: {
|
|
353
354
|
fileName: _jsxFileName,
|
|
354
|
-
lineNumber:
|
|
355
|
+
lineNumber: 314,
|
|
355
356
|
columnNumber: 11
|
|
356
357
|
}
|
|
357
358
|
}, _react["default"].createElement(_Close.Close, {
|
|
@@ -359,7 +360,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
359
360
|
__self: _this,
|
|
360
361
|
__source: {
|
|
361
362
|
fileName: _jsxFileName,
|
|
362
|
-
lineNumber:
|
|
363
|
+
lineNumber: 321,
|
|
363
364
|
columnNumber: 13
|
|
364
365
|
}
|
|
365
366
|
}))));
|
|
@@ -395,7 +396,7 @@ var FileUploadPreviewWithContext = function FileUploadPreviewWithContext(props)
|
|
|
395
396
|
__self: _this,
|
|
396
397
|
__source: {
|
|
397
398
|
fileName: _jsxFileName,
|
|
398
|
-
lineNumber:
|
|
399
|
+
lineNumber: 337,
|
|
399
400
|
columnNumber: 5
|
|
400
401
|
}
|
|
401
402
|
}) : null;
|
|
@@ -431,7 +432,7 @@ var FileUploadPreview = function FileUploadPreview(props) {
|
|
|
431
432
|
__self: _this,
|
|
432
433
|
__source: {
|
|
433
434
|
fileName: _jsxFileName,
|
|
434
|
-
lineNumber:
|
|
435
|
+
lineNumber: 402,
|
|
435
436
|
columnNumber: 5
|
|
436
437
|
}
|
|
437
438
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["FILE_PREVIEW_HEIGHT","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","paddingLeft","paddingRight","fileContentContainer","fileIcon","alignItems","alignSelf","filenameText","fontSize","fontWeight","paddingHorizontal","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","unsupportedFile","unsupportedFileText","marginHorizontal","warningIconStyle","marginTop","UnsupportedFileTypeOrFileSizeIndicator","indicatorType","item","useTheme","theme","colors","accent_red","grey","grey_dark","messageInput","fileUploadPreview","useTranslationContext","t","ProgressIndicatorTypes","NOT_SUPPORTED","color","file","duration","getFileSizeDisplayText","size","FileUploadPreviewWithContext","props","AudioAttachment","enableOfflineSupport","FileAttachmentIcon","fileUploads","removeFile","setFileUploads","uploadFile","flatListRef","useRef","useState","flatListWidth","setFlatListWidth","onLoad","index","prevFileUploads","map","fileUpload","id","onProgress","currentTime","hasEnd","progress","onPlayPause","pausedStatus","paused","black","grey_gainsboro","grey_whisper","white","audioAttachmentFileContainer","renderItem","getIndicatorTypeForFileState","state","lastIndexOfDot","name","lastIndexOf","newFile","type","startsWith","isAudioPackageAvailable","FileState","UPLOADED","length","backgroundColor","borderColor","I18nManager","isRTL","writingDirection","slice","fileUploadsLength","useEffect","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","useChatContext","useMessageInputContext","useMessagesContext","displayName"],"sources":["FileUploadPreview.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, I18nManager, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport { ChatContextValue, useChatContext } from '../../contexts';\nimport {\n FileUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport { isAudioPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { FileState, getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\nimport { WritingDirectionAwareText } from '../RTLComponents/WritingDirectionAwareText';\n\nconst FILE_PREVIEW_HEIGHT = 60;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 8,\n top: 8,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n paddingLeft: 8,\n paddingRight: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n fileIcon: {\n alignItems: 'center',\n alignSelf: 'center',\n justifyContent: 'center',\n },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingHorizontal: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingHorizontal: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n },\n unsupportedFile: {\n flexDirection: 'row',\n paddingLeft: 10,\n },\n unsupportedFileText: {\n fontSize: 12,\n marginHorizontal: 4,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 2,\n },\n});\n\nconst UnsupportedFileTypeOrFileSizeIndicator = ({\n indicatorType,\n item,\n}: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes];\n item: FileUpload;\n}) => {\n const {\n theme: {\n colors: { accent_red, grey, grey_dark },\n messageInput: {\n fileUploadPreview: { fileSizeText },\n },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={styles.unsupportedFile}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.unsupportedFileText, { color: grey_dark }]}>\n {t('File type not supported')}\n </Text>\n </View>\n ) : (\n <WritingDirectionAwareText style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {item.file.duration || getFileSizeDisplayText(item.file.size)}\n </WritingDirectionAwareText>\n );\n};\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'AudioAttachment' | 'FileAttachmentIcon'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'enableOfflineSupport'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n AudioAttachment,\n enableOfflineSupport,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n // Handler triggered when an audio is loaded in the message input. The initial state is defined for the audio here and the duration is set.\n const onLoad = (index: string, duration: number) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n duration: fileUpload.id === index ? duration : fileUpload.duration,\n })),\n );\n };\n\n // The handler which is triggered when the audio progresses/ the thumb is dragged in the progress control. The progressed duration is set here.\n const onProgress = (index: string, currentTime?: number, hasEnd?: boolean) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n progress:\n fileUpload.id === index\n ? hasEnd\n ? 1\n : currentTime\n ? currentTime / (fileUpload.duration as number)\n : 0\n : fileUpload.progress,\n })),\n );\n };\n\n // The handler which controls or sets the paused/played state of the audio.\n const onPlayPause = (index: string, pausedStatus?: boolean) => {\n if (pausedStatus === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: fileUpload.id === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: true,\n })),\n );\n }\n };\n\n const {\n theme: {\n colors: { black, grey_dark, grey_gainsboro, grey_whisper, white },\n messageInput: {\n fileUploadPreview: {\n audioAttachmentFileContainer,\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType = getIndicatorTypeForFileState(item.state, enableOfflineSupport);\n\n const lastIndexOfDot = item.file.name.lastIndexOf('.');\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n style={styles.overlay}\n type={indicatorType}\n >\n {item.file.type?.startsWith('audio/') && isAudioPackageAvailable() ? (\n <View\n style={[\n { marginBottom: item.state === FileState.UPLOADED ? 8 : 0 },\n audioAttachmentFileContainer,\n ]}\n >\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n backgroundColor: white,\n borderColor: grey_whisper,\n width: -16,\n },\n fileContainer,\n ]}\n testID='audio-attachment-upload-preview'\n >\n <AudioAttachment\n item={item}\n onLoad={onLoad}\n onPlayPause={onPlayPause}\n onProgress={onProgress}\n testID='audio-attachment-upload-preview'\n />\n </View>\n </View>\n ) : (\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <View style={styles.fileIcon}>\n <FileAttachmentIcon mimeType={item.file.type} />\n </View>\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n I18nManager.isRTL ? { writingDirection: 'rtl' } : { writingDirection: 'ltr' },\n filenameText,\n ]}\n >\n {item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)}\n </Text>\n {indicatorType !== null && (\n <UnsupportedFileTypeOrFileSizeIndicator\n indicatorType={indicatorType}\n item={item}\n />\n )}\n </View>\n </View>\n </View>\n )}\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: grey_gainsboro }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close pathFill={grey_dark} />\n </TouchableOpacity>\n </UploadProgressIndicator>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => `${item.id}`}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) =>\n prevFileUpload.state === nextFileUploads[index].state &&\n prevFileUpload.paused === nextFileUploads[index].paused &&\n prevFileUpload.progress === nextFileUploads[index].progress &&\n prevFileUpload.duration === nextFileUploads[index].duration,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const { fileUploads, removeFile, setFileUploads, uploadFile } =\n useMessageInputContext<StreamChatGenerics>();\n const { AudioAttachment, FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{\n AudioAttachment,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n }}\n {...{ enableOfflineSupport }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["FILE_PREVIEW_HEIGHT","WARNING_ICON_SIZE","styles","StyleSheet","create","dismiss","borderRadius","height","position","right","top","width","fileContainer","borderWidth","flexDirection","justifyContent","marginBottom","paddingLeft","paddingRight","fileContentContainer","fileIcon","alignItems","alignSelf","filenameText","fontSize","fontWeight","paddingHorizontal","fileSizeText","fileTextContainer","flatList","maxHeight","overlay","marginLeft","marginRight","marginTop","unsupportedFile","unsupportedFileText","marginHorizontal","warningIconStyle","UnsupportedFileTypeOrFileSizeIndicator","indicatorType","item","useTheme","theme","colors","accent_red","grey","grey_dark","messageInput","fileUploadPreview","useTranslationContext","t","ProgressIndicatorTypes","NOT_SUPPORTED","color","file","duration","getFileSizeDisplayText","size","FileUploadPreviewWithContext","props","AudioAttachment","enableOfflineSupport","FileAttachmentIcon","fileUploads","removeFile","setFileUploads","uploadFile","flatListRef","useRef","useState","flatListWidth","setFlatListWidth","onLoad","index","prevFileUploads","map","fileUpload","id","onProgress","currentTime","hasEnd","progress","onPlayPause","pausedStatus","paused","black","grey_gainsboro","grey_whisper","white","audioAttachmentFileContainer","renderItem","getIndicatorTypeForFileState","state","lastIndexOfDot","name","lastIndexOf","newFile","type","startsWith","isAudioPackageAvailable","FileState","UPLOADED","length","backgroundColor","borderColor","I18nManager","isRTL","writingDirection","slice","fileUploadsLength","useEffect","current","setTimeout","scrollToEnd","_","offset","nativeEvent","layout","areEqual","prevProps","nextProps","nextFileUploads","every","prevFileUpload","MemoizedFileUploadPreview","React","memo","FileUploadPreview","useChatContext","useMessageInputContext","useMessagesContext","displayName"],"sources":["FileUploadPreview.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport { FlatList, I18nManager, StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport { UploadProgressIndicator } from './UploadProgressIndicator';\n\nimport { ChatContextValue, useChatContext } from '../../contexts';\nimport {\n FileUpload,\n MessageInputContextValue,\n useMessageInputContext,\n} from '../../contexts/messageInputContext/MessageInputContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../icons/Close';\nimport { Warning } from '../../icons/Warning';\nimport { isAudioPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { FileState, getIndicatorTypeForFileState, ProgressIndicatorTypes } from '../../utils/utils';\nimport { getFileSizeDisplayText } from '../Attachment/FileAttachment';\nimport { WritingDirectionAwareText } from '../RTLComponents/WritingDirectionAwareText';\n\nconst FILE_PREVIEW_HEIGHT = 60;\nconst WARNING_ICON_SIZE = 16;\n\nconst styles = StyleSheet.create({\n dismiss: {\n borderRadius: 24,\n height: 24,\n position: 'absolute',\n right: 8,\n top: 8,\n width: 24,\n },\n fileContainer: {\n borderRadius: 12,\n borderWidth: 1,\n flexDirection: 'row',\n height: FILE_PREVIEW_HEIGHT,\n justifyContent: 'space-between',\n marginBottom: 8,\n paddingLeft: 8,\n paddingRight: 8,\n },\n fileContentContainer: { flexDirection: 'row' },\n fileIcon: {\n alignItems: 'center',\n alignSelf: 'center',\n justifyContent: 'center',\n },\n filenameText: {\n fontSize: 14,\n fontWeight: 'bold',\n paddingHorizontal: 10,\n },\n fileSizeText: {\n fontSize: 12,\n paddingHorizontal: 10,\n },\n fileTextContainer: {\n height: '100%',\n justifyContent: 'space-around',\n },\n flatList: { marginBottom: 12, maxHeight: FILE_PREVIEW_HEIGHT * 2.5 + 16 },\n overlay: {\n borderRadius: 12,\n marginLeft: 8,\n marginRight: 8,\n marginTop: 2,\n },\n unsupportedFile: {\n flexDirection: 'row',\n paddingLeft: 10,\n },\n unsupportedFileText: {\n fontSize: 12,\n marginHorizontal: 4,\n },\n warningIconStyle: {\n borderRadius: 24,\n marginTop: 2,\n },\n});\n\nconst UnsupportedFileTypeOrFileSizeIndicator = ({\n indicatorType,\n item,\n}: {\n indicatorType: typeof ProgressIndicatorTypes[keyof typeof ProgressIndicatorTypes];\n item: FileUpload;\n}) => {\n const {\n theme: {\n colors: { accent_red, grey, grey_dark },\n messageInput: {\n fileUploadPreview: { fileSizeText },\n },\n },\n } = useTheme();\n\n const { t } = useTranslationContext();\n\n return indicatorType === ProgressIndicatorTypes.NOT_SUPPORTED ? (\n <View style={styles.unsupportedFile}>\n <Warning\n height={WARNING_ICON_SIZE}\n pathFill={accent_red}\n style={styles.warningIconStyle}\n width={WARNING_ICON_SIZE}\n />\n <Text style={[styles.unsupportedFileText, { color: grey_dark }]}>\n {t('File type not supported')}\n </Text>\n </View>\n ) : (\n <WritingDirectionAwareText style={[styles.fileSizeText, { color: grey }, fileSizeText]}>\n {item.file.duration || getFileSizeDisplayText(item.file.size)}\n </WritingDirectionAwareText>\n );\n};\n\ntype FileUploadPreviewPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<\n MessageInputContextValue<StreamChatGenerics>,\n 'fileUploads' | 'removeFile' | 'uploadFile' | 'setFileUploads'\n> &\n Pick<MessagesContextValue<StreamChatGenerics>, 'AudioAttachment' | 'FileAttachmentIcon'> &\n Pick<ChatContextValue<StreamChatGenerics>, 'enableOfflineSupport'>;\n\nconst FileUploadPreviewWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n AudioAttachment,\n enableOfflineSupport,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n } = props;\n\n const flatListRef = useRef<FlatList<FileUpload> | null>(null);\n const [flatListWidth, setFlatListWidth] = useState(0);\n\n // Handler triggered when an audio is loaded in the message input. The initial state is defined for the audio here and the duration is set.\n const onLoad = (index: string, duration: number) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n duration: fileUpload.id === index ? duration : fileUpload.duration,\n })),\n );\n };\n\n // The handler which is triggered when the audio progresses/ the thumb is dragged in the progress control. The progressed duration is set here.\n const onProgress = (index: string, currentTime?: number, hasEnd?: boolean) => {\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n progress:\n fileUpload.id === index\n ? hasEnd\n ? 1\n : currentTime\n ? currentTime / (fileUpload.duration as number)\n : 0\n : fileUpload.progress,\n })),\n );\n };\n\n // The handler which controls or sets the paused/played state of the audio.\n const onPlayPause = (index: string, pausedStatus?: boolean) => {\n if (pausedStatus === false) {\n // If the status is false we set the audio with the index as playing and the others as paused.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: fileUpload.id === index ? false : true,\n })),\n );\n } else {\n // If the status is true we simply set all the audio's paused state as true.\n setFileUploads((prevFileUploads) =>\n prevFileUploads.map((fileUpload) => ({\n ...fileUpload,\n paused: true,\n })),\n );\n }\n };\n\n const {\n theme: {\n colors: { black, grey_dark, grey_gainsboro, grey_whisper, white },\n messageInput: {\n fileUploadPreview: {\n audioAttachmentFileContainer,\n dismiss,\n fileContainer,\n fileContentContainer,\n filenameText,\n fileTextContainer,\n flatList,\n },\n },\n },\n } = useTheme();\n\n const renderItem = ({ index, item }: { index: number; item: FileUpload }) => {\n const indicatorType = getIndicatorTypeForFileState(item.state, enableOfflineSupport);\n\n const lastIndexOfDot = item.file.name.lastIndexOf('.');\n\n return (\n <>\n <UploadProgressIndicator\n action={() => {\n uploadFile({ newFile: item });\n }}\n style={styles.overlay}\n type={indicatorType}\n >\n {item.file.type?.startsWith('audio/') && isAudioPackageAvailable() ? (\n <View\n style={[\n { marginBottom: item.state === FileState.UPLOADED ? 8 : 0 },\n audioAttachmentFileContainer,\n ]}\n >\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n backgroundColor: white,\n borderColor: grey_whisper,\n width: -16,\n },\n fileContainer,\n ]}\n testID='audio-attachment-upload-preview'\n >\n <AudioAttachment\n item={item}\n onLoad={onLoad}\n onPlayPause={onPlayPause}\n onProgress={onProgress}\n testID='audio-attachment-upload-preview'\n />\n </View>\n </View>\n ) : (\n <View\n style={[\n styles.fileContainer,\n index === fileUploads.length - 1\n ? {\n marginBottom: 0,\n }\n : {},\n {\n borderColor: grey_whisper,\n width: flatListWidth - 16,\n },\n fileContainer,\n ]}\n >\n <View style={[styles.fileContentContainer, fileContentContainer]}>\n <View style={styles.fileIcon}>\n <FileAttachmentIcon mimeType={item.file.type} />\n </View>\n <View style={[styles.fileTextContainer, fileTextContainer]}>\n <Text\n numberOfLines={1}\n style={[\n styles.filenameText,\n {\n color: black,\n width:\n flatListWidth -\n 16 - // 16 = horizontal padding\n 40 - // 40 = file icon size\n 24 - // 24 = close icon size\n 24, // 24 = internal padding\n },\n I18nManager.isRTL ? { writingDirection: 'rtl' } : { writingDirection: 'ltr' },\n filenameText,\n ]}\n >\n {item.file.name.slice(0, 12) + '...' + item.file.name.slice(lastIndexOfDot)}\n </Text>\n {indicatorType !== null && (\n <UnsupportedFileTypeOrFileSizeIndicator\n indicatorType={indicatorType}\n item={item}\n />\n )}\n </View>\n </View>\n </View>\n )}\n <TouchableOpacity\n onPress={() => {\n removeFile(item.id);\n }}\n style={[styles.dismiss, { backgroundColor: grey_gainsboro }, dismiss]}\n testID='remove-file-upload-preview'\n >\n <Close pathFill={grey_dark} />\n </TouchableOpacity>\n </UploadProgressIndicator>\n </>\n );\n };\n\n const fileUploadsLength = fileUploads.length;\n\n useEffect(() => {\n if (fileUploadsLength && flatListRef.current) {\n setTimeout(() => flatListRef.current?.scrollToEnd(), 1);\n }\n }, [fileUploadsLength]);\n\n return fileUploadsLength ? (\n <FlatList\n data={fileUploads}\n getItemLayout={(_, index) => ({\n index,\n length: FILE_PREVIEW_HEIGHT + 8,\n offset: (FILE_PREVIEW_HEIGHT + 8) * index,\n })}\n keyExtractor={(item) => `${item.id}`}\n onLayout={({\n nativeEvent: {\n layout: { width },\n },\n }) => {\n setFlatListWidth(width);\n }}\n ref={flatListRef}\n renderItem={renderItem}\n style={[styles.flatList, flatList]}\n />\n ) : null;\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n nextProps: FileUploadPreviewPropsWithContext<StreamChatGenerics>,\n) => {\n const { fileUploads: prevFileUploads } = prevProps;\n const { fileUploads: nextFileUploads } = nextProps;\n\n return (\n prevFileUploads.length === nextFileUploads.length &&\n prevFileUploads.every(\n (prevFileUpload, index) =>\n prevFileUpload.state === nextFileUploads[index].state &&\n prevFileUpload.paused === nextFileUploads[index].paused &&\n prevFileUpload.progress === nextFileUploads[index].progress &&\n prevFileUpload.duration === nextFileUploads[index].duration,\n )\n );\n};\n\nconst MemoizedFileUploadPreview = React.memo(\n FileUploadPreviewWithContext,\n areEqual,\n) as typeof FileUploadPreviewWithContext;\n\nexport type FileUploadPreviewProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<FileUploadPreviewPropsWithContext<StreamChatGenerics>>;\n\n/**\n * FileUploadPreview\n * UI Component to preview the files set for upload\n */\nexport const FileUploadPreview = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: FileUploadPreviewProps<StreamChatGenerics>,\n) => {\n const { enableOfflineSupport } = useChatContext<StreamChatGenerics>();\n const { fileUploads, removeFile, setFileUploads, uploadFile } =\n useMessageInputContext<StreamChatGenerics>();\n const { AudioAttachment, FileAttachmentIcon } = useMessagesContext<StreamChatGenerics>();\n\n return (\n <MemoizedFileUploadPreview\n {...{\n AudioAttachment,\n FileAttachmentIcon,\n fileUploads,\n removeFile,\n setFileUploads,\n uploadFile,\n }}\n {...{ enableOfflineSupport }}\n {...props}\n />\n );\n};\n\nFileUploadPreview.displayName = 'FileUploadPreview{messageInput{fileUploadPreview}}';\n"],"mappings":";;;;;;;;AAAA;AACA;AAEA;AAEA;AACA;AAKA;AAIA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAAuF;EAAA;AAAA;AAAA;AAEvF,IAAMA,mBAAmB,GAAG,EAAE;AAC9B,IAAMC,iBAAiB,GAAG,EAAE;AAE5B,IAAMC,MAAM,GAAGC,uBAAU,CAACC,MAAM,CAAC;EAC/BC,OAAO,EAAE;IACPC,YAAY,EAAE,EAAE;IAChBC,MAAM,EAAE,EAAE;IACVC,QAAQ,EAAE,UAAU;IACpBC,KAAK,EAAE,CAAC;IACRC,GAAG,EAAE,CAAC;IACNC,KAAK,EAAE;EACT,CAAC;EACDC,aAAa,EAAE;IACbN,YAAY,EAAE,EAAE;IAChBO,WAAW,EAAE,CAAC;IACdC,aAAa,EAAE,KAAK;IACpBP,MAAM,EAAEP,mBAAmB;IAC3Be,cAAc,EAAE,eAAe;IAC/BC,YAAY,EAAE,CAAC;IACfC,WAAW,EAAE,CAAC;IACdC,YAAY,EAAE;EAChB,CAAC;EACDC,oBAAoB,EAAE;IAAEL,aAAa,EAAE;EAAM,CAAC;EAC9CM,QAAQ,EAAE;IACRC,UAAU,EAAE,QAAQ;IACpBC,SAAS,EAAE,QAAQ;IACnBP,cAAc,EAAE;EAClB,CAAC;EACDQ,YAAY,EAAE;IACZC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,MAAM;IAClBC,iBAAiB,EAAE;EACrB,CAAC;EACDC,YAAY,EAAE;IACZH,QAAQ,EAAE,EAAE;IACZE,iBAAiB,EAAE;EACrB,CAAC;EACDE,iBAAiB,EAAE;IACjBrB,MAAM,EAAE,MAAM;IACdQ,cAAc,EAAE;EAClB,CAAC;EACDc,QAAQ,EAAE;IAAEb,YAAY,EAAE,EAAE;IAAEc,SAAS,EAAE9B,mBAAmB,GAAG,GAAG,GAAG;EAAG,CAAC;EACzE+B,OAAO,EAAE;IACPzB,YAAY,EAAE,EAAE;IAChB0B,UAAU,EAAE,CAAC;IACbC,WAAW,EAAE,CAAC;IACdC,SAAS,EAAE;EACb,CAAC;EACDC,eAAe,EAAE;IACfrB,aAAa,EAAE,KAAK;IACpBG,WAAW,EAAE;EACf,CAAC;EACDmB,mBAAmB,EAAE;IACnBZ,QAAQ,EAAE,EAAE;IACZa,gBAAgB,EAAE;EACpB,CAAC;EACDC,gBAAgB,EAAE;IAChBhC,YAAY,EAAE,EAAE;IAChB4B,SAAS,EAAE;EACb;AACF,CAAC,CAAC;AAEF,IAAMK,sCAAsC,GAAG,SAAzCA,sCAAsC,OAMtC;EAAA,IALJC,aAAa,QAAbA,aAAa;IACbC,IAAI,QAAJA,IAAI;EAKJ,gBAOI,IAAAC,sBAAQ,GAAE;IAAA,4BANZC,KAAK;IAAA,wCACHC,MAAM;IAAIC,UAAU,yBAAVA,UAAU;IAAEC,IAAI,yBAAJA,IAAI;IAAEC,SAAS,yBAATA,SAAS;IAEdpB,YAAY,mBADnCqB,YAAY,CACVC,iBAAiB,CAAItB,YAAY;EAKvC,4BAAc,IAAAuB,yCAAqB,GAAE;IAA7BC,CAAC,yBAADA,CAAC;EAET,OAAOX,aAAa,KAAKY,6BAAsB,CAACC,aAAa,GAC3D,gCAAC,iBAAI;IAAC,KAAK,EAAEnD,MAAM,CAACiC,eAAgB;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GAClC,gCAAC,gBAAO;IACN,MAAM,EAAElC,iBAAkB;IAC1B,QAAQ,EAAE4C,UAAW;IACrB,KAAK,EAAE3C,MAAM,CAACoC,gBAAiB;IAC/B,KAAK,EAAErC,iBAAkB;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,EACzB,EACF,gCAAC,iBAAI;IAAC,KAAK,EAAE,CAACC,MAAM,CAACkC,mBAAmB,EAAE;MAAEkB,KAAK,EAAEP;IAAU,CAAC,CAAE;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GAC7DI,CAAC,CAAC,yBAAyB,CAAC,CACxB,CACF,GAEP,gCAAC,oDAAyB;IAAC,KAAK,EAAE,CAACjD,MAAM,CAACyB,YAAY,EAAE;MAAE2B,KAAK,EAAER;IAAK,CAAC,EAAEnB,YAAY,CAAE;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GACpFc,IAAI,CAACc,IAAI,CAACC,QAAQ,IAAI,IAAAC,sCAAsB,EAAChB,IAAI,CAACc,IAAI,CAACG,IAAI,CAAC,CAEhE;AACH,CAAC;AAWD,IAAMC,4BAA4B,GAAG,SAA/BA,4BAA4B,CAGhCC,KAA4D,EACzD;EACH,IACEC,eAAe,GAObD,KAAK,CAPPC,eAAe;IACfC,oBAAoB,GAMlBF,KAAK,CANPE,oBAAoB;IACpBC,kBAAkB,GAKhBH,KAAK,CALPG,kBAAkB;IAClBC,WAAW,GAITJ,KAAK,CAJPI,WAAW;IACXC,UAAU,GAGRL,KAAK,CAHPK,UAAU;IACVC,cAAc,GAEZN,KAAK,CAFPM,cAAc;IACdC,UAAU,GACRP,KAAK,CADPO,UAAU;EAGZ,IAAMC,WAAW,GAAG,IAAAC,aAAM,EAA8B,IAAI,CAAC;EAC7D,gBAA0C,IAAAC,eAAQ,EAAC,CAAC,CAAC;IAAA;IAA9CC,aAAa;IAAEC,gBAAgB;EAGtC,IAAMC,MAAM,GAAG,SAATA,MAAM,CAAIC,KAAa,EAAElB,QAAgB,EAAK;IAClDU,cAAc,CAAC,UAACS,eAAe;MAAA,OAC7BA,eAAe,CAACC,GAAG,CAAC,UAACC,UAAU;QAAA,qCAC1BA,UAAU;UACbrB,QAAQ,EAAEqB,UAAU,CAACC,EAAE,KAAKJ,KAAK,GAAGlB,QAAQ,GAAGqB,UAAU,CAACrB;QAAQ;MAAA,CAClE,CAAC;IAAA,EACJ;EACH,CAAC;EAGD,IAAMuB,UAAU,GAAG,SAAbA,UAAU,CAAIL,KAAa,EAAEM,WAAoB,EAAEC,MAAgB,EAAK;IAC5Ef,cAAc,CAAC,UAACS,eAAe;MAAA,OAC7BA,eAAe,CAACC,GAAG,CAAC,UAACC,UAAU;QAAA,qCAC1BA,UAAU;UACbK,QAAQ,EACNL,UAAU,CAACC,EAAE,KAAKJ,KAAK,GACnBO,MAAM,GACJ,CAAC,GACDD,WAAW,GACXA,WAAW,GAAIH,UAAU,CAACrB,QAAmB,GAC7C,CAAC,GACHqB,UAAU,CAACK;QAAQ;MAAA,CACzB,CAAC;IAAA,EACJ;EACH,CAAC;EAGD,IAAMC,WAAW,GAAG,SAAdA,WAAW,CAAIT,KAAa,EAAEU,YAAsB,EAAK;IAC7D,IAAIA,YAAY,KAAK,KAAK,EAAE;MAE1BlB,cAAc,CAAC,UAACS,eAAe;QAAA,OAC7BA,eAAe,CAACC,GAAG,CAAC,UAACC,UAAU;UAAA,qCAC1BA,UAAU;YACbQ,MAAM,EAAER,UAAU,CAACC,EAAE,KAAKJ,KAAK,GAAG,KAAK,GAAG;UAAI;QAAA,CAC9C,CAAC;MAAA,EACJ;IACH,CAAC,MAAM;MAELR,cAAc,CAAC,UAACS,eAAe;QAAA,OAC7BA,eAAe,CAACC,GAAG,CAAC,UAACC,UAAU;UAAA,qCAC1BA,UAAU;YACbQ,MAAM,EAAE;UAAI;QAAA,CACZ,CAAC;MAAA,EACJ;IACH;EACF,CAAC;EAED,iBAeI,IAAA3C,sBAAQ,GAAE;IAAA,8BAdZC,KAAK;IAAA,yCACHC,MAAM;IAAI0C,KAAK,yBAALA,KAAK;IAAEvC,SAAS,yBAATA,SAAS;IAAEwC,cAAc,yBAAdA,cAAc;IAAEC,YAAY,yBAAZA,YAAY;IAAEC,KAAK,yBAALA,KAAK;IAAA,yCAC/DzC,YAAY,CACVC,iBAAiB;IACfyC,4BAA4B,yBAA5BA,4BAA4B;IAC5BrF,OAAO,yBAAPA,OAAO;IACPO,aAAa,yBAAbA,aAAa;IACbO,oBAAoB,yBAApBA,oBAAoB;IACpBI,YAAY,yBAAZA,YAAY;IACZK,iBAAiB,yBAAjBA,iBAAiB;IACjBC,QAAQ,yBAARA,QAAQ;EAMhB,IAAM8D,UAAU,GAAG,SAAbA,UAAU,QAA6D;IAAA;IAAA,IAAvDjB,KAAK,SAALA,KAAK;MAAEjC,IAAI,SAAJA,IAAI;IAC/B,IAAMD,aAAa,GAAG,IAAAoD,mCAA4B,EAACnD,IAAI,CAACoD,KAAK,EAAE/B,oBAAoB,CAAC;IAEpF,IAAMgC,cAAc,GAAGrD,IAAI,CAACc,IAAI,CAACwC,IAAI,CAACC,WAAW,CAAC,GAAG,CAAC;IAEtD,OACE;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GACE,gCAAC,gDAAuB;MACtB,MAAM,EAAE,kBAAM;QACZ7B,UAAU,CAAC;UAAE8B,OAAO,EAAExD;QAAK,CAAC,CAAC;MAC/B,CAAE;MACF,KAAK,EAAEvC,MAAM,CAAC6B,OAAQ;MACtB,IAAI,EAAES,aAAc;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAEnB,mBAAAC,IAAI,CAACc,IAAI,CAAC2C,IAAI,aAAd,gBAAgBC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAAC,+BAAuB,GAAE,GAChE,gCAAC,iBAAI;MACH,KAAK,EAAE,CACL;QAAEpF,YAAY,EAAEyB,IAAI,CAACoD,KAAK,KAAKQ,gBAAS,CAACC,QAAQ,GAAG,CAAC,GAAG;MAAE,CAAC,EAC3DZ,4BAA4B,CAC5B;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAEF,gCAAC,iBAAI;MACH,KAAK,EAAE,CACLxF,MAAM,CAACU,aAAa,EACpB8D,KAAK,KAAKV,WAAW,CAACuC,MAAM,GAAG,CAAC,GAC5B;QACEvF,YAAY,EAAE;MAChB,CAAC,GACD,CAAC,CAAC,EACN;QACEwF,eAAe,EAAEf,KAAK;QACtBgB,WAAW,EAAEjB,YAAY;QACzB7E,KAAK,EAAE,CAAC;MACV,CAAC,EACDC,aAAa,CACb;MACF,MAAM,EAAC,iCAAiC;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAExC,gCAAC,eAAe;MACd,IAAI,EAAE6B,IAAK;MACX,MAAM,EAAEgC,MAAO;MACf,WAAW,EAAEU,WAAY;MACzB,UAAU,EAAEJ,UAAW;MACvB,MAAM,EAAC,iCAAiC;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EACxC,CACG,CACF,GAEP,gCAAC,iBAAI;MACH,KAAK,EAAE,CACL7E,MAAM,CAACU,aAAa,EACpB8D,KAAK,KAAKV,WAAW,CAACuC,MAAM,GAAG,CAAC,GAC5B;QACEvF,YAAY,EAAE;MAChB,CAAC,GACD,CAAC,CAAC,EACN;QACEyF,WAAW,EAAEjB,YAAY;QACzB7E,KAAK,EAAE4D,aAAa,GAAG;MACzB,CAAC,EACD3D,aAAa,CACb;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAEF,gCAAC,iBAAI;MAAC,KAAK,EAAE,CAACV,MAAM,CAACiB,oBAAoB,EAAEA,oBAAoB,CAAE;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAC/D,gCAAC,iBAAI;MAAC,KAAK,EAAEjB,MAAM,CAACkB,QAAS;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAC3B,gCAAC,kBAAkB;MAAC,QAAQ,EAAEqB,IAAI,CAACc,IAAI,CAAC2C,IAAK;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,CAC3C,EACP,gCAAC,iBAAI;MAAC,KAAK,EAAE,CAAChG,MAAM,CAAC0B,iBAAiB,EAAEA,iBAAiB,CAAE;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GACzD,gCAAC,iBAAI;MACH,aAAa,EAAE,CAAE;MACjB,KAAK,EAAE,CACL1B,MAAM,CAACqB,YAAY,EACnB;QACE+B,KAAK,EAAEgC,KAAK;QACZ3E,KAAK,EACH4D,aAAa,GACb,EAAE,GACF,EAAE,GACF,EAAE,GACF;MACJ,CAAC,EACDmC,wBAAW,CAACC,KAAK,GAAG;QAAEC,gBAAgB,EAAE;MAAM,CAAC,GAAG;QAAEA,gBAAgB,EAAE;MAAM,CAAC,EAC7ErF,YAAY,CACZ;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAEDkB,IAAI,CAACc,IAAI,CAACwC,IAAI,CAACc,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,GAAGpE,IAAI,CAACc,IAAI,CAACwC,IAAI,CAACc,KAAK,CAACf,cAAc,CAAC,CACtE,EACNtD,aAAa,KAAK,IAAI,IACrB,gCAAC,sCAAsC;MACrC,aAAa,EAAEA,aAAc;MAC7B,IAAI,EAAEC,IAAK;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAEd,CACI,CACF,CAEV,EACD,gCAAC,6BAAgB;MACf,OAAO,EAAE,mBAAM;QACbwB,UAAU,CAACxB,IAAI,CAACqC,EAAE,CAAC;MACrB,CAAE;MACF,KAAK,EAAE,CAAC5E,MAAM,CAACG,OAAO,EAAE;QAAEmG,eAAe,EAAEjB;MAAe,CAAC,EAAElF,OAAO,CAAE;MACtE,MAAM,EAAC,4BAA4B;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,GAEnC,gCAAC,YAAK;MAAC,QAAQ,EAAE0C,SAAU;MAAA;MAAA;QAAA;QAAA;QAAA;MAAA;IAAA,EAAG,CACb,CACK,CACzB;EAEP,CAAC;EAED,IAAM+D,iBAAiB,GAAG9C,WAAW,CAACuC,MAAM;EAE5C,IAAAQ,gBAAS,EAAC,YAAM;IACd,IAAID,iBAAiB,IAAI1C,WAAW,CAAC4C,OAAO,EAAE;MAC5CC,UAAU,CAAC;QAAA;QAAA,+BAAM7C,WAAW,CAAC4C,OAAO,qBAAnB,qBAAqBE,WAAW,EAAE;MAAA,GAAE,CAAC,CAAC;IACzD;EACF,CAAC,EAAE,CAACJ,iBAAiB,CAAC,CAAC;EAEvB,OAAOA,iBAAiB,GACtB,gCAAC,qBAAQ;IACP,IAAI,EAAE9C,WAAY;IAClB,aAAa,EAAE,uBAACmD,CAAC,EAAEzC,KAAK;MAAA,OAAM;QAC5BA,KAAK,EAALA,KAAK;QACL6B,MAAM,EAAEvG,mBAAmB,GAAG,CAAC;QAC/BoH,MAAM,EAAE,CAACpH,mBAAmB,GAAG,CAAC,IAAI0E;MACtC,CAAC;IAAA,CAAE;IACH,YAAY,EAAE,sBAACjC,IAAI;MAAA,YAAQA,IAAI,CAACqC,EAAE;IAAA,CAAG;IACrC,QAAQ,EAAE,yBAIJ;MAAA,IAFQnE,KAAK,SADjB0G,WAAW,CACTC,MAAM,CAAI3G,KAAK;MAGjB6D,gBAAgB,CAAC7D,KAAK,CAAC;IACzB,CAAE;IACF,GAAG,EAAEyD,WAAY;IACjB,UAAU,EAAEuB,UAAW;IACvB,KAAK,EAAE,CAACzF,MAAM,CAAC2B,QAAQ,EAAEA,QAAQ,CAAE;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,EACnC,GACA,IAAI;AACV,CAAC;AAED,IAAM0F,QAAQ,GAAG,SAAXA,QAAQ,CACZC,SAAgE,EAChEC,SAAgE,EAC7D;EACH,IAAqB9C,eAAe,GAAK6C,SAAS,CAA1CxD,WAAW;EACnB,IAAqB0D,eAAe,GAAKD,SAAS,CAA1CzD,WAAW;EAEnB,OACEW,eAAe,CAAC4B,MAAM,KAAKmB,eAAe,CAACnB,MAAM,IACjD5B,eAAe,CAACgD,KAAK,CACnB,UAACC,cAAc,EAAElD,KAAK;IAAA,OACpBkD,cAAc,CAAC/B,KAAK,KAAK6B,eAAe,CAAChD,KAAK,CAAC,CAACmB,KAAK,IACrD+B,cAAc,CAACvC,MAAM,KAAKqC,eAAe,CAAChD,KAAK,CAAC,CAACW,MAAM,IACvDuC,cAAc,CAAC1C,QAAQ,KAAKwC,eAAe,CAAChD,KAAK,CAAC,CAACQ,QAAQ,IAC3D0C,cAAc,CAACpE,QAAQ,KAAKkE,eAAe,CAAChD,KAAK,CAAC,CAAClB,QAAQ;EAAA,EAC9D;AAEL,CAAC;AAED,IAAMqE,yBAAyB,GAAGC,iBAAK,CAACC,IAAI,CAC1CpE,4BAA4B,EAC5B4D,QAAQ,CAC8B;AAUjC,IAAMS,iBAAiB,GAAG,SAApBA,iBAAiB,CAG5BpE,KAAiD,EAC9C;EACH,sBAAiC,IAAAqE,wBAAc,GAAsB;IAA7DnE,oBAAoB,mBAApBA,oBAAoB;EAC5B,4BACE,IAAAoE,2CAAsB,GAAsB;IADtClE,WAAW,yBAAXA,WAAW;IAAEC,UAAU,yBAAVA,UAAU;IAAEC,cAAc,yBAAdA,cAAc;IAAEC,UAAU,yBAAVA,UAAU;EAE3D,0BAAgD,IAAAgE,mCAAkB,GAAsB;IAAhFtE,eAAe,uBAAfA,eAAe;IAAEE,kBAAkB,uBAAlBA,kBAAkB;EAE3C,OACE,gCAAC,yBAAyB;IAEtBF,eAAe,EAAfA,eAAe;IACfE,kBAAkB,EAAlBA,kBAAkB;IAClBC,WAAW,EAAXA,WAAW;IACXC,UAAU,EAAVA,UAAU;IACVC,cAAc,EAAdA,cAAc;IACdC,UAAU,EAAVA,UAAU;IAENL,oBAAoB,EAApBA;EAAoB,GACtBF,KAAK;IAAA;IAAA;MAAA;MAAA;MAAA;IAAA;EAAA,GACT;AAEN,CAAC;AAAC;AAEFoE,iBAAiB,CAACI,WAAW,GAAG,oDAAoD"}
|