@plusscommunities/pluss-core-app 6.1.7 → 6.1.8-auth.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/dist/module/actions/FollowerActions.js +4 -4
  2. package/dist/module/actions/FollowerActions.js.map +1 -1
  3. package/dist/module/actions/MediaActions.js +1 -1
  4. package/dist/module/actions/MediaActions.js.map +1 -1
  5. package/dist/module/actions/ResidentActions.js +1 -1
  6. package/dist/module/actions/ResidentActions.js.map +1 -1
  7. package/dist/module/actions/UserActions.js +1 -1
  8. package/dist/module/actions/UserActions.js.map +1 -1
  9. package/dist/module/actions/UserSettingsActions.js +1 -1
  10. package/dist/module/actions/UserSettingsActions.js.map +1 -1
  11. package/dist/module/actions/index.js +5 -5
  12. package/dist/module/actions/index.js.map +1 -1
  13. package/dist/module/actions/types.js +16 -16
  14. package/dist/module/actions/types.js.map +1 -1
  15. package/dist/module/apis/analyticsActions.js +5 -5
  16. package/dist/module/apis/analyticsActions.js.map +1 -1
  17. package/dist/module/apis/contactActions.js +6 -6
  18. package/dist/module/apis/contactActions.js.map +1 -1
  19. package/dist/module/apis/eventActions.js +28 -28
  20. package/dist/module/apis/eventActions.js.map +1 -1
  21. package/dist/module/apis/fileActions.js +21 -28
  22. package/dist/module/apis/fileActions.js.map +1 -1
  23. package/dist/module/apis/followerActions.js +8 -8
  24. package/dist/module/apis/followerActions.js.map +1 -1
  25. package/dist/module/apis/index.js +12 -12
  26. package/dist/module/apis/index.js.map +1 -1
  27. package/dist/module/apis/notificationActions.js +17 -17
  28. package/dist/module/apis/notificationActions.js.map +1 -1
  29. package/dist/module/apis/profileActions.js +4 -4
  30. package/dist/module/apis/profileActions.js.map +1 -1
  31. package/dist/module/apis/reactionActions.js +15 -15
  32. package/dist/module/apis/reactionActions.js.map +1 -1
  33. package/dist/module/apis/settingActions.js +6 -6
  34. package/dist/module/apis/settingActions.js.map +1 -1
  35. package/dist/module/apis/stringActions.js +8 -8
  36. package/dist/module/apis/stringActions.js.map +1 -1
  37. package/dist/module/apis/typeActions.js +4 -4
  38. package/dist/module/apis/typeActions.js.map +1 -1
  39. package/dist/module/apis/userActions.js +8 -8
  40. package/dist/module/apis/userActions.js.map +1 -1
  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/colours.js +26 -29
  48. package/dist/module/colours.js.map +1 -1
  49. package/dist/module/components/AddButton.js +8 -8
  50. package/dist/module/components/AddButton.js.map +1 -1
  51. package/dist/module/components/AddToCalendarButton.js +30 -29
  52. package/dist/module/components/AddToCalendarButton.js.map +1 -1
  53. package/dist/module/components/Attachment.js +10 -9
  54. package/dist/module/components/Attachment.js.map +1 -1
  55. package/dist/module/components/AudienceSelectorLauncher.js +11 -11
  56. package/dist/module/components/AudienceSelectorLauncher.js.map +1 -1
  57. package/dist/module/components/AudienceSelectorPage.js +45 -44
  58. package/dist/module/components/AudienceSelectorPage.js.map +1 -1
  59. package/dist/module/components/AutoOffsetImage.js +13 -13
  60. package/dist/module/components/AutoOffsetImage.js.map +1 -1
  61. package/dist/module/components/BackButton.js +10 -10
  62. package/dist/module/components/BackButton.js.map +1 -1
  63. package/dist/module/components/CalendarPopup.js +21 -21
  64. package/dist/module/components/CalendarPopup.js.map +1 -1
  65. package/dist/module/components/CategoryTabs.js +30 -29
  66. package/dist/module/components/CategoryTabs.js.map +1 -1
  67. package/dist/module/components/CommentReply.js +36 -34
  68. package/dist/module/components/CommentReply.js.map +1 -1
  69. package/dist/module/components/CommentSection.js +74 -74
  70. package/dist/module/components/CommentSection.js.map +1 -1
  71. package/dist/module/components/ConfirmPopup.js +21 -20
  72. package/dist/module/components/ConfirmPopup.js.map +1 -1
  73. package/dist/module/components/ConfirmationPopup.js +11 -11
  74. package/dist/module/components/ConfirmationPopup.js.map +1 -1
  75. package/dist/module/components/DocumentUploader.js +253 -0
  76. package/dist/module/components/DocumentUploader.js.map +1 -0
  77. package/dist/module/components/DropDownItem.js +14 -13
  78. package/dist/module/components/DropDownItem.js.map +1 -1
  79. package/dist/module/components/DropDownMenu.js +5 -5
  80. package/dist/module/components/DropDownMenu.js.map +1 -1
  81. package/dist/module/components/EmptyStateMain.js +10 -9
  82. package/dist/module/components/EmptyStateMain.js.map +1 -1
  83. package/dist/module/components/EmptyStateWidget.js +7 -6
  84. package/dist/module/components/EmptyStateWidget.js.map +1 -1
  85. package/dist/module/components/FontScaleButton.js +5 -4
  86. package/dist/module/components/FontScaleButton.js.map +1 -1
  87. package/dist/module/components/FontScalePopup.js +11 -10
  88. package/dist/module/components/FontScalePopup.js.map +1 -1
  89. package/dist/module/components/Forbidden.js +13 -13
  90. package/dist/module/components/Forbidden.js.map +1 -1
  91. package/dist/module/components/FormCard.js +4 -4
  92. package/dist/module/components/FormCard.js.map +1 -1
  93. package/dist/module/components/FormCardSection.js +20 -18
  94. package/dist/module/components/FormCardSection.js.map +1 -1
  95. package/dist/module/components/FormCardSectionOptionLauncher.js +13 -12
  96. package/dist/module/components/FormCardSectionOptionLauncher.js.map +1 -1
  97. package/dist/module/components/FormattedText.js +18 -16
  98. package/dist/module/components/FormattedText.js.map +1 -1
  99. package/dist/module/components/GenericInput.js +24 -21
  100. package/dist/module/components/GenericInput.js.map +1 -1
  101. package/dist/module/components/GenericInputSection.js +27 -26
  102. package/dist/module/components/GenericInputSection.js.map +1 -1
  103. package/dist/module/components/Header.js +70 -69
  104. package/dist/module/components/Header.js.map +1 -1
  105. package/dist/module/components/Icon.js +109 -0
  106. package/dist/module/components/Icon.js.map +1 -0
  107. package/dist/module/components/ImagePopup.js +237 -77
  108. package/dist/module/components/ImagePopup.js.map +1 -1
  109. package/dist/module/components/ImageUploadProgress.js +10 -9
  110. package/dist/module/components/ImageUploadProgress.js.map +1 -1
  111. package/dist/module/components/ImageUploader.js +22 -13
  112. package/dist/module/components/ImageUploader.js.map +1 -1
  113. package/dist/module/components/InlineButton.js +9 -8
  114. package/dist/module/components/InlineButton.js.map +1 -1
  115. package/dist/module/components/Input.js +28 -26
  116. package/dist/module/components/Input.js.map +1 -1
  117. package/dist/module/components/LoadingCircles.js +20 -20
  118. package/dist/module/components/LoadingCircles.js.map +1 -1
  119. package/dist/module/components/LoadingIndicator.js +11 -11
  120. package/dist/module/components/LoadingIndicator.js.map +1 -1
  121. package/dist/module/components/LoadingStateWidget.js +5 -5
  122. package/dist/module/components/LoadingStateWidget.js.map +1 -1
  123. package/dist/module/components/MediaPlayer.js +32 -32
  124. package/dist/module/components/MediaPlayer.js.map +1 -1
  125. package/dist/module/components/MiddlePopup.js +9 -9
  126. package/dist/module/components/MiddlePopup.js.map +1 -1
  127. package/dist/module/components/PDFPopup.js +36 -36
  128. package/dist/module/components/PDFPopup.js.map +1 -1
  129. package/dist/module/components/PlussChat.js +234 -146
  130. package/dist/module/components/PlussChat.js.map +1 -1
  131. package/dist/module/components/PlussChatMessage.js +75 -38
  132. package/dist/module/components/PlussChatMessage.js.map +1 -1
  133. package/dist/module/components/PlussChatTime.js +18 -17
  134. package/dist/module/components/PlussChatTime.js.map +1 -1
  135. package/dist/module/components/Popup.js +20 -19
  136. package/dist/module/components/Popup.js.map +1 -1
  137. package/dist/module/components/PopupMenu.js +15 -14
  138. package/dist/module/components/PopupMenu.js.map +1 -1
  139. package/dist/module/components/PositionedImage.js +20 -20
  140. package/dist/module/components/PositionedImage.js.map +1 -1
  141. package/dist/module/components/ProfilePic.js +10 -10
  142. package/dist/module/components/ProfilePic.js.map +1 -1
  143. package/dist/module/components/RadioButton.js +10 -9
  144. package/dist/module/components/RadioButton.js.map +1 -1
  145. package/dist/module/components/Reaction.js +18 -17
  146. package/dist/module/components/Reaction.js.map +1 -1
  147. package/dist/module/components/Reactions.js +7 -7
  148. package/dist/module/components/Reactions.js.map +1 -1
  149. package/dist/module/components/SharingTools.js +29 -28
  150. package/dist/module/components/SharingTools.js.map +1 -1
  151. package/dist/module/components/Spinner.js +5 -5
  152. package/dist/module/components/Spinner.js.map +1 -1
  153. package/dist/module/components/StickyFooter.js +6 -6
  154. package/dist/module/components/StickyFooter.js.map +1 -1
  155. package/dist/module/components/Text.js +57 -0
  156. package/dist/module/components/Text.js.map +1 -0
  157. package/dist/module/components/TickIcon.js +6 -6
  158. package/dist/module/components/TickIcon.js.map +1 -1
  159. package/dist/module/components/Toggle.js +10 -9
  160. package/dist/module/components/Toggle.js.map +1 -1
  161. package/dist/module/components/TouchableSearchBar.js +18 -17
  162. package/dist/module/components/TouchableSearchBar.js.map +1 -1
  163. package/dist/module/components/UserListPopup.js +20 -19
  164. package/dist/module/components/UserListPopup.js.map +1 -1
  165. package/dist/module/components/UserListing.js +41 -40
  166. package/dist/module/components/UserListing.js.map +1 -1
  167. package/dist/module/components/VideoPopup.js +20 -20
  168. package/dist/module/components/VideoPopup.js.map +1 -1
  169. package/dist/module/components/WarningPopup.js +21 -20
  170. package/dist/module/components/WarningPopup.js.map +1 -1
  171. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js +13 -13
  172. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js.map +1 -1
  173. package/dist/module/components/expo-image-picker-multiple/ImageTile.js +24 -23
  174. package/dist/module/components/expo-image-picker-multiple/ImageTile.js.map +1 -1
  175. package/dist/module/components/index.js +59 -57
  176. package/dist/module/components/index.js.map +1 -1
  177. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +90 -58
  178. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js.map +1 -1
  179. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js +64 -64
  180. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js.map +1 -1
  181. package/dist/module/config.js +6 -1
  182. package/dist/module/config.js.map +1 -1
  183. package/dist/module/constants.js +3 -3
  184. package/dist/module/constants.js.map +1 -1
  185. package/dist/module/helper.js +83 -82
  186. package/dist/module/helper.js.map +1 -1
  187. package/dist/module/index.js +12 -12
  188. package/dist/module/index.js.map +1 -1
  189. package/dist/module/js/images/detectFaces.js +6 -6
  190. package/dist/module/js/images/detectFaces.js.map +1 -1
  191. package/dist/module/js/images/findLandmarkRange.js +8 -8
  192. package/dist/module/js/images/findLandmarkRange.js.map +1 -1
  193. package/dist/module/js/images/getScaledOffset.js.map +1 -1
  194. package/dist/module/js/site/getSiteLevelFromState.js +2 -2
  195. package/dist/module/js/site/getSiteLevelFromState.js.map +1 -1
  196. package/dist/module/js/site/isTVEnabled.js +2 -2
  197. package/dist/module/js/site/isTVEnabled.js.map +1 -1
  198. package/dist/module/session.js +2 -2
  199. package/dist/module/session.js.map +1 -1
  200. package/dist/module/styles.js +17 -17
  201. package/dist/module/styles.js.map +1 -1
  202. package/dist/module/withNavigationFocus.js +30 -0
  203. package/dist/module/withNavigationFocus.js.map +1 -0
  204. package/package.json +4 -1
  205. package/src/actions/FollowerActions.js +36 -32
  206. package/src/actions/MediaActions.js +25 -20
  207. package/src/actions/ResidentActions.js +26 -21
  208. package/src/actions/UserActions.js +22 -22
  209. package/src/actions/UserSettingsActions.js +11 -11
  210. package/src/actions/index.js +5 -5
  211. package/src/actions/types.js +16 -16
  212. package/src/apis/analyticsActions.js +17 -17
  213. package/src/apis/contactActions.js +20 -20
  214. package/src/apis/eventActions.js +153 -144
  215. package/src/apis/fileActions.js +19 -27
  216. package/src/apis/followerActions.js +29 -29
  217. package/src/apis/index.js +12 -12
  218. package/src/apis/notificationActions.js +44 -44
  219. package/src/apis/profileActions.js +8 -8
  220. package/src/apis/reactionActions.js +81 -73
  221. package/src/apis/settingActions.js +15 -15
  222. package/src/apis/stringActions.js +29 -25
  223. package/src/apis/typeActions.js +10 -10
  224. package/src/apis/userActions.js +93 -93
  225. package/src/assets/icons/fontawesome/fa-brands-400.ttf +0 -0
  226. package/src/assets/icons/fontawesome/fa-light-300.ttf +0 -0
  227. package/src/assets/icons/fontawesome/fa-regular-400.ttf +0 -0
  228. package/src/assets/icons/fontawesome/fa-solid-900.ttf +0 -0
  229. package/src/assets/icons/fontawesome/fa-thin-100.ttf +0 -0
  230. package/src/assets/icons/fontawesome/fa7-glyphmap.json +4205 -0
  231. package/src/colours.js +116 -96
  232. package/src/components/AddButton.js +32 -27
  233. package/src/components/AddToCalendarButton.js +236 -202
  234. package/src/components/Attachment.js +59 -36
  235. package/src/components/AudienceSelectorLauncher.js +52 -48
  236. package/src/components/AudienceSelectorPage.js +353 -311
  237. package/src/components/AutoOffsetImage.js +237 -196
  238. package/src/components/BackButton.js +57 -41
  239. package/src/components/CalendarPopup.js +127 -97
  240. package/src/components/CategoryTabs.js +208 -163
  241. package/src/components/CommentReply.js +363 -309
  242. package/src/components/CommentSection.js +974 -782
  243. package/src/components/ConfirmPopup.js +141 -110
  244. package/src/components/ConfirmationPopup.js +80 -69
  245. package/src/components/DocumentUploader.js +255 -0
  246. package/src/components/DropDownItem.js +70 -60
  247. package/src/components/DropDownMenu.js +31 -27
  248. package/src/components/EmptyStateMain.js +51 -44
  249. package/src/components/EmptyStateWidget.js +47 -38
  250. package/src/components/FontScaleButton.js +29 -25
  251. package/src/components/FontScalePopup.js +67 -56
  252. package/src/components/Forbidden.js +48 -46
  253. package/src/components/FormCard.js +21 -17
  254. package/src/components/FormCardSection.js +284 -233
  255. package/src/components/FormCardSectionOptionLauncher.js +72 -46
  256. package/src/components/FormattedText.js +128 -111
  257. package/src/components/GenericInput.js +168 -136
  258. package/src/components/GenericInputSection.js +209 -161
  259. package/src/components/Header.js +620 -474
  260. package/src/components/Icon.js +119 -0
  261. package/src/components/ImagePopup.js +425 -206
  262. package/src/components/ImageUploadProgress.js +49 -41
  263. package/src/components/ImageUploader.js +23 -13
  264. package/src/components/InlineButton.js +79 -69
  265. package/src/components/Input.js +190 -156
  266. package/src/components/LoadingCircles.js +233 -233
  267. package/src/components/LoadingIndicator.js +87 -76
  268. package/src/components/LoadingStateWidget.js +47 -37
  269. package/src/components/MediaPlayer.js +416 -387
  270. package/src/components/MiddlePopup.js +50 -32
  271. package/src/components/PDFPopup.js +198 -159
  272. package/src/components/PlussChat.js +1271 -986
  273. package/src/components/PlussChatMessage.js +330 -262
  274. package/src/components/PlussChatTime.js +57 -53
  275. package/src/components/Popup.js +138 -116
  276. package/src/components/PopupMenu.js +140 -110
  277. package/src/components/PositionedImage.js +281 -237
  278. package/src/components/ProfilePic.js +122 -113
  279. package/src/components/RadioButton.js +76 -52
  280. package/src/components/Reaction.js +134 -96
  281. package/src/components/Reactions.js +65 -63
  282. package/src/components/SharingTools.js +136 -122
  283. package/src/components/Spinner.js +13 -13
  284. package/src/components/StickyFooter.js +36 -26
  285. package/src/components/Text.js +62 -0
  286. package/src/components/TickIcon.js +20 -20
  287. package/src/components/Toggle.js +74 -73
  288. package/src/components/TouchableSearchBar.js +68 -50
  289. package/src/components/UserListPopup.js +161 -124
  290. package/src/components/UserListing.js +273 -238
  291. package/src/components/VideoPopup.js +110 -96
  292. package/src/components/WarningPopup.js +92 -71
  293. package/src/components/expo-image-picker-multiple/ImageBrowser.js +288 -256
  294. package/src/components/expo-image-picker-multiple/ImageTile.js +108 -84
  295. package/src/components/index.js +59 -57
  296. package/src/components/react-native-expo-image-cropper/ExpoImageManipulator.js +442 -358
  297. package/src/components/react-native-expo-image-cropper/ImageCropOverlay.js +420 -324
  298. package/src/config.js +5 -0
  299. package/src/constants.js +8 -8
  300. package/src/helper.js +469 -438
  301. package/src/index.js +24 -12
  302. package/src/js/images/detectFaces.js +27 -20
  303. package/src/js/images/findLandmarkRange.js +97 -90
  304. package/src/js/images/getScaledOffset.js +80 -75
  305. package/src/js/site/getSiteLevelFromState.js +26 -26
  306. package/src/js/site/isTVEnabled.js +10 -10
  307. package/src/session.js +2 -2
  308. package/src/styles.js +61 -61
  309. package/src/withNavigationFocus.js +28 -0
  310. package/dist/module/components/TextStyle.js +0 -45
  311. package/dist/module/components/TextStyle.js.map +0 -1
  312. package/dist/module/fonts/index.js +0 -2
  313. package/dist/module/fonts/index.js.map +0 -1
  314. package/dist/module/fonts/pluss60-icons.js +0 -5
  315. package/dist/module/fonts/pluss60-icons.js.map +0 -1
  316. package/dist/module/fonts/pluss60-icons.json +0 -1097
  317. package/src/components/TextStyle.js +0 -48
  318. package/src/fonts/index.js +0 -1
  319. package/src/fonts/pluss60-icons.js +0 -6
  320. package/src/fonts/pluss60-icons.json +0 -1097
@@ -1,260 +1,304 @@
1
- import React, { Component } from 'react';
2
- import { View, Animated, PanResponder, Image, StyleSheet } from 'react-native';
3
- import { Icon } from 'react-native-elements';
4
- import { BOXGREY, TEXT_LIGHT } from '../colours';
1
+ import React, { Component } from "react";
2
+ import { View, Animated, PanResponder, Image, StyleSheet } from "react-native";
3
+ import { Icon } from "@rneui/themed";
4
+ import { BOXGREY, TEXT_LIGHT } from "../colours";
5
5
 
6
6
  class PositionedImage extends Component {
7
- constructor(props) {
8
- super(props);
7
+ constructor(props) {
8
+ super(props);
9
9
 
10
- this.lastPos = { x: 0, y: 0 };
11
- this.imagePosition = new Animated.ValueXY(this.lastPos);
12
- this.imagePosition.addListener(value => {
13
- this.lastPos = value;
14
- });
15
- const imagePanResponder = PanResponder.create({
16
- onStartShouldSetPanResponder: () => {
17
- this.startPos = this.lastPos;
18
- if (this.props.onPositionEnd) {
19
- if (this.props.onPositionStart) this.props.onPositionStart();
20
- this.setState({ panning: true });
21
- return true;
22
- }
23
- return false;
24
- },
25
- onPanResponderMove: (event, gesture) => {
26
- const newPos = this.state.isVertical ? { x: 0, y: this.startPos.y + gesture.dy } : { x: this.startPos.x + gesture.dx, y: 0 };
27
- this.imagePosition.setValue(newPos);
28
- },
29
- onPanResponderTerminationRequest: (event, gesture) => true,
30
- onPanResponderRelease: (event, gesture) => {
31
- let endPos = { x: 0, y: 0 };
32
- if (this.state.isVertical) {
33
- const endY = this.startPos.y + gesture.dy;
34
- const limitY = this.props.height - this.state.imageHeight;
35
- if (endY > 0) {
36
- // console.log('top reached', endY);
37
- endPos = { x: 0, y: 0 };
38
- } else if (endY < limitY) {
39
- // console.log('bottom reached', endY, limitY);
40
- endPos = { x: 0, y: limitY };
41
- } else {
42
- endPos = { x: 0, y: endY };
43
- }
44
- } else {
45
- const endX = this.startPos.x + gesture.dx;
46
- const limitX = this.props.width - this.state.imageWidth;
47
- if (endX > 0) {
48
- // console.log('left reached', endX);
49
- endPos = { x: 0, y: 0 };
50
- } else if (endX < limitX) {
51
- // console.log('right reached', endX, limitX);
52
- endPos = { x: limitX, y: 0 };
53
- } else {
54
- endPos = { x: endX, y: 0 };
55
- }
56
- }
57
- Animated.spring(this.imagePosition, { toValue: endPos, useNativeDriver: false }).start();
10
+ this.lastPos = { x: 0, y: 0 };
11
+ this.imagePosition = new Animated.ValueXY(this.lastPos);
12
+ this.imagePosition.addListener((value) => {
13
+ this.lastPos = value;
14
+ });
15
+ const imagePanResponder = PanResponder.create({
16
+ onStartShouldSetPanResponder: () => {
17
+ this.startPos = this.lastPos;
18
+ if (this.props.onPositionEnd) {
19
+ if (this.props.onPositionStart) this.props.onPositionStart();
20
+ this.setState({ panning: true });
21
+ return true;
22
+ }
23
+ return false;
24
+ },
25
+ onPanResponderMove: (event, gesture) => {
26
+ const newPos = this.state.isVertical
27
+ ? { x: 0, y: this.startPos.y + gesture.dy }
28
+ : { x: this.startPos.x + gesture.dx, y: 0 };
29
+ this.imagePosition.setValue(newPos);
30
+ },
31
+ onPanResponderTerminationRequest: (event, gesture) => true,
32
+ onPanResponderRelease: (event, gesture) => {
33
+ let endPos = { x: 0, y: 0 };
34
+ if (this.state.isVertical) {
35
+ const endY = this.startPos.y + gesture.dy;
36
+ const limitY = this.props.height - this.state.imageHeight;
37
+ if (endY > 0) {
38
+ // console.log('top reached', endY);
39
+ endPos = { x: 0, y: 0 };
40
+ } else if (endY < limitY) {
41
+ // console.log('bottom reached', endY, limitY);
42
+ endPos = { x: 0, y: limitY };
43
+ } else {
44
+ endPos = { x: 0, y: endY };
45
+ }
46
+ } else {
47
+ const endX = this.startPos.x + gesture.dx;
48
+ const limitX = this.props.width - this.state.imageWidth;
49
+ if (endX > 0) {
50
+ // console.log('left reached', endX);
51
+ endPos = { x: 0, y: 0 };
52
+ } else if (endX < limitX) {
53
+ // console.log('right reached', endX, limitX);
54
+ endPos = { x: limitX, y: 0 };
55
+ } else {
56
+ endPos = { x: endX, y: 0 };
57
+ }
58
+ }
59
+ Animated.spring(this.imagePosition, {
60
+ toValue: endPos,
61
+ useNativeDriver: false,
62
+ }).start();
58
63
 
59
- if (this.props.onPositionEnd)
60
- this.props.onPositionEnd({
61
- x: endPos.x / this.state.imageWidth,
62
- y: endPos.y / this.state.imageHeight,
63
- });
64
+ if (this.props.onPositionEnd)
65
+ this.props.onPositionEnd({
66
+ x: endPos.x / this.state.imageWidth,
67
+ y: endPos.y / this.state.imageHeight,
68
+ });
64
69
 
65
- this.setState({ panning: false });
66
- },
67
- onPanResponderTerminate: (event, gesture) => {
68
- this.setState({ panning: false });
69
- },
70
- });
70
+ this.setState({ panning: false });
71
+ },
72
+ onPanResponderTerminate: (event, gesture) => {
73
+ this.setState({ panning: false });
74
+ },
75
+ });
71
76
 
72
- this.state = {
73
- imageWidth: 0,
74
- imageHeight: 0,
75
- imagePanResponder,
76
- isVertical: true,
77
- showGuide: false,
78
- animatedOpacity: new Animated.Value(1),
79
- panning: false,
80
- };
81
- }
77
+ this.state = {
78
+ imageWidth: 0,
79
+ imageHeight: 0,
80
+ imagePanResponder,
81
+ isVertical: true,
82
+ showGuide: false,
83
+ animatedOpacity: new Animated.Value(1),
84
+ panning: false,
85
+ };
86
+ }
82
87
 
83
- componentDidMount() {
84
- this.calculateDimensions();
85
- }
88
+ componentDidMount() {
89
+ this.calculateDimensions();
90
+ }
86
91
 
87
- componentDidUpdate(prevProps) {
88
- if (prevProps.source.uri !== this.props.source.uri) {
89
- // console.log('componentDidUpdate', prevProps.source.uri, this.props.source.uri);
90
- this.calculateDimensions();
91
- }
92
- }
92
+ componentDidUpdate(prevProps) {
93
+ if (prevProps.source.uri !== this.props.source.uri) {
94
+ // console.log('componentDidUpdate', prevProps.source.uri, this.props.source.uri);
95
+ this.calculateDimensions();
96
+ }
97
+ }
93
98
 
94
- calculateDimensions = () => {
95
- Image.getSize(this.props.source.uri, (imageWidth, imageHeight) => {
96
- // Default vertical positioning
97
- const newWidth = this.props.width;
98
- const newHeight = imageHeight * (this.props.width / imageWidth);
99
+ calculateDimensions = () => {
100
+ Image.getSize(this.props.source.uri, (imageWidth, imageHeight) => {
101
+ // Default vertical positioning
102
+ const newWidth = this.props.width;
103
+ const newHeight = imageHeight * (this.props.width / imageWidth);
99
104
 
100
- if (newHeight < this.props.height) {
101
- // If vertical positioning isn't possible, enable horizontal positioning
102
- this.setState(
103
- {
104
- imageWidth: imageWidth * (this.props.height / imageHeight),
105
- imageHeight: this.props.height,
106
- isVertical: false,
107
- showGuide: this.props.onPositionEnd ? true : false,
108
- },
109
- this.onDimensionAvailable,
110
- );
111
- } else {
112
- this.setState(
113
- {
114
- imageWidth: newWidth,
115
- imageHeight: newHeight,
116
- isVertical: true,
117
- showGuide: this.props.onPositionEnd ? true : false,
118
- },
119
- this.onDimensionAvailable,
120
- );
121
- }
122
- });
123
- };
105
+ if (newHeight < this.props.height) {
106
+ // If vertical positioning isn't possible, enable horizontal positioning
107
+ this.setState(
108
+ {
109
+ imageWidth: imageWidth * (this.props.height / imageHeight),
110
+ imageHeight: this.props.height,
111
+ isVertical: false,
112
+ showGuide: this.props.onPositionEnd ? true : false,
113
+ },
114
+ this.onDimensionAvailable,
115
+ );
116
+ } else {
117
+ this.setState(
118
+ {
119
+ imageWidth: newWidth,
120
+ imageHeight: newHeight,
121
+ isVertical: true,
122
+ showGuide: this.props.onPositionEnd ? true : false,
123
+ },
124
+ this.onDimensionAvailable,
125
+ );
126
+ }
127
+ });
128
+ };
124
129
 
125
- onDimensionAvailable = () => {
126
- const { offset } = this.props;
127
- const { imageWidth, imageHeight, isVertical } = this.state;
130
+ onDimensionAvailable = () => {
131
+ const { offset } = this.props;
132
+ const { imageWidth, imageHeight, isVertical } = this.state;
128
133
 
129
- if (offset) {
130
- // Apply percentage offset
131
- const actual = {
132
- x: offset.x * imageWidth,
133
- y: offset.y * imageHeight,
134
- };
135
- this.imagePosition.setValue(actual);
136
- } else {
137
- // Centered by default
138
- this.imagePosition.setValue({
139
- x: isVertical ? 0 : -0.5 * imageWidth + 0.5 * this.props.width,
140
- y: isVertical ? -0.5 * imageHeight + 0.5 * this.props.height : 0,
141
- });
142
- }
134
+ if (offset) {
135
+ // Apply percentage offset
136
+ const actual = {
137
+ x: offset.x * imageWidth,
138
+ y: offset.y * imageHeight,
139
+ };
140
+ this.imagePosition.setValue(actual);
141
+ } else {
142
+ // Centered by default
143
+ this.imagePosition.setValue({
144
+ x: isVertical ? 0 : -0.5 * imageWidth + 0.5 * this.props.width,
145
+ y: isVertical ? -0.5 * imageHeight + 0.5 * this.props.height : 0,
146
+ });
147
+ }
143
148
 
144
- if (this.props.onPositionEnd) {
145
- setTimeout(() => {
146
- Animated.timing(this.state.animatedOpacity, {
147
- toValue: 0,
148
- duration: 900,
149
- useNativeDriver: false,
150
- }).start(() => {
151
- this.setState({ showGuide: false });
152
- });
153
- }, 1000);
154
- }
155
- };
149
+ if (this.props.onPositionEnd) {
150
+ setTimeout(() => {
151
+ Animated.timing(this.state.animatedOpacity, {
152
+ toValue: 0,
153
+ duration: 900,
154
+ useNativeDriver: false,
155
+ }).start(() => {
156
+ this.setState({ showGuide: false });
157
+ });
158
+ }, 1000);
159
+ }
160
+ };
156
161
 
157
- renderGrid() {
158
- if (!this.state.panning) return null;
159
- return (
160
- <View style={styles.gridContainer}>
161
- <View style={styles.gridHorizontal} />
162
- <View style={styles.gridVertical} />
163
- </View>
164
- );
165
- }
162
+ renderGrid() {
163
+ if (!this.state.panning) return null;
164
+ return (
165
+ <View style={styles.gridContainer}>
166
+ <View style={styles.gridHorizontal} />
167
+ <View style={styles.gridVertical} />
168
+ </View>
169
+ );
170
+ }
166
171
 
167
- renderGuide() {
168
- if (!this.state.showGuide) return null;
169
- const { animatedOpacity, isVertical } = this.state;
170
- return (
171
- <Animated.View style={[styles.guideContainer, { opacity: animatedOpacity }]}>
172
- <View style={[styles.guideIconContainer, { flexDirection: 'column' }]}>
173
- <Icon name="arrow-up" type="font-awesome" iconStyle={[styles.guideIcon, !isVertical && styles.guideIconDisabled]} />
174
- <Icon name="arrow-down" type="font-awesome" iconStyle={[styles.guideIcon, !isVertical && styles.guideIconDisabled]} />
175
- </View>
176
- <View style={[styles.guideIconContainer, { flexDirection: 'row' }]}>
177
- <Icon name="arrow-left" type="font-awesome" iconStyle={[styles.guideIcon, isVertical && styles.guideIconDisabled]} />
178
- <Icon name="arrow-right" type="font-awesome" iconStyle={[styles.guideIcon, isVertical && styles.guideIconDisabled]} />
179
- </View>
180
- </Animated.View>
181
- );
182
- }
172
+ renderGuide() {
173
+ if (!this.state.showGuide) return null;
174
+ const { animatedOpacity, isVertical } = this.state;
175
+ return (
176
+ <Animated.View
177
+ style={[styles.guideContainer, { opacity: animatedOpacity }]}
178
+ >
179
+ <View style={[styles.guideIconContainer, { flexDirection: "column" }]}>
180
+ <Icon
181
+ name="arrow-up"
182
+ type="font-awesome"
183
+ iconStyle={[
184
+ styles.guideIcon,
185
+ !isVertical && styles.guideIconDisabled,
186
+ ]}
187
+ />
188
+ <Icon
189
+ name="arrow-down"
190
+ type="font-awesome"
191
+ iconStyle={[
192
+ styles.guideIcon,
193
+ !isVertical && styles.guideIconDisabled,
194
+ ]}
195
+ />
196
+ </View>
197
+ <View style={[styles.guideIconContainer, { flexDirection: "row" }]}>
198
+ <Icon
199
+ name="arrow-left"
200
+ type="font-awesome"
201
+ iconStyle={[
202
+ styles.guideIcon,
203
+ isVertical && styles.guideIconDisabled,
204
+ ]}
205
+ />
206
+ <Icon
207
+ name="arrow-right"
208
+ type="font-awesome"
209
+ iconStyle={[
210
+ styles.guideIcon,
211
+ isVertical && styles.guideIconDisabled,
212
+ ]}
213
+ />
214
+ </View>
215
+ </Animated.View>
216
+ );
217
+ }
183
218
 
184
- render() {
185
- const { imageWidth, imageHeight, imagePanResponder } = this.state;
219
+ render() {
220
+ const { imageWidth, imageHeight, imagePanResponder } = this.state;
186
221
 
187
- return (
188
- <View style={[styles.container, { width: this.props.width, height: this.props.height }, this.props.style]}>
189
- <Animated.Image
190
- source={this.props.source}
191
- style={[{ width: imageWidth, height: imageHeight }, this.imagePosition.getLayout()]}
192
- {...imagePanResponder.panHandlers}
193
- />
194
- {this.renderGrid()}
195
- {this.renderGuide()}
196
- </View>
197
- );
198
- }
222
+ return (
223
+ <View
224
+ style={[
225
+ styles.container,
226
+ { width: this.props.width, height: this.props.height },
227
+ this.props.style,
228
+ ]}
229
+ >
230
+ <Animated.Image
231
+ source={this.props.source}
232
+ style={[
233
+ { width: imageWidth, height: imageHeight },
234
+ this.imagePosition.getLayout(),
235
+ ]}
236
+ {...imagePanResponder.panHandlers}
237
+ />
238
+ {this.renderGrid()}
239
+ {this.renderGuide()}
240
+ </View>
241
+ );
242
+ }
199
243
  }
200
244
 
201
245
  const styles = StyleSheet.create({
202
- container: {
203
- overflow: 'hidden',
204
- backgroundColor: BOXGREY,
205
- },
206
- guideContainer: {
207
- position: 'absolute',
208
- top: 0,
209
- right: 0,
210
- bottom: 0,
211
- left: 0,
212
- alignItems: 'center',
213
- justifyContent: 'center',
214
- backgroundColor: '#0006',
215
- },
216
- guideIconContainer: {
217
- position: 'absolute',
218
- top: 0,
219
- right: 0,
220
- bottom: 0,
221
- left: 0,
222
- alignItems: 'center',
223
- justifyContent: 'center',
224
- },
225
- guideIcon: {
226
- color: '#fff',
227
- fontSize: 50,
228
- margin: 15,
229
- },
230
- guideIconDisabled: {
231
- color: TEXT_LIGHT,
232
- },
233
- gridContainer: {
234
- position: 'absolute',
235
- top: 0,
236
- right: 0,
237
- bottom: 0,
238
- left: 0,
239
- },
240
- gridHorizontal: {
241
- position: 'absolute',
242
- top: 0,
243
- right: 0,
244
- left: 0,
245
- height: '50%',
246
- borderBottomWidth: 1,
247
- borderBottomColor: BOXGREY,
248
- },
249
- gridVertical: {
250
- position: 'absolute',
251
- top: 0,
252
- right: 0,
253
- bottom: 0,
254
- width: '50%',
255
- borderLeftWidth: 1,
256
- borderLeftColor: BOXGREY,
257
- },
246
+ container: {
247
+ overflow: "hidden",
248
+ backgroundColor: BOXGREY,
249
+ },
250
+ guideContainer: {
251
+ position: "absolute",
252
+ top: 0,
253
+ right: 0,
254
+ bottom: 0,
255
+ left: 0,
256
+ alignItems: "center",
257
+ justifyContent: "center",
258
+ backgroundColor: "#0006",
259
+ },
260
+ guideIconContainer: {
261
+ position: "absolute",
262
+ top: 0,
263
+ right: 0,
264
+ bottom: 0,
265
+ left: 0,
266
+ alignItems: "center",
267
+ justifyContent: "center",
268
+ },
269
+ guideIcon: {
270
+ color: "#fff",
271
+ fontSize: 50,
272
+ margin: 15,
273
+ },
274
+ guideIconDisabled: {
275
+ color: TEXT_LIGHT,
276
+ },
277
+ gridContainer: {
278
+ position: "absolute",
279
+ top: 0,
280
+ right: 0,
281
+ bottom: 0,
282
+ left: 0,
283
+ },
284
+ gridHorizontal: {
285
+ position: "absolute",
286
+ top: 0,
287
+ right: 0,
288
+ left: 0,
289
+ height: "50%",
290
+ borderBottomWidth: 1,
291
+ borderBottomColor: BOXGREY,
292
+ },
293
+ gridVertical: {
294
+ position: "absolute",
295
+ top: 0,
296
+ right: 0,
297
+ bottom: 0,
298
+ width: "50%",
299
+ borderLeftWidth: 1,
300
+ borderLeftColor: BOXGREY,
301
+ },
258
302
  });
259
303
 
260
304
  export default PositionedImage;