@plusscommunities/pluss-core-app 6.0.7-auth.0 → 6.0.8-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.
@@ -175,14 +175,16 @@ class ImageUploader extends Component {
175
175
  try {
176
176
  const fileType = uri.substring(uri.lastIndexOf('.') + 1);
177
177
  const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_VIDEO_NAME)}.${fileType}`;
178
- uploadUri = await fileActions.getPresignedUrl(fileName);
178
+ const blob = await fileActions.imageToBlob(uri);
179
+ const presignedUriRes = await fileActions.getPresignedUrl(fileName, blob.type);
180
+ uploadUri = presignedUriRes.key;
179
181
  this.props.onUploadStarted(uploadUri, uri);
180
182
  this.hideUploadMenu();
181
- const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {
183
+ const uploadResult = await fileActions.uploadUserMediaWithProgress(blob, presignedUriRes.url, progress => {
182
184
  if (this.props.onUploadProgress) this.props.onUploadProgress(progress);
183
185
  });
184
- this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);
185
- console.log('upload success', Config.env.baseUploadsUrl + res.key);
186
+ this.props.onUploadSuccess(Config.env.baseUploadsUrl + uploadUri, uploadUri);
187
+ console.log('upload success', Config.env.baseUploadsUrl + uploadUri);
186
188
  } catch (e) {
187
189
  console.log('handleVideoPicked error', e);
188
190
  this.props.onUploadFailed(uploadUri);
@@ -301,6 +303,7 @@ class ImageUploader extends Component {
301
303
  } else {
302
304
  if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {
303
305
  const uri = mediaSelected[0].localUri || mediaSelected[0].uri;
306
+ console.log('picked a video');
304
307
  this.handleVideoPicked(uri);
305
308
  } else {
306
309
  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","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","showWarningPopup","state","loadLocalAlbums","multiple","allowVideo","allowsEditing","askPermissionsAsync","editingAllowed","isEditingEnabled","OS","allowsEditingIOSCamera","result","launchCameraAsync","aspect","exif","canceled","isEmpty","assets","handleImagePicked","mediaTypes","MediaTypeOptions","Videos","showUploadMenu","showPhotos","selected","showRemote","selectedAlbumId","showCropper","showSelectAlbum","videoSelected","onAttach","selectedType","callback","openCropper","mediaSelected","onLibrarySelected","media","mediaType","MediaType","video","localUri","handleVideoPicked","handleMultiImagePicked","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","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 'react-native-elements';\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 uploadUri = await fileActions.getPresignedUrl(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' || 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 showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: true,\n selectedAlbumId: '',\n });\n };\n\n openPhotos = async () => {\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":";;;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,IAAI,EAAEC,UAAU,EAAEC,gBAAgB,EAAEC,IAAI,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,KAAK,EAAEC,UAAU,EAAEC,UAAU,EAAEC,eAAe,QAAQ,cAAc;AAC1I,SAASC,OAAO,QAAQ,aAAa;AACrC,SAASC,IAAI,QAAQ,uBAAuB;AAC5C,OAAOC,CAAC,MAAM,QAAQ;AACtB,SAASC,MAAM,QAAQ,aAAa;AACpC,OAAO,KAAKC,YAAY,MAAM,oBAAoB;AAClD,OAAO,KAAKC,gBAAgB,MAAM,wBAAwB;AAC1D,OAAO,KAAKC,WAAW,MAAM,mBAAmB;AAChD,OAAOC,YAAY,MAAM,2CAA2C;AACpE,OAAOC,oBAAoB,MAAM,wDAAwD;AACzF,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,iBAAiB,EAAEC,WAAW,EAAEC,OAAO,QAAQ,WAAW;AACnE,SAASC,8BAA8B,EAAEC,OAAO,EAAEC,eAAe,EAAEC,aAAa,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,YAAY;AACzH,OAAOC,MAAM,MAAM,WAAW;AAC9B,SAASC,WAAW,QAAQ,SAAS;AACrC,SAASC,iBAAiB,EAAEC,kBAAkB,QAAQ,YAAY;AAElE,MAAMC,YAAY,GAAG7B,UAAU,CAAC8B,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK;AACnD,MAAMC,aAAa,GAAGhC,UAAU,CAAC8B,GAAG,CAAC,QAAQ,CAAC,CAACG,MAAM;AACrD,MAAMC,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7B,MAAMC,sBAAsB,GAAG,IAAI;AACnC,MAAMC,iCAAiC,GAAG,KAAK;AAC/C,MAAMC,YAAY,GAAG,IAAI;AACzB,MAAMC,kBAAkB,GAAG,MAAM;AACjC,MAAMC,kBAAkB,GAAG,OAAO;AAClC,MAAMC,kBAAkB,GAAG,OAAO;AAClC,MAAMC,YAAY,GAAG;EACnBV,KAAK,EAAE;AACT,CAAC;AACD,MAAMW,mBAAmB,GAAG,GAAG;AAE/B,MAAMC,aAAa,SAASnD,SAAS,CAAC;EACpCoD,WAAWA,CAACC,KAAK,EAAE;IACjB,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA,0BAwBG,YAAY;MAC5B,MAAMC,aAAa,GAAG,MAAMxC,YAAY,CAACyC,mBAAmB,CAAC,CAAC;MAC9D,IAAI,CAACD,aAAa,CAACE,OAAO,EAAE;MAE5B,IAAI,CAACC,QAAQ,CAAC;QAAEC,mBAAmB,EAAE;MAAK,CAAC,EAAE,YAAY;QACvD,IAAI;UACF,MAAMC,WAAW,GAAG,MAAM7C,YAAY,CAAC8C,cAAc,CAAC;YAAEC,kBAAkB,EAAE;UAAK,CAAC,CAAC;UACnF,IAAI,CAACJ,QAAQ,CAAC;YACZC,mBAAmB,EAAE,KAAK;YAC1BC,WAAW,EAAE,CACX;cACEG,KAAK,EAAE,YAAY;cACnBC,EAAE,EAAE;YACN,CAAC,EACD,GAAGJ,WAAW;UAElB,CAAC,CAAC;QACJ,CAAC,CAAC,OAAOK,KAAK,EAAE;UACdC,OAAO,CAACC,GAAG,CAAC,yBAAyB,EAAEF,KAAK,CAAC;UAC7C,IAAI,CAACP,QAAQ,CAAC;YAAEC,mBAAmB,EAAE;UAAM,CAAC,CAAC;QAC/C;MACF,CAAC,CAAC;IACJ,CAAC;IAAAL,eAAA,2BAEkB,MAAM;MACvB,IAAI,CAACI,QAAQ,CAAC;QAAEU,oBAAoB,EAAE;MAAK,CAAC,EAAE,YAAY;QACxD,IAAI;UACF,MAAMC,WAAW,GAAG,MAAMnC,WAAW,CAACoC,cAAc,CAAC,CAAC;UACtD,IAAI,CAACjB,KAAK,CAAClB,iBAAiB,CAACkC,WAAW,CAAC;UACzC,MAAME,UAAU,GAAG,MAAMrC,WAAW,CAACsC,eAAe,CAAC,IAAI,CAACnB,KAAK,CAACoB,IAAI,CAACC,IAAI,CAAC;UAC1E,IAAI,CAACrB,KAAK,CAACjB,kBAAkB,CAACmC,UAAU,CAACI,IAAI,CAAC;QAChD,CAAC,CAAC,OAAOV,KAAK,EAAE;UACdC,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAEF,KAAK,CAAC;QAChD,CAAC,SAAS;UACR,IAAI,CAACP,QAAQ,CAAC;YAAEU,oBAAoB,EAAE;UAAM,CAAC,CAAC;QAChD;MACF,CAAC,CAAC;IACJ,CAAC;IAAAd,eAAA,sBAca,OAAOsB,QAAQ,EAAEC,SAAS,KAAK;MAC3C,IAAI;QACF,MAAMC,GAAG,GAAGpD,OAAO,CAACmD,SAAS,CAAC,GAAGD,QAAQ,GAAG,CAAC,MAAM,IAAI,CAACG,gBAAgB,CAACH,QAAQ,CAAC,EAAEE,GAAG;QACvF,MAAME,GAAG,GAAG,MAAM9C,WAAW,CAAC+C,2BAA2B,CAACH,GAAG,EAAED,SAAS,EAAEK,QAAQ,IAAI;UACpF,IAAI,IAAI,CAAC7B,KAAK,CAAC8B,gBAAgB,EAAE,IAAI,CAAC9B,KAAK,CAAC8B,gBAAgB,CAACD,QAAQ,CAAC;QACxE,CAAC,CAAC;QACF,IAAI,CAAC7B,KAAK,CAAC+B,eAAe,CAACnD,MAAM,CAACoD,GAAG,CAACC,cAAc,GAAGN,GAAG,CAACO,GAAG,EAAEV,SAAS,CAAC;QAC1EX,OAAO,CAACC,GAAG,CAAC,uBAAuB,EAAElC,MAAM,CAACoD,GAAG,CAACC,cAAc,GAAGN,GAAG,CAACO,GAAG,CAAC;MAC3E,CAAC,CAAC,OAAOC,CAAC,EAAE;QACVtB,OAAO,CAACC,GAAG,CAAC,mBAAmB,EAAEqB,CAAC,CAAC;QACnC,IAAI,CAACnC,KAAK,CAACoC,cAAc,CAACZ,SAAS,CAAC;MACtC;IACF,CAAC;IAAAvB,eAAA,2BAEkB,MAAMwB,GAAG,IAAI;MAC9B,MAAMY,OAAO,GAAG,CACd;QACEC,MAAM,EAAEnE,iBAAiB,CAAC,IAAI,CAAC6B,KAAK,CAACuC,IAAI,EAAE3C,YAAY;MACzD,CAAC,CACF;MACD,MAAM4C,WAAW,GAAG;QAClBC,MAAM,EAAEhD,kBAAkB;QAC1BiD,QAAQ,EAAEvE,iBAAiB,CAAC,IAAI,CAAC6B,KAAK,CAAC2C,OAAO,EAAE9C,mBAAmB,CAAC;QACpE+C,MAAM,EAAE;MACV,CAAC;MACD,OAAO,MAAMjF,gBAAgB,CAACkF,eAAe,CAACpB,GAAG,EAAEY,OAAO,EAAEG,WAAW,CAAC;IAC1E,CAAC;IAAAvC,eAAA,4BAEmB,MAAM6C,QAAQ,IAAI;MACpC,IAAItB,SAAS;MACb,IAAI;QACF,MAAMuB,QAAQ,GAAG,GAAG5E,iBAAiB,CAAC,IAAI,CAAC6B,KAAK,CAAC+C,QAAQ,EAAErD,kBAAkB,CAAC,IAAID,kBAAkB,EAAE;QAEtG,IAAI,CAACuD,cAAc,CAAC,CAAC;QAErB,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACvB,gBAAgB,CAACoB,QAAQ,CAAC;QACrD,MAAMI,IAAI,GAAG,MAAMrE,WAAW,CAACsE,WAAW,CAACF,OAAO,CAACxB,GAAG,CAAC;QACvD,MAAM2B,eAAe,GAAG,MAAMvE,WAAW,CAACwE,eAAe,CAAC7F,CAAC,CAAC8F,IAAI,CAACL,OAAO,CAACxB,GAAG,CAAC8B,KAAK,CAAC,GAAG,CAAC,CAAC,EAAEL,IAAI,CAACM,IAAI,CAAC;QACpGhC,SAAS,GAAG4B,eAAe,CAAClB,GAAG;QAC/B,IAAI,CAAClC,KAAK,CAACyD,eAAe,CAACjC,SAAS,EAAEsB,QAAQ,CAAC;QAC/C,IAAI,IAAI,CAAC9C,KAAK,CAAC0D,eAAe,EAAE;UAC9B,IAAI,CAAC1D,KAAK,CAAC2D,eAAe,CAACV,OAAO,EAAEF,QAAQ,CAAC;UAC7C;QACF;QAEA,MAAMa,YAAY,GAAG,MAAM/E,WAAW,CAAC+C,2BAA2B,CAACsB,IAAI,EAAEE,eAAe,CAACS,GAAG,EAAEhC,QAAQ,IAAI;UACxG,IAAI,IAAI,CAAC7B,KAAK,CAAC8B,gBAAgB,EAAE,IAAI,CAAC9B,KAAK,CAAC8B,gBAAgB,CAACD,QAAQ,CAAC;QACxE,CAAC,CAAC;QAEF,IAAI,CAAC7B,KAAK,CAAC+B,eAAe,CAACnD,MAAM,CAACoD,GAAG,CAACC,cAAc,GAAGT,SAAS,EAAEA,SAAS,CAAC;QAC5EX,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAElC,MAAM,CAACoD,GAAG,CAACC,cAAc,GAAGT,SAAS,CAAC;MACtE,CAAC,CAAC,OAAOW,CAAC,EAAE;QACVtB,OAAO,CAACC,GAAG,CAAC,yBAAyB,EAAEqB,CAAC,CAAC;QACzC,IAAI,CAACnC,KAAK,CAACoC,cAAc,CAACZ,SAAS,CAAC;MACtC;IACF,CAAC;IAAAvB,eAAA,iCAEwB,MAAM6D,cAAc,IAAI;MAC/C;MACA,MAAMC,cAAc,GAAGD,cAAc,CAACE,GAAG,CAACC,KAAK,IAAI;QACjD,MAAMlB,QAAQ,GAAG,GAAG5E,iBAAiB,CAAC,IAAI,CAAC6B,KAAK,CAAC+C,QAAQ,EAAErD,kBAAkB,CAAC,IAAID,kBAAkB,EAAE;QACtG,MAAM+B,SAAS,GAAG3C,WAAW,CAACqF,YAAY,CAAC,IAAI,CAAClE,KAAK,CAACmE,MAAM,EAAEpB,QAAQ,CAAC;QACvE,OAAO;UAAED,QAAQ,EAAEmB,KAAK,CAACxC,GAAG;UAAED,SAAS;UAAEuB;QAAS,CAAC;MACrD,CAAC,CAAC;MACF,IAAI,CAACC,cAAc,CAAC,CAAC;;MAErB;MACA,KAAK,IAAIoB,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,cAAc,CAACM,MAAM,EAAED,CAAC,EAAE,EAAE;QAC9C,MAAMH,KAAK,GAAGF,cAAc,CAACK,CAAC,CAAC;QAC/B,MAAM;UAAEtB,QAAQ;UAAEtB,SAAS;UAAEuB;QAAS,CAAC,GAAGkB,KAAK;QAC/C,IAAI;UACF,MAAMhB,OAAO,GAAG,MAAM,IAAI,CAACvB,gBAAgB,CAACoB,QAAQ,CAAC;UACrD,MAAMI,IAAI,GAAG,MAAMrE,WAAW,CAACsE,WAAW,CAACF,OAAO,CAACxB,GAAG,CAAC;UACvD,IAAI,IAAI,CAACzB,KAAK,CAAC0D,eAAe,EAAE;YAC9B,IAAI,CAAC1D,KAAK,CAAC2D,eAAe,CAACV,OAAO,EAAEF,QAAQ,CAAC;YAC7C;UACF;UACA,MAAMK,eAAe,GAAG,MAAMvE,WAAW,CAACwE,eAAe,CAAC7F,CAAC,CAAC8F,IAAI,CAACL,OAAO,CAACxB,GAAG,CAAC8B,KAAK,CAAC,GAAG,CAAC,CAAC,EAAEL,IAAI,CAACM,IAAI,CAAC;UACpG,MAAMhC,SAAS,GAAG4B,eAAe,CAAClB,GAAG;UACrC,IAAI,CAAC,IAAI,CAAClC,KAAK,CAAC0D,eAAe,EAAE,IAAI,CAAC1D,KAAK,CAACyD,eAAe,CAACjC,SAAS,EAAEsB,QAAQ,CAAC;UAEhF,MAAMc,YAAY,GAAG,MAAM/E,WAAW,CAAC+C,2BAA2B,CAACsB,IAAI,EAAEE,eAAe,CAACS,GAAG,EAAEhC,QAAQ,IAAI;YACxG,IAAI,IAAI,CAAC7B,KAAK,CAAC8B,gBAAgB,EAAE,IAAI,CAAC9B,KAAK,CAAC8B,gBAAgB,CAACD,QAAQ,CAAC;UACxE,CAAC,CAAC;UAEF,IAAI,CAAC7B,KAAK,CAAC+B,eAAe,CAACnD,MAAM,CAACoD,GAAG,CAACC,cAAc,GAAGT,SAAS,EAAEA,SAAS,CAAC;UAC5EX,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAElC,MAAM,CAACoD,GAAG,CAACC,cAAc,GAAGT,SAAS,CAAC;QACtE,CAAC,CAAC,OAAOW,CAAC,EAAE;UACVtB,OAAO,CAACC,GAAG,CAAC,8BAA8B,EAAEqB,CAAC,CAAC;UAC9C,IAAI,CAACnC,KAAK,CAACoC,cAAc,CAACZ,SAAS,CAAC;QACtC;MACF;IACF,CAAC;IAAAvB,eAAA,4BAEmB,MAAMwB,GAAG,IAAI;MAC/B,IAAID,SAAS;MACb,IAAI;QACF,MAAM8C,QAAQ,GAAG7C,GAAG,CAAC8C,SAAS,CAAC9C,GAAG,CAAC+C,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,MAAMzB,QAAQ,GAAG,GAAG5E,iBAAiB,CAAC,IAAI,CAAC6B,KAAK,CAAC+C,QAAQ,EAAEpD,kBAAkB,CAAC,IAAI2E,QAAQ,EAAE;QAC5F9C,SAAS,GAAG,MAAM3C,WAAW,CAACwE,eAAe,CAACN,QAAQ,CAAC;QAEvD,IAAI,CAAC/C,KAAK,CAACyD,eAAe,CAACjC,SAAS,EAAEC,GAAG,CAAC;QAC1C,IAAI,CAACuB,cAAc,CAAC,CAAC;QAErB,MAAMrB,GAAG,GAAG,MAAM9C,WAAW,CAAC+C,2BAA2B,CAACH,GAAG,EAAED,SAAS,EAAEK,QAAQ,IAAI;UACpF,IAAI,IAAI,CAAC7B,KAAK,CAAC8B,gBAAgB,EAAE,IAAI,CAAC9B,KAAK,CAAC8B,gBAAgB,CAACD,QAAQ,CAAC;QACxE,CAAC,CAAC;QAEF,IAAI,CAAC7B,KAAK,CAAC+B,eAAe,CAACnD,MAAM,CAACoD,GAAG,CAACC,cAAc,GAAGN,GAAG,CAACO,GAAG,EAAEV,SAAS,CAAC;QAC1EX,OAAO,CAACC,GAAG,CAAC,gBAAgB,EAAElC,MAAM,CAACoD,GAAG,CAACC,cAAc,GAAGN,GAAG,CAACO,GAAG,CAAC;MACpE,CAAC,CAAC,OAAOC,CAAC,EAAE;QACVtB,OAAO,CAACC,GAAG,CAAC,yBAAyB,EAAEqB,CAAC,CAAC;QACzC,IAAI,CAACnC,KAAK,CAACoC,cAAc,CAACZ,SAAS,CAAC;MACtC;IACF,CAAC;IAAAvB,eAAA,8BAmCqB,YAAY;MAAA,IAAAwE,qBAAA;MAChC,MAAMC,gBAAgB,GAAG,MAAMjH,MAAM,CAACkH,6BAA6B,CAAC,CAAC;MACrE,MAAMC,cAAc,GAAG,MAAMlH,YAAY,CAACmH,uBAAuB,CAAC,CAAC;MACnE,IAAIH,gBAAgB,CAACI,MAAM,KAAK,SAAS,IAAIF,cAAc,CAACE,MAAM,KAAK,SAAS,EAAE;QAChF,IAAI,CAACC,gBAAgB,CAACL,gBAAgB,CAACI,MAAM,KAAK,SAAS,EAAEF,cAAc,CAACE,MAAM,KAAK,SAAS,CAAC;QACjG,OAAO,KAAK;MACd;MACA,IAAI,EAAAL,qBAAA,OAAI,CAACO,KAAK,CAACzE,WAAW,cAAAkE,qBAAA,uBAAtBA,qBAAA,CAAwBJ,MAAM,KAAI,CAAC,EAAE,IAAI,CAACY,eAAe,CAAC,CAAC;MAE/D,OAAO,IAAI;IACb,CAAC;IAAAhF,eAAA,2BAEkB,MAAM;MACvB,OAAO,KAAK;MACZ,OAAO,CAAC,IAAI,CAACD,KAAK,CAACkF,QAAQ,IAAI,CAAC,IAAI,CAAClF,KAAK,CAACmF,UAAU,IAAIhH,iBAAiB,CAAC,IAAI,CAAC6B,KAAK,CAACoF,aAAa,EAAE9F,sBAAsB,CAAC;IAC9H,CAAC;IAAAW,eAAA,qBAEY,YAAY;MACvB,IAAI,EAAE,MAAM,IAAI,CAACoF,mBAAmB,CAAC,CAAC,CAAC,EAAE;MAEzC,IAAIC,cAAc,GAAG,IAAI,CAACC,gBAAgB,CAAC,CAAC;MAC5C,IAAIvI,QAAQ,CAACwI,EAAE,KAAK,KAAK,EAAE;QACzBF,cAAc,GAAGnH,iBAAiB,CAChC,IAAI,CAAC6B,KAAK,CAACyF,sBAAsB,EACjCtH,iBAAiB,CAAC,IAAI,CAAC6B,KAAK,CAACoF,aAAa,EAAE7F,iCAAiC,CAC/E,CAAC;MACH;MACA,MAAMmG,MAAM,GAAG,MAAM9H,WAAW,CAAC+H,iBAAiB,CAAC;QACjDP,aAAa,EAAEE,cAAc;QAC7BM,MAAM,EAAEzH,iBAAiB,CAAC,IAAI,CAAC6B,KAAK,CAAC4F,MAAM,EAAEvG,cAAc,CAAC;QAC5DwG,IAAI,EAAE1H,iBAAiB,CAAC,IAAI,CAAC6B,KAAK,CAAC6F,IAAI,EAAErG,YAAY;MACvD,CAAC,CAAC;MAEF,IAAI,CAACkG,MAAM,CAACI,QAAQ,IAAI,CAACtI,CAAC,CAACuI,OAAO,CAACL,MAAM,CAACM,MAAM,CAAC,EAAE;QACjD,IAAI,CAACC,iBAAiB,CAACP,MAAM,CAACM,MAAM,CAAC,CAAC,CAAC,CAACvE,GAAG,CAAC;MAC9C;IACF,CAAC;IAAAxB,eAAA,0BAEiB,YAAY;MAC5B,IAAI,EAAE,MAAM,IAAI,CAACoF,mBAAmB,CAAC,CAAC,CAAC,EAAE;MAEzC,MAAMK,MAAM,GAAG,MAAM9H,WAAW,CAAC+H,iBAAiB,CAAC;QACjDP,aAAa,EAAE,IAAI,CAACG,gBAAgB,CAAC,CAAC;QACtCW,UAAU,EAAEtI,WAAW,CAACuI,gBAAgB,CAACC;MAC3C,CAAC,CAAC;MAEF,IAAI,CAACV,MAAM,CAACI,QAAQ,IAAI,CAACtI,CAAC,CAACuI,OAAO,CAACL,MAAM,CAACM,MAAM,CAAC,EAAE;QACjD,IAAI,CAACC,iBAAiB,CAACP,MAAM,CAACM,MAAM,CAAC,CAAC,CAAC,CAACvE,GAAG,CAAC;MAC9C;IACF,CAAC;IAAAxB,eAAA,sBAEa,YAAY;MACxB,IAAI,CAACI,QAAQ,CAAC;QACZgG,cAAc,EAAE,KAAK;QACrBC,UAAU,EAAE,IAAI;QAChBC,QAAQ,EAAE,EAAE;QACZC,UAAU,EAAE,IAAI;QAChBC,eAAe,EAAE;MACnB,CAAC,CAAC;IACJ,CAAC;IAAAxG,eAAA,qBAEY,YAAY;MACvB,IAAI,EAAE,MAAM,IAAI,CAACoF,mBAAmB,CAAC,CAAC,CAAC,EAAE;MAEzC,IAAI,CAAChF,QAAQ,CAAC;QACZgG,cAAc,EAAE,KAAK;QACrBC,UAAU,EAAE,IAAI;QAChBC,QAAQ,EAAE,EAAE;QACZC,UAAU,EAAE,KAAK;QACjBC,eAAe,EAAE;MACnB,CAAC,CAAC;IACJ,CAAC;IAAAxG,eAAA,qBAEY,MAAM;MACjB,IAAI,CAACI,QAAQ,CAAC;QAAEiG,UAAU,EAAE;MAAM,CAAC,CAAC;IACtC,CAAC;IAAArG,eAAA,sBAEa,MAAM;MAClB,IAAI,CAACI,QAAQ,CAAC;QAAEiG,UAAU,EAAE,KAAK;QAAEI,WAAW,EAAE;MAAK,CAAC,CAAC;IACzD,CAAC;IAAAzG,eAAA,wBAEe,MAAM;MACpB,IAAI,CAACI,QAAQ,CAAC;QAAEqG,WAAW,EAAE,CAAC,IAAI,CAAC1B,KAAK,CAAC0B;MAAY,CAAC,CAAC;IACzD,CAAC;IAAAzG,eAAA,wBAEe,MAAM;MACpB,IAAI,CAACI,QAAQ,CAAC;QAAEsG,eAAe,EAAE;MAAK,CAAC,CAAC;IAC1C,CAAC;IAAA1G,eAAA,8BAEqB,MAAM;MAC1B,IAAI,CAACI,QAAQ,CAAC;QAAEsG,eAAe,EAAE;MAAM,CAAC,CAAC;IAC3C,CAAC;IAAA1G,eAAA,0BAEiBwG,eAAe,IAAI;MACnC,IAAI,CAACpG,QAAQ,CAAC;QAAEsG,eAAe,EAAE,KAAK;QAAEF;MAAgB,CAAC,CAAC;IAC5D,CAAC;IAAAxG,eAAA,4BAEmB,CAACsG,QAAQ,EAAEK,aAAa,EAAEC,QAAQ,KAAK;MACzD,IAAI,CAACxG,QAAQ,CAAC;QACZkG,QAAQ;QACRO,YAAY,EAAEF,aAAa,GAAG,OAAO,GAAG,OAAO;QAC/CC;MACF,CAAC,CAAC;IACJ,CAAC;IAAA5G,eAAA,qBAEY,MAAM8G,QAAQ,IAAI;MAC7B,IAAI,IAAI,CAACxB,gBAAgB,CAAC,CAAC,EAAE;QAC3B,IAAI,CAACyB,WAAW,CAAC,CAAC;MACpB,CAAC,MAAM;QACL,MAAMC,aAAa,GAAG,MAAMF,QAAQ;QACpC;QACA,IAAI,IAAI,CAAC/B,KAAK,CAACwB,UAAU,EAAE;UACzB,IAAI,IAAI,CAACxG,KAAK,CAACkH,iBAAiB,EAAE;YAChCD,aAAa,CAACjD,GAAG,CAACmD,KAAK,IAAI;cACzB,IAAI,CAACnH,KAAK,CAACkH,iBAAiB,CAACC,KAAK,CAAC1F,GAAG,CAAC;YACzC,CAAC,CAAC;UACJ;QACF,CAAC,MAAM;UACL,IAAIwF,aAAa,CAAC,CAAC,CAAC,CAACG,SAAS,KAAK1J,YAAY,CAAC2J,SAAS,CAACC,KAAK,EAAE;YAC/D,MAAM7F,GAAG,GAAGwF,aAAa,CAAC,CAAC,CAAC,CAACM,QAAQ,IAAIN,aAAa,CAAC,CAAC,CAAC,CAACxF,GAAG;YAC7D,IAAI,CAAC+F,iBAAiB,CAAC/F,GAAG,CAAC;UAC7B,CAAC,MAAM;YACL,IAAI,CAACgG,sBAAsB,CAACR,aAAa,CAAC;UAC5C;QACF;QAEA,IAAI,CAACS,UAAU,CAAC,CAAC;MACnB;IACF,CAAC;IAAAzH,eAAA,wBAEewB,GAAG,IAAI;MACrB,MAAM8E,QAAQ,GAAG,CAAC,GAAG,IAAI,CAACvB,KAAK,CAACuB,QAAQ,CAAC;MACzC,MAAMoB,WAAW,GAAGpB,QAAQ,CAACqB,OAAO,CAACnG,GAAG,CAAC;MACzC8E,QAAQ,CAACsB,MAAM,CAACF,WAAW,EAAE,CAAC,CAAC;MAC/B,IAAI,CAACtH,QAAQ,CAAC;QAAEkG;MAAS,CAAC,CAAC;IAC7B,CAAC;IAAAtG,eAAA,uBAEc,MAAM;MACnB,MAAM6H,OAAO,GAAG,CACd;QACEC,IAAI,EAAE,YAAY;QAClBC,OAAO,EAAE,IAAI,CAACC;MAChB,CAAC,CACF;MACD,IAAI,IAAI,CAACjI,KAAK,CAACmF,UAAU,EACvB2C,OAAO,CAACI,IAAI,CAAC;QACXH,IAAI,EAAE,cAAc;QACpBC,OAAO,EAAE,IAAI,CAACG;MAChB,CAAC,CAAC;MACJL,OAAO,CAACI,IAAI,CAAC;QACXH,IAAI,EAAE,aAAa;QACnBC,OAAO,EAAE,IAAI,CAACI;MAChB,CAAC,CAAC;MACF,IAAI,CAAC,IAAI,CAACpI,KAAK,CAACqI,WAAW,EACzBP,OAAO,CAACI,IAAI,CAAC;QACXH,IAAI,EAAE,eAAe;QACrBC,OAAO,EAAE,IAAI,CAACM;MAChB,CAAC,CAAC;MAEJ,OAAOR,OAAO;IAChB,CAAC;IAAA7H,eAAA,kCA0CyBsI,kBAAkB,IAAI;MAC9C,oBACE7L,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;QAAC6L,KAAK,EAAEC,MAAM,CAACC;MAAsB,gBACxCjM,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;QAAC6L,KAAK,EAAE,CAACC,MAAM,CAACE,uBAAuB,EAAE;UAAEC,eAAe,EAAE,IAAI,CAAC7I,KAAK,CAAC8I;QAAmB,CAAC;MAAE,GAC/F,IAAI,CAAC9I,KAAK,CAACkF,QAAQ,gBAClBxI,KAAA,CAAA8L,aAAA,CAACzL,IAAI;QAAC0L,KAAK,EAAEC,MAAM,CAACK;MAAiB,GAAER,kBAAyB,CAAC,gBAEjE7L,KAAA,CAAA8L,aAAA,CAACjL,IAAI;QAACyL,IAAI,EAAC,OAAO;QAACxF,IAAI,EAAC,cAAc;QAACyF,SAAS,EAAEP,MAAM,CAACQ;MAAiB,CAAE,CAE1E,CACF,CAAC;IAEX,CAAC;IApbC,IAAI,CAAClE,KAAK,GAAG;MACXqB,cAAc,EAAE,KAAK;MACrB8C,OAAO,EAAE,IAAI;MACb7C,UAAU,EAAE,KAAK;MACjBE,UAAU,EAAE,KAAK;MACjBD,QAAQ,EAAE,EAAE;MACZO,YAAY,EAAE,EAAE;MAChBD,QAAQ,EAAE,IAAI;MACdJ,eAAe,EAAE,EAAE;MACnBE,eAAe,EAAE,KAAK;MACtBD,WAAW,EAAE,KAAK;MAClBnG,WAAW,EAAE,EAAE;MACfD,mBAAmB,EAAE,KAAK;MAC1BS,oBAAoB,EAAE;IACxB,CAAC;EACH;EAEAqI,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACnE,eAAe,CAAC,CAAC;IACtB,IAAI,CAACoE,gBAAgB,CAAC,CAAC;EACzB;EAyCAhD,cAAcA,CAAA,EAAG;IACf,IAAI,CAAChG,QAAQ,CAAC;MACZgG,cAAc,EAAE;IAClB,CAAC,CAAC;EACJ;EAEArD,cAAcA,CAAA,EAAG;IACf,IAAI,CAAC3C,QAAQ,CAAC;MACZgG,cAAc,EAAE;IAClB,CAAC,CAAC;EACJ;EAsHAtB,gBAAgBA,CAACuE,MAAM,EAAEC,IAAI,EAAE;IAC7B,IAAIvM,QAAQ,CAACwI,EAAE,KAAK,KAAK,EAAE;MACzB;IACF;IACA,IAAIgE,YAAY,GAAG,EAAE;IACrB,IAAIF,MAAM,IAAIC,IAAI,EAAE;MAClBC,YAAY,GAAG,oCAAoC;IACrD,CAAC,MAAM,IAAIF,MAAM,EAAE;MACjBE,YAAY,GAAG,aAAa;IAC9B,CAAC,MAAM,IAAID,IAAI,EAAE;MACfC,YAAY,GAAG,oBAAoB;IACrC,CAAC,MAAM;MACL;MACA;IACF;IACA,IAAI,CAACnJ,QAAQ,CAAC;MACZ8I,OAAO,EAAE,4BAA4BK,YAAY;IACnD,CAAC,CAAC;EACJ;EAEAC,iBAAiBA,CAAA,EAAG;IAClB,IAAI,CAACpJ,QAAQ,CAAC;MACZ8I,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;EAEAO,sBAAsBA,CAAA,EAAG;IACvBzM,OAAO,CAAC0M,OAAO,CAAC,eAAe,CAAC;IAChC,IAAI,CAACtJ,QAAQ,CAAC;MACZ8I,OAAO,EAAE;IACX,CAAC,CAAC;EACJ;EAoKAS,sBAAsBA,CAAA,EAAG;IACvB,MAAM;MAAErD,QAAQ;MAAEC;IAAW,CAAC,GAAG,IAAI,CAACxB,KAAK;IAE3C,oBACEtI,KAAA,CAAA8L,aAAA,CAAC5L,IAAI,qBACHF,KAAA,CAAA8L,aAAA,CAAC3L,UAAU;MAACgN,UAAU;MAACC,8BAA8B,EAAE,KAAM;MAACC,qBAAqB,EAAErB,MAAM,CAACsB;IAA0B,GACnHzD,QAAQ,IACPA,QAAQ,CAACvC,GAAG,CAACvC,GAAG,IAAI;MAClB,MAAMqB,QAAQ,GAAG0D,UAAU,GAAGpI,WAAW,CAACqD,GAAG,CAAC,GAAGA,GAAG;MACpD,oBACE/E,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;QAACsF,GAAG,EAAET,GAAI;QAACgH,KAAK,EAAEC,MAAM,CAACuB;MAAqB,gBACjDvN,KAAA,CAAA8L,aAAA,CAACnL,eAAe;QAACoL,KAAK,EAAEC,MAAM,CAACwB,gBAAiB;QAACC,MAAM,EAAE;UAAE1I,GAAG,EAAEqB;QAAS;MAAE,CAAE,CAAC,eAC9EpG,KAAA,CAAA8L,aAAA,CAAC1L,gBAAgB;QAAC2L,KAAK,EAAEC,MAAM,CAAC0B,uBAAwB;QAACpC,OAAO,EAAEA,CAAA,KAAM,IAAI,CAACqC,aAAa,CAAC5I,GAAG;MAAE,gBAC9F/E,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;QAAC6L,KAAK,EAAE,CAACC,MAAM,CAAC4B,0BAA0B,EAAE;UAAEzB,eAAe,EAAE,IAAI,CAAC7I,KAAK,CAAC8I;QAAmB,CAAC;MAAE,gBACnGpM,KAAA,CAAA8L,aAAA,CAACjL,IAAI;QAACyL,IAAI,EAAC,OAAO;QAACxF,IAAI,EAAC,cAAc;QAACyF,SAAS,EAAEP,MAAM,CAAC6B;MAAsB,CAAE,CAC7E,CACU,CACd,CAAC;IAEX,CAAC,CACO,CACR,CAAC;EAEX;EAEAC,mBAAmBA,CAAA,EAAG;IACpB,MAAM;MAAEjK,WAAW;MAAEkG,eAAe;MAAED;IAAW,CAAC,GAAG,IAAI,CAACxB,KAAK;IAC/D,MAAMyF,aAAa,GAAG,CAACjE,UAAU,GAAG,IAAI,CAACxG,KAAK,CAAC0K,YAAY,GAAGnK,WAAW,EAAEoK,IAAI,CAACC,KAAK,IAAIA,KAAK,CAACjK,EAAE,KAAK8F,eAAe,CAAC;IACtH,MAAMoE,iBAAiB,GAAGJ,aAAa,GAAGA,aAAa,CAAC/J,KAAK,GAAG,EAAE;IAElE,oBACEhE,KAAA,CAAA8L,aAAA,CAAC1L,gBAAgB;MAACkL,OAAO,EAAE,IAAI,CAAC8C;IAAc,gBAC5CpO,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;MAAC6L,KAAK,EAAEC,MAAM,CAACqC;IAAkB,gBACpCrO,KAAA,CAAA8L,aAAA,CAACzL,IAAI;MAAC0L,KAAK,EAAEC,MAAM,CAACsC;IAAsB,GAAEH,iBAAwB,CAAC,eACrEnO,KAAA,CAAA8L,aAAA,CAACjL,IAAI;MAACyL,IAAI,EAAC,YAAY;MAACxF,IAAI,EAAC,cAAc;MAACyF,SAAS,EAAEP,MAAM,CAACuC;IAAsB,CAAE,CAClF,CACU,CAAC;EAEvB;EAgBAC,aAAaA,CAAA,EAAG;IACd,MAAM;MAAE3E,QAAQ;MAAEE,eAAe;MAAED;IAAW,CAAC,GAAG,IAAI,CAACxB,KAAK;IAC5D,MAAM;MAAEmG,WAAW;MAAEjG,QAAQ;MAAEC,UAAU;MAAEuF;IAAa,CAAC,GAAG,IAAI,CAAC1K,KAAK;IACtE,MAAMd,KAAK,GAAG,CAACF,YAAY,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC;IAEzC,oBACEtC,KAAA,CAAA8L,aAAA,CAAC3K,YAAY;MACXuN,GAAG,EAAE,CAAClG,QAAQ,GAAG,CAAC,GAAGiG,WAAY;MACjCE,SAAS,EAAE,EAAG;MACdC,QAAQ,EAAE,IAAI,CAACC,iBAAkB;MACjCC,uBAAuB,EAAE,IAAI,CAACA,uBAAwB;MACtDzE,QAAQ,EAAE,IAAI,CAAC0E,UAAW;MAC1BlF,QAAQ,EAAEA,QAAS;MACnBpB,UAAU,EAAEA,UAAW;MACvBsD,KAAK,EAAEC,MAAM,CAACgD,gBAAiB;MAC/BC,SAAS,EAAEjD,MAAM,CAACkD,aAAc;MAChCC,SAAS,EAAE3M,KAAM;MACjB4M,UAAU,EAAE5M,KAAM;MAClB0L,KAAK,EAAEnE,eAAgB;MACvBsF,YAAY,EAAEvF,UAAU,GAAGkE,YAAY,GAAG;IAAK,CAChD,CAAC;EAEN;EAEAsB,kBAAkBA,CAAA,EAAG;IACnB,MAAM;MAAEzF,QAAQ;MAAEO;IAAa,CAAC,GAAG,IAAI,CAAC9B,KAAK;IAC7C,MAAMiH,SAAS,GAAG1F,QAAQ,CAAClC,MAAM,GAAG,CAAC,IAAI,CAAC7G,CAAC,CAACuI,OAAO,CAACe,YAAY,CAAC;IACjE,MAAMoF,UAAU,GAAG,UAAUD,SAAS,GAAG1F,QAAQ,CAAClC,MAAM,GAAG,EAAE,IAAI4H,SAAS,GAAGnF,YAAY,GAAG,EAAE,GAAGP,QAAQ,CAAClC,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE;IAEjI,oBACE3H,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;MAAC6L,KAAK,EAAEC,MAAM,CAACyD;IAAgB,gBAClCzP,KAAA,CAAA8L,aAAA,CAACtK,YAAY;MACXkO,KAAK,EAAEH,SAAS,GAAG,IAAI,CAACjM,KAAK,CAAC8I,kBAAkB,GAAGtK,eAAgB;MACnEwJ,OAAO,EAAE,IAAI,CAAChD,KAAK,CAAC6B,QAAS;MAC7BwF,aAAa;MACbC,KAAK;MACLC,QAAQ,EAAE,CAACN;IAAU,GAEpBC,UACW,CACV,CAAC;EAEX;EAEAM,sBAAsBA,CAAA,EAAG;IACvB,MAAM;MAAE7F,eAAe;MAAEpG,WAAW;MAAEiG;IAAW,CAAC,GAAG,IAAI,CAACxB,KAAK;IAC/D,IAAI,CAAC2B,eAAe,EAAE,OAAO,IAAI;IAEjC,oBACEjK,KAAA,CAAA8L,aAAA,CAACtL,KAAK;MAACuP,OAAO;MAACC,WAAW;MAACC,aAAa,EAAC,OAAO;MAACC,cAAc,EAAE,IAAI,CAACC;IAAoB,gBACxFnQ,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;MAAC6L,KAAK,EAAEC,MAAM,CAACoE;IAAiB,gBACnCpQ,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;MAAC6L,KAAK,EAAEC,MAAM,CAACqE;IAAqB,gBACvCrQ,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;MAAC6L,KAAK,EAAEC,MAAM,CAACsE;IAA0B,gBAC5CtQ,KAAA,CAAA8L,aAAA,CAACzL,IAAI;MAAC0L,KAAK,EAAEC,MAAM,CAACuE;IAAiB,GAAC,cAAkB,CACpD,CAAC,eACPvQ,KAAA,CAAA8L,aAAA,CAAC3L,UAAU,QACR,CAAC2J,UAAU,GAAG,IAAI,CAACxG,KAAK,CAAC0K,YAAY,GAAGnK,WAAW,EAAEyD,GAAG,CAAC,CAAC4G,KAAK,EAAEsC,KAAK,KAAK;MAC1E,oBACExQ,KAAA,CAAA8L,aAAA,CAAC1L,gBAAgB;QAACoF,GAAG,EAAE0I,KAAK,CAACjK,EAAG;QAACqH,OAAO,EAAEA,CAAA,KAAM,IAAI,CAACmF,eAAe,CAACvC,KAAK,CAACjK,EAAE;MAAE,gBAC7EjE,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;QAAC6L,KAAK,EAAE,CAACC,MAAM,CAAC0E,oBAAoB,EAAEF,KAAK,KAAK,CAAC,IAAI;UAAEG,cAAc,EAAE;QAAE,CAAC;MAAE,gBAC/E3Q,KAAA,CAAA8L,aAAA,CAACzL,IAAI;QAAC0L,KAAK,EAAEC,MAAM,CAAC4E;MAAgB,GAAE1C,KAAK,CAAClK,KAAY,CACpD,CACU,CAAC;IAEvB,CAAC,CACS,CAAC,eACbhE,KAAA,CAAA8L,aAAA,CAAC1L,gBAAgB;MAACkL,OAAO,EAAE,IAAI,CAAC6E;IAAoB,gBAClDnQ,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;MAAC6L,KAAK,EAAE,CAACC,MAAM,CAAC0E,oBAAoB,EAAE;QAAEG,gBAAgB,EAAE;MAAE,CAAC;IAAE,gBAClE7Q,KAAA,CAAA8L,aAAA,CAACzL,IAAI;MAAC0L,KAAK,EAAE,CAACC,MAAM,CAAC4E,eAAe,EAAE;QAAElB,KAAK,EAAE,IAAI,CAACpM,KAAK,CAAC8I;MAAmB,CAAC;IAAE,GAAC,QAAY,CACzF,CACU,CACd,CACF,CACD,CAAC;EAEZ;EAEA0E,YAAYA,CAAA,EAAG;IACb,oBACE9Q,KAAA,CAAA8L,aAAA,CAACtL,KAAK;MAACuP,OAAO;MAACC,WAAW;MAACC,aAAa,EAAC,OAAO;MAACC,cAAc,EAAE,IAAI,CAAClF;IAAW,gBAC/EhL,KAAA,CAAA8L,aAAA,CAACzK,MAAM;MAAC0P,QAAQ,EAAC,YAAY;MAACC,WAAW,EAAE,IAAI,CAAChG,UAAW;MAACK,IAAI,EAAE,IAAI,CAAC/H,KAAK,CAAC2N,UAAU,IAAI;IAAe,CAAE,CAAC,eAC7GjR,KAAA,CAAA8L,aAAA,CAAC5L,IAAI;MAAC6L,KAAK,EAAEC,MAAM,CAACkF;IAAiB,GAClC,IAAI,CAAChE,sBAAsB,CAAC,CAAC,EAC7B,IAAI,CAACY,mBAAmB,CAAC,CAAC,EAC1B,IAAI,CAACU,aAAa,CAAC,CAChB,CAAC,EACN,IAAI,CAACc,kBAAkB,CAAC,CAAC,EACzB,IAAI,CAACQ,sBAAsB,CAAC,CACxB,CAAC;EAEZ;EAEAqB,MAAMA,CAAA,EAAG;IACP,MAAM;MAAE1E,OAAO;MAAE9C,cAAc;MAAEC,UAAU;MAAEI,WAAW;MAAEH;IAAS,CAAC,GAAG,IAAI,CAACvB,KAAK;IAEjF,IAAImE,OAAO,IAAI,IAAI,EAAE;MACnB,oBACEzM,KAAA,CAAA8L,aAAA,CAACxK,KAAK;QACJ0C,KAAK,EAAC,qBAAqB;QAC3BqH,IAAI,EAAEoB,OAAQ;QACdrB,OAAO,EAAE,CACP;UACEC,IAAI,EAAE,gBAAgB;UACtB+F,MAAM,EAAE,IAAI,CAACpE,sBAAsB,CAACqE,IAAI,CAAC,IAAI,CAAC;UAC9CC,IAAI,EAAE;QACR,CAAC,EACD;UACEjG,IAAI,EAAE,QAAQ;UACd+F,MAAM,EAAE,IAAI,CAACrE,iBAAiB,CAACsE,IAAI,CAAC,IAAI;QAC1C,CAAC;MACD,CACH,CAAC;IAEN;IAEA,IAAI1H,cAAc,EAAE;MAClB,MAAMyB,OAAO,GAAG,IAAI,CAACmG,YAAY,CAAC,CAAC;MACnC,oBAAOvR,KAAA,CAAA8L,aAAA,CAACvK,SAAS;QAACiQ,OAAO,EAAE,IAAI,CAAClL,cAAc,CAAC+K,IAAI,CAAC,IAAI,CAAE;QAACjG,OAAO,EAAEA,OAAQ;QAACpH,KAAK,EAAE,IAAI,CAACV,KAAK,CAAC2N,UAAW;QAACQ,UAAU,EAAC;MAAQ,CAAE,CAAC;IACnI;IAEA,IAAI7H,UAAU,EAAE,OAAO,IAAI,CAACkH,YAAY,CAAC,CAAC;IAE1C,IAAI9G,WAAW,EAAE;MACf,oBACEhK,KAAA,CAAA8L,aAAA,CAAC1K,oBAAoB;QACnBsQ,KAAK,EAAE;UAAE3M,GAAG,EAAE8E,QAAQ,CAAC,CAAC;QAAE,CAAE;QAC5B8H,aAAa,EAAE,IAAI,CAACC,aAAc;QAClCC,SAAS,EAAE7H,WAAY;QACvB8H,gBAAgB,EAAElN,IAAI,IAAI;UACxB,IAAI,CAAC2E,iBAAiB,CAAC3E,IAAI,CAACG,GAAG,CAAC;QAClC;MAAE,CACH,CAAC;IAEN;IAEA,OAAO,IAAI;EACb;AACF;AAEA,MAAMiH,MAAM,GAAGtL,UAAU,CAACqR,MAAM,CAAC;EAC/Bb,gBAAgB,EAAE;IAChBc,IAAI,EAAE,CAAC;IACP7F,eAAe,EAAEtK;EACnB,CAAC;EACDmN,gBAAgB,EAAE;IAChBiD,OAAO,EAAE;EACX,CAAC;EACD/C,aAAa,EAAE;IACb+C,OAAO,EAAE;EACX,CAAC;EACDhG,qBAAqB,EAAE;IACrB+F,IAAI,EAAE,CAAC;IACP7F,eAAe,EAAE;EACnB,CAAC;EACDD,uBAAuB,EAAE;IACvBgG,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,KAAK,EAAE,CAAC;IACR5P,KAAK,EAAE,EAAE;IACTE,MAAM,EAAE,EAAE;IACV2P,YAAY,EAAE,EAAE;IAChBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDlG,gBAAgB,EAAE;IAChBmG,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZ/C,KAAK,EAAE,MAAM;IACbgD,YAAY,EAAE;EAChB,CAAC;EACDlG,gBAAgB,EAAE;IAChBiG,QAAQ,EAAE,EAAE;IACZ/C,KAAK,EAAE,MAAM;IACbgD,YAAY,EAAE;EAChB,CAAC;EACDjD,eAAe,EAAE;IACf6C,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxB7P,MAAM,EAAE,EAAE;IACViQ,iBAAiB,EAAE,EAAE;IACrBxG,eAAe,EAAE;EACnB,CAAC;EACDkC,iBAAiB,EAAE;IACjBuE,UAAU,EAAE,EAAE;IACdD,iBAAiB,EAAE,EAAE;IACrBE,aAAa,EAAE,KAAK;IACpBP,UAAU,EAAE;EACd,CAAC;EACDhE,qBAAqB,EAAE;IACrBkE,UAAU,EAAE,WAAW;IACvBC,QAAQ,EAAE,EAAE;IACZ/C,KAAK,EAAE3N,aAAa;IACpB+Q,WAAW,EAAE;EACf,CAAC;EACDvE,qBAAqB,EAAE;IACrBkE,QAAQ,EAAE,EAAE;IACZ/C,KAAK,EAAE3N;EACT,CAAC;EACDqO,gBAAgB,EAAE;IAChB8B,QAAQ,EAAE,UAAU;IACpBa,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE,CAAC;IACPZ,KAAK,EAAE,CAAC;IACRD,GAAG,EAAE,CAAC;IACNhG,eAAe,EAAE,iBAAiB;IAClC8G,MAAM,EAAE;EACV,CAAC;EACD5C,oBAAoB,EAAE;IACpB6B,QAAQ,EAAE,UAAU;IACpBa,MAAM,EAAE,CAAC;IACTC,IAAI,EAAE,CAAC;IACPZ,KAAK,EAAE,CAAC;IACRjG,eAAe,EAAE,MAAM;IACvB+G,mBAAmB,EAAE,EAAE;IACvBC,oBAAoB,EAAE,EAAE;IACxBC,SAAS,EAAE3Q,aAAa,GAAG;EAC7B,CAAC;EACD6N,yBAAyB,EAAE;IACzB2B,OAAO,EAAE,EAAE;IACXoB,WAAW,EAAEpR,QAAQ;IACrBqR,iBAAiB,EAAE;EACrB,CAAC;EACD/C,gBAAgB,EAAE;IAChBiC,UAAU,EAAE,aAAa;IACzBC,QAAQ,EAAE,EAAE;IACZc,SAAS,EAAE,QAAQ;IACnB7D,KAAK,EAAE1N;EACT,CAAC;EACD0O,oBAAoB,EAAE;IACpBG,gBAAgB,EAAE,EAAE;IACpB2C,eAAe,EAAE,EAAE;IACnBH,WAAW,EAAEpR,QAAQ;IACrB0O,cAAc,EAAE;EAClB,CAAC;EACDC,eAAe,EAAE;IACf4B,UAAU,EAAE,YAAY;IACxBC,QAAQ,EAAE,EAAE;IACZc,SAAS,EAAE,QAAQ;IACnB7D,KAAK,EAAE1N;EACT,CAAC;EACDsL,yBAAyB,EAAE;IACzBsF,UAAU,EAAE,EAAE;IACda,YAAY,EAAE,CAAC;IACfC,WAAW,EAAE;EACf,CAAC;EACDnG,oBAAoB,EAAE;IACpBuF,WAAW,EAAE;EACf,CAAC;EACDtF,gBAAgB,EAAE;IAChBhL,KAAK,EAAE,EAAE;IACTE,MAAM,EAAE,EAAE;IACV4P,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBF,YAAY,EAAE,CAAC;IACfsB,QAAQ,EAAE;EACZ,CAAC;EACDjG,uBAAuB,EAAE;IACvBwE,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC,CAAC;IACPC,KAAK,EAAE,CAAC;EACV,CAAC;EACDxE,0BAA0B,EAAE;IAC1B2E,cAAc,EAAE,QAAQ;IACxBD,UAAU,EAAE,QAAQ;IACpBD,YAAY,EAAE,EAAE;IAChB7P,KAAK,EAAE,EAAE;IACTE,MAAM,EAAE,EAAE;IACVkR,WAAW,EAAE,CAAC;IACdP,WAAW,EAAE;EACf,CAAC;EACDxF,qBAAqB,EAAE;IACrB4E,QAAQ,EAAE,EAAE;IACZ/C,KAAK,EAAE,MAAM;IACbgD,YAAY,EAAE;EAChB;AACF,CAAC,CAAC;AAEF,MAAMmB,eAAe,GAAGvL,KAAK,IAAI;EAC/B,MAAM;IAAE5D,IAAI;IAAE+F;EAAM,CAAC,GAAGnC,KAAK;EAC7B,MAAM0F,YAAY,GAAGvD,KAAK,CAACuD,YAAY,CACpC8F,MAAM,CAACC,MAAM,IAAI,CAACA,MAAM,CAACC,MAAM,CAAC,CAChC1M,GAAG,CAAC4G,KAAK,IAAI;IACZ,OAAO;MACLlK,KAAK,EAAEkK,KAAK,CAAC+F,IAAI;MACjBhQ,EAAE,EAAEiK,KAAK,CAACgG,KAAK,IAAI,EAAE;MACrBC,MAAM,EAAEjG,KAAK,CAACgG,KAAK,GAAGhG,KAAK,CAACkG,MAAM,GAAG3J,KAAK,CAACnG;IAC7C,CAAC;EACH,CAAC,CAAC;EAEJ,OAAO;IACLI,IAAI;IACJsJ,YAAY;IACZ5B,kBAAkB,EAAExK,8BAA8B,CAAC0G,KAAK;EAC1D,CAAC;AACH,CAAC;AAED,eAAe1H,OAAO,CAACiT,eAAe,EAAE;EAAEzR,iBAAiB;EAAEC;AAAmB,CAAC,EAAE,IAAI,EAAE;EAAEgS,UAAU,EAAE;AAAK,CAAC,CAAC,CAACjR,aAAa,CAAC","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","showWarningPopup","state","loadLocalAlbums","multiple","allowVideo","allowsEditing","askPermissionsAsync","editingAllowed","isEditingEnabled","OS","allowsEditingIOSCamera","result","launchCameraAsync","aspect","exif","canceled","isEmpty","assets","handleImagePicked","mediaTypes","MediaTypeOptions","Videos","showUploadMenu","showPhotos","selected","showRemote","selectedAlbumId","showCropper","showSelectAlbum","videoSelected","onAttach","selectedType","callback","openCropper","mediaSelected","onLibrarySelected","media","mediaType","MediaType","video","localUri","handleVideoPicked","handleMultiImagePicked","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","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 'react-native-elements';\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' || 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 showUploadMenu: false,\n showPhotos: true,\n selected: [],\n showRemote: true,\n selectedAlbumId: '',\n });\n };\n\n openPhotos = async () => {\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 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":[]}
@@ -109,6 +109,9 @@ const getThumb300 = url => {
109
109
  if (!url) {
110
110
  return url;
111
111
  }
112
+ if (isVideo(url)) {
113
+ return 'https://pluss60-demo-uploads.s3.ap-southeast-2.amazonaws.com/uploads/users/ap-southeast-2:97769b56-25ec-41c0-a73c-6c2c4140f629/public/9d0bbec64614b1ed654a03f7e7/movie.jpg';
114
+ }
112
115
  if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {
113
116
  return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');
114
117
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_","Platform","StatusBar","Dimensions","Constants","Config","LINEGREY","getSessionTokenAWS","detectFaces","findLandmarkRange","getScaledOffset","getSiteLevelFromState","isTVEnabled","TIMESTAMP_FORMAT","DATE_FORMAT","getUrl","baseAction","action","query","baseAPIUrl","baseStage","env","queryPart","keys","forEach","key","index","encodeURIComponent","getAuthTokenHeader","Promise","resolve","reject","then","idToken","getShadowStyle","OS","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","backgroundColor","borderColor","elevation","StatusBarHeight","size","getStatusBarHeight","statusBarHeight","currentHeight","getSiteSettingFromState","state","defaultValue","user","siteSettings","isUndefined","getValueOrDefault","value","def","getExtension","url","fileSplit","split","length","toLowerCase","getFileName","noExtension","name","isVideo","extension","includes","isVideoUrl","urlToCheck","getValidUrl","isYoutube","isVimeo","isStockImage","indexOf","getThumb300","replace","baseUploadsUrl","urlToUse","substring","get1400","get300","getMimeType","getCompressed","imageExists","fetch","method","cache","response","status","catch","formatTime","hours","minutes","period","adjustedHours","adjustedMinutes","String","padStart","minutesToString","isTimeOfDay","Math","floor","remainingMinutes","hoursString","minutesString","getPluralS","count","getPluralOptions","singular","plural","randomString","c","r","random","v","toString","generateImageName","source","result","last","getSite","site","preferredSite","getTakeoverThumb","uri","filename","pop","getTakeoverImage","getImageSource","isThumb","getFirstName","isEmpty","usersToSearchResult","contacts","excludedUserIds","push","displayName","id","objectID","ID","userId","Id","profilePic","photoURL","unit","contact","searchUsers","term","filter","some","part","getTabSettingsFromState","tabSettings","interface","getEnabledTabsFromState","tab","isEnabled","getReactions","icon","require","hasReacted","reactions","isTablet","get","getVimeoEmbed","vimeoId","regExp","match","getYoutubeEmbed","newUrl","decodeURIComponent","trim","test","getUserPreview","uid","allowComments","canComment","defaultAllowComments"],"sources":["helper.js"],"sourcesContent":["import _ from 'lodash';\nimport { Platform, StatusBar, Dimensions } from 'react-native';\nimport Constants from 'expo-constants';\nimport Config from './config';\nimport { LINEGREY } from './colours';\nimport { getSessionTokenAWS } from './session';\n\n// seperated files to export\nimport detectFaces from './js/images/detectFaces';\nimport findLandmarkRange from './js/images/findLandmarkRange';\nimport getScaledOffset from './js/images/getScaledOffset';\n\nimport getSiteLevelFromState from './js/site/getSiteLevelFromState';\nimport isTVEnabled from './js/site/isTVEnabled';\n\nconst TIMESTAMP_FORMAT = 'D MMM • h:mma';\nconst DATE_FORMAT = 'D MMM YYYY';\n\nconst getUrl = (baseAction, action, query) => {\n const { baseAPIUrl, baseStage } = Config.env;\n let queryPart = '';\n if (query) {\n _.keys(query).forEach((key, index) => {\n queryPart += `${index === 0 ? '?' : '&'}${key}=${encodeURIComponent(query[key])}`;\n });\n }\n return `${baseAPIUrl}/${baseAction}-${baseStage}/${action}${queryPart}`;\n};\n\nconst getAuthTokenHeader = () => {\n return new Promise((resolve, reject) => {\n getSessionTokenAWS().then(idToken => {\n resolve(`Bearer ${idToken}`);\n });\n });\n};\n\nconst getShadowStyle = () => {\n if (Platform.OS === 'ios') {\n return {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.1,\n shadowRadius: 3,\n backgroundColor: '#fff',\n };\n }\n return {\n borderColor: LINEGREY,\n backgroundColor: '#fff',\n elevation: 8,\n };\n};\n\nconst StatusBarHeight = size => {\n return getStatusBarHeight() + size;\n};\n\nconst getStatusBarHeight = () => {\n return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;\n};\n\nconst getSiteSettingFromState = (state, key, defaultValue) => {\n if (state && state.user && state.user.siteSettings && !_.isUndefined(state.user.siteSettings[key])) {\n return state.user.siteSettings[key];\n }\n return defaultValue || null;\n};\n\nconst getValueOrDefault = (value, def) => {\n return !_.isUndefined(value) ? value : def;\n};\n\nconst getExtension = url => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('.');\n return fileSplit[fileSplit.length - 1].toLowerCase();\n};\n\nconst getFileName = (url, noExtension) => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('/');\n const name = fileSplit[fileSplit.length - 1].toLowerCase();\n if (!noExtension) {\n return name;\n }\n return name.split('.')[0];\n};\n\nconst isVideo = url => {\n const extension = getExtension(url);\n return ['mov', 'mp4'].includes(extension);\n};\n\nconst isVideoUrl = url => {\n const urlToCheck = getValidUrl(url);\n if (isVideo(urlToCheck)) {\n return true;\n }\n if (isYoutube(urlToCheck)) {\n return true;\n }\n if (isVimeo(urlToCheck)) {\n return true;\n }\n return false;\n};\n\nconst isStockImage = url => {\n return url.indexOf('https://pluss60-dev-uploads.s3.ap-southeast-2.amazonaws.com/uploads/library') !== -1;\n};\n\nconst getThumb300 = url => {\n if (!url) {\n return url;\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url\n .replace('/uploads/', '/uploads-thumb/')\n .replace('/general/', '/general300/')\n .replace('/uploads1400/', '/uploads-thumb/')\n .replace('/general1400/', '/general300/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/1400/', '/thumb300/').replace('/uploads/', '/thumb300/');\n }\n return url;\n};\n\nconst get1400 = url => {\n if (!url) {\n return url;\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url.replace('/uploads/', '/uploads1400/').replace('/general/', '/general1400/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/uploads/', '/1400/');\n }\n return url;\n};\n\nconst get300 = url => {\n if (!url) {\n return url;\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/uploads/', '/300/').replace('/1400/', '/300/');\n }\n return url;\n};\n\nconst getMimeType = url => {\n const extension = getExtension(url);\n switch (extension) {\n case 'mov':\n return 'video/quicktime';\n case 'mp4':\n return 'video/mp4';\n default:\n return 'image/jpeg';\n }\n};\n\nconst getCompressed = url => {\n if (!url || typeof url !== 'string') return '';\n return url.replace('/uploads/', '/compressed/');\n};\n\nconst imageExists = url => {\n return new Promise(resolve => {\n fetch(url, { method: 'HEAD', cache: 'no-cache' })\n .then(response => {\n resolve(response.status === 200);\n })\n .catch(() => {\n resolve(false);\n });\n });\n};\n\nconst formatTime = (hours, minutes) => {\n const period = hours >= 12 ? 'pm' : 'am';\n\n // Convert 24-hour format to 12-hour format\n const adjustedHours = hours > 12 ? hours - 12 : hours === 0 ? 12 : hours;\n\n // Ensure minutes are two digits\n const adjustedMinutes = String(minutes).padStart(2, '0');\n\n return `${adjustedHours}:${adjustedMinutes}${period}`;\n};\n\nconst minutesToString = (minutes, isTimeOfDay) => {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n\n if (isTimeOfDay) {\n return formatTime(hours, remainingMinutes);\n }\n\n const hoursString = hours > 1 ? `${hours} hours` : `${hours} hour`;\n const minutesString = remainingMinutes > 1 ? `${remainingMinutes} minutes` : `${remainingMinutes} minute`;\n\n if (hours && remainingMinutes) {\n return `${hoursString} ${minutesString}`;\n }\n if (hours) {\n return hoursString;\n }\n if (remainingMinutes) {\n return minutesString;\n }\n return '0 minutes';\n};\n\nconst getPluralS = count => {\n return count === 1 ? '' : 's';\n};\n\nconst getPluralOptions = (count, singular, plural) => {\n if (count === 1) {\n return singular;\n }\n return plural;\n};\n\nconst randomString = (name = '') => {\n return `xxxxxxxx4xxxyxxxxxxxxxxxxx${name}`.replace(/[xy]/g, c => {\n // eslint-disable-next-line\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nconst generateImageName = (name, source) => {\n let result = randomString(name);\n if (source) {\n result += `.${_.last(source.split('.'))}`;\n }\n return result;\n};\n\nconst getSite = site => {\n return site === 'plussSpace' || site === 'hq' ? Config.env.preferredSite : site;\n};\n\nconst getTakeoverThumb = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getTakeoverImage = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getImageSource = (uri, isThumb) => {\n if (uri == null) return null;\n if (isThumb) return getTakeoverThumb(uri);\n return getTakeoverImage(uri);\n};\n\nconst getFirstName = name => {\n if (_.isEmpty(name)) {\n return name;\n }\n return name.split(' ')[0];\n};\n\nconst usersToSearchResult = (contacts, excludedUserIds) => {\n let result = [];\n contacts.forEach(user => {\n result.push({\n displayName: user.displayName,\n id: user.objectID || user.id || user.ID || user.userId || user.Id,\n profilePic: user.profilePic || user.photoURL || null,\n unit: user.unit,\n });\n });\n result = _.reject(result, contact => {\n return _.includes(excludedUserIds, contact.id);\n });\n return result;\n};\n\nconst searchUsers = (source, term) => {\n if (_.isEmpty(term)) {\n return source;\n }\n return _.filter(source, user => {\n const split = user.displayName.split(' ');\n return _.some(split, part => {\n return part.toLowerCase().indexOf(term.toLowerCase()) === 0;\n });\n });\n};\n\nconst getTabSettingsFromState = state => {\n const tabSettings = (state.user && state.user.interface) || getSiteSettingFromState(state, 'TabSettings', null);\n return tabSettings;\n};\n\nconst getEnabledTabsFromState = state => {\n const tabSettings = getTabSettingsFromState(state);\n return tabSettings ? tabSettings.filter(tab => tab.isEnabled) : [];\n};\n\nconst getReactions = () => {\n return [\n {\n key: 'heart',\n icon: require('./assets/icons/reactions/heart.png'),\n },\n {\n key: 'smile',\n icon: require('./assets/icons/reactions/smile.png'),\n },\n {\n key: 'sad',\n icon: require('./assets/icons/reactions/sad.png'),\n },\n {\n key: 'party',\n icon: require('./assets/icons/reactions/party.png'),\n },\n ];\n};\n\nconst hasReacted = (reactions, userId) => {\n return _.some(reactions, r => {\n return !!r[userId];\n });\n};\n\nconst isTablet = () => {\n return Dimensions.get('screen').width > 600;\n};\n\nconst isVimeo = url => {\n if (_.isEmpty(url)) {\n return false;\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n return true;\n }\n if (url.indexOf('https://player.vimeo.com/video/') === 0) {\n return true;\n }\n};\n\nconst getVimeoEmbed = url => {\n if (_.isEmpty(url)) {\n return '';\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n const vimeoId = 'lol'; //TODO\n return `https://player.vimeo.com/video/${vimeoId}`;\n }\n return url; //TODO\n};\n\nconst isYoutube = url => {\n if (_.isUndefined(url) || _.isEmpty(url)) {\n return false;\n }\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n if (match && match[2].length === 11) {\n return true;\n }\n return false;\n};\n\nconst getYoutubeEmbed = url => {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n return `https://www.youtube.com/embed/${match[2]}?autoplay=0`;\n};\n\nconst getValidUrl = (url = '') => {\n let newUrl = decodeURIComponent(url);\n newUrl = newUrl.trim().replace(/\\s/g, '');\n\n if (/^(:\\/\\/)/.test(newUrl)) {\n return `https${newUrl}`;\n }\n if (!/^(f|ht)tps?:\\/\\//i.test(newUrl)) {\n return `https://${newUrl}`;\n }\n\n return newUrl;\n};\n\nconst getUserPreview = user => {\n return {\n id: user.uid,\n displayName: user.displayName,\n profilePic: user.profilePic || null,\n };\n};\n\nconst allowComments = canComment => {\n if (canComment === false) {\n return false;\n }\n if (canComment === true) {\n return true;\n }\n return Config.env.defaultAllowComments;\n};\n\nexport {\n TIMESTAMP_FORMAT,\n DATE_FORMAT,\n getUrl,\n getAuthTokenHeader,\n getShadowStyle,\n StatusBarHeight,\n getStatusBarHeight,\n getSiteSettingFromState,\n getValueOrDefault,\n getExtension,\n getFileName,\n isVideo,\n get300,\n getThumb300,\n get1400,\n getMimeType,\n getCompressed,\n imageExists,\n getPluralS,\n getPluralOptions,\n formatTime,\n minutesToString,\n randomString,\n generateImageName,\n getSite,\n getImageSource,\n getFirstName,\n usersToSearchResult,\n searchUsers,\n getEnabledTabsFromState,\n getReactions,\n hasReacted,\n isTablet,\n isYoutube,\n getYoutubeEmbed,\n getValidUrl,\n getUserPreview,\n allowComments,\n isVideoUrl,\n detectFaces,\n findLandmarkRange,\n getScaledOffset,\n getSiteLevelFromState,\n isTVEnabled,\n};\n"],"mappings":"AAAA,OAAOA,CAAC,MAAM,QAAQ;AACtB,SAASC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,QAAQ,cAAc;AAC9D,OAAOC,SAAS,MAAM,gBAAgB;AACtC,OAAOC,MAAM,MAAM,UAAU;AAC7B,SAASC,QAAQ,QAAQ,WAAW;AACpC,SAASC,kBAAkB,QAAQ,WAAW;;AAE9C;AACA,OAAOC,WAAW,MAAM,yBAAyB;AACjD,OAAOC,iBAAiB,MAAM,+BAA+B;AAC7D,OAAOC,eAAe,MAAM,6BAA6B;AAEzD,OAAOC,qBAAqB,MAAM,iCAAiC;AACnE,OAAOC,WAAW,MAAM,uBAAuB;AAE/C,MAAMC,gBAAgB,GAAG,eAAe;AACxC,MAAMC,WAAW,GAAG,YAAY;AAEhC,MAAMC,MAAM,GAAGA,CAACC,UAAU,EAAEC,MAAM,EAAEC,KAAK,KAAK;EAC5C,MAAM;IAAEC,UAAU;IAAEC;EAAU,CAAC,GAAGf,MAAM,CAACgB,GAAG;EAC5C,IAAIC,SAAS,GAAG,EAAE;EAClB,IAAIJ,KAAK,EAAE;IACTlB,CAAC,CAACuB,IAAI,CAACL,KAAK,CAAC,CAACM,OAAO,CAAC,CAACC,GAAG,EAAEC,KAAK,KAAK;MACpCJ,SAAS,IAAI,GAAGI,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,GAAGD,GAAG,IAAIE,kBAAkB,CAACT,KAAK,CAACO,GAAG,CAAC,CAAC,EAAE;IACnF,CAAC,CAAC;EACJ;EACA,OAAO,GAAGN,UAAU,IAAIH,UAAU,IAAII,SAAS,IAAIH,MAAM,GAAGK,SAAS,EAAE;AACzE,CAAC;AAED,MAAMM,kBAAkB,GAAGA,CAAA,KAAM;EAC/B,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtCxB,kBAAkB,CAAC,CAAC,CAACyB,IAAI,CAACC,OAAO,IAAI;MACnCH,OAAO,CAAC,UAAUG,OAAO,EAAE,CAAC;IAC9B,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAMC,cAAc,GAAGA,CAAA,KAAM;EAC3B,IAAIjC,QAAQ,CAACkC,EAAE,KAAK,KAAK,EAAE;IACzB,OAAO;MACLC,WAAW,EAAE,MAAM;MACnBC,YAAY,EAAE;QACZC,KAAK,EAAE,CAAC;QACRC,MAAM,EAAE;MACV,CAAC;MACDC,aAAa,EAAE,GAAG;MAClBC,YAAY,EAAE,CAAC;MACfC,eAAe,EAAE;IACnB,CAAC;EACH;EACA,OAAO;IACLC,WAAW,EAAErC,QAAQ;IACrBoC,eAAe,EAAE,MAAM;IACvBE,SAAS,EAAE;EACb,CAAC;AACH,CAAC;AAED,MAAMC,eAAe,GAAGC,IAAI,IAAI;EAC9B,OAAOC,kBAAkB,CAAC,CAAC,GAAGD,IAAI;AACpC,CAAC;AAED,MAAMC,kBAAkB,GAAGA,CAAA,KAAM;EAC/B,OAAO9C,QAAQ,CAACkC,EAAE,KAAK,KAAK,GAAG/B,SAAS,CAAC4C,eAAe,GAAG9C,SAAS,CAAC+C,aAAa;AACpF,CAAC;AAED,MAAMC,uBAAuB,GAAGA,CAACC,KAAK,EAAE1B,GAAG,EAAE2B,YAAY,KAAK;EAC5D,IAAID,KAAK,IAAIA,KAAK,CAACE,IAAI,IAAIF,KAAK,CAACE,IAAI,CAACC,YAAY,IAAI,CAACtD,CAAC,CAACuD,WAAW,CAACJ,KAAK,CAACE,IAAI,CAACC,YAAY,CAAC7B,GAAG,CAAC,CAAC,EAAE;IAClG,OAAO0B,KAAK,CAACE,IAAI,CAACC,YAAY,CAAC7B,GAAG,CAAC;EACrC;EACA,OAAO2B,YAAY,IAAI,IAAI;AAC7B,CAAC;AAED,MAAMI,iBAAiB,GAAGA,CAACC,KAAK,EAAEC,GAAG,KAAK;EACxC,OAAO,CAAC1D,CAAC,CAACuD,WAAW,CAACE,KAAK,CAAC,GAAGA,KAAK,GAAGC,GAAG;AAC5C,CAAC;AAED,MAAMC,YAAY,GAAGC,GAAG,IAAI;EAC1B,IAAI,CAACA,GAAG,EAAE;IACR,OAAO,IAAI;EACb;EACA,MAAMC,SAAS,GAAGD,GAAG,CAACE,KAAK,CAAC,GAAG,CAAC;EAChC,OAAOD,SAAS,CAACA,SAAS,CAACE,MAAM,GAAG,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;AACtD,CAAC;AAED,MAAMC,WAAW,GAAGA,CAACL,GAAG,EAAEM,WAAW,KAAK;EACxC,IAAI,CAACN,GAAG,EAAE;IACR,OAAO,IAAI;EACb;EACA,MAAMC,SAAS,GAAGD,GAAG,CAACE,KAAK,CAAC,GAAG,CAAC;EAChC,MAAMK,IAAI,GAAGN,SAAS,CAACA,SAAS,CAACE,MAAM,GAAG,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAC1D,IAAI,CAACE,WAAW,EAAE;IAChB,OAAOC,IAAI;EACb;EACA,OAAOA,IAAI,CAACL,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAMM,OAAO,GAAGR,GAAG,IAAI;EACrB,MAAMS,SAAS,GAAGV,YAAY,CAACC,GAAG,CAAC;EACnC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAACU,QAAQ,CAACD,SAAS,CAAC;AAC3C,CAAC;AAED,MAAME,UAAU,GAAGX,GAAG,IAAI;EACxB,MAAMY,UAAU,GAAGC,WAAW,CAACb,GAAG,CAAC;EACnC,IAAIQ,OAAO,CAACI,UAAU,CAAC,EAAE;IACvB,OAAO,IAAI;EACb;EACA,IAAIE,SAAS,CAACF,UAAU,CAAC,EAAE;IACzB,OAAO,IAAI;EACb;EACA,IAAIG,OAAO,CAACH,UAAU,CAAC,EAAE;IACvB,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd,CAAC;AAED,MAAMI,YAAY,GAAGhB,GAAG,IAAI;EAC1B,OAAOA,GAAG,CAACiB,OAAO,CAAC,6EAA6E,CAAC,KAAK,CAAC,CAAC;AAC1G,CAAC;AAED,MAAMC,WAAW,GAAGlB,GAAG,IAAI;EACzB,IAAI,CAACA,GAAG,EAAE;IACR,OAAOA,GAAG;EACZ;EACA,IAAIA,GAAG,CAACiB,OAAO,CAAC,gDAAgD,CAAC,KAAK,CAAC,CAAC,EAAE;IACxE,OAAOjB,GAAG,CAACmB,OAAO,CAAC,gDAAgD,EAAE,iCAAiC,CAAC;EACzG;EACA,IAAInB,GAAG,CAACiB,OAAO,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,EAAE;IACzD,OAAOjB,GAAG,CACPmB,OAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CACvCA,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CACpCA,OAAO,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAC3CA,OAAO,CAAC,eAAe,EAAE,cAAc,CAAC;EAC7C;EACA,IAAIH,YAAY,CAAChB,GAAG,CAAC,IAAIA,GAAG,CAACiB,OAAO,CAACxE,MAAM,CAACgB,GAAG,CAAC2D,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;IACtE,MAAMX,SAAS,GAAGV,YAAY,CAACC,GAAG,CAAC;IACnC,IAAIqB,QAAQ,GAAGrB,GAAG;IAClB,IAAIS,SAAS,KAAK,KAAK,EAAE;MACvBY,QAAQ,GAAG,GAAGrB,GAAG,CAACsB,SAAS,CAAC,CAAC,EAAEtB,GAAG,CAACG,MAAM,GAAGM,SAAS,CAACN,MAAM,CAAC,KAAK;IACpE;IACA,OAAOkB,QAAQ,CAACF,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAACA,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC;EACpF;EACA,OAAOnB,GAAG;AACZ,CAAC;AAED,MAAMuB,OAAO,GAAGvB,GAAG,IAAI;EACrB,IAAI,CAACA,GAAG,EAAE;IACR,OAAOA,GAAG;EACZ;EACA,IAAIA,GAAG,CAACiB,OAAO,CAAC,gDAAgD,CAAC,KAAK,CAAC,CAAC,EAAE;IACxE,OAAOjB,GAAG,CAACmB,OAAO,CAAC,gDAAgD,EAAE,iCAAiC,CAAC;EACzG;EACA,IAAInB,GAAG,CAACiB,OAAO,CAAC,iCAAiC,CAAC,KAAK,CAAC,CAAC,EAAE;IACzD,OAAOjB,GAAG,CAACmB,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC,CAACA,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC;EACxF;EACA,IAAIH,YAAY,CAAChB,GAAG,CAAC,IAAIA,GAAG,CAACiB,OAAO,CAACxE,MAAM,CAACgB,GAAG,CAAC2D,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;IACtE,MAAMX,SAAS,GAAGV,YAAY,CAACC,GAAG,CAAC;IACnC,IAAIqB,QAAQ,GAAGrB,GAAG;IAClB,IAAIS,SAAS,KAAK,KAAK,EAAE;MACvBY,QAAQ,GAAG,GAAGrB,GAAG,CAACsB,SAAS,CAAC,CAAC,EAAEtB,GAAG,CAACG,MAAM,GAAGM,SAAS,CAACN,MAAM,CAAC,KAAK;IACpE;IACA,OAAOkB,QAAQ,CAACF,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC;EAChD;EACA,OAAOnB,GAAG;AACZ,CAAC;AAED,MAAMwB,MAAM,GAAGxB,GAAG,IAAI;EACpB,IAAI,CAACA,GAAG,EAAE;IACR,OAAOA,GAAG;EACZ;EACA,IAAIgB,YAAY,CAAChB,GAAG,CAAC,IAAIA,GAAG,CAACiB,OAAO,CAACxE,MAAM,CAACgB,GAAG,CAAC2D,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE;IACtE,MAAMX,SAAS,GAAGV,YAAY,CAACC,GAAG,CAAC;IACnC,IAAIqB,QAAQ,GAAGrB,GAAG;IAClB,IAAIS,SAAS,KAAK,KAAK,EAAE;MACvBY,QAAQ,GAAG,GAAGrB,GAAG,CAACsB,SAAS,CAAC,CAAC,EAAEtB,GAAG,CAACG,MAAM,GAAGM,SAAS,CAACN,MAAM,CAAC,KAAK;IACpE;IACA,OAAOkB,QAAQ,CAACF,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAACA,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;EAC1E;EACA,OAAOnB,GAAG;AACZ,CAAC;AAED,MAAMyB,WAAW,GAAGzB,GAAG,IAAI;EACzB,MAAMS,SAAS,GAAGV,YAAY,CAACC,GAAG,CAAC;EACnC,QAAQS,SAAS;IACf,KAAK,KAAK;MACR,OAAO,iBAAiB;IAC1B,KAAK,KAAK;MACR,OAAO,WAAW;IACpB;MACE,OAAO,YAAY;EACvB;AACF,CAAC;AAED,MAAMiB,aAAa,GAAG1B,GAAG,IAAI;EAC3B,IAAI,CAACA,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAO,EAAE;EAC9C,OAAOA,GAAG,CAACmB,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC;AACjD,CAAC;AAED,MAAMQ,WAAW,GAAG3B,GAAG,IAAI;EACzB,OAAO,IAAI/B,OAAO,CAACC,OAAO,IAAI;IAC5B0D,KAAK,CAAC5B,GAAG,EAAE;MAAE6B,MAAM,EAAE,MAAM;MAAEC,KAAK,EAAE;IAAW,CAAC,CAAC,CAC9C1D,IAAI,CAAC2D,QAAQ,IAAI;MAChB7D,OAAO,CAAC6D,QAAQ,CAACC,MAAM,KAAK,GAAG,CAAC;IAClC,CAAC,CAAC,CACDC,KAAK,CAAC,MAAM;MACX/D,OAAO,CAAC,KAAK,CAAC;IAChB,CAAC,CAAC;EACN,CAAC,CAAC;AACJ,CAAC;AAED,MAAMgE,UAAU,GAAGA,CAACC,KAAK,EAAEC,OAAO,KAAK;EACrC,MAAMC,MAAM,GAAGF,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;;EAExC;EACA,MAAMG,aAAa,GAAGH,KAAK,GAAG,EAAE,GAAGA,KAAK,GAAG,EAAE,GAAGA,KAAK,KAAK,CAAC,GAAG,EAAE,GAAGA,KAAK;;EAExE;EACA,MAAMI,eAAe,GAAGC,MAAM,CAACJ,OAAO,CAAC,CAACK,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAExD,OAAO,GAAGH,aAAa,IAAIC,eAAe,GAAGF,MAAM,EAAE;AACvD,CAAC;AAED,MAAMK,eAAe,GAAGA,CAACN,OAAO,EAAEO,WAAW,KAAK;EAChD,MAAMR,KAAK,GAAGS,IAAI,CAACC,KAAK,CAACT,OAAO,GAAG,EAAE,CAAC;EACtC,MAAMU,gBAAgB,GAAGV,OAAO,GAAG,EAAE;EAErC,IAAIO,WAAW,EAAE;IACf,OAAOT,UAAU,CAACC,KAAK,EAAEW,gBAAgB,CAAC;EAC5C;EAEA,MAAMC,WAAW,GAAGZ,KAAK,GAAG,CAAC,GAAG,GAAGA,KAAK,QAAQ,GAAG,GAAGA,KAAK,OAAO;EAClE,MAAMa,aAAa,GAAGF,gBAAgB,GAAG,CAAC,GAAG,GAAGA,gBAAgB,UAAU,GAAG,GAAGA,gBAAgB,SAAS;EAEzG,IAAIX,KAAK,IAAIW,gBAAgB,EAAE;IAC7B,OAAO,GAAGC,WAAW,IAAIC,aAAa,EAAE;EAC1C;EACA,IAAIb,KAAK,EAAE;IACT,OAAOY,WAAW;EACpB;EACA,IAAID,gBAAgB,EAAE;IACpB,OAAOE,aAAa;EACtB;EACA,OAAO,WAAW;AACpB,CAAC;AAED,MAAMC,UAAU,GAAGC,KAAK,IAAI;EAC1B,OAAOA,KAAK,KAAK,CAAC,GAAG,EAAE,GAAG,GAAG;AAC/B,CAAC;AAED,MAAMC,gBAAgB,GAAGA,CAACD,KAAK,EAAEE,QAAQ,EAAEC,MAAM,KAAK;EACpD,IAAIH,KAAK,KAAK,CAAC,EAAE;IACf,OAAOE,QAAQ;EACjB;EACA,OAAOC,MAAM;AACf,CAAC;AAED,MAAMC,YAAY,GAAGA,CAAC/C,IAAI,GAAG,EAAE,KAAK;EAClC,OAAO,6BAA6BA,IAAI,EAAE,CAACY,OAAO,CAAC,OAAO,EAAEoC,CAAC,IAAI;IAC/D;IACA,IAAIC,CAAC,GAAIZ,IAAI,CAACa,MAAM,CAAC,CAAC,GAAG,EAAE,GAAI,CAAC;MAC9BC,CAAC,GAAGH,CAAC,KAAK,GAAG,GAAGC,CAAC,GAAIA,CAAC,GAAG,GAAG,GAAI,GAAG;IACrC,OAAOE,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC;EACvB,CAAC,CAAC;AACJ,CAAC;AAED,MAAMC,iBAAiB,GAAGA,CAACrD,IAAI,EAAEsD,MAAM,KAAK;EAC1C,IAAIC,MAAM,GAAGR,YAAY,CAAC/C,IAAI,CAAC;EAC/B,IAAIsD,MAAM,EAAE;IACVC,MAAM,IAAI,IAAI1H,CAAC,CAAC2H,IAAI,CAACF,MAAM,CAAC3D,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;EAC3C;EACA,OAAO4D,MAAM;AACf,CAAC;AAED,MAAME,OAAO,GAAGC,IAAI,IAAI;EACtB,OAAOA,IAAI,KAAK,YAAY,IAAIA,IAAI,KAAK,IAAI,GAAGxH,MAAM,CAACgB,GAAG,CAACyG,aAAa,GAAGD,IAAI;AACjF,CAAC;AAED,MAAME,gBAAgB,GAAGC,GAAG,IAAI;EAC9B,MAAMC,QAAQ,GAAGD,GAAG,CAAClE,KAAK,CAAC,GAAG,CAAC,CAACoE,GAAG,CAAC,CAAC;EACrC,QAAQD,QAAQ;IACd;MACE,OAAO;QAAED;MAAI,CAAC;EAClB;AACF,CAAC;AAED,MAAMG,gBAAgB,GAAGH,GAAG,IAAI;EAC9B,MAAMC,QAAQ,GAAGD,GAAG,CAAClE,KAAK,CAAC,GAAG,CAAC,CAACoE,GAAG,CAAC,CAAC;EACrC,QAAQD,QAAQ;IACd;MACE,OAAO;QAAED;MAAI,CAAC;EAClB;AACF,CAAC;AAED,MAAMI,cAAc,GAAGA,CAACJ,GAAG,EAAEK,OAAO,KAAK;EACvC,IAAIL,GAAG,IAAI,IAAI,EAAE,OAAO,IAAI;EAC5B,IAAIK,OAAO,EAAE,OAAON,gBAAgB,CAACC,GAAG,CAAC;EACzC,OAAOG,gBAAgB,CAACH,GAAG,CAAC;AAC9B,CAAC;AAED,MAAMM,YAAY,GAAGnE,IAAI,IAAI;EAC3B,IAAInE,CAAC,CAACuI,OAAO,CAACpE,IAAI,CAAC,EAAE;IACnB,OAAOA,IAAI;EACb;EACA,OAAOA,IAAI,CAACL,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM0E,mBAAmB,GAAGA,CAACC,QAAQ,EAAEC,eAAe,KAAK;EACzD,IAAIhB,MAAM,GAAG,EAAE;EACfe,QAAQ,CAACjH,OAAO,CAAC6B,IAAI,IAAI;IACvBqE,MAAM,CAACiB,IAAI,CAAC;MACVC,WAAW,EAAEvF,IAAI,CAACuF,WAAW;MAC7BC,EAAE,EAAExF,IAAI,CAACyF,QAAQ,IAAIzF,IAAI,CAACwF,EAAE,IAAIxF,IAAI,CAAC0F,EAAE,IAAI1F,IAAI,CAAC2F,MAAM,IAAI3F,IAAI,CAAC4F,EAAE;MACjEC,UAAU,EAAE7F,IAAI,CAAC6F,UAAU,IAAI7F,IAAI,CAAC8F,QAAQ,IAAI,IAAI;MACpDC,IAAI,EAAE/F,IAAI,CAAC+F;IACb,CAAC,CAAC;EACJ,CAAC,CAAC;EACF1B,MAAM,GAAG1H,CAAC,CAAC+B,MAAM,CAAC2F,MAAM,EAAE2B,OAAO,IAAI;IACnC,OAAOrJ,CAAC,CAACsE,QAAQ,CAACoE,eAAe,EAAEW,OAAO,CAACR,EAAE,CAAC;EAChD,CAAC,CAAC;EACF,OAAOnB,MAAM;AACf,CAAC;AAED,MAAM4B,WAAW,GAAGA,CAAC7B,MAAM,EAAE8B,IAAI,KAAK;EACpC,IAAIvJ,CAAC,CAACuI,OAAO,CAACgB,IAAI,CAAC,EAAE;IACnB,OAAO9B,MAAM;EACf;EACA,OAAOzH,CAAC,CAACwJ,MAAM,CAAC/B,MAAM,EAAEpE,IAAI,IAAI;IAC9B,MAAMS,KAAK,GAAGT,IAAI,CAACuF,WAAW,CAAC9E,KAAK,CAAC,GAAG,CAAC;IACzC,OAAO9D,CAAC,CAACyJ,IAAI,CAAC3F,KAAK,EAAE4F,IAAI,IAAI;MAC3B,OAAOA,IAAI,CAAC1F,WAAW,CAAC,CAAC,CAACa,OAAO,CAAC0E,IAAI,CAACvF,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7D,CAAC,CAAC;EACJ,CAAC,CAAC;AACJ,CAAC;AAED,MAAM2F,uBAAuB,GAAGxG,KAAK,IAAI;EACvC,MAAMyG,WAAW,GAAIzG,KAAK,CAACE,IAAI,IAAIF,KAAK,CAACE,IAAI,CAACwG,SAAS,IAAK3G,uBAAuB,CAACC,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC;EAC/G,OAAOyG,WAAW;AACpB,CAAC;AAED,MAAME,uBAAuB,GAAG3G,KAAK,IAAI;EACvC,MAAMyG,WAAW,GAAGD,uBAAuB,CAACxG,KAAK,CAAC;EAClD,OAAOyG,WAAW,GAAGA,WAAW,CAACJ,MAAM,CAACO,GAAG,IAAIA,GAAG,CAACC,SAAS,CAAC,GAAG,EAAE;AACpE,CAAC;AAED,MAAMC,YAAY,GAAGA,CAAA,KAAM;EACzB,OAAO,CACL;IACExI,GAAG,EAAE,OAAO;IACZyI,IAAI,EAAEC,OAAO,CAAC,oCAAoC;EACpD,CAAC,EACD;IACE1I,GAAG,EAAE,OAAO;IACZyI,IAAI,EAAEC,OAAO,CAAC,oCAAoC;EACpD,CAAC,EACD;IACE1I,GAAG,EAAE,KAAK;IACVyI,IAAI,EAAEC,OAAO,CAAC,kCAAkC;EAClD,CAAC,EACD;IACE1I,GAAG,EAAE,OAAO;IACZyI,IAAI,EAAEC,OAAO,CAAC,oCAAoC;EACpD,CAAC,CACF;AACH,CAAC;AAED,MAAMC,UAAU,GAAGA,CAACC,SAAS,EAAErB,MAAM,KAAK;EACxC,OAAOhJ,CAAC,CAACyJ,IAAI,CAACY,SAAS,EAAEjD,CAAC,IAAI;IAC5B,OAAO,CAAC,CAACA,CAAC,CAAC4B,MAAM,CAAC;EACpB,CAAC,CAAC;AACJ,CAAC;AAED,MAAMsB,QAAQ,GAAGA,CAAA,KAAM;EACrB,OAAOnK,UAAU,CAACoK,GAAG,CAAC,QAAQ,CAAC,CAACjI,KAAK,GAAG,GAAG;AAC7C,CAAC;AAED,MAAMqC,OAAO,GAAGf,GAAG,IAAI;EACrB,IAAI5D,CAAC,CAACuI,OAAO,CAAC3E,GAAG,CAAC,EAAE;IAClB,OAAO,KAAK;EACd;EACA,IAAIA,GAAG,CAACiB,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;IAC3C,OAAO,IAAI;EACb;EACA,IAAIjB,GAAG,CAACiB,OAAO,CAAC,iCAAiC,CAAC,KAAK,CAAC,EAAE;IACxD,OAAO,IAAI;EACb;AACF,CAAC;AAED,MAAM2F,aAAa,GAAG5G,GAAG,IAAI;EAC3B,IAAI5D,CAAC,CAACuI,OAAO,CAAC3E,GAAG,CAAC,EAAE;IAClB,OAAO,EAAE;EACX;EACA,IAAIA,GAAG,CAACiB,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;IAC3C,MAAM4F,OAAO,GAAG,KAAK,CAAC,CAAC;IACvB,OAAO,kCAAkCA,OAAO,EAAE;EACpD;EACA,OAAO7G,GAAG,CAAC,CAAC;AACd,CAAC;AAED,MAAMc,SAAS,GAAGd,GAAG,IAAI;EACvB,IAAI5D,CAAC,CAACuD,WAAW,CAACK,GAAG,CAAC,IAAI5D,CAAC,CAACuI,OAAO,CAAC3E,GAAG,CAAC,EAAE;IACxC,OAAO,KAAK;EACd;EACA,MAAM8G,MAAM,GAAG,sEAAsE;EACrF,MAAMC,KAAK,GAAG/G,GAAG,CAAC+G,KAAK,CAACD,MAAM,CAAC;EAC/B,IAAIC,KAAK,IAAIA,KAAK,CAAC,CAAC,CAAC,CAAC5G,MAAM,KAAK,EAAE,EAAE;IACnC,OAAO,IAAI;EACb;EACA,OAAO,KAAK;AACd,CAAC;AAED,MAAM6G,eAAe,GAAGhH,GAAG,IAAI;EAC7B,MAAM8G,MAAM,GAAG,sEAAsE;EACrF,MAAMC,KAAK,GAAG/G,GAAG,CAAC+G,KAAK,CAACD,MAAM,CAAC;EAC/B,OAAO,iCAAiCC,KAAK,CAAC,CAAC,CAAC,aAAa;AAC/D,CAAC;AAED,MAAMlG,WAAW,GAAGA,CAACb,GAAG,GAAG,EAAE,KAAK;EAChC,IAAIiH,MAAM,GAAGC,kBAAkB,CAAClH,GAAG,CAAC;EACpCiH,MAAM,GAAGA,MAAM,CAACE,IAAI,CAAC,CAAC,CAAChG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;EAEzC,IAAI,UAAU,CAACiG,IAAI,CAACH,MAAM,CAAC,EAAE;IAC3B,OAAO,QAAQA,MAAM,EAAE;EACzB;EACA,IAAI,CAAC,mBAAmB,CAACG,IAAI,CAACH,MAAM,CAAC,EAAE;IACrC,OAAO,WAAWA,MAAM,EAAE;EAC5B;EAEA,OAAOA,MAAM;AACf,CAAC;AAED,MAAMI,cAAc,GAAG5H,IAAI,IAAI;EAC7B,OAAO;IACLwF,EAAE,EAAExF,IAAI,CAAC6H,GAAG;IACZtC,WAAW,EAAEvF,IAAI,CAACuF,WAAW;IAC7BM,UAAU,EAAE7F,IAAI,CAAC6F,UAAU,IAAI;EACjC,CAAC;AACH,CAAC;AAED,MAAMiC,aAAa,GAAGC,UAAU,IAAI;EAClC,IAAIA,UAAU,KAAK,KAAK,EAAE;IACxB,OAAO,KAAK;EACd;EACA,IAAIA,UAAU,KAAK,IAAI,EAAE;IACvB,OAAO,IAAI;EACb;EACA,OAAO/K,MAAM,CAACgB,GAAG,CAACgK,oBAAoB;AACxC,CAAC;AAED,SACExK,gBAAgB,EAChBC,WAAW,EACXC,MAAM,EACNa,kBAAkB,EAClBM,cAAc,EACdW,eAAe,EACfE,kBAAkB,EAClBG,uBAAuB,EACvBM,iBAAiB,EACjBG,YAAY,EACZM,WAAW,EACXG,OAAO,EACPgB,MAAM,EACNN,WAAW,EACXK,OAAO,EACPE,WAAW,EACXC,aAAa,EACbC,WAAW,EACXsB,UAAU,EACVE,gBAAgB,EAChBjB,UAAU,EACVQ,eAAe,EACfY,YAAY,EACZM,iBAAiB,EACjBI,OAAO,EACPQ,cAAc,EACdE,YAAY,EACZE,mBAAmB,EACnBc,WAAW,EACXQ,uBAAuB,EACvBG,YAAY,EACZG,UAAU,EACVE,QAAQ,EACR5F,SAAS,EACTkG,eAAe,EACfnG,WAAW,EACXwG,cAAc,EACdE,aAAa,EACb5G,UAAU,EACV/D,WAAW,EACXC,iBAAiB,EACjBC,eAAe,EACfC,qBAAqB,EACrBC,WAAW","ignoreList":[]}
1
+ {"version":3,"names":["_","Platform","StatusBar","Dimensions","Constants","Config","LINEGREY","getSessionTokenAWS","detectFaces","findLandmarkRange","getScaledOffset","getSiteLevelFromState","isTVEnabled","TIMESTAMP_FORMAT","DATE_FORMAT","getUrl","baseAction","action","query","baseAPIUrl","baseStage","env","queryPart","keys","forEach","key","index","encodeURIComponent","getAuthTokenHeader","Promise","resolve","reject","then","idToken","getShadowStyle","OS","shadowColor","shadowOffset","width","height","shadowOpacity","shadowRadius","backgroundColor","borderColor","elevation","StatusBarHeight","size","getStatusBarHeight","statusBarHeight","currentHeight","getSiteSettingFromState","state","defaultValue","user","siteSettings","isUndefined","getValueOrDefault","value","def","getExtension","url","fileSplit","split","length","toLowerCase","getFileName","noExtension","name","isVideo","extension","includes","isVideoUrl","urlToCheck","getValidUrl","isYoutube","isVimeo","isStockImage","indexOf","getThumb300","replace","baseUploadsUrl","urlToUse","substring","get1400","get300","getMimeType","getCompressed","imageExists","fetch","method","cache","response","status","catch","formatTime","hours","minutes","period","adjustedHours","adjustedMinutes","String","padStart","minutesToString","isTimeOfDay","Math","floor","remainingMinutes","hoursString","minutesString","getPluralS","count","getPluralOptions","singular","plural","randomString","c","r","random","v","toString","generateImageName","source","result","last","getSite","site","preferredSite","getTakeoverThumb","uri","filename","pop","getTakeoverImage","getImageSource","isThumb","getFirstName","isEmpty","usersToSearchResult","contacts","excludedUserIds","push","displayName","id","objectID","ID","userId","Id","profilePic","photoURL","unit","contact","searchUsers","term","filter","some","part","getTabSettingsFromState","tabSettings","interface","getEnabledTabsFromState","tab","isEnabled","getReactions","icon","require","hasReacted","reactions","isTablet","get","getVimeoEmbed","vimeoId","regExp","match","getYoutubeEmbed","newUrl","decodeURIComponent","trim","test","getUserPreview","uid","allowComments","canComment","defaultAllowComments"],"sources":["helper.js"],"sourcesContent":["import _ from 'lodash';\nimport { Platform, StatusBar, Dimensions } from 'react-native';\nimport Constants from 'expo-constants';\nimport Config from './config';\nimport { LINEGREY } from './colours';\nimport { getSessionTokenAWS } from './session';\n\n// seperated files to export\nimport detectFaces from './js/images/detectFaces';\nimport findLandmarkRange from './js/images/findLandmarkRange';\nimport getScaledOffset from './js/images/getScaledOffset';\n\nimport getSiteLevelFromState from './js/site/getSiteLevelFromState';\nimport isTVEnabled from './js/site/isTVEnabled';\n\nconst TIMESTAMP_FORMAT = 'D MMM • h:mma';\nconst DATE_FORMAT = 'D MMM YYYY';\n\nconst getUrl = (baseAction, action, query) => {\n const { baseAPIUrl, baseStage } = Config.env;\n let queryPart = '';\n if (query) {\n _.keys(query).forEach((key, index) => {\n queryPart += `${index === 0 ? '?' : '&'}${key}=${encodeURIComponent(query[key])}`;\n });\n }\n return `${baseAPIUrl}/${baseAction}-${baseStage}/${action}${queryPart}`;\n};\n\nconst getAuthTokenHeader = () => {\n return new Promise((resolve, reject) => {\n getSessionTokenAWS().then(idToken => {\n resolve(`Bearer ${idToken}`);\n });\n });\n};\n\nconst getShadowStyle = () => {\n if (Platform.OS === 'ios') {\n return {\n shadowColor: '#000',\n shadowOffset: {\n width: 0,\n height: 1,\n },\n shadowOpacity: 0.1,\n shadowRadius: 3,\n backgroundColor: '#fff',\n };\n }\n return {\n borderColor: LINEGREY,\n backgroundColor: '#fff',\n elevation: 8,\n };\n};\n\nconst StatusBarHeight = size => {\n return getStatusBarHeight() + size;\n};\n\nconst getStatusBarHeight = () => {\n return Platform.OS === 'ios' ? Constants.statusBarHeight : StatusBar.currentHeight;\n};\n\nconst getSiteSettingFromState = (state, key, defaultValue) => {\n if (state && state.user && state.user.siteSettings && !_.isUndefined(state.user.siteSettings[key])) {\n return state.user.siteSettings[key];\n }\n return defaultValue || null;\n};\n\nconst getValueOrDefault = (value, def) => {\n return !_.isUndefined(value) ? value : def;\n};\n\nconst getExtension = url => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('.');\n return fileSplit[fileSplit.length - 1].toLowerCase();\n};\n\nconst getFileName = (url, noExtension) => {\n if (!url) {\n return null;\n }\n const fileSplit = url.split('/');\n const name = fileSplit[fileSplit.length - 1].toLowerCase();\n if (!noExtension) {\n return name;\n }\n return name.split('.')[0];\n};\n\nconst isVideo = url => {\n const extension = getExtension(url);\n return ['mov', 'mp4'].includes(extension);\n};\n\nconst isVideoUrl = url => {\n const urlToCheck = getValidUrl(url);\n if (isVideo(urlToCheck)) {\n return true;\n }\n if (isYoutube(urlToCheck)) {\n return true;\n }\n if (isVimeo(urlToCheck)) {\n return true;\n }\n return false;\n};\n\nconst isStockImage = url => {\n return url.indexOf('https://pluss60-dev-uploads.s3.ap-southeast-2.amazonaws.com/uploads/library') !== -1;\n};\n\nconst getThumb300 = url => {\n if (!url) {\n return url;\n }\n if (isVideo(url)) {\n return 'https://pluss60-demo-uploads.s3.ap-southeast-2.amazonaws.com/uploads/users/ap-southeast-2:97769b56-25ec-41c0-a73c-6c2c4140f629/public/9d0bbec64614b1ed654a03f7e7/movie.jpg';\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url\n .replace('/uploads/', '/uploads-thumb/')\n .replace('/general/', '/general300/')\n .replace('/uploads1400/', '/uploads-thumb/')\n .replace('/general1400/', '/general300/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/1400/', '/thumb300/').replace('/uploads/', '/thumb300/');\n }\n return url;\n};\n\nconst get1400 = url => {\n if (!url) {\n return url;\n }\n if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {\n return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');\n }\n if (url.indexOf('https://plusscdn.azureedge.net/') !== -1) {\n return url.replace('/uploads/', '/uploads1400/').replace('/general/', '/general1400/');\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/uploads/', '/1400/');\n }\n return url;\n};\n\nconst get300 = url => {\n if (!url) {\n return url;\n }\n if (isStockImage(url) || url.indexOf(Config.env.baseUploadsUrl) !== -1) {\n const extension = getExtension(url);\n let urlToUse = url;\n if (extension !== 'jpg') {\n urlToUse = `${url.substring(0, url.length - extension.length)}jpg`;\n }\n return urlToUse.replace('/uploads/', '/300/').replace('/1400/', '/300/');\n }\n return url;\n};\n\nconst getMimeType = url => {\n const extension = getExtension(url);\n switch (extension) {\n case 'mov':\n return 'video/quicktime';\n case 'mp4':\n return 'video/mp4';\n default:\n return 'image/jpeg';\n }\n};\n\nconst getCompressed = url => {\n if (!url || typeof url !== 'string') return '';\n return url.replace('/uploads/', '/compressed/');\n};\n\nconst imageExists = url => {\n return new Promise(resolve => {\n fetch(url, { method: 'HEAD', cache: 'no-cache' })\n .then(response => {\n resolve(response.status === 200);\n })\n .catch(() => {\n resolve(false);\n });\n });\n};\n\nconst formatTime = (hours, minutes) => {\n const period = hours >= 12 ? 'pm' : 'am';\n\n // Convert 24-hour format to 12-hour format\n const adjustedHours = hours > 12 ? hours - 12 : hours === 0 ? 12 : hours;\n\n // Ensure minutes are two digits\n const adjustedMinutes = String(minutes).padStart(2, '0');\n\n return `${adjustedHours}:${adjustedMinutes}${period}`;\n};\n\nconst minutesToString = (minutes, isTimeOfDay) => {\n const hours = Math.floor(minutes / 60);\n const remainingMinutes = minutes % 60;\n\n if (isTimeOfDay) {\n return formatTime(hours, remainingMinutes);\n }\n\n const hoursString = hours > 1 ? `${hours} hours` : `${hours} hour`;\n const minutesString = remainingMinutes > 1 ? `${remainingMinutes} minutes` : `${remainingMinutes} minute`;\n\n if (hours && remainingMinutes) {\n return `${hoursString} ${minutesString}`;\n }\n if (hours) {\n return hoursString;\n }\n if (remainingMinutes) {\n return minutesString;\n }\n return '0 minutes';\n};\n\nconst getPluralS = count => {\n return count === 1 ? '' : 's';\n};\n\nconst getPluralOptions = (count, singular, plural) => {\n if (count === 1) {\n return singular;\n }\n return plural;\n};\n\nconst randomString = (name = '') => {\n return `xxxxxxxx4xxxyxxxxxxxxxxxxx${name}`.replace(/[xy]/g, c => {\n // eslint-disable-next-line\n var r = (Math.random() * 16) | 0,\n v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nconst generateImageName = (name, source) => {\n let result = randomString(name);\n if (source) {\n result += `.${_.last(source.split('.'))}`;\n }\n return result;\n};\n\nconst getSite = site => {\n return site === 'plussSpace' || site === 'hq' ? Config.env.preferredSite : site;\n};\n\nconst getTakeoverThumb = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getTakeoverImage = uri => {\n const filename = uri.split('/').pop();\n switch (filename) {\n default:\n return { uri };\n }\n};\n\nconst getImageSource = (uri, isThumb) => {\n if (uri == null) return null;\n if (isThumb) return getTakeoverThumb(uri);\n return getTakeoverImage(uri);\n};\n\nconst getFirstName = name => {\n if (_.isEmpty(name)) {\n return name;\n }\n return name.split(' ')[0];\n};\n\nconst usersToSearchResult = (contacts, excludedUserIds) => {\n let result = [];\n contacts.forEach(user => {\n result.push({\n displayName: user.displayName,\n id: user.objectID || user.id || user.ID || user.userId || user.Id,\n profilePic: user.profilePic || user.photoURL || null,\n unit: user.unit,\n });\n });\n result = _.reject(result, contact => {\n return _.includes(excludedUserIds, contact.id);\n });\n return result;\n};\n\nconst searchUsers = (source, term) => {\n if (_.isEmpty(term)) {\n return source;\n }\n return _.filter(source, user => {\n const split = user.displayName.split(' ');\n return _.some(split, part => {\n return part.toLowerCase().indexOf(term.toLowerCase()) === 0;\n });\n });\n};\n\nconst getTabSettingsFromState = state => {\n const tabSettings = (state.user && state.user.interface) || getSiteSettingFromState(state, 'TabSettings', null);\n return tabSettings;\n};\n\nconst getEnabledTabsFromState = state => {\n const tabSettings = getTabSettingsFromState(state);\n return tabSettings ? tabSettings.filter(tab => tab.isEnabled) : [];\n};\n\nconst getReactions = () => {\n return [\n {\n key: 'heart',\n icon: require('./assets/icons/reactions/heart.png'),\n },\n {\n key: 'smile',\n icon: require('./assets/icons/reactions/smile.png'),\n },\n {\n key: 'sad',\n icon: require('./assets/icons/reactions/sad.png'),\n },\n {\n key: 'party',\n icon: require('./assets/icons/reactions/party.png'),\n },\n ];\n};\n\nconst hasReacted = (reactions, userId) => {\n return _.some(reactions, r => {\n return !!r[userId];\n });\n};\n\nconst isTablet = () => {\n return Dimensions.get('screen').width > 600;\n};\n\nconst isVimeo = url => {\n if (_.isEmpty(url)) {\n return false;\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n return true;\n }\n if (url.indexOf('https://player.vimeo.com/video/') === 0) {\n return true;\n }\n};\n\nconst getVimeoEmbed = url => {\n if (_.isEmpty(url)) {\n return '';\n }\n if (url.indexOf('https://vimeo.com/') === 0) {\n const vimeoId = 'lol'; //TODO\n return `https://player.vimeo.com/video/${vimeoId}`;\n }\n return url; //TODO\n};\n\nconst isYoutube = url => {\n if (_.isUndefined(url) || _.isEmpty(url)) {\n return false;\n }\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n if (match && match[2].length === 11) {\n return true;\n }\n return false;\n};\n\nconst getYoutubeEmbed = url => {\n const regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=|\\?v=)([^#\\&\\?]*).*/;\n const match = url.match(regExp);\n return `https://www.youtube.com/embed/${match[2]}?autoplay=0`;\n};\n\nconst getValidUrl = (url = '') => {\n let newUrl = decodeURIComponent(url);\n newUrl = newUrl.trim().replace(/\\s/g, '');\n\n if (/^(:\\/\\/)/.test(newUrl)) {\n return `https${newUrl}`;\n }\n if (!/^(f|ht)tps?:\\/\\//i.test(newUrl)) {\n return `https://${newUrl}`;\n }\n\n return newUrl;\n};\n\nconst getUserPreview = user => {\n return {\n id: user.uid,\n displayName: user.displayName,\n profilePic: user.profilePic || null,\n };\n};\n\nconst allowComments = canComment => {\n if (canComment === false) {\n return false;\n }\n if (canComment === true) {\n return true;\n }\n return Config.env.defaultAllowComments;\n};\n\nexport {\n TIMESTAMP_FORMAT,\n DATE_FORMAT,\n getUrl,\n getAuthTokenHeader,\n getShadowStyle,\n StatusBarHeight,\n getStatusBarHeight,\n getSiteSettingFromState,\n getValueOrDefault,\n getExtension,\n getFileName,\n isVideo,\n get300,\n getThumb300,\n get1400,\n getMimeType,\n getCompressed,\n imageExists,\n getPluralS,\n getPluralOptions,\n formatTime,\n minutesToString,\n randomString,\n generateImageName,\n getSite,\n getImageSource,\n getFirstName,\n usersToSearchResult,\n searchUsers,\n getEnabledTabsFromState,\n getReactions,\n hasReacted,\n isTablet,\n isYoutube,\n getYoutubeEmbed,\n getValidUrl,\n getUserPreview,\n allowComments,\n isVideoUrl,\n detectFaces,\n findLandmarkRange,\n getScaledOffset,\n getSiteLevelFromState,\n isTVEnabled,\n};\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-core-app",
3
- "version": "6.0.7-auth.0",
3
+ "version": "6.0.8-auth.0",
4
4
  "description": "Core extension package for Pluss Communities platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
@@ -209,17 +209,19 @@ class ImageUploader extends Component {
209
209
  try {
210
210
  const fileType = uri.substring(uri.lastIndexOf('.') + 1);
211
211
  const fileName = `${getValueOrDefault(this.props.fileName, DEFAULT_VIDEO_NAME)}.${fileType}`;
212
- uploadUri = await fileActions.getPresignedUrl(fileName);
212
+ const blob = await fileActions.imageToBlob(uri);
213
+ const presignedUriRes = await fileActions.getPresignedUrl(fileName, blob.type);
214
+ uploadUri = presignedUriRes.key;
213
215
 
214
216
  this.props.onUploadStarted(uploadUri, uri);
215
217
  this.hideUploadMenu();
216
218
 
217
- const res = await fileActions.uploadUserMediaWithProgress(uri, uploadUri, progress => {
219
+ const uploadResult = await fileActions.uploadUserMediaWithProgress(blob, presignedUriRes.url, progress => {
218
220
  if (this.props.onUploadProgress) this.props.onUploadProgress(progress);
219
221
  });
220
222
 
221
- this.props.onUploadSuccess(Config.env.baseUploadsUrl + res.key, uploadUri);
222
- console.log('upload success', Config.env.baseUploadsUrl + res.key);
223
+ this.props.onUploadSuccess(Config.env.baseUploadsUrl + uploadUri, uploadUri);
224
+ console.log('upload success', Config.env.baseUploadsUrl + uploadUri);
223
225
  } catch (e) {
224
226
  console.log('handleVideoPicked error', e);
225
227
  this.props.onUploadFailed(uploadUri);
@@ -379,6 +381,7 @@ class ImageUploader extends Component {
379
381
  } else {
380
382
  if (mediaSelected[0].mediaType === MediaLibrary.MediaType.video) {
381
383
  const uri = mediaSelected[0].localUri || mediaSelected[0].uri;
384
+ console.log('picked a video');
382
385
  this.handleVideoPicked(uri);
383
386
  } else {
384
387
  this.handleMultiImagePicked(mediaSelected);
package/src/helper.js CHANGED
@@ -121,6 +121,9 @@ const getThumb300 = url => {
121
121
  if (!url) {
122
122
  return url;
123
123
  }
124
+ if (isVideo(url)) {
125
+ return 'https://pluss60-demo-uploads.s3.ap-southeast-2.amazonaws.com/uploads/users/ap-southeast-2:97769b56-25ec-41c0-a73c-6c2c4140f629/public/9d0bbec64614b1ed654a03f7e7/movie.jpg';
126
+ }
124
127
  if (url.indexOf('https://plussprdstorage.blob.core.windows.net/') !== -1) {
125
128
  return url.replace('https://plussprdstorage.blob.core.windows.net/', 'https://plusscdn.azureedge.net/');
126
129
  }