@plusscommunities/pluss-core-app 8.0.29 → 8.0.31
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/module/actions/FollowerActions.js +34 -0
- package/dist/module/actions/FollowerActions.js.map +1 -0
- package/dist/module/actions/MediaActions.js +29 -0
- package/dist/module/actions/MediaActions.js.map +1 -0
- package/dist/module/actions/ResidentActions.js +26 -0
- package/dist/module/actions/ResidentActions.js.map +1 -0
- package/dist/module/actions/UserActions.js +223 -0
- package/dist/module/actions/UserActions.js.map +1 -0
- package/dist/module/actions/UserSettingsActions.js +14 -0
- package/dist/module/actions/UserSettingsActions.js.map +1 -0
- package/dist/module/actions/index.js +6 -0
- package/dist/module/actions/index.js.map +1 -0
- package/dist/module/actions/types.js +17 -0
- package/dist/module/actions/types.js.map +1 -0
- package/dist/module/apis/analyticsActions.js +20 -0
- package/dist/module/apis/analyticsActions.js.map +1 -0
- package/dist/module/apis/contactActions.js +27 -0
- package/dist/module/apis/contactActions.js.map +1 -0
- package/dist/module/apis/eventActions.js +161 -0
- package/dist/module/apis/eventActions.js.map +1 -0
- package/dist/module/apis/fileActions.js +93 -0
- package/dist/module/apis/fileActions.js.map +1 -0
- package/dist/module/apis/followerActions.js +38 -0
- package/dist/module/apis/followerActions.js.map +1 -0
- package/dist/module/apis/index.js +13 -0
- package/dist/module/apis/index.js.map +1 -0
- package/dist/module/apis/notificationActions.js +60 -0
- package/dist/module/apis/notificationActions.js.map +1 -0
- package/dist/module/apis/profileActions.js +14 -0
- package/dist/module/apis/profileActions.js.map +1 -0
- package/dist/module/apis/reactionActions.js +76 -0
- package/dist/module/apis/reactionActions.js.map +1 -0
- package/dist/module/apis/settingActions.js +22 -0
- package/dist/module/apis/settingActions.js.map +1 -0
- package/dist/module/apis/stringActions.js +30 -0
- package/dist/module/apis/stringActions.js.map +1 -0
- package/dist/module/apis/typeActions.js +15 -0
- package/dist/module/apis/typeActions.js.map +1 -0
- package/dist/module/apis/userActions.js +104 -0
- package/dist/module/apis/userActions.js.map +1 -0
- package/dist/module/assets/icons/fontawesome/fa-brands-400.ttf +0 -0
- package/dist/module/assets/icons/fontawesome/fa-light-300.ttf +0 -0
- package/dist/module/assets/icons/fontawesome/fa-regular-400.ttf +0 -0
- package/dist/module/assets/icons/fontawesome/fa-solid-900.ttf +0 -0
- package/dist/module/assets/icons/fontawesome/fa-thin-100.ttf +0 -0
- package/dist/module/assets/icons/fontawesome/fa7-glyphmap.json +4205 -0
- package/dist/module/assets/icons/reactions/heart.png +0 -0
- package/dist/module/assets/icons/reactions/party.png +0 -0
- package/dist/module/assets/icons/reactions/sad.png +0 -0
- package/dist/module/assets/icons/reactions/smile.png +0 -0
- package/dist/module/colours.js +165 -0
- package/dist/module/colours.js.map +1 -0
- package/dist/module/components/AddButton.js +43 -0
- package/dist/module/components/AddButton.js.map +1 -0
- package/dist/module/components/AddToCalendarButton.js +225 -0
- package/dist/module/components/AddToCalendarButton.js.map +1 -0
- package/dist/module/components/Attachment.js +55 -0
- package/dist/module/components/Attachment.js.map +1 -0
- package/dist/module/components/AudienceSelectorLauncher.js +64 -0
- package/dist/module/components/AudienceSelectorLauncher.js.map +1 -0
- package/dist/module/components/AudienceSelectorPage.js +351 -0
- package/dist/module/components/AudienceSelectorPage.js.map +1 -0
- package/dist/module/components/AutoOffsetImage.js +184 -0
- package/dist/module/components/AutoOffsetImage.js.map +1 -0
- package/dist/module/components/BackButton.js +58 -0
- package/dist/module/components/BackButton.js.map +1 -0
- package/dist/module/components/CalendarPopup.js +126 -0
- package/dist/module/components/CalendarPopup.js.map +1 -0
- package/dist/module/components/CategoryTabs.js +155 -0
- package/dist/module/components/CategoryTabs.js.map +1 -0
- package/dist/module/components/CommentReply.js +334 -0
- package/dist/module/components/CommentReply.js.map +1 -0
- package/dist/module/components/CommentSection.js +823 -0
- package/dist/module/components/CommentSection.js.map +1 -0
- package/dist/module/components/ConfirmPopup.js +109 -0
- package/dist/module/components/ConfirmPopup.js.map +1 -0
- package/dist/module/components/ConfirmationPopup.js +72 -0
- package/dist/module/components/ConfirmationPopup.js.map +1 -0
- package/dist/module/components/DocumentUploader.js +253 -0
- package/dist/module/components/DocumentUploader.js.map +1 -0
- package/dist/module/components/DropDownItem.js +75 -0
- package/dist/module/components/DropDownItem.js.map +1 -0
- package/dist/module/components/DropDownMenu.js +41 -0
- package/dist/module/components/DropDownMenu.js.map +1 -0
- package/dist/module/components/EmptyStateMain.js +51 -0
- package/dist/module/components/EmptyStateMain.js.map +1 -0
- package/dist/module/components/EmptyStateWidget.js +48 -0
- package/dist/module/components/EmptyStateWidget.js.map +1 -0
- package/dist/module/components/FontScaleButton.js +37 -0
- package/dist/module/components/FontScaleButton.js.map +1 -0
- package/dist/module/components/FontScalePopup.js +76 -0
- package/dist/module/components/FontScalePopup.js.map +1 -0
- package/dist/module/components/Forbidden.js +58 -0
- package/dist/module/components/Forbidden.js.map +1 -0
- package/dist/module/components/FormCard.js +25 -0
- package/dist/module/components/FormCard.js.map +1 -0
- package/dist/module/components/FormCardSection.js +214 -0
- package/dist/module/components/FormCardSection.js.map +1 -0
- package/dist/module/components/FormCardSectionOptionLauncher.js +73 -0
- package/dist/module/components/FormCardSectionOptionLauncher.js.map +1 -0
- package/dist/module/components/FormattedText.js +133 -0
- package/dist/module/components/FormattedText.js.map +1 -0
- package/dist/module/components/GenericInput.js +151 -0
- package/dist/module/components/GenericInput.js.map +1 -0
- package/dist/module/components/GenericInputSection.js +173 -0
- package/dist/module/components/GenericInputSection.js.map +1 -0
- package/dist/module/components/Header.js +459 -0
- package/dist/module/components/Header.js.map +1 -0
- package/dist/module/components/Icon.js +109 -0
- package/dist/module/components/Icon.js.map +1 -0
- package/dist/module/components/ImagePopup.js +400 -0
- package/dist/module/components/ImagePopup.js.map +1 -0
- package/dist/module/components/ImageUploadProgress.js +69 -0
- package/dist/module/components/ImageUploadProgress.js.map +1 -0
- package/dist/module/components/ImageUploader.js +831 -0
- package/dist/module/components/ImageUploader.js.map +1 -0
- package/dist/module/components/InlineButton.js +66 -0
- package/dist/module/components/InlineButton.js.map +1 -0
- package/dist/module/components/Input.js +156 -0
- package/dist/module/components/Input.js.map +1 -0
- package/dist/module/components/LoadingCircles.js +219 -0
- package/dist/module/components/LoadingCircles.js.map +1 -0
- package/dist/module/components/LoadingIndicator.js +86 -0
- package/dist/module/components/LoadingIndicator.js.map +1 -0
- package/dist/module/components/LoadingStateWidget.js +46 -0
- package/dist/module/components/LoadingStateWidget.js.map +1 -0
- package/dist/module/components/MediaPlayer.js +407 -0
- package/dist/module/components/MediaPlayer.js.map +1 -0
- package/dist/module/components/MiddlePopup.js +49 -0
- package/dist/module/components/MiddlePopup.js.map +1 -0
- package/dist/module/components/PDFPopup.js +296 -0
- package/dist/module/components/PDFPopup.js.map +1 -0
- package/dist/module/components/PlussChat.js +1078 -0
- package/dist/module/components/PlussChat.js.map +1 -0
- package/dist/module/components/PlussChatMessage.js +299 -0
- package/dist/module/components/PlussChatMessage.js.map +1 -0
- package/dist/module/components/PlussChatTime.js +59 -0
- package/dist/module/components/PlussChatTime.js.map +1 -0
- package/dist/module/components/Popup.js +126 -0
- package/dist/module/components/Popup.js.map +1 -0
- package/dist/module/components/PopupMenu.js +120 -0
- package/dist/module/components/PopupMenu.js.map +1 -0
- package/dist/module/components/PositionedImage.js +313 -0
- package/dist/module/components/PositionedImage.js.map +1 -0
- package/dist/module/components/ProfilePic.js +105 -0
- package/dist/module/components/ProfilePic.js.map +1 -0
- package/dist/module/components/RadioButton.js +78 -0
- package/dist/module/components/RadioButton.js.map +1 -0
- package/dist/module/components/Reaction.js +117 -0
- package/dist/module/components/Reaction.js.map +1 -0
- package/dist/module/components/Reactions.js +71 -0
- package/dist/module/components/Reactions.js.map +1 -0
- package/dist/module/components/SharingTools.js +189 -0
- package/dist/module/components/SharingTools.js.map +1 -0
- package/dist/module/components/Spinner.js +22 -0
- package/dist/module/components/Spinner.js.map +1 -0
- package/dist/module/components/StickyFooter.js +34 -0
- package/dist/module/components/StickyFooter.js.map +1 -0
- package/dist/module/components/Text.js +57 -0
- package/dist/module/components/Text.js.map +1 -0
- package/dist/module/components/TickIcon.js +24 -0
- package/dist/module/components/TickIcon.js.map +1 -0
- package/dist/module/components/Toggle.js +66 -0
- package/dist/module/components/Toggle.js.map +1 -0
- package/dist/module/components/TouchableSearchBar.js +68 -0
- package/dist/module/components/TouchableSearchBar.js.map +1 -0
- package/dist/module/components/UserListPopup.js +136 -0
- package/dist/module/components/UserListPopup.js.map +1 -0
- package/dist/module/components/UserListing.js +268 -0
- package/dist/module/components/UserListing.js.map +1 -0
- package/dist/module/components/VideoPopup.js +113 -0
- package/dist/module/components/VideoPopup.js.map +1 -0
- package/dist/module/components/WarningPopup.js +85 -0
- package/dist/module/components/WarningPopup.js.map +1 -0
- package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js +289 -0
- package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js.map +1 -0
- package/dist/module/components/expo-image-picker-multiple/ImageTile.js +117 -0
- package/dist/module/components/expo-image-picker-multiple/ImageTile.js.map +1 -0
- package/dist/module/components/index.js +60 -0
- package/dist/module/components/index.js.map +1 -0
- package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +422 -0
- package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js.map +1 -0
- package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js +387 -0
- package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js.map +1 -0
- package/dist/module/config.js +27 -0
- package/dist/module/config.js.map +1 -0
- package/dist/module/constants.js +18 -0
- package/dist/module/constants.js.map +1 -0
- package/dist/module/helper.js +424 -0
- package/dist/module/helper.js.map +1 -0
- package/dist/module/index.js +13 -0
- package/dist/module/index.js.map +1 -0
- package/dist/module/js/images/detectFaces.js +31 -0
- package/dist/module/js/images/detectFaces.js.map +1 -0
- package/dist/module/js/images/findLandmarkRange.js +93 -0
- package/dist/module/js/images/findLandmarkRange.js.map +1 -0
- package/dist/module/js/images/getScaledOffset.js +81 -0
- package/dist/module/js/images/getScaledOffset.js.map +1 -0
- package/dist/module/js/site/getSiteLevelFromState.js +29 -0
- package/dist/module/js/site/getSiteLevelFromState.js.map +1 -0
- package/dist/module/js/site/isTVEnabled.js +10 -0
- package/dist/module/js/site/isTVEnabled.js.map +1 -0
- package/dist/module/session.js +58 -0
- package/dist/module/session.js.map +1 -0
- package/dist/module/styles.js +67 -0
- package/dist/module/styles.js.map +1 -0
- package/dist/module/withNavigationFocus.js +30 -0
- package/dist/module/withNavigationFocus.js.map +1 -0
- package/package.json +1 -1
- package/src/components/PDFPopup.js +130 -35
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
2
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
3
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
4
|
+
import React from "react";
|
|
5
|
+
import { StyleSheet, View, FlatList, Dimensions, ActivityIndicator, Platform } from "react-native";
|
|
6
|
+
import _ from "lodash";
|
|
7
|
+
import * as ScreenOrientation from "expo-screen-orientation";
|
|
8
|
+
import * as MediaLibrary from "expo-media-library";
|
|
9
|
+
import { Camera } from "expo-camera";
|
|
10
|
+
import { isVideo } from "../../helper";
|
|
11
|
+
import ImageTile from "./ImageTile";
|
|
12
|
+
const {
|
|
13
|
+
width
|
|
14
|
+
} = Dimensions.get("window");
|
|
15
|
+
const defaultSelectionLimit = 10;
|
|
16
|
+
const defaultLoadCount = 50;
|
|
17
|
+
export default class ImageBrowser extends React.Component {
|
|
18
|
+
constructor(props) {
|
|
19
|
+
super(props);
|
|
20
|
+
_defineProperty(this, "isLocal", () => {
|
|
21
|
+
return _.isNil(this.props.remoteAlbums);
|
|
22
|
+
});
|
|
23
|
+
_defineProperty(this, "getPermissionsAsync", async () => {
|
|
24
|
+
const {
|
|
25
|
+
status: camera
|
|
26
|
+
} = await Camera.requestCameraPermissionsAsync();
|
|
27
|
+
const {
|
|
28
|
+
status: cameraRoll
|
|
29
|
+
} = await MediaLibrary.requestPermissionsAsync();
|
|
30
|
+
this.setState({
|
|
31
|
+
hasCameraPermission: camera === "granted",
|
|
32
|
+
hasCameraRollPermission: cameraRoll === "granted"
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
_defineProperty(this, "onOrientationChange", ({
|
|
36
|
+
orientationInfo
|
|
37
|
+
}) => {
|
|
38
|
+
ScreenOrientation.removeOrientationChangeListeners();
|
|
39
|
+
ScreenOrientation.addOrientationChangeListener(this.onOrientationChange);
|
|
40
|
+
const numColumns = this.getNumColumns(orientationInfo.orientation);
|
|
41
|
+
this.setState({
|
|
42
|
+
numColumns
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
_defineProperty(this, "getNumColumns", orientation => orientation === ScreenOrientation.Orientation.PORTRAIT_UP || orientation === ScreenOrientation.Orientation.PORTRAIT_DOWN ? 4 : 7);
|
|
46
|
+
_defineProperty(this, "isVideoSelected", () => {
|
|
47
|
+
return this.state.selected.find(uri => {
|
|
48
|
+
const photo = this.state.photos.find(photo => photo.uri === uri);
|
|
49
|
+
return photo && photo.mediaType === MediaLibrary.MediaType.video;
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
_defineProperty(this, "checkSelection", item => {
|
|
53
|
+
let videoSelected = this.isVideoSelected();
|
|
54
|
+
let newSelected = [...this.state.selected];
|
|
55
|
+
|
|
56
|
+
// Check video/photo selection
|
|
57
|
+
if (item.mediaType === MediaLibrary.MediaType.video) {
|
|
58
|
+
if (videoSelected && videoSelected !== item.uri) {
|
|
59
|
+
// If different video is already selected, reset
|
|
60
|
+
videoSelected = null;
|
|
61
|
+
newSelected = [];
|
|
62
|
+
} else if (!videoSelected && newSelected.length > 0) {
|
|
63
|
+
// If photos selected, don't allow selecting video
|
|
64
|
+
videoSelected = null;
|
|
65
|
+
newSelected = [];
|
|
66
|
+
}
|
|
67
|
+
// Toggle video selected
|
|
68
|
+
videoSelected = videoSelected !== item.uri ? item.uri : null;
|
|
69
|
+
} else if (videoSelected) {
|
|
70
|
+
// If video selected, reset
|
|
71
|
+
videoSelected = null;
|
|
72
|
+
newSelected = [];
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Check multiple selection
|
|
76
|
+
const selectionLimit = this.props.max || defaultSelectionLimit;
|
|
77
|
+
if (selectionLimit && selectionLimit > 1) {
|
|
78
|
+
// Limit selection
|
|
79
|
+
if (newSelected.length === selectionLimit && newSelected.indexOf(item.uri) === -1) return {
|
|
80
|
+
isFull: true
|
|
81
|
+
};
|
|
82
|
+
} else {
|
|
83
|
+
// Force single selection
|
|
84
|
+
if (newSelected.length > 0 && newSelected[0] !== item.uri) newSelected = [];
|
|
85
|
+
}
|
|
86
|
+
return {
|
|
87
|
+
newSelected,
|
|
88
|
+
videoSelected
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
_defineProperty(this, "selectImage", item => {
|
|
92
|
+
const {
|
|
93
|
+
newSelected,
|
|
94
|
+
videoSelected,
|
|
95
|
+
isFull
|
|
96
|
+
} = this.checkSelection(item);
|
|
97
|
+
if (isFull) return;
|
|
98
|
+
if (newSelected.indexOf(item.uri) === -1) {
|
|
99
|
+
newSelected.push(item.uri);
|
|
100
|
+
} else {
|
|
101
|
+
const deleteIndex = newSelected.indexOf(item.uri);
|
|
102
|
+
newSelected.splice(deleteIndex, 1);
|
|
103
|
+
}
|
|
104
|
+
if (newSelected.length > this.props.max) return;
|
|
105
|
+
if (!newSelected) newSelected = [];
|
|
106
|
+
this.setState({
|
|
107
|
+
selected: newSelected
|
|
108
|
+
});
|
|
109
|
+
this.props.onChange(newSelected, videoSelected, () => this.prepareCallback());
|
|
110
|
+
});
|
|
111
|
+
_defineProperty(this, "getPhotos", (reset = false) => {
|
|
112
|
+
const {
|
|
113
|
+
remoteAlbums,
|
|
114
|
+
allowVideo,
|
|
115
|
+
loadCount,
|
|
116
|
+
album
|
|
117
|
+
} = this.props;
|
|
118
|
+
if (this.isLocal()) {
|
|
119
|
+
// Retrieve local photos
|
|
120
|
+
const mediaType = [MediaLibrary.MediaType.photo];
|
|
121
|
+
if (allowVideo) mediaType.push(MediaLibrary.MediaType.video);
|
|
122
|
+
const params = {
|
|
123
|
+
first: loadCount || defaultLoadCount,
|
|
124
|
+
mediaType,
|
|
125
|
+
album: album || undefined,
|
|
126
|
+
sortBy: [Platform.OS === "android" ? "modificationTime" : "creationTime"]
|
|
127
|
+
};
|
|
128
|
+
if (reset) {
|
|
129
|
+
this.setState({
|
|
130
|
+
photos: [],
|
|
131
|
+
after: null,
|
|
132
|
+
hasNextPage: true
|
|
133
|
+
});
|
|
134
|
+
} else {
|
|
135
|
+
if (this.state.after) params.after = this.state.after;
|
|
136
|
+
if (!this.state.hasNextPage) return;
|
|
137
|
+
}
|
|
138
|
+
MediaLibrary.getAssetsAsync(params).then(this.processPhotos);
|
|
139
|
+
} else {
|
|
140
|
+
var _selectedAlbum$images;
|
|
141
|
+
// Use remote albums
|
|
142
|
+
const selectedAlbum = remoteAlbums.find(item => item.id === album);
|
|
143
|
+
if (selectedAlbum && ((_selectedAlbum$images = selectedAlbum.images) === null || _selectedAlbum$images === void 0 ? void 0 : _selectedAlbum$images.length) > 0) {
|
|
144
|
+
const ordered = _.orderBy(selectedAlbum.images, "date", "desc");
|
|
145
|
+
this.setState({
|
|
146
|
+
photos: ordered.map(image => {
|
|
147
|
+
return {
|
|
148
|
+
uri: image.uri,
|
|
149
|
+
mediaType: isVideo(image.uri) ? MediaLibrary.MediaType.video : MediaLibrary.MediaType.photo
|
|
150
|
+
};
|
|
151
|
+
}),
|
|
152
|
+
isEmpty: false
|
|
153
|
+
});
|
|
154
|
+
} else {
|
|
155
|
+
this.setState({
|
|
156
|
+
photos: [],
|
|
157
|
+
isEmpty: true
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
_defineProperty(this, "processPhotos", data => {
|
|
163
|
+
if (data.totalCount) {
|
|
164
|
+
if (this.state.after === data.endCursor) return;
|
|
165
|
+
const uris = data.assets;
|
|
166
|
+
this.setState({
|
|
167
|
+
photos: [...this.state.photos, ...uris],
|
|
168
|
+
after: data.endCursor,
|
|
169
|
+
hasNextPage: data.hasNextPage
|
|
170
|
+
});
|
|
171
|
+
} else {
|
|
172
|
+
this.setState({
|
|
173
|
+
isEmpty: true
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
_defineProperty(this, "getItemLayout", (data, index) => {
|
|
178
|
+
const length = this.props.itemWidth || width / 4;
|
|
179
|
+
return {
|
|
180
|
+
length,
|
|
181
|
+
offset: length * index,
|
|
182
|
+
index
|
|
183
|
+
};
|
|
184
|
+
});
|
|
185
|
+
_defineProperty(this, "renderImageTile", ({
|
|
186
|
+
item,
|
|
187
|
+
index
|
|
188
|
+
}) => {
|
|
189
|
+
if (!item) return null;
|
|
190
|
+
const selectedIndex = this.state.selected.indexOf(item.uri);
|
|
191
|
+
const selected = selectedIndex !== -1;
|
|
192
|
+
return /*#__PURE__*/React.createElement(ImageTile, {
|
|
193
|
+
selectedItemNumber: selectedIndex + 1,
|
|
194
|
+
item: item,
|
|
195
|
+
index: index,
|
|
196
|
+
selected: selected,
|
|
197
|
+
selectImage: this.selectImage,
|
|
198
|
+
renderSelectedComponent: this.props.renderSelectedComponent,
|
|
199
|
+
style: this.props.itemStyle,
|
|
200
|
+
width: this.props.itemWidth,
|
|
201
|
+
height: this.props.itemHeight,
|
|
202
|
+
isRemote: !this.isLocal()
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
_defineProperty(this, "renderPreloader", () => this.props.preloaderComponent || /*#__PURE__*/React.createElement(ActivityIndicator, {
|
|
206
|
+
size: "large"
|
|
207
|
+
}));
|
|
208
|
+
_defineProperty(this, "renderEmptyState", () => this.props.emptyStateComponent || null);
|
|
209
|
+
this.state = {
|
|
210
|
+
hasCameraPermission: null,
|
|
211
|
+
hasCameraRollPermission: null,
|
|
212
|
+
numColumns: null,
|
|
213
|
+
photos: [],
|
|
214
|
+
selected: [],
|
|
215
|
+
isEmpty: false,
|
|
216
|
+
after: null,
|
|
217
|
+
hasNextPage: true
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
async componentDidMount() {
|
|
221
|
+
if (this.isLocal()) await this.getPermissionsAsync();
|
|
222
|
+
ScreenOrientation.addOrientationChangeListener(this.onOrientationChange);
|
|
223
|
+
const orientation = await ScreenOrientation.getOrientationAsync();
|
|
224
|
+
const numColumns = this.getNumColumns(orientation);
|
|
225
|
+
this.setState({
|
|
226
|
+
numColumns
|
|
227
|
+
}, () => {
|
|
228
|
+
this.getPhotos();
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
componentDidUpdate(prevProps) {
|
|
232
|
+
if (prevProps.album !== this.props.album) this.getPhotos(true);
|
|
233
|
+
if (!_.isEqual(prevProps.selected, this.props.selected)) {
|
|
234
|
+
this.setState({
|
|
235
|
+
selected: this.props.selected
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
prepareCallback() {
|
|
240
|
+
const {
|
|
241
|
+
selected,
|
|
242
|
+
photos
|
|
243
|
+
} = this.state;
|
|
244
|
+
const selectedPhotos = selected.map(uri => photos.find(p => p.uri === uri));
|
|
245
|
+
if (this.isLocal()) {
|
|
246
|
+
const assetsInfo = Promise.all(selectedPhotos.map(p => MediaLibrary.getAssetInfoAsync(p)));
|
|
247
|
+
this.props.callback(assetsInfo);
|
|
248
|
+
} else {
|
|
249
|
+
// No need to retrieve local assets
|
|
250
|
+
this.props.callback(selectedPhotos);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
renderImages() {
|
|
254
|
+
if (_.isEmpty(this.state.photos) && !this.state.isEmpty) {
|
|
255
|
+
return null;
|
|
256
|
+
}
|
|
257
|
+
return /*#__PURE__*/React.createElement(FlatList, {
|
|
258
|
+
data: this.state.photos,
|
|
259
|
+
numColumns: this.state.numColumns,
|
|
260
|
+
key: this.state.numColumns,
|
|
261
|
+
renderItem: this.renderImageTile,
|
|
262
|
+
keyExtractor: (_, index) => index,
|
|
263
|
+
onEndReached: () => {
|
|
264
|
+
if (this.isLocal()) this.getPhotos();
|
|
265
|
+
},
|
|
266
|
+
onEndReachedThreshold: 0.5,
|
|
267
|
+
ListEmptyComponent: this.state.isEmpty ? this.renderEmptyState() : this.renderPreloader(),
|
|
268
|
+
initialNumToRender: 24,
|
|
269
|
+
getItemLayout: this.getItemLayout
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
render() {
|
|
273
|
+
const {
|
|
274
|
+
hasCameraPermission
|
|
275
|
+
} = this.state;
|
|
276
|
+
if (this.isLocal() && !hasCameraPermission) {
|
|
277
|
+
return this.props.noCameraPermissionComponent || null;
|
|
278
|
+
}
|
|
279
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
280
|
+
style: [styles.container, this.props.style]
|
|
281
|
+
}, this.renderImages());
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
const styles = StyleSheet.create({
|
|
285
|
+
container: {
|
|
286
|
+
flex: 1
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
//# sourceMappingURL=ImageBrowser.js.map
|
|
@@ -0,0 +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","_defineProperty","isNil","remoteAlbums","status","camera","requestCameraPermissionsAsync","cameraRoll","requestPermissionsAsync","setState","hasCameraPermission","hasCameraRollPermission","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","allowVideo","loadCount","album","isLocal","params","first","undefined","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","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 {\n\tStyleSheet,\n\tView,\n\tFlatList,\n\tDimensions,\n\tActivityIndicator,\n\tPlatform,\n} 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\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\thasCameraPermission: null,\n\t\t\thasCameraRollPermission: null,\n\t\t\tnumColumns: null,\n\t\t\tphotos: [],\n\t\t\tselected: [],\n\t\t\tisEmpty: false,\n\t\t\tafter: null,\n\t\t\thasNextPage: true,\n\t\t};\n\t}\n\n\tasync componentDidMount() {\n\t\tif (this.isLocal()) await this.getPermissionsAsync();\n\n\t\tScreenOrientation.addOrientationChangeListener(this.onOrientationChange);\n\t\tconst orientation = await ScreenOrientation.getOrientationAsync();\n\t\tconst numColumns = this.getNumColumns(orientation);\n\t\tthis.setState({ numColumns }, () => {\n\t\t\tthis.getPhotos();\n\t\t});\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (prevProps.album !== this.props.album) this.getPhotos(true);\n\t\tif (!_.isEqual(prevProps.selected, this.props.selected)) {\n\t\t\tthis.setState({ selected: this.props.selected });\n\t\t}\n\t}\n\n\tisLocal = () => {\n\t\treturn _.isNil(this.props.remoteAlbums);\n\t};\n\n\tgetPermissionsAsync = async () => {\n\t\tconst { status: camera } = await Camera.requestCameraPermissionsAsync();\n\t\tconst { status: cameraRoll } = await MediaLibrary.requestPermissionsAsync();\n\t\tthis.setState({\n\t\t\thasCameraPermission: camera === \"granted\",\n\t\t\thasCameraRollPermission: cameraRoll === \"granted\",\n\t\t});\n\t};\n\n\tonOrientationChange = ({ orientationInfo }) => {\n\t\tScreenOrientation.removeOrientationChangeListeners();\n\t\tScreenOrientation.addOrientationChangeListener(this.onOrientationChange);\n\t\tconst numColumns = this.getNumColumns(orientationInfo.orientation);\n\t\tthis.setState({ numColumns });\n\t};\n\n\tgetNumColumns = (orientation) =>\n\t\torientation === ScreenOrientation.Orientation.PORTRAIT_UP ||\n\t\torientation === ScreenOrientation.Orientation.PORTRAIT_DOWN\n\t\t\t? 4\n\t\t\t: 7;\n\n\tisVideoSelected = () => {\n\t\treturn this.state.selected.find((uri) => {\n\t\t\tconst photo = this.state.photos.find((photo) => photo.uri === uri);\n\t\t\treturn photo && photo.mediaType === MediaLibrary.MediaType.video;\n\t\t});\n\t};\n\n\tcheckSelection = (item) => {\n\t\tlet videoSelected = this.isVideoSelected();\n\t\tlet newSelected = [...this.state.selected];\n\n\t\t// Check video/photo selection\n\t\tif (item.mediaType === MediaLibrary.MediaType.video) {\n\t\t\tif (videoSelected && videoSelected !== item.uri) {\n\t\t\t\t// If different video is already selected, reset\n\t\t\t\tvideoSelected = null;\n\t\t\t\tnewSelected = [];\n\t\t\t} else if (!videoSelected && newSelected.length > 0) {\n\t\t\t\t// If photos selected, don't allow selecting video\n\t\t\t\tvideoSelected = null;\n\t\t\t\tnewSelected = [];\n\t\t\t}\n\t\t\t// Toggle video selected\n\t\t\tvideoSelected = videoSelected !== item.uri ? item.uri : null;\n\t\t} else if (videoSelected) {\n\t\t\t// If video selected, reset\n\t\t\tvideoSelected = null;\n\t\t\tnewSelected = [];\n\t\t}\n\n\t\t// Check multiple selection\n\t\tconst selectionLimit = this.props.max || defaultSelectionLimit;\n\t\tif (selectionLimit && selectionLimit > 1) {\n\t\t\t// Limit selection\n\t\t\tif (\n\t\t\t\tnewSelected.length === selectionLimit &&\n\t\t\t\tnewSelected.indexOf(item.uri) === -1\n\t\t\t)\n\t\t\t\treturn { isFull: true };\n\t\t} else {\n\t\t\t// Force single selection\n\t\t\tif (newSelected.length > 0 && newSelected[0] !== item.uri)\n\t\t\t\tnewSelected = [];\n\t\t}\n\n\t\treturn { newSelected, videoSelected };\n\t};\n\n\tselectImage = (item) => {\n\t\tconst { newSelected, videoSelected, isFull } = this.checkSelection(item);\n\t\tif (isFull) return;\n\n\t\tif (newSelected.indexOf(item.uri) === -1) {\n\t\t\tnewSelected.push(item.uri);\n\t\t} else {\n\t\t\tconst deleteIndex = newSelected.indexOf(item.uri);\n\t\t\tnewSelected.splice(deleteIndex, 1);\n\t\t}\n\t\tif (newSelected.length > this.props.max) return;\n\t\tif (!newSelected) newSelected = [];\n\t\tthis.setState({ selected: newSelected });\n\t\tthis.props.onChange(newSelected, videoSelected, () =>\n\t\t\tthis.prepareCallback(),\n\t\t);\n\t};\n\n\tgetPhotos = (reset = false) => {\n\t\tconst { remoteAlbums, allowVideo, loadCount, album } = this.props;\n\n\t\tif (this.isLocal()) {\n\t\t\t// Retrieve local photos\n\t\t\tconst mediaType = [MediaLibrary.MediaType.photo];\n\t\t\tif (allowVideo) mediaType.push(MediaLibrary.MediaType.video);\n\n\t\t\tconst params = {\n\t\t\t\tfirst: loadCount || defaultLoadCount,\n\t\t\t\tmediaType,\n\t\t\t\talbum: album || undefined,\n\t\t\t\tsortBy: [\n\t\t\t\t\tPlatform.OS === \"android\" ? \"modificationTime\" : \"creationTime\",\n\t\t\t\t],\n\t\t\t};\n\t\t\tif (reset) {\n\t\t\t\tthis.setState({ photos: [], after: null, hasNextPage: true });\n\t\t\t} else {\n\t\t\t\tif (this.state.after) params.after = this.state.after;\n\t\t\t\tif (!this.state.hasNextPage) return;\n\t\t\t}\n\t\t\tMediaLibrary.getAssetsAsync(params).then(this.processPhotos);\n\t\t} else {\n\t\t\t// Use remote albums\n\t\t\tconst selectedAlbum = remoteAlbums.find((item) => item.id === album);\n\t\t\tif (selectedAlbum && selectedAlbum.images?.length > 0) {\n\t\t\t\tconst ordered = _.orderBy(selectedAlbum.images, \"date\", \"desc\");\n\t\t\t\tthis.setState({\n\t\t\t\t\tphotos: ordered.map((image) => {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\turi: image.uri,\n\t\t\t\t\t\t\tmediaType: isVideo(image.uri)\n\t\t\t\t\t\t\t\t? MediaLibrary.MediaType.video\n\t\t\t\t\t\t\t\t: MediaLibrary.MediaType.photo,\n\t\t\t\t\t\t};\n\t\t\t\t\t}),\n\t\t\t\t\tisEmpty: false,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.setState({ photos: [], isEmpty: true });\n\t\t\t}\n\t\t}\n\t};\n\n\tprocessPhotos = (data) => {\n\t\tif (data.totalCount) {\n\t\t\tif (this.state.after === data.endCursor) return;\n\t\t\tconst uris = data.assets;\n\t\t\tthis.setState({\n\t\t\t\tphotos: [...this.state.photos, ...uris],\n\t\t\t\tafter: data.endCursor,\n\t\t\t\thasNextPage: data.hasNextPage,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.setState({ isEmpty: true });\n\t\t}\n\t};\n\n\tgetItemLayout = (data, index) => {\n\t\tconst length = this.props.itemWidth || width / 4;\n\t\treturn { length, offset: length * index, index };\n\t};\n\n\tprepareCallback() {\n\t\tconst { selected, photos } = this.state;\n\t\tconst selectedPhotos = selected.map((uri) =>\n\t\t\tphotos.find((p) => p.uri === uri),\n\t\t);\n\t\tif (this.isLocal()) {\n\t\t\tconst assetsInfo = Promise.all(\n\t\t\t\tselectedPhotos.map((p) => MediaLibrary.getAssetInfoAsync(p)),\n\t\t\t);\n\t\t\tthis.props.callback(assetsInfo);\n\t\t} else {\n\t\t\t// No need to retrieve local assets\n\t\t\tthis.props.callback(selectedPhotos);\n\t\t}\n\t}\n\n\trenderImageTile = ({ item, index }) => {\n\t\tif (!item) return null;\n\n\t\tconst selectedIndex = this.state.selected.indexOf(item.uri);\n\t\tconst selected = selectedIndex !== -1;\n\n\t\treturn (\n\t\t\t<ImageTile\n\t\t\t\tselectedItemNumber={selectedIndex + 1}\n\t\t\t\titem={item}\n\t\t\t\tindex={index}\n\t\t\t\tselected={selected}\n\t\t\t\tselectImage={this.selectImage}\n\t\t\t\trenderSelectedComponent={this.props.renderSelectedComponent}\n\t\t\t\tstyle={this.props.itemStyle}\n\t\t\t\twidth={this.props.itemWidth}\n\t\t\t\theight={this.props.itemHeight}\n\t\t\t\tisRemote={!this.isLocal()}\n\t\t\t/>\n\t\t);\n\t};\n\n\trenderPreloader = () =>\n\t\tthis.props.preloaderComponent || <ActivityIndicator size=\"large\" />;\n\n\trenderEmptyState = () => this.props.emptyStateComponent || null;\n\n\trenderImages() {\n\t\tif (_.isEmpty(this.state.photos) && !this.state.isEmpty) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<FlatList\n\t\t\t\tdata={this.state.photos}\n\t\t\t\tnumColumns={this.state.numColumns}\n\t\t\t\tkey={this.state.numColumns}\n\t\t\t\trenderItem={this.renderImageTile}\n\t\t\t\tkeyExtractor={(_, index) => index}\n\t\t\t\tonEndReached={() => {\n\t\t\t\t\tif (this.isLocal()) this.getPhotos();\n\t\t\t\t}}\n\t\t\t\tonEndReachedThreshold={0.5}\n\t\t\t\tListEmptyComponent={\n\t\t\t\t\tthis.state.isEmpty ? this.renderEmptyState() : this.renderPreloader()\n\t\t\t\t}\n\t\t\t\tinitialNumToRender={24}\n\t\t\t\tgetItemLayout={this.getItemLayout}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { hasCameraPermission } = this.state;\n\n\t\tif (this.isLocal() && !hasCameraPermission) {\n\t\t\treturn this.props.noCameraPermissionComponent || null;\n\t\t}\n\n\t\treturn (\n\t\t\t<View style={[styles.container, this.props.style]}>\n\t\t\t\t{this.renderImages()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\tflex: 1,\n\t},\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { Text } from "@plusscommunities/pluss-core-app/components";
|
|
3
|
+
import { Dimensions, ImageBackground, TouchableHighlight, View, StyleSheet } from "react-native";
|
|
4
|
+
import * as MediaLibrary from "expo-media-library";
|
|
5
|
+
import { Icon } from "@rneui/themed";
|
|
6
|
+
import moment from "moment";
|
|
7
|
+
import { getThumb300 } from "../../helper";
|
|
8
|
+
const screenWidth = Dimensions.get("window").width;
|
|
9
|
+
class ImageTile extends React.PureComponent {
|
|
10
|
+
renderVideoOverlay() {
|
|
11
|
+
const {
|
|
12
|
+
item
|
|
13
|
+
} = this.props;
|
|
14
|
+
if (item.mediaType !== MediaLibrary.MediaType.video) return null;
|
|
15
|
+
let durationText = "";
|
|
16
|
+
if (item.duration) {
|
|
17
|
+
const duration = moment.duration(item.duration, "seconds").asMilliseconds();
|
|
18
|
+
durationText = moment.utc(duration).format("HH:mm:ss");
|
|
19
|
+
}
|
|
20
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
21
|
+
style: styles.defaultVideoOverlay
|
|
22
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
23
|
+
name: "video-camera",
|
|
24
|
+
type: "font-awesome",
|
|
25
|
+
iconStyle: styles.videoIcon,
|
|
26
|
+
style: styles.videoIconContainer
|
|
27
|
+
}), /*#__PURE__*/React.createElement(Text, {
|
|
28
|
+
style: styles.videoDurationText
|
|
29
|
+
}, durationText));
|
|
30
|
+
}
|
|
31
|
+
renderSelectedOverlay() {
|
|
32
|
+
const {
|
|
33
|
+
selected,
|
|
34
|
+
selectedItemNumber,
|
|
35
|
+
renderSelectedComponent
|
|
36
|
+
} = this.props;
|
|
37
|
+
if (!selected) return null;
|
|
38
|
+
if (renderSelectedComponent) return renderSelectedComponent(selectedItemNumber);
|
|
39
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
40
|
+
style: [styles.defaultSelectedOverlay, {
|
|
41
|
+
opacity: selected ? 0.5 : 1
|
|
42
|
+
}]
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
render() {
|
|
46
|
+
const {
|
|
47
|
+
item,
|
|
48
|
+
index,
|
|
49
|
+
selectImage,
|
|
50
|
+
width,
|
|
51
|
+
height,
|
|
52
|
+
style,
|
|
53
|
+
isRemote
|
|
54
|
+
} = this.props;
|
|
55
|
+
if (!item) return null;
|
|
56
|
+
const actualWidth = width || screenWidth / 4;
|
|
57
|
+
const actualHeight = height || screenWidth / 4;
|
|
58
|
+
const uri = isRemote ? getThumb300(item.uri) : item.uri;
|
|
59
|
+
return /*#__PURE__*/React.createElement(TouchableHighlight, {
|
|
60
|
+
underlayColor: "transparent",
|
|
61
|
+
onPress: () => selectImage(item, index)
|
|
62
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
63
|
+
style: [{
|
|
64
|
+
width: actualWidth,
|
|
65
|
+
height: actualHeight
|
|
66
|
+
}, style]
|
|
67
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
68
|
+
style: styles.imageContainer
|
|
69
|
+
}, /*#__PURE__*/React.createElement(ImageBackground, {
|
|
70
|
+
style: styles.imageBackground,
|
|
71
|
+
source: {
|
|
72
|
+
uri
|
|
73
|
+
}
|
|
74
|
+
}, this.renderVideoOverlay(), this.renderSelectedOverlay()))));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const styles = StyleSheet.create({
|
|
78
|
+
imageContainer: {
|
|
79
|
+
flex: 1,
|
|
80
|
+
alignItems: "center",
|
|
81
|
+
justifyContent: "center"
|
|
82
|
+
},
|
|
83
|
+
imageBackground: {
|
|
84
|
+
width: "100%",
|
|
85
|
+
height: "100%"
|
|
86
|
+
},
|
|
87
|
+
defaultSelectedOverlay: {
|
|
88
|
+
flex: 1,
|
|
89
|
+
backgroundColor: "#000"
|
|
90
|
+
},
|
|
91
|
+
defaultVideoOverlay: {
|
|
92
|
+
position: "absolute",
|
|
93
|
+
left: 3,
|
|
94
|
+
bottom: 3,
|
|
95
|
+
right: 3,
|
|
96
|
+
flexDirection: "row",
|
|
97
|
+
justifyContent: "space-between",
|
|
98
|
+
alignItems: "center"
|
|
99
|
+
},
|
|
100
|
+
videoIconContainer: {
|
|
101
|
+
flex: 1,
|
|
102
|
+
paddingRight: 8,
|
|
103
|
+
paddingBottom: 1
|
|
104
|
+
},
|
|
105
|
+
videoIcon: {
|
|
106
|
+
fontSize: 12,
|
|
107
|
+
color: "#fff",
|
|
108
|
+
textAlign: "right"
|
|
109
|
+
},
|
|
110
|
+
videoDurationText: {
|
|
111
|
+
fontFamily: "sf-semibold",
|
|
112
|
+
fontSize: 12,
|
|
113
|
+
color: "#fff"
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
export default ImageTile;
|
|
117
|
+
//# sourceMappingURL=ImageTile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Text","Dimensions","ImageBackground","TouchableHighlight","View","StyleSheet","MediaLibrary","Icon","moment","getThumb300","screenWidth","get","width","ImageTile","PureComponent","renderVideoOverlay","item","props","mediaType","MediaType","video","durationText","duration","asMilliseconds","utc","format","createElement","style","styles","defaultVideoOverlay","name","type","iconStyle","videoIcon","videoIconContainer","videoDurationText","renderSelectedOverlay","selected","selectedItemNumber","renderSelectedComponent","defaultSelectedOverlay","opacity","render","index","selectImage","height","isRemote","actualWidth","actualHeight","uri","underlayColor","onPress","imageContainer","imageBackground","source","create","flex","alignItems","justifyContent","backgroundColor","position","left","bottom","right","flexDirection","paddingRight","paddingBottom","fontSize","color","textAlign","fontFamily"],"sources":["ImageTile.js"],"sourcesContent":["import React from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n\tDimensions,\n\tImageBackground,\n\tTouchableHighlight,\n\tView,\n\tStyleSheet,\n} from \"react-native\";\nimport * as MediaLibrary from \"expo-media-library\";\nimport { Icon } from \"@rneui/themed\";\nimport moment from \"moment\";\nimport { getThumb300 } from \"../../helper\";\n\nconst screenWidth = Dimensions.get(\"window\").width;\n\nclass ImageTile extends React.PureComponent {\n\trenderVideoOverlay() {\n\t\tconst { item } = this.props;\n\t\tif (item.mediaType !== MediaLibrary.MediaType.video) return null;\n\n\t\tlet durationText = \"\";\n\t\tif (item.duration) {\n\t\t\tconst duration = moment\n\t\t\t\t.duration(item.duration, \"seconds\")\n\t\t\t\t.asMilliseconds();\n\t\t\tdurationText = moment.utc(duration).format(\"HH:mm:ss\");\n\t\t}\n\t\treturn (\n\t\t\t<View style={styles.defaultVideoOverlay}>\n\t\t\t\t<Icon\n\t\t\t\t\tname=\"video-camera\"\n\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\ticonStyle={styles.videoIcon}\n\t\t\t\t\tstyle={styles.videoIconContainer}\n\t\t\t\t/>\n\t\t\t\t<Text style={styles.videoDurationText}>{durationText}</Text>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderSelectedOverlay() {\n\t\tconst { selected, selectedItemNumber, renderSelectedComponent } =\n\t\t\tthis.props;\n\t\tif (!selected) return null;\n\t\tif (renderSelectedComponent)\n\t\t\treturn renderSelectedComponent(selectedItemNumber);\n\t\treturn (\n\t\t\t<View\n\t\t\t\tstyle={[styles.defaultSelectedOverlay, { opacity: selected ? 0.5 : 1 }]}\n\t\t\t/>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { item, index, selectImage, width, height, style, isRemote } =\n\t\t\tthis.props;\n\t\tif (!item) return null;\n\n\t\tconst actualWidth = width || screenWidth / 4;\n\t\tconst actualHeight = height || screenWidth / 4;\n\t\tconst uri = isRemote ? getThumb300(item.uri) : item.uri;\n\n\t\treturn (\n\t\t\t<TouchableHighlight\n\t\t\t\tunderlayColor=\"transparent\"\n\t\t\t\tonPress={() => selectImage(item, index)}\n\t\t\t>\n\t\t\t\t<View style={[{ width: actualWidth, height: actualHeight }, style]}>\n\t\t\t\t\t<View style={styles.imageContainer}>\n\t\t\t\t\t\t<ImageBackground style={styles.imageBackground} source={{ uri }}>\n\t\t\t\t\t\t\t{this.renderVideoOverlay()}\n\t\t\t\t\t\t\t{this.renderSelectedOverlay()}\n\t\t\t\t\t\t</ImageBackground>\n\t\t\t\t\t</View>\n\t\t\t\t</View>\n\t\t\t</TouchableHighlight>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\timageContainer: {\n\t\tflex: 1,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t},\n\timageBackground: {\n\t\twidth: \"100%\",\n\t\theight: \"100%\",\n\t},\n\tdefaultSelectedOverlay: {\n\t\tflex: 1,\n\t\tbackgroundColor: \"#000\",\n\t},\n\tdefaultVideoOverlay: {\n\t\tposition: \"absolute\",\n\t\tleft: 3,\n\t\tbottom: 3,\n\t\tright: 3,\n\t\tflexDirection: \"row\",\n\t\tjustifyContent: \"space-between\",\n\t\talignItems: \"center\",\n\t},\n\tvideoIconContainer: {\n\t\tflex: 1,\n\t\tpaddingRight: 8,\n\t\tpaddingBottom: 1,\n\t},\n\tvideoIcon: {\n\t\tfontSize: 12,\n\t\tcolor: \"#fff\",\n\t\ttextAlign: \"right\",\n\t},\n\tvideoDurationText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 12,\n\t\tcolor: \"#fff\",\n\t},\n});\n\nexport default ImageTile;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export * from "./InlineButton";
|
|
2
|
+
export * from "./AddToCalendarButton";
|
|
3
|
+
export * from "./Forbidden";
|
|
4
|
+
export * from "./FormCard";
|
|
5
|
+
export * from "./FormCardSection";
|
|
6
|
+
export * from "./FormCardSectionOptionLauncher";
|
|
7
|
+
export * from "./ProfilePic";
|
|
8
|
+
export * from "./Spinner";
|
|
9
|
+
export * from "./LoadingCircles";
|
|
10
|
+
export * from "./Popup";
|
|
11
|
+
export * from "./ImagePopup";
|
|
12
|
+
export * from "./VideoPopup";
|
|
13
|
+
export * from "./SharingTools";
|
|
14
|
+
export * from "./MiddlePopup";
|
|
15
|
+
export * from "./ConfirmPopup";
|
|
16
|
+
export * from "./ConfirmationPopup";
|
|
17
|
+
export * from "./CommentSection";
|
|
18
|
+
export * from "./CommentReply";
|
|
19
|
+
export * from "./PopupMenu";
|
|
20
|
+
export * from "./AddButton";
|
|
21
|
+
export * from "./Attachment";
|
|
22
|
+
export * from "./GenericInputSection";
|
|
23
|
+
export * from "./GenericInput";
|
|
24
|
+
export * from "./RadioButton";
|
|
25
|
+
export * from "./PDFPopup";
|
|
26
|
+
export * from "./Text";
|
|
27
|
+
export * from "./Icon";
|
|
28
|
+
export * from "./TickIcon";
|
|
29
|
+
export * from "./Toggle";
|
|
30
|
+
export * from "./Input";
|
|
31
|
+
export * from "./StickyFooter";
|
|
32
|
+
export * from "./CategoryTabs";
|
|
33
|
+
export * from "./DropDownMenu";
|
|
34
|
+
export * from "./DropDownItem";
|
|
35
|
+
export * from "./BackButton";
|
|
36
|
+
export * from "./Reaction";
|
|
37
|
+
export * from "./TouchableSearchBar";
|
|
38
|
+
export * from "./WarningPopup";
|
|
39
|
+
export * from "./FontScalePopup";
|
|
40
|
+
export * from "./FontScaleButton";
|
|
41
|
+
export * from "./UserListPopup";
|
|
42
|
+
export * from "./Reactions";
|
|
43
|
+
export * from "./AudienceSelectorLauncher";
|
|
44
|
+
export * from "./CalendarPopup";
|
|
45
|
+
export { default as EmptyStateWidget } from "./EmptyStateWidget";
|
|
46
|
+
export { default as EmptyStateMain } from "./EmptyStateMain";
|
|
47
|
+
export { default as LoadingStateWidget } from "./LoadingStateWidget";
|
|
48
|
+
export { default as Header } from "./Header";
|
|
49
|
+
export { default as LoadingIndicator } from "./LoadingIndicator";
|
|
50
|
+
export { default as ImageUploader } from "./ImageUploader";
|
|
51
|
+
export { default as DocumentUploader } from "./DocumentUploader";
|
|
52
|
+
export { default as ImageUploadProgress } from "./ImageUploadProgress";
|
|
53
|
+
export { default as UserListing } from "./UserListing";
|
|
54
|
+
export { default as PlussChat } from "./PlussChat";
|
|
55
|
+
export { default as PositionedImage } from "./PositionedImage";
|
|
56
|
+
export * from "./AutoOffsetImage";
|
|
57
|
+
export { default as FormattedText } from "./FormattedText";
|
|
58
|
+
export { default as MediaPlayer } from "./MediaPlayer";
|
|
59
|
+
export { default as AudienceSelectorPage } from "./AudienceSelectorPage";
|
|
60
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["default","EmptyStateWidget","EmptyStateMain","LoadingStateWidget","Header","LoadingIndicator","ImageUploader","DocumentUploader","ImageUploadProgress","UserListing","PlussChat","PositionedImage","FormattedText","MediaPlayer","AudienceSelectorPage"],"sources":["index.js"],"sourcesContent":["export * from \"./InlineButton\";\nexport * from \"./AddToCalendarButton\";\nexport * from \"./Forbidden\";\nexport * from \"./FormCard\";\nexport * from \"./FormCardSection\";\nexport * from \"./FormCardSectionOptionLauncher\";\nexport * from \"./ProfilePic\";\nexport * from \"./Spinner\";\nexport * from \"./LoadingCircles\";\nexport * from \"./Popup\";\nexport * from \"./ImagePopup\";\nexport * from \"./VideoPopup\";\nexport * from \"./SharingTools\";\nexport * from \"./MiddlePopup\";\nexport * from \"./ConfirmPopup\";\nexport * from \"./ConfirmationPopup\";\nexport * from \"./CommentSection\";\nexport * from \"./CommentReply\";\nexport * from \"./PopupMenu\";\nexport * from \"./AddButton\";\nexport * from \"./Attachment\";\nexport * from \"./GenericInputSection\";\nexport * from \"./GenericInput\";\nexport * from \"./RadioButton\";\nexport * from \"./PDFPopup\";\nexport * from \"./Text\";\nexport * from \"./Icon\";\nexport * from \"./TickIcon\";\nexport * from \"./Toggle\";\nexport * from \"./Input\";\nexport * from \"./StickyFooter\";\nexport * from \"./CategoryTabs\";\nexport * from \"./DropDownMenu\";\nexport * from \"./DropDownItem\";\nexport * from \"./BackButton\";\nexport * from \"./Reaction\";\nexport * from \"./TouchableSearchBar\";\nexport * from \"./WarningPopup\";\nexport * from \"./FontScalePopup\";\nexport * from \"./FontScaleButton\";\nexport * from \"./UserListPopup\";\nexport * from \"./Reactions\";\nexport * from \"./AudienceSelectorLauncher\";\nexport * from \"./CalendarPopup\";\nexport { default as EmptyStateWidget } from \"./EmptyStateWidget\";\nexport { default as EmptyStateMain } from \"./EmptyStateMain\";\nexport { default as LoadingStateWidget } from \"./LoadingStateWidget\";\nexport { default as Header } from \"./Header\";\nexport { default as LoadingIndicator } from \"./LoadingIndicator\";\nexport { default as ImageUploader } from \"./ImageUploader\";\nexport { default as DocumentUploader } from \"./DocumentUploader\";\nexport { default as ImageUploadProgress } from \"./ImageUploadProgress\";\nexport { default as UserListing } from \"./UserListing\";\nexport { default as PlussChat } from \"./PlussChat\";\nexport { default as PositionedImage } from \"./PositionedImage\";\nexport * from \"./AutoOffsetImage\";\nexport { default as FormattedText } from \"./FormattedText\";\nexport { default as MediaPlayer } from \"./MediaPlayer\";\nexport { default as AudienceSelectorPage } from \"./AudienceSelectorPage\";\n"],"mappings":"AAAA,cAAc,gBAAgB;AAC9B,cAAc,uBAAuB;AACrC,cAAc,aAAa;AAC3B,cAAc,YAAY;AAC1B,cAAc,mBAAmB;AACjC,cAAc,iCAAiC;AAC/C,cAAc,cAAc;AAC5B,cAAc,WAAW;AACzB,cAAc,kBAAkB;AAChC,cAAc,SAAS;AACvB,cAAc,cAAc;AAC5B,cAAc,cAAc;AAC5B,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,gBAAgB;AAC9B,cAAc,qBAAqB;AACnC,cAAc,kBAAkB;AAChC,cAAc,gBAAgB;AAC9B,cAAc,aAAa;AAC3B,cAAc,aAAa;AAC3B,cAAc,cAAc;AAC5B,cAAc,uBAAuB;AACrC,cAAc,gBAAgB;AAC9B,cAAc,eAAe;AAC7B,cAAc,YAAY;AAC1B,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,UAAU;AACxB,cAAc,SAAS;AACvB,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,gBAAgB;AAC9B,cAAc,cAAc;AAC5B,cAAc,YAAY;AAC1B,cAAc,sBAAsB;AACpC,cAAc,gBAAgB;AAC9B,cAAc,kBAAkB;AAChC,cAAc,mBAAmB;AACjC,cAAc,iBAAiB;AAC/B,cAAc,aAAa;AAC3B,cAAc,4BAA4B;AAC1C,cAAc,iBAAiB;AAC/B,SAASA,OAAO,IAAIC,gBAAgB,QAAQ,oBAAoB;AAChE,SAASD,OAAO,IAAIE,cAAc,QAAQ,kBAAkB;AAC5D,SAASF,OAAO,IAAIG,kBAAkB,QAAQ,sBAAsB;AACpE,SAASH,OAAO,IAAII,MAAM,QAAQ,UAAU;AAC5C,SAASJ,OAAO,IAAIK,gBAAgB,QAAQ,oBAAoB;AAChE,SAASL,OAAO,IAAIM,aAAa,QAAQ,iBAAiB;AAC1D,SAASN,OAAO,IAAIO,gBAAgB,QAAQ,oBAAoB;AAChE,SAASP,OAAO,IAAIQ,mBAAmB,QAAQ,uBAAuB;AACtE,SAASR,OAAO,IAAIS,WAAW,QAAQ,eAAe;AACtD,SAAST,OAAO,IAAIU,SAAS,QAAQ,aAAa;AAClD,SAASV,OAAO,IAAIW,eAAe,QAAQ,mBAAmB;AAC9D,cAAc,mBAAmB;AACjC,SAASX,OAAO,IAAIY,aAAa,QAAQ,iBAAiB;AAC1D,SAASZ,OAAO,IAAIa,WAAW,QAAQ,eAAe;AACtD,SAASb,OAAO,IAAIc,oBAAoB,QAAQ,wBAAwB","ignoreList":[]}
|