@plusscommunities/pluss-core-app 4.0.0 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -256,6 +256,9 @@ export default class ImageBrowser extends React.Component {
|
|
|
256
256
|
}
|
|
257
257
|
}
|
|
258
258
|
renderImages() {
|
|
259
|
+
if (_.isEmpty(this.state.photos) && !this.state.isEmpty) {
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
259
262
|
return /*#__PURE__*/React.createElement(FlatList, {
|
|
260
263
|
data: this.state.photos,
|
|
261
264
|
numColumns: this.state.numColumns,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","FlatList","Dimensions","ActivityIndicator","Platform","_","ScreenOrientation","MediaLibrary","Camera","isVideo","ImageTile","width","get","defaultSelectionLimit","defaultLoadCount","ImageBrowser","Component","constructor","props","_this","this","_defineProperty","isNil","remoteAlbums","status","camera","requestCameraPermissionsAsync","cameraRoll","requestPermissionsAsync","setState","hasCameraPermission","hasCameraRollPermission","_ref","orientationInfo","removeOrientationChangeListeners","addOrientationChangeListener","onOrientationChange","numColumns","getNumColumns","orientation","Orientation","PORTRAIT_UP","PORTRAIT_DOWN","state","selected","find","uri","photo","photos","mediaType","MediaType","video","item","videoSelected","isVideoSelected","newSelected","length","selectionLimit","max","indexOf","isFull","checkSelection","push","deleteIndex","splice","onChange","prepareCallback","reset","arguments","undefined","allowVideo","loadCount","album","isLocal","params","first","sortBy","OS","after","hasNextPage","getAssetsAsync","then","processPhotos","_selectedAlbum$images","selectedAlbum","id","images","ordered","orderBy","map","image","isEmpty","data","totalCount","endCursor","uris","assets","index","itemWidth","offset","_ref2","selectedIndex","createElement","selectedItemNumber","selectImage","renderSelectedComponent","style","itemStyle","height","itemHeight","isRemote","preloaderComponent","size","emptyStateComponent","componentDidMount","getPermissionsAsync","getOrientationAsync","getPhotos","componentDidUpdate","prevProps","isEqual","selectedPhotos","p","assetsInfo","Promise","all","getAssetInfoAsync","callback","renderImages","key","renderItem","renderImageTile","keyExtractor","onEndReached","onEndReachedThreshold","ListEmptyComponent","renderEmptyState","renderPreloader","initialNumToRender","getItemLayout","render","noCameraPermissionComponent","styles","container","create","flex"],"sources":["ImageBrowser.js"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, View, FlatList, Dimensions, ActivityIndicator, Platform } from 'react-native';\nimport _ from 'lodash';\nimport * as ScreenOrientation from 'expo-screen-orientation';\nimport * as MediaLibrary from 'expo-media-library';\nimport { Camera } from 'expo-camera';\nimport { isVideo } from '../../helper';\nimport ImageTile from './ImageTile';\n\nconst { width } = Dimensions.get('window');\nconst defaultSelectionLimit = 10;\nconst defaultLoadCount = 50;\n\nexport default class ImageBrowser extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hasCameraPermission: null,\n hasCameraRollPermission: null,\n numColumns: null,\n photos: [],\n selected: [],\n isEmpty: false,\n after: null,\n hasNextPage: true,\n };\n }\n\n async componentDidMount() {\n if (this.isLocal()) await this.getPermissionsAsync();\n\n ScreenOrientation.addOrientationChangeListener(this.onOrientationChange);\n const orientation = await ScreenOrientation.getOrientationAsync();\n const numColumns = this.getNumColumns(orientation);\n this.setState({ numColumns }, () => {\n this.getPhotos();\n });\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.album !== this.props.album) this.getPhotos(true);\n if (!_.isEqual(prevProps.selected, this.props.selected)) {\n this.setState({ selected: this.props.selected });\n }\n }\n\n isLocal = () => {\n return _.isNil(this.props.remoteAlbums);\n };\n\n getPermissionsAsync = async () => {\n const { status: camera } = await Camera.requestCameraPermissionsAsync();\n const { status: cameraRoll } = await MediaLibrary.requestPermissionsAsync();\n this.setState({\n hasCameraPermission: camera === 'granted',\n hasCameraRollPermission: cameraRoll === 'granted',\n });\n };\n\n onOrientationChange = ({ orientationInfo }) => {\n ScreenOrientation.removeOrientationChangeListeners();\n ScreenOrientation.addOrientationChangeListener(this.onOrientationChange);\n const numColumns = this.getNumColumns(orientationInfo.orientation);\n this.setState({ numColumns });\n };\n\n getNumColumns = orientation =>\n orientation === ScreenOrientation.Orientation.PORTRAIT_UP || orientation === ScreenOrientation.Orientation.PORTRAIT_DOWN ? 4 : 7;\n\n isVideoSelected = () => {\n return this.state.selected.find(uri => {\n const photo = this.state.photos.find(photo => photo.uri === uri);\n return photo && photo.mediaType === MediaLibrary.MediaType.video;\n });\n };\n\n checkSelection = item => {\n let videoSelected = this.isVideoSelected();\n let newSelected = [...this.state.selected];\n\n // Check video/photo selection\n if (item.mediaType === MediaLibrary.MediaType.video) {\n if (videoSelected && videoSelected !== item.uri) {\n // If different video is already selected, reset\n videoSelected = null;\n newSelected = [];\n } else if (!videoSelected && newSelected.length > 0) {\n // If photos selected, don't allow selecting video\n videoSelected = null;\n newSelected = [];\n }\n // Toggle video selected\n videoSelected = videoSelected !== item.uri ? item.uri : null;\n } else if (videoSelected) {\n // If video selected, reset\n videoSelected = null;\n newSelected = [];\n }\n\n // Check multiple selection\n const selectionLimit = this.props.max || defaultSelectionLimit;\n if (selectionLimit && selectionLimit > 1) {\n // Limit selection\n if (newSelected.length === selectionLimit && newSelected.indexOf(item.uri) === -1) return { isFull: true };\n } else {\n // Force single selection\n if (newSelected.length > 0 && newSelected[0] !== item.uri) newSelected = [];\n }\n\n return { newSelected, videoSelected };\n };\n\n selectImage = item => {\n const { newSelected, videoSelected, isFull } = this.checkSelection(item);\n if (isFull) return;\n\n if (newSelected.indexOf(item.uri) === -1) {\n newSelected.push(item.uri);\n } else {\n const deleteIndex = newSelected.indexOf(item.uri);\n newSelected.splice(deleteIndex, 1);\n }\n if (newSelected.length > this.props.max) return;\n if (!newSelected) newSelected = [];\n this.setState({ selected: newSelected });\n this.props.onChange(newSelected, videoSelected, () => this.prepareCallback());\n };\n\n getPhotos = (reset = false) => {\n const { remoteAlbums, allowVideo, loadCount, album } = this.props;\n\n if (this.isLocal()) {\n // Retrieve local photos\n const mediaType = [MediaLibrary.MediaType.photo];\n if (allowVideo) mediaType.push(MediaLibrary.MediaType.video);\n\n const params = {\n first: loadCount || defaultLoadCount,\n mediaType,\n album: album || undefined,\n sortBy: [Platform.OS === 'android' ? 'modificationTime' : 'creationTime'],\n };\n if (reset) {\n this.setState({ photos: [], after: null, hasNextPage: true });\n } else {\n if (this.state.after) params.after = this.state.after;\n if (!this.state.hasNextPage) return;\n }\n MediaLibrary.getAssetsAsync(params).then(this.processPhotos);\n } else {\n // Use remote albums\n const selectedAlbum = remoteAlbums.find(item => item.id === album);\n if (selectedAlbum && selectedAlbum.images?.length > 0) {\n const ordered = _.orderBy(selectedAlbum.images, 'date', 'desc');\n this.setState({\n photos: ordered.map(image => {\n return {\n uri: image.uri,\n mediaType: isVideo(image.uri) ? MediaLibrary.MediaType.video : MediaLibrary.MediaType.photo,\n };\n }),\n isEmpty: false,\n });\n } else {\n this.setState({ photos: [], isEmpty: true });\n }\n }\n };\n\n processPhotos = data => {\n if (data.totalCount) {\n if (this.state.after === data.endCursor) return;\n const uris = data.assets;\n this.setState({\n photos: [...this.state.photos, ...uris],\n after: data.endCursor,\n hasNextPage: data.hasNextPage,\n });\n } else {\n this.setState({ isEmpty: true });\n }\n };\n\n getItemLayout = (data, index) => {\n const length = this.props.itemWidth || width / 4;\n return { length, offset: length * index, index };\n };\n\n prepareCallback() {\n const { selected, photos } = this.state;\n const selectedPhotos = selected.map(uri => photos.find(p => p.uri === uri));\n if (this.isLocal()) {\n const assetsInfo = Promise.all(selectedPhotos.map(p => MediaLibrary.getAssetInfoAsync(p)));\n this.props.callback(assetsInfo);\n } else {\n // No need to retrieve local assets\n this.props.callback(selectedPhotos);\n }\n }\n\n renderImageTile = ({ item, index }) => {\n if (!item) return null;\n\n const selectedIndex = this.state.selected.indexOf(item.uri);\n const selected = selectedIndex !== -1;\n\n return (\n <ImageTile\n selectedItemNumber={selectedIndex + 1}\n item={item}\n index={index}\n selected={selected}\n selectImage={this.selectImage}\n renderSelectedComponent={this.props.renderSelectedComponent}\n style={this.props.itemStyle}\n width={this.props.itemWidth}\n height={this.props.itemHeight}\n isRemote={!this.isLocal()}\n />\n );\n };\n\n renderPreloader = () => this.props.preloaderComponent || <ActivityIndicator size=\"large\" />;\n\n renderEmptyState = () => this.props.emptyStateComponent || null;\n\n renderImages() {\n return (\n <FlatList\n data={this.state.photos}\n numColumns={this.state.numColumns}\n key={this.state.numColumns}\n renderItem={this.renderImageTile}\n keyExtractor={(_, index) => index}\n onEndReached={() => {\n if (this.isLocal()) this.getPhotos();\n }}\n onEndReachedThreshold={0.5}\n ListEmptyComponent={this.state.isEmpty ? this.renderEmptyState() : this.renderPreloader()}\n initialNumToRender={24}\n getItemLayout={this.getItemLayout}\n />\n );\n }\n\n render() {\n const { hasCameraPermission } = this.state;\n\n if (this.isLocal() && !hasCameraPermission) {\n return this.props.noCameraPermissionComponent || null;\n }\n\n return <View style={[styles.container, this.props.style]}>{this.renderImages()}</View>;\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","FlatList","Dimensions","ActivityIndicator","Platform","_","ScreenOrientation","MediaLibrary","Camera","isVideo","ImageTile","width","get","defaultSelectionLimit","defaultLoadCount","ImageBrowser","Component","constructor","props","_this","this","_defineProperty","isNil","remoteAlbums","status","camera","requestCameraPermissionsAsync","cameraRoll","requestPermissionsAsync","setState","hasCameraPermission","hasCameraRollPermission","_ref","orientationInfo","removeOrientationChangeListeners","addOrientationChangeListener","onOrientationChange","numColumns","getNumColumns","orientation","Orientation","PORTRAIT_UP","PORTRAIT_DOWN","state","selected","find","uri","photo","photos","mediaType","MediaType","video","item","videoSelected","isVideoSelected","newSelected","length","selectionLimit","max","indexOf","isFull","checkSelection","push","deleteIndex","splice","onChange","prepareCallback","reset","arguments","undefined","allowVideo","loadCount","album","isLocal","params","first","sortBy","OS","after","hasNextPage","getAssetsAsync","then","processPhotos","_selectedAlbum$images","selectedAlbum","id","images","ordered","orderBy","map","image","isEmpty","data","totalCount","endCursor","uris","assets","index","itemWidth","offset","_ref2","selectedIndex","createElement","selectedItemNumber","selectImage","renderSelectedComponent","style","itemStyle","height","itemHeight","isRemote","preloaderComponent","size","emptyStateComponent","componentDidMount","getPermissionsAsync","getOrientationAsync","getPhotos","componentDidUpdate","prevProps","isEqual","selectedPhotos","p","assetsInfo","Promise","all","getAssetInfoAsync","callback","renderImages","key","renderItem","renderImageTile","keyExtractor","onEndReached","onEndReachedThreshold","ListEmptyComponent","renderEmptyState","renderPreloader","initialNumToRender","getItemLayout","render","noCameraPermissionComponent","styles","container","create","flex"],"sources":["ImageBrowser.js"],"sourcesContent":["import React from 'react';\nimport { StyleSheet, View, FlatList, Dimensions, ActivityIndicator, Platform } from 'react-native';\nimport _ from 'lodash';\nimport * as ScreenOrientation from 'expo-screen-orientation';\nimport * as MediaLibrary from 'expo-media-library';\nimport { Camera } from 'expo-camera';\nimport { isVideo } from '../../helper';\nimport ImageTile from './ImageTile';\n\nconst { width } = Dimensions.get('window');\nconst defaultSelectionLimit = 10;\nconst defaultLoadCount = 50;\n\nexport default class ImageBrowser extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n hasCameraPermission: null,\n hasCameraRollPermission: null,\n numColumns: null,\n photos: [],\n selected: [],\n isEmpty: false,\n after: null,\n hasNextPage: true,\n };\n }\n\n async componentDidMount() {\n if (this.isLocal()) await this.getPermissionsAsync();\n\n ScreenOrientation.addOrientationChangeListener(this.onOrientationChange);\n const orientation = await ScreenOrientation.getOrientationAsync();\n const numColumns = this.getNumColumns(orientation);\n this.setState({ numColumns }, () => {\n this.getPhotos();\n });\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.album !== this.props.album) this.getPhotos(true);\n if (!_.isEqual(prevProps.selected, this.props.selected)) {\n this.setState({ selected: this.props.selected });\n }\n }\n\n isLocal = () => {\n return _.isNil(this.props.remoteAlbums);\n };\n\n getPermissionsAsync = async () => {\n const { status: camera } = await Camera.requestCameraPermissionsAsync();\n const { status: cameraRoll } = await MediaLibrary.requestPermissionsAsync();\n this.setState({\n hasCameraPermission: camera === 'granted',\n hasCameraRollPermission: cameraRoll === 'granted',\n });\n };\n\n onOrientationChange = ({ orientationInfo }) => {\n ScreenOrientation.removeOrientationChangeListeners();\n ScreenOrientation.addOrientationChangeListener(this.onOrientationChange);\n const numColumns = this.getNumColumns(orientationInfo.orientation);\n this.setState({ numColumns });\n };\n\n getNumColumns = orientation =>\n orientation === ScreenOrientation.Orientation.PORTRAIT_UP || orientation === ScreenOrientation.Orientation.PORTRAIT_DOWN ? 4 : 7;\n\n isVideoSelected = () => {\n return this.state.selected.find(uri => {\n const photo = this.state.photos.find(photo => photo.uri === uri);\n return photo && photo.mediaType === MediaLibrary.MediaType.video;\n });\n };\n\n checkSelection = item => {\n let videoSelected = this.isVideoSelected();\n let newSelected = [...this.state.selected];\n\n // Check video/photo selection\n if (item.mediaType === MediaLibrary.MediaType.video) {\n if (videoSelected && videoSelected !== item.uri) {\n // If different video is already selected, reset\n videoSelected = null;\n newSelected = [];\n } else if (!videoSelected && newSelected.length > 0) {\n // If photos selected, don't allow selecting video\n videoSelected = null;\n newSelected = [];\n }\n // Toggle video selected\n videoSelected = videoSelected !== item.uri ? item.uri : null;\n } else if (videoSelected) {\n // If video selected, reset\n videoSelected = null;\n newSelected = [];\n }\n\n // Check multiple selection\n const selectionLimit = this.props.max || defaultSelectionLimit;\n if (selectionLimit && selectionLimit > 1) {\n // Limit selection\n if (newSelected.length === selectionLimit && newSelected.indexOf(item.uri) === -1) return { isFull: true };\n } else {\n // Force single selection\n if (newSelected.length > 0 && newSelected[0] !== item.uri) newSelected = [];\n }\n\n return { newSelected, videoSelected };\n };\n\n selectImage = item => {\n const { newSelected, videoSelected, isFull } = this.checkSelection(item);\n if (isFull) return;\n\n if (newSelected.indexOf(item.uri) === -1) {\n newSelected.push(item.uri);\n } else {\n const deleteIndex = newSelected.indexOf(item.uri);\n newSelected.splice(deleteIndex, 1);\n }\n if (newSelected.length > this.props.max) return;\n if (!newSelected) newSelected = [];\n this.setState({ selected: newSelected });\n this.props.onChange(newSelected, videoSelected, () => this.prepareCallback());\n };\n\n getPhotos = (reset = false) => {\n const { remoteAlbums, allowVideo, loadCount, album } = this.props;\n\n if (this.isLocal()) {\n // Retrieve local photos\n const mediaType = [MediaLibrary.MediaType.photo];\n if (allowVideo) mediaType.push(MediaLibrary.MediaType.video);\n\n const params = {\n first: loadCount || defaultLoadCount,\n mediaType,\n album: album || undefined,\n sortBy: [Platform.OS === 'android' ? 'modificationTime' : 'creationTime'],\n };\n if (reset) {\n this.setState({ photos: [], after: null, hasNextPage: true });\n } else {\n if (this.state.after) params.after = this.state.after;\n if (!this.state.hasNextPage) return;\n }\n MediaLibrary.getAssetsAsync(params).then(this.processPhotos);\n } else {\n // Use remote albums\n const selectedAlbum = remoteAlbums.find(item => item.id === album);\n if (selectedAlbum && selectedAlbum.images?.length > 0) {\n const ordered = _.orderBy(selectedAlbum.images, 'date', 'desc');\n this.setState({\n photos: ordered.map(image => {\n return {\n uri: image.uri,\n mediaType: isVideo(image.uri) ? MediaLibrary.MediaType.video : MediaLibrary.MediaType.photo,\n };\n }),\n isEmpty: false,\n });\n } else {\n this.setState({ photos: [], isEmpty: true });\n }\n }\n };\n\n processPhotos = data => {\n if (data.totalCount) {\n if (this.state.after === data.endCursor) return;\n const uris = data.assets;\n this.setState({\n photos: [...this.state.photos, ...uris],\n after: data.endCursor,\n hasNextPage: data.hasNextPage,\n });\n } else {\n this.setState({ isEmpty: true });\n }\n };\n\n getItemLayout = (data, index) => {\n const length = this.props.itemWidth || width / 4;\n return { length, offset: length * index, index };\n };\n\n prepareCallback() {\n const { selected, photos } = this.state;\n const selectedPhotos = selected.map(uri => photos.find(p => p.uri === uri));\n if (this.isLocal()) {\n const assetsInfo = Promise.all(selectedPhotos.map(p => MediaLibrary.getAssetInfoAsync(p)));\n this.props.callback(assetsInfo);\n } else {\n // No need to retrieve local assets\n this.props.callback(selectedPhotos);\n }\n }\n\n renderImageTile = ({ item, index }) => {\n if (!item) return null;\n\n const selectedIndex = this.state.selected.indexOf(item.uri);\n const selected = selectedIndex !== -1;\n\n return (\n <ImageTile\n selectedItemNumber={selectedIndex + 1}\n item={item}\n index={index}\n selected={selected}\n selectImage={this.selectImage}\n renderSelectedComponent={this.props.renderSelectedComponent}\n style={this.props.itemStyle}\n width={this.props.itemWidth}\n height={this.props.itemHeight}\n isRemote={!this.isLocal()}\n />\n );\n };\n\n renderPreloader = () => this.props.preloaderComponent || <ActivityIndicator size=\"large\" />;\n\n renderEmptyState = () => this.props.emptyStateComponent || null;\n\n renderImages() {\n if (_.isEmpty(this.state.photos) && !this.state.isEmpty) {\n return null;\n }\n return (\n <FlatList\n data={this.state.photos}\n numColumns={this.state.numColumns}\n key={this.state.numColumns}\n renderItem={this.renderImageTile}\n keyExtractor={(_, index) => index}\n onEndReached={() => {\n if (this.isLocal()) this.getPhotos();\n }}\n onEndReachedThreshold={0.5}\n ListEmptyComponent={this.state.isEmpty ? this.renderEmptyState() : this.renderPreloader()}\n initialNumToRender={24}\n getItemLayout={this.getItemLayout}\n />\n );\n }\n\n render() {\n const { hasCameraPermission } = this.state;\n\n if (this.isLocal() && !hasCameraPermission) {\n return this.props.noCameraPermissionComponent || null;\n }\n\n return <View style={[styles.container, this.props.style]}>{this.renderImages()}</View>;\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n});\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-core-app",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.2",
|
|
4
4
|
"description": "Core extension package for Pluss Communities platform",
|
|
5
5
|
"main": "dist/module/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"mime-types": "^2.1.24",
|
|
45
45
|
"moment": "^2.18.1",
|
|
46
46
|
"react": "18.2.0",
|
|
47
|
-
"react-native": "0.71.
|
|
47
|
+
"react-native": "0.71.14",
|
|
48
48
|
"react-native-auto-height-image": "3.1.3",
|
|
49
49
|
"react-native-elements": "^0.17.0",
|
|
50
50
|
"react-native-image-zoom-viewer": "^3.0.1",
|
|
@@ -225,6 +225,9 @@ export default class ImageBrowser extends React.Component {
|
|
|
225
225
|
renderEmptyState = () => this.props.emptyStateComponent || null;
|
|
226
226
|
|
|
227
227
|
renderImages() {
|
|
228
|
+
if (_.isEmpty(this.state.photos) && !this.state.isEmpty) {
|
|
229
|
+
return null;
|
|
230
|
+
}
|
|
228
231
|
return (
|
|
229
232
|
<FlatList
|
|
230
233
|
data={this.state.photos}
|