@plusscommunities/pluss-core-app 1.4.9 → 1.5.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 (183) 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 +20 -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 +214 -0
  8. package/dist/module/actions/UserActions.js.map +1 -0
  9. package/dist/module/actions/index.js +5 -0
  10. package/dist/module/actions/index.js.map +1 -0
  11. package/dist/module/actions/types.js +14 -0
  12. package/dist/module/actions/types.js.map +1 -0
  13. package/dist/module/apis/analyticsActions.js +20 -0
  14. package/dist/module/apis/analyticsActions.js.map +1 -0
  15. package/dist/module/apis/contactActions.js +27 -0
  16. package/dist/module/apis/contactActions.js.map +1 -0
  17. package/dist/module/apis/eventActions.js +163 -0
  18. package/dist/module/apis/eventActions.js.map +1 -0
  19. package/dist/module/apis/fileActions.js +96 -0
  20. package/dist/module/apis/fileActions.js.map +1 -0
  21. package/dist/module/apis/followerActions.js +38 -0
  22. package/dist/module/apis/followerActions.js.map +1 -0
  23. package/dist/module/apis/index.js +11 -0
  24. package/dist/module/apis/index.js.map +1 -0
  25. package/dist/module/apis/notificationActions.js +60 -0
  26. package/dist/module/apis/notificationActions.js.map +1 -0
  27. package/dist/module/apis/profileActions.js +14 -0
  28. package/dist/module/apis/profileActions.js.map +1 -0
  29. package/dist/module/apis/reactionActions.js +78 -0
  30. package/dist/module/apis/reactionActions.js.map +1 -0
  31. package/dist/module/apis/typeActions.js +15 -0
  32. package/dist/module/apis/typeActions.js.map +1 -0
  33. package/dist/module/apis/userActions.js +104 -0
  34. package/dist/module/apis/userActions.js.map +1 -0
  35. package/{assets → dist/module/assets}/icons/reactions/heart.png +0 -0
  36. package/{assets → dist/module/assets}/icons/reactions/party.png +0 -0
  37. package/{assets → dist/module/assets}/icons/reactions/sad.png +0 -0
  38. package/{assets → dist/module/assets}/icons/reactions/smile.png +0 -0
  39. package/dist/module/colours.js +149 -0
  40. package/dist/module/colours.js.map +1 -0
  41. package/dist/module/components/AddButton.js +45 -0
  42. package/dist/module/components/AddButton.js.map +1 -0
  43. package/dist/module/components/Attachment.js +59 -0
  44. package/dist/module/components/Attachment.js.map +1 -0
  45. package/dist/module/components/AudienceSelectorLauncher.js +70 -0
  46. package/dist/module/components/AudienceSelectorLauncher.js.map +1 -0
  47. package/dist/module/components/AudienceSelectorPage.js +376 -0
  48. package/dist/module/components/AudienceSelectorPage.js.map +1 -0
  49. package/dist/module/components/BackButton.js +62 -0
  50. package/dist/module/components/BackButton.js.map +1 -0
  51. package/dist/module/components/CategoryTabs.js +171 -0
  52. package/dist/module/components/CategoryTabs.js.map +1 -0
  53. package/dist/module/components/CommentReply.js +363 -0
  54. package/dist/module/components/CommentReply.js.map +1 -0
  55. package/dist/module/components/CommentSection.js +785 -0
  56. package/dist/module/components/CommentSection.js.map +1 -0
  57. package/dist/module/components/ConfirmPopup.js +85 -0
  58. package/dist/module/components/ConfirmPopup.js.map +1 -0
  59. package/dist/module/components/ConfirmationPopup.js +77 -0
  60. package/dist/module/components/ConfirmationPopup.js.map +1 -0
  61. package/dist/module/components/DropDownItem.js +82 -0
  62. package/dist/module/components/DropDownItem.js.map +1 -0
  63. package/dist/module/components/DropDownMenu.js +46 -0
  64. package/dist/module/components/DropDownMenu.js.map +1 -0
  65. package/dist/module/components/EmptyStateMain.js +50 -0
  66. package/dist/module/components/EmptyStateMain.js.map +1 -0
  67. package/dist/module/components/EmptyStateWidget.js +52 -0
  68. package/dist/module/components/EmptyStateWidget.js.map +1 -0
  69. package/dist/module/components/FontScaleButton.js +37 -0
  70. package/dist/module/components/FontScaleButton.js.map +1 -0
  71. package/dist/module/components/FontScalePopup.js +77 -0
  72. package/dist/module/components/FontScalePopup.js.map +1 -0
  73. package/dist/module/components/FormCard.js +28 -0
  74. package/dist/module/components/FormCard.js.map +1 -0
  75. package/dist/module/components/FormCardSection.js +240 -0
  76. package/dist/module/components/FormCardSection.js.map +1 -0
  77. package/dist/module/components/FormCardSectionOptionLauncher.js +77 -0
  78. package/dist/module/components/FormCardSectionOptionLauncher.js.map +1 -0
  79. package/dist/module/components/FormattedText.js +145 -0
  80. package/dist/module/components/FormattedText.js.map +1 -0
  81. package/dist/module/components/GenericInput.js +161 -0
  82. package/dist/module/components/GenericInput.js.map +1 -0
  83. package/dist/module/components/GenericInputSection.js +174 -0
  84. package/dist/module/components/GenericInputSection.js.map +1 -0
  85. package/dist/module/components/Header.js +491 -0
  86. package/dist/module/components/Header.js.map +1 -0
  87. package/dist/module/components/ImagePopup.js +257 -0
  88. package/dist/module/components/ImagePopup.js.map +1 -0
  89. package/dist/module/components/ImageUploadProgress.js +72 -0
  90. package/dist/module/components/ImageUploadProgress.js.map +1 -0
  91. package/dist/module/components/ImageUploader.js +850 -0
  92. package/dist/module/components/ImageUploader.js.map +1 -0
  93. package/dist/module/components/InlineButton.js +72 -0
  94. package/dist/module/components/InlineButton.js.map +1 -0
  95. package/dist/module/components/Input.js +164 -0
  96. package/dist/module/components/Input.js.map +1 -0
  97. package/dist/module/components/LoadingCircles.js +224 -0
  98. package/dist/module/components/LoadingCircles.js.map +1 -0
  99. package/dist/module/components/LoadingIndicator.js +95 -0
  100. package/dist/module/components/LoadingIndicator.js.map +1 -0
  101. package/dist/module/components/LoadingStateWidget.js +51 -0
  102. package/dist/module/components/LoadingStateWidget.js.map +1 -0
  103. package/dist/module/components/MediaPlayer.js +440 -0
  104. package/dist/module/components/MediaPlayer.js.map +1 -0
  105. package/dist/module/components/MiddlePopup.js +46 -0
  106. package/dist/module/components/MiddlePopup.js.map +1 -0
  107. package/dist/module/components/PDFPopup.js +188 -0
  108. package/dist/module/components/PDFPopup.js.map +1 -0
  109. package/dist/module/components/PlussChat.js +997 -0
  110. package/dist/module/components/PlussChat.js.map +1 -0
  111. package/dist/module/components/PlussChatMessage.js +204 -0
  112. package/dist/module/components/PlussChatMessage.js.map +1 -0
  113. package/dist/module/components/PlussChatTime.js +66 -0
  114. package/dist/module/components/PlussChatTime.js.map +1 -0
  115. package/dist/module/components/Popup.js +138 -0
  116. package/dist/module/components/Popup.js.map +1 -0
  117. package/dist/module/components/PopupMenu.js +128 -0
  118. package/dist/module/components/PopupMenu.js.map +1 -0
  119. package/dist/module/components/PositionedImage.js +333 -0
  120. package/dist/module/components/PositionedImage.js.map +1 -0
  121. package/dist/module/components/ProfilePic.js +119 -0
  122. package/dist/module/components/ProfilePic.js.map +1 -0
  123. package/dist/module/components/RadioButton.js +84 -0
  124. package/dist/module/components/RadioButton.js.map +1 -0
  125. package/dist/module/components/Reaction.js +129 -0
  126. package/dist/module/components/Reaction.js.map +1 -0
  127. package/dist/module/components/Reactions.js +84 -0
  128. package/dist/module/components/Reactions.js.map +1 -0
  129. package/dist/module/components/SharingTools.js +162 -0
  130. package/dist/module/components/SharingTools.js.map +1 -0
  131. package/dist/module/components/Spinner.js +25 -0
  132. package/dist/module/components/Spinner.js.map +1 -0
  133. package/dist/module/components/StickyFooter.js +37 -0
  134. package/dist/module/components/StickyFooter.js.map +1 -0
  135. package/dist/module/components/TextStyle.js +34 -0
  136. package/dist/module/components/TextStyle.js.map +1 -0
  137. package/dist/module/components/Toggle.js +70 -0
  138. package/dist/module/components/Toggle.js.map +1 -0
  139. package/dist/module/components/TouchableSearchBar.js +73 -0
  140. package/dist/module/components/TouchableSearchBar.js.map +1 -0
  141. package/dist/module/components/UserListPopup.js +146 -0
  142. package/dist/module/components/UserListPopup.js.map +1 -0
  143. package/dist/module/components/UserListing.js +291 -0
  144. package/dist/module/components/UserListing.js.map +1 -0
  145. package/dist/module/components/VideoPopup.js +123 -0
  146. package/dist/module/components/VideoPopup.js.map +1 -0
  147. package/dist/module/components/WarningPopup.js +87 -0
  148. package/dist/module/components/WarningPopup.js.map +1 -0
  149. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js +325 -0
  150. package/dist/module/components/expo-image-picker-multiple/ImageBrowser.js.map +1 -0
  151. package/dist/module/components/expo-image-picker-multiple/ImageTile.js +123 -0
  152. package/dist/module/components/expo-image-picker-multiple/ImageTile.js.map +1 -0
  153. package/dist/module/components/index.js +53 -0
  154. package/dist/module/components/index.js.map +1 -0
  155. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js +416 -0
  156. package/dist/module/components/react-native-expo-image-cropper/ExpoImageManipulator.js.map +1 -0
  157. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js +405 -0
  158. package/dist/module/components/react-native-expo-image-cropper/ImageCropOverlay.js.map +1 -0
  159. package/dist/module/config.js +27 -0
  160. package/dist/module/config.js.map +1 -0
  161. package/dist/module/constants.js +16 -0
  162. package/dist/module/constants.js.map +1 -0
  163. package/dist/module/fonts/index.js +2 -0
  164. package/dist/module/fonts/index.js.map +1 -0
  165. package/dist/module/fonts/pluss60-icons.js +5 -0
  166. package/dist/module/fonts/pluss60-icons.js.map +1 -0
  167. package/dist/module/fonts/pluss60-icons.json +1097 -0
  168. package/dist/module/helper.js +436 -0
  169. package/dist/module/helper.js.map +1 -0
  170. package/dist/module/index.js +13 -0
  171. package/dist/module/index.js.map +1 -0
  172. package/dist/module/session.js +54 -0
  173. package/dist/module/session.js.map +1 -0
  174. package/dist/module/styles.js +67 -0
  175. package/dist/module/styles.js.map +1 -0
  176. package/package.json +22 -5
  177. package/src/assets/icons/reactions/heart.png +0 -0
  178. package/src/assets/icons/reactions/party.png +0 -0
  179. package/src/assets/icons/reactions/sad.png +0 -0
  180. package/src/assets/icons/reactions/smile.png +0 -0
  181. package/src/components/CommentReply.js +0 -2
  182. package/src/constants.js +4 -4
  183. package/src/helper.js +4 -4
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["PlussChat.js"],"names":["React","Component","View","Image","ImageBackground","TouchableOpacity","Text","KeyboardAvoidingView","Platform","ScrollView","GiftedChat","Bubble","MessageText","Send","InputToolbar","Composer","connect","_","moment","Icon","getBottomSpace","Spinner","ProfilePic","PlussChatTime","PDFPopup","Attachment","PlussChatMessage","TEXT_DARK","LINEGREY","TEXT_DARKEST","getMainBrandingColourFromState","getLightBrandingColourFromState","BG_GREY","TEXT_BLUEGREY","getEnabledTabsFromState","get1400","getThumb300","imageExists","isVideo","getImageSource","getFileName","Config","Services","ImageUploader","ImageUploadProgress","ImagePopup","VideoPopup","IMAGE_SIZE_SMALL","IMAGE_SIZE_LARGE","IMAGES_PER_ROW","IMAGE_MARGIN","IMAGE_PREVIEW_AREA_HEIGHT","IMAGE_PREVIEW_SIZE","PlussChat","constructor","props","event","navigation","navigate","attachment","Type","place","imagesToUpload","isEmpty","state","upload","hasImagesAttached","every","i","uploading","thumbNailExists","checkThumb","setInterval","Promise","all","map","image","resolve","newImage","push","url","allowRetry","thumbNailUrl","thumbnailsExist","clearInterval","setState","a","selectedPDF","keyboardOpen","uploadUri","imageUri","uploadProgress","progress","img","uri","percentage","replace","waitForThumbnails","images","selected","imagePopupSource","imagePopupIndex","indexOf","imagePopupOpen","filter","showFullscreenVideo","length","currentVideoUrl","isSingleTab","tabCount","MIN_COMPOSER_HEIGHT","select","ios","android","currentUser","_id","user","uid","name","displayName","avatar","isUndefined","profilePic","env","tinyChatDefault","messages","UNSAFE_componentWillMount","updateMessages","UNSAFE_componentWillReceiveProps","nextProps","newState","onSend","showUploadMenu","imageUploader","closeGallery","sendMessages","hasImagesReady","text","renderBubble","bubbleProps","wrapperStyle","currentMessage","paddingTop","paddingBottom","minWidth","attachments","paddingHorizontal","left","backgroundColor","borderRadius","right","colourBrandingLight","borderBottomLeftRadius","borderBottomRightRadius","borderTopLeftRadius","borderTopRightRadius","renderMessage","RowId","renderMessageText","messageTextProps","fontFamily","fontSize","color","marginTop","marginBottom","marginLeft","marginRight","colourBrandingMain","renderTime","renderDay","dayProps","renderCustomView","position","containerWidth","styles","imagesContainer","width","paddingVertical","thumb","toggleFullscreenVideo","bind","messageImageSmall","messageImageLarge","imagePlayContainer","imageControlIcon","onPressImage","console","log","onOpenAttachment","onPressEvent","eventContainer","eventImage","eventImageMargin","Thumbnail","eventInfo","eventTitle","eventInfoAlign","Title","eventDate","utc","StartTime","local","format","onPressAttachment","renderSend","top","sendContainer","height","send","renderAccessory","uploadImagesContainer","isVideoUrl","accessoryImageContainer","accessoryImage","accessoryImageBorder","previewItemRemoveButton","onRemoveImage","bottom","previewItemRemoveContainer","previewItemRemoveIcon","renderInputToolbar","inputContainer","renderComposer","accessory","renderFooter","renderLoading","justifyContent","alignContent","renderAvatar","input","OS","composerHeight","inputText","onFocus","onFocusInput","onBlur","onBlurInput","renderChat","noTab","iosBottomOffset","minInputToolbarHeight","renderImageUploader","ref","onUploadStarted","onUploadProgress","onUploadSuccess","onUploadFailed","onLibrarySelected","renderImagePopup","renderVideoPlayerPopup","renderPDF","onCloseAttachment","render","noAndroidAvoid","chatContainer","flex","paddingLeft","paddingRight","flexDirection","resizeMode","minHeight","textAlign","alignSelf","margin","alignItems","borderTopWidth","borderTopColor","settingDropDownOpen","flexWrap","overflow","borderWidth","borderColor","textShadowColor","textShadowOffset","mapStateToProps"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Image, ImageBackground, TouchableOpacity, Text, KeyboardAvoidingView, Platform, ScrollView } from 'react-native';\nimport { GiftedChat, Bubble, MessageText, Send, InputToolbar, Composer } from 'react-native-gifted-chat';\nimport { connect } from 'react-redux';\nimport _ from 'lodash';\nimport moment from 'moment';\nimport { Icon } from 'react-native-elements';\nimport { getBottomSpace } from 'react-native-iphone-x-helper';\nimport { Spinner } from './Spinner';\nimport { ProfilePic } from './ProfilePic';\nimport PlussChatTime from './PlussChatTime';\nimport { PDFPopup } from './PDFPopup';\nimport { Attachment } from './Attachment';\nimport PlussChatMessage from './PlussChatMessage';\nimport {\n TEXT_DARK,\n LINEGREY,\n TEXT_DARKEST,\n getMainBrandingColourFromState,\n getLightBrandingColourFromState,\n BG_GREY,\n TEXT_BLUEGREY,\n} from '../colours';\nimport { getEnabledTabsFromState, get1400, getThumb300, imageExists, isVideo, getImageSource, getFileName } from '../helper';\nimport Config, { Services } from '../config';\nimport ImageUploader from './ImageUploader';\nimport ImageUploadProgress from './ImageUploadProgress';\nimport { ImagePopup } from './ImagePopup';\nimport { VideoPopup } from './VideoPopup';\n\nconst IMAGE_SIZE_SMALL = 55;\nconst IMAGE_SIZE_LARGE = 110;\nconst IMAGES_PER_ROW = 4;\nconst IMAGE_MARGIN = 2;\nconst IMAGE_PREVIEW_AREA_HEIGHT = 105;\nconst IMAGE_PREVIEW_SIZE = IMAGE_PREVIEW_AREA_HEIGHT - 25;\n\nclass PlussChat extends Component {\n constructor(props) {\n super(props);\n const isSingleTab = this.props.tabCount === 1 && getBottomSpace() > 0;\n this.MIN_COMPOSER_HEIGHT = Platform.select({\n ios: isSingleTab ? 42 : 33,\n android: 41,\n });\n\n this.state = {\n currentUser: {\n _id: this.props.user.uid,\n name: this.props.user.displayName,\n avatar:\n !_.isUndefined(this.props.user.profilePic) && !_.isEmpty(this.props.user.profilePic)\n ? this.props.user.profilePic\n : Config.env.tinyChatDefault,\n },\n\n messages: [],\n imagePopupSource: [],\n imagePopupIndex: 0,\n imagePopupOpen: false,\n imagesToUpload: [],\n showFullscreenVideo: false,\n currentVideoUrl: '',\n };\n this.checkThumb = null;\n }\n\n UNSAFE_componentWillMount() {\n this.updateMessages(this.props);\n }\n\n UNSAFE_componentWillReceiveProps(nextProps) {\n this.updateMessages(nextProps);\n }\n\n updateMessages(props) {\n const newState = {};\n if (!_.isUndefined(props.messages)) {\n newState.messages = props.messages;\n }\n this.setState(newState);\n }\n\n /***\n *\n * Messaging functionality\n */\n onSend(messages = []) {\n // if (this.chatKey) {\n // this.sendMessage(messages[0]);\n // }\n }\n\n onPressEvent = event => {\n Services.navigation.navigate('eventDetail', { event });\n };\n onPressAttachment = attachment => {\n switch (attachment.Type) {\n case 'Event':\n Services.navigation.navigate('eventDetail', { event: attachment });\n break;\n case 'Place':\n Services.navigation.navigate('placeDetail', { place: attachment });\n break;\n default:\n return;\n }\n };\n\n hasImagesAttached = (imagesToUpload = null) => {\n return !_.isEmpty(imagesToUpload || this.state.imagesToUpload);\n };\n\n hasImagesReady = (imagesToUpload = null) => {\n const upload = imagesToUpload || this.state.imagesToUpload;\n return this.hasImagesAttached(upload) && upload.every(i => !i.uploading && i.thumbNailExists);\n };\n\n waitForThumbnails = () => {\n if (this.checkThumb) return;\n\n this.checkThumb = setInterval(async () => {\n const imagesToUpload = [];\n await Promise.all(\n this.state.imagesToUpload.map(image => {\n return new Promise(async resolve => {\n const newImage = { ...image };\n imagesToUpload.push(newImage);\n if (newImage.url && !newImage.thumbNailExists) {\n newImage.uploading = false;\n newImage.allowRetry = false;\n newImage.thumbNailExists = await imageExists(newImage.thumbNailUrl);\n resolve(newImage.thumbNailExists);\n }\n resolve(true);\n });\n }),\n );\n const thumbnailsExist = imagesToUpload.every(image => !image.url || image.thumbNailExists);\n if (thumbnailsExist) {\n clearInterval(this.checkThumb);\n this.checkThumb = null;\n this.setState({ imagesToUpload });\n }\n }, 2000);\n };\n\n onOpenAttachment = a => {\n this.setState({\n selectedPDF: a,\n });\n };\n\n onCloseAttachment = () => {\n this.setState({\n selectedPDF: null,\n });\n };\n\n showUploadMenu() {\n this.imageUploader.showUploadMenu();\n }\n\n onFocusInput = () => {\n this.setState({\n keyboardOpen: true,\n });\n if (this.props.keyboardOpen) {\n this.props.keyboardOpen();\n }\n };\n\n onBlurInput = () => {\n this.setState({\n keyboardOpen: false,\n });\n };\n\n onUploadStarted = (uploadUri, imageUri) => {\n const imagesToUpload = [\n ...this.state.imagesToUpload,\n {\n uploading: true,\n uploadProgress: '0%',\n uploadUri,\n imageUri,\n allowRetry: true,\n },\n ];\n this.setState({ imagesToUpload });\n };\n\n onUploadProgress = progress => {\n const imagesToUpload = [...this.state.imagesToUpload];\n imagesToUpload.map(img => {\n if (img.uploadUri === progress.uri) {\n img.uploadProgress = progress.percentage;\n img.uploading = true;\n img.allowRetry = true;\n }\n });\n this.setState({ imagesToUpload });\n };\n\n onUploadSuccess = async (uri, uploadUri) => {\n const imagesToUpload = [...this.state.imagesToUpload];\n imagesToUpload.map(img => {\n if (img.uploadUri === uploadUri && img.uploading) {\n img.url = uri.replace('/general/', '/general1400/');\n img.thumbNailExists = false;\n img.thumbNailUrl = getThumb300(img.url);\n img.allowRetry = true;\n }\n });\n this.setState({ imagesToUpload }, () => this.waitForThumbnails());\n };\n\n onUploadFailed = uploadUri => {\n const imagesToUpload = [...this.state.imagesToUpload];\n imagesToUpload.map(img => {\n if (img.uploadUri === uploadUri) {\n img.uploading = true; // Requried for retry\n img.uploadProgress = '';\n img.allowRetry = true;\n }\n });\n this.setState({ imagesToUpload });\n };\n\n onLibrarySelected = uri => {\n const imagesToUpload = [\n ...this.state.imagesToUpload,\n {\n uploading: false,\n allowRetry: false,\n url: get1400(uri),\n thumbNailExists: true,\n thumbNailUrl: getThumb300(uri),\n },\n ];\n this.setState({ imagesToUpload });\n };\n\n onPressImage = (images, selected) => {\n this.setState({\n imagePopupSource: images,\n imagePopupIndex: images.indexOf(selected),\n imagePopupOpen: true,\n });\n };\n\n closeGallery() {\n this.setState({\n imagePopupSource: [],\n imagePopupIndex: 0,\n imagePopupOpen: false,\n });\n }\n\n onRemoveImage = url => {\n const imagesToUpload = this.state.imagesToUpload.filter(image => image.url !== url);\n this.setState({ imagesToUpload });\n };\n\n toggleFullscreenVideo = url => {\n if (typeof url !== 'string') url = '';\n this.setState({ showFullscreenVideo: url.length > 0, currentVideoUrl: url });\n };\n\n sendMessages(messages) {\n if (this.hasImagesAttached()) {\n // Don't allow send if attached images aren't ready\n if (!this.hasImagesReady()) return;\n messages[0].image = this.state.imagesToUpload.map(image => image.url);\n }\n if (_.isEmpty(messages[0].text)) {\n messages[0].text = '';\n }\n if (!messages[0].text && !messages[0].image) return;\n\n this.props.onSend(messages);\n this.setState({ imagesToUpload: [] });\n }\n\n /**\n *\n * Render Functions\n */\n renderBubble(bubbleProps) {\n const wrapperStyle = {};\n if (!_.isEmpty(bubbleProps.currentMessage.text) && !_.isEmpty(bubbleProps.currentMessage.image)) {\n wrapperStyle.paddingTop = 8;\n wrapperStyle.paddingBottom = 16;\n wrapperStyle.minWidth = 142; // 110 image width + 16 padding either side\n }\n if (!_.isEmpty(bubbleProps.currentMessage.attachments)) {\n wrapperStyle.paddingTop = 8;\n wrapperStyle.paddingBottom = 16;\n wrapperStyle.paddingHorizontal = 16;\n }\n return (\n <Bubble\n {...bubbleProps}\n renderMessageImage={() => null}\n isCustomViewBottom={true}\n wrapperStyle={{\n left: {\n backgroundColor: LINEGREY,\n borderRadius: 25,\n ...wrapperStyle,\n },\n right: {\n backgroundColor: this.props.colourBrandingLight,\n borderRadius: 25,\n ...wrapperStyle,\n },\n }}\n containerToNextStyle={{\n left: {\n borderBottomLeftRadius: 5,\n },\n right: {\n borderBottomRightRadius: 5,\n },\n }}\n containerToPreviousStyle={{\n left: {\n borderTopLeftRadius: 5,\n },\n right: {\n borderTopRightRadius: 5,\n },\n }}\n />\n );\n }\n renderMessage(props) {\n return <PlussChatMessage key={props.RowId} {...props} />;\n }\n renderMessageText(messageTextProps) {\n return (\n <MessageText\n {...messageTextProps}\n textStyle={{\n left: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: TEXT_DARKEST,\n marginTop: 10,\n marginBottom: 10,\n marginLeft: 15,\n marginRight: 15,\n },\n right: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n color: this.props.colourBrandingMain,\n marginTop: 10,\n marginBottom: 10,\n marginLeft: 15,\n marginRight: 15,\n },\n }}\n linkStyle={{\n left: {\n color: TEXT_DARKEST,\n },\n right: {\n color: this.props.colourBrandingMain,\n },\n }}\n />\n );\n }\n renderTime() {\n return null;\n }\n renderDay(dayProps) {\n return (\n <PlussChatTime\n {...dayProps}\n textStyle={{\n fontFamily: 'sf-semibold',\n color: TEXT_DARK,\n fontSize: 12,\n }}\n />\n );\n }\n renderCustomView({ currentMessage, position }) {\n if (currentMessage.image) {\n const images = typeof currentMessage.image === 'string' ? [currentMessage.image] : currentMessage.image;\n const containerWidth = (() => {\n if (images.length === 0) return 0;\n if (images.length === 1) return IMAGE_SIZE_LARGE;\n if (images.length <= IMAGES_PER_ROW) return (IMAGE_SIZE_SMALL + IMAGE_MARGIN) * images.length;\n return (IMAGE_SIZE_SMALL + IMAGE_MARGIN) * IMAGES_PER_ROW;\n })();\n return (\n <View style={[styles.imagesContainer, { width: containerWidth, paddingVertical: currentMessage.text ? 0 : 20 }]}>\n {images.map(img => {\n const thumb = getThumb300(img);\n if (isVideo(img)) {\n return (\n <TouchableOpacity key={thumb} onPress={this.toggleFullscreenVideo.bind(this, img)}>\n <ImageBackground style={images.length > 1 ? styles.messageImageSmall : styles.messageImageLarge} source={{ uri: thumb }}>\n <View style={styles.imagePlayContainer}>\n <Icon name=\"play\" type=\"font-awesome\" iconStyle={styles.imageControlIcon} />\n </View>\n </ImageBackground>\n </TouchableOpacity>\n );\n }\n return (\n <TouchableOpacity key={thumb} onPress={() => this.onPressImage(images, img)}>\n <Image source={{ uri: thumb }} style={images.length > 1 ? styles.messageImageSmall : styles.messageImageLarge} />\n </TouchableOpacity>\n );\n })}\n </View>\n );\n }\n if (!_.isEmpty(currentMessage.attachments)) {\n console.log('rendering attachments');\n console.log(currentMessage.attachments);\n return (\n <View>\n {currentMessage.attachments.map((url, i) => {\n return (\n <Attachment\n onPress={() => {\n this.onOpenAttachment(url);\n }}\n key={i}\n title={getFileName(url)}\n />\n );\n })}\n </View>\n );\n }\n if (currentMessage.event) {\n return (\n <TouchableOpacity onPress={this.onPressEvent.bind(this, currentMessage.event)}>\n <View style={styles.eventContainer[position]}>\n <Image style={[styles.eventImage, styles.eventImageMargin[position]]} source={{ uri: currentMessage.event.Thumbnail }} />\n <View style={styles.eventInfo}>\n <Text\n numberOfLines={3}\n style={[styles.eventTitle, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}\n >\n {currentMessage.event.Title}\n </Text>\n <Text style={[styles.eventDate, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}>\n {moment\n .utc(currentMessage.event.StartTime)\n .local()\n .format('ddd D MMM')}\n </Text>\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n if (currentMessage.attachment) {\n return (\n <TouchableOpacity onPress={this.onPressAttachment.bind(this, currentMessage.attachment)}>\n <View style={styles.eventContainer[position]}>\n <Image style={[styles.eventImage, styles.eventImageMargin[position]]} source={{ uri: currentMessage.attachment.Thumbnail }} />\n <View style={styles.eventInfo}>\n <Text\n numberOfLines={3}\n style={[styles.eventTitle, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}\n >\n {currentMessage.attachment.Title}\n </Text>\n {currentMessage.attachment.StartTime && (\n <Text style={[styles.eventDate, styles.eventInfoAlign[position], { color: this.props.colourBrandingMain }]}>\n {moment\n .utc(currentMessage.attachment.StartTime)\n .local()\n .format('ddd D MMM')}\n </Text>\n )}\n </View>\n </View>\n </TouchableOpacity>\n );\n }\n return null;\n }\n\n renderSend(props) {\n return (\n <View style={{ position: 'absolute', top: 0, right: 0 }}>\n {(!_.isEmpty(props.text) || this.hasImagesReady(props.imagesToUpload)) && (\n <Send\n {...props}\n alwaysShowSend={true}\n containerStyle={[\n styles.sendContainer,\n {\n width: this.MIN_COMPOSER_HEIGHT,\n height: this.MIN_COMPOSER_HEIGHT,\n },\n ]}\n >\n <Icon name={'paper-plane'} type=\"font-awesome\" iconStyle={[styles.send, { width: this.MIN_COMPOSER_HEIGHT }]} />\n </Send>\n )}\n <TouchableOpacity\n onPress={this.showUploadMenu.bind(this)}\n style={[\n styles.sendContainer,\n {\n right: _.isEmpty(props.text) && !this.hasImagesReady(props.imagesToUpload) ? 0 : 8 + this.MIN_COMPOSER_HEIGHT,\n width: this.MIN_COMPOSER_HEIGHT,\n height: this.MIN_COMPOSER_HEIGHT,\n },\n ]}\n >\n <Icon name={'picture-o'} type=\"font-awesome\" iconStyle={[styles.send, { width: this.MIN_COMPOSER_HEIGHT }]} />\n </TouchableOpacity>\n </View>\n );\n }\n\n renderAccessory(props) {\n return (\n <ScrollView horizontal style={styles.uploadImagesContainer}>\n {props.imagesToUpload.map(image => {\n if (image.uploading) {\n return (\n <ImageUploadProgress\n key={image.uploadUri}\n uploader={this.imageUploader}\n image={image}\n color={this.props.colourBrandingMain}\n style={{ width: IMAGE_PREVIEW_SIZE, marginRight: 10 }}\n progressTextStyle={{ fontSize: 10 }}\n />\n );\n }\n const isVideoUrl = isVideo(image.url);\n return (\n <View key={image.url} style={styles.accessoryImageContainer}>\n <ImageBackground\n style={styles.accessoryImage}\n imageStyle={styles.accessoryImageBorder}\n source={getImageSource(image.thumbNailExists ? image.thumbNailUrl : image.url)}\n >\n {isVideoUrl && (\n <View style={styles.imagePlayContainer}>\n <TouchableOpacity onPress={this.toggleFullscreenVideo.bind(this, image.url)}>\n <Icon name=\"play\" type=\"font-awesome\" iconStyle={styles.imageControlIcon} />\n </TouchableOpacity>\n </View>\n )}\n </ImageBackground>\n <TouchableOpacity\n style={styles.previewItemRemoveButton}\n onPress={() => this.onRemoveImage(image.url)}\n hitSlop={{ top: 8, right: 8, bottom: 8, left: 8 }}\n >\n <View style={[styles.previewItemRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.previewItemRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n );\n })}\n </ScrollView>\n );\n }\n\n renderInputToolbar(props) {\n if (!this.hasImagesAttached(props.imagesToUpload)) {\n return <InputToolbar {...props} containerStyle={styles.inputContainer} renderComposer={this.renderComposer.bind(this)} />;\n }\n return (\n <InputToolbar\n {...props}\n containerStyle={styles.inputContainer}\n renderComposer={this.renderComposer.bind(this)}\n renderAccessory={this.renderAccessory.bind(this)}\n accessoryStyle={styles.accessory}\n />\n );\n }\n renderFooter() {\n // if (this.state.keyboardOpen) {\n // return null;\n // }\n // fixes an issue where there's no gap between bottom message and reply container\n return <View style={{ height: 10 }} />;\n }\n renderLoading() {\n return (\n <View style={{ marginTop: 15, justifyContent: 'center', alignContent: 'center' }}>\n <Spinner size={'small'} color={this.props.colourBrandingMain} />\n </View>\n );\n }\n renderAvatar(props) {\n return (\n <View style={{ marginRight: 2 }}>\n <ProfilePic ProfilePic={props.currentMessage.user.avatar} Diameter={28} />\n </View>\n );\n }\n renderComposer(props) {\n //console.log(props.composerHeight);\n return (\n <View\n style={[\n styles.input,\n {\n //height: props.composerHeight + 10,\n //borderRadius: (this.MIN_COMPOSER_HEIGHT + 10) / 2,\n marginRight:\n _.isEmpty(props.text) && !this.hasImagesReady(props.imagesToUpload)\n ? 8 + this.MIN_COMPOSER_HEIGHT\n : 2 * (this.MIN_COMPOSER_HEIGHT + 8),\n justifyContent: 'center',\n },\n Platform.OS === 'ios' && {\n height: props.composerHeight + 10,\n },\n ]}\n >\n <Composer\n {...props}\n //composerHeight={props.composerHeight}\n placeholder=\"Type a message...\"\n textInputStyle={styles.inputText}\n textInputProps={{\n onFocus: this.onFocusInput.bind(this),\n onBlur: this.onBlurInput.bind(this),\n }}\n />\n </View>\n );\n }\n\n /***\n * Main Render\n */\n renderChat() {\n const { tabCount, noTab } = this.props;\n const iosBottomOffset = (tabCount === 1 || noTab ? -10 : 52) + getBottomSpace();\n const minInputToolbarHeight = this.MIN_COMPOSER_HEIGHT + 16 + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);\n\n return (\n <GiftedChat\n alwaysShowSend={false}\n keyboardShouldPersistTaps={'never'}\n renderAvatarOnTop\n minInputToolbarHeight={minInputToolbarHeight}\n bottomOffset={Platform.OS === 'android' ? 0 : iosBottomOffset}\n onSend={this.sendMessages.bind(this)}\n messages={this.state.messages}\n user={this.state.currentUser}\n renderBubble={this.renderBubble.bind(this)}\n renderMessage={this.renderMessage.bind(this)}\n renderMessageText={this.renderMessageText.bind(this)}\n renderTime={this.renderTime.bind(this)}\n renderDay={this.renderDay.bind(this)}\n renderCustomView={this.renderCustomView.bind(this)}\n renderSend={this.renderSend.bind(this)}\n renderInputToolbar={this.renderInputToolbar.bind(this)}\n renderFooter={this.renderFooter.bind(this)}\n renderLoading={this.renderLoading.bind(this)}\n renderAvatar={this.renderAvatar.bind(this)}\n imagesToUpload={this.state.imagesToUpload}\n />\n );\n }\n\n renderImageUploader() {\n return (\n <ImageUploader\n ref={ref => (this.imageUploader = ref)}\n onUploadStarted={this.onUploadStarted}\n onUploadProgress={this.onUploadProgress}\n onUploadSuccess={this.onUploadSuccess}\n onUploadFailed={this.onUploadFailed}\n onLibrarySelected={this.onLibrarySelected}\n quality={0.8}\n allowsEditing={false}\n fileName={'imageInput'}\n popupTitle={'Add Image'}\n userId={this.props.user.uid}\n multiple\n allowVideo\n />\n );\n }\n\n renderImagePopup() {\n const { imagePopupOpen, imagePopupSource, imagePopupIndex } = this.state;\n return (\n <ImagePopup\n visible={imagePopupOpen}\n images={imagePopupSource}\n index={imagePopupIndex}\n onClose={this.closeGallery.bind(this)}\n ref=\"imagePopup\"\n />\n );\n }\n\n renderVideoPlayerPopup() {\n const { showFullscreenVideo, currentVideoUrl } = this.state;\n if (!currentVideoUrl) return;\n\n return <VideoPopup uri={currentVideoUrl} visible={showFullscreenVideo} onClose={this.toggleFullscreenVideo} />;\n }\n\n renderPDF() {\n if (_.isEmpty(this.state.selectedPDF)) {\n return null;\n }\n return (\n <PDFPopup source={this.state.selectedPDF} onClose={this.onCloseAttachment} title={getFileName(this.state.selectedPDF)} pdfCount={1} />\n );\n }\n\n render() {\n if (Platform.OS === 'android' && !this.props.noAndroidAvoid) {\n return (\n <KeyboardAvoidingView behavior={Platform.OS === 'ios' && 'padding'} style={styles.chatContainer}>\n {this.renderChat()}\n {this.renderImageUploader()}\n {this.renderImagePopup()}\n {this.renderVideoPlayerPopup()}\n {this.renderPDF()}\n </KeyboardAvoidingView>\n );\n }\n return (\n <View style={styles.chatContainer}>\n {this.renderChat()}\n {this.renderImageUploader()}\n {this.renderImagePopup()}\n {this.renderVideoPlayerPopup()}\n {this.renderPDF()}\n </View>\n );\n }\n}\n\nconst styles = {\n chatContainer: {\n flex: 1,\n justifyContent: 'center',\n },\n eventContainer: {\n left: {\n paddingTop: 5,\n paddingLeft: 15,\n paddingRight: 15,\n paddingBottom: 5,\n flexDirection: 'row',\n },\n right: {\n paddingTop: 5,\n paddingLeft: 15,\n paddingRight: 15,\n paddingBottom: 5,\n flexDirection: 'row-reverse',\n },\n },\n eventImage: {\n width: 80,\n height: 80,\n resizeMode: 'cover',\n borderRadius: 2,\n },\n eventImageMargin: {\n right: {\n marginLeft: 15,\n },\n left: {\n marginRight: 15,\n },\n },\n eventInfo: {\n minHeight: 80,\n width: 150,\n },\n eventTitle: {\n fontSize: 12,\n fontFamily: 'sf-bold',\n backgroundColor: 'rgba(255,255,255,0)',\n },\n eventInfoAlign: {\n left: {\n textAlign: 'left',\n },\n right: {\n textAlign: 'right',\n },\n },\n messageImageLarge: {\n width: IMAGE_SIZE_LARGE,\n height: IMAGE_SIZE_LARGE,\n borderRadius: 2,\n alignSelf: 'center',\n },\n messageImageSmall: {\n width: IMAGE_SIZE_SMALL,\n height: IMAGE_SIZE_SMALL,\n borderRadius: 2,\n alignSelf: 'center',\n marginRight: IMAGE_MARGIN,\n marginBottom: IMAGE_MARGIN,\n },\n eventDate: {\n fontSize: 12,\n fontFamily: 'sf-regular',\n backgroundColor: 'rgba(255,255,255,0)',\n },\n inputContainer: {\n backgroundColor: '#fff',\n paddingVertical: 8,\n paddingHorizontal: 8,\n },\n inputText: {\n color: TEXT_DARKEST,\n fontSize: 14,\n fontFamily: 'sf-medium',\n },\n input: {\n margin: 0,\n backgroundColor: BG_GREY,\n borderRadius: 5,\n flex: 1,\n },\n sendContainer: {\n position: 'absolute',\n top: 0,\n right: 0,\n height: 30,\n width: 30,\n alignItems: 'center',\n justifyContent: 'center',\n backgroundColor: '#fff',\n },\n send: {\n fontSize: 15,\n color: TEXT_BLUEGREY,\n fontSize: 24,\n textAlign: 'center',\n },\n accessory: {\n height: IMAGE_PREVIEW_AREA_HEIGHT,\n borderTopWidth: 1,\n borderTopColor: LINEGREY,\n paddingTop: 8,\n marginTop: 8,\n },\n accessoryImageContainer: {\n paddingRight: 8,\n paddingTop: 8,\n marginRight: 5,\n },\n accessoryImage: {\n width: IMAGE_PREVIEW_SIZE,\n height: IMAGE_PREVIEW_SIZE,\n },\n accessoryImageBorder: {\n borderRadius: 2,\n },\n settingDropDownOpen: {\n height: 'auto',\n },\n imagesContainer: {\n marginLeft: 10,\n marginRight: 10,\n flexDirection: 'row',\n flexWrap: 'wrap',\n },\n uploadImagesContainer: {\n flexDirection: 'row',\n overflow: 'visible',\n },\n previewItemRemoveButton: {\n position: 'absolute',\n top: 0,\n right: 0,\n },\n previewItemRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n previewItemRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 1,\n },\n imagePlayContainer: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n alignItems: 'center',\n justifyContent: 'center',\n },\n imageControlIcon: {\n color: '#fff',\n fontSize: 20,\n textShadowColor: 'rgba(0,0,0,0.3)',\n textShadowOffset: { width: 2, height: 2 },\n },\n};\n\nconst mapStateToProps = state => {\n return {\n user: state.user,\n colourBrandingMain: getMainBrandingColourFromState(state),\n colourBrandingLight: getLightBrandingColourFromState(state),\n tabCount: getEnabledTabsFromState(state).length,\n };\n};\n\nexport default connect(mapStateToProps, {})(PlussChat);\n"]}
@@ -0,0 +1,204 @@
1
+ function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
+
3
+ /* eslint no-use-before-define: ["error", { "variables": false }], react-native/no-inline-styles: 0 */
4
+ // NOTE:
5
+ // This is a modified version of react-native-gifted-chat Message component
6
+ // Original source:
7
+ // https://github.com/FaridSafi/react-native-gifted-chat/blob/master/src/Message.js
8
+ import PropTypes from 'prop-types';
9
+ import React from 'react';
10
+ import { View, ViewPropTypes, StyleSheet, Text } from 'react-native';
11
+ import _ from 'lodash';
12
+ import { Avatar, Bubble, SystemMessage, Day, utils } from 'react-native-gifted-chat';
13
+ import { TEXT_LIGHT } from '../colours';
14
+ import { getFirstName } from '../helper';
15
+ const isSameUser = utils.isSameUser;
16
+ const isSameDay = utils.isSameDay;
17
+ export default class PlussChatMessage extends React.Component {
18
+ getInnerComponentProps() {
19
+ const {
20
+ containerStyle,
21
+ ...props
22
+ } = this.props;
23
+ return { ...props,
24
+ isSameUser,
25
+ isSameDay
26
+ };
27
+ }
28
+
29
+ isCurrentUser() {
30
+ if (this.props.user._id === this.props.currentMessage.user._id) {
31
+ return true;
32
+ }
33
+
34
+ return false;
35
+ }
36
+
37
+ renderDay() {
38
+ if (this.props.currentMessage.createdAt) {
39
+ const dayProps = this.getInnerComponentProps();
40
+
41
+ if (this.props.renderDay) {
42
+ return this.props.renderDay(dayProps);
43
+ }
44
+
45
+ return /*#__PURE__*/React.createElement(Day, dayProps);
46
+ }
47
+
48
+ return null;
49
+ }
50
+
51
+ renderBubble() {
52
+ const bubbleProps = this.getInnerComponentProps();
53
+
54
+ if (this.props.renderBubble) {
55
+ return this.props.renderBubble(bubbleProps);
56
+ }
57
+
58
+ return /*#__PURE__*/React.createElement(Bubble, bubbleProps);
59
+ }
60
+
61
+ renderSystemMessage() {
62
+ const systemMessageProps = this.getInnerComponentProps();
63
+
64
+ if (this.props.renderSystemMessage) {
65
+ return this.props.renderSystemMessage(systemMessageProps);
66
+ }
67
+
68
+ return /*#__PURE__*/React.createElement(SystemMessage, systemMessageProps);
69
+ }
70
+
71
+ renderAvatar() {
72
+ if (this.isCurrentUser() && !this.props.showUserAvatar) {
73
+ return null;
74
+ }
75
+
76
+ const avatarProps = this.getInnerComponentProps();
77
+ const {
78
+ currentMessage
79
+ } = avatarProps;
80
+
81
+ if (currentMessage.user.avatar === null || _.isEmpty(currentMessage.user.avatar)) {
82
+ return null;
83
+ }
84
+
85
+ return /*#__PURE__*/React.createElement(Avatar, _extends({}, avatarProps, {
86
+ imageStyle: {
87
+ left: {
88
+ width: 30,
89
+ height: 30,
90
+ borderRadius: 15
91
+ },
92
+ right: {
93
+ width: 30,
94
+ height: 30,
95
+ borderRadius: 15
96
+ }
97
+ },
98
+ containerStyle: {
99
+ left: {
100
+ marginRight: 10
101
+ },
102
+ right: {
103
+ marginLeft: 10
104
+ }
105
+ }
106
+ }));
107
+ }
108
+
109
+ renderName() {
110
+ const nameProps = this.getInnerComponentProps();
111
+ const {
112
+ currentMessage
113
+ } = nameProps;
114
+
115
+ if (currentMessage.user.name === null) {
116
+ return null;
117
+ }
118
+
119
+ return /*#__PURE__*/React.createElement(Text, {
120
+ style: [styles[this.props.position].name]
121
+ }, this.isCurrentUser() ? 'Me' : getFirstName(currentMessage.user.name));
122
+ }
123
+
124
+ render() {
125
+ const sameUserAsLast = isSameUser(this.props.currentMessage, this.props.previousMessage);
126
+ const sameUser = isSameUser(this.props.currentMessage, this.props.nextMessage);
127
+ return /*#__PURE__*/React.createElement(View, null, this.renderDay(), this.props.currentMessage.system ? this.renderSystemMessage() : /*#__PURE__*/React.createElement(View, null, sameUserAsLast ? null : this.renderName(), /*#__PURE__*/React.createElement(View, {
128
+ style: [styles[this.props.position].container, {
129
+ marginBottom: sameUser ? 2 : 10
130
+ }, !this.props.inverted && {
131
+ marginBottom: 2
132
+ }, this.props.containerStyle[this.props.position]]
133
+ }, this.props.position === 'left' ? this.renderAvatar() : null, this.renderBubble(), this.props.position === 'right' ? this.renderAvatar() : null)));
134
+ }
135
+
136
+ }
137
+ const styles = {
138
+ left: StyleSheet.create({
139
+ container: {
140
+ flexDirection: 'row',
141
+ alignItems: 'flex-end',
142
+ justifyContent: 'flex-start',
143
+ marginLeft: 10,
144
+ marginRight: 0
145
+ },
146
+ name: {
147
+ fontFamily: 'sf-regular',
148
+ color: TEXT_LIGHT,
149
+ fontSize: 14,
150
+ textAlign: 'left',
151
+ marginLeft: 50,
152
+ marginBottom: 5
153
+ }
154
+ }),
155
+ right: StyleSheet.create({
156
+ container: {
157
+ flexDirection: 'row',
158
+ alignItems: 'flex-end',
159
+ justifyContent: 'flex-end',
160
+ marginLeft: 0,
161
+ marginRight: 10
162
+ },
163
+ name: {
164
+ fontFamily: 'sf-regular',
165
+ color: TEXT_LIGHT,
166
+ fontSize: 14,
167
+ textAlign: 'right',
168
+ marginRight: 10,
169
+ marginBottom: 5
170
+ }
171
+ })
172
+ };
173
+ PlussChatMessage.defaultProps = {
174
+ renderAvatar: undefined,
175
+ renderBubble: null,
176
+ renderDay: null,
177
+ renderSystemMessage: null,
178
+ position: 'left',
179
+ currentMessage: {},
180
+ nextMessage: {},
181
+ previousMessage: {},
182
+ user: {},
183
+ containerStyle: {},
184
+ showUserAvatar: true,
185
+ inverted: true
186
+ };
187
+ PlussChatMessage.propTypes = {
188
+ renderAvatar: PropTypes.func,
189
+ showUserAvatar: PropTypes.bool,
190
+ renderBubble: PropTypes.func,
191
+ renderDay: PropTypes.func,
192
+ renderSystemMessage: PropTypes.func,
193
+ position: PropTypes.oneOf(['left', 'right']),
194
+ currentMessage: PropTypes.object,
195
+ nextMessage: PropTypes.object,
196
+ previousMessage: PropTypes.object,
197
+ user: PropTypes.object,
198
+ inverted: PropTypes.bool,
199
+ containerStyle: PropTypes.shape({
200
+ left: ViewPropTypes.style,
201
+ right: ViewPropTypes.style
202
+ })
203
+ };
204
+ //# sourceMappingURL=PlussChatMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["PlussChatMessage.js"],"names":["PropTypes","React","View","ViewPropTypes","StyleSheet","Text","_","Avatar","Bubble","SystemMessage","Day","utils","TEXT_LIGHT","getFirstName","isSameUser","isSameDay","PlussChatMessage","Component","getInnerComponentProps","containerStyle","props","isCurrentUser","user","_id","currentMessage","renderDay","createdAt","dayProps","renderBubble","bubbleProps","renderSystemMessage","systemMessageProps","renderAvatar","showUserAvatar","avatarProps","avatar","isEmpty","left","width","height","borderRadius","right","marginRight","marginLeft","renderName","nameProps","name","styles","position","render","sameUserAsLast","previousMessage","sameUser","nextMessage","system","container","marginBottom","inverted","create","flexDirection","alignItems","justifyContent","fontFamily","color","fontSize","textAlign","defaultProps","undefined","propTypes","func","bool","oneOf","object","shape","style"],"mappings":"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","sourcesContent":["/* eslint no-use-before-define: [\"error\", { \"variables\": false }], react-native/no-inline-styles: 0 */\n\n// NOTE:\n// This is a modified version of react-native-gifted-chat Message component\n\n// Original source:\n// https://github.com/FaridSafi/react-native-gifted-chat/blob/master/src/Message.js\n\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { View, ViewPropTypes, StyleSheet, Text } from 'react-native';\nimport _ from 'lodash';\n\nimport { Avatar, Bubble, SystemMessage, Day, utils } from 'react-native-gifted-chat';\nimport { TEXT_LIGHT } from '../colours';\nimport { getFirstName } from '../helper';\n\nconst isSameUser = utils.isSameUser;\nconst isSameDay = utils.isSameDay;\n\nexport default class PlussChatMessage extends React.Component {\n getInnerComponentProps() {\n const { containerStyle, ...props } = this.props;\n return {\n ...props,\n isSameUser,\n isSameDay,\n };\n }\n\n isCurrentUser() {\n if (this.props.user._id === this.props.currentMessage.user._id) {\n return true;\n }\n return false;\n }\n\n renderDay() {\n if (this.props.currentMessage.createdAt) {\n const dayProps = this.getInnerComponentProps();\n if (this.props.renderDay) {\n return this.props.renderDay(dayProps);\n }\n return <Day {...dayProps} />;\n }\n return null;\n }\n\n renderBubble() {\n const bubbleProps = this.getInnerComponentProps();\n if (this.props.renderBubble) {\n return this.props.renderBubble(bubbleProps);\n }\n return <Bubble {...bubbleProps} />;\n }\n\n renderSystemMessage() {\n const systemMessageProps = this.getInnerComponentProps();\n if (this.props.renderSystemMessage) {\n return this.props.renderSystemMessage(systemMessageProps);\n }\n return <SystemMessage {...systemMessageProps} />;\n }\n\n renderAvatar() {\n if (this.isCurrentUser() && !this.props.showUserAvatar) {\n return null;\n }\n const avatarProps = this.getInnerComponentProps();\n const { currentMessage } = avatarProps;\n if (currentMessage.user.avatar === null || _.isEmpty(currentMessage.user.avatar)) {\n return null;\n }\n return (\n <Avatar\n {...avatarProps}\n imageStyle={{\n left: {\n width: 30,\n height: 30,\n borderRadius: 15,\n },\n right: {\n width: 30,\n height: 30,\n borderRadius: 15,\n },\n }}\n containerStyle={{\n left: {\n marginRight: 10,\n },\n right: {\n marginLeft: 10,\n },\n }}\n />\n );\n }\n\n renderName() {\n const nameProps = this.getInnerComponentProps();\n const { currentMessage } = nameProps;\n if (currentMessage.user.name === null) {\n return null;\n }\n return <Text style={[styles[this.props.position].name]}>{this.isCurrentUser() ? 'Me' : getFirstName(currentMessage.user.name)}</Text>;\n }\n\n render() {\n const sameUserAsLast = isSameUser(this.props.currentMessage, this.props.previousMessage);\n const sameUser = isSameUser(this.props.currentMessage, this.props.nextMessage);\n return (\n <View>\n {this.renderDay()}\n {this.props.currentMessage.system ? (\n this.renderSystemMessage()\n ) : (\n <View>\n {sameUserAsLast ? null : this.renderName()}\n <View\n style={[\n styles[this.props.position].container,\n { marginBottom: sameUser ? 2 : 10 },\n !this.props.inverted && { marginBottom: 2 },\n this.props.containerStyle[this.props.position],\n ]}\n >\n {this.props.position === 'left' ? this.renderAvatar() : null}\n {this.renderBubble()}\n {this.props.position === 'right' ? this.renderAvatar() : null}\n </View>\n </View>\n )}\n </View>\n );\n }\n}\n\nconst styles = {\n left: StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n justifyContent: 'flex-start',\n marginLeft: 10,\n marginRight: 0,\n },\n name: {\n fontFamily: 'sf-regular',\n color: TEXT_LIGHT,\n fontSize: 14,\n textAlign: 'left',\n marginLeft: 50,\n marginBottom: 5,\n },\n }),\n right: StyleSheet.create({\n container: {\n flexDirection: 'row',\n alignItems: 'flex-end',\n justifyContent: 'flex-end',\n marginLeft: 0,\n marginRight: 10,\n },\n name: {\n fontFamily: 'sf-regular',\n color: TEXT_LIGHT,\n fontSize: 14,\n textAlign: 'right',\n marginRight: 10,\n marginBottom: 5,\n },\n }),\n};\n\nPlussChatMessage.defaultProps = {\n renderAvatar: undefined,\n renderBubble: null,\n renderDay: null,\n renderSystemMessage: null,\n position: 'left',\n currentMessage: {},\n nextMessage: {},\n previousMessage: {},\n user: {},\n containerStyle: {},\n showUserAvatar: true,\n inverted: true,\n};\n\nPlussChatMessage.propTypes = {\n renderAvatar: PropTypes.func,\n showUserAvatar: PropTypes.bool,\n renderBubble: PropTypes.func,\n renderDay: PropTypes.func,\n renderSystemMessage: PropTypes.func,\n position: PropTypes.oneOf(['left', 'right']),\n currentMessage: PropTypes.object,\n nextMessage: PropTypes.object,\n previousMessage: PropTypes.object,\n user: PropTypes.object,\n inverted: PropTypes.bool,\n containerStyle: PropTypes.shape({\n left: ViewPropTypes.style,\n right: ViewPropTypes.style,\n }),\n};\n"]}
@@ -0,0 +1,66 @@
1
+ import React from 'react';
2
+ import { StyleSheet, Text, View } from 'react-native';
3
+ import moment from 'moment';
4
+ export default class PlussChatTime extends React.Component {
5
+ shouldRenderDay(curTime, prevTime) {
6
+ return !curTime.isSame(prevTime, 'd');
7
+ }
8
+
9
+ shouldRenderTime(curTime, prevTime) {
10
+ return curTime.diff(prevTime, 'm') >= 10;
11
+ }
12
+
13
+ render() {
14
+ const curMesTime = moment(this.props.currentMessage.createdAt).local();
15
+ const prevTime = moment(this.props.previousMessage.createdAt).local();
16
+ const now = moment().local();
17
+
18
+ if (this.shouldRenderDay(curMesTime, prevTime) || this.shouldRenderTime(curMesTime, prevTime)) {
19
+ let timestamp = '';
20
+
21
+ if (!now.isSame(curMesTime, 'd')) {
22
+ timestamp += curMesTime.format('ddd, D MMM');
23
+
24
+ if (!now.isSame(curMesTime, 'y')) {
25
+ timestamp += ` ${curMesTime.format('YYYY')}`;
26
+ }
27
+
28
+ timestamp += ' • ';
29
+ }
30
+
31
+ timestamp += curMesTime.format('h:mma');
32
+ return /*#__PURE__*/React.createElement(View, {
33
+ style: [styles.container, this.props.containerStyle]
34
+ }, /*#__PURE__*/React.createElement(View, {
35
+ style: [styles.wrapper, this.props.wrapperStyle]
36
+ }, /*#__PURE__*/React.createElement(Text, {
37
+ style: [styles.text, this.props.textStyle]
38
+ }, timestamp)));
39
+ }
40
+
41
+ return null;
42
+ }
43
+
44
+ }
45
+ const styles = StyleSheet.create({
46
+ container: {
47
+ alignItems: 'center',
48
+ justifyContent: 'center',
49
+ marginTop: 5,
50
+ marginBottom: 10
51
+ },
52
+ wrapper: {// backgroundColor: '#ccc',
53
+ // borderRadius: 10,
54
+ // paddingLeft: 10,
55
+ // paddingRight: 10,
56
+ // paddingTop: 5,
57
+ // paddingBottom: 5,
58
+ },
59
+ text: {
60
+ backgroundColor: 'transparent',
61
+ color: '#b2b2b2',
62
+ fontSize: 12,
63
+ fontWeight: '600'
64
+ }
65
+ });
66
+ //# sourceMappingURL=PlussChatTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["PlussChatTime.js"],"names":["React","StyleSheet","Text","View","moment","PlussChatTime","Component","shouldRenderDay","curTime","prevTime","isSame","shouldRenderTime","diff","render","curMesTime","props","currentMessage","createdAt","local","previousMessage","now","timestamp","format","styles","container","containerStyle","wrapper","wrapperStyle","text","textStyle","create","alignItems","justifyContent","marginTop","marginBottom","backgroundColor","color","fontSize","fontWeight"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,UAAT,EAAqBC,IAArB,EAA2BC,IAA3B,QAAuC,cAAvC;AAEA,OAAOC,MAAP,MAAmB,QAAnB;AAEA,eAAe,MAAMC,aAAN,SAA4BL,KAAK,CAACM,SAAlC,CAA4C;AACzDC,EAAAA,eAAe,CAACC,OAAD,EAAUC,QAAV,EAAoB;AACjC,WAAO,CAACD,OAAO,CAACE,MAAR,CAAeD,QAAf,EAAyB,GAAzB,CAAR;AACD;;AAEDE,EAAAA,gBAAgB,CAACH,OAAD,EAAUC,QAAV,EAAoB;AAClC,WAAOD,OAAO,CAACI,IAAR,CAAaH,QAAb,EAAuB,GAAvB,KAA+B,EAAtC;AACD;;AAEDI,EAAAA,MAAM,GAAG;AACP,UAAMC,UAAU,GAAGV,MAAM,CAAC,KAAKW,KAAL,CAAWC,cAAX,CAA0BC,SAA3B,CAAN,CAA4CC,KAA5C,EAAnB;AACA,UAAMT,QAAQ,GAAGL,MAAM,CAAC,KAAKW,KAAL,CAAWI,eAAX,CAA2BF,SAA5B,CAAN,CAA6CC,KAA7C,EAAjB;AACA,UAAME,GAAG,GAAGhB,MAAM,GAAGc,KAAT,EAAZ;;AAEA,QAAI,KAAKX,eAAL,CAAqBO,UAArB,EAAiCL,QAAjC,KAA8C,KAAKE,gBAAL,CAAsBG,UAAtB,EAAkCL,QAAlC,CAAlD,EAA+F;AAC7F,UAAIY,SAAS,GAAG,EAAhB;;AACA,UAAI,CAACD,GAAG,CAACV,MAAJ,CAAWI,UAAX,EAAuB,GAAvB,CAAL,EAAkC;AAChCO,QAAAA,SAAS,IAAIP,UAAU,CAACQ,MAAX,CAAkB,YAAlB,CAAb;;AACA,YAAI,CAACF,GAAG,CAACV,MAAJ,CAAWI,UAAX,EAAuB,GAAvB,CAAL,EAAkC;AAChCO,UAAAA,SAAS,IAAK,IAAGP,UAAU,CAACQ,MAAX,CAAkB,MAAlB,CAA0B,EAA3C;AACD;;AACDD,QAAAA,SAAS,IAAI,KAAb;AACD;;AACDA,MAAAA,SAAS,IAAIP,UAAU,CAACQ,MAAX,CAAkB,OAAlB,CAAb;AACA,0BACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE,CAACC,MAAM,CAACC,SAAR,EAAmB,KAAKT,KAAL,CAAWU,cAA9B;AAAb,sBACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE,CAACF,MAAM,CAACG,OAAR,EAAiB,KAAKX,KAAL,CAAWY,YAA5B;AAAb,sBACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE,CAACJ,MAAM,CAACK,IAAR,EAAc,KAAKb,KAAL,CAAWc,SAAzB;AAAb,SAAmDR,SAAnD,CADF,CADF,CADF;AAOD;;AACD,WAAO,IAAP;AACD;;AAjCwD;AAoC3D,MAAME,MAAM,GAAGtB,UAAU,CAAC6B,MAAX,CAAkB;AAC/BN,EAAAA,SAAS,EAAE;AACTO,IAAAA,UAAU,EAAE,QADH;AAETC,IAAAA,cAAc,EAAE,QAFP;AAGTC,IAAAA,SAAS,EAAE,CAHF;AAITC,IAAAA,YAAY,EAAE;AAJL,GADoB;AAO/BR,EAAAA,OAAO,EAAE,CACP;AACA;AACA;AACA;AACA;AACA;AANO,GAPsB;AAe/BE,EAAAA,IAAI,EAAE;AACJO,IAAAA,eAAe,EAAE,aADb;AAEJC,IAAAA,KAAK,EAAE,SAFH;AAGJC,IAAAA,QAAQ,EAAE,EAHN;AAIJC,IAAAA,UAAU,EAAE;AAJR;AAfyB,CAAlB,CAAf","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport moment from 'moment';\n\nexport default class PlussChatTime extends React.Component {\n shouldRenderDay(curTime, prevTime) {\n return !curTime.isSame(prevTime, 'd');\n }\n\n shouldRenderTime(curTime, prevTime) {\n return curTime.diff(prevTime, 'm') >= 10;\n }\n\n render() {\n const curMesTime = moment(this.props.currentMessage.createdAt).local();\n const prevTime = moment(this.props.previousMessage.createdAt).local();\n const now = moment().local();\n\n if (this.shouldRenderDay(curMesTime, prevTime) || this.shouldRenderTime(curMesTime, prevTime)) {\n let timestamp = '';\n if (!now.isSame(curMesTime, 'd')) {\n timestamp += curMesTime.format('ddd, D MMM');\n if (!now.isSame(curMesTime, 'y')) {\n timestamp += ` ${curMesTime.format('YYYY')}`;\n }\n timestamp += ' • ';\n }\n timestamp += curMesTime.format('h:mma');\n return (\n <View style={[styles.container, this.props.containerStyle]}>\n <View style={[styles.wrapper, this.props.wrapperStyle]}>\n <Text style={[styles.text, this.props.textStyle]}>{timestamp}</Text>\n </View>\n </View>\n );\n }\n return null;\n }\n}\n\nconst styles = StyleSheet.create({\n container: {\n alignItems: 'center',\n justifyContent: 'center',\n marginTop: 5,\n marginBottom: 10,\n },\n wrapper: {\n // backgroundColor: '#ccc',\n // borderRadius: 10,\n // paddingLeft: 10,\n // paddingRight: 10,\n // paddingTop: 5,\n // paddingBottom: 5,\n },\n text: {\n backgroundColor: 'transparent',\n color: '#b2b2b2',\n fontSize: 12,\n fontWeight: '600',\n },\n});\n"]}
@@ -0,0 +1,138 @@
1
+ import React, { Component } from 'react';
2
+ import { View, Text, TouchableWithoutFeedback, Modal } from 'react-native';
3
+ import _ from 'lodash';
4
+ import { connect } from 'react-redux';
5
+ import { LINEGREY, TEXT_DARK, TEXT_LIGHT } from '../colours';
6
+ import { getMainBrandingColourFromState } from '../helper';
7
+ import { InlineButton } from './InlineButton';
8
+
9
+ class Popup extends Component {
10
+ renderOptions() {
11
+ if (!this.props.options) {
12
+ return null;
13
+ }
14
+
15
+ return /*#__PURE__*/React.createElement(View, {
16
+ style: styles.bottom
17
+ }, _.map(this.props.options, (option, index) => {
18
+ return /*#__PURE__*/React.createElement(InlineButton, {
19
+ key: index,
20
+ onPress: option.action,
21
+ color: "#fff",
22
+ textStyle: [styles.optionText, {
23
+ color: this.props.colourBrandingMain
24
+ }, option.bold && styles.optionTextBold]
25
+ }, option.text);
26
+ }));
27
+ }
28
+
29
+ renderTitle() {
30
+ if (!this.props.title) {
31
+ return null;
32
+ }
33
+
34
+ return /*#__PURE__*/React.createElement(Text, {
35
+ style: [styles.title, {
36
+ color: this.props.colourBrandingMain
37
+ }]
38
+ }, this.props.title);
39
+ }
40
+
41
+ renderContent() {
42
+ if (this.props.content) {
43
+ return this.props.content;
44
+ }
45
+
46
+ if (!this.props.text) {
47
+ return null;
48
+ }
49
+
50
+ return /*#__PURE__*/React.createElement(Text, {
51
+ style: styles.text
52
+ }, this.props.text);
53
+ }
54
+
55
+ render() {
56
+ return /*#__PURE__*/React.createElement(Modal, {
57
+ visible: true,
58
+ transparent: true,
59
+ animationType: "fade",
60
+ onRequestClose: this.props.onClose
61
+ }, /*#__PURE__*/React.createElement(TouchableWithoutFeedback, {
62
+ style: styles.container,
63
+ onPress: this.props.onClose
64
+ }, /*#__PURE__*/React.createElement(View, {
65
+ style: styles.container
66
+ }, /*#__PURE__*/React.createElement(View, {
67
+ style: [styles.menu, this.props.containerStyle]
68
+ }, /*#__PURE__*/React.createElement(View, {
69
+ style: styles.top
70
+ }, this.renderTitle(), this.renderContent(), this.props.children), this.renderOptions()))));
71
+ }
72
+
73
+ }
74
+
75
+ const styles = {
76
+ container: {
77
+ position: 'absolute',
78
+ bottom: 0,
79
+ left: 0,
80
+ right: 0,
81
+ top: 0,
82
+ backgroundColor: 'rgba(0,0,0,0.5)',
83
+ zIndex: 1000,
84
+ paddingHorizontal: 16,
85
+ paddingVertical: 32,
86
+ justifyContent: 'center',
87
+ alignItems: 'center',
88
+ width: '100%'
89
+ },
90
+ menu: {
91
+ backgroundColor: '#fff',
92
+ borderRadius: 12
93
+ },
94
+ top: {
95
+ padding: 24
96
+ },
97
+ title: {
98
+ fontFamily: 'sf-bold',
99
+ fontSize: 24,
100
+ lineHeight: 24,
101
+ color: TEXT_DARK,
102
+ textAlign: 'center',
103
+ marginBottom: 16
104
+ },
105
+ text: {
106
+ fontFamily: 'sf-regular',
107
+ fontSize: 16,
108
+ lineHeight: 22,
109
+ color: TEXT_LIGHT,
110
+ textAlign: 'center'
111
+ },
112
+ bottom: {
113
+ borderTopColor: LINEGREY,
114
+ borderTopWidth: 1,
115
+ flexDirection: 'row-reverse',
116
+ padding: 8
117
+ },
118
+ option: {
119
+ marginRight: 16
120
+ },
121
+ optionText: {
122
+ fontFamily: 'sf-regular',
123
+ fontSize: 16
124
+ },
125
+ optionTextBold: {
126
+ fontFamily: 'sf-semibold'
127
+ }
128
+ };
129
+
130
+ const mapStateToProps = state => {
131
+ return {
132
+ colourBrandingMain: getMainBrandingColourFromState(state)
133
+ };
134
+ };
135
+
136
+ const popup = connect(mapStateToProps, {})(Popup);
137
+ export { popup as Popup };
138
+ //# sourceMappingURL=Popup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["Popup.js"],"names":["React","Component","View","Text","TouchableWithoutFeedback","Modal","_","connect","LINEGREY","TEXT_DARK","TEXT_LIGHT","getMainBrandingColourFromState","InlineButton","Popup","renderOptions","props","options","styles","bottom","map","option","index","action","optionText","color","colourBrandingMain","bold","optionTextBold","text","renderTitle","title","renderContent","content","render","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"],"mappings":"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","sourcesContent":["import React, { Component } from 'react';\nimport { View, Text, TouchableWithoutFeedback, Modal } from 'react-native';\nimport _ from 'lodash';\nimport { connect } from 'react-redux';\nimport { LINEGREY, TEXT_DARK, TEXT_LIGHT } from '../colours';\nimport { getMainBrandingColourFromState } from '../helper';\nimport { InlineButton } from './InlineButton';\n\nclass Popup extends Component {\n renderOptions() {\n if (!this.props.options) {\n return null;\n }\n return (\n <View style={styles.bottom}>\n {_.map(this.props.options, (option, index) => {\n return (\n <InlineButton\n key={index}\n onPress={option.action}\n color=\"#fff\"\n textStyle={[styles.optionText, { color: this.props.colourBrandingMain }, option.bold && styles.optionTextBold]}\n >\n {option.text}\n </InlineButton>\n );\n })}\n </View>\n );\n }\n\n renderTitle() {\n if (!this.props.title) {\n return null;\n }\n return <Text style={[styles.title, { color: this.props.colourBrandingMain }]}>{this.props.title}</Text>;\n }\n\n renderContent() {\n if (this.props.content) {\n return this.props.content;\n }\n if (!this.props.text) {\n return null;\n }\n return <Text style={styles.text}>{this.props.text}</Text>;\n }\n\n render() {\n return (\n <Modal visible transparent animationType=\"fade\" onRequestClose={this.props.onClose}>\n <TouchableWithoutFeedback style={styles.container} onPress={this.props.onClose}>\n <View style={styles.container}>\n <View style={[styles.menu, this.props.containerStyle]}>\n <View style={styles.top}>\n {this.renderTitle()}\n {this.renderContent()}\n {this.props.children}\n </View>\n {this.renderOptions()}\n </View>\n </View>\n </TouchableWithoutFeedback>\n </Modal>\n );\n }\n}\n\nconst styles = {\n container: {\n position: 'absolute',\n bottom: 0,\n left: 0,\n right: 0,\n top: 0,\n backgroundColor: 'rgba(0,0,0,0.5)',\n zIndex: 1000,\n paddingHorizontal: 16,\n paddingVertical: 32,\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n },\n menu: {\n backgroundColor: '#fff',\n borderRadius: 12,\n },\n top: {\n padding: 24,\n },\n title: {\n fontFamily: 'sf-bold',\n fontSize: 24,\n lineHeight: 24,\n color: TEXT_DARK,\n textAlign: 'center',\n marginBottom: 16,\n },\n text: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n lineHeight: 22,\n color: TEXT_LIGHT,\n textAlign: 'center',\n },\n bottom: {\n borderTopColor: LINEGREY,\n borderTopWidth: 1,\n flexDirection: 'row-reverse',\n padding: 8,\n },\n option: {\n marginRight: 16,\n },\n optionText: {\n fontFamily: 'sf-regular',\n fontSize: 16,\n },\n optionTextBold: {\n fontFamily: 'sf-semibold',\n },\n};\n\nconst mapStateToProps = state => {\n return {\n colourBrandingMain: getMainBrandingColourFromState(state),\n };\n};\n\nconst popup = connect(mapStateToProps, {})(Popup);\nexport { popup as Popup };\n"]}