@plusscommunities/pluss-core-app 8.0.28 → 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
- package/src/components/react-native-expo-image-cropper/ExpoImageManipulator.js +91 -87
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import React, { Component } from "react";
|
|
2
|
+
import { View, TouchableWithoutFeedback, Modal } from "react-native";
|
|
3
|
+
import { Text } from "./Text";
|
|
4
|
+
import _ from "lodash";
|
|
5
|
+
import { connect } from "react-redux";
|
|
6
|
+
import { LINEGREY, TEXT_DARK, TEXT_LIGHT, getMainBrandingColourFromState } from "../colours";
|
|
7
|
+
import { InlineButton } from "./InlineButton";
|
|
8
|
+
class Popup extends Component {
|
|
9
|
+
renderOptions() {
|
|
10
|
+
if (!this.props.options) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
14
|
+
style: styles.bottom
|
|
15
|
+
}, _.map(this.props.options, (option, index) => {
|
|
16
|
+
return /*#__PURE__*/React.createElement(InlineButton, {
|
|
17
|
+
key: index,
|
|
18
|
+
onPress: option.action,
|
|
19
|
+
color: "#fff",
|
|
20
|
+
textStyle: [styles.optionText, {
|
|
21
|
+
color: this.props.colourBrandingMain
|
|
22
|
+
}, option.bold && styles.optionTextBold]
|
|
23
|
+
}, option.text);
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
renderTitle() {
|
|
27
|
+
if (!this.props.title) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return /*#__PURE__*/React.createElement(Text, {
|
|
31
|
+
style: [styles.title, {
|
|
32
|
+
color: this.props.colourBrandingMain
|
|
33
|
+
}]
|
|
34
|
+
}, this.props.title);
|
|
35
|
+
}
|
|
36
|
+
renderContent() {
|
|
37
|
+
if (this.props.content) {
|
|
38
|
+
return this.props.content;
|
|
39
|
+
}
|
|
40
|
+
if (!this.props.text) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
return /*#__PURE__*/React.createElement(Text, {
|
|
44
|
+
style: styles.text
|
|
45
|
+
}, this.props.text);
|
|
46
|
+
}
|
|
47
|
+
render() {
|
|
48
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
|
49
|
+
visible: true,
|
|
50
|
+
transparent: true,
|
|
51
|
+
animationType: "fade",
|
|
52
|
+
onRequestClose: this.props.onClose
|
|
53
|
+
}, /*#__PURE__*/React.createElement(TouchableWithoutFeedback, {
|
|
54
|
+
style: styles.container,
|
|
55
|
+
onPress: this.props.onClose
|
|
56
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
57
|
+
style: styles.container
|
|
58
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
59
|
+
style: [styles.menu, this.props.containerStyle]
|
|
60
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
61
|
+
style: styles.top
|
|
62
|
+
}, this.renderTitle(), this.renderContent(), this.props.children), this.renderOptions()))));
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const styles = {
|
|
66
|
+
container: {
|
|
67
|
+
position: "absolute",
|
|
68
|
+
bottom: 0,
|
|
69
|
+
left: 0,
|
|
70
|
+
right: 0,
|
|
71
|
+
top: 0,
|
|
72
|
+
backgroundColor: "rgba(0,0,0,0.5)",
|
|
73
|
+
zIndex: 1000,
|
|
74
|
+
paddingHorizontal: 16,
|
|
75
|
+
paddingVertical: 32,
|
|
76
|
+
justifyContent: "center",
|
|
77
|
+
alignItems: "center",
|
|
78
|
+
width: "100%"
|
|
79
|
+
},
|
|
80
|
+
menu: {
|
|
81
|
+
backgroundColor: "#fff",
|
|
82
|
+
borderRadius: 12
|
|
83
|
+
},
|
|
84
|
+
top: {
|
|
85
|
+
padding: 24
|
|
86
|
+
},
|
|
87
|
+
title: {
|
|
88
|
+
fontFamily: "sf-bold",
|
|
89
|
+
fontSize: 24,
|
|
90
|
+
lineHeight: 24,
|
|
91
|
+
color: TEXT_DARK,
|
|
92
|
+
textAlign: "center",
|
|
93
|
+
marginBottom: 16
|
|
94
|
+
},
|
|
95
|
+
text: {
|
|
96
|
+
fontFamily: "sf-regular",
|
|
97
|
+
fontSize: 16,
|
|
98
|
+
lineHeight: 22,
|
|
99
|
+
color: TEXT_LIGHT,
|
|
100
|
+
textAlign: "center"
|
|
101
|
+
},
|
|
102
|
+
bottom: {
|
|
103
|
+
borderTopColor: LINEGREY,
|
|
104
|
+
borderTopWidth: 1,
|
|
105
|
+
flexDirection: "row-reverse",
|
|
106
|
+
padding: 8
|
|
107
|
+
},
|
|
108
|
+
option: {
|
|
109
|
+
marginRight: 16
|
|
110
|
+
},
|
|
111
|
+
optionText: {
|
|
112
|
+
fontFamily: "sf-regular",
|
|
113
|
+
fontSize: 16
|
|
114
|
+
},
|
|
115
|
+
optionTextBold: {
|
|
116
|
+
fontFamily: "sf-semibold"
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
const mapStateToProps = state => {
|
|
120
|
+
return {
|
|
121
|
+
colourBrandingMain: getMainBrandingColourFromState(state)
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
const popup = connect(mapStateToProps, {})(Popup);
|
|
125
|
+
export { popup as Popup };
|
|
126
|
+
//# sourceMappingURL=Popup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Component","View","TouchableWithoutFeedback","Modal","Text","_","connect","LINEGREY","TEXT_DARK","TEXT_LIGHT","getMainBrandingColourFromState","InlineButton","Popup","renderOptions","props","options","createElement","style","styles","bottom","map","option","index","key","onPress","action","color","textStyle","optionText","colourBrandingMain","bold","optionTextBold","text","renderTitle","title","renderContent","content","render","visible","transparent","animationType","onRequestClose","onClose","container","menu","containerStyle","top","children","position","left","right","backgroundColor","zIndex","paddingHorizontal","paddingVertical","justifyContent","alignItems","width","borderRadius","padding","fontFamily","fontSize","lineHeight","textAlign","marginBottom","borderTopColor","borderTopWidth","flexDirection","marginRight","mapStateToProps","state","popup"],"sources":["Popup.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { View, TouchableWithoutFeedback, Modal } from \"react-native\";\nimport { Text } from \"./Text\";\nimport _ from \"lodash\";\nimport { connect } from \"react-redux\";\nimport {\n\tLINEGREY,\n\tTEXT_DARK,\n\tTEXT_LIGHT,\n\tgetMainBrandingColourFromState,\n} from \"../colours\";\nimport { InlineButton } from \"./InlineButton\";\n\nclass Popup extends Component {\n\trenderOptions() {\n\t\tif (!this.props.options) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<View style={styles.bottom}>\n\t\t\t\t{_.map(this.props.options, (option, index) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<InlineButton\n\t\t\t\t\t\t\tkey={index}\n\t\t\t\t\t\t\tonPress={option.action}\n\t\t\t\t\t\t\tcolor=\"#fff\"\n\t\t\t\t\t\t\ttextStyle={[\n\t\t\t\t\t\t\t\tstyles.optionText,\n\t\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t\t\toption.bold && styles.optionTextBold,\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{option.text}\n\t\t\t\t\t\t</InlineButton>\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderTitle() {\n\t\tif (!this.props.title) {\n\t\t\treturn null;\n\t\t}\n\t\treturn (\n\t\t\t<Text style={[styles.title, { color: this.props.colourBrandingMain }]}>\n\t\t\t\t{this.props.title}\n\t\t\t</Text>\n\t\t);\n\t}\n\n\trenderContent() {\n\t\tif (this.props.content) {\n\t\t\treturn this.props.content;\n\t\t}\n\t\tif (!this.props.text) {\n\t\t\treturn null;\n\t\t}\n\t\treturn <Text style={styles.text}>{this.props.text}</Text>;\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Modal\n\t\t\t\tvisible\n\t\t\t\ttransparent\n\t\t\t\tanimationType=\"fade\"\n\t\t\t\tonRequestClose={this.props.onClose}\n\t\t\t>\n\t\t\t\t<TouchableWithoutFeedback\n\t\t\t\t\tstyle={styles.container}\n\t\t\t\t\tonPress={this.props.onClose}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.container}>\n\t\t\t\t\t\t<View style={[styles.menu, this.props.containerStyle]}>\n\t\t\t\t\t\t\t<View style={styles.top}>\n\t\t\t\t\t\t\t\t{this.renderTitle()}\n\t\t\t\t\t\t\t\t{this.renderContent()}\n\t\t\t\t\t\t\t\t{this.props.children}\n\t\t\t\t\t\t\t</View>\n\t\t\t\t\t\t\t{this.renderOptions()}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</TouchableWithoutFeedback>\n\t\t\t</Modal>\n\t\t);\n\t}\n}\n\nconst styles = {\n\tcontainer: {\n\t\tposition: \"absolute\",\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\tbackgroundColor: \"rgba(0,0,0,0.5)\",\n\t\tzIndex: 1000,\n\t\tpaddingHorizontal: 16,\n\t\tpaddingVertical: 32,\n\t\tjustifyContent: \"center\",\n\t\talignItems: \"center\",\n\t\twidth: \"100%\",\n\t},\n\tmenu: {\n\t\tbackgroundColor: \"#fff\",\n\t\tborderRadius: 12,\n\t},\n\ttop: {\n\t\tpadding: 24,\n\t},\n\ttitle: {\n\t\tfontFamily: \"sf-bold\",\n\t\tfontSize: 24,\n\t\tlineHeight: 24,\n\t\tcolor: TEXT_DARK,\n\t\ttextAlign: \"center\",\n\t\tmarginBottom: 16,\n\t},\n\ttext: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\tlineHeight: 22,\n\t\tcolor: TEXT_LIGHT,\n\t\ttextAlign: \"center\",\n\t},\n\tbottom: {\n\t\tborderTopColor: LINEGREY,\n\t\tborderTopWidth: 1,\n\t\tflexDirection: \"row-reverse\",\n\t\tpadding: 8,\n\t},\n\toption: {\n\t\tmarginRight: 16,\n\t},\n\toptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t},\n\toptionTextBold: {\n\t\tfontFamily: \"sf-semibold\",\n\t},\n};\n\nconst mapStateToProps = (state) => {\n\treturn {\n\t\tcolourBrandingMain: getMainBrandingColourFromState(state),\n\t};\n};\n\nconst popup = connect(mapStateToProps, {})(Popup);\nexport { popup as Popup };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import React, { Component } from "react";
|
|
2
|
+
import { Text } from "@plusscommunities/pluss-core-app/components";
|
|
3
|
+
import { View, TouchableWithoutFeedback, TouchableOpacity, Modal } from "react-native";
|
|
4
|
+
import { connect } from "react-redux";
|
|
5
|
+
import _ from "lodash";
|
|
6
|
+
import { getMainBrandingColourFromState, LINEGREY, TEXT_DARK } from "../colours";
|
|
7
|
+
class PopupMenu extends Component {
|
|
8
|
+
renderOption(item, index) {
|
|
9
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
10
|
+
key: index,
|
|
11
|
+
onPress: item.onPress
|
|
12
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
13
|
+
style: [styles.option, index === 0 && styles.firstOption]
|
|
14
|
+
}, _.isEmpty(item.text) && item.content ? item.content : /*#__PURE__*/React.createElement(Text, {
|
|
15
|
+
style: styles.optionText
|
|
16
|
+
}, item.text)));
|
|
17
|
+
}
|
|
18
|
+
renderOptions() {
|
|
19
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
20
|
+
style: styles.optionsContainer
|
|
21
|
+
}, _.map(this.props.options, (item, index) => {
|
|
22
|
+
return this.renderOption(item, index);
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
renderTitle() {
|
|
26
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
27
|
+
style: styles.titleContainer
|
|
28
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
29
|
+
style: styles.titleText
|
|
30
|
+
}, this.props.title));
|
|
31
|
+
}
|
|
32
|
+
renderCancel() {
|
|
33
|
+
return /*#__PURE__*/React.createElement(TouchableOpacity, {
|
|
34
|
+
onPress: this.props.onClose
|
|
35
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
36
|
+
style: [styles.option, styles.cancelOption]
|
|
37
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
38
|
+
style: [styles.optionText, styles.cancelText, {
|
|
39
|
+
color: this.props.colourBrandingMain
|
|
40
|
+
}]
|
|
41
|
+
}, this.props.cancelText)));
|
|
42
|
+
}
|
|
43
|
+
render() {
|
|
44
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
|
45
|
+
visible: true,
|
|
46
|
+
transparent: true,
|
|
47
|
+
animationType: "slide",
|
|
48
|
+
onRequestClose: this.props.onClose
|
|
49
|
+
}, /*#__PURE__*/React.createElement(TouchableWithoutFeedback, {
|
|
50
|
+
style: styles.container,
|
|
51
|
+
onPress: this.props.onClose
|
|
52
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
53
|
+
style: styles.container
|
|
54
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
55
|
+
style: styles.menu
|
|
56
|
+
}, this.renderTitle(), this.renderOptions(), this.renderCancel()))));
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const styles = {
|
|
60
|
+
container: {
|
|
61
|
+
position: "absolute",
|
|
62
|
+
bottom: 0,
|
|
63
|
+
left: 0,
|
|
64
|
+
right: 0,
|
|
65
|
+
top: 0,
|
|
66
|
+
backgroundColor: "rgba(0,0,0,0.5)",
|
|
67
|
+
zIndex: 1000
|
|
68
|
+
},
|
|
69
|
+
menu: {
|
|
70
|
+
position: "absolute",
|
|
71
|
+
bottom: 0,
|
|
72
|
+
left: 0,
|
|
73
|
+
right: 0,
|
|
74
|
+
backgroundColor: "#fff",
|
|
75
|
+
borderTopLeftRadius: 12,
|
|
76
|
+
borderTopRightRadius: 12
|
|
77
|
+
},
|
|
78
|
+
optionsContainer: {
|
|
79
|
+
paddingHorizontal: 16
|
|
80
|
+
},
|
|
81
|
+
option: {
|
|
82
|
+
paddingVertical: 16,
|
|
83
|
+
borderColor: LINEGREY,
|
|
84
|
+
borderTopWidth: 1
|
|
85
|
+
},
|
|
86
|
+
cancelOption: {
|
|
87
|
+
paddingHorizontal: 16
|
|
88
|
+
},
|
|
89
|
+
firstOption: {
|
|
90
|
+
borderTopWidth: 0
|
|
91
|
+
},
|
|
92
|
+
optionText: {
|
|
93
|
+
fontFamily: "sf-regular",
|
|
94
|
+
fontSize: 16,
|
|
95
|
+
textAlign: "center",
|
|
96
|
+
color: TEXT_DARK
|
|
97
|
+
},
|
|
98
|
+
cancelText: {
|
|
99
|
+
fontFamily: "sf-medium"
|
|
100
|
+
},
|
|
101
|
+
titleContainer: {
|
|
102
|
+
padding: 16,
|
|
103
|
+
borderColor: LINEGREY,
|
|
104
|
+
borderBottomWidth: 1
|
|
105
|
+
},
|
|
106
|
+
titleText: {
|
|
107
|
+
fontFamily: "sf-semibold",
|
|
108
|
+
fontSize: 16,
|
|
109
|
+
textAlign: "center",
|
|
110
|
+
color: TEXT_DARK
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const mapStateToProps = state => {
|
|
114
|
+
return {
|
|
115
|
+
colourBrandingMain: getMainBrandingColourFromState(state)
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
const popupMenu = connect(mapStateToProps, {})(PopupMenu);
|
|
119
|
+
export { popupMenu as PopupMenu };
|
|
120
|
+
//# sourceMappingURL=PopupMenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Component","Text","View","TouchableWithoutFeedback","TouchableOpacity","Modal","connect","_","getMainBrandingColourFromState","LINEGREY","TEXT_DARK","PopupMenu","renderOption","item","index","createElement","key","onPress","style","styles","option","firstOption","isEmpty","text","content","optionText","renderOptions","optionsContainer","map","props","options","renderTitle","titleContainer","titleText","title","renderCancel","onClose","cancelOption","cancelText","color","colourBrandingMain","render","visible","transparent","animationType","onRequestClose","container","menu","position","bottom","left","right","top","backgroundColor","zIndex","borderTopLeftRadius","borderTopRightRadius","paddingHorizontal","paddingVertical","borderColor","borderTopWidth","fontFamily","fontSize","textAlign","padding","borderBottomWidth","mapStateToProps","state","popupMenu"],"sources":["PopupMenu.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { Text } from \"@plusscommunities/pluss-core-app/components\";\nimport {\n\tView,\n\tTouchableWithoutFeedback,\n\tTouchableOpacity,\n\tModal,\n} from \"react-native\";\nimport { connect } from \"react-redux\";\nimport _ from \"lodash\";\nimport {\n\tgetMainBrandingColourFromState,\n\tLINEGREY,\n\tTEXT_DARK,\n} from \"../colours\";\n\nclass PopupMenu extends Component {\n\trenderOption(item, index) {\n\t\treturn (\n\t\t\t<TouchableOpacity key={index} onPress={item.onPress}>\n\t\t\t\t<View style={[styles.option, index === 0 && styles.firstOption]}>\n\t\t\t\t\t{_.isEmpty(item.text) && item.content ? (\n\t\t\t\t\t\titem.content\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Text style={styles.optionText}>{item.text}</Text>\n\t\t\t\t\t)}\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trenderOptions() {\n\t\treturn (\n\t\t\t<View style={styles.optionsContainer}>\n\t\t\t\t{_.map(this.props.options, (item, index) => {\n\t\t\t\t\treturn this.renderOption(item, index);\n\t\t\t\t})}\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderTitle() {\n\t\treturn (\n\t\t\t<View style={styles.titleContainer}>\n\t\t\t\t<Text style={styles.titleText}>{this.props.title}</Text>\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderCancel() {\n\t\treturn (\n\t\t\t<TouchableOpacity onPress={this.props.onClose}>\n\t\t\t\t<View style={[styles.option, styles.cancelOption]}>\n\t\t\t\t\t<Text\n\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\tstyles.optionText,\n\t\t\t\t\t\t\tstyles.cancelText,\n\t\t\t\t\t\t\t{ color: this.props.colourBrandingMain },\n\t\t\t\t\t\t]}\n\t\t\t\t\t>\n\t\t\t\t\t\t{this.props.cancelText}\n\t\t\t\t\t</Text>\n\t\t\t\t</View>\n\t\t\t</TouchableOpacity>\n\t\t);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<Modal\n\t\t\t\tvisible\n\t\t\t\ttransparent\n\t\t\t\tanimationType=\"slide\"\n\t\t\t\tonRequestClose={this.props.onClose}\n\t\t\t>\n\t\t\t\t<TouchableWithoutFeedback\n\t\t\t\t\tstyle={styles.container}\n\t\t\t\t\tonPress={this.props.onClose}\n\t\t\t\t>\n\t\t\t\t\t<View style={styles.container}>\n\t\t\t\t\t\t<View style={styles.menu}>\n\t\t\t\t\t\t\t{this.renderTitle()}\n\t\t\t\t\t\t\t{this.renderOptions()}\n\t\t\t\t\t\t\t{this.renderCancel()}\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t</TouchableWithoutFeedback>\n\t\t\t</Modal>\n\t\t);\n\t}\n}\n\nconst styles = {\n\tcontainer: {\n\t\tposition: \"absolute\",\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\ttop: 0,\n\t\tbackgroundColor: \"rgba(0,0,0,0.5)\",\n\t\tzIndex: 1000,\n\t},\n\tmenu: {\n\t\tposition: \"absolute\",\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\tright: 0,\n\t\tbackgroundColor: \"#fff\",\n\t\tborderTopLeftRadius: 12,\n\t\tborderTopRightRadius: 12,\n\t},\n\toptionsContainer: {\n\t\tpaddingHorizontal: 16,\n\t},\n\toption: {\n\t\tpaddingVertical: 16,\n\t\tborderColor: LINEGREY,\n\t\tborderTopWidth: 1,\n\t},\n\tcancelOption: {\n\t\tpaddingHorizontal: 16,\n\t},\n\tfirstOption: {\n\t\tborderTopWidth: 0,\n\t},\n\toptionText: {\n\t\tfontFamily: \"sf-regular\",\n\t\tfontSize: 16,\n\t\ttextAlign: \"center\",\n\t\tcolor: TEXT_DARK,\n\t},\n\tcancelText: {\n\t\tfontFamily: \"sf-medium\",\n\t},\n\ttitleContainer: {\n\t\tpadding: 16,\n\t\tborderColor: LINEGREY,\n\t\tborderBottomWidth: 1,\n\t},\n\ttitleText: {\n\t\tfontFamily: \"sf-semibold\",\n\t\tfontSize: 16,\n\t\ttextAlign: \"center\",\n\t\tcolor: TEXT_DARK,\n\t},\n};\n\nconst mapStateToProps = (state) => {\n\treturn {\n\t\tcolourBrandingMain: getMainBrandingColourFromState(state),\n\t};\n};\n\nconst popupMenu = connect(mapStateToProps, {})(PopupMenu);\nexport { popupMenu as PopupMenu };\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
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; }
|
|
3
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
4
|
+
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); }
|
|
5
|
+
import React, { Component } from "react";
|
|
6
|
+
import { View, Animated, PanResponder, Image, StyleSheet } from "react-native";
|
|
7
|
+
import { Icon } from "@rneui/themed";
|
|
8
|
+
import { BOXGREY, TEXT_LIGHT } from "../colours";
|
|
9
|
+
class PositionedImage extends Component {
|
|
10
|
+
constructor(props) {
|
|
11
|
+
super(props);
|
|
12
|
+
_defineProperty(this, "calculateDimensions", () => {
|
|
13
|
+
Image.getSize(this.props.source.uri, (imageWidth, imageHeight) => {
|
|
14
|
+
// Default vertical positioning
|
|
15
|
+
const newWidth = this.props.width;
|
|
16
|
+
const newHeight = imageHeight * (this.props.width / imageWidth);
|
|
17
|
+
if (newHeight < this.props.height) {
|
|
18
|
+
// If vertical positioning isn't possible, enable horizontal positioning
|
|
19
|
+
this.setState({
|
|
20
|
+
imageWidth: imageWidth * (this.props.height / imageHeight),
|
|
21
|
+
imageHeight: this.props.height,
|
|
22
|
+
isVertical: false,
|
|
23
|
+
showGuide: this.props.onPositionEnd ? true : false
|
|
24
|
+
}, this.onDimensionAvailable);
|
|
25
|
+
} else {
|
|
26
|
+
this.setState({
|
|
27
|
+
imageWidth: newWidth,
|
|
28
|
+
imageHeight: newHeight,
|
|
29
|
+
isVertical: true,
|
|
30
|
+
showGuide: this.props.onPositionEnd ? true : false
|
|
31
|
+
}, this.onDimensionAvailable);
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
_defineProperty(this, "onDimensionAvailable", () => {
|
|
36
|
+
const {
|
|
37
|
+
offset
|
|
38
|
+
} = this.props;
|
|
39
|
+
const {
|
|
40
|
+
imageWidth,
|
|
41
|
+
imageHeight,
|
|
42
|
+
isVertical
|
|
43
|
+
} = this.state;
|
|
44
|
+
if (offset) {
|
|
45
|
+
// Apply percentage offset
|
|
46
|
+
const actual = {
|
|
47
|
+
x: offset.x * imageWidth,
|
|
48
|
+
y: offset.y * imageHeight
|
|
49
|
+
};
|
|
50
|
+
this.imagePosition.setValue(actual);
|
|
51
|
+
} else {
|
|
52
|
+
// Centered by default
|
|
53
|
+
this.imagePosition.setValue({
|
|
54
|
+
x: isVertical ? 0 : -0.5 * imageWidth + 0.5 * this.props.width,
|
|
55
|
+
y: isVertical ? -0.5 * imageHeight + 0.5 * this.props.height : 0
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
if (this.props.onPositionEnd) {
|
|
59
|
+
setTimeout(() => {
|
|
60
|
+
Animated.timing(this.state.animatedOpacity, {
|
|
61
|
+
toValue: 0,
|
|
62
|
+
duration: 900,
|
|
63
|
+
useNativeDriver: false
|
|
64
|
+
}).start(() => {
|
|
65
|
+
this.setState({
|
|
66
|
+
showGuide: false
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
}, 1000);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
this.lastPos = {
|
|
73
|
+
x: 0,
|
|
74
|
+
y: 0
|
|
75
|
+
};
|
|
76
|
+
this.imagePosition = new Animated.ValueXY(this.lastPos);
|
|
77
|
+
this.imagePosition.addListener(value => {
|
|
78
|
+
this.lastPos = value;
|
|
79
|
+
});
|
|
80
|
+
const imagePanResponder = PanResponder.create({
|
|
81
|
+
onStartShouldSetPanResponder: () => {
|
|
82
|
+
this.startPos = this.lastPos;
|
|
83
|
+
if (this.props.onPositionEnd) {
|
|
84
|
+
if (this.props.onPositionStart) this.props.onPositionStart();
|
|
85
|
+
this.setState({
|
|
86
|
+
panning: true
|
|
87
|
+
});
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
},
|
|
92
|
+
onPanResponderMove: (event, gesture) => {
|
|
93
|
+
const newPos = this.state.isVertical ? {
|
|
94
|
+
x: 0,
|
|
95
|
+
y: this.startPos.y + gesture.dy
|
|
96
|
+
} : {
|
|
97
|
+
x: this.startPos.x + gesture.dx,
|
|
98
|
+
y: 0
|
|
99
|
+
};
|
|
100
|
+
this.imagePosition.setValue(newPos);
|
|
101
|
+
},
|
|
102
|
+
onPanResponderTerminationRequest: (event, gesture) => true,
|
|
103
|
+
onPanResponderRelease: (event, gesture) => {
|
|
104
|
+
let endPos = {
|
|
105
|
+
x: 0,
|
|
106
|
+
y: 0
|
|
107
|
+
};
|
|
108
|
+
if (this.state.isVertical) {
|
|
109
|
+
const endY = this.startPos.y + gesture.dy;
|
|
110
|
+
const limitY = this.props.height - this.state.imageHeight;
|
|
111
|
+
if (endY > 0) {
|
|
112
|
+
// console.log('top reached', endY);
|
|
113
|
+
endPos = {
|
|
114
|
+
x: 0,
|
|
115
|
+
y: 0
|
|
116
|
+
};
|
|
117
|
+
} else if (endY < limitY) {
|
|
118
|
+
// console.log('bottom reached', endY, limitY);
|
|
119
|
+
endPos = {
|
|
120
|
+
x: 0,
|
|
121
|
+
y: limitY
|
|
122
|
+
};
|
|
123
|
+
} else {
|
|
124
|
+
endPos = {
|
|
125
|
+
x: 0,
|
|
126
|
+
y: endY
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
} else {
|
|
130
|
+
const endX = this.startPos.x + gesture.dx;
|
|
131
|
+
const limitX = this.props.width - this.state.imageWidth;
|
|
132
|
+
if (endX > 0) {
|
|
133
|
+
// console.log('left reached', endX);
|
|
134
|
+
endPos = {
|
|
135
|
+
x: 0,
|
|
136
|
+
y: 0
|
|
137
|
+
};
|
|
138
|
+
} else if (endX < limitX) {
|
|
139
|
+
// console.log('right reached', endX, limitX);
|
|
140
|
+
endPos = {
|
|
141
|
+
x: limitX,
|
|
142
|
+
y: 0
|
|
143
|
+
};
|
|
144
|
+
} else {
|
|
145
|
+
endPos = {
|
|
146
|
+
x: endX,
|
|
147
|
+
y: 0
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
Animated.spring(this.imagePosition, {
|
|
152
|
+
toValue: endPos,
|
|
153
|
+
useNativeDriver: false
|
|
154
|
+
}).start();
|
|
155
|
+
if (this.props.onPositionEnd) this.props.onPositionEnd({
|
|
156
|
+
x: endPos.x / this.state.imageWidth,
|
|
157
|
+
y: endPos.y / this.state.imageHeight
|
|
158
|
+
});
|
|
159
|
+
this.setState({
|
|
160
|
+
panning: false
|
|
161
|
+
});
|
|
162
|
+
},
|
|
163
|
+
onPanResponderTerminate: (event, gesture) => {
|
|
164
|
+
this.setState({
|
|
165
|
+
panning: false
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
this.state = {
|
|
170
|
+
imageWidth: 0,
|
|
171
|
+
imageHeight: 0,
|
|
172
|
+
imagePanResponder,
|
|
173
|
+
isVertical: true,
|
|
174
|
+
showGuide: false,
|
|
175
|
+
animatedOpacity: new Animated.Value(1),
|
|
176
|
+
panning: false
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
componentDidMount() {
|
|
180
|
+
this.calculateDimensions();
|
|
181
|
+
}
|
|
182
|
+
componentDidUpdate(prevProps) {
|
|
183
|
+
if (prevProps.source.uri !== this.props.source.uri) {
|
|
184
|
+
// console.log('componentDidUpdate', prevProps.source.uri, this.props.source.uri);
|
|
185
|
+
this.calculateDimensions();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
renderGrid() {
|
|
189
|
+
if (!this.state.panning) return null;
|
|
190
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
191
|
+
style: styles.gridContainer
|
|
192
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
193
|
+
style: styles.gridHorizontal
|
|
194
|
+
}), /*#__PURE__*/React.createElement(View, {
|
|
195
|
+
style: styles.gridVertical
|
|
196
|
+
}));
|
|
197
|
+
}
|
|
198
|
+
renderGuide() {
|
|
199
|
+
if (!this.state.showGuide) return null;
|
|
200
|
+
const {
|
|
201
|
+
animatedOpacity,
|
|
202
|
+
isVertical
|
|
203
|
+
} = this.state;
|
|
204
|
+
return /*#__PURE__*/React.createElement(Animated.View, {
|
|
205
|
+
style: [styles.guideContainer, {
|
|
206
|
+
opacity: animatedOpacity
|
|
207
|
+
}]
|
|
208
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
209
|
+
style: [styles.guideIconContainer, {
|
|
210
|
+
flexDirection: "column"
|
|
211
|
+
}]
|
|
212
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
213
|
+
name: "arrow-up",
|
|
214
|
+
type: "font-awesome",
|
|
215
|
+
iconStyle: [styles.guideIcon, !isVertical && styles.guideIconDisabled]
|
|
216
|
+
}), /*#__PURE__*/React.createElement(Icon, {
|
|
217
|
+
name: "arrow-down",
|
|
218
|
+
type: "font-awesome",
|
|
219
|
+
iconStyle: [styles.guideIcon, !isVertical && styles.guideIconDisabled]
|
|
220
|
+
})), /*#__PURE__*/React.createElement(View, {
|
|
221
|
+
style: [styles.guideIconContainer, {
|
|
222
|
+
flexDirection: "row"
|
|
223
|
+
}]
|
|
224
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
225
|
+
name: "arrow-left",
|
|
226
|
+
type: "font-awesome",
|
|
227
|
+
iconStyle: [styles.guideIcon, isVertical && styles.guideIconDisabled]
|
|
228
|
+
}), /*#__PURE__*/React.createElement(Icon, {
|
|
229
|
+
name: "arrow-right",
|
|
230
|
+
type: "font-awesome",
|
|
231
|
+
iconStyle: [styles.guideIcon, isVertical && styles.guideIconDisabled]
|
|
232
|
+
})));
|
|
233
|
+
}
|
|
234
|
+
render() {
|
|
235
|
+
const {
|
|
236
|
+
imageWidth,
|
|
237
|
+
imageHeight,
|
|
238
|
+
imagePanResponder
|
|
239
|
+
} = this.state;
|
|
240
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
241
|
+
style: [styles.container, {
|
|
242
|
+
width: this.props.width,
|
|
243
|
+
height: this.props.height
|
|
244
|
+
}, this.props.style]
|
|
245
|
+
}, /*#__PURE__*/React.createElement(Animated.Image, _extends({
|
|
246
|
+
source: this.props.source,
|
|
247
|
+
style: [{
|
|
248
|
+
width: imageWidth,
|
|
249
|
+
height: imageHeight
|
|
250
|
+
}, this.imagePosition.getLayout()]
|
|
251
|
+
}, imagePanResponder.panHandlers)), this.renderGrid(), this.renderGuide());
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
const styles = StyleSheet.create({
|
|
255
|
+
container: {
|
|
256
|
+
overflow: "hidden",
|
|
257
|
+
backgroundColor: BOXGREY
|
|
258
|
+
},
|
|
259
|
+
guideContainer: {
|
|
260
|
+
position: "absolute",
|
|
261
|
+
top: 0,
|
|
262
|
+
right: 0,
|
|
263
|
+
bottom: 0,
|
|
264
|
+
left: 0,
|
|
265
|
+
alignItems: "center",
|
|
266
|
+
justifyContent: "center",
|
|
267
|
+
backgroundColor: "#0006"
|
|
268
|
+
},
|
|
269
|
+
guideIconContainer: {
|
|
270
|
+
position: "absolute",
|
|
271
|
+
top: 0,
|
|
272
|
+
right: 0,
|
|
273
|
+
bottom: 0,
|
|
274
|
+
left: 0,
|
|
275
|
+
alignItems: "center",
|
|
276
|
+
justifyContent: "center"
|
|
277
|
+
},
|
|
278
|
+
guideIcon: {
|
|
279
|
+
color: "#fff",
|
|
280
|
+
fontSize: 50,
|
|
281
|
+
margin: 15
|
|
282
|
+
},
|
|
283
|
+
guideIconDisabled: {
|
|
284
|
+
color: TEXT_LIGHT
|
|
285
|
+
},
|
|
286
|
+
gridContainer: {
|
|
287
|
+
position: "absolute",
|
|
288
|
+
top: 0,
|
|
289
|
+
right: 0,
|
|
290
|
+
bottom: 0,
|
|
291
|
+
left: 0
|
|
292
|
+
},
|
|
293
|
+
gridHorizontal: {
|
|
294
|
+
position: "absolute",
|
|
295
|
+
top: 0,
|
|
296
|
+
right: 0,
|
|
297
|
+
left: 0,
|
|
298
|
+
height: "50%",
|
|
299
|
+
borderBottomWidth: 1,
|
|
300
|
+
borderBottomColor: BOXGREY
|
|
301
|
+
},
|
|
302
|
+
gridVertical: {
|
|
303
|
+
position: "absolute",
|
|
304
|
+
top: 0,
|
|
305
|
+
right: 0,
|
|
306
|
+
bottom: 0,
|
|
307
|
+
width: "50%",
|
|
308
|
+
borderLeftWidth: 1,
|
|
309
|
+
borderLeftColor: BOXGREY
|
|
310
|
+
}
|
|
311
|
+
});
|
|
312
|
+
export default PositionedImage;
|
|
313
|
+
//# sourceMappingURL=PositionedImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Component","View","Animated","PanResponder","Image","StyleSheet","Icon","BOXGREY","TEXT_LIGHT","PositionedImage","constructor","props","_defineProperty","getSize","source","uri","imageWidth","imageHeight","newWidth","width","newHeight","height","setState","isVertical","showGuide","onPositionEnd","onDimensionAvailable","offset","state","actual","x","y","imagePosition","setValue","setTimeout","timing","animatedOpacity","toValue","duration","useNativeDriver","start","lastPos","ValueXY","addListener","value","imagePanResponder","create","onStartShouldSetPanResponder","startPos","onPositionStart","panning","onPanResponderMove","event","gesture","newPos","dy","dx","onPanResponderTerminationRequest","onPanResponderRelease","endPos","endY","limitY","endX","limitX","spring","onPanResponderTerminate","Value","componentDidMount","calculateDimensions","componentDidUpdate","prevProps","renderGrid","createElement","style","styles","gridContainer","gridHorizontal","gridVertical","renderGuide","guideContainer","opacity","guideIconContainer","flexDirection","name","type","iconStyle","guideIcon","guideIconDisabled","render","container","_extends","getLayout","panHandlers","overflow","backgroundColor","position","top","right","bottom","left","alignItems","justifyContent","color","fontSize","margin","borderBottomWidth","borderBottomColor","borderLeftWidth","borderLeftColor"],"sources":["PositionedImage.js"],"sourcesContent":["import React, { Component } from \"react\";\nimport { View, Animated, PanResponder, Image, StyleSheet } from \"react-native\";\nimport { Icon } from \"@rneui/themed\";\nimport { BOXGREY, TEXT_LIGHT } from \"../colours\";\n\nclass PositionedImage extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.lastPos = { x: 0, y: 0 };\n\t\tthis.imagePosition = new Animated.ValueXY(this.lastPos);\n\t\tthis.imagePosition.addListener((value) => {\n\t\t\tthis.lastPos = value;\n\t\t});\n\t\tconst imagePanResponder = PanResponder.create({\n\t\t\tonStartShouldSetPanResponder: () => {\n\t\t\t\tthis.startPos = this.lastPos;\n\t\t\t\tif (this.props.onPositionEnd) {\n\t\t\t\t\tif (this.props.onPositionStart) this.props.onPositionStart();\n\t\t\t\t\tthis.setState({ panning: true });\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tonPanResponderMove: (event, gesture) => {\n\t\t\t\tconst newPos = this.state.isVertical\n\t\t\t\t\t? { x: 0, y: this.startPos.y + gesture.dy }\n\t\t\t\t\t: { x: this.startPos.x + gesture.dx, y: 0 };\n\t\t\t\tthis.imagePosition.setValue(newPos);\n\t\t\t},\n\t\t\tonPanResponderTerminationRequest: (event, gesture) => true,\n\t\t\tonPanResponderRelease: (event, gesture) => {\n\t\t\t\tlet endPos = { x: 0, y: 0 };\n\t\t\t\tif (this.state.isVertical) {\n\t\t\t\t\tconst endY = this.startPos.y + gesture.dy;\n\t\t\t\t\tconst limitY = this.props.height - this.state.imageHeight;\n\t\t\t\t\tif (endY > 0) {\n\t\t\t\t\t\t// console.log('top reached', endY);\n\t\t\t\t\t\tendPos = { x: 0, y: 0 };\n\t\t\t\t\t} else if (endY < limitY) {\n\t\t\t\t\t\t// console.log('bottom reached', endY, limitY);\n\t\t\t\t\t\tendPos = { x: 0, y: limitY };\n\t\t\t\t\t} else {\n\t\t\t\t\t\tendPos = { x: 0, y: endY };\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst endX = this.startPos.x + gesture.dx;\n\t\t\t\t\tconst limitX = this.props.width - this.state.imageWidth;\n\t\t\t\t\tif (endX > 0) {\n\t\t\t\t\t\t// console.log('left reached', endX);\n\t\t\t\t\t\tendPos = { x: 0, y: 0 };\n\t\t\t\t\t} else if (endX < limitX) {\n\t\t\t\t\t\t// console.log('right reached', endX, limitX);\n\t\t\t\t\t\tendPos = { x: limitX, y: 0 };\n\t\t\t\t\t} else {\n\t\t\t\t\t\tendPos = { x: endX, y: 0 };\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tAnimated.spring(this.imagePosition, {\n\t\t\t\t\ttoValue: endPos,\n\t\t\t\t\tuseNativeDriver: false,\n\t\t\t\t}).start();\n\n\t\t\t\tif (this.props.onPositionEnd)\n\t\t\t\t\tthis.props.onPositionEnd({\n\t\t\t\t\t\tx: endPos.x / this.state.imageWidth,\n\t\t\t\t\t\ty: endPos.y / this.state.imageHeight,\n\t\t\t\t\t});\n\n\t\t\t\tthis.setState({ panning: false });\n\t\t\t},\n\t\t\tonPanResponderTerminate: (event, gesture) => {\n\t\t\t\tthis.setState({ panning: false });\n\t\t\t},\n\t\t});\n\n\t\tthis.state = {\n\t\t\timageWidth: 0,\n\t\t\timageHeight: 0,\n\t\t\timagePanResponder,\n\t\t\tisVertical: true,\n\t\t\tshowGuide: false,\n\t\t\tanimatedOpacity: new Animated.Value(1),\n\t\t\tpanning: false,\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.calculateDimensions();\n\t}\n\n\tcomponentDidUpdate(prevProps) {\n\t\tif (prevProps.source.uri !== this.props.source.uri) {\n\t\t\t// console.log('componentDidUpdate', prevProps.source.uri, this.props.source.uri);\n\t\t\tthis.calculateDimensions();\n\t\t}\n\t}\n\n\tcalculateDimensions = () => {\n\t\tImage.getSize(this.props.source.uri, (imageWidth, imageHeight) => {\n\t\t\t// Default vertical positioning\n\t\t\tconst newWidth = this.props.width;\n\t\t\tconst newHeight = imageHeight * (this.props.width / imageWidth);\n\n\t\t\tif (newHeight < this.props.height) {\n\t\t\t\t// If vertical positioning isn't possible, enable horizontal positioning\n\t\t\t\tthis.setState(\n\t\t\t\t\t{\n\t\t\t\t\t\timageWidth: imageWidth * (this.props.height / imageHeight),\n\t\t\t\t\t\timageHeight: this.props.height,\n\t\t\t\t\t\tisVertical: false,\n\t\t\t\t\t\tshowGuide: this.props.onPositionEnd ? true : false,\n\t\t\t\t\t},\n\t\t\t\t\tthis.onDimensionAvailable,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tthis.setState(\n\t\t\t\t\t{\n\t\t\t\t\t\timageWidth: newWidth,\n\t\t\t\t\t\timageHeight: newHeight,\n\t\t\t\t\t\tisVertical: true,\n\t\t\t\t\t\tshowGuide: this.props.onPositionEnd ? true : false,\n\t\t\t\t\t},\n\t\t\t\t\tthis.onDimensionAvailable,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t};\n\n\tonDimensionAvailable = () => {\n\t\tconst { offset } = this.props;\n\t\tconst { imageWidth, imageHeight, isVertical } = this.state;\n\n\t\tif (offset) {\n\t\t\t// Apply percentage offset\n\t\t\tconst actual = {\n\t\t\t\tx: offset.x * imageWidth,\n\t\t\t\ty: offset.y * imageHeight,\n\t\t\t};\n\t\t\tthis.imagePosition.setValue(actual);\n\t\t} else {\n\t\t\t// Centered by default\n\t\t\tthis.imagePosition.setValue({\n\t\t\t\tx: isVertical ? 0 : -0.5 * imageWidth + 0.5 * this.props.width,\n\t\t\t\ty: isVertical ? -0.5 * imageHeight + 0.5 * this.props.height : 0,\n\t\t\t});\n\t\t}\n\n\t\tif (this.props.onPositionEnd) {\n\t\t\tsetTimeout(() => {\n\t\t\t\tAnimated.timing(this.state.animatedOpacity, {\n\t\t\t\t\ttoValue: 0,\n\t\t\t\t\tduration: 900,\n\t\t\t\t\tuseNativeDriver: false,\n\t\t\t\t}).start(() => {\n\t\t\t\t\tthis.setState({ showGuide: false });\n\t\t\t\t});\n\t\t\t}, 1000);\n\t\t}\n\t};\n\n\trenderGrid() {\n\t\tif (!this.state.panning) return null;\n\t\treturn (\n\t\t\t<View style={styles.gridContainer}>\n\t\t\t\t<View style={styles.gridHorizontal} />\n\t\t\t\t<View style={styles.gridVertical} />\n\t\t\t</View>\n\t\t);\n\t}\n\n\trenderGuide() {\n\t\tif (!this.state.showGuide) return null;\n\t\tconst { animatedOpacity, isVertical } = this.state;\n\t\treturn (\n\t\t\t<Animated.View\n\t\t\t\tstyle={[styles.guideContainer, { opacity: animatedOpacity }]}\n\t\t\t>\n\t\t\t\t<View style={[styles.guideIconContainer, { flexDirection: \"column\" }]}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname=\"arrow-up\"\n\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\tstyles.guideIcon,\n\t\t\t\t\t\t\t!isVertical && styles.guideIconDisabled,\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname=\"arrow-down\"\n\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\tstyles.guideIcon,\n\t\t\t\t\t\t\t!isVertical && styles.guideIconDisabled,\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t\t<View style={[styles.guideIconContainer, { flexDirection: \"row\" }]}>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname=\"arrow-left\"\n\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\tstyles.guideIcon,\n\t\t\t\t\t\t\tisVertical && styles.guideIconDisabled,\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t\t<Icon\n\t\t\t\t\t\tname=\"arrow-right\"\n\t\t\t\t\t\ttype=\"font-awesome\"\n\t\t\t\t\t\ticonStyle={[\n\t\t\t\t\t\t\tstyles.guideIcon,\n\t\t\t\t\t\t\tisVertical && styles.guideIconDisabled,\n\t\t\t\t\t\t]}\n\t\t\t\t\t/>\n\t\t\t\t</View>\n\t\t\t</Animated.View>\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { imageWidth, imageHeight, imagePanResponder } = this.state;\n\n\t\treturn (\n\t\t\t<View\n\t\t\t\tstyle={[\n\t\t\t\t\tstyles.container,\n\t\t\t\t\t{ width: this.props.width, height: this.props.height },\n\t\t\t\t\tthis.props.style,\n\t\t\t\t]}\n\t\t\t>\n\t\t\t\t<Animated.Image\n\t\t\t\t\tsource={this.props.source}\n\t\t\t\t\tstyle={[\n\t\t\t\t\t\t{ width: imageWidth, height: imageHeight },\n\t\t\t\t\t\tthis.imagePosition.getLayout(),\n\t\t\t\t\t]}\n\t\t\t\t\t{...imagePanResponder.panHandlers}\n\t\t\t\t/>\n\t\t\t\t{this.renderGrid()}\n\t\t\t\t{this.renderGuide()}\n\t\t\t</View>\n\t\t);\n\t}\n}\n\nconst styles = StyleSheet.create({\n\tcontainer: {\n\t\toverflow: \"hidden\",\n\t\tbackgroundColor: BOXGREY,\n\t},\n\tguideContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t\tbackgroundColor: \"#0006\",\n\t},\n\tguideIconContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\tleft: 0,\n\t\talignItems: \"center\",\n\t\tjustifyContent: \"center\",\n\t},\n\tguideIcon: {\n\t\tcolor: \"#fff\",\n\t\tfontSize: 50,\n\t\tmargin: 15,\n\t},\n\tguideIconDisabled: {\n\t\tcolor: TEXT_LIGHT,\n\t},\n\tgridContainer: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\tleft: 0,\n\t},\n\tgridHorizontal: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tright: 0,\n\t\tleft: 0,\n\t\theight: \"50%\",\n\t\tborderBottomWidth: 1,\n\t\tborderBottomColor: BOXGREY,\n\t},\n\tgridVertical: {\n\t\tposition: \"absolute\",\n\t\ttop: 0,\n\t\tright: 0,\n\t\tbottom: 0,\n\t\twidth: \"50%\",\n\t\tborderLeftWidth: 1,\n\t\tborderLeftColor: BOXGREY,\n\t},\n});\n\nexport default PositionedImage;\n"],"mappings":"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","ignoreList":[]}
|