@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.
Files changed (211) hide show
  1. package/dist/module/actions/FollowerActions.js +34 -0
  2. package/dist/module/actions/FollowerActions.js.map +1 -0
  3. package/dist/module/actions/MediaActions.js +29 -0
  4. package/dist/module/actions/MediaActions.js.map +1 -0
  5. package/dist/module/actions/ResidentActions.js +26 -0
  6. package/dist/module/actions/ResidentActions.js.map +1 -0
  7. package/dist/module/actions/UserActions.js +223 -0
  8. package/dist/module/actions/UserActions.js.map +1 -0
  9. package/dist/module/actions/UserSettingsActions.js +14 -0
  10. package/dist/module/actions/UserSettingsActions.js.map +1 -0
  11. package/dist/module/actions/index.js +6 -0
  12. package/dist/module/actions/index.js.map +1 -0
  13. package/dist/module/actions/types.js +17 -0
  14. package/dist/module/actions/types.js.map +1 -0
  15. package/dist/module/apis/analyticsActions.js +20 -0
  16. package/dist/module/apis/analyticsActions.js.map +1 -0
  17. package/dist/module/apis/contactActions.js +27 -0
  18. package/dist/module/apis/contactActions.js.map +1 -0
  19. package/dist/module/apis/eventActions.js +161 -0
  20. package/dist/module/apis/eventActions.js.map +1 -0
  21. package/dist/module/apis/fileActions.js +93 -0
  22. package/dist/module/apis/fileActions.js.map +1 -0
  23. package/dist/module/apis/followerActions.js +38 -0
  24. package/dist/module/apis/followerActions.js.map +1 -0
  25. package/dist/module/apis/index.js +13 -0
  26. package/dist/module/apis/index.js.map +1 -0
  27. package/dist/module/apis/notificationActions.js +60 -0
  28. package/dist/module/apis/notificationActions.js.map +1 -0
  29. package/dist/module/apis/profileActions.js +14 -0
  30. package/dist/module/apis/profileActions.js.map +1 -0
  31. package/dist/module/apis/reactionActions.js +76 -0
  32. package/dist/module/apis/reactionActions.js.map +1 -0
  33. package/dist/module/apis/settingActions.js +22 -0
  34. package/dist/module/apis/settingActions.js.map +1 -0
  35. package/dist/module/apis/stringActions.js +30 -0
  36. package/dist/module/apis/stringActions.js.map +1 -0
  37. package/dist/module/apis/typeActions.js +15 -0
  38. package/dist/module/apis/typeActions.js.map +1 -0
  39. package/dist/module/apis/userActions.js +104 -0
  40. package/dist/module/apis/userActions.js.map +1 -0
  41. package/dist/module/assets/icons/fontawesome/fa-brands-400.ttf +0 -0
  42. package/dist/module/assets/icons/fontawesome/fa-light-300.ttf +0 -0
  43. package/dist/module/assets/icons/fontawesome/fa-regular-400.ttf +0 -0
  44. package/dist/module/assets/icons/fontawesome/fa-solid-900.ttf +0 -0
  45. package/dist/module/assets/icons/fontawesome/fa-thin-100.ttf +0 -0
  46. package/dist/module/assets/icons/fontawesome/fa7-glyphmap.json +4205 -0
  47. package/dist/module/assets/icons/reactions/heart.png +0 -0
  48. package/dist/module/assets/icons/reactions/party.png +0 -0
  49. package/dist/module/assets/icons/reactions/sad.png +0 -0
  50. package/dist/module/assets/icons/reactions/smile.png +0 -0
  51. package/dist/module/colours.js +165 -0
  52. package/dist/module/colours.js.map +1 -0
  53. package/dist/module/components/AddButton.js +43 -0
  54. package/dist/module/components/AddButton.js.map +1 -0
  55. package/dist/module/components/AddToCalendarButton.js +225 -0
  56. package/dist/module/components/AddToCalendarButton.js.map +1 -0
  57. package/dist/module/components/Attachment.js +55 -0
  58. package/dist/module/components/Attachment.js.map +1 -0
  59. package/dist/module/components/AudienceSelectorLauncher.js +64 -0
  60. package/dist/module/components/AudienceSelectorLauncher.js.map +1 -0
  61. package/dist/module/components/AudienceSelectorPage.js +351 -0
  62. package/dist/module/components/AudienceSelectorPage.js.map +1 -0
  63. package/dist/module/components/AutoOffsetImage.js +184 -0
  64. package/dist/module/components/AutoOffsetImage.js.map +1 -0
  65. package/dist/module/components/BackButton.js +58 -0
  66. package/dist/module/components/BackButton.js.map +1 -0
  67. package/dist/module/components/CalendarPopup.js +126 -0
  68. package/dist/module/components/CalendarPopup.js.map +1 -0
  69. package/dist/module/components/CategoryTabs.js +155 -0
  70. package/dist/module/components/CategoryTabs.js.map +1 -0
  71. package/dist/module/components/CommentReply.js +334 -0
  72. package/dist/module/components/CommentReply.js.map +1 -0
  73. package/dist/module/components/CommentSection.js +823 -0
  74. package/dist/module/components/CommentSection.js.map +1 -0
  75. package/dist/module/components/ConfirmPopup.js +109 -0
  76. package/dist/module/components/ConfirmPopup.js.map +1 -0
  77. package/dist/module/components/ConfirmationPopup.js +72 -0
  78. package/dist/module/components/ConfirmationPopup.js.map +1 -0
  79. package/dist/module/components/DocumentUploader.js +253 -0
  80. package/dist/module/components/DocumentUploader.js.map +1 -0
  81. package/dist/module/components/DropDownItem.js +75 -0
  82. package/dist/module/components/DropDownItem.js.map +1 -0
  83. package/dist/module/components/DropDownMenu.js +41 -0
  84. package/dist/module/components/DropDownMenu.js.map +1 -0
  85. package/dist/module/components/EmptyStateMain.js +51 -0
  86. package/dist/module/components/EmptyStateMain.js.map +1 -0
  87. package/dist/module/components/EmptyStateWidget.js +48 -0
  88. package/dist/module/components/EmptyStateWidget.js.map +1 -0
  89. package/dist/module/components/FontScaleButton.js +37 -0
  90. package/dist/module/components/FontScaleButton.js.map +1 -0
  91. package/dist/module/components/FontScalePopup.js +76 -0
  92. package/dist/module/components/FontScalePopup.js.map +1 -0
  93. package/dist/module/components/Forbidden.js +58 -0
  94. package/dist/module/components/Forbidden.js.map +1 -0
  95. package/dist/module/components/FormCard.js +25 -0
  96. package/dist/module/components/FormCard.js.map +1 -0
  97. package/dist/module/components/FormCardSection.js +214 -0
  98. package/dist/module/components/FormCardSection.js.map +1 -0
  99. package/dist/module/components/FormCardSectionOptionLauncher.js +73 -0
  100. package/dist/module/components/FormCardSectionOptionLauncher.js.map +1 -0
  101. package/dist/module/components/FormattedText.js +133 -0
  102. package/dist/module/components/FormattedText.js.map +1 -0
  103. package/dist/module/components/GenericInput.js +151 -0
  104. package/dist/module/components/GenericInput.js.map +1 -0
  105. package/dist/module/components/GenericInputSection.js +173 -0
  106. package/dist/module/components/GenericInputSection.js.map +1 -0
  107. package/dist/module/components/Header.js +459 -0
  108. package/dist/module/components/Header.js.map +1 -0
  109. package/dist/module/components/Icon.js +109 -0
  110. package/dist/module/components/Icon.js.map +1 -0
  111. package/dist/module/components/ImagePopup.js +400 -0
  112. package/dist/module/components/ImagePopup.js.map +1 -0
  113. package/dist/module/components/ImageUploadProgress.js +69 -0
  114. package/dist/module/components/ImageUploadProgress.js.map +1 -0
  115. package/dist/module/components/ImageUploader.js +831 -0
  116. package/dist/module/components/ImageUploader.js.map +1 -0
  117. package/dist/module/components/InlineButton.js +66 -0
  118. package/dist/module/components/InlineButton.js.map +1 -0
  119. package/dist/module/components/Input.js +156 -0
  120. package/dist/module/components/Input.js.map +1 -0
  121. package/dist/module/components/LoadingCircles.js +219 -0
  122. package/dist/module/components/LoadingCircles.js.map +1 -0
  123. package/dist/module/components/LoadingIndicator.js +86 -0
  124. package/dist/module/components/LoadingIndicator.js.map +1 -0
  125. package/dist/module/components/LoadingStateWidget.js +46 -0
  126. package/dist/module/components/LoadingStateWidget.js.map +1 -0
  127. package/dist/module/components/MediaPlayer.js +407 -0
  128. package/dist/module/components/MediaPlayer.js.map +1 -0
  129. package/dist/module/components/MiddlePopup.js +49 -0
  130. package/dist/module/components/MiddlePopup.js.map +1 -0
  131. package/dist/module/components/PDFPopup.js +296 -0
  132. package/dist/module/components/PDFPopup.js.map +1 -0
  133. package/dist/module/components/PlussChat.js +1078 -0
  134. package/dist/module/components/PlussChat.js.map +1 -0
  135. package/dist/module/components/PlussChatMessage.js +299 -0
  136. package/dist/module/components/PlussChatMessage.js.map +1 -0
  137. package/dist/module/components/PlussChatTime.js +59 -0
  138. package/dist/module/components/PlussChatTime.js.map +1 -0
  139. package/dist/module/components/Popup.js +126 -0
  140. package/dist/module/components/Popup.js.map +1 -0
  141. package/dist/module/components/PopupMenu.js +120 -0
  142. package/dist/module/components/PopupMenu.js.map +1 -0
  143. package/dist/module/components/PositionedImage.js +313 -0
  144. package/dist/module/components/PositionedImage.js.map +1 -0
  145. package/dist/module/components/ProfilePic.js +105 -0
  146. package/dist/module/components/ProfilePic.js.map +1 -0
  147. package/dist/module/components/RadioButton.js +78 -0
  148. package/dist/module/components/RadioButton.js.map +1 -0
  149. package/dist/module/components/Reaction.js +117 -0
  150. package/dist/module/components/Reaction.js.map +1 -0
  151. package/dist/module/components/Reactions.js +71 -0
  152. package/dist/module/components/Reactions.js.map +1 -0
  153. package/dist/module/components/SharingTools.js +189 -0
  154. package/dist/module/components/SharingTools.js.map +1 -0
  155. package/dist/module/components/Spinner.js +22 -0
  156. package/dist/module/components/Spinner.js.map +1 -0
  157. package/dist/module/components/StickyFooter.js +34 -0
  158. package/dist/module/components/StickyFooter.js.map +1 -0
  159. package/dist/module/components/Text.js +57 -0
  160. package/dist/module/components/Text.js.map +1 -0
  161. package/dist/module/components/TickIcon.js +24 -0
  162. package/dist/module/components/TickIcon.js.map +1 -0
  163. package/dist/module/components/Toggle.js +66 -0
  164. package/dist/module/components/Toggle.js.map +1 -0
  165. package/dist/module/components/TouchableSearchBar.js +68 -0
  166. package/dist/module/components/TouchableSearchBar.js.map +1 -0
  167. package/dist/module/components/UserListPopup.js +136 -0
  168. package/dist/module/components/UserListPopup.js.map +1 -0
  169. package/dist/module/components/UserListing.js +268 -0
  170. package/dist/module/components/UserListing.js.map +1 -0
  171. package/dist/module/components/VideoPopup.js +113 -0
  172. package/dist/module/components/VideoPopup.js.map +1 -0
  173. package/dist/module/components/WarningPopup.js +85 -0
  174. package/dist/module/components/WarningPopup.js.map +1 -0
  175. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js +289 -0
  176. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js.map +1 -0
  177. package/dist/module/components/expo-image-picker-multiple/ImageTile.js +117 -0
  178. package/dist/module/components/expo-image-picker-multiple/ImageTile.js.map +1 -0
  179. package/dist/module/components/index.js +60 -0
  180. package/dist/module/components/index.js.map +1 -0
  181. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +422 -0
  182. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js.map +1 -0
  183. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js +387 -0
  184. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js.map +1 -0
  185. package/dist/module/config.js +27 -0
  186. package/dist/module/config.js.map +1 -0
  187. package/dist/module/constants.js +18 -0
  188. package/dist/module/constants.js.map +1 -0
  189. package/dist/module/helper.js +424 -0
  190. package/dist/module/helper.js.map +1 -0
  191. package/dist/module/index.js +13 -0
  192. package/dist/module/index.js.map +1 -0
  193. package/dist/module/js/images/detectFaces.js +31 -0
  194. package/dist/module/js/images/detectFaces.js.map +1 -0
  195. package/dist/module/js/images/findLandmarkRange.js +93 -0
  196. package/dist/module/js/images/findLandmarkRange.js.map +1 -0
  197. package/dist/module/js/images/getScaledOffset.js +81 -0
  198. package/dist/module/js/images/getScaledOffset.js.map +1 -0
  199. package/dist/module/js/site/getSiteLevelFromState.js +29 -0
  200. package/dist/module/js/site/getSiteLevelFromState.js.map +1 -0
  201. package/dist/module/js/site/isTVEnabled.js +10 -0
  202. package/dist/module/js/site/isTVEnabled.js.map +1 -0
  203. package/dist/module/session.js +58 -0
  204. package/dist/module/session.js.map +1 -0
  205. package/dist/module/styles.js +67 -0
  206. package/dist/module/styles.js.map +1 -0
  207. package/dist/module/withNavigationFocus.js +30 -0
  208. package/dist/module/withNavigationFocus.js.map +1 -0
  209. package/package.json +1 -1
  210. package/src/components/PDFPopup.js +130 -35
  211. 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":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,IAAI,EAAEC,wBAAwB,EAAEC,KAAK,QAAQ,cAAc;AACpE,SAASC,IAAI,QAAQ,QAAQ;AAC7B,OAAOC,CAAC,MAAM,QAAQ;AACtB,SAASC,OAAO,QAAQ,aAAa;AACrC,SACCC,QAAQ,EACRC,SAAS,EACTC,UAAU,EACVC,8BAA8B,QACxB,YAAY;AACnB,SAASC,YAAY,QAAQ,gBAAgB;AAE7C,MAAMC,KAAK,SAASZ,SAAS,CAAC;EAC7Ba,aAAaA,CAAA,EAAG;IACf,IAAI,CAAC,IAAI,CAACC,KAAK,CAACC,OAAO,EAAE;MACxB,OAAO,IAAI;IACZ;IACA,oBACChB,KAAA,CAAAiB,aAAA,CAACf,IAAI;MAACgB,KAAK,EAAEC,MAAM,CAACC;IAAO,GACzBd,CAAC,CAACe,GAAG,CAAC,IAAI,CAACN,KAAK,CAACC,OAAO,EAAE,CAACM,MAAM,EAAEC,KAAK,KAAK;MAC7C,oBACCvB,KAAA,CAAAiB,aAAA,CAACL,YAAY;QACZY,GAAG,EAAED,KAAM;QACXE,OAAO,EAAEH,MAAM,CAACI,MAAO;QACvBC,KAAK,EAAC,MAAM;QACZC,SAAS,EAAE,CACVT,MAAM,CAACU,UAAU,EACjB;UAAEF,KAAK,EAAE,IAAI,CAACZ,KAAK,CAACe;QAAmB,CAAC,EACxCR,MAAM,CAACS,IAAI,IAAIZ,MAAM,CAACa,cAAc;MACnC,GAEDV,MAAM,CAACW,IACK,CAAC;IAEjB,CAAC,CACI,CAAC;EAET;EAEAC,WAAWA,CAAA,EAAG;IACb,IAAI,CAAC,IAAI,CAACnB,KAAK,CAACoB,KAAK,EAAE;MACtB,OAAO,IAAI;IACZ;IACA,oBACCnC,KAAA,CAAAiB,aAAA,CAACZ,IAAI;MAACa,KAAK,EAAE,CAACC,MAAM,CAACgB,KAAK,EAAE;QAAER,KAAK,EAAE,IAAI,CAACZ,KAAK,CAACe;MAAmB,CAAC;IAAE,GACpE,IAAI,CAACf,KAAK,CAACoB,KACP,CAAC;EAET;EAEAC,aAAaA,CAAA,EAAG;IACf,IAAI,IAAI,CAACrB,KAAK,CAACsB,OAAO,EAAE;MACvB,OAAO,IAAI,CAACtB,KAAK,CAACsB,OAAO;IAC1B;IACA,IAAI,CAAC,IAAI,CAACtB,KAAK,CAACkB,IAAI,EAAE;MACrB,OAAO,IAAI;IACZ;IACA,oBAAOjC,KAAA,CAAAiB,aAAA,CAACZ,IAAI;MAACa,KAAK,EAAEC,MAAM,CAACc;IAAK,GAAE,IAAI,CAAClB,KAAK,CAACkB,IAAW,CAAC;EAC1D;EAEAK,MAAMA,CAAA,EAAG;IACR,oBACCtC,KAAA,CAAAiB,aAAA,CAACb,KAAK;MACLmC,OAAO;MACPC,WAAW;MACXC,aAAa,EAAC,MAAM;MACpBC,cAAc,EAAE,IAAI,CAAC3B,KAAK,CAAC4B;IAAQ,gBAEnC3C,KAAA,CAAAiB,aAAA,CAACd,wBAAwB;MACxBe,KAAK,EAAEC,MAAM,CAACyB,SAAU;MACxBnB,OAAO,EAAE,IAAI,CAACV,KAAK,CAAC4B;IAAQ,gBAE5B3C,KAAA,CAAAiB,aAAA,CAACf,IAAI;MAACgB,KAAK,EAAEC,MAAM,CAACyB;IAAU,gBAC7B5C,KAAA,CAAAiB,aAAA,CAACf,IAAI;MAACgB,KAAK,EAAE,CAACC,MAAM,CAAC0B,IAAI,EAAE,IAAI,CAAC9B,KAAK,CAAC+B,cAAc;IAAE,gBACrD9C,KAAA,CAAAiB,aAAA,CAACf,IAAI;MAACgB,KAAK,EAAEC,MAAM,CAAC4B;IAAI,GACtB,IAAI,CAACb,WAAW,CAAC,CAAC,EAClB,IAAI,CAACE,aAAa,CAAC,CAAC,EACpB,IAAI,CAACrB,KAAK,CAACiC,QACP,CAAC,EACN,IAAI,CAAClC,aAAa,CAAC,CACf,CACD,CACmB,CACpB,CAAC;EAEV;AACD;AAEA,MAAMK,MAAM,GAAG;EACdyB,SAAS,EAAE;IACVK,QAAQ,EAAE,UAAU;IACpB7B,MAAM,EAAE,CAAC;IACT8B,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRJ,GAAG,EAAE,CAAC;IACNK,eAAe,EAAE,iBAAiB;IAClCC,MAAM,EAAE,IAAI;IACZC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,EAAE;IACnBC,cAAc,EAAE,QAAQ;IACxBC,UAAU,EAAE,QAAQ;IACpBC,KAAK,EAAE;EACR,CAAC;EACDb,IAAI,EAAE;IACLO,eAAe,EAAE,MAAM;IACvBO,YAAY,EAAE;EACf,CAAC;EACDZ,GAAG,EAAE;IACJa,OAAO,EAAE;EACV,CAAC;EACDzB,KAAK,EAAE;IACN0B,UAAU,EAAE,SAAS;IACrBC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,EAAE;IACdpC,KAAK,EAAElB,SAAS;IAChBuD,SAAS,EAAE,QAAQ;IACnBC,YAAY,EAAE;EACf,CAAC;EACDhC,IAAI,EAAE;IACL4B,UAAU,EAAE,YAAY;IACxBC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,EAAE;IACdpC,KAAK,EAAEjB,UAAU;IACjBsD,SAAS,EAAE;EACZ,CAAC;EACD5C,MAAM,EAAE;IACP8C,cAAc,EAAE1D,QAAQ;IACxB2D,cAAc,EAAE,CAAC;IACjBC,aAAa,EAAE,aAAa;IAC5BR,OAAO,EAAE;EACV,CAAC;EACDtC,MAAM,EAAE;IACP+C,WAAW,EAAE;EACd,CAAC;EACDxC,UAAU,EAAE;IACXgC,UAAU,EAAE,YAAY;IACxBC,QAAQ,EAAE;EACX,CAAC;EACD9B,cAAc,EAAE;IACf6B,UAAU,EAAE;EACb;AACD,CAAC;AAED,MAAMS,eAAe,GAAIC,KAAK,IAAK;EAClC,OAAO;IACNzC,kBAAkB,EAAEnB,8BAA8B,CAAC4D,KAAK;EACzD,CAAC;AACF,CAAC;AAED,MAAMC,KAAK,GAAGjE,OAAO,CAAC+D,eAAe,EAAE,CAAC,CAAC,CAAC,CAACzD,KAAK,CAAC;AACjD,SAAS2D,KAAK,IAAI3D,KAAK","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":[]}