@plusscommunities/pluss-core-app 7.0.1-beta.1 → 7.0.2-auth.0
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/dist/module/apis/fileActions.js +21 -28
- package/dist/module/apis/fileActions.js.map +1 -1
- package/dist/module/components/DocumentUploader.js +237 -0
- package/dist/module/components/DocumentUploader.js.map +1 -0
- package/dist/module/components/ImagePopup.js +42 -20
- package/dist/module/components/ImagePopup.js.map +1 -1
- package/dist/module/components/ImageUploader.js +50 -25
- package/dist/module/components/ImageUploader.js.map +1 -1
- package/dist/module/components/MediaPlayer.js +2 -2
- package/dist/module/components/MediaPlayer.js.map +1 -1
- package/dist/module/components/PlussChat.js +80 -6
- package/dist/module/components/PlussChat.js.map +1 -1
- package/dist/module/components/PlussChatMessage.js +41 -4
- package/dist/module/components/PlussChatMessage.js.map +1 -1
- package/dist/module/components/index.js +1 -0
- package/dist/module/components/index.js.map +1 -1
- package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +2 -1
- package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js.map +1 -1
- package/dist/module/config.js +6 -1
- package/dist/module/config.js.map +1 -1
- package/dist/module/session.js +2 -2
- package/dist/module/session.js.map +1 -1
- package/package.json +4 -1
- package/src/apis/fileActions.js +19 -27
- package/src/components/DocumentUploader.js +207 -0
- package/src/components/ImagePopup.js +41 -26
- package/src/components/ImageUploader.js +66 -28
- package/src/components/MediaPlayer.js +2 -2
- package/src/components/PlussChat.js +88 -2
- package/src/components/PlussChatMessage.js +40 -3
- package/src/components/index.js +1 -0
- package/src/components/react-native-expo-image-cropper/ExpoImageManipulator.js +1 -1
- package/src/config.js +5 -0
- package/src/session.js +2 -2
|
@@ -108,19 +108,21 @@ class ImageUploader extends Component {
|
|
|
108
108
|
let uploadUri;
|
|
109
109
|
try {
|
|
110
110
|
const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;
|
|
111
|
-
uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);
|
|
112
|
-
this.props.onUploadStarted(uploadUri, imageUri);
|
|
113
111
|
this.hideUploadMenu();
|
|
114
112
|
const resized = await this.resizeImageAsync(imageUri);
|
|
113
|
+
const blob = await fileActions.imageToBlob(resized.uri);
|
|
114
|
+
const presignedUriRes = await fileActions.getPresignedUrl(_.last(resized.uri.split('/')), blob.type);
|
|
115
|
+
uploadUri = presignedUriRes.key;
|
|
116
|
+
this.props.onUploadStarted(uploadUri, imageUri);
|
|
115
117
|
if (this.props.onlySelectImage) {
|
|
116
118
|
this.props.onImageSelected(resized, fileName);
|
|
117
119
|
return;
|
|
118
120
|
}
|
|
119
|
-
const
|
|
121
|
+
const uploadResult = await fileActions.uploadUserMediaWithProgress(blob, presignedUriRes.url, progress => {
|
|
120
122
|
if (this.props.onUploadProgress) this.props.onUploadProgress(progress);
|
|
121
123
|
});
|
|
122
|
-
this.props.onUploadSuccess(Config.env.baseUploadsUrl +
|
|
123
|
-
console.log('upload success', Config.env.baseUploadsUrl +
|
|
124
|
+
this.props.onUploadSuccess(Config.env.baseUploadsUrl + uploadUri, uploadUri);
|
|
125
|
+
console.log('upload success', Config.env.baseUploadsUrl + uploadUri);
|
|
124
126
|
} catch (e) {
|
|
125
127
|
console.log('handleImagePicked error', e);
|
|
126
128
|
this.props.onUploadFailed(uploadUri);
|
|
@@ -131,7 +133,6 @@ class ImageUploader extends Component {
|
|
|
131
133
|
const imagesUploaded = imagesSelected.map(image => {
|
|
132
134
|
const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;
|
|
133
135
|
const uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);
|
|
134
|
-
if (!this.props.onlySelectImage) this.props.onUploadStarted(uploadUri, image.uri);
|
|
135
136
|
return {
|
|
136
137
|
imageUri: image.uri,
|
|
137
138
|
uploadUri,
|
|
@@ -150,15 +151,19 @@ class ImageUploader extends Component {
|
|
|
150
151
|
} = image;
|
|
151
152
|
try {
|
|
152
153
|
const resized = await this.resizeImageAsync(imageUri);
|
|
154
|
+
const blob = await fileActions.imageToBlob(resized.uri);
|
|
153
155
|
if (this.props.onlySelectImage) {
|
|
154
156
|
this.props.onImageSelected(resized, fileName);
|
|
155
157
|
return;
|
|
156
158
|
}
|
|
157
|
-
const
|
|
159
|
+
const presignedUriRes = await fileActions.getPresignedUrl(_.last(resized.uri.split('/')), blob.type);
|
|
160
|
+
const uploadUri = presignedUriRes.key;
|
|
161
|
+
if (!this.props.onlySelectImage) this.props.onUploadStarted(uploadUri, imageUri);
|
|
162
|
+
const uploadResult = await fileActions.uploadUserMediaWithProgress(blob, presignedUriRes.url, progress => {
|
|
158
163
|
if (this.props.onUploadProgress) this.props.onUploadProgress(progress);
|
|
159
164
|
});
|
|
160
|
-
this.props.onUploadSuccess(Config.env.baseUploadsUrl +
|
|
161
|
-
console.log('upload success', Config.env.baseUploadsUrl +
|
|
165
|
+
this.props.onUploadSuccess(Config.env.baseUploadsUrl + uploadUri, uploadUri);
|
|
166
|
+
console.log('upload success', Config.env.baseUploadsUrl + uploadUri);
|
|
162
167
|
} catch (e) {
|
|
163
168
|
console.log('handleMultiImagePicked error', e);
|
|
164
169
|
this.props.onUploadFailed(uploadUri);
|
|
@@ -170,14 +175,16 @@ class ImageUploader extends Component {
|
|
|
170
175
|
try {
|
|
171
176
|
const fileType = uri.substring(uri.lastIndexOf('.') + 1);
|
|
172
177
|
const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_VIDEO_NAME)}.${fileType}`;
|
|
173
|
-
|
|
178
|
+
const blob = await fileActions.imageToBlob(uri);
|
|
179
|
+
const presignedUriRes = await fileActions.getPresignedUrl(fileName, blob.type);
|
|
180
|
+
uploadUri = presignedUriRes.key;
|
|
174
181
|
this.props.onUploadStarted(uploadUri, uri);
|
|
175
182
|
this.hideUploadMenu();
|
|
176
|
-
const
|
|
183
|
+
const uploadResult = await fileActions.uploadUserMediaWithProgress(blob, presignedUriRes.url, progress => {
|
|
177
184
|
if (this.props.onUploadProgress) this.props.onUploadProgress(progress);
|
|
178
185
|
});
|
|
179
|
-
this.props.onUploadSuccess(Config.env.baseUploadsUrl +
|
|
180
|
-
console.log('upload success', Config.env.baseUploadsUrl +
|
|
186
|
+
this.props.onUploadSuccess(Config.env.baseUploadsUrl + uploadUri, uploadUri);
|
|
187
|
+
console.log('upload success', Config.env.baseUploadsUrl + uploadUri);
|
|
181
188
|
} catch (e) {
|
|
182
189
|
console.log('handleVideoPicked error', e);
|
|
183
190
|
this.props.onUploadFailed(uploadUri);
|
|
@@ -195,6 +202,7 @@ class ImageUploader extends Component {
|
|
|
195
202
|
return true;
|
|
196
203
|
});
|
|
197
204
|
_defineProperty(this, "isEditingEnabled", () => {
|
|
205
|
+
return false;
|
|
198
206
|
return !this.props.multiple && !this.props.allowVideo && getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_EDITING);
|
|
199
207
|
});
|
|
200
208
|
_defineProperty(this, "openCamera", async () => {
|
|
@@ -224,11 +232,16 @@ class ImageUploader extends Component {
|
|
|
224
232
|
});
|
|
225
233
|
_defineProperty(this, "openLibrary", async () => {
|
|
226
234
|
this.setState({
|
|
227
|
-
showUploadMenu: false
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
235
|
+
showUploadMenu: false
|
|
236
|
+
}, () => {
|
|
237
|
+
setTimeout(() => {
|
|
238
|
+
this.setState({
|
|
239
|
+
showPhotos: true,
|
|
240
|
+
selected: [],
|
|
241
|
+
showRemote: true,
|
|
242
|
+
selectedAlbumId: ''
|
|
243
|
+
});
|
|
244
|
+
}, 1000);
|
|
232
245
|
});
|
|
233
246
|
});
|
|
234
247
|
_defineProperty(this, "openPhotos", async () => {
|
|
@@ -252,11 +265,16 @@ class ImageUploader extends Component {
|
|
|
252
265
|
// iOS behaviour
|
|
253
266
|
if (!(await this.askPermissionsAsync())) return;
|
|
254
267
|
this.setState({
|
|
255
|
-
showUploadMenu: false
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
268
|
+
showUploadMenu: false
|
|
269
|
+
}, () => {
|
|
270
|
+
setTimeout(() => {
|
|
271
|
+
this.setState({
|
|
272
|
+
showPhotos: true,
|
|
273
|
+
selected: [],
|
|
274
|
+
showRemote: false,
|
|
275
|
+
selectedAlbumId: ''
|
|
276
|
+
});
|
|
277
|
+
}, 1000);
|
|
260
278
|
});
|
|
261
279
|
});
|
|
262
280
|
_defineProperty(this, "hidePhotos", () => {
|
|
@@ -265,9 +283,15 @@ class ImageUploader extends Component {
|
|
|
265
283
|
});
|
|
266
284
|
});
|
|
267
285
|
_defineProperty(this, "openCropper", () => {
|
|
286
|
+
// Switching modals - requires a timeout to ensure the modal is closed before opening the next one
|
|
268
287
|
this.setState({
|
|
269
|
-
showPhotos: false
|
|
270
|
-
|
|
288
|
+
showPhotos: false
|
|
289
|
+
}, () => {
|
|
290
|
+
setTimeout(() => {
|
|
291
|
+
this.setState({
|
|
292
|
+
showCropper: true
|
|
293
|
+
});
|
|
294
|
+
}, 1000);
|
|
271
295
|
});
|
|
272
296
|
});
|
|
273
297
|
_defineProperty(this, "toggleCropper", () => {
|
|
@@ -313,6 +337,7 @@ class ImageUploader extends Component {
|
|
|
313
337
|
} else {
|
|
314
338
|
if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {
|
|
315
339
|
const uri = mediaSelected[0].localUri || mediaSelected[0].uri;
|
|
340
|
+
console.log('picked a video');
|
|
316
341
|
this.handleVideoPicked(uri);
|
|
317
342
|
} else {
|
|
318
343
|
this.handleMultiImagePicked(mediaSelected);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","View","ScrollView","TouchableOpacity","Text","Platform","Linking","Modal","Dimensions","StyleSheet","ImageBackground","connect","Icon","_","Camera","MediaLibrary","ImageManipulator","ImagePicker","ImageBrowser","ExpoImageManipulator","Header","Popup","PopupMenu","InlineButton","getValueOrDefault","getThumb300","isVideo","getMainBrandingColourFromState","BOXGREY","INACTIVE_BUTTON","TEXT_BLUEGREY","TEXT_DARK","LINEGREY","Config","fileActions","stockImagesLoaded","imageLibraryLoaded","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","DEFAULT_ASPECT","DEFAULT_ALLOWS_EDITING","DEFAULT_ALLOWS_IOS_CAMERA_EDITING","DEFAULT_EXIF","DEFULAT_IMAGE_TYPE","DEFAULT_IMAGE_NAME","DEFAULT_VIDEO_NAME","DEFAULT_SIZE","DEFAULT_COMPRESSION","ImageUploader","constructor","props","_defineProperty","hasPermission","getPermissionsAsync","granted","setState","loadingLocalFolders","localAlbums","getAlbumsAsync","includeSmartAlbums","title","id","error","console","log","loadingRemoteFolders","stockImages","getStockPhotos","libraryRes","getMediaFolders","user","site","data","mediaUri","uploadUri","uri","resizeImageAsync","res","uploadUserMediaWithProgress","progress","onUploadProgress","onUploadSuccess","env","baseUploadsUrl","key","e","onUploadFailed","actions","resize","size","saveOptions","format","compress","quality","base64","manipulateAsync","imageUri","fileName","getUploadUrl","userId","onUploadStarted","hideUploadMenu","resized","onlySelectImage","onImageSelected","imagesSelected","imagesUploaded","map","image","i","length","fileType","substring","lastIndexOf","_this$state$localAlbu","cameraPermission","requestCameraPermissionsAsync","rollPermission","requestPermissionsAsync","status","OS","showWarningPopup","state","loadLocalAlbums","multiple","allowVideo","allowsEditing","askPermissionsAsync","editingAllowed","isEditingEnabled","allowsEditingIOSCamera","result","launchCameraAsync","aspect","exif","canceled","isEmpty","assets","handleImagePicked","mediaTypes","MediaTypeOptions","Videos","showUploadMenu","showPhotos","selected","showRemote","selectedAlbumId","launchImageLibraryAsync","All","Images","cancelled","type","handleVideoPicked","handleMultiImagePicked","showCropper","showSelectAlbum","videoSelected","onAttach","selectedType","callback","openCropper","mediaSelected","onLibrarySelected","media","mediaType","MediaType","video","localUri","hidePhotos","deleteIndex","indexOf","splice","options","text","onPress","openCamera","push","openVideoCamera","openPhotos","hideLibrary","openLibrary","selectedItemNumber","createElement","style","styles","selectedItemContainer","selectedMarkerContainer","backgroundColor","colourBrandingMain","selectedItemText","name","iconStyle","selectedItemIcon","warning","componentDidMount","loadRemoteAlbums","camera","roll","innerWarning","closeWarningPopup","goToPermissionSettings","openURL","renderSelectionPreview","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","selectionPreviewContainer","previewItemContainer","previewItemImage","source","previewItemRemoveButton","onRemoveImage","previewItemRemoveContainer","previewItemRemoveIcon","renderSelectedAlbum","selectedAlbum","imageLibrary","find","album","selectedAlbumText","onSelectAlbum","selectAlbumButton","selectAlbumButtonText","selectAlbumButtonIcon","renderBrowser","imagesLimit","max","loadCount","onChange","onSelectionChange","renderSelectedComponent","onSelected","browserContainer","itemStyle","itemContainer","itemWidth","itemHeight","remoteAlbums","renderAttachButton","canAttach","attachText","buttonContainer","color","fillTouchable","large","disabled","renderSelectAlbumPopup","visible","transparent","animationType","onRequestClose","onSelectAlbumClosed","selectAlbumModal","selectAlbumContainer","selectAlbumTitleContainer","selectAlbumTitle","index","onAlbumSelected","albumOptionContainer","borderTopWidth","albumOptionText","marginHorizontal","renderPhotos","leftIcon","onPressLeft","popupTitle","contentContainer","render","action","bind","bold","buildOptions","onClose","cancelText","photo","onToggleModal","toggleCropper","isVisible","onPictureChoosed","create","flex","padding","position","top","right","borderRadius","alignItems","justifyContent","fontFamily","fontSize","marginBottom","paddingHorizontal","paddingTop","flexDirection","marginRight","bottom","left","zIndex","borderTopLeftRadius","borderTopRightRadius","maxHeight","borderColor","borderBottomWidth","textAlign","paddingVertical","paddingRight","paddingLeft","overflow","borderWidth","mapStateToProps","filter","folder","Public","Name","RowId","images","forwardRef"],"sources":["ImageUploader.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, ScrollView, TouchableOpacity, Text, Platform, Linking, Modal, Dimensions, StyleSheet, ImageBackground } from 'react-native';\nimport { connect } from 'react-redux';\nimport { Icon } from '@rneui/themed';\nimport _ from 'lodash';\nimport { Camera } from 'expo-camera';\nimport * as MediaLibrary from 'expo-media-library';\nimport * as ImageManipulator from 'expo-image-manipulator';\nimport * as ImagePicker from 'expo-image-picker';\nimport ImageBrowser from './expo-image-picker-multiple/ImageBrowser';\nimport ExpoImageManipulator from './react-native-expo-image-cropper/ExpoImageManipulator';\nimport Header from './Header';\nimport { Popup } from './Popup';\nimport { PopupMenu } from './PopupMenu';\nimport { InlineButton } from './InlineButton';\nimport { getValueOrDefault, getThumb300, isVideo } from '../helper';\nimport { getMainBrandingColourFromState, BOXGREY, INACTIVE_BUTTON, TEXT_BLUEGREY, TEXT_DARK, LINEGREY } from '../colours';\nimport Config from '../config';\nimport { fileActions } from '../apis';\nimport { stockImagesLoaded, imageLibraryLoaded } from '../actions';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst DEFAULT_ASPECT = [1, 1];\nconst DEFAULT_ALLOWS_EDITING = true;\nconst DEFAULT_ALLOWS_IOS_CAMERA_EDITING = false;\nconst DEFAULT_EXIF = true;\nconst DEFULAT_IMAGE_TYPE = 'jpeg';\nconst DEFAULT_IMAGE_NAME = 'image';\nconst DEFAULT_VIDEO_NAME = 'video';\nconst DEFAULT_SIZE = {\n width: 1400,\n};\nconst DEFAULT_COMPRESSION = 0.8;\n\nclass ImageUploader extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n showUploadMenu: false,\n warning: null,\n showPhotos: false,\n showRemote: false,\n selected: [],\n selectedType: '',\n onAttach: null,\n selectedAlbumId: '',\n showSelectAlbum: false,\n showCropper: false,\n localAlbums: [],\n loadingLocalFolders: false,\n loadingRemoteFolders: false,\n };\n }\n\n componentDidMount() {\n this.loadLocalAlbums();\n this.loadRemoteAlbums();\n }\n\n loadLocalAlbums = async () => {\n const hasPermission = await MediaLibrary.getPermissionsAsync();\n if (!hasPermission.granted) return;\n\n this.setState({ loadingLocalFolders: true }, async () => {\n try {\n const localAlbums = await MediaLibrary.getAlbumsAsync({ includeSmartAlbums: true });\n this.setState({\n loadingLocalFolders: false,\n localAlbums: [\n {\n title: 'All Photos',\n id: '',\n },\n ...localAlbums,\n ],\n });\n } catch (error) {\n console.log('loadLocalAlbums - error', error);\n this.setState({ loadingLocalFolders: false });\n }\n });\n };\n\n loadRemoteAlbums = () => {\n this.setState({ loadingRemoteFolders: true }, async () => {\n try {\n const stockImages = await fileActions.getStockPhotos();\n this.props.stockImagesLoaded(stockImages);\n const libraryRes = await fileActions.getMediaFolders(this.props.user.site);\n this.props.imageLibraryLoaded(libraryRes.data);\n } catch (error) {\n console.log('loadRemoteAlbums - error', error);\n } finally {\n this.setState({ loadingRemoteFolders: false });\n }\n });\n };\n\n showUploadMenu() {\n this.setState({\n showUploadMenu: true,\n });\n }\n\n hideUploadMenu() {\n this.setState({\n showUploadMenu: false,\n });\n }\n\n retryUpload = async (mediaUri, uploadUri) => {\n try {\n const uri = isVideo(uploadUri) ? mediaUri : (await this.resizeImageAsync(mediaUri)).uri;\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload(retry) success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('retryUpload error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n resizeImageAsync = async uri => {\n const actions = [\n {\n resize: getValueOrDefault(this.props.size, DEFAULT_SIZE),\n },\n ];\n const saveOptions = {\n format: DEFULAT_IMAGE_TYPE,\n compress: getValueOrDefault(this.props.quality, DEFAULT_COMPRESSION),\n base64: true,\n };\n return await ImageManipulator.manipulateAsync(uri, actions, saveOptions);\n };\n\n handleImagePicked = async imageUri => {\n let uploadUri;\n try {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, imageUri);\n this.hideUploadMenu();\n\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n handleMultiImagePicked = async imagesSelected => {\n // Signal start of all images selected\n const imagesUploaded = imagesSelected.map(image => {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n const uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n if (!this.props.onlySelectImage) this.props.onUploadStarted(uploadUri, image.uri);\n return { imageUri: image.uri, uploadUri, fileName };\n });\n this.hideUploadMenu();\n\n // Sequentially upload all imagesUploaded\n for (let i = 0; i < imagesUploaded.length; i++) {\n const image = imagesUploaded[i];\n const { imageUri, uploadUri, fileName } = image;\n try {\n const resized = await this.resizeImageAsync(imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const res = await fileActions.uploadUserMediaWithProgress(resized.uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleMultiImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n }\n };\n\n handleVideoPicked = async uri => {\n let uploadUri;\n try {\n const fileType = uri.substring(uri.lastIndexOf('.') + 1);\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_VIDEO_NAME)}.${fileType}`;\n uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n\n this.props.onUploadStarted(uploadUri, uri);\n this.hideUploadMenu();\n\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('handleVideoPicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n showWarningPopup(camera, roll) {\n if (Platform.OS !== 'ios') {\n return;\n }\n let innerWarning = '';\n if (camera && roll) {\n innerWarning = 'both your camera and photo library';\n } else if (camera) {\n innerWarning = 'your camera';\n } else if (roll) {\n innerWarning = 'your photo library';\n } else {\n // nothing to warn about\n return;\n }\n this.setState({\n warning: `You must grant access to ${innerWarning}. Tap Go to settings to change your permission settings.`,\n });\n }\n\n closeWarningPopup() {\n this.setState({\n warning: null,\n });\n }\n\n goToPermissionSettings() {\n Linking.openURL('app-settings:');\n this.setState({\n warning: null,\n });\n }\n\n askPermissionsAsync = async () => {\n const cameraPermission = await Camera.requestCameraPermissionsAsync();\n const rollPermission = await MediaLibrary.requestPermissionsAsync();\n if (cameraPermission.status !== 'granted' || (Platform.OS === 'ios' && rollPermission.status !== 'granted')) {\n this.showWarningPopup(cameraPermission.status !== 'granted', rollPermission.status !== 'granted');\n return false;\n }\n if (this.state.localAlbums?.length <= 0) this.loadLocalAlbums();\n\n return true;\n };\n\n isEditingEnabled = () => {\n return !this.props.multiple && !this.props.allowVideo && getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_EDITING);\n };\n\n openCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n let editingAllowed = this.isEditingEnabled();\n if (Platform.OS === 'ios') {\n editingAllowed = getValueOrDefault(\n this.props.allowsEditingIOSCamera,\n getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_IOS_CAMERA_EDITING),\n );\n }\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: editingAllowed,\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: getValueOrDefault(this.props.exif, DEFAULT_EXIF),\n });\n\n if (!result.canceled && !_.isEmpty(result.assets)) {\n this.handleImagePicked(result.assets[0].uri);\n }\n };\n\n openVideoCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: this.isEditingEnabled(),\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n });\n\n if (!result.canceled && !_.isEmpty(result.assets)) {\n this.handleImagePicked(result.assets[0].uri);\n }\n };\n\n openLibrary = async () => {\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: true,\n selectedAlbumId: '',\n });\n };\n\n openPhotos = async () => {\n if (Platform.OS === 'android') {\n const result = await ImagePicker.launchImageLibraryAsync({\n allowsEditing: this.isEditingEnabled(),\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: getValueOrDefault(this.props.exif, DEFAULT_EXIF),\n mediaTypes: this.props.allowVideo ? ImagePicker.MediaTypeOptions.All : ImagePicker.MediaTypeOptions.Images,\n });\n if (!result.cancelled) {\n if (result.assets.length === 1 && result.assets[0].type === 'video') {\n this.handleVideoPicked(result.assets[0].uri);\n } else {\n this.handleMultiImagePicked(result.assets);\n }\n }\n return;\n }\n\n // iOS behaviour\n if (!(await this.askPermissionsAsync())) return;\n\n this.setState({\n showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: false,\n selectedAlbumId: '',\n });\n };\n\n hidePhotos = () => {\n this.setState({ showPhotos: false });\n };\n\n openCropper = () => {\n this.setState({ showPhotos: false, showCropper: true });\n };\n\n toggleCropper = () => {\n this.setState({ showCropper: !this.state.showCropper });\n };\n\n onSelectAlbum = () => {\n this.setState({ showSelectAlbum: true });\n };\n\n onSelectAlbumClosed = () => {\n this.setState({ showSelectAlbum: false });\n };\n\n onAlbumSelected = selectedAlbumId => {\n this.setState({ showSelectAlbum: false, selectedAlbumId });\n };\n\n onSelectionChange = (selected, videoSelected, onAttach) => {\n this.setState({\n selected,\n selectedType: videoSelected ? 'video' : 'image',\n onAttach,\n });\n };\n\n onSelected = async callback => {\n if (this.isEditingEnabled()) {\n this.openCropper();\n } else {\n const mediaSelected = await callback;\n // console.log('mediaSelected', mediaSelected);\n if (this.state.showRemote) {\n if (this.props.onLibrarySelected) {\n mediaSelected.map(media => {\n this.props.onLibrarySelected(media.uri);\n });\n }\n } else {\n if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {\n const uri = mediaSelected[0].localUri || mediaSelected[0].uri;\n this.handleVideoPicked(uri);\n } else {\n this.handleMultiImagePicked(mediaSelected);\n }\n }\n\n this.hidePhotos();\n }\n };\n\n onRemoveImage = uri => {\n const selected = [...this.state.selected];\n const deleteIndex = selected.indexOf(uri);\n selected.splice(deleteIndex, 1);\n this.setState({ selected });\n };\n\n buildOptions = () => {\n const options = [\n {\n text: 'Take photo',\n onPress: this.openCamera,\n },\n ];\n if (this.props.allowVideo)\n options.push({\n text: 'Record video',\n onPress: this.openVideoCamera,\n });\n options.push({\n text: 'Camera Roll',\n onPress: this.openPhotos,\n });\n if (!this.props.hideLibrary)\n options.push({\n text: 'Image Library',\n onPress: this.openLibrary,\n });\n\n return options;\n };\n\n renderSelectionPreview() {\n const { selected, showRemote } = this.state;\n\n return (\n <View>\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.selectionPreviewContainer}>\n {selected &&\n selected.map(uri => {\n const imageUri = showRemote ? getThumb300(uri) : uri;\n return (\n <View key={uri} style={styles.previewItemContainer}>\n <ImageBackground style={styles.previewItemImage} source={{ uri: imageUri }} />\n <TouchableOpacity style={styles.previewItemRemoveButton} onPress={() => this.onRemoveImage(uri)}>\n <View style={[styles.previewItemRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.previewItemRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n );\n })}\n </ScrollView>\n </View>\n );\n }\n\n renderSelectedAlbum() {\n const { localAlbums, selectedAlbumId, showRemote } = this.state;\n const selectedAlbum = (showRemote ? this.props.imageLibrary : localAlbums).find(album => album.id === selectedAlbumId);\n const selectedAlbumText = selectedAlbum ? selectedAlbum.title : '';\n\n return (\n <TouchableOpacity onPress={this.onSelectAlbum}>\n <View style={styles.selectAlbumButton}>\n <Text style={styles.selectAlbumButtonText}>{selectedAlbumText}</Text>\n <Icon name=\"angle-down\" type=\"font-awesome\" iconStyle={styles.selectAlbumButtonIcon} />\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSelectedComponent = selectedItemNumber => {\n return (\n <View style={styles.selectedItemContainer}>\n <View style={[styles.selectedMarkerContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n {this.props.multiple ? (\n <Text style={styles.selectedItemText}>{selectedItemNumber}</Text>\n ) : (\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={styles.selectedItemIcon} />\n )}\n </View>\n </View>\n );\n };\n\n renderBrowser() {\n const { selected, selectedAlbumId, showRemote } = this.state;\n const { imagesLimit, multiple, allowVideo, imageLibrary } = this.props;\n const width = (SCREEN_WIDTH - 10 * 2) / 4;\n\n return (\n <ImageBrowser\n max={!multiple ? 1 : imagesLimit}\n loadCount={30}\n onChange={this.onSelectionChange}\n renderSelectedComponent={this.renderSelectedComponent}\n callback={this.onSelected}\n selected={selected}\n allowVideo={allowVideo}\n style={styles.browserContainer}\n itemStyle={styles.itemContainer}\n itemWidth={width}\n itemHeight={width}\n album={selectedAlbumId}\n remoteAlbums={showRemote ? imageLibrary : null}\n />\n );\n }\n\n renderAttachButton() {\n const { selected, selectedType } = this.state;\n const canAttach = selected.length > 0 && !_.isEmpty(selectedType);\n const attachText = `Attach ${canAttach ? selected.length : ''} ${canAttach ? selectedType : ''}${selected.length > 1 ? 's' : ''}`;\n\n return (\n <View style={styles.buttonContainer}>\n <InlineButton\n color={canAttach ? this.props.colourBrandingMain : INACTIVE_BUTTON}\n onPress={this.state.onAttach}\n fillTouchable\n large\n disabled={!canAttach}\n >\n {attachText}\n </InlineButton>\n </View>\n );\n }\n\n renderSelectAlbumPopup() {\n const { showSelectAlbum, localAlbums, showRemote } = this.state;\n if (!showSelectAlbum) return null;\n\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.onSelectAlbumClosed}>\n <View style={styles.selectAlbumModal}>\n <View style={styles.selectAlbumContainer}>\n <View style={styles.selectAlbumTitleContainer}>\n <Text style={styles.selectAlbumTitle}>Select Album</Text>\n </View>\n <ScrollView>\n {(showRemote ? this.props.imageLibrary : localAlbums).map((album, index) => {\n return (\n <TouchableOpacity key={album.id} onPress={() => this.onAlbumSelected(album.id)}>\n <View style={[styles.albumOptionContainer, index === 0 && { borderTopWidth: 0 }]}>\n <Text style={styles.albumOptionText}>{album.title}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n <TouchableOpacity onPress={this.onSelectAlbumClosed}>\n <View style={[styles.albumOptionContainer, { marginHorizontal: 0 }]}>\n <Text style={[styles.albumOptionText, { color: this.props.colourBrandingMain }]}>Cancel</Text>\n </View>\n </TouchableOpacity>\n </View>\n </View>\n </Modal>\n );\n }\n\n renderPhotos() {\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.hidePhotos}>\n <Header leftIcon=\"angle-left\" onPressLeft={this.hidePhotos} text={this.props.popupTitle || 'Attach image'} />\n <View style={styles.contentContainer}>\n {this.renderSelectionPreview()}\n {this.renderSelectedAlbum()}\n {this.renderBrowser()}\n </View>\n {this.renderAttachButton()}\n {this.renderSelectAlbumPopup()}\n </Modal>\n );\n }\n\n render() {\n const { warning, showUploadMenu, showPhotos, showCropper, selected } = this.state;\n\n if (warning != null) {\n return (\n <Popup\n title=\"Permissions missing\"\n text={warning}\n options={[\n {\n text: 'Go to settings',\n action: this.goToPermissionSettings.bind(this),\n bold: true,\n },\n {\n text: 'Ignore',\n action: this.closeWarningPopup.bind(this),\n },\n ]}\n />\n );\n }\n\n if (showUploadMenu) {\n const options = this.buildOptions();\n return <PopupMenu onClose={this.hideUploadMenu.bind(this)} options={options} title={this.props.popupTitle} cancelText=\"Cancel\" />;\n }\n\n if (showPhotos) return this.renderPhotos();\n\n if (showCropper) {\n return (\n <ExpoImageManipulator\n photo={{ uri: selected[0] }}\n onToggleModal={this.toggleCropper}\n isVisible={showCropper}\n onPictureChoosed={data => {\n this.handleImagePicked(data.uri);\n }}\n />\n );\n }\n\n return null;\n }\n}\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flex: 1,\n backgroundColor: BOXGREY,\n },\n browserContainer: {\n padding: 10,\n },\n itemContainer: {\n padding: 4,\n },\n selectedItemContainer: {\n flex: 1,\n backgroundColor: '#0008',\n },\n selectedMarkerContainer: {\n position: 'absolute',\n top: 6,\n right: 6,\n width: 20,\n height: 20,\n borderRadius: 10,\n alignItems: 'center',\n justifyContent: 'center',\n },\n selectedItemText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n selectedItemIcon: {\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n buttonContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n height: 60,\n paddingHorizontal: 14,\n backgroundColor: '#fff',\n },\n selectAlbumButton: {\n paddingTop: 13,\n paddingHorizontal: 14,\n flexDirection: 'row',\n alignItems: 'center',\n },\n selectAlbumButtonText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_BLUEGREY,\n marginRight: 6,\n },\n selectAlbumButtonIcon: {\n fontSize: 20,\n color: TEXT_BLUEGREY,\n },\n selectAlbumModal: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n },\n selectAlbumContainer: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: '#fff',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n maxHeight: SCREEN_HEIGHT / 2,\n },\n selectAlbumTitleContainer: {\n padding: 16,\n borderColor: LINEGREY,\n borderBottomWidth: 1,\n },\n selectAlbumTitle: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n albumOptionContainer: {\n marginHorizontal: 16,\n paddingVertical: 16,\n borderColor: LINEGREY,\n borderTopWidth: 1,\n },\n albumOptionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n selectionPreviewContainer: {\n paddingTop: 14,\n paddingRight: 2,\n paddingLeft: 14,\n },\n previewItemContainer: {\n marginRight: 12,\n },\n previewItemImage: {\n width: 50,\n height: 50,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n overflow: 'hidden',\n },\n previewItemRemoveButton: {\n position: 'absolute',\n top: -8,\n right: -8,\n },\n previewItemRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n previewItemRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 1,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, media } = state;\n const imageLibrary = media.imageLibrary\n .filter(folder => !folder.Public)\n .map(album => {\n return {\n title: album.Name,\n id: album.RowId || '',\n images: album.RowId ? album.Images : media.stockImages,\n };\n });\n\n return {\n user,\n imageLibrary,\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, { stockImagesLoaded, imageLibraryLoaded }, null, { forwardRef: true })(ImageUploader);\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","View","ScrollView","TouchableOpacity","Text","Platform","Linking","Modal","Dimensions","StyleSheet","ImageBackground","connect","Icon","_","Camera","MediaLibrary","ImageManipulator","ImagePicker","ImageBrowser","ExpoImageManipulator","Header","Popup","PopupMenu","InlineButton","getValueOrDefault","getThumb300","isVideo","getMainBrandingColourFromState","BOXGREY","INACTIVE_BUTTON","TEXT_BLUEGREY","TEXT_DARK","LINEGREY","Config","fileActions","stockImagesLoaded","imageLibraryLoaded","SCREEN_WIDTH","get","width","SCREEN_HEIGHT","height","DEFAULT_ASPECT","DEFAULT_ALLOWS_EDITING","DEFAULT_ALLOWS_IOS_CAMERA_EDITING","DEFAULT_EXIF","DEFULAT_IMAGE_TYPE","DEFAULT_IMAGE_NAME","DEFAULT_VIDEO_NAME","DEFAULT_SIZE","DEFAULT_COMPRESSION","ImageUploader","constructor","props","_defineProperty","hasPermission","getPermissionsAsync","granted","setState","loadingLocalFolders","localAlbums","getAlbumsAsync","includeSmartAlbums","title","id","error","console","log","loadingRemoteFolders","stockImages","getStockPhotos","libraryRes","getMediaFolders","user","site","data","mediaUri","uploadUri","uri","resizeImageAsync","res","uploadUserMediaWithProgress","progress","onUploadProgress","onUploadSuccess","env","baseUploadsUrl","key","e","onUploadFailed","actions","resize","size","saveOptions","format","compress","quality","base64","manipulateAsync","imageUri","fileName","hideUploadMenu","resized","blob","imageToBlob","presignedUriRes","getPresignedUrl","last","split","type","onUploadStarted","onlySelectImage","onImageSelected","uploadResult","url","imagesSelected","imagesUploaded","map","image","getUploadUrl","userId","i","length","fileType","substring","lastIndexOf","_this$state$localAlbu","cameraPermission","requestCameraPermissionsAsync","rollPermission","requestPermissionsAsync","status","OS","showWarningPopup","state","loadLocalAlbums","multiple","allowVideo","allowsEditing","askPermissionsAsync","editingAllowed","isEditingEnabled","allowsEditingIOSCamera","result","launchCameraAsync","aspect","exif","canceled","isEmpty","assets","handleImagePicked","mediaTypes","MediaTypeOptions","Videos","showUploadMenu","setTimeout","showPhotos","selected","showRemote","selectedAlbumId","launchImageLibraryAsync","All","Images","cancelled","handleVideoPicked","handleMultiImagePicked","showCropper","showSelectAlbum","videoSelected","onAttach","selectedType","callback","openCropper","mediaSelected","onLibrarySelected","media","mediaType","MediaType","video","localUri","hidePhotos","deleteIndex","indexOf","splice","options","text","onPress","openCamera","push","openVideoCamera","openPhotos","hideLibrary","openLibrary","selectedItemNumber","createElement","style","styles","selectedItemContainer","selectedMarkerContainer","backgroundColor","colourBrandingMain","selectedItemText","name","iconStyle","selectedItemIcon","warning","componentDidMount","loadRemoteAlbums","camera","roll","innerWarning","closeWarningPopup","goToPermissionSettings","openURL","renderSelectionPreview","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","selectionPreviewContainer","previewItemContainer","previewItemImage","source","previewItemRemoveButton","onRemoveImage","previewItemRemoveContainer","previewItemRemoveIcon","renderSelectedAlbum","selectedAlbum","imageLibrary","find","album","selectedAlbumText","onSelectAlbum","selectAlbumButton","selectAlbumButtonText","selectAlbumButtonIcon","renderBrowser","imagesLimit","max","loadCount","onChange","onSelectionChange","renderSelectedComponent","onSelected","browserContainer","itemStyle","itemContainer","itemWidth","itemHeight","remoteAlbums","renderAttachButton","canAttach","attachText","buttonContainer","color","fillTouchable","large","disabled","renderSelectAlbumPopup","visible","transparent","animationType","onRequestClose","onSelectAlbumClosed","selectAlbumModal","selectAlbumContainer","selectAlbumTitleContainer","selectAlbumTitle","index","onAlbumSelected","albumOptionContainer","borderTopWidth","albumOptionText","marginHorizontal","renderPhotos","leftIcon","onPressLeft","popupTitle","contentContainer","render","action","bind","bold","buildOptions","onClose","cancelText","photo","onToggleModal","toggleCropper","isVisible","onPictureChoosed","create","flex","padding","position","top","right","borderRadius","alignItems","justifyContent","fontFamily","fontSize","marginBottom","paddingHorizontal","paddingTop","flexDirection","marginRight","bottom","left","zIndex","borderTopLeftRadius","borderTopRightRadius","maxHeight","borderColor","borderBottomWidth","textAlign","paddingVertical","paddingRight","paddingLeft","overflow","borderWidth","mapStateToProps","filter","folder","Public","Name","RowId","images","forwardRef"],"sources":["ImageUploader.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, ScrollView, TouchableOpacity, Text, Platform, Linking, Modal, Dimensions, StyleSheet, ImageBackground } from 'react-native';\nimport { connect } from 'react-redux';\nimport { Icon } from '@rneui/themed';\nimport _ from 'lodash';\nimport { Camera } from 'expo-camera';\nimport * as MediaLibrary from 'expo-media-library';\nimport * as ImageManipulator from 'expo-image-manipulator';\nimport * as ImagePicker from 'expo-image-picker';\nimport ImageBrowser from './expo-image-picker-multiple/ImageBrowser';\nimport ExpoImageManipulator from './react-native-expo-image-cropper/ExpoImageManipulator';\nimport Header from './Header';\nimport { Popup } from './Popup';\nimport { PopupMenu } from './PopupMenu';\nimport { InlineButton } from './InlineButton';\nimport { getValueOrDefault, getThumb300, isVideo } from '../helper';\nimport { getMainBrandingColourFromState, BOXGREY, INACTIVE_BUTTON, TEXT_BLUEGREY, TEXT_DARK, LINEGREY } from '../colours';\nimport Config from '../config';\nimport { fileActions } from '../apis';\nimport { stockImagesLoaded, imageLibraryLoaded } from '../actions';\n\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst DEFAULT_ASPECT = [1, 1];\nconst DEFAULT_ALLOWS_EDITING = true;\nconst DEFAULT_ALLOWS_IOS_CAMERA_EDITING = false;\nconst DEFAULT_EXIF = true;\nconst DEFULAT_IMAGE_TYPE = 'jpeg';\nconst DEFAULT_IMAGE_NAME = 'image';\nconst DEFAULT_VIDEO_NAME = 'video';\nconst DEFAULT_SIZE = {\n width: 1400,\n};\nconst DEFAULT_COMPRESSION = 0.8;\n\nclass ImageUploader extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n showUploadMenu: false,\n warning: null,\n showPhotos: false,\n showRemote: false,\n selected: [],\n selectedType: '',\n onAttach: null,\n selectedAlbumId: '',\n showSelectAlbum: false,\n showCropper: false,\n localAlbums: [],\n loadingLocalFolders: false,\n loadingRemoteFolders: false,\n };\n }\n\n componentDidMount() {\n this.loadLocalAlbums();\n this.loadRemoteAlbums();\n }\n\n loadLocalAlbums = async () => {\n const hasPermission = await MediaLibrary.getPermissionsAsync();\n if (!hasPermission.granted) return;\n\n this.setState({ loadingLocalFolders: true }, async () => {\n try {\n const localAlbums = await MediaLibrary.getAlbumsAsync({ includeSmartAlbums: true });\n this.setState({\n loadingLocalFolders: false,\n localAlbums: [\n {\n title: 'All Photos',\n id: '',\n },\n ...localAlbums,\n ],\n });\n } catch (error) {\n console.log('loadLocalAlbums - error', error);\n this.setState({ loadingLocalFolders: false });\n }\n });\n };\n\n loadRemoteAlbums = () => {\n this.setState({ loadingRemoteFolders: true }, async () => {\n try {\n const stockImages = await fileActions.getStockPhotos();\n this.props.stockImagesLoaded(stockImages);\n const libraryRes = await fileActions.getMediaFolders(this.props.user.site);\n this.props.imageLibraryLoaded(libraryRes.data);\n } catch (error) {\n console.log('loadRemoteAlbums - error', error);\n } finally {\n this.setState({ loadingRemoteFolders: false });\n }\n });\n };\n\n showUploadMenu() {\n this.setState({\n showUploadMenu: true,\n });\n }\n\n hideUploadMenu() {\n this.setState({\n showUploadMenu: false,\n });\n }\n\n retryUpload = async (mediaUri, uploadUri) => {\n try {\n const uri = isVideo(uploadUri) ? mediaUri : (await this.resizeImageAsync(mediaUri)).uri;\n const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);\n console.log('upload(retry) success', Config.env.baseUploadsUrl + res.key);\n } catch (e) {\n console.log('retryUpload error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n resizeImageAsync = async uri => {\n const actions = [\n {\n resize: getValueOrDefault(this.props.size, DEFAULT_SIZE),\n },\n ];\n const saveOptions = {\n format: DEFULAT_IMAGE_TYPE,\n compress: getValueOrDefault(this.props.quality, DEFAULT_COMPRESSION),\n base64: true,\n };\n return await ImageManipulator.manipulateAsync(uri, actions, saveOptions);\n };\n\n handleImagePicked = async imageUri => {\n let uploadUri;\n try {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n\n this.hideUploadMenu();\n\n const resized = await this.resizeImageAsync(imageUri);\n const blob = await fileActions.imageToBlob(resized.uri);\n const presignedUriRes = await fileActions.getPresignedUrl(_.last(resized.uri.split('/')), blob.type);\n uploadUri = presignedUriRes.key;\n this.props.onUploadStarted(uploadUri, imageUri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n\n const uploadResult = await fileActions.uploadUserMediaWithProgress(blob, presignedUriRes.url, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + uploadUri, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + uploadUri);\n } catch (e) {\n console.log('handleImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n handleMultiImagePicked = async imagesSelected => {\n // Signal start of all images selected\n const imagesUploaded = imagesSelected.map(image => {\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_IMAGE_NAME)}.${DEFULAT_IMAGE_TYPE}`;\n const uploadUri = fileActions.getUploadUrl(this.props.userId, fileName);\n return { imageUri: image.uri, uploadUri, fileName };\n });\n this.hideUploadMenu();\n\n // Sequentially upload all imagesUploaded\n for (let i = 0; i < imagesUploaded.length; i++) {\n const image = imagesUploaded[i];\n const { imageUri, uploadUri, fileName } = image;\n try {\n const resized = await this.resizeImageAsync(imageUri);\n const blob = await fileActions.imageToBlob(resized.uri);\n if (this.props.onlySelectImage) {\n this.props.onImageSelected(resized, fileName);\n return;\n }\n const presignedUriRes = await fileActions.getPresignedUrl(_.last(resized.uri.split('/')), blob.type);\n const uploadUri = presignedUriRes.key;\n if (!this.props.onlySelectImage) this.props.onUploadStarted(uploadUri, imageUri);\n\n const uploadResult = await fileActions.uploadUserMediaWithProgress(blob, presignedUriRes.url, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + uploadUri, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + uploadUri);\n } catch (e) {\n console.log('handleMultiImagePicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n }\n };\n\n handleVideoPicked = async uri => {\n let uploadUri;\n try {\n const fileType = uri.substring(uri.lastIndexOf('.') + 1);\n const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_VIDEO_NAME)}.${fileType}`;\n const blob = await fileActions.imageToBlob(uri);\n const presignedUriRes = await fileActions.getPresignedUrl(fileName, blob.type);\n uploadUri = presignedUriRes.key;\n\n this.props.onUploadStarted(uploadUri, uri);\n this.hideUploadMenu();\n\n const uploadResult = await fileActions.uploadUserMediaWithProgress(blob, presignedUriRes.url, progress => {\n if (this.props.onUploadProgress) this.props.onUploadProgress(progress);\n });\n\n this.props.onUploadSuccess(Config.env.baseUploadsUrl + uploadUri, uploadUri);\n console.log('upload success', Config.env.baseUploadsUrl + uploadUri);\n } catch (e) {\n console.log('handleVideoPicked error', e);\n this.props.onUploadFailed(uploadUri);\n }\n };\n\n showWarningPopup(camera, roll) {\n if (Platform.OS !== 'ios') {\n return;\n }\n let innerWarning = '';\n if (camera && roll) {\n innerWarning = 'both your camera and photo library';\n } else if (camera) {\n innerWarning = 'your camera';\n } else if (roll) {\n innerWarning = 'your photo library';\n } else {\n // nothing to warn about\n return;\n }\n this.setState({\n warning: `You must grant access to ${innerWarning}. Tap Go to settings to change your permission settings.`,\n });\n }\n\n closeWarningPopup() {\n this.setState({\n warning: null,\n });\n }\n\n goToPermissionSettings() {\n Linking.openURL('app-settings:');\n this.setState({\n warning: null,\n });\n }\n\n askPermissionsAsync = async () => {\n const cameraPermission = await Camera.requestCameraPermissionsAsync();\n const rollPermission = await MediaLibrary.requestPermissionsAsync();\n if (cameraPermission.status !== 'granted' || (Platform.OS === 'ios' && rollPermission.status !== 'granted')) {\n this.showWarningPopup(cameraPermission.status !== 'granted', rollPermission.status !== 'granted');\n return false;\n }\n if (this.state.localAlbums?.length <= 0) this.loadLocalAlbums();\n\n return true;\n };\n\n isEditingEnabled = () => {\n return false;\n return !this.props.multiple && !this.props.allowVideo && getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_EDITING);\n };\n\n openCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n let editingAllowed = this.isEditingEnabled();\n if (Platform.OS === 'ios') {\n editingAllowed = getValueOrDefault(\n this.props.allowsEditingIOSCamera,\n getValueOrDefault(this.props.allowsEditing, DEFAULT_ALLOWS_IOS_CAMERA_EDITING),\n );\n }\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: editingAllowed,\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: getValueOrDefault(this.props.exif, DEFAULT_EXIF),\n });\n\n if (!result.canceled && !_.isEmpty(result.assets)) {\n this.handleImagePicked(result.assets[0].uri);\n }\n };\n\n openVideoCamera = async () => {\n if (!(await this.askPermissionsAsync())) return;\n\n const result = await ImagePicker.launchCameraAsync({\n allowsEditing: this.isEditingEnabled(),\n mediaTypes: ImagePicker.MediaTypeOptions.Videos,\n });\n\n if (!result.canceled && !_.isEmpty(result.assets)) {\n this.handleImagePicked(result.assets[0].uri);\n }\n };\n\n openLibrary = async () => {\n this.setState(\n {\n showUploadMenu: false,\n },\n () => {\n setTimeout(() => {\n this.setState({\n showPhotos: true,\n selected: [],\n showRemote: true,\n selectedAlbumId: '',\n });\n }, 1000);\n },\n );\n };\n\n openPhotos = async () => {\n if (Platform.OS === 'android') {\n const result = await ImagePicker.launchImageLibraryAsync({\n allowsEditing: this.isEditingEnabled(),\n aspect: getValueOrDefault(this.props.aspect, DEFAULT_ASPECT),\n exif: getValueOrDefault(this.props.exif, DEFAULT_EXIF),\n mediaTypes: this.props.allowVideo ? ImagePicker.MediaTypeOptions.All : ImagePicker.MediaTypeOptions.Images,\n });\n if (!result.cancelled) {\n if (result.assets.length === 1 && result.assets[0].type === 'video') {\n this.handleVideoPicked(result.assets[0].uri);\n } else {\n this.handleMultiImagePicked(result.assets);\n }\n }\n return;\n }\n\n // iOS behaviour\n if (!(await this.askPermissionsAsync())) return;\n\n this.setState(\n {\n showUploadMenu: false,\n },\n () => {\n setTimeout(() => {\n this.setState({\n showPhotos: true,\n selected: [],\n showRemote: false,\n selectedAlbumId: '',\n });\n }, 1000);\n },\n );\n };\n\n hidePhotos = () => {\n this.setState({ showPhotos: false });\n };\n\n openCropper = () => {\n // Switching modals - requires a timeout to ensure the modal is closed before opening the next one\n this.setState(\n {\n showPhotos: false,\n },\n () => {\n setTimeout(() => {\n this.setState({\n showCropper: true,\n });\n }, 1000);\n },\n );\n };\n\n toggleCropper = () => {\n this.setState({ showCropper: !this.state.showCropper });\n };\n\n onSelectAlbum = () => {\n this.setState({ showSelectAlbum: true });\n };\n\n onSelectAlbumClosed = () => {\n this.setState({ showSelectAlbum: false });\n };\n\n onAlbumSelected = selectedAlbumId => {\n this.setState({ showSelectAlbum: false, selectedAlbumId });\n };\n\n onSelectionChange = (selected, videoSelected, onAttach) => {\n this.setState({\n selected,\n selectedType: videoSelected ? 'video' : 'image',\n onAttach,\n });\n };\n\n onSelected = async callback => {\n if (this.isEditingEnabled()) {\n this.openCropper();\n } else {\n const mediaSelected = await callback;\n // console.log('mediaSelected', mediaSelected);\n if (this.state.showRemote) {\n if (this.props.onLibrarySelected) {\n mediaSelected.map(media => {\n this.props.onLibrarySelected(media.uri);\n });\n }\n } else {\n if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {\n const uri = mediaSelected[0].localUri || mediaSelected[0].uri;\n console.log('picked a video');\n this.handleVideoPicked(uri);\n } else {\n this.handleMultiImagePicked(mediaSelected);\n }\n }\n\n this.hidePhotos();\n }\n };\n\n onRemoveImage = uri => {\n const selected = [...this.state.selected];\n const deleteIndex = selected.indexOf(uri);\n selected.splice(deleteIndex, 1);\n this.setState({ selected });\n };\n\n buildOptions = () => {\n const options = [\n {\n text: 'Take photo',\n onPress: this.openCamera,\n },\n ];\n if (this.props.allowVideo)\n options.push({\n text: 'Record video',\n onPress: this.openVideoCamera,\n });\n options.push({\n text: 'Camera Roll',\n onPress: this.openPhotos,\n });\n if (!this.props.hideLibrary)\n options.push({\n text: 'Image Library',\n onPress: this.openLibrary,\n });\n\n return options;\n };\n\n renderSelectionPreview() {\n const { selected, showRemote } = this.state;\n\n return (\n <View>\n <ScrollView horizontal showsHorizontalScrollIndicator={false} contentContainerStyle={styles.selectionPreviewContainer}>\n {selected &&\n selected.map(uri => {\n const imageUri = showRemote ? getThumb300(uri) : uri;\n return (\n <View key={uri} style={styles.previewItemContainer}>\n <ImageBackground style={styles.previewItemImage} source={{ uri: imageUri }} />\n <TouchableOpacity style={styles.previewItemRemoveButton} onPress={() => this.onRemoveImage(uri)}>\n <View style={[styles.previewItemRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.previewItemRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n );\n })}\n </ScrollView>\n </View>\n );\n }\n\n renderSelectedAlbum() {\n const { localAlbums, selectedAlbumId, showRemote } = this.state;\n const selectedAlbum = (showRemote ? this.props.imageLibrary : localAlbums).find(album => album.id === selectedAlbumId);\n const selectedAlbumText = selectedAlbum ? selectedAlbum.title : '';\n\n return (\n <TouchableOpacity onPress={this.onSelectAlbum}>\n <View style={styles.selectAlbumButton}>\n <Text style={styles.selectAlbumButtonText}>{selectedAlbumText}</Text>\n <Icon name=\"angle-down\" type=\"font-awesome\" iconStyle={styles.selectAlbumButtonIcon} />\n </View>\n </TouchableOpacity>\n );\n }\n\n renderSelectedComponent = selectedItemNumber => {\n return (\n <View style={styles.selectedItemContainer}>\n <View style={[styles.selectedMarkerContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n {this.props.multiple ? (\n <Text style={styles.selectedItemText}>{selectedItemNumber}</Text>\n ) : (\n <Icon name=\"check\" type=\"font-awesome\" iconStyle={styles.selectedItemIcon} />\n )}\n </View>\n </View>\n );\n };\n\n renderBrowser() {\n const { selected, selectedAlbumId, showRemote } = this.state;\n const { imagesLimit, multiple, allowVideo, imageLibrary } = this.props;\n const width = (SCREEN_WIDTH - 10 * 2) / 4;\n\n return (\n <ImageBrowser\n max={!multiple ? 1 : imagesLimit}\n loadCount={30}\n onChange={this.onSelectionChange}\n renderSelectedComponent={this.renderSelectedComponent}\n callback={this.onSelected}\n selected={selected}\n allowVideo={allowVideo}\n style={styles.browserContainer}\n itemStyle={styles.itemContainer}\n itemWidth={width}\n itemHeight={width}\n album={selectedAlbumId}\n remoteAlbums={showRemote ? imageLibrary : null}\n />\n );\n }\n\n renderAttachButton() {\n const { selected, selectedType } = this.state;\n const canAttach = selected.length > 0 && !_.isEmpty(selectedType);\n const attachText = `Attach ${canAttach ? selected.length : ''} ${canAttach ? selectedType : ''}${selected.length > 1 ? 's' : ''}`;\n\n return (\n <View style={styles.buttonContainer}>\n <InlineButton\n color={canAttach ? this.props.colourBrandingMain : INACTIVE_BUTTON}\n onPress={this.state.onAttach}\n fillTouchable\n large\n disabled={!canAttach}\n >\n {attachText}\n </InlineButton>\n </View>\n );\n }\n\n renderSelectAlbumPopup() {\n const { showSelectAlbum, localAlbums, showRemote } = this.state;\n if (!showSelectAlbum) return null;\n\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.onSelectAlbumClosed}>\n <View style={styles.selectAlbumModal}>\n <View style={styles.selectAlbumContainer}>\n <View style={styles.selectAlbumTitleContainer}>\n <Text style={styles.selectAlbumTitle}>Select Album</Text>\n </View>\n <ScrollView>\n {(showRemote ? this.props.imageLibrary : localAlbums).map((album, index) => {\n return (\n <TouchableOpacity key={album.id} onPress={() => this.onAlbumSelected(album.id)}>\n <View style={[styles.albumOptionContainer, index === 0 && { borderTopWidth: 0 }]}>\n <Text style={styles.albumOptionText}>{album.title}</Text>\n </View>\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n <TouchableOpacity onPress={this.onSelectAlbumClosed}>\n <View style={[styles.albumOptionContainer, { marginHorizontal: 0 }]}>\n <Text style={[styles.albumOptionText, { color: this.props.colourBrandingMain }]}>Cancel</Text>\n </View>\n </TouchableOpacity>\n </View>\n </View>\n </Modal>\n );\n }\n\n renderPhotos() {\n return (\n <Modal visible transparent animationType=\"slide\" onRequestClose={this.hidePhotos}>\n <Header leftIcon=\"angle-left\" onPressLeft={this.hidePhotos} text={this.props.popupTitle || 'Attach image'} />\n <View style={styles.contentContainer}>\n {this.renderSelectionPreview()}\n {this.renderSelectedAlbum()}\n {this.renderBrowser()}\n </View>\n {this.renderAttachButton()}\n {this.renderSelectAlbumPopup()}\n </Modal>\n );\n }\n\n render() {\n const { warning, showUploadMenu, showPhotos, showCropper, selected } = this.state;\n\n if (warning != null) {\n return (\n <Popup\n title=\"Permissions missing\"\n text={warning}\n options={[\n {\n text: 'Go to settings',\n action: this.goToPermissionSettings.bind(this),\n bold: true,\n },\n {\n text: 'Ignore',\n action: this.closeWarningPopup.bind(this),\n },\n ]}\n />\n );\n }\n\n if (showUploadMenu) {\n const options = this.buildOptions();\n return <PopupMenu onClose={this.hideUploadMenu.bind(this)} options={options} title={this.props.popupTitle} cancelText=\"Cancel\" />;\n }\n\n if (showPhotos) return this.renderPhotos();\n\n if (showCropper) {\n return (\n <ExpoImageManipulator\n photo={{ uri: selected[0] }}\n onToggleModal={this.toggleCropper}\n isVisible={showCropper}\n onPictureChoosed={data => {\n this.handleImagePicked(data.uri);\n }}\n />\n );\n }\n\n return null;\n }\n}\n\nconst styles = StyleSheet.create({\n contentContainer: {\n flex: 1,\n backgroundColor: BOXGREY,\n },\n browserContainer: {\n padding: 10,\n },\n itemContainer: {\n padding: 4,\n },\n selectedItemContainer: {\n flex: 1,\n backgroundColor: '#0008',\n },\n selectedMarkerContainer: {\n position: 'absolute',\n top: 6,\n right: 6,\n width: 20,\n height: 20,\n borderRadius: 10,\n alignItems: 'center',\n justifyContent: 'center',\n },\n selectedItemText: {\n fontFamily: 'sf-semibold',\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n selectedItemIcon: {\n fontSize: 12,\n color: '#fff',\n marginBottom: 1,\n },\n buttonContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n height: 60,\n paddingHorizontal: 14,\n backgroundColor: '#fff',\n },\n selectAlbumButton: {\n paddingTop: 13,\n paddingHorizontal: 14,\n flexDirection: 'row',\n alignItems: 'center',\n },\n selectAlbumButtonText: {\n fontFamily: 'sf-medium',\n fontSize: 14,\n color: TEXT_BLUEGREY,\n marginRight: 6,\n },\n selectAlbumButtonIcon: {\n fontSize: 20,\n color: TEXT_BLUEGREY,\n },\n selectAlbumModal: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n },\n selectAlbumContainer: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n backgroundColor: '#fff',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n maxHeight: SCREEN_HEIGHT / 2,\n },\n selectAlbumTitleContainer: {\n padding: 16,\n borderColor: LINEGREY,\n borderBottomWidth: 1,\n },\n selectAlbumTitle: {\n fontFamily: 'sf-semibold',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n albumOptionContainer: {\n marginHorizontal: 16,\n paddingVertical: 16,\n borderColor: LINEGREY,\n borderTopWidth: 1,\n },\n albumOptionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n textAlign: 'center',\n color: TEXT_DARK,\n },\n selectionPreviewContainer: {\n paddingTop: 14,\n paddingRight: 2,\n paddingLeft: 14,\n },\n previewItemContainer: {\n marginRight: 12,\n },\n previewItemImage: {\n width: 50,\n height: 50,\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: 4,\n overflow: 'hidden',\n },\n previewItemRemoveButton: {\n position: 'absolute',\n top: -8,\n right: -8,\n },\n previewItemRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n previewItemRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 1,\n },\n});\n\nconst mapStateToProps = state => {\n const { user, media } = state;\n const imageLibrary = media.imageLibrary\n .filter(folder => !folder.Public)\n .map(album => {\n return {\n title: album.Name,\n id: album.RowId || '',\n images: album.RowId ? album.Images : media.stockImages,\n };\n });\n\n return {\n user,\n imageLibrary,\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nexport default connect(mapStateToProps, { stockImagesLoaded, imageLibraryLoaded }, null, { forwardRef: true })(ImageUploader);\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -7,7 +7,7 @@ import { View, StyleSheet, Dimensions } from 'react-native';
|
|
|
7
7
|
import YoutubePlayer, { getYoutubeMeta } from 'react-native-youtube-iframe';
|
|
8
8
|
import { Vimeo } from 'react-native-vimeo-iframe';
|
|
9
9
|
import { WebView } from 'react-native-webview';
|
|
10
|
-
import { Video } from 'expo-av';
|
|
10
|
+
import { Video, ResizeMode } from 'expo-av';
|
|
11
11
|
import { Spinner } from './Spinner';
|
|
12
12
|
const SCREEN_HEIGHT = Dimensions.get('window').height;
|
|
13
13
|
const SCREEN_WIDTH = Dimensions.get('window').width;
|
|
@@ -259,7 +259,7 @@ class MediaPlayer extends Component {
|
|
|
259
259
|
}
|
|
260
260
|
}, EXPO_VIDEO_PROPS, {
|
|
261
261
|
shouldPlay: autoPlay,
|
|
262
|
-
resizeMode:
|
|
262
|
+
resizeMode: ResizeMode.CONTAIN,
|
|
263
263
|
useNativeControls: true,
|
|
264
264
|
style: {
|
|
265
265
|
width,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Component","View","StyleSheet","Dimensions","YoutubePlayer","getYoutubeMeta","Vimeo","WebView","Video","Spinner","SCREEN_HEIGHT","get","height","SCREEN_WIDTH","width","EXPO_VIDEO_PROPS","rate","isMuted","volume","RETRY_RECOVER","RETRY_LOADING","MediaPlayer","constructor","props","_defineProperty","setupForPlaying","checkStreamLoaded","clearInterval","url","replace","split","undefined","ids","result","match","source","useVideoPlayer","isUrlLink","startsWith","isYoutube","includes","isVimeo","heightFactor","metadata","getYoutubeVideoId","setState","playbackLoaded","readyToRender","playbackId","wait","force","retryLoading","console","log","setTimeout","playbackBuffering","state","videoPlayer","loadAsync","uri","getStreamPlaybackUrl","overrideFileExtensionAndroid","deviceRotation","beta","gamma","absGamma","Math","abs","absBeta","isGammaNegative","sign","changeEvent","rotation","deviceOrientation","orientation","isLandscape","orientationQueue","push","length","slice","every","i","orientationChanged","setInterval","checkReloadStream","status","isLoaded","isBuffering","isPlaying","error","playbackPlaying","shouldPlay","e","forceWebview","type","youtubeId","autoPlay","createElement","ref","youtubePlayer","videoId","play","onReady","onYoutubeReady","onError","onYoutubeError","playbackRate","playerParams","cc_lang_pref","showClosedCaptions","vimeoId","style","marginLeft","marginRight","loop","controls","speed","time","embedUrl","startInLoadingState","javaScriptEnabled","scrollEnabled","automaticallyAdjustContentInsets","mediaPlaybackRequiresUserAction","styles","webView","_extends","vp","resizeMode","RESIZE_MODE_CONTAIN","useNativeControls","onLoadStart","onStreamLoadStart","onLoad","onStreamLoaded","onStreamError","onPlaybackStatusUpdate","onStreamStatusUpdate","render","player","showLoading","getYoutubePlayer","getVimeoId","getVimeoPlayer","getStreamPlayer","getWebviewPlayer","container","loadingContainer","color","create","flex","backgroundColor","alignItems","justifyContent","position","top","left","right","bottom"],"sources":["MediaPlayer.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, Dimensions } from 'react-native';\nimport YoutubePlayer, { getYoutubeMeta } from 'react-native-youtube-iframe';\nimport { Vimeo } from 'react-native-vimeo-iframe';\nimport { WebView } from 'react-native-webview';\nimport { Video } from 'expo-av';\nimport { Spinner } from './Spinner';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst EXPO_VIDEO_PROPS = { rate: 1, isMuted: false, volume: 1 };\nconst RETRY_RECOVER = 30000;\nconst RETRY_LOADING = 10000;\n\nclass MediaPlayer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n deviceOrientation: null,\n isLandscape: false,\n isUrlLink: true,\n isYoutube: false,\n isVimeo: false,\n forceWebview: false,\n heightFactor: 0,\n playbackLoaded: false,\n playbackBuffering: false,\n playbackPlaying: false,\n readyToRender: false,\n };\n this.youtubePlayer = null;\n this.videoPlayer = null;\n this.checkStreamLoaded = null;\n this.retryLoading = false;\n this.orientationQueue = [];\n }\n\n componentDidMount = async () => {\n await this.setupForPlaying();\n };\n\n componentWillUnmount = () => {\n if (this.checkStreamLoaded) clearInterval(this.checkStreamLoaded);\n };\n\n getYoutubeVideoId = url => {\n url = url.replace(/(>|<)/gi, '').split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\n if (url[2] !== undefined) {\n const ids = url[2].split(/[^0-9a-z_\\-]/i);\n return ids[0];\n } else {\n return '';\n }\n };\n\n getVimeoId = url => {\n const result = url.match(\n /(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?/i,\n );\n return result[1];\n };\n\n setupForPlaying = async () => {\n // Extract live stream info\n const { source, useVideoPlayer } = this.props;\n const isUrlLink = source && source.startsWith('http');\n const isYoutube = source && (source.includes('youtube.com/watch?v=') || source.includes('youtu.be/'));\n const isVimeo = source && source.includes('vimeo.com/');\n let heightFactor = 0;\n\n if (isYoutube) {\n const metadata = await getYoutubeMeta(this.getYoutubeVideoId(source));\n heightFactor = metadata.height / metadata.width;\n } else if (useVideoPlayer) {\n heightFactor = 0;\n } else {\n heightFactor = 0.565;\n }\n\n this.setState({ isUrlLink, isYoutube, isVimeo, playbackLoaded: isYoutube || isVimeo, heightFactor, readyToRender: true });\n };\n\n getStreamPlaybackUrl = () => {\n // return 'https://stream.mux.com/Ym4nKktRpGuZNBBBlzhxpyRwZLpvMlPRchcu01x6Ur600.m3u8';\n return `https://stream.mux.com/${this.props.playbackId}.m3u8`;\n };\n\n checkReloadStream = (wait = RETRY_LOADING, force = false) => {\n if (!force && this.retryLoading) return;\n\n console.log(`Check loading in ${wait} milliseconds...`);\n this.retryLoading = true;\n setTimeout(async () => {\n const { playbackLoaded, playbackBuffering } = this.state;\n try {\n if (playbackLoaded === false || playbackBuffering === true) {\n console.log('Reloading started');\n await this.videoPlayer.loadAsync(\n { uri: this.getStreamPlaybackUrl(), overrideFileExtensionAndroid: 'm3u8' },\n EXPO_VIDEO_PROPS,\n false,\n );\n } else {\n console.log('Already loaded - not reloading');\n }\n this.retryLoading = false;\n } catch {}\n }, wait);\n };\n\n isLandscape = deviceRotation => {\n const { beta, gamma } = deviceRotation;\n const absGamma = Math.abs(gamma);\n const absBeta = Math.abs(beta);\n const isGammaNegative = Math.sign(gamma) === -1;\n\n if (absGamma <= 0.04 && absBeta <= 0.24) {\n //Portrait mode, on a flat surface.\n return false;\n } else if ((absGamma <= 1.0 || absGamma >= 2.3) && absBeta >= 0.5) {\n //General Portrait mode, accounting for forward and back tilt on the top of the phone.\n return false;\n } else {\n if (isGammaNegative) {\n //Landscape mode with the top of the phone to the left.\n return true;\n } else {\n //Landscape mode with the top of the phone to the right.\n return true;\n }\n }\n };\n\n onMotionChange = async changeEvent => {\n const deviceRotation = changeEvent.rotation;\n const deviceOrientation = changeEvent.orientation;\n const isLandscape = this.isLandscape(deviceRotation);\n this.orientationQueue.push(isLandscape);\n if (this.orientationQueue.length > 2) this.orientationQueue = this.orientationQueue.slice(-2);\n // console.log('onMotionChange - orientationQueue', this.orientationQueue);\n if (\n isLandscape !== this.state.isLandscape &&\n isLandscape === (Math.abs(deviceOrientation) === 90) &&\n this.orientationQueue.every(i => i === isLandscape)\n ) {\n this.setState({ isLandscape }, () => {\n // console.log('isLandscape', this.state.isLandscape);\n if (this.props.orientationChanged) this.props.orientationChanged(this.state.isLandscape);\n });\n }\n };\n\n onStreamLoadStart = () => {\n console.log('Stream load started');\n this.checkStreamLoaded = setInterval(() => {\n const { playbackLoaded } = this.state;\n if (playbackLoaded === false) {\n console.log('Stream loading failed unexpectedly');\n this.checkReloadStream(1000, true);\n } else {\n clearInterval(this.checkStreamLoaded);\n }\n }, RETRY_RECOVER);\n };\n\n onStreamLoaded = status => {\n console.log(`Stream loaded - isLoaded:${status.isLoaded}, isBuffering:${status.isBuffering}, isPlaying:${status.isPlaying}`);\n };\n\n onStreamError = error => {\n console.log('Stream error', error);\n };\n\n onStreamStatusUpdate = status => {\n this.setState(\n {\n playbackLoaded: status.isLoaded,\n playbackBuffering: status.isBuffering,\n playbackPlaying: status.isPlaying,\n },\n () => {\n const { playbackLoaded, playbackBuffering, playbackPlaying, shouldPlay } = this.state;\n // console.log(`Status updated - isLoaded:${playbackLoaded}, isBuffering:${playbackBuffering}, isPlaying:${playbackPlaying}`);\n if (playbackLoaded === false && playbackBuffering === undefined && playbackPlaying === undefined) {\n this.checkReloadStream();\n } else if (playbackLoaded === true && playbackBuffering === true) {\n this.checkReloadStream(RETRY_RECOVER);\n }\n },\n );\n };\n\n onYoutubeError = e => {\n // console.log('onYoutubeError', e);\n this.setState({ forceWebview: true });\n };\n\n onYoutubeReady = () => {\n // console.log('onYoutubeReady');\n };\n\n onVideoPlayStatusUpdate = status => {\n // console.log('onVideoPlayStatusUpdate', status);\n };\n\n onVideoPlayError = error => {\n if (error && error.type === 'NonFatal') {\n return;\n }\n // console.log('onVideoPlayError', error);\n this.setState({ forceWebview: true });\n };\n\n getYoutubePlayer = (youtubeId, width, height, autoPlay) => (\n <YoutubePlayer\n ref={ref => (this.youtubePlayer = ref)}\n height={height}\n width={width}\n videoId={youtubeId}\n play={autoPlay}\n // onChangeState={event => console.log('onChangeState', event)}\n onReady={this.onYoutubeReady}\n onError={this.onYoutubeError}\n // onPlaybackQualityChange={q => console.log('onPlaybackQualityChange', q)}\n volume={50}\n playbackRate={1}\n playerParams={{\n cc_lang_pref: 'us',\n showClosedCaptions: true,\n }}\n />\n );\n\n getVimeoPlayer = (vimeoId, width, height, autoPlay) => (\n <View style={{ width, height }}>\n <Vimeo\n style={{ marginLeft: -8, marginRight: -5 }}\n videoId={vimeoId}\n // onReady={() => console.log('Video is ready')}\n // onPlay={() => console.log('Video is playing')}\n // onPlayProgress={data => console.log('Video progress data:', data)}\n // onFinish={() => console.log('Video is finished')}\n loop={false}\n autoPlay={autoPlay}\n controls={true}\n speed={true}\n time={'0m0s'}\n />\n </View>\n );\n\n getWebviewPlayer = (embedUrl, width, height) => (\n <WebView\n startInLoadingState\n javaScriptEnabled\n scrollEnabled={false}\n automaticallyAdjustContentInsets={false}\n mediaPlaybackRequiresUserAction\n style={[styles.webView, { width, height }]}\n source={{ uri: embedUrl }}\n />\n );\n\n getStreamPlayer = (embedUrl, width, height, autoPlay) => (\n <Video\n ref={vp => {\n this.videoPlayer = vp;\n }}\n source={{ uri: embedUrl }}\n {...EXPO_VIDEO_PROPS}\n shouldPlay={autoPlay}\n resizeMode={Video.RESIZE_MODE_CONTAIN}\n useNativeControls\n style={{ width, height }}\n onLoadStart={this.onStreamLoadStart}\n onLoad={this.onStreamLoaded}\n onError={this.onStreamError}\n onPlaybackStatusUpdate={this.onStreamStatusUpdate}\n />\n );\n\n // getVideoPlayer = (embedUrl, width, height, autoPlay) => (\n // <VideoPlayer\n // videoProps={{\n // shouldPlay: autoPlay,\n // resizeMode: Video.RESIZE_MODE_CONTAIN,\n // source: { uri: embedUrl },\n // }}\n // showFullscreenButton={false}\n // errorCallback={this.onVideoPlayError}\n // playbackCallback={this.onVideoPlayStatusUpdate}\n // height={height}\n // width={width}\n // />\n // );\n\n render() {\n let width, height;\n const { playbackId, source, autoPlay, useVideoPlayer } = this.props;\n const {\n readyToRender,\n isLandscape,\n heightFactor,\n isUrlLink,\n isYoutube,\n isVimeo,\n forceWebview,\n playbackLoaded,\n playbackBuffering,\n } = this.state;\n if (!readyToRender) return null;\n\n if (isLandscape) {\n width = SCREEN_HEIGHT;\n height = SCREEN_WIDTH;\n } else {\n width = SCREEN_WIDTH;\n height = heightFactor ? SCREEN_WIDTH * heightFactor : SCREEN_HEIGHT;\n }\n\n let embedUrl, player, showLoading;\n if (!forceWebview) {\n if (isYoutube) {\n const youtubeId = this.getYoutubeVideoId(source);\n embedUrl = youtubeId ? `https://www.youtube.com/embed/${youtubeId}` : source;\n // console.log('getYoutubePlayer', youtubeId, width, height, autoPlay);\n player = this.getYoutubePlayer(youtubeId, width, height, autoPlay);\n } else if (isVimeo) {\n const vimeoId = this.getVimeoId(source);\n embedUrl = source;\n // console.log('getVimeoPlayer', vimeoId, width, height, autoPlay);\n player = this.getVimeoPlayer(vimeoId, width, height, autoPlay);\n } else if (playbackId) {\n embedUrl = this.getStreamPlaybackUrl();\n // console.log('getStreamPlayer', embedUrl, width, height, autoPlay);\n player = this.getStreamPlayer(embedUrl, width, height, autoPlay);\n showLoading = true;\n } else if (useVideoPlayer) {\n embedUrl = source;\n // console.log('getVideoPlayer', embedUrl, width, height, autoPlay);\n player = this.getStreamPlayer(embedUrl, width, height, autoPlay);\n }\n }\n if (!player && isUrlLink) {\n embedUrl = source;\n console.log('getWebviewPlayer', embedUrl, width, height);\n player = this.getWebviewPlayer(embedUrl, width, height);\n }\n\n // console.log({\n // Streaming: embedUrl,\n // Landscape: isLandscape,\n // Loaded: playbackLoaded,\n // Buffering: playbackBuffering,\n // LoadingIndicator: showLoading,\n // Width: width,\n // Height: height,\n // HeightFactor: heightFactor,\n // isYoutube,\n // isVimeo,\n // playbackId,\n // useVideoPlayer,\n // });\n return (\n <View style={styles.container}>\n {player}\n {showLoading && (!playbackLoaded || playbackBuffering) && (\n <View style={styles.loadingContainer}>\n <Spinner color={'#fff'} />\n </View>\n )}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n webView: {\n flex: 1,\n },\n loadingContainer: {\n position: 'absolute',\n top: 50,\n left: 0,\n right: 0,\n bottom: 50,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default MediaPlayer;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Component","View","StyleSheet","Dimensions","YoutubePlayer","getYoutubeMeta","Vimeo","WebView","Video","ResizeMode","Spinner","SCREEN_HEIGHT","get","height","SCREEN_WIDTH","width","EXPO_VIDEO_PROPS","rate","isMuted","volume","RETRY_RECOVER","RETRY_LOADING","MediaPlayer","constructor","props","_defineProperty","setupForPlaying","checkStreamLoaded","clearInterval","url","replace","split","undefined","ids","result","match","source","useVideoPlayer","isUrlLink","startsWith","isYoutube","includes","isVimeo","heightFactor","metadata","getYoutubeVideoId","setState","playbackLoaded","readyToRender","playbackId","wait","force","retryLoading","console","log","setTimeout","playbackBuffering","state","videoPlayer","loadAsync","uri","getStreamPlaybackUrl","overrideFileExtensionAndroid","deviceRotation","beta","gamma","absGamma","Math","abs","absBeta","isGammaNegative","sign","changeEvent","rotation","deviceOrientation","orientation","isLandscape","orientationQueue","push","length","slice","every","i","orientationChanged","setInterval","checkReloadStream","status","isLoaded","isBuffering","isPlaying","error","playbackPlaying","shouldPlay","e","forceWebview","type","youtubeId","autoPlay","createElement","ref","youtubePlayer","videoId","play","onReady","onYoutubeReady","onError","onYoutubeError","playbackRate","playerParams","cc_lang_pref","showClosedCaptions","vimeoId","style","marginLeft","marginRight","loop","controls","speed","time","embedUrl","startInLoadingState","javaScriptEnabled","scrollEnabled","automaticallyAdjustContentInsets","mediaPlaybackRequiresUserAction","styles","webView","_extends","vp","resizeMode","CONTAIN","useNativeControls","onLoadStart","onStreamLoadStart","onLoad","onStreamLoaded","onStreamError","onPlaybackStatusUpdate","onStreamStatusUpdate","render","player","showLoading","getYoutubePlayer","getVimeoId","getVimeoPlayer","getStreamPlayer","getWebviewPlayer","container","loadingContainer","color","create","flex","backgroundColor","alignItems","justifyContent","position","top","left","right","bottom"],"sources":["MediaPlayer.js"],"sourcesContent":["import React, { Component } from 'react';\nimport { View, StyleSheet, Dimensions } from 'react-native';\nimport YoutubePlayer, { getYoutubeMeta } from 'react-native-youtube-iframe';\nimport { Vimeo } from 'react-native-vimeo-iframe';\nimport { WebView } from 'react-native-webview';\nimport { Video, ResizeMode } from 'expo-av';\nimport { Spinner } from './Spinner';\n\nconst SCREEN_HEIGHT = Dimensions.get('window').height;\nconst SCREEN_WIDTH = Dimensions.get('window').width;\nconst EXPO_VIDEO_PROPS = { rate: 1, isMuted: false, volume: 1 };\nconst RETRY_RECOVER = 30000;\nconst RETRY_LOADING = 10000;\n\nclass MediaPlayer extends Component {\n constructor(props) {\n super(props);\n this.state = {\n deviceOrientation: null,\n isLandscape: false,\n isUrlLink: true,\n isYoutube: false,\n isVimeo: false,\n forceWebview: false,\n heightFactor: 0,\n playbackLoaded: false,\n playbackBuffering: false,\n playbackPlaying: false,\n readyToRender: false,\n };\n this.youtubePlayer = null;\n this.videoPlayer = null;\n this.checkStreamLoaded = null;\n this.retryLoading = false;\n this.orientationQueue = [];\n }\n\n componentDidMount = async () => {\n await this.setupForPlaying();\n };\n\n componentWillUnmount = () => {\n if (this.checkStreamLoaded) clearInterval(this.checkStreamLoaded);\n };\n\n getYoutubeVideoId = url => {\n url = url.replace(/(>|<)/gi, '').split(/(vi\\/|v=|\\/v\\/|youtu\\.be\\/|\\/embed\\/)/);\n if (url[2] !== undefined) {\n const ids = url[2].split(/[^0-9a-z_\\-]/i);\n return ids[0];\n } else {\n return '';\n }\n };\n\n getVimeoId = url => {\n const result = url.match(\n /(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?/i,\n );\n return result[1];\n };\n\n setupForPlaying = async () => {\n // Extract live stream info\n const { source, useVideoPlayer } = this.props;\n const isUrlLink = source && source.startsWith('http');\n const isYoutube = source && (source.includes('youtube.com/watch?v=') || source.includes('youtu.be/'));\n const isVimeo = source && source.includes('vimeo.com/');\n let heightFactor = 0;\n\n if (isYoutube) {\n const metadata = await getYoutubeMeta(this.getYoutubeVideoId(source));\n heightFactor = metadata.height / metadata.width;\n } else if (useVideoPlayer) {\n heightFactor = 0;\n } else {\n heightFactor = 0.565;\n }\n\n this.setState({ isUrlLink, isYoutube, isVimeo, playbackLoaded: isYoutube || isVimeo, heightFactor, readyToRender: true });\n };\n\n getStreamPlaybackUrl = () => {\n // return 'https://stream.mux.com/Ym4nKktRpGuZNBBBlzhxpyRwZLpvMlPRchcu01x6Ur600.m3u8';\n return `https://stream.mux.com/${this.props.playbackId}.m3u8`;\n };\n\n checkReloadStream = (wait = RETRY_LOADING, force = false) => {\n if (!force && this.retryLoading) return;\n\n console.log(`Check loading in ${wait} milliseconds...`);\n this.retryLoading = true;\n setTimeout(async () => {\n const { playbackLoaded, playbackBuffering } = this.state;\n try {\n if (playbackLoaded === false || playbackBuffering === true) {\n console.log('Reloading started');\n await this.videoPlayer.loadAsync(\n { uri: this.getStreamPlaybackUrl(), overrideFileExtensionAndroid: 'm3u8' },\n EXPO_VIDEO_PROPS,\n false,\n );\n } else {\n console.log('Already loaded - not reloading');\n }\n this.retryLoading = false;\n } catch {}\n }, wait);\n };\n\n isLandscape = deviceRotation => {\n const { beta, gamma } = deviceRotation;\n const absGamma = Math.abs(gamma);\n const absBeta = Math.abs(beta);\n const isGammaNegative = Math.sign(gamma) === -1;\n\n if (absGamma <= 0.04 && absBeta <= 0.24) {\n //Portrait mode, on a flat surface.\n return false;\n } else if ((absGamma <= 1.0 || absGamma >= 2.3) && absBeta >= 0.5) {\n //General Portrait mode, accounting for forward and back tilt on the top of the phone.\n return false;\n } else {\n if (isGammaNegative) {\n //Landscape mode with the top of the phone to the left.\n return true;\n } else {\n //Landscape mode with the top of the phone to the right.\n return true;\n }\n }\n };\n\n onMotionChange = async changeEvent => {\n const deviceRotation = changeEvent.rotation;\n const deviceOrientation = changeEvent.orientation;\n const isLandscape = this.isLandscape(deviceRotation);\n this.orientationQueue.push(isLandscape);\n if (this.orientationQueue.length > 2) this.orientationQueue = this.orientationQueue.slice(-2);\n // console.log('onMotionChange - orientationQueue', this.orientationQueue);\n if (\n isLandscape !== this.state.isLandscape &&\n isLandscape === (Math.abs(deviceOrientation) === 90) &&\n this.orientationQueue.every(i => i === isLandscape)\n ) {\n this.setState({ isLandscape }, () => {\n // console.log('isLandscape', this.state.isLandscape);\n if (this.props.orientationChanged) this.props.orientationChanged(this.state.isLandscape);\n });\n }\n };\n\n onStreamLoadStart = () => {\n console.log('Stream load started');\n this.checkStreamLoaded = setInterval(() => {\n const { playbackLoaded } = this.state;\n if (playbackLoaded === false) {\n console.log('Stream loading failed unexpectedly');\n this.checkReloadStream(1000, true);\n } else {\n clearInterval(this.checkStreamLoaded);\n }\n }, RETRY_RECOVER);\n };\n\n onStreamLoaded = status => {\n console.log(`Stream loaded - isLoaded:${status.isLoaded}, isBuffering:${status.isBuffering}, isPlaying:${status.isPlaying}`);\n };\n\n onStreamError = error => {\n console.log('Stream error', error);\n };\n\n onStreamStatusUpdate = status => {\n this.setState(\n {\n playbackLoaded: status.isLoaded,\n playbackBuffering: status.isBuffering,\n playbackPlaying: status.isPlaying,\n },\n () => {\n const { playbackLoaded, playbackBuffering, playbackPlaying, shouldPlay } = this.state;\n // console.log(`Status updated - isLoaded:${playbackLoaded}, isBuffering:${playbackBuffering}, isPlaying:${playbackPlaying}`);\n if (playbackLoaded === false && playbackBuffering === undefined && playbackPlaying === undefined) {\n this.checkReloadStream();\n } else if (playbackLoaded === true && playbackBuffering === true) {\n this.checkReloadStream(RETRY_RECOVER);\n }\n },\n );\n };\n\n onYoutubeError = e => {\n // console.log('onYoutubeError', e);\n this.setState({ forceWebview: true });\n };\n\n onYoutubeReady = () => {\n // console.log('onYoutubeReady');\n };\n\n onVideoPlayStatusUpdate = status => {\n // console.log('onVideoPlayStatusUpdate', status);\n };\n\n onVideoPlayError = error => {\n if (error && error.type === 'NonFatal') {\n return;\n }\n // console.log('onVideoPlayError', error);\n this.setState({ forceWebview: true });\n };\n\n getYoutubePlayer = (youtubeId, width, height, autoPlay) => (\n <YoutubePlayer\n ref={ref => (this.youtubePlayer = ref)}\n height={height}\n width={width}\n videoId={youtubeId}\n play={autoPlay}\n // onChangeState={event => console.log('onChangeState', event)}\n onReady={this.onYoutubeReady}\n onError={this.onYoutubeError}\n // onPlaybackQualityChange={q => console.log('onPlaybackQualityChange', q)}\n volume={50}\n playbackRate={1}\n playerParams={{\n cc_lang_pref: 'us',\n showClosedCaptions: true,\n }}\n />\n );\n\n getVimeoPlayer = (vimeoId, width, height, autoPlay) => (\n <View style={{ width, height }}>\n <Vimeo\n style={{ marginLeft: -8, marginRight: -5 }}\n videoId={vimeoId}\n // onReady={() => console.log('Video is ready')}\n // onPlay={() => console.log('Video is playing')}\n // onPlayProgress={data => console.log('Video progress data:', data)}\n // onFinish={() => console.log('Video is finished')}\n loop={false}\n autoPlay={autoPlay}\n controls={true}\n speed={true}\n time={'0m0s'}\n />\n </View>\n );\n\n getWebviewPlayer = (embedUrl, width, height) => (\n <WebView\n startInLoadingState\n javaScriptEnabled\n scrollEnabled={false}\n automaticallyAdjustContentInsets={false}\n mediaPlaybackRequiresUserAction\n style={[styles.webView, { width, height }]}\n source={{ uri: embedUrl }}\n />\n );\n\n getStreamPlayer = (embedUrl, width, height, autoPlay) => (\n <Video\n ref={vp => {\n this.videoPlayer = vp;\n }}\n source={{ uri: embedUrl }}\n {...EXPO_VIDEO_PROPS}\n shouldPlay={autoPlay}\n resizeMode={ResizeMode.CONTAIN}\n useNativeControls\n style={{ width, height }}\n onLoadStart={this.onStreamLoadStart}\n onLoad={this.onStreamLoaded}\n onError={this.onStreamError}\n onPlaybackStatusUpdate={this.onStreamStatusUpdate}\n />\n );\n\n // getVideoPlayer = (embedUrl, width, height, autoPlay) => (\n // <VideoPlayer\n // videoProps={{\n // shouldPlay: autoPlay,\n // resizeMode: Video.RESIZE_MODE_CONTAIN,\n // source: { uri: embedUrl },\n // }}\n // showFullscreenButton={false}\n // errorCallback={this.onVideoPlayError}\n // playbackCallback={this.onVideoPlayStatusUpdate}\n // height={height}\n // width={width}\n // />\n // );\n\n render() {\n let width, height;\n const { playbackId, source, autoPlay, useVideoPlayer } = this.props;\n const {\n readyToRender,\n isLandscape,\n heightFactor,\n isUrlLink,\n isYoutube,\n isVimeo,\n forceWebview,\n playbackLoaded,\n playbackBuffering,\n } = this.state;\n if (!readyToRender) return null;\n\n if (isLandscape) {\n width = SCREEN_HEIGHT;\n height = SCREEN_WIDTH;\n } else {\n width = SCREEN_WIDTH;\n height = heightFactor ? SCREEN_WIDTH * heightFactor : SCREEN_HEIGHT;\n }\n\n let embedUrl, player, showLoading;\n if (!forceWebview) {\n if (isYoutube) {\n const youtubeId = this.getYoutubeVideoId(source);\n embedUrl = youtubeId ? `https://www.youtube.com/embed/${youtubeId}` : source;\n // console.log('getYoutubePlayer', youtubeId, width, height, autoPlay);\n player = this.getYoutubePlayer(youtubeId, width, height, autoPlay);\n } else if (isVimeo) {\n const vimeoId = this.getVimeoId(source);\n embedUrl = source;\n // console.log('getVimeoPlayer', vimeoId, width, height, autoPlay);\n player = this.getVimeoPlayer(vimeoId, width, height, autoPlay);\n } else if (playbackId) {\n embedUrl = this.getStreamPlaybackUrl();\n // console.log('getStreamPlayer', embedUrl, width, height, autoPlay);\n player = this.getStreamPlayer(embedUrl, width, height, autoPlay);\n showLoading = true;\n } else if (useVideoPlayer) {\n embedUrl = source;\n // console.log('getVideoPlayer', embedUrl, width, height, autoPlay);\n player = this.getStreamPlayer(embedUrl, width, height, autoPlay);\n }\n }\n if (!player && isUrlLink) {\n embedUrl = source;\n console.log('getWebviewPlayer', embedUrl, width, height);\n player = this.getWebviewPlayer(embedUrl, width, height);\n }\n\n // console.log({\n // Streaming: embedUrl,\n // Landscape: isLandscape,\n // Loaded: playbackLoaded,\n // Buffering: playbackBuffering,\n // LoadingIndicator: showLoading,\n // Width: width,\n // Height: height,\n // HeightFactor: heightFactor,\n // isYoutube,\n // isVimeo,\n // playbackId,\n // useVideoPlayer,\n // });\n return (\n <View style={styles.container}>\n {player}\n {showLoading && (!playbackLoaded || playbackBuffering) && (\n <View style={styles.loadingContainer}>\n <Spinner color={'#fff'} />\n </View>\n )}\n </View>\n );\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n backgroundColor: '#000',\n alignItems: 'center',\n justifyContent: 'center',\n },\n webView: {\n flex: 1,\n },\n loadingContainer: {\n position: 'absolute',\n top: 50,\n left: 0,\n right: 0,\n bottom: 50,\n justifyContent: 'center',\n alignItems: 'center',\n },\n});\n\nexport default MediaPlayer;\n"],"mappings":";;;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,IAAI,EAAEC,UAAU,EAAEC,UAAU,QAAQ,cAAc;AAC3D,OAAOC,aAAa,IAAIC,cAAc,QAAQ,6BAA6B;AAC3E,SAASC,KAAK,QAAQ,2BAA2B;AACjD,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,KAAK,EAAEC,UAAU,QAAQ,SAAS;AAC3C,SAASC,OAAO,QAAQ,WAAW;AAEnC,MAAMC,aAAa,GAAGR,UAAU,CAACS,GAAG,CAAC,QAAQ,CAAC,CAACC,MAAM;AACrD,MAAMC,YAAY,GAAGX,UAAU,CAACS,GAAG,CAAC,QAAQ,CAAC,CAACG,KAAK;AACnD,MAAMC,gBAAgB,GAAG;EAAEC,IAAI,EAAE,CAAC;EAAEC,OAAO,EAAE,KAAK;EAAEC,MAAM,EAAE;AAAE,CAAC;AAC/D,MAAMC,aAAa,GAAG,KAAK;AAC3B,MAAMC,aAAa,GAAG,KAAK;AAE3B,MAAMC,WAAW,SAAStB,SAAS,CAAC;EAClCuB,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA,4BAqBK,YAAY;MAC9B,MAAM,IAAI,CAACC,eAAe,CAAC,CAAC;IAC9B,CAAC;IAAAD,eAAA,+BAEsB,MAAM;MAC3B,IAAI,IAAI,CAACE,iBAAiB,EAAEC,aAAa,CAAC,IAAI,CAACD,iBAAiB,CAAC;IACnE,CAAC;IAAAF,eAAA,4BAEmBI,GAAG,IAAI;MACzBA,GAAG,GAAGA,GAAG,CAACC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAACC,KAAK,CAAC,uCAAuC,CAAC;MAC/E,IAAIF,GAAG,CAAC,CAAC,CAAC,KAAKG,SAAS,EAAE;QACxB,MAAMC,GAAG,GAAGJ,GAAG,CAAC,CAAC,CAAC,CAACE,KAAK,CAAC,eAAe,CAAC;QACzC,OAAOE,GAAG,CAAC,CAAC,CAAC;MACf,CAAC,MAAM;QACL,OAAO,EAAE;MACX;IACF,CAAC;IAAAR,eAAA,qBAEYI,GAAG,IAAI;MAClB,MAAMK,MAAM,GAAGL,GAAG,CAACM,KAAK,CACtB,gJACF,CAAC;MACD,OAAOD,MAAM,CAAC,CAAC,CAAC;IAClB,CAAC;IAAAT,eAAA,0BAEiB,YAAY;MAC5B;MACA,MAAM;QAAEW,MAAM;QAAEC;MAAe,CAAC,GAAG,IAAI,CAACb,KAAK;MAC7C,MAAMc,SAAS,GAAGF,MAAM,IAAIA,MAAM,CAACG,UAAU,CAAC,MAAM,CAAC;MACrD,MAAMC,SAAS,GAAGJ,MAAM,KAAKA,MAAM,CAACK,QAAQ,CAAC,sBAAsB,CAAC,IAAIL,MAAM,CAACK,QAAQ,CAAC,WAAW,CAAC,CAAC;MACrG,MAAMC,OAAO,GAAGN,MAAM,IAAIA,MAAM,CAACK,QAAQ,CAAC,YAAY,CAAC;MACvD,IAAIE,YAAY,GAAG,CAAC;MAEpB,IAAIH,SAAS,EAAE;QACb,MAAMI,QAAQ,GAAG,MAAMvC,cAAc,CAAC,IAAI,CAACwC,iBAAiB,CAACT,MAAM,CAAC,CAAC;QACrEO,YAAY,GAAGC,QAAQ,CAAC/B,MAAM,GAAG+B,QAAQ,CAAC7B,KAAK;MACjD,CAAC,MAAM,IAAIsB,cAAc,EAAE;QACzBM,YAAY,GAAG,CAAC;MAClB,CAAC,MAAM;QACLA,YAAY,GAAG,KAAK;MACtB;MAEA,IAAI,CAACG,QAAQ,CAAC;QAAER,SAAS;QAAEE,SAAS;QAAEE,OAAO;QAAEK,cAAc,EAAEP,SAAS,IAAIE,OAAO;QAAEC,YAAY;QAAEK,aAAa,EAAE;MAAK,CAAC,CAAC;IAC3H,CAAC;IAAAvB,eAAA,+BAEsB,MAAM;MAC3B;MACA,OAAO,0BAA0B,IAAI,CAACD,KAAK,CAACyB,UAAU,OAAO;IAC/D,CAAC;IAAAxB,eAAA,4BAEmB,CAACyB,IAAI,GAAG7B,aAAa,EAAE8B,KAAK,GAAG,KAAK,KAAK;MAC3D,IAAI,CAACA,KAAK,IAAI,IAAI,CAACC,YAAY,EAAE;MAEjCC,OAAO,CAACC,GAAG,CAAC,oBAAoBJ,IAAI,kBAAkB,CAAC;MACvD,IAAI,CAACE,YAAY,GAAG,IAAI;MACxBG,UAAU,CAAC,YAAY;QACrB,MAAM;UAAER,cAAc;UAAES;QAAkB,CAAC,GAAG,IAAI,CAACC,KAAK;QACxD,IAAI;UACF,IAAIV,cAAc,KAAK,KAAK,IAAIS,iBAAiB,KAAK,IAAI,EAAE;YAC1DH,OAAO,CAACC,GAAG,CAAC,mBAAmB,CAAC;YAChC,MAAM,IAAI,CAACI,WAAW,CAACC,SAAS,CAC9B;cAAEC,GAAG,EAAE,IAAI,CAACC,oBAAoB,CAAC,CAAC;cAAEC,4BAA4B,EAAE;YAAO,CAAC,EAC1E9C,gBAAgB,EAChB,KACF,CAAC;UACH,CAAC,MAAM;YACLqC,OAAO,CAACC,GAAG,CAAC,gCAAgC,CAAC;UAC/C;UACA,IAAI,CAACF,YAAY,GAAG,KAAK;QAC3B,CAAC,CAAC,MAAM,CAAC;MACX,CAAC,EAAEF,IAAI,CAAC;IACV,CAAC;IAAAzB,eAAA,sBAEasC,cAAc,IAAI;MAC9B,MAAM;QAAEC,IAAI;QAAEC;MAAM,CAAC,GAAGF,cAAc;MACtC,MAAMG,QAAQ,GAAGC,IAAI,CAACC,GAAG,CAACH,KAAK,CAAC;MAChC,MAAMI,OAAO,GAAGF,IAAI,CAACC,GAAG,CAACJ,IAAI,CAAC;MAC9B,MAAMM,eAAe,GAAGH,IAAI,CAACI,IAAI,CAACN,KAAK,CAAC,KAAK,CAAC,CAAC;MAE/C,IAAIC,QAAQ,IAAI,IAAI,IAAIG,OAAO,IAAI,IAAI,EAAE;QACvC;QACA,OAAO,KAAK;MACd,CAAC,MAAM,IAAI,CAACH,QAAQ,IAAI,GAAG,IAAIA,QAAQ,IAAI,GAAG,KAAKG,OAAO,IAAI,GAAG,EAAE;QACjE;QACA,OAAO,KAAK;MACd,CAAC,MAAM;QACL,IAAIC,eAAe,EAAE;UACnB;UACA,OAAO,IAAI;QACb,CAAC,MAAM;UACL;UACA,OAAO,IAAI;QACb;MACF;IACF,CAAC;IAAA7C,eAAA,yBAEgB,MAAM+C,WAAW,IAAI;MACpC,MAAMT,cAAc,GAAGS,WAAW,CAACC,QAAQ;MAC3C,MAAMC,iBAAiB,GAAGF,WAAW,CAACG,WAAW;MACjD,MAAMC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACb,cAAc,CAAC;MACpD,IAAI,CAACc,gBAAgB,CAACC,IAAI,CAACF,WAAW,CAAC;MACvC,IAAI,IAAI,CAACC,gBAAgB,CAACE,MAAM,GAAG,CAAC,EAAE,IAAI,CAACF,gBAAgB,GAAG,IAAI,CAACA,gBAAgB,CAACG,KAAK,CAAC,CAAC,CAAC,CAAC;MAC7F;MACA,IACEJ,WAAW,KAAK,IAAI,CAACnB,KAAK,CAACmB,WAAW,IACtCA,WAAW,MAAMT,IAAI,CAACC,GAAG,CAACM,iBAAiB,CAAC,KAAK,EAAE,CAAC,IACpD,IAAI,CAACG,gBAAgB,CAACI,KAAK,CAACC,CAAC,IAAIA,CAAC,KAAKN,WAAW,CAAC,EACnD;QACA,IAAI,CAAC9B,QAAQ,CAAC;UAAE8B;QAAY,CAAC,EAAE,MAAM;UACnC;UACA,IAAI,IAAI,CAACpD,KAAK,CAAC2D,kBAAkB,EAAE,IAAI,CAAC3D,KAAK,CAAC2D,kBAAkB,CAAC,IAAI,CAAC1B,KAAK,CAACmB,WAAW,CAAC;QAC1F,CAAC,CAAC;MACJ;IACF,CAAC;IAAAnD,eAAA,4BAEmB,MAAM;MACxB4B,OAAO,CAACC,GAAG,CAAC,qBAAqB,CAAC;MAClC,IAAI,CAAC3B,iBAAiB,GAAGyD,WAAW,CAAC,MAAM;QACzC,MAAM;UAAErC;QAAe,CAAC,GAAG,IAAI,CAACU,KAAK;QACrC,IAAIV,cAAc,KAAK,KAAK,EAAE;UAC5BM,OAAO,CAACC,GAAG,CAAC,oCAAoC,CAAC;UACjD,IAAI,CAAC+B,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;QACpC,CAAC,MAAM;UACLzD,aAAa,CAAC,IAAI,CAACD,iBAAiB,CAAC;QACvC;MACF,CAAC,EAAEP,aAAa,CAAC;IACnB,CAAC;IAAAK,eAAA,yBAEgB6D,MAAM,IAAI;MACzBjC,OAAO,CAACC,GAAG,CAAC,4BAA4BgC,MAAM,CAACC,QAAQ,iBAAiBD,MAAM,CAACE,WAAW,eAAeF,MAAM,CAACG,SAAS,EAAE,CAAC;IAC9H,CAAC;IAAAhE,eAAA,wBAEeiE,KAAK,IAAI;MACvBrC,OAAO,CAACC,GAAG,CAAC,cAAc,EAAEoC,KAAK,CAAC;IACpC,CAAC;IAAAjE,eAAA,+BAEsB6D,MAAM,IAAI;MAC/B,IAAI,CAACxC,QAAQ,CACX;QACEC,cAAc,EAAEuC,MAAM,CAACC,QAAQ;QAC/B/B,iBAAiB,EAAE8B,MAAM,CAACE,WAAW;QACrCG,eAAe,EAAEL,MAAM,CAACG;MAC1B,CAAC,EACD,MAAM;QACJ,MAAM;UAAE1C,cAAc;UAAES,iBAAiB;UAAEmC,eAAe;UAAEC;QAAW,CAAC,GAAG,IAAI,CAACnC,KAAK;QACrF;QACA,IAAIV,cAAc,KAAK,KAAK,IAAIS,iBAAiB,KAAKxB,SAAS,IAAI2D,eAAe,KAAK3D,SAAS,EAAE;UAChG,IAAI,CAACqD,iBAAiB,CAAC,CAAC;QAC1B,CAAC,MAAM,IAAItC,cAAc,KAAK,IAAI,IAAIS,iBAAiB,KAAK,IAAI,EAAE;UAChE,IAAI,CAAC6B,iBAAiB,CAACjE,aAAa,CAAC;QACvC;MACF,CACF,CAAC;IACH,CAAC;IAAAK,eAAA,yBAEgBoE,CAAC,IAAI;MACpB;MACA,IAAI,CAAC/C,QAAQ,CAAC;QAAEgD,YAAY,EAAE;MAAK,CAAC,CAAC;IACvC,CAAC;IAAArE,eAAA,yBAEgB,MAAM;MACrB;IAAA,CACD;IAAAA,eAAA,kCAEyB6D,MAAM,IAAI;MAClC;IAAA,CACD;IAAA7D,eAAA,2BAEkBiE,KAAK,IAAI;MAC1B,IAAIA,KAAK,IAAIA,KAAK,CAACK,IAAI,KAAK,UAAU,EAAE;QACtC;MACF;MACA;MACA,IAAI,CAACjD,QAAQ,CAAC;QAAEgD,YAAY,EAAE;MAAK,CAAC,CAAC;IACvC,CAAC;IAAArE,eAAA,2BAEkB,CAACuE,SAAS,EAAEjF,KAAK,EAAEF,MAAM,EAAEoF,QAAQ,kBACpDlG,KAAA,CAAAmG,aAAA,CAAC9F,aAAa;MACZ+F,GAAG,EAAEA,GAAG,IAAK,IAAI,CAACC,aAAa,GAAGD,GAAK;MACvCtF,MAAM,EAAEA,MAAO;MACfE,KAAK,EAAEA,KAAM;MACbsF,OAAO,EAAEL,SAAU;MACnBM,IAAI,EAAEL;MACN;MAAA;MACAM,OAAO,EAAE,IAAI,CAACC,cAAe;MAC7BC,OAAO,EAAE,IAAI,CAACC;MACd;MAAA;MACAvF,MAAM,EAAE,EAAG;MACXwF,YAAY,EAAE,CAAE;MAChBC,YAAY,EAAE;QACZC,YAAY,EAAE,IAAI;QAClBC,kBAAkB,EAAE;MACtB;IAAE,CACH,CACF;IAAArF,eAAA,yBAEgB,CAACsF,OAAO,EAAEhG,KAAK,EAAEF,MAAM,EAAEoF,QAAQ,kBAChDlG,KAAA,CAAAmG,aAAA,CAACjG,IAAI;MAAC+G,KAAK,EAAE;QAAEjG,KAAK;QAAEF;MAAO;IAAE,gBAC7Bd,KAAA,CAAAmG,aAAA,CAAC5F,KAAK;MACJ0G,KAAK,EAAE;QAAEC,UAAU,EAAE,CAAC,CAAC;QAAEC,WAAW,EAAE,CAAC;MAAE,CAAE;MAC3Cb,OAAO,EAAEU;MACT;MACA;MACA;MACA;MAAA;MACAI,IAAI,EAAE,KAAM;MACZlB,QAAQ,EAAEA,QAAS;MACnBmB,QAAQ,EAAE,IAAK;MACfC,KAAK,EAAE,IAAK;MACZC,IAAI,EAAE;IAAO,CACd,CACG,CACP;IAAA7F,eAAA,2BAEkB,CAAC8F,QAAQ,EAAExG,KAAK,EAAEF,MAAM,kBACzCd,KAAA,CAAAmG,aAAA,CAAC3F,OAAO;MACNiH,mBAAmB;MACnBC,iBAAiB;MACjBC,aAAa,EAAE,KAAM;MACrBC,gCAAgC,EAAE,KAAM;MACxCC,+BAA+B;MAC/BZ,KAAK,EAAE,CAACa,MAAM,CAACC,OAAO,EAAE;QAAE/G,KAAK;QAAEF;MAAO,CAAC,CAAE;MAC3CuB,MAAM,EAAE;QAAEwB,GAAG,EAAE2D;MAAS;IAAE,CAC3B,CACF;IAAA9F,eAAA,0BAEiB,CAAC8F,QAAQ,EAAExG,KAAK,EAAEF,MAAM,EAAEoF,QAAQ,kBAClDlG,KAAA,CAAAmG,aAAA,CAAC1F,KAAK,EAAAuH,QAAA;MACJ5B,GAAG,EAAE6B,EAAE,IAAI;QACT,IAAI,CAACtE,WAAW,GAAGsE,EAAE;MACvB,CAAE;MACF5F,MAAM,EAAE;QAAEwB,GAAG,EAAE2D;MAAS;IAAE,GACtBvG,gBAAgB;MACpB4E,UAAU,EAAEK,QAAS;MACrBgC,UAAU,EAAExH,UAAU,CAACyH,OAAQ;MAC/BC,iBAAiB;MACjBnB,KAAK,EAAE;QAAEjG,KAAK;QAAEF;MAAO,CAAE;MACzBuH,WAAW,EAAE,IAAI,CAACC,iBAAkB;MACpCC,MAAM,EAAE,IAAI,CAACC,cAAe;MAC5B9B,OAAO,EAAE,IAAI,CAAC+B,aAAc;MAC5BC,sBAAsB,EAAE,IAAI,CAACC;IAAqB,EACnD,CACF;IAtQC,IAAI,CAACjF,KAAK,GAAG;MACXiB,iBAAiB,EAAE,IAAI;MACvBE,WAAW,EAAE,KAAK;MAClBtC,SAAS,EAAE,IAAI;MACfE,SAAS,EAAE,KAAK;MAChBE,OAAO,EAAE,KAAK;MACdoD,YAAY,EAAE,KAAK;MACnBnD,YAAY,EAAE,CAAC;MACfI,cAAc,EAAE,KAAK;MACrBS,iBAAiB,EAAE,KAAK;MACxBmC,eAAe,EAAE,KAAK;MACtB3C,aAAa,EAAE;IACjB,CAAC;IACD,IAAI,CAACoD,aAAa,GAAG,IAAI;IACzB,IAAI,CAAC1C,WAAW,GAAG,IAAI;IACvB,IAAI,CAAC/B,iBAAiB,GAAG,IAAI;IAC7B,IAAI,CAACyB,YAAY,GAAG,KAAK;IACzB,IAAI,CAACyB,gBAAgB,GAAG,EAAE;EAC5B;EAsPA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;EAEA8D,MAAMA,CAAA,EAAG;IACP,IAAI5H,KAAK,EAAEF,MAAM;IACjB,MAAM;MAAEoC,UAAU;MAAEb,MAAM;MAAE6D,QAAQ;MAAE5D;IAAe,CAAC,GAAG,IAAI,CAACb,KAAK;IACnE,MAAM;MACJwB,aAAa;MACb4B,WAAW;MACXjC,YAAY;MACZL,SAAS;MACTE,SAAS;MACTE,OAAO;MACPoD,YAAY;MACZ/C,cAAc;MACdS;IACF,CAAC,GAAG,IAAI,CAACC,KAAK;IACd,IAAI,CAACT,aAAa,EAAE,OAAO,IAAI;IAE/B,IAAI4B,WAAW,EAAE;MACf7D,KAAK,GAAGJ,aAAa;MACrBE,MAAM,GAAGC,YAAY;IACvB,CAAC,MAAM;MACLC,KAAK,GAAGD,YAAY;MACpBD,MAAM,GAAG8B,YAAY,GAAG7B,YAAY,GAAG6B,YAAY,GAAGhC,aAAa;IACrE;IAEA,IAAI4G,QAAQ,EAAEqB,MAAM,EAAEC,WAAW;IACjC,IAAI,CAAC/C,YAAY,EAAE;MACjB,IAAItD,SAAS,EAAE;QACb,MAAMwD,SAAS,GAAG,IAAI,CAACnD,iBAAiB,CAACT,MAAM,CAAC;QAChDmF,QAAQ,GAAGvB,SAAS,GAAG,iCAAiCA,SAAS,EAAE,GAAG5D,MAAM;QAC5E;QACAwG,MAAM,GAAG,IAAI,CAACE,gBAAgB,CAAC9C,SAAS,EAAEjF,KAAK,EAAEF,MAAM,EAAEoF,QAAQ,CAAC;MACpE,CAAC,MAAM,IAAIvD,OAAO,EAAE;QAClB,MAAMqE,OAAO,GAAG,IAAI,CAACgC,UAAU,CAAC3G,MAAM,CAAC;QACvCmF,QAAQ,GAAGnF,MAAM;QACjB;QACAwG,MAAM,GAAG,IAAI,CAACI,cAAc,CAACjC,OAAO,EAAEhG,KAAK,EAAEF,MAAM,EAAEoF,QAAQ,CAAC;MAChE,CAAC,MAAM,IAAIhD,UAAU,EAAE;QACrBsE,QAAQ,GAAG,IAAI,CAAC1D,oBAAoB,CAAC,CAAC;QACtC;QACA+E,MAAM,GAAG,IAAI,CAACK,eAAe,CAAC1B,QAAQ,EAAExG,KAAK,EAAEF,MAAM,EAAEoF,QAAQ,CAAC;QAChE4C,WAAW,GAAG,IAAI;MACpB,CAAC,MAAM,IAAIxG,cAAc,EAAE;QACzBkF,QAAQ,GAAGnF,MAAM;QACjB;QACAwG,MAAM,GAAG,IAAI,CAACK,eAAe,CAAC1B,QAAQ,EAAExG,KAAK,EAAEF,MAAM,EAAEoF,QAAQ,CAAC;MAClE;IACF;IACA,IAAI,CAAC2C,MAAM,IAAItG,SAAS,EAAE;MACxBiF,QAAQ,GAAGnF,MAAM;MACjBiB,OAAO,CAACC,GAAG,CAAC,kBAAkB,EAAEiE,QAAQ,EAAExG,KAAK,EAAEF,MAAM,CAAC;MACxD+H,MAAM,GAAG,IAAI,CAACM,gBAAgB,CAAC3B,QAAQ,EAAExG,KAAK,EAAEF,MAAM,CAAC;IACzD;;IAEA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,oBACEd,KAAA,CAAAmG,aAAA,CAACjG,IAAI;MAAC+G,KAAK,EAAEa,MAAM,CAACsB;IAAU,GAC3BP,MAAM,EACNC,WAAW,KAAK,CAAC9F,cAAc,IAAIS,iBAAiB,CAAC,iBACpDzD,KAAA,CAAAmG,aAAA,CAACjG,IAAI;MAAC+G,KAAK,EAAEa,MAAM,CAACuB;IAAiB,gBACnCrJ,KAAA,CAAAmG,aAAA,CAACxF,OAAO;MAAC2I,KAAK,EAAE;IAAO,CAAE,CACrB,CAEJ,CAAC;EAEX;AACF;AAEA,MAAMxB,MAAM,GAAG3H,UAAU,CAACoJ,MAAM,CAAC;EAC/BH,SAAS,EAAE;IACTI,IAAI,EAAE,CAAC;IACPC,eAAe,EAAE,MAAM;IACvBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACD5B,OAAO,EAAE;IACPyB,IAAI,EAAE;EACR,CAAC;EACDH,gBAAgB,EAAE;IAChBO,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,EAAE;IACPC,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE,EAAE;IACVL,cAAc,EAAE,QAAQ;IACxBD,UAAU,EAAE;EACd;AACF,CAAC,CAAC;AAEF,eAAenI,WAAW","ignoreList":[]}
|