@plusscommunities/pluss-core-app 3.0.1 → 3.0.2

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.
@@ -587,6 +587,12 @@ class PlussChat extends Component {
587
587
  }
588
588
 
589
589
  renderAccessory(props) {
590
+ const hasAttachment = this.hasImagesAttached(props.imagesToUpload);
591
+
592
+ if (!hasAttachment) {
593
+ return null;
594
+ }
595
+
590
596
  return /*#__PURE__*/React.createElement(ScrollView, {
591
597
  horizontal: true,
592
598
  style: styles.uploadImagesContainer
@@ -645,23 +651,13 @@ class PlussChat extends Component {
645
651
  }
646
652
 
647
653
  renderInputToolbar(props) {
648
- let toolbar;
649
-
650
- if (!this.hasImagesAttached(props.imagesToUpload)) {
651
- toolbar = /*#__PURE__*/React.createElement(InputToolbar, _extends({}, props, {
652
- containerStyle: styles.inputContainer,
653
- renderComposer: this.renderComposer.bind(this)
654
- }));
655
- } else {
656
- toolbar = /*#__PURE__*/React.createElement(InputToolbar, _extends({}, props, {
657
- containerStyle: styles.inputContainer,
658
- renderComposer: this.renderComposer.bind(this),
659
- renderAccessory: this.renderAccessory.bind(this),
660
- accessoryStyle: styles.accessory
661
- }));
662
- }
663
-
664
- return toolbar;
654
+ const hasAttachment = this.hasImagesAttached(props.imagesToUpload);
655
+ return /*#__PURE__*/React.createElement(InputToolbar, _extends({}, props, {
656
+ containerStyle: styles.inputContainer,
657
+ renderComposer: this.renderComposer.bind(this),
658
+ renderAccessory: hasAttachment ? this.renderAccessory.bind(this) : null,
659
+ accessoryStyle: hasAttachment && styles.accessory
660
+ }));
665
661
  }
666
662
 
667
663
  renderFooter() {
@@ -727,6 +723,8 @@ class PlussChat extends Component {
727
723
  type: "font-awesome",
728
724
  iconStyle: styles.replyingRemoveIcon
729
725
  })))), /*#__PURE__*/React.createElement(View, {
726
+ style: styles.composerInputWrapper
727
+ }, /*#__PURE__*/React.createElement(View, {
730
728
  style: [styles.input, {
731
729
  //height: props.composerHeight + 10,
732
730
  //borderRadius: (this.MIN_COMPOSER_HEIGHT + 10) / 2,
@@ -743,7 +741,7 @@ class PlussChat extends Component {
743
741
  onFocus: this.onFocusInput.bind(this),
744
742
  onBlur: this.onBlurInput.bind(this)
745
743
  }
746
- }))));
744
+ })))));
747
745
  }
748
746
  /***
749
747
  * Main Render
@@ -756,7 +754,7 @@ class PlussChat extends Component {
756
754
  noTab
757
755
  } = this.props;
758
756
  const iosBottomOffset = (tabCount === 1 || noTab ? -10 : 52) + getBottomSpace();
759
- const minInputToolbarHeight = this.MIN_COMPOSER_HEIGHT + 16 + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);
757
+ const minInputToolbarHeight = this.MIN_COMPOSER_HEIGHT + 16 + (this.state.replyingTo ? 30 : 0) + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);
760
758
  return /*#__PURE__*/React.createElement(GiftedChat, {
761
759
  alwaysShowSend: false,
762
760
  keyboardShouldPersistTaps: 'never',
@@ -945,6 +943,10 @@ const styles = {
945
943
  composerContainer: {
946
944
  flex: 1
947
945
  },
946
+ composerInputWrapper: {
947
+ flex: 1,
948
+ flexDirection: 'row'
949
+ },
948
950
  replyingTo: {
949
951
  minHeight: 30,
950
952
  flexDirection: 'row',
@@ -1 +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","TextStyle","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","message","replyingTo","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","colourBrandingMain","onReply","renderMessageText","messageTextProps","fontFamily","fontSize","color","marginTop","marginBottom","marginLeft","marginRight","renderTime","renderDay","dayProps","renderCustomView","position","containerWidth","styles","imagesContainer","width","paddingVertical","thumb","toggleFullscreenVideo","bind","messageImageSmall","messageImageLarge","imagePlayContainer","imageControlIcon","onPressImage","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","toolbar","inputContainer","renderComposer","accessory","renderFooter","renderLoading","justifyContent","alignContent","renderAvatar","composerContainer","replyingRemoveButton","replyingRemoveContainer","replyingRemoveIcon","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","borderBottomWidth","borderBottomColor","borderWidth","borderColor","borderTopWidth","borderTopColor","settingDropDownOpen","flexWrap","overflow","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 { TextStyle } from './TextStyle';\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 onReply = message => {\n this.setState({\n replyingTo: message,\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 if (this.state.replyingTo) {\n messages[0].replyingTo = this.state.replyingTo;\n }\n\n this.props.onSend(messages);\n this.setState({ imagesToUpload: [], replyingTo: null });\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 (\n <PlussChatMessage\n key={props.RowId}\n colourBrandingMain={this.props.colourBrandingMain}\n onPressReply={() => {\n this.onReply(props.currentMessage);\n }}\n {...props}\n />\n );\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 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 }, !!this.state.replyingTo && { marginTop: 38 }]}>\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 let toolbar;\n if (!this.hasImagesAttached(props.imagesToUpload)) {\n toolbar = <InputToolbar {...props} containerStyle={styles.inputContainer} renderComposer={this.renderComposer.bind(this)} />;\n } else {\n toolbar = (\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 return toolbar;\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 return (\n <View style={styles.composerContainer}>\n {this.state.replyingTo && (\n <View style={styles.replyingTo}>\n <TextStyle type=\"body\">\n Replying to {_.isEmpty(this.state.replyingTo?.user?.name) ? 'message' : this.state.replyingTo?.user?.name}\n </TextStyle>\n <TouchableOpacity\n style={styles.replyingRemoveButton}\n onPress={() => this.onReply(null)}\n hitSlop={{ top: 8, right: 8, bottom: 8, left: 8 }}\n >\n <View style={[styles.replyingRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.replyingRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n )}\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 </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 composerContainer: {\n flex: 1,\n },\n replyingTo: {\n minHeight: 30,\n flexDirection: 'row',\n alignItems: 'center',\n borderBottomWidth: 1,\n borderBottomColor: LINEGREY,\n marginBottom: 8,\n },\n replyingRemoveButton: {\n marginLeft: 10,\n },\n replyingRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n replyingRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 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"]}
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","TextStyle","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","message","replyingTo","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","colourBrandingMain","onReply","renderMessageText","messageTextProps","fontFamily","fontSize","color","marginTop","marginBottom","marginLeft","marginRight","renderTime","renderDay","dayProps","renderCustomView","position","containerWidth","styles","imagesContainer","width","paddingVertical","thumb","toggleFullscreenVideo","bind","messageImageSmall","messageImageLarge","imagePlayContainer","imageControlIcon","onPressImage","onOpenAttachment","onPressEvent","eventContainer","eventImage","eventImageMargin","Thumbnail","eventInfo","eventTitle","eventInfoAlign","Title","eventDate","utc","StartTime","local","format","onPressAttachment","renderSend","top","sendContainer","height","send","renderAccessory","hasAttachment","uploadImagesContainer","isVideoUrl","accessoryImageContainer","accessoryImage","accessoryImageBorder","previewItemRemoveButton","onRemoveImage","bottom","previewItemRemoveContainer","previewItemRemoveIcon","renderInputToolbar","inputContainer","renderComposer","accessory","renderFooter","renderLoading","justifyContent","alignContent","renderAvatar","composerContainer","replyingRemoveButton","replyingRemoveContainer","replyingRemoveIcon","composerInputWrapper","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","borderBottomWidth","borderBottomColor","borderWidth","borderColor","borderTopWidth","borderTopColor","settingDropDownOpen","flexWrap","overflow","textShadowColor","textShadowOffset","mapStateToProps"],"mappings":";;;;AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AACA,SAASC,IAAT,EAAeC,KAAf,EAAsBC,eAAtB,EAAuCC,gBAAvC,EAAyDC,IAAzD,EAA+DC,oBAA/D,EAAqFC,QAArF,EAA+FC,UAA/F,QAAiH,cAAjH;AACA,SAASC,UAAT,EAAqBC,MAArB,EAA6BC,WAA7B,EAA0CC,IAA1C,EAAgDC,YAAhD,EAA8DC,QAA9D,QAA8E,0BAA9E;AACA,SAASC,OAAT,QAAwB,aAAxB;AACA,OAAOC,CAAP,MAAc,QAAd;AACA,OAAOC,MAAP,MAAmB,QAAnB;AACA,SAASC,IAAT,QAAqB,uBAArB;AACA,SAASC,cAAT,QAA+B,8BAA/B;AACA,SAASC,OAAT,QAAwB,WAAxB;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA,SAASC,QAAT,QAAyB,YAAzB;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,OAAOC,gBAAP,MAA6B,oBAA7B;AACA,SAASC,SAAT,QAA0B,aAA1B;AACA,SACEC,SADF,EAEEC,QAFF,EAGEC,YAHF,EAIEC,8BAJF,EAKEC,+BALF,EAMEC,OANF,EAOEC,aAPF,QAQO,YARP;AASA,SAASC,uBAAT,EAAkCC,OAAlC,EAA2CC,WAA3C,EAAwDC,WAAxD,EAAqEC,OAArE,EAA8EC,cAA9E,EAA8FC,WAA9F,QAAiH,WAAjH;AACA,OAAOC,MAAP,IAAiBC,QAAjB,QAAiC,WAAjC;AACA,OAAOC,aAAP,MAA0B,iBAA1B;AACA,OAAOC,mBAAP,MAAgC,uBAAhC;AACA,SAASC,UAAT,QAA2B,cAA3B;AACA,SAASC,UAAT,QAA2B,cAA3B;AAEA,MAAMC,gBAAgB,GAAG,EAAzB;AACA,MAAMC,gBAAgB,GAAG,GAAzB;AACA,MAAMC,cAAc,GAAG,CAAvB;AACA,MAAMC,YAAY,GAAG,CAArB;AACA,MAAMC,yBAAyB,GAAG,GAAlC;AACA,MAAMC,kBAAkB,GAAGD,yBAAyB,GAAG,EAAvD;;AAEA,MAAME,SAAN,SAAwBrD,SAAxB,CAAkC;AAChCsD,EAAAA,WAAW,CAACC,KAAD,EAAQ;AAAA;;AACjB,UAAMA,KAAN,CADiB;AAAA;;AAAA,0CAuDJC,KAAK,IAAI;AACtBd,MAAAA,QAAQ,CAACe,UAAT,CAAoBC,QAApB,CAA6B,aAA7B,EAA4C;AAAEF,QAAAA;AAAF,OAA5C;AACD,KAzDkB;;AAAA,+CA0DCG,UAAU,IAAI;AAChC,cAAQA,UAAU,CAACC,IAAnB;AACE,aAAK,OAAL;AACElB,UAAAA,QAAQ,CAACe,UAAT,CAAoBC,QAApB,CAA6B,aAA7B,EAA4C;AAAEF,YAAAA,KAAK,EAAEG;AAAT,WAA5C;AACA;;AACF,aAAK,OAAL;AACEjB,UAAAA,QAAQ,CAACe,UAAT,CAAoBC,QAApB,CAA6B,aAA7B,EAA4C;AAAEG,YAAAA,KAAK,EAAEF;AAAT,WAA5C;AACA;;AACF;AACE;AARJ;AAUD,KArEkB;;AAAA,+CAuEC,YAA2B;AAAA,UAA1BG,cAA0B,uEAAT,IAAS;AAC7C,aAAO,CAAC9C,CAAC,CAAC+C,OAAF,CAAUD,cAAc,IAAI,KAAI,CAACE,KAAL,CAAWF,cAAvC,CAAR;AACD,KAzEkB;;AAAA,4CA2EF,YAA2B;AAAA,UAA1BA,cAA0B,uEAAT,IAAS;AAC1C,YAAMG,MAAM,GAAGH,cAAc,IAAI,KAAI,CAACE,KAAL,CAAWF,cAA5C;AACA,aAAO,KAAI,CAACI,iBAAL,CAAuBD,MAAvB,KAAkCA,MAAM,CAACE,KAAP,CAAaC,CAAC,IAAI,CAACA,CAAC,CAACC,SAAH,IAAgBD,CAAC,CAACE,eAApC,CAAzC;AACD,KA9EkB;;AAAA,+CAgFC,MAAM;AACxB,UAAI,KAAKC,UAAT,EAAqB;AAErB,WAAKA,UAAL,GAAkBC,WAAW,CAAC,YAAY;AACxC,cAAMV,cAAc,GAAG,EAAvB;AACA,cAAMW,OAAO,CAACC,GAAR,CACJ,KAAKV,KAAL,CAAWF,cAAX,CAA0Ba,GAA1B,CAA8BC,KAAK,IAAI;AACrC,iBAAO,IAAIH,OAAJ,CAAY,MAAMI,OAAN,IAAiB;AAClC,kBAAMC,QAAQ,GAAG,EAAE,GAAGF;AAAL,aAAjB;AACAd,YAAAA,cAAc,CAACiB,IAAf,CAAoBD,QAApB;;AACA,gBAAIA,QAAQ,CAACE,GAAT,IAAgB,CAACF,QAAQ,CAACR,eAA9B,EAA+C;AAC7CQ,cAAAA,QAAQ,CAACT,SAAT,GAAqB,KAArB;AACAS,cAAAA,QAAQ,CAACG,UAAT,GAAsB,KAAtB;AACAH,cAAAA,QAAQ,CAACR,eAAT,GAA2B,MAAMjC,WAAW,CAACyC,QAAQ,CAACI,YAAV,CAA5C;AACAL,cAAAA,OAAO,CAACC,QAAQ,CAACR,eAAV,CAAP;AACD;;AACDO,YAAAA,OAAO,CAAC,IAAD,CAAP;AACD,WAVM,CAAP;AAWD,SAZD,CADI,CAAN;AAeA,cAAMM,eAAe,GAAGrB,cAAc,CAACK,KAAf,CAAqBS,KAAK,IAAI,CAACA,KAAK,CAACI,GAAP,IAAcJ,KAAK,CAACN,eAAlD,CAAxB;;AACA,YAAIa,eAAJ,EAAqB;AACnBC,UAAAA,aAAa,CAAC,KAAKb,UAAN,CAAb;AACA,eAAKA,UAAL,GAAkB,IAAlB;AACA,eAAKc,QAAL,CAAc;AAAEvB,YAAAA;AAAF,WAAd;AACD;AACF,OAvB4B,EAuB1B,IAvB0B,CAA7B;AAwBD,KA3GkB;;AAAA,8CA6GAwB,CAAC,IAAI;AACtB,WAAKD,QAAL,CAAc;AACZE,QAAAA,WAAW,EAAED;AADD,OAAd;AAGD,KAjHkB;;AAAA,+CAmHC,MAAM;AACxB,WAAKD,QAAL,CAAc;AACZE,QAAAA,WAAW,EAAE;AADD,OAAd;AAGD,KAvHkB;;AAAA,0CA6HJ,MAAM;AACnB,WAAKF,QAAL,CAAc;AACZG,QAAAA,YAAY,EAAE;AADF,OAAd;;AAGA,UAAI,KAAKjC,KAAL,CAAWiC,YAAf,EAA6B;AAC3B,aAAKjC,KAAL,CAAWiC,YAAX;AACD;AACF,KApIkB;;AAAA,yCAsIL,MAAM;AAClB,WAAKH,QAAL,CAAc;AACZG,QAAAA,YAAY,EAAE;AADF,OAAd;AAGD,KA1IkB;;AAAA,6CA4ID,CAACC,SAAD,EAAYC,QAAZ,KAAyB;AACzC,YAAM5B,cAAc,GAAG,CACrB,GAAG,KAAKE,KAAL,CAAWF,cADO,EAErB;AACEO,QAAAA,SAAS,EAAE,IADb;AAEEsB,QAAAA,cAAc,EAAE,IAFlB;AAGEF,QAAAA,SAHF;AAIEC,QAAAA,QAJF;AAKET,QAAAA,UAAU,EAAE;AALd,OAFqB,CAAvB;AAUA,WAAKI,QAAL,CAAc;AAAEvB,QAAAA;AAAF,OAAd;AACD,KAxJkB;;AAAA,8CA0JA8B,QAAQ,IAAI;AAC7B,YAAM9B,cAAc,GAAG,CAAC,GAAG,KAAKE,KAAL,CAAWF,cAAf,CAAvB;AACAA,MAAAA,cAAc,CAACa,GAAf,CAAmBkB,GAAG,IAAI;AACxB,YAAIA,GAAG,CAACJ,SAAJ,KAAkBG,QAAQ,CAACE,GAA/B,EAAoC;AAClCD,UAAAA,GAAG,CAACF,cAAJ,GAAqBC,QAAQ,CAACG,UAA9B;AACAF,UAAAA,GAAG,CAACxB,SAAJ,GAAgB,IAAhB;AACAwB,UAAAA,GAAG,CAACZ,UAAJ,GAAiB,IAAjB;AACD;AACF,OAND;AAOA,WAAKI,QAAL,CAAc;AAAEvB,QAAAA;AAAF,OAAd;AACD,KApKkB;;AAAA,6CAsKD,OAAOgC,GAAP,EAAYL,SAAZ,KAA0B;AAC1C,YAAM3B,cAAc,GAAG,CAAC,GAAG,KAAKE,KAAL,CAAWF,cAAf,CAAvB;AACAA,MAAAA,cAAc,CAACa,GAAf,CAAmBkB,GAAG,IAAI;AACxB,YAAIA,GAAG,CAACJ,SAAJ,KAAkBA,SAAlB,IAA+BI,GAAG,CAACxB,SAAvC,EAAkD;AAChDwB,UAAAA,GAAG,CAACb,GAAJ,GAAUc,GAAG,CAACE,OAAJ,CAAY,WAAZ,EAAyB,eAAzB,CAAV;AACAH,UAAAA,GAAG,CAACvB,eAAJ,GAAsB,KAAtB;AACAuB,UAAAA,GAAG,CAACX,YAAJ,GAAmB9C,WAAW,CAACyD,GAAG,CAACb,GAAL,CAA9B;AACAa,UAAAA,GAAG,CAACZ,UAAJ,GAAiB,IAAjB;AACD;AACF,OAPD;AAQA,WAAKI,QAAL,CAAc;AAAEvB,QAAAA;AAAF,OAAd,EAAkC,MAAM,KAAKmC,iBAAL,EAAxC;AACD,KAjLkB;;AAAA,4CAmLFR,SAAS,IAAI;AAC5B,YAAM3B,cAAc,GAAG,CAAC,GAAG,KAAKE,KAAL,CAAWF,cAAf,CAAvB;AACAA,MAAAA,cAAc,CAACa,GAAf,CAAmBkB,GAAG,IAAI;AACxB,YAAIA,GAAG,CAACJ,SAAJ,KAAkBA,SAAtB,EAAiC;AAC/BI,UAAAA,GAAG,CAACxB,SAAJ,GAAgB,IAAhB,CAD+B,CACT;;AACtBwB,UAAAA,GAAG,CAACF,cAAJ,GAAqB,EAArB;AACAE,UAAAA,GAAG,CAACZ,UAAJ,GAAiB,IAAjB;AACD;AACF,OAND;AAOA,WAAKI,QAAL,CAAc;AAAEvB,QAAAA;AAAF,OAAd;AACD,KA7LkB;;AAAA,+CA+LCgC,GAAG,IAAI;AACzB,YAAMhC,cAAc,GAAG,CACrB,GAAG,KAAKE,KAAL,CAAWF,cADO,EAErB;AACEO,QAAAA,SAAS,EAAE,KADb;AAEEY,QAAAA,UAAU,EAAE,KAFd;AAGED,QAAAA,GAAG,EAAE7C,OAAO,CAAC2D,GAAD,CAHd;AAIExB,QAAAA,eAAe,EAAE,IAJnB;AAKEY,QAAAA,YAAY,EAAE9C,WAAW,CAAC0D,GAAD;AAL3B,OAFqB,CAAvB;AAUA,WAAKT,QAAL,CAAc;AAAEvB,QAAAA;AAAF,OAAd;AACD,KA3MkB;;AAAA,0CA6MJ,CAACoC,MAAD,EAASC,QAAT,KAAsB;AACnC,WAAKd,QAAL,CAAc;AACZe,QAAAA,gBAAgB,EAAEF,MADN;AAEZG,QAAAA,eAAe,EAAEH,MAAM,CAACI,OAAP,CAAeH,QAAf,CAFL;AAGZI,QAAAA,cAAc,EAAE;AAHJ,OAAd;AAKD,KAnNkB;;AAAA,qCAqNTC,OAAO,IAAI;AACnB,WAAKnB,QAAL,CAAc;AACZoB,QAAAA,UAAU,EAAED;AADA,OAAd;AAGD,KAzNkB;;AAAA,2CAmOHxB,GAAG,IAAI;AACrB,YAAMlB,cAAc,GAAG,KAAKE,KAAL,CAAWF,cAAX,CAA0B4C,MAA1B,CAAiC9B,KAAK,IAAIA,KAAK,CAACI,GAAN,KAAcA,GAAxD,CAAvB;AACA,WAAKK,QAAL,CAAc;AAAEvB,QAAAA;AAAF,OAAd;AACD,KAtOkB;;AAAA,mDAwOKkB,GAAG,IAAI;AAC7B,UAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6BA,GAAG,GAAG,EAAN;AAC7B,WAAKK,QAAL,CAAc;AAAEsB,QAAAA,mBAAmB,EAAE3B,GAAG,CAAC4B,MAAJ,GAAa,CAApC;AAAuCC,QAAAA,eAAe,EAAE7B;AAAxD,OAAd;AACD,KA3OkB;;AAEjB,UAAM8B,WAAW,GAAG,KAAKvD,KAAL,CAAWwD,QAAX,KAAwB,CAAxB,IAA6B5F,cAAc,KAAK,CAApE;AACA,SAAK6F,mBAAL,GAA2BzG,QAAQ,CAAC0G,MAAT,CAAgB;AACzCC,MAAAA,GAAG,EAAEJ,WAAW,GAAG,EAAH,GAAQ,EADiB;AAEzCK,MAAAA,OAAO,EAAE;AAFgC,KAAhB,CAA3B;AAKA,SAAKnD,KAAL,GAAa;AACXoD,MAAAA,WAAW,EAAE;AACXC,QAAAA,GAAG,EAAE,KAAK9D,KAAL,CAAW+D,IAAX,CAAgBC,GADV;AAEXC,QAAAA,IAAI,EAAE,KAAKjE,KAAL,CAAW+D,IAAX,CAAgBG,WAFX;AAGXC,QAAAA,MAAM,EACJ,CAAC1G,CAAC,CAAC2G,WAAF,CAAc,KAAKpE,KAAL,CAAW+D,IAAX,CAAgBM,UAA9B,CAAD,IAA8C,CAAC5G,CAAC,CAAC+C,OAAF,CAAU,KAAKR,KAAL,CAAW+D,IAAX,CAAgBM,UAA1B,CAA/C,GACI,KAAKrE,KAAL,CAAW+D,IAAX,CAAgBM,UADpB,GAEInF,MAAM,CAACoF,GAAP,CAAWC;AANN,OADF;AAUXC,MAAAA,QAAQ,EAAE,EAVC;AAWX3B,MAAAA,gBAAgB,EAAE,EAXP;AAYXC,MAAAA,eAAe,EAAE,CAZN;AAaXE,MAAAA,cAAc,EAAE,KAbL;AAcXzC,MAAAA,cAAc,EAAE,EAdL;AAeX6C,MAAAA,mBAAmB,EAAE,KAfV;AAgBXE,MAAAA,eAAe,EAAE;AAhBN,KAAb;AAkBA,SAAKtC,UAAL,GAAkB,IAAlB;AACD;;AAEDyD,EAAAA,yBAAyB,GAAG;AAC1B,SAAKC,cAAL,CAAoB,KAAK1E,KAAzB;AACD;;AAED2E,EAAAA,gCAAgC,CAACC,SAAD,EAAY;AAC1C,SAAKF,cAAL,CAAoBE,SAApB;AACD;;AAEDF,EAAAA,cAAc,CAAC1E,KAAD,EAAQ;AACpB,UAAM6E,QAAQ,GAAG,EAAjB;;AACA,QAAI,CAACpH,CAAC,CAAC2G,WAAF,CAAcpE,KAAK,CAACwE,QAApB,CAAL,EAAoC;AAClCK,MAAAA,QAAQ,CAACL,QAAT,GAAoBxE,KAAK,CAACwE,QAA1B;AACD;;AACD,SAAK1C,QAAL,CAAc+C,QAAd;AACD;AAED;AACF;AACA;AACA;;;AACEC,EAAAA,MAAM,GAAgB,CACpB;AACA;AACA;;AAHoB,QAAfN,QAAe,uEAAJ,EAAI;AAIrB;;AAoEDO,EAAAA,cAAc,GAAG;AACf,SAAKC,aAAL,CAAmBD,cAAnB;AACD;;AAgGDE,EAAAA,YAAY,GAAG;AACb,SAAKnD,QAAL,CAAc;AACZe,MAAAA,gBAAgB,EAAE,EADN;AAEZC,MAAAA,eAAe,EAAE,CAFL;AAGZE,MAAAA,cAAc,EAAE;AAHJ,KAAd;AAKD;;AAYDkC,EAAAA,YAAY,CAACV,QAAD,EAAW;AACrB,QAAI,KAAK7D,iBAAL,EAAJ,EAA8B;AAC5B;AACA,UAAI,CAAC,KAAKwE,cAAL,EAAL,EAA4B;AAC5BX,MAAAA,QAAQ,CAAC,CAAD,CAAR,CAAYnD,KAAZ,GAAoB,KAAKZ,KAAL,CAAWF,cAAX,CAA0Ba,GAA1B,CAA8BC,KAAK,IAAIA,KAAK,CAACI,GAA7C,CAApB;AACD;;AACD,QAAIhE,CAAC,CAAC+C,OAAF,CAAUgE,QAAQ,CAAC,CAAD,CAAR,CAAYY,IAAtB,CAAJ,EAAiC;AAC/BZ,MAAAA,QAAQ,CAAC,CAAD,CAAR,CAAYY,IAAZ,GAAmB,EAAnB;AACD;;AACD,QAAI,CAACZ,QAAQ,CAAC,CAAD,CAAR,CAAYY,IAAb,IAAqB,CAACZ,QAAQ,CAAC,CAAD,CAAR,CAAYnD,KAAtC,EAA6C;;AAE7C,QAAI,KAAKZ,KAAL,CAAWyC,UAAf,EAA2B;AACzBsB,MAAAA,QAAQ,CAAC,CAAD,CAAR,CAAYtB,UAAZ,GAAyB,KAAKzC,KAAL,CAAWyC,UAApC;AACD;;AAED,SAAKlD,KAAL,CAAW8E,MAAX,CAAkBN,QAAlB;AACA,SAAK1C,QAAL,CAAc;AAAEvB,MAAAA,cAAc,EAAE,EAAlB;AAAsB2C,MAAAA,UAAU,EAAE;AAAlC,KAAd;AACD;AAED;AACF;AACA;AACA;;;AACEmC,EAAAA,YAAY,CAACC,WAAD,EAAc;AACxB,UAAMC,YAAY,GAAG,EAArB;;AACA,QAAI,CAAC9H,CAAC,CAAC+C,OAAF,CAAU8E,WAAW,CAACE,cAAZ,CAA2BJ,IAArC,CAAD,IAA+C,CAAC3H,CAAC,CAAC+C,OAAF,CAAU8E,WAAW,CAACE,cAAZ,CAA2BnE,KAArC,CAApD,EAAiG;AAC/FkE,MAAAA,YAAY,CAACE,UAAb,GAA0B,CAA1B;AACAF,MAAAA,YAAY,CAACG,aAAb,GAA6B,EAA7B;AACAH,MAAAA,YAAY,CAACI,QAAb,GAAwB,GAAxB,CAH+F,CAGlE;AAC9B;;AACD,QAAI,CAAClI,CAAC,CAAC+C,OAAF,CAAU8E,WAAW,CAACE,cAAZ,CAA2BI,WAArC,CAAL,EAAwD;AACtDL,MAAAA,YAAY,CAACE,UAAb,GAA0B,CAA1B;AACAF,MAAAA,YAAY,CAACG,aAAb,GAA6B,EAA7B;AACAH,MAAAA,YAAY,CAACM,iBAAb,GAAiC,EAAjC;AACD;;AACD,wBACE,oBAAC,MAAD,eACMP,WADN;AAEE,MAAA,kBAAkB,EAAE,MAAM,IAF5B;AAGE,MAAA,kBAAkB,EAAE,IAHtB;AAIE,MAAA,YAAY,EAAE;AACZQ,QAAAA,IAAI,EAAE;AACJC,UAAAA,eAAe,EAAE1H,QADb;AAEJ2H,UAAAA,YAAY,EAAE,EAFV;AAGJ,aAAGT;AAHC,SADM;AAMZU,QAAAA,KAAK,EAAE;AACLF,UAAAA,eAAe,EAAE,KAAK/F,KAAL,CAAWkG,mBADvB;AAELF,UAAAA,YAAY,EAAE,EAFT;AAGL,aAAGT;AAHE;AANK,OAJhB;AAgBE,MAAA,oBAAoB,EAAE;AACpBO,QAAAA,IAAI,EAAE;AACJK,UAAAA,sBAAsB,EAAE;AADpB,SADc;AAIpBF,QAAAA,KAAK,EAAE;AACLG,UAAAA,uBAAuB,EAAE;AADpB;AAJa,OAhBxB;AAwBE,MAAA,wBAAwB,EAAE;AACxBN,QAAAA,IAAI,EAAE;AACJO,UAAAA,mBAAmB,EAAE;AADjB,SADkB;AAIxBJ,QAAAA,KAAK,EAAE;AACLK,UAAAA,oBAAoB,EAAE;AADjB;AAJiB;AAxB5B,OADF;AAmCD;;AACDC,EAAAA,aAAa,CAACvG,KAAD,EAAQ;AACnB,wBACE,oBAAC,gBAAD;AACE,MAAA,GAAG,EAAEA,KAAK,CAACwG,KADb;AAEE,MAAA,kBAAkB,EAAE,KAAKxG,KAAL,CAAWyG,kBAFjC;AAGE,MAAA,YAAY,EAAE,MAAM;AAClB,aAAKC,OAAL,CAAa1G,KAAK,CAACwF,cAAnB;AACD;AALH,OAMMxF,KANN,EADF;AAUD;;AACD2G,EAAAA,iBAAiB,CAACC,gBAAD,EAAmB;AAClC,wBACE,oBAAC,WAAD,eACMA,gBADN;AAEE,MAAA,SAAS,EAAE;AACTd,QAAAA,IAAI,EAAE;AACJe,UAAAA,UAAU,EAAE,YADR;AAEJC,UAAAA,QAAQ,EAAE,EAFN;AAGJC,UAAAA,KAAK,EAAEzI,YAHH;AAIJ0I,UAAAA,SAAS,EAAE,EAJP;AAKJC,UAAAA,YAAY,EAAE,EALV;AAMJC,UAAAA,UAAU,EAAE,EANR;AAOJC,UAAAA,WAAW,EAAE;AAPT,SADG;AAUTlB,QAAAA,KAAK,EAAE;AACLY,UAAAA,UAAU,EAAE,YADP;AAELC,UAAAA,QAAQ,EAAE,EAFL;AAGLC,UAAAA,KAAK,EAAE,KAAK/G,KAAL,CAAWyG,kBAHb;AAILO,UAAAA,SAAS,EAAE,EAJN;AAKLC,UAAAA,YAAY,EAAE,EALT;AAMLC,UAAAA,UAAU,EAAE,EANP;AAOLC,UAAAA,WAAW,EAAE;AAPR;AAVE,OAFb;AAsBE,MAAA,SAAS,EAAE;AACTrB,QAAAA,IAAI,EAAE;AACJiB,UAAAA,KAAK,EAAEzI;AADH,SADG;AAIT2H,QAAAA,KAAK,EAAE;AACLc,UAAAA,KAAK,EAAE,KAAK/G,KAAL,CAAWyG;AADb;AAJE;AAtBb,OADF;AAiCD;;AACDW,EAAAA,UAAU,GAAG;AACX,WAAO,IAAP;AACD;;AACDC,EAAAA,SAAS,CAACC,QAAD,EAAW;AAClB,wBACE,oBAAC,aAAD,eACMA,QADN;AAEE,MAAA,SAAS,EAAE;AACTT,QAAAA,UAAU,EAAE,aADH;AAETE,QAAAA,KAAK,EAAE3I,SAFE;AAGT0I,QAAAA,QAAQ,EAAE;AAHD;AAFb,OADF;AAUD;;AACDS,EAAAA,gBAAgB,OAA+B;AAAA,QAA9B;AAAE/B,MAAAA,cAAF;AAAkBgC,MAAAA;AAAlB,KAA8B;;AAC7C,QAAIhC,cAAc,CAACnE,KAAnB,EAA0B;AACxB,YAAMsB,MAAM,GAAG,OAAO6C,cAAc,CAACnE,KAAtB,KAAgC,QAAhC,GAA2C,CAACmE,cAAc,CAACnE,KAAhB,CAA3C,GAAoEmE,cAAc,CAACnE,KAAlG;;AACA,YAAMoG,cAAc,GAAG,CAAC,MAAM;AAC5B,YAAI9E,MAAM,CAACU,MAAP,KAAkB,CAAtB,EAAyB,OAAO,CAAP;AACzB,YAAIV,MAAM,CAACU,MAAP,KAAkB,CAAtB,EAAyB,OAAO5D,gBAAP;AACzB,YAAIkD,MAAM,CAACU,MAAP,IAAiB3D,cAArB,EAAqC,OAAO,CAACF,gBAAgB,GAAGG,YAApB,IAAoCgD,MAAM,CAACU,MAAlD;AACrC,eAAO,CAAC7D,gBAAgB,GAAGG,YAApB,IAAoCD,cAA3C;AACD,OALsB,GAAvB;;AAMA,0BACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE,CAACgI,MAAM,CAACC,eAAR,EAAyB;AAAEC,UAAAA,KAAK,EAAEH,cAAT;AAAyBI,UAAAA,eAAe,EAAErC,cAAc,CAACJ,IAAf,GAAsB,CAAtB,GAA0B;AAApE,SAAzB;AAAb,SACGzC,MAAM,CAACvB,GAAP,CAAWkB,GAAG,IAAI;AACjB,cAAMwF,KAAK,GAAGjJ,WAAW,CAACyD,GAAD,CAAzB;;AACA,YAAIvD,OAAO,CAACuD,GAAD,CAAX,EAAkB;AAChB,8BACE,oBAAC,gBAAD;AAAkB,YAAA,GAAG,EAAEwF,KAAvB;AAA8B,YAAA,OAAO,EAAE,KAAKC,qBAAL,CAA2BC,IAA3B,CAAgC,IAAhC,EAAsC1F,GAAtC;AAAvC,0BACE,oBAAC,eAAD;AAAiB,YAAA,KAAK,EAAEK,MAAM,CAACU,MAAP,GAAgB,CAAhB,GAAoBqE,MAAM,CAACO,iBAA3B,GAA+CP,MAAM,CAACQ,iBAA9E;AAAiG,YAAA,MAAM,EAAE;AAAE3F,cAAAA,GAAG,EAAEuF;AAAP;AAAzG,0BACE,oBAAC,IAAD;AAAM,YAAA,KAAK,EAAEJ,MAAM,CAACS;AAApB,0BACE,oBAAC,IAAD;AAAM,YAAA,IAAI,EAAC,MAAX;AAAkB,YAAA,IAAI,EAAC,cAAvB;AAAsC,YAAA,SAAS,EAAET,MAAM,CAACU;AAAxD,YADF,CADF,CADF,CADF;AASD;;AACD,4BACE,oBAAC,gBAAD;AAAkB,UAAA,GAAG,EAAEN,KAAvB;AAA8B,UAAA,OAAO,EAAE,MAAM,KAAKO,YAAL,CAAkB1F,MAAlB,EAA0BL,GAA1B;AAA7C,wBACE,oBAAC,KAAD;AAAO,UAAA,MAAM,EAAE;AAAEC,YAAAA,GAAG,EAAEuF;AAAP,WAAf;AAA+B,UAAA,KAAK,EAAEnF,MAAM,CAACU,MAAP,GAAgB,CAAhB,GAAoBqE,MAAM,CAACO,iBAA3B,GAA+CP,MAAM,CAACQ;AAA5F,UADF,CADF;AAKD,OAlBA,CADH,CADF;AAuBD;;AACD,QAAI,CAACzK,CAAC,CAAC+C,OAAF,CAAUgF,cAAc,CAACI,WAAzB,CAAL,EAA4C;AAC1C,0BACE,oBAAC,IAAD,QACGJ,cAAc,CAACI,WAAf,CAA2BxE,GAA3B,CAA+B,CAACK,GAAD,EAAMZ,CAAN,KAAY;AAC1C,4BACE,oBAAC,UAAD;AACE,UAAA,OAAO,EAAE,MAAM;AACb,iBAAKyH,gBAAL,CAAsB7G,GAAtB;AACD,WAHH;AAIE,UAAA,GAAG,EAAEZ,CAJP;AAKE,UAAA,KAAK,EAAE5B,WAAW,CAACwC,GAAD;AALpB,UADF;AASD,OAVA,CADH,CADF;AAeD;;AACD,QAAI+D,cAAc,CAACvF,KAAnB,EAA0B;AACxB,0BACE,oBAAC,gBAAD;AAAkB,QAAA,OAAO,EAAE,KAAKsI,YAAL,CAAkBP,IAAlB,CAAuB,IAAvB,EAA6BxC,cAAc,CAACvF,KAA5C;AAA3B,sBACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEyH,MAAM,CAACc,cAAP,CAAsBhB,QAAtB;AAAb,sBACE,oBAAC,KAAD;AAAO,QAAA,KAAK,EAAE,CAACE,MAAM,CAACe,UAAR,EAAoBf,MAAM,CAACgB,gBAAP,CAAwBlB,QAAxB,CAApB,CAAd;AAAsE,QAAA,MAAM,EAAE;AAAEjF,UAAAA,GAAG,EAAEiD,cAAc,CAACvF,KAAf,CAAqB0I;AAA5B;AAA9E,QADF,eAEE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEjB,MAAM,CAACkB;AAApB,sBACE,oBAAC,IAAD;AACE,QAAA,aAAa,EAAE,CADjB;AAEE,QAAA,KAAK,EAAE,CAAClB,MAAM,CAACmB,UAAR,EAAoBnB,MAAM,CAACoB,cAAP,CAAsBtB,QAAtB,CAApB,EAAqD;AAAET,UAAAA,KAAK,EAAE,KAAK/G,KAAL,CAAWyG;AAApB,SAArD;AAFT,SAIGjB,cAAc,CAACvF,KAAf,CAAqB8I,KAJxB,CADF,eAOE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE,CAACrB,MAAM,CAACsB,SAAR,EAAmBtB,MAAM,CAACoB,cAAP,CAAsBtB,QAAtB,CAAnB,EAAoD;AAAET,UAAAA,KAAK,EAAE,KAAK/G,KAAL,CAAWyG;AAApB,SAApD;AAAb,SACG/I,MAAM,CACJuL,GADF,CACMzD,cAAc,CAACvF,KAAf,CAAqBiJ,SAD3B,EAEEC,KAFF,GAGEC,MAHF,CAGS,WAHT,CADH,CAPF,CAFF,CADF,CADF;AAqBD;;AACD,QAAI5D,cAAc,CAACpF,UAAnB,EAA+B;AAC7B,0BACE,oBAAC,gBAAD;AAAkB,QAAA,OAAO,EAAE,KAAKiJ,iBAAL,CAAuBrB,IAAvB,CAA4B,IAA5B,EAAkCxC,cAAc,CAACpF,UAAjD;AAA3B,sBACE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEsH,MAAM,CAACc,cAAP,CAAsBhB,QAAtB;AAAb,sBACE,oBAAC,KAAD;AAAO,QAAA,KAAK,EAAE,CAACE,MAAM,CAACe,UAAR,EAAoBf,MAAM,CAACgB,gBAAP,CAAwBlB,QAAxB,CAApB,CAAd;AAAsE,QAAA,MAAM,EAAE;AAAEjF,UAAAA,GAAG,EAAEiD,cAAc,CAACpF,UAAf,CAA0BuI;AAAjC;AAA9E,QADF,eAEE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEjB,MAAM,CAACkB;AAApB,sBACE,oBAAC,IAAD;AACE,QAAA,aAAa,EAAE,CADjB;AAEE,QAAA,KAAK,EAAE,CAAClB,MAAM,CAACmB,UAAR,EAAoBnB,MAAM,CAACoB,cAAP,CAAsBtB,QAAtB,CAApB,EAAqD;AAAET,UAAAA,KAAK,EAAE,KAAK/G,KAAL,CAAWyG;AAApB,SAArD;AAFT,SAIGjB,cAAc,CAACpF,UAAf,CAA0B2I,KAJ7B,CADF,EAOGvD,cAAc,CAACpF,UAAf,CAA0B8I,SAA1B,iBACC,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE,CAACxB,MAAM,CAACsB,SAAR,EAAmBtB,MAAM,CAACoB,cAAP,CAAsBtB,QAAtB,CAAnB,EAAoD;AAAET,UAAAA,KAAK,EAAE,KAAK/G,KAAL,CAAWyG;AAApB,SAApD;AAAb,SACG/I,MAAM,CACJuL,GADF,CACMzD,cAAc,CAACpF,UAAf,CAA0B8I,SADhC,EAEEC,KAFF,GAGEC,MAHF,CAGS,WAHT,CADH,CARJ,CAFF,CADF,CADF;AAuBD;;AACD,WAAO,IAAP;AACD;;AAEDE,EAAAA,UAAU,CAACtJ,KAAD,EAAQ;AAChB,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC;AAAEwH,QAAAA,QAAQ,EAAE,UAAZ;AAAwB+B,QAAAA,GAAG,EAAE,CAA7B;AAAgCtD,QAAAA,KAAK,EAAE;AAAvC,OAAD,EAA6C,CAAC,CAAC,KAAKxF,KAAL,CAAWyC,UAAb,IAA2B;AAAE8D,QAAAA,SAAS,EAAE;AAAb,OAAxE;AAAb,OACG,CAAC,CAACvJ,CAAC,CAAC+C,OAAF,CAAUR,KAAK,CAACoF,IAAhB,CAAD,IAA0B,KAAKD,cAAL,CAAoBnF,KAAK,CAACO,cAA1B,CAA3B,kBACC,oBAAC,IAAD,eACMP,KADN;AAEE,MAAA,cAAc,EAAE,IAFlB;AAGE,MAAA,cAAc,EAAE,CACd0H,MAAM,CAAC8B,aADO,EAEd;AACE5B,QAAAA,KAAK,EAAE,KAAKnE,mBADd;AAEEgG,QAAAA,MAAM,EAAE,KAAKhG;AAFf,OAFc;AAHlB,qBAWE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAE,aAAZ;AAA2B,MAAA,IAAI,EAAC,cAAhC;AAA+C,MAAA,SAAS,EAAE,CAACiE,MAAM,CAACgC,IAAR,EAAc;AAAE9B,QAAAA,KAAK,EAAE,KAAKnE;AAAd,OAAd;AAA1D,MAXF,CAFJ,eAgBE,oBAAC,gBAAD;AACE,MAAA,OAAO,EAAE,KAAKsB,cAAL,CAAoBiD,IAApB,CAAyB,IAAzB,CADX;AAEE,MAAA,KAAK,EAAE,CACLN,MAAM,CAAC8B,aADF,EAEL;AACEvD,QAAAA,KAAK,EAAExI,CAAC,CAAC+C,OAAF,CAAUR,KAAK,CAACoF,IAAhB,KAAyB,CAAC,KAAKD,cAAL,CAAoBnF,KAAK,CAACO,cAA1B,CAA1B,GAAsE,CAAtE,GAA0E,IAAI,KAAKkD,mBAD5F;AAEEmE,QAAAA,KAAK,EAAE,KAAKnE,mBAFd;AAGEgG,QAAAA,MAAM,EAAE,KAAKhG;AAHf,OAFK;AAFT,oBAWE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAE,WAAZ;AAAyB,MAAA,IAAI,EAAC,cAA9B;AAA6C,MAAA,SAAS,EAAE,CAACiE,MAAM,CAACgC,IAAR,EAAc;AAAE9B,QAAAA,KAAK,EAAE,KAAKnE;AAAd,OAAd;AAAxD,MAXF,CAhBF,CADF;AAgCD;;AAEDkG,EAAAA,eAAe,CAAC3J,KAAD,EAAQ;AACrB,UAAM4J,aAAa,GAAG,KAAKjJ,iBAAL,CAAuBX,KAAK,CAACO,cAA7B,CAAtB;;AACA,QAAI,CAACqJ,aAAL,EAAoB;AAClB,aAAO,IAAP;AACD;;AACD,wBACE,oBAAC,UAAD;AAAY,MAAA,UAAU,MAAtB;AAAuB,MAAA,KAAK,EAAElC,MAAM,CAACmC;AAArC,OACG7J,KAAK,CAACO,cAAN,CAAqBa,GAArB,CAAyBC,KAAK,IAAI;AACjC,UAAIA,KAAK,CAACP,SAAV,EAAqB;AACnB,4BACE,oBAAC,mBAAD;AACE,UAAA,GAAG,EAAEO,KAAK,CAACa,SADb;AAEE,UAAA,QAAQ,EAAE,KAAK8C,aAFjB;AAGE,UAAA,KAAK,EAAE3D,KAHT;AAIE,UAAA,KAAK,EAAE,KAAKrB,KAAL,CAAWyG,kBAJpB;AAKE,UAAA,KAAK,EAAE;AAAEmB,YAAAA,KAAK,EAAE/H,kBAAT;AAA6BsH,YAAAA,WAAW,EAAE;AAA1C,WALT;AAME,UAAA,iBAAiB,EAAE;AAAEL,YAAAA,QAAQ,EAAE;AAAZ;AANrB,UADF;AAUD;;AACD,YAAMgD,UAAU,GAAG/K,OAAO,CAACsC,KAAK,CAACI,GAAP,CAA1B;AACA,0BACE,oBAAC,IAAD;AAAM,QAAA,GAAG,EAAEJ,KAAK,CAACI,GAAjB;AAAsB,QAAA,KAAK,EAAEiG,MAAM,CAACqC;AAApC,sBACE,oBAAC,eAAD;AACE,QAAA,KAAK,EAAErC,MAAM,CAACsC,cADhB;AAEE,QAAA,UAAU,EAAEtC,MAAM,CAACuC,oBAFrB;AAGE,QAAA,MAAM,EAAEjL,cAAc,CAACqC,KAAK,CAACN,eAAN,GAAwBM,KAAK,CAACM,YAA9B,GAA6CN,KAAK,CAACI,GAApD;AAHxB,SAKGqI,UAAU,iBACT,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAEpC,MAAM,CAACS;AAApB,sBACE,oBAAC,gBAAD;AAAkB,QAAA,OAAO,EAAE,KAAKJ,qBAAL,CAA2BC,IAA3B,CAAgC,IAAhC,EAAsC3G,KAAK,CAACI,GAA5C;AAA3B,sBACE,oBAAC,IAAD;AAAM,QAAA,IAAI,EAAC,MAAX;AAAkB,QAAA,IAAI,EAAC,cAAvB;AAAsC,QAAA,SAAS,EAAEiG,MAAM,CAACU;AAAxD,QADF,CADF,CANJ,CADF,eAcE,oBAAC,gBAAD;AACE,QAAA,KAAK,EAAEV,MAAM,CAACwC,uBADhB;AAEE,QAAA,OAAO,EAAE,MAAM,KAAKC,aAAL,CAAmB9I,KAAK,CAACI,GAAzB,CAFjB;AAGE,QAAA,OAAO,EAAE;AAAE8H,UAAAA,GAAG,EAAE,CAAP;AAAUtD,UAAAA,KAAK,EAAE,CAAjB;AAAoBmE,UAAAA,MAAM,EAAE,CAA5B;AAA+BtE,UAAAA,IAAI,EAAE;AAArC;AAHX,sBAKE,oBAAC,IAAD;AAAM,QAAA,KAAK,EAAE,CAAC4B,MAAM,CAAC2C,0BAAR,EAAoC;AAAEtE,UAAAA,eAAe,EAAE,KAAK/F,KAAL,CAAWyG;AAA9B,SAApC;AAAb,sBACE,oBAAC,IAAD;AAAM,QAAA,IAAI,EAAC,OAAX;AAAmB,QAAA,IAAI,EAAC,cAAxB;AAAuC,QAAA,SAAS,EAAEiB,MAAM,CAAC4C;AAAzD,QADF,CALF,CAdF,CADF;AA0BD,KAxCA,CADH,CADF;AA6CD;;AAEDC,EAAAA,kBAAkB,CAACvK,KAAD,EAAQ;AACxB,UAAM4J,aAAa,GAAG,KAAKjJ,iBAAL,CAAuBX,KAAK,CAACO,cAA7B,CAAtB;AACA,wBACE,oBAAC,YAAD,eACMP,KADN;AAEE,MAAA,cAAc,EAAE0H,MAAM,CAAC8C,cAFzB;AAGE,MAAA,cAAc,EAAE,KAAKC,cAAL,CAAoBzC,IAApB,CAAyB,IAAzB,CAHlB;AAIE,MAAA,eAAe,EAAE4B,aAAa,GAAG,KAAKD,eAAL,CAAqB3B,IAArB,CAA0B,IAA1B,CAAH,GAAqC,IAJrE;AAKE,MAAA,cAAc,EAAE4B,aAAa,IAAIlC,MAAM,CAACgD;AAL1C,OADF;AASD;;AACDC,EAAAA,YAAY,GAAG;AACb;AACA;AACA;AACA;AACA,wBAAO,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE;AAAElB,QAAAA,MAAM,EAAE;AAAV;AAAb,MAAP;AACD;;AACDmB,EAAAA,aAAa,GAAG;AACd,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE;AAAE5D,QAAAA,SAAS,EAAE,EAAb;AAAiB6D,QAAAA,cAAc,EAAE,QAAjC;AAA2CC,QAAAA,YAAY,EAAE;AAAzD;AAAb,oBACE,oBAAC,OAAD;AAAS,MAAA,IAAI,EAAE,OAAf;AAAwB,MAAA,KAAK,EAAE,KAAK9K,KAAL,CAAWyG;AAA1C,MADF,CADF;AAKD;;AACDsE,EAAAA,YAAY,CAAC/K,KAAD,EAAQ;AAClB,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE;AAAEmH,QAAAA,WAAW,EAAE;AAAf;AAAb,oBACE,oBAAC,UAAD;AAAY,MAAA,UAAU,EAAEnH,KAAK,CAACwF,cAAN,CAAqBzB,IAArB,CAA0BI,MAAlD;AAA0D,MAAA,QAAQ,EAAE;AAApE,MADF,CADF;AAKD;;AACDsG,EAAAA,cAAc,CAACzK,KAAD,EAAQ;AAAA;;AACpB,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE0H,MAAM,CAACsD;AAApB,OACG,KAAKvK,KAAL,CAAWyC,UAAX,iBACC,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEwE,MAAM,CAACxE;AAApB,oBACE,oBAAC,SAAD;AAAW,MAAA,IAAI,EAAC;AAAhB,uBACezF,CAAC,CAAC+C,OAAF,0BAAU,KAAKC,KAAL,CAAWyC,UAArB,oFAAU,sBAAuBa,IAAjC,2DAAU,uBAA6BE,IAAvC,IAA+C,SAA/C,6BAA2D,KAAKxD,KAAL,CAAWyC,UAAtE,qFAA2D,uBAAuBa,IAAlF,2DAA2D,uBAA6BE,IADvG,CADF,eAIE,oBAAC,gBAAD;AACE,MAAA,KAAK,EAAEyD,MAAM,CAACuD,oBADhB;AAEE,MAAA,OAAO,EAAE,MAAM,KAAKvE,OAAL,CAAa,IAAb,CAFjB;AAGE,MAAA,OAAO,EAAE;AAAE6C,QAAAA,GAAG,EAAE,CAAP;AAAUtD,QAAAA,KAAK,EAAE,CAAjB;AAAoBmE,QAAAA,MAAM,EAAE,CAA5B;AAA+BtE,QAAAA,IAAI,EAAE;AAArC;AAHX,oBAKE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAE,CAAC4B,MAAM,CAACwD,uBAAR,EAAiC;AAAEnF,QAAAA,eAAe,EAAE,KAAK/F,KAAL,CAAWyG;AAA9B,OAAjC;AAAb,oBACE,oBAAC,IAAD;AAAM,MAAA,IAAI,EAAC,OAAX;AAAmB,MAAA,IAAI,EAAC,cAAxB;AAAuC,MAAA,SAAS,EAAEiB,MAAM,CAACyD;AAAzD,MADF,CALF,CAJF,CAFJ,eAiBE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEzD,MAAM,CAAC0D;AAApB,oBACE,oBAAC,IAAD;AACE,MAAA,KAAK,EAAE,CACL1D,MAAM,CAAC2D,KADF,EAEL;AACE;AACA;AACAlE,QAAAA,WAAW,EACT1J,CAAC,CAAC+C,OAAF,CAAUR,KAAK,CAACoF,IAAhB,KAAyB,CAAC,KAAKD,cAAL,CAAoBnF,KAAK,CAACO,cAA1B,CAA1B,GACI,IAAI,KAAKkD,mBADb,GAEI,KAAK,KAAKA,mBAAL,GAA2B,CAAhC,CANR;AAOEoH,QAAAA,cAAc,EAAE;AAPlB,OAFK,EAWL7N,QAAQ,CAACsO,EAAT,KAAgB,KAAhB,IAAyB;AACvB7B,QAAAA,MAAM,EAAEzJ,KAAK,CAACuL,cAAN,GAAuB;AADR,OAXpB;AADT,oBAiBE,oBAAC,QAAD,eACMvL,KADN;AAEE;AACA,MAAA,WAAW,EAAC,mBAHd;AAIE,MAAA,cAAc,EAAE0H,MAAM,CAAC8D,SAJzB;AAKE,MAAA,cAAc,EAAE;AACdC,QAAAA,OAAO,EAAE,KAAKC,YAAL,CAAkB1D,IAAlB,CAAuB,IAAvB,CADK;AAEd2D,QAAAA,MAAM,EAAE,KAAKC,WAAL,CAAiB5D,IAAjB,CAAsB,IAAtB;AAFM;AALlB,OAjBF,CADF,CAjBF,CADF;AAkDD;AAED;AACF;AACA;;;AACE6D,EAAAA,UAAU,GAAG;AACX,UAAM;AAAErI,MAAAA,QAAF;AAAYsI,MAAAA;AAAZ,QAAsB,KAAK9L,KAAjC;AACA,UAAM+L,eAAe,GAAG,CAACvI,QAAQ,KAAK,CAAb,IAAkBsI,KAAlB,GAA0B,CAAC,EAA3B,GAAgC,EAAjC,IAAuClO,cAAc,EAA7E;AACA,UAAMoO,qBAAqB,GACzB,KAAKvI,mBAAL,GAA2B,EAA3B,IAAiC,KAAKhD,KAAL,CAAWyC,UAAX,GAAwB,EAAxB,GAA6B,CAA9D,KAAoE,KAAKvC,iBAAL,KAA2Bf,yBAA3B,GAAuD,CAA3H,CADF;AAGA,wBACE,oBAAC,UAAD;AACE,MAAA,cAAc,EAAE,KADlB;AAEE,MAAA,yBAAyB,EAAE,OAF7B;AAGE,MAAA,iBAAiB,MAHnB;AAIE,MAAA,qBAAqB,EAAEoM,qBAJzB;AAKE,MAAA,YAAY,EAAEhP,QAAQ,CAACsO,EAAT,KAAgB,SAAhB,GAA4B,CAA5B,GAAgCS,eALhD;AAME,MAAA,MAAM,EAAE,KAAK7G,YAAL,CAAkB8C,IAAlB,CAAuB,IAAvB,CANV;AAOE,MAAA,QAAQ,EAAE,KAAKvH,KAAL,CAAW+D,QAPvB;AAQE,MAAA,IAAI,EAAE,KAAK/D,KAAL,CAAWoD,WARnB;AASE,MAAA,YAAY,EAAE,KAAKwB,YAAL,CAAkB2C,IAAlB,CAAuB,IAAvB,CAThB;AAUE,MAAA,aAAa,EAAE,KAAKzB,aAAL,CAAmByB,IAAnB,CAAwB,IAAxB,CAVjB;AAWE,MAAA,iBAAiB,EAAE,KAAKrB,iBAAL,CAAuBqB,IAAvB,CAA4B,IAA5B,CAXrB;AAYE,MAAA,UAAU,EAAE,KAAKZ,UAAL,CAAgBY,IAAhB,CAAqB,IAArB,CAZd;AAaE,MAAA,SAAS,EAAE,KAAKX,SAAL,CAAeW,IAAf,CAAoB,IAApB,CAbb;AAcE,MAAA,gBAAgB,EAAE,KAAKT,gBAAL,CAAsBS,IAAtB,CAA2B,IAA3B,CAdpB;AAeE,MAAA,UAAU,EAAE,KAAKsB,UAAL,CAAgBtB,IAAhB,CAAqB,IAArB,CAfd;AAgBE,MAAA,kBAAkB,EAAE,KAAKuC,kBAAL,CAAwBvC,IAAxB,CAA6B,IAA7B,CAhBtB;AAiBE,MAAA,YAAY,EAAE,KAAK2C,YAAL,CAAkB3C,IAAlB,CAAuB,IAAvB,CAjBhB;AAkBE,MAAA,aAAa,EAAE,KAAK4C,aAAL,CAAmB5C,IAAnB,CAAwB,IAAxB,CAlBjB;AAmBE,MAAA,YAAY,EAAE,KAAK+C,YAAL,CAAkB/C,IAAlB,CAAuB,IAAvB,CAnBhB;AAoBE,MAAA,cAAc,EAAE,KAAKvH,KAAL,CAAWF;AApB7B,MADF;AAwBD;;AAED0L,EAAAA,mBAAmB,GAAG;AACpB,wBACE,oBAAC,aAAD;AACE,MAAA,GAAG,EAAEC,GAAG,IAAK,KAAKlH,aAAL,GAAqBkH,GADpC;AAEE,MAAA,eAAe,EAAE,KAAKC,eAFxB;AAGE,MAAA,gBAAgB,EAAE,KAAKC,gBAHzB;AAIE,MAAA,eAAe,EAAE,KAAKC,eAJxB;AAKE,MAAA,cAAc,EAAE,KAAKC,cALvB;AAME,MAAA,iBAAiB,EAAE,KAAKC,iBAN1B;AAOE,MAAA,OAAO,EAAE,GAPX;AAQE,MAAA,aAAa,EAAE,KARjB;AASE,MAAA,QAAQ,EAAE,YATZ;AAUE,MAAA,UAAU,EAAE,WAVd;AAWE,MAAA,MAAM,EAAE,KAAKvM,KAAL,CAAW+D,IAAX,CAAgBC,GAX1B;AAYE,MAAA,QAAQ,MAZV;AAaE,MAAA,UAAU;AAbZ,MADF;AAiBD;;AAEDwI,EAAAA,gBAAgB,GAAG;AACjB,UAAM;AAAExJ,MAAAA,cAAF;AAAkBH,MAAAA,gBAAlB;AAAoCC,MAAAA;AAApC,QAAwD,KAAKrC,KAAnE;AACA,wBACE,oBAAC,UAAD;AACE,MAAA,OAAO,EAAEuC,cADX;AAEE,MAAA,MAAM,EAAEH,gBAFV;AAGE,MAAA,KAAK,EAAEC,eAHT;AAIE,MAAA,OAAO,EAAE,KAAKmC,YAAL,CAAkB+C,IAAlB,CAAuB,IAAvB,CAJX;AAKE,MAAA,GAAG,EAAC;AALN,MADF;AASD;;AAEDyE,EAAAA,sBAAsB,GAAG;AACvB,UAAM;AAAErJ,MAAAA,mBAAF;AAAuBE,MAAAA;AAAvB,QAA2C,KAAK7C,KAAtD;AACA,QAAI,CAAC6C,eAAL,EAAsB;AAEtB,wBAAO,oBAAC,UAAD;AAAY,MAAA,GAAG,EAAEA,eAAjB;AAAkC,MAAA,OAAO,EAAEF,mBAA3C;AAAgE,MAAA,OAAO,EAAE,KAAK2E;AAA9E,MAAP;AACD;;AAED2E,EAAAA,SAAS,GAAG;AACV,QAAIjP,CAAC,CAAC+C,OAAF,CAAU,KAAKC,KAAL,CAAWuB,WAArB,CAAJ,EAAuC;AACrC,aAAO,IAAP;AACD;;AACD,wBACE,oBAAC,QAAD;AAAU,MAAA,MAAM,EAAE,KAAKvB,KAAL,CAAWuB,WAA7B;AAA0C,MAAA,OAAO,EAAE,KAAK2K,iBAAxD;AAA2E,MAAA,KAAK,EAAE1N,WAAW,CAAC,KAAKwB,KAAL,CAAWuB,WAAZ,CAA7F;AAAuH,MAAA,QAAQ,EAAE;AAAjI,MADF;AAGD;;AAED4K,EAAAA,MAAM,GAAG;AACP,QAAI5P,QAAQ,CAACsO,EAAT,KAAgB,SAAhB,IAA6B,CAAC,KAAKtL,KAAL,CAAW6M,cAA7C,EAA6D;AAC3D,0BACE,oBAAC,oBAAD;AAAsB,QAAA,QAAQ,EAAE7P,QAAQ,CAACsO,EAAT,KAAgB,KAAhB,IAAyB,SAAzD;AAAoE,QAAA,KAAK,EAAE5D,MAAM,CAACoF;AAAlF,SACG,KAAKjB,UAAL,EADH,EAEG,KAAKI,mBAAL,EAFH,EAGG,KAAKO,gBAAL,EAHH,EAIG,KAAKC,sBAAL,EAJH,EAKG,KAAKC,SAAL,EALH,CADF;AASD;;AACD,wBACE,oBAAC,IAAD;AAAM,MAAA,KAAK,EAAEhF,MAAM,CAACoF;AAApB,OACG,KAAKjB,UAAL,EADH,EAEG,KAAKI,mBAAL,EAFH,EAGG,KAAKO,gBAAL,EAHH,EAIG,KAAKC,sBAAL,EAJH,EAKG,KAAKC,SAAL,EALH,CADF;AASD;;AA9uB+B;;AAivBlC,MAAMhF,MAAM,GAAG;AACboF,EAAAA,aAAa,EAAE;AACbC,IAAAA,IAAI,EAAE,CADO;AAEblC,IAAAA,cAAc,EAAE;AAFH,GADF;AAKbrC,EAAAA,cAAc,EAAE;AACd1C,IAAAA,IAAI,EAAE;AACJL,MAAAA,UAAU,EAAE,CADR;AAEJuH,MAAAA,WAAW,EAAE,EAFT;AAGJC,MAAAA,YAAY,EAAE,EAHV;AAIJvH,MAAAA,aAAa,EAAE,CAJX;AAKJwH,MAAAA,aAAa,EAAE;AALX,KADQ;AAQdjH,IAAAA,KAAK,EAAE;AACLR,MAAAA,UAAU,EAAE,CADP;AAELuH,MAAAA,WAAW,EAAE,EAFR;AAGLC,MAAAA,YAAY,EAAE,EAHT;AAILvH,MAAAA,aAAa,EAAE,CAJV;AAKLwH,MAAAA,aAAa,EAAE;AALV;AARO,GALH;AAqBbzE,EAAAA,UAAU,EAAE;AACVb,IAAAA,KAAK,EAAE,EADG;AAEV6B,IAAAA,MAAM,EAAE,EAFE;AAGV0D,IAAAA,UAAU,EAAE,OAHF;AAIVnH,IAAAA,YAAY,EAAE;AAJJ,GArBC;AA2Bb0C,EAAAA,gBAAgB,EAAE;AAChBzC,IAAAA,KAAK,EAAE;AACLiB,MAAAA,UAAU,EAAE;AADP,KADS;AAIhBpB,IAAAA,IAAI,EAAE;AACJqB,MAAAA,WAAW,EAAE;AADT;AAJU,GA3BL;AAmCbyB,EAAAA,SAAS,EAAE;AACTwE,IAAAA,SAAS,EAAE,EADF;AAETxF,IAAAA,KAAK,EAAE;AAFE,GAnCE;AAuCbiB,EAAAA,UAAU,EAAE;AACV/B,IAAAA,QAAQ,EAAE,EADA;AAEVD,IAAAA,UAAU,EAAE,SAFF;AAGVd,IAAAA,eAAe,EAAE;AAHP,GAvCC;AA4Cb+C,EAAAA,cAAc,EAAE;AACdhD,IAAAA,IAAI,EAAE;AACJuH,MAAAA,SAAS,EAAE;AADP,KADQ;AAIdpH,IAAAA,KAAK,EAAE;AACLoH,MAAAA,SAAS,EAAE;AADN;AAJO,GA5CH;AAoDbnF,EAAAA,iBAAiB,EAAE;AACjBN,IAAAA,KAAK,EAAEnI,gBADU;AAEjBgK,IAAAA,MAAM,EAAEhK,gBAFS;AAGjBuG,IAAAA,YAAY,EAAE,CAHG;AAIjBsH,IAAAA,SAAS,EAAE;AAJM,GApDN;AA0DbrF,EAAAA,iBAAiB,EAAE;AACjBL,IAAAA,KAAK,EAAEpI,gBADU;AAEjBiK,IAAAA,MAAM,EAAEjK,gBAFS;AAGjBwG,IAAAA,YAAY,EAAE,CAHG;AAIjBsH,IAAAA,SAAS,EAAE,QAJM;AAKjBnG,IAAAA,WAAW,EAAExH,YALI;AAMjBsH,IAAAA,YAAY,EAAEtH;AANG,GA1DN;AAkEbqJ,EAAAA,SAAS,EAAE;AACTlC,IAAAA,QAAQ,EAAE,EADD;AAETD,IAAAA,UAAU,EAAE,YAFH;AAGTd,IAAAA,eAAe,EAAE;AAHR,GAlEE;AAuEbyE,EAAAA,cAAc,EAAE;AACdzE,IAAAA,eAAe,EAAE,MADH;AAEd8B,IAAAA,eAAe,EAAE,CAFH;AAGdhC,IAAAA,iBAAiB,EAAE;AAHL,GAvEH;AA4Eb2F,EAAAA,SAAS,EAAE;AACTzE,IAAAA,KAAK,EAAEzI,YADE;AAETwI,IAAAA,QAAQ,EAAE,EAFD;AAGTD,IAAAA,UAAU,EAAE;AAHH,GA5EE;AAiFbwE,EAAAA,KAAK,EAAE;AACLkC,IAAAA,MAAM,EAAE,CADH;AAELxH,IAAAA,eAAe,EAAEtH,OAFZ;AAGLuH,IAAAA,YAAY,EAAE,CAHT;AAIL+G,IAAAA,IAAI,EAAE;AAJD,GAjFM;AAuFb/B,EAAAA,iBAAiB,EAAE;AACjB+B,IAAAA,IAAI,EAAE;AADW,GAvFN;AA0Fb3B,EAAAA,oBAAoB,EAAE;AACpB2B,IAAAA,IAAI,EAAE,CADc;AAEpBG,IAAAA,aAAa,EAAE;AAFK,GA1FT;AA8FbhK,EAAAA,UAAU,EAAE;AACVkK,IAAAA,SAAS,EAAE,EADD;AAEVF,IAAAA,aAAa,EAAE,KAFL;AAGVM,IAAAA,UAAU,EAAE,QAHF;AAIVC,IAAAA,iBAAiB,EAAE,CAJT;AAKVC,IAAAA,iBAAiB,EAAErP,QALT;AAMV4I,IAAAA,YAAY,EAAE;AANJ,GA9FC;AAsGbgE,EAAAA,oBAAoB,EAAE;AACpB/D,IAAAA,UAAU,EAAE;AADQ,GAtGT;AAyGbgE,EAAAA,uBAAuB,EAAE;AACvBL,IAAAA,cAAc,EAAE,QADO;AAEvB2C,IAAAA,UAAU,EAAE,QAFW;AAGvBxH,IAAAA,YAAY,EAAE,EAHS;AAIvB4B,IAAAA,KAAK,EAAE,EAJgB;AAKvB6B,IAAAA,MAAM,EAAE,EALe;AAMvBkE,IAAAA,WAAW,EAAE,CANU;AAOvBC,IAAAA,WAAW,EAAE;AAPU,GAzGZ;AAkHbzC,EAAAA,kBAAkB,EAAE;AAClBrE,IAAAA,QAAQ,EAAE,EADQ;AAElBC,IAAAA,KAAK,EAAE,MAFW;AAGlBE,IAAAA,YAAY,EAAE;AAHI,GAlHP;AAuHbuC,EAAAA,aAAa,EAAE;AACbhC,IAAAA,QAAQ,EAAE,UADG;AAEb+B,IAAAA,GAAG,EAAE,CAFQ;AAGbtD,IAAAA,KAAK,EAAE,CAHM;AAIbwD,IAAAA,MAAM,EAAE,EAJK;AAKb7B,IAAAA,KAAK,EAAE,EALM;AAMb4F,IAAAA,UAAU,EAAE,QANC;AAOb3C,IAAAA,cAAc,EAAE,QAPH;AAQb9E,IAAAA,eAAe,EAAE;AARJ,GAvHF;AAiIb2D,EAAAA,IAAI,EAAE;AACJ5C,IAAAA,QAAQ,EAAE,EADN;AAEJC,IAAAA,KAAK,EAAErI,aAFH;AAGJoI,IAAAA,QAAQ,EAAE,EAHN;AAIJuG,IAAAA,SAAS,EAAE;AAJP,GAjIO;AAuIb3C,EAAAA,SAAS,EAAE;AACTjB,IAAAA,MAAM,EAAE7J,yBADC;AAETiO,IAAAA,cAAc,EAAE,CAFP;AAGTC,IAAAA,cAAc,EAAEzP,QAHP;AAIToH,IAAAA,UAAU,EAAE,CAJH;AAKTuB,IAAAA,SAAS,EAAE;AALF,GAvIE;AA8Ib+C,EAAAA,uBAAuB,EAAE;AACvBkD,IAAAA,YAAY,EAAE,CADS;AAEvBxH,IAAAA,UAAU,EAAE,CAFW;AAGvB0B,IAAAA,WAAW,EAAE;AAHU,GA9IZ;AAmJb6C,EAAAA,cAAc,EAAE;AACdpC,IAAAA,KAAK,EAAE/H,kBADO;AAEd4J,IAAAA,MAAM,EAAE5J;AAFM,GAnJH;AAuJboK,EAAAA,oBAAoB,EAAE;AACpBjE,IAAAA,YAAY,EAAE;AADM,GAvJT;AA0Jb+H,EAAAA,mBAAmB,EAAE;AACnBtE,IAAAA,MAAM,EAAE;AADW,GA1JR;AA6Jb9B,EAAAA,eAAe,EAAE;AACfT,IAAAA,UAAU,EAAE,EADG;AAEfC,IAAAA,WAAW,EAAE,EAFE;AAGf+F,IAAAA,aAAa,EAAE,KAHA;AAIfc,IAAAA,QAAQ,EAAE;AAJK,GA7JJ;AAmKbnE,EAAAA,qBAAqB,EAAE;AACrBqD,IAAAA,aAAa,EAAE,KADM;AAErBe,IAAAA,QAAQ,EAAE;AAFW,GAnKV;AAuKb/D,EAAAA,uBAAuB,EAAE;AACvB1C,IAAAA,QAAQ,EAAE,UADa;AAEvB+B,IAAAA,GAAG,EAAE,CAFkB;AAGvBtD,IAAAA,KAAK,EAAE;AAHgB,GAvKZ;AA4KboE,EAAAA,0BAA0B,EAAE;AAC1BQ,IAAAA,cAAc,EAAE,QADU;AAE1B2C,IAAAA,UAAU,EAAE,QAFc;AAG1BxH,IAAAA,YAAY,EAAE,EAHY;AAI1B4B,IAAAA,KAAK,EAAE,EAJmB;AAK1B6B,IAAAA,MAAM,EAAE,EALkB;AAM1BkE,IAAAA,WAAW,EAAE,CANa;AAO1BC,IAAAA,WAAW,EAAE;AAPa,GA5Kf;AAqLbtD,EAAAA,qBAAqB,EAAE;AACrBxD,IAAAA,QAAQ,EAAE,EADW;AAErBC,IAAAA,KAAK,EAAE,MAFc;AAGrBE,IAAAA,YAAY,EAAE;AAHO,GArLV;AA0LbkB,EAAAA,kBAAkB,EAAE;AAClBX,IAAAA,QAAQ,EAAE,UADQ;AAElB+B,IAAAA,GAAG,EAAE,CAFa;AAGlBzD,IAAAA,IAAI,EAAE,CAHY;AAIlBG,IAAAA,KAAK,EAAE,CAJW;AAKlBmE,IAAAA,MAAM,EAAE,CALU;AAMlBoD,IAAAA,UAAU,EAAE,QANM;AAOlB3C,IAAAA,cAAc,EAAE;AAPE,GA1LP;AAmMbzC,EAAAA,gBAAgB,EAAE;AAChBrB,IAAAA,KAAK,EAAE,MADS;AAEhBD,IAAAA,QAAQ,EAAE,EAFM;AAGhBoH,IAAAA,eAAe,EAAE,iBAHD;AAIhBC,IAAAA,gBAAgB,EAAE;AAAEvG,MAAAA,KAAK,EAAE,CAAT;AAAY6B,MAAAA,MAAM,EAAE;AAApB;AAJF;AAnML,CAAf;;AA2MA,MAAM2E,eAAe,GAAG3N,KAAK,IAAI;AAC/B,SAAO;AACLsD,IAAAA,IAAI,EAAEtD,KAAK,CAACsD,IADP;AAEL0C,IAAAA,kBAAkB,EAAElI,8BAA8B,CAACkC,KAAD,CAF7C;AAGLyF,IAAAA,mBAAmB,EAAE1H,+BAA+B,CAACiC,KAAD,CAH/C;AAIL+C,IAAAA,QAAQ,EAAE7E,uBAAuB,CAAC8B,KAAD,CAAvB,CAA+B4C;AAJpC,GAAP;AAMD,CAPD;;AASA,eAAe7F,OAAO,CAAC4Q,eAAD,EAAkB,EAAlB,CAAP,CAA6BtO,SAA7B,CAAf","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 { TextStyle } from './TextStyle';\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 onReply = message => {\n this.setState({\n replyingTo: message,\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 if (this.state.replyingTo) {\n messages[0].replyingTo = this.state.replyingTo;\n }\n\n this.props.onSend(messages);\n this.setState({ imagesToUpload: [], replyingTo: null });\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 (\n <PlussChatMessage\n key={props.RowId}\n colourBrandingMain={this.props.colourBrandingMain}\n onPressReply={() => {\n this.onReply(props.currentMessage);\n }}\n {...props}\n />\n );\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 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 }, !!this.state.replyingTo && { marginTop: 38 }]}>\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 const hasAttachment = this.hasImagesAttached(props.imagesToUpload);\n if (!hasAttachment) {\n return null;\n }\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 const hasAttachment = this.hasImagesAttached(props.imagesToUpload);\n return (\n <InputToolbar\n {...props}\n containerStyle={styles.inputContainer}\n renderComposer={this.renderComposer.bind(this)}\n renderAccessory={hasAttachment ? this.renderAccessory.bind(this) : null}\n accessoryStyle={hasAttachment && 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 return (\n <View style={styles.composerContainer}>\n {this.state.replyingTo && (\n <View style={styles.replyingTo}>\n <TextStyle type=\"body\">\n Replying to {_.isEmpty(this.state.replyingTo?.user?.name) ? 'message' : this.state.replyingTo?.user?.name}\n </TextStyle>\n <TouchableOpacity\n style={styles.replyingRemoveButton}\n onPress={() => this.onReply(null)}\n hitSlop={{ top: 8, right: 8, bottom: 8, left: 8 }}\n >\n <View style={[styles.replyingRemoveContainer, { backgroundColor: this.props.colourBrandingMain }]}>\n <Icon name=\"times\" type=\"font-awesome\" iconStyle={styles.replyingRemoveIcon} />\n </View>\n </TouchableOpacity>\n </View>\n )}\n <View style={styles.composerInputWrapper}>\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 </View>\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 =\n this.MIN_COMPOSER_HEIGHT + 16 + (this.state.replyingTo ? 30 : 0) + (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 composerContainer: {\n flex: 1,\n },\n composerInputWrapper: {\n flex: 1,\n flexDirection: 'row',\n },\n replyingTo: {\n minHeight: 30,\n flexDirection: 'row',\n alignItems: 'center',\n borderBottomWidth: 1,\n borderBottomColor: LINEGREY,\n marginBottom: 8,\n },\n replyingRemoveButton: {\n marginLeft: 10,\n },\n replyingRemoveContainer: {\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: 10,\n width: 20,\n height: 20,\n borderWidth: 2,\n borderColor: '#fff',\n },\n replyingRemoveIcon: {\n fontSize: 10,\n color: '#fff',\n marginBottom: 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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-core-app",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "Core extension package for Pluss Communities platform",
5
5
  "main": "dist/module/index.js",
6
6
  "module": "dist/module/index.js",
@@ -544,6 +544,10 @@ class PlussChat extends Component {
544
544
  }
545
545
 
546
546
  renderAccessory(props) {
547
+ const hasAttachment = this.hasImagesAttached(props.imagesToUpload);
548
+ if (!hasAttachment) {
549
+ return null;
550
+ }
547
551
  return (
548
552
  <ScrollView horizontal style={styles.uploadImagesContainer}>
549
553
  {props.imagesToUpload.map(image => {
@@ -592,21 +596,16 @@ class PlussChat extends Component {
592
596
  }
593
597
 
594
598
  renderInputToolbar(props) {
595
- let toolbar;
596
- if (!this.hasImagesAttached(props.imagesToUpload)) {
597
- toolbar = <InputToolbar {...props} containerStyle={styles.inputContainer} renderComposer={this.renderComposer.bind(this)} />;
598
- } else {
599
- toolbar = (
600
- <InputToolbar
601
- {...props}
602
- containerStyle={styles.inputContainer}
603
- renderComposer={this.renderComposer.bind(this)}
604
- renderAccessory={this.renderAccessory.bind(this)}
605
- accessoryStyle={styles.accessory}
606
- />
607
- );
608
- }
609
- return toolbar;
599
+ const hasAttachment = this.hasImagesAttached(props.imagesToUpload);
600
+ return (
601
+ <InputToolbar
602
+ {...props}
603
+ containerStyle={styles.inputContainer}
604
+ renderComposer={this.renderComposer.bind(this)}
605
+ renderAccessory={hasAttachment ? this.renderAccessory.bind(this) : null}
606
+ accessoryStyle={hasAttachment && styles.accessory}
607
+ />
608
+ );
610
609
  }
611
610
  renderFooter() {
612
611
  // if (this.state.keyboardOpen) {
@@ -648,33 +647,35 @@ class PlussChat extends Component {
648
647
  </TouchableOpacity>
649
648
  </View>
650
649
  )}
651
- <View
652
- style={[
653
- styles.input,
654
- {
655
- //height: props.composerHeight + 10,
656
- //borderRadius: (this.MIN_COMPOSER_HEIGHT + 10) / 2,
657
- marginRight:
658
- _.isEmpty(props.text) && !this.hasImagesReady(props.imagesToUpload)
659
- ? 8 + this.MIN_COMPOSER_HEIGHT
660
- : 2 * (this.MIN_COMPOSER_HEIGHT + 8),
661
- justifyContent: 'center',
662
- },
663
- Platform.OS === 'ios' && {
664
- height: props.composerHeight + 10,
665
- },
666
- ]}
667
- >
668
- <Composer
669
- {...props}
670
- //composerHeight={props.composerHeight}
671
- placeholder="Type a message..."
672
- textInputStyle={styles.inputText}
673
- textInputProps={{
674
- onFocus: this.onFocusInput.bind(this),
675
- onBlur: this.onBlurInput.bind(this),
676
- }}
677
- />
650
+ <View style={styles.composerInputWrapper}>
651
+ <View
652
+ style={[
653
+ styles.input,
654
+ {
655
+ //height: props.composerHeight + 10,
656
+ //borderRadius: (this.MIN_COMPOSER_HEIGHT + 10) / 2,
657
+ marginRight:
658
+ _.isEmpty(props.text) && !this.hasImagesReady(props.imagesToUpload)
659
+ ? 8 + this.MIN_COMPOSER_HEIGHT
660
+ : 2 * (this.MIN_COMPOSER_HEIGHT + 8),
661
+ justifyContent: 'center',
662
+ },
663
+ Platform.OS === 'ios' && {
664
+ height: props.composerHeight + 10,
665
+ },
666
+ ]}
667
+ >
668
+ <Composer
669
+ {...props}
670
+ //composerHeight={props.composerHeight}
671
+ placeholder="Type a message..."
672
+ textInputStyle={styles.inputText}
673
+ textInputProps={{
674
+ onFocus: this.onFocusInput.bind(this),
675
+ onBlur: this.onBlurInput.bind(this),
676
+ }}
677
+ />
678
+ </View>
678
679
  </View>
679
680
  </View>
680
681
  );
@@ -686,7 +687,8 @@ class PlussChat extends Component {
686
687
  renderChat() {
687
688
  const { tabCount, noTab } = this.props;
688
689
  const iosBottomOffset = (tabCount === 1 || noTab ? -10 : 52) + getBottomSpace();
689
- const minInputToolbarHeight = this.MIN_COMPOSER_HEIGHT + 16 + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);
690
+ const minInputToolbarHeight =
691
+ this.MIN_COMPOSER_HEIGHT + 16 + (this.state.replyingTo ? 30 : 0) + (this.hasImagesAttached() ? IMAGE_PREVIEW_AREA_HEIGHT : 0);
690
692
 
691
693
  return (
692
694
  <GiftedChat
@@ -877,6 +879,10 @@ const styles = {
877
879
  composerContainer: {
878
880
  flex: 1,
879
881
  },
882
+ composerInputWrapper: {
883
+ flex: 1,
884
+ flexDirection: 'row',
885
+ },
880
886
  replyingTo: {
881
887
  minHeight: 30,
882
888
  flexDirection: 'row',