@bigbinary/neetoui-rn 0.0.250 → 0.0.253

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -335,6 +335,11 @@ type ChatInputProps = {
335
335
  Attachments?: React.FC;
336
336
  showCannedResponsesFor?: Array<"REPLY" | "NOTE" | "FORWARD">;
337
337
  disabled?: boolean;
338
+ suggestions: Array<{
339
+ name: string
340
+ imageUrl: string
341
+ id: string
342
+ }>;
338
343
  };
339
344
 
340
345
  type LineLoaderProps = {
@@ -1 +1 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.AnimatedImage=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _taggedTemplateLiteralLoose2=_interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeFastImage=_interopRequireDefault(require("react-native-fast-image"));var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=_interopRequireDefault(require("styled-components/native"));var _styledSystem=require("styled-system");var _imagePlaceholder=_interopRequireDefault(require("../../assets/images/image-placeholder.svg"));var _=require("./");var _theme=require("../theme");var _excluded=["imageHeight","imageWidth","imageUrl"];var _templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/AnimatedImage.jsx";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var StyledImage=(0,_native.default)(_reactNativeFastImage.default)(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2.default)(["\n ","\n ","\n ","\n ","\n ","\n"])),_styledSystem.flexbox,_styledSystem.space,_styledSystem.border,_styledSystem.color,_styledSystem.layout);var borderRadius=(0,_reactNativeSizeMatters.moderateScale)(10);var AnimatedImage=function AnimatedImage(_ref){var _ref$imageHeight=_ref.imageHeight,imageHeight=_ref$imageHeight===void 0?139:_ref$imageHeight,_ref$imageWidth=_ref.imageWidth,imageWidth=_ref$imageWidth===void 0?255:_ref$imageWidth,imageUrl=_ref.imageUrl,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var opacity=(0,_reactNativeReanimated.useSharedValue)(0);var _useState=(0,_react.useState)(false),_useState2=(0,_slicedToArray2.default)(_useState,2),isImageLoaded=_useState2[0],setIsImageLoaded=_useState2[1];var profileImageStyle=(0,_reactNativeReanimated.useAnimatedStyle)(function(){var _f=function _f(){return{opacity:(0,_reactNativeReanimated.withTiming)(opacity.value,{duration:300,easing:_reactNativeReanimated.Easing.bezier(0.25,0.1,0.25,1)}),height:imageHeight,width:imageWidth,alignSelf:"center",borderRadius:borderRadius};};_f._closure={withTiming:_reactNativeReanimated.withTiming,opacity:opacity,Easing:{bezier:_reactNativeReanimated.Easing.bezier},imageHeight:imageHeight,imageWidth:imageWidth,borderRadius:borderRadius};_f.asString="function _f(){const{withTiming,opacity,Easing,imageHeight,imageWidth,borderRadius}=jsThis._closure;{return{opacity:withTiming(opacity.value,{duration:300,easing:Easing.bezier(0.25,0.1,0.25,1)}),height:imageHeight,width:imageWidth,alignSelf:\"center\",borderRadius:borderRadius};}}";_f.__workletHash=11133486617518;_f.__location="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/AnimatedImage.jsx (65:45)";_f.__optimalization=2;return _f;}());return _react.default.createElement(_.Container,{alignItems:"center",borderRadius:(0,_reactNativeSizeMatters.moderateScale)(10),justifyContent:"center",overflow:"hidden",__self:_this,__source:{fileName:_jsxFileName,lineNumber:77,columnNumber:5}},_react.default.createElement(_reactNativeReanimated.default.View,{style:profileImageStyle,__self:_this,__source:{fileName:_jsxFileName,lineNumber:83,columnNumber:7}},_react.default.createElement(StyledImage,(0,_extends2.default)({height:imageHeight,width:imageWidth,source:{uri:imageUrl,headers:{Accept:"*/*","Content-Type":"application/json",Pragma:"no-cache"}},onLoad:function onLoad(){setIsImageLoaded(true);opacity.value=1;},onLoadStart:function onLoadStart(){setIsImageLoaded(false);opacity.value=0;}},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:84,columnNumber:9}}))),!isImageLoaded&&_react.default.createElement(_.Container,{position:"absolute",__self:_this,__source:{fileName:_jsxFileName,lineNumber:107,columnNumber:9}},_react.default.createElement(_imagePlaceholder.default,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:108,columnNumber:11}}),_react.default.createElement(_.Container,{bottom:(0,_reactNativeSizeMatters.moderateScale)(15),position:"absolute",right:(0,_reactNativeSizeMatters.moderateScale)(15),__self:_this,__source:{fileName:_jsxFileName,lineNumber:109,columnNumber:11}},_react.default.createElement(_.Loader,{color:_theme.theme.colors.font.grey600,__self:_this,__source:{fileName:_jsxFileName,lineNumber:114,columnNumber:13}}))));};exports.AnimatedImage=AnimatedImage;AnimatedImage.defaultProps={alignItems:"center",justifyContent:"center"};AnimatedImage.propTypes={imageHeight:_propTypes.default.number,imageWidth:_propTypes.default.number,imageUrl:_propTypes.default.string.isRequired};
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.AnimatedImage=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _taggedTemplateLiteralLoose2=_interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeFastImage=_interopRequireDefault(require("react-native-fast-image"));var _reactNativeReanimated=_interopRequireWildcard(require("react-native-reanimated"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=_interopRequireDefault(require("styled-components/native"));var _styledSystem=require("styled-system");var _imagePlaceholder=_interopRequireDefault(require("../../assets/images/image-placeholder.svg"));var _=require("./");var _theme=require("../theme");var _excluded=["imageHeight","imageWidth","imageUrl"];var _templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/AnimatedImage.jsx";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var StyledImage=(0,_native.default)(_reactNativeFastImage.default)(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2.default)(["\n ","\n ","\n ","\n ","\n ","\n"])),_styledSystem.flexbox,_styledSystem.space,_styledSystem.border,_styledSystem.color,_styledSystem.layout);var borderRadius=(0,_reactNativeSizeMatters.moderateScale)(10);var AnimatedImage=function AnimatedImage(_ref){var _ref$imageHeight=_ref.imageHeight,imageHeight=_ref$imageHeight===void 0?139:_ref$imageHeight,_ref$imageWidth=_ref.imageWidth,imageWidth=_ref$imageWidth===void 0?255:_ref$imageWidth,imageUrl=_ref.imageUrl,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var opacity=(0,_reactNativeReanimated.useSharedValue)(0);var _useState=(0,_react.useState)(false),_useState2=(0,_slicedToArray2.default)(_useState,2),isImageLoaded=_useState2[0],setIsImageLoaded=_useState2[1];var profileImageStyle=(0,_reactNativeReanimated.useAnimatedStyle)(function(){var _f=function _f(){return{opacity:(0,_reactNativeReanimated.withTiming)(opacity.value,{duration:300,easing:_reactNativeReanimated.Easing.bezier(0.25,0.1,0.25,1)}),height:imageHeight,width:imageWidth,alignSelf:"center",borderRadius:borderRadius};};_f._closure={withTiming:_reactNativeReanimated.withTiming,opacity:opacity,Easing:{bezier:_reactNativeReanimated.Easing.bezier},imageHeight:imageHeight,imageWidth:imageWidth,borderRadius:borderRadius};_f.asString="function _f(){const{withTiming,opacity,Easing,imageHeight,imageWidth,borderRadius}=jsThis._closure;{return{opacity:withTiming(opacity.value,{duration:300,easing:Easing.bezier(0.25,0.1,0.25,1)}),height:imageHeight,width:imageWidth,alignSelf:\"center\",borderRadius:borderRadius};}}";_f.__workletHash=11133486617518;_f.__location="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/AnimatedImage.jsx (65:45)";_f.__optimalization=2;return _f;}());return _react.default.createElement(_.Container,{alignItems:"center",borderRadius:(0,_reactNativeSizeMatters.moderateScale)(10),justifyContent:"center",overflow:"hidden",__self:_this,__source:{fileName:_jsxFileName,lineNumber:77,columnNumber:5}},_react.default.createElement(_reactNativeReanimated.default.View,{style:profileImageStyle,__self:_this,__source:{fileName:_jsxFileName,lineNumber:83,columnNumber:7}},_react.default.createElement(StyledImage,(0,_extends2.default)({height:imageHeight,width:imageWidth,source:{uri:imageUrl,headers:{Accept:"*/*","Content-Type":"application/json",Pragma:"no-cache"}},onLoad:function onLoad(){setIsImageLoaded(true);opacity.value=1;},onLoadStart:function onLoadStart(){setIsImageLoaded(false);opacity.value=0;}},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:84,columnNumber:9}}))),!isImageLoaded&&_react.default.createElement(_.Container,{position:"absolute",__self:_this,__source:{fileName:_jsxFileName,lineNumber:107,columnNumber:9}},_react.default.createElement(_imagePlaceholder.default,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:108,columnNumber:11}}),_react.default.createElement(_.Container,{bottom:(0,_reactNativeSizeMatters.moderateScale)(15),position:"absolute",right:(0,_reactNativeSizeMatters.moderateScale)(15),__self:_this,__source:{fileName:_jsxFileName,lineNumber:109,columnNumber:11}},_react.default.createElement(_.Loader,{color:_theme.theme.colors.font.grey600,__self:_this,__source:{fileName:_jsxFileName,lineNumber:114,columnNumber:13}}))));};exports.AnimatedImage=AnimatedImage;AnimatedImage.defaultProps={alignItems:"center",justifyContent:"center"};AnimatedImage.propTypes={imageHeight:_propTypes.default.number|_propTypes.default.string,imageWidth:_propTypes.default.number,imageUrl:_propTypes.default.string};
@@ -1 +1 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ChatInput=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _taggedTemplateLiteralLoose2=_interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=_interopRequireWildcard(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _reactNativeSizeMatters=require("react-native-size-matters");var _native=_interopRequireDefault(require("styled-components/native"));var _styledSystem=require("styled-system");var _attachment=_interopRequireDefault(require("../../../assets/icons/attachment.svg"));var _cannedResponse=_interopRequireDefault(require("../../../assets/icons/canned-response.svg"));var _expand=_interopRequireDefault(require("../../../assets/icons/expand.svg"));var _forward=_interopRequireDefault(require("../../../assets/icons/forward.svg"));var _minimize=_interopRequireDefault(require("../../../assets/icons/minimize.svg"));var _note=_interopRequireDefault(require("../../../assets/icons/note.svg"));var _reply=_interopRequireDefault(require("../../../assets/icons/reply.svg"));var _=require("./..");var _AttachmentsView=require("./AttachmentsView");var _EmailFields=require("./EmailFields");var _IconButton=require("./IconButton");var _theme=require("../../theme");var _excluded=["shouldShowEmailFields","showReplyMenuOptions","value","onChangeText","onForward","onCannedResponse","toEmails","onReply","onAddNote","onAttachment","attachmentsCount","Attachments","showCannedResponsesFor","disabled","isLoading","onOptionChange","initialSelectedOption"];var _labels,_templateObject,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/ChatInput/ChatInput.jsx";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var placeholders={reply:"Type here to reply...",note:"Add note here...",forward:"Type here to forward..."};var OPTION_TYPES={REPLY:"REPLY",NOTE:"NOTE",FORWARD:"FORWARD"};var labels=(_labels={},(0,_defineProperty2.default)(_labels,OPTION_TYPES.REPLY,"Reply"),(0,_defineProperty2.default)(_labels,OPTION_TYPES.NOTE,"Add note"),(0,_defineProperty2.default)(_labels,OPTION_TYPES.FORWARD,"Forward"),_labels);var TextInput=_native.default.TextInput(_templateObject||(_templateObject=(0,_taggedTemplateLiteralLoose2.default)(["\n ","\n ","\n ","\n ","\n ","\n ","\n"])),_styledSystem.flexbox,_styledSystem.space,_styledSystem.border,_styledSystem.buttonStyle,_styledSystem.typography,_styledSystem.color);var ChatInput=(0,_react.forwardRef)(function(_ref,ref){var shouldShowEmailFields=_ref.shouldShowEmailFields,showReplyMenuOptions=_ref.showReplyMenuOptions,_ref$value=_ref.value,value=_ref$value===void 0?"":_ref$value,_ref$onChangeText=_ref.onChangeText,onChangeText=_ref$onChangeText===void 0?function(){}:_ref$onChangeText,onForward=_ref.onForward,onCannedResponse=_ref.onCannedResponse,initialToEmails=_ref.toEmails,_ref$onReply=_ref.onReply,onReply=_ref$onReply===void 0?function(){}:_ref$onReply,_ref$onAddNote=_ref.onAddNote,onAddNote=_ref$onAddNote===void 0?function(){}:_ref$onAddNote,_ref$onAttachment=_ref.onAttachment,onAttachment=_ref$onAttachment===void 0?function(){}:_ref$onAttachment,attachmentsCount=_ref.attachmentsCount,Attachments=_ref.Attachments,_ref$showCannedRespon=_ref.showCannedResponsesFor,showCannedResponsesFor=_ref$showCannedRespon===void 0?[OPTION_TYPES.REPLY]:_ref$showCannedRespon,disabled=_ref.disabled,_ref$isLoading=_ref.isLoading,isLoading=_ref$isLoading===void 0?true:_ref$isLoading,_ref$onOptionChange=_ref.onOptionChange,onOptionChange=_ref$onOptionChange===void 0?function(){}:_ref$onOptionChange,_ref$initialSelectedO=_ref.initialSelectedOption,initialSelectedOption=_ref$initialSelectedO===void 0?OPTION_TYPES.REPLY:_ref$initialSelectedO,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var inputRef=(0,_react.useRef)();var _useState=(0,_react.useState)(initialSelectedOption),_useState2=(0,_slicedToArray2.default)(_useState,2),selectedOption=_useState2[0],setSelectedOption=_useState2[1];var _useState3=(0,_react.useState)(false),_useState4=(0,_slicedToArray2.default)(_useState3,2),isEmailFieldsVisible=_useState4[0],setIsEmailFieldsVisible=_useState4[1];var _useState5=(0,_react.useState)(false),_useState6=(0,_slicedToArray2.default)(_useState5,2),isAttachmentsVisible=_useState6[0],setIsAttachmentsVisible=_useState6[1];var isReplyOptionSelected=selectedOption===OPTION_TYPES.REPLY;var isNoteOptionSelected=selectedOption===OPTION_TYPES.NOTE;var isForwardOptionSelected=selectedOption===OPTION_TYPES.FORWARD;var _useState7=(0,_react.useState)(initialToEmails!=null?initialToEmails:[]),_useState8=(0,_slicedToArray2.default)(_useState7,2),toEmails=_useState8[0],setToEmails=_useState8[1];var _useState9=(0,_react.useState)([]),_useState10=(0,_slicedToArray2.default)(_useState9,2),toEmailsForForward=_useState10[0],setToEmailsForForward=_useState10[1];var _useState11=(0,_react.useState)([]),_useState12=(0,_slicedToArray2.default)(_useState11,2),ccEmails=_useState12[0],setCcEmails=_useState12[1];var _useState13=(0,_react.useState)([]),_useState14=(0,_slicedToArray2.default)(_useState13,2),bccEmails=_useState14[0],setBccEmails=_useState14[1];var moreReplyOptions=[{label:"Send and set as closed",Icon:function Icon(){return null;},onPress:function onPress(){onReply({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails,status:"closed"});}}];(0,_react.useImperativeHandle)(ref,function(){return{clearEmailFields:function clearEmailFields(){setToEmails(initialToEmails!=null?initialToEmails:[]);setToEmailsForForward([]);setCcEmails([]);setBccEmails([]);inputRef.current.blur();}};},[initialToEmails,isReplyOptionSelected]);(0,_react.useEffect)(function(){onOptionChange(selectedOption);},[selectedOption]);(0,_react.useEffect)(function(){setSelectedOption(initialSelectedOption);},[initialSelectedOption]);(0,_react.useEffect)(function(){setToEmails(initialToEmails!=null?initialToEmails:[]);},[initialToEmails]);var showEmailFieldsAndAttachments=function showEmailFieldsAndAttachments(){setIsAttachmentsVisible(true);setIsEmailFieldsVisible(true);};var hideEmailFieldsAndAttachments=function hideEmailFieldsAndAttachments(){setIsAttachmentsVisible(false);setIsEmailFieldsVisible(false);};var onReplyClickHandler=function onReplyClickHandler(){hideEmailFieldsAndAttachments();inputRef.current.focus();setSelectedOption(OPTION_TYPES.REPLY);};var onAddNoteClickHandler=function onAddNoteClickHandler(){hideEmailFieldsAndAttachments();inputRef.current.focus();setIsEmailFieldsVisible(false);setSelectedOption(OPTION_TYPES.NOTE);};var onAddForwardClickHandler=function onAddForwardClickHandler(){inputRef.current.focus();setIsEmailFieldsVisible(true);setIsAttachmentsVisible(false);setSelectedOption(OPTION_TYPES.FORWARD);};var onAddAttachmentsClickHandler=function onAddAttachmentsClickHandler(){if(!isAttachmentsVisible&&attachmentsCount>0){}else{onAttachment();}setIsEmailFieldsVisible(false);setIsAttachmentsVisible(true);};var onActionHandler=(0,_react.useCallback)(function(){var _OPTION_TYPES$REPLY$O;(_OPTION_TYPES$REPLY$O={},(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.REPLY,function(){onReply({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.NOTE,function(){onAddNote({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.FORWARD,function(){onForward({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),_OPTION_TYPES$REPLY$O)[selectedOption]();},[bccEmails,ccEmails,onAddNote,onForward,onReply,selectedOption,toEmails]);var shouldShowExpandAndMinimizeButton=attachmentsCount>0||toEmails.length>0;var shouldDisableWhenForwardAndToFieldMissing=isForwardOptionSelected&&toEmailsForForward.length===0;return _react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:270,columnNumber:7}},_react.default.createElement(_.LineLoader,{backgroundColor:_theme.theme.colors.background.grey400,isLoading:isLoading,__self:_this,__source:{fileName:_jsxFileName,lineNumber:271,columnNumber:9}}),_react.default.createElement(_.Container,{bg:isNoteOptionSelected?"background.oldLace":"transparent",p:(0,_reactNativeSizeMatters.moderateScale)(5),pt:0,px:(0,_reactNativeSizeMatters.moderateScale)(16),__self:_this,__source:{fileName:_jsxFileName,lineNumber:275,columnNumber:9}},_react.default.createElement(_.Container,{pt:(0,_reactNativeSizeMatters.moderateScale)(8),__self:_this,__source:{fileName:_jsxFileName,lineNumber:281,columnNumber:11}},_react.default.createElement(_EmailFields.EmailFields,{bccEmails:bccEmails,ccEmails:ccEmails,isEmailFieldsVisible:isEmailFieldsVisible,isForwardOptionSelected:isForwardOptionSelected,isNoteOptionSelected:isNoteOptionSelected,isReplyOptionSelected:isReplyOptionSelected,setBccEmails:setBccEmails,setCcEmails:setCcEmails,setIsEmailFieldsVisible:setIsEmailFieldsVisible,setToEmails:setToEmails,setToEmailsForForward:setToEmailsForForward,shouldShowEmailFields:shouldShowEmailFields,toEmails:toEmails,toEmailsForForward:toEmailsForForward,__self:_this,__source:{fileName:_jsxFileName,lineNumber:282,columnNumber:13}}),_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:298,columnNumber:13}},_react.default.createElement(TextInput,(0,_extends2.default)({multiline:true,flex:1,maxHeight:(0,_reactNativeSizeMatters.moderateScale)(150),my:(0,_reactNativeSizeMatters.moderateScale)(12),overflow:"hidden",placeholder:placeholders[selectedOption],ref:inputRef,value:value,onChangeText:onChangeText,onTouchStart:hideEmailFieldsAndAttachments},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:299,columnNumber:15}})),_react.default.createElement(_.Container,{alignSelf:"center",__self:_this,__source:{fileName:_jsxFileName,lineNumber:312,columnNumber:15}},shouldShowExpandAndMinimizeButton&&(isEmailFieldsVisible||isAttachmentsVisible?_react.default.createElement(_IconButton.IconButton,{Icon:_minimize.default,height:(0,_reactNativeSizeMatters.moderateScale)(30),pt:(0,_reactNativeSizeMatters.moderateScale)(8),width:(0,_reactNativeSizeMatters.moderateScale)(30),onPress:hideEmailFieldsAndAttachments,__self:_this,__source:{fileName:_jsxFileName,lineNumber:315,columnNumber:21}}):_react.default.createElement(_IconButton.IconButton,{Icon:_expand.default,height:(0,_reactNativeSizeMatters.moderateScale)(30),pt:(0,_reactNativeSizeMatters.moderateScale)(8),width:(0,_reactNativeSizeMatters.moderateScale)(30),onPress:showEmailFieldsAndAttachments,__self:_this,__source:{fileName:_jsxFileName,lineNumber:323,columnNumber:21}})))),_react.default.createElement(_AttachmentsView.AttachmentsView,{Attachments:Attachments,attachmentsCount:attachmentsCount,isAttachmentsVisible:isAttachmentsVisible,isNoteOptionSelected:isNoteOptionSelected,setIsAttachmentsVisible:setIsAttachmentsVisible,__self:_this,__source:{fileName:_jsxFileName,lineNumber:333,columnNumber:13}}),_react.default.createElement(_.Container,{alignItems:"center",flexDirection:"row",justifyContent:"space-between",mt:(0,_reactNativeSizeMatters.moderateScale)(10),__self:_this,__source:{fileName:_jsxFileName,lineNumber:340,columnNumber:13}},_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:346,columnNumber:15}},_react.default.createElement(_IconButton.IconButton,{Icon:_reply.default,opacity:isReplyOptionSelected?1:0.5,pl:(0,_reactNativeSizeMatters.moderateScale)(10),onPress:onReplyClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:347,columnNumber:17}}),_react.default.createElement(_IconButton.IconButton,{Icon:_note.default,opacity:isNoteOptionSelected?1:0.5,onPress:onAddNoteClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:353,columnNumber:17}}),onForward&&_react.default.createElement(_IconButton.IconButton,{Icon:_forward.default,opacity:isForwardOptionSelected?1:0.5,onPress:onAddForwardClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:359,columnNumber:19}}),_react.default.createElement(_.Container,{bg:"background.grey400",mx:(0,_reactNativeSizeMatters.moderateScale)(5),p:(0,_reactNativeSizeMatters.moderateScale)(0.4),__self:_this,__source:{fileName:_jsxFileName,lineNumber:365,columnNumber:17}}),onCannedResponse&&showCannedResponsesFor.includes(selectedOption)&&_react.default.createElement(_IconButton.IconButton,{Icon:_cannedResponse.default,opacity:0.5,onPress:onCannedResponse,__self:_this,__source:{fileName:_jsxFileName,lineNumber:372,columnNumber:21}}),_react.default.createElement(_IconButton.IconButton,{Icon:_attachment.default,opacity:0.5,onPress:onAddAttachmentsClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:378,columnNumber:17}})),_react.default.createElement(_.Container,{alignItems:"center",flexDirection:"row",__self:_this,__source:{fileName:_jsxFileName,lineNumber:384,columnNumber:15}},_react.default.createElement(_.Button,{height:(0,_reactNativeSizeMatters.moderateScale)(30),label:labels[selectedOption],pr:0,variant:"text",disabled:shouldDisableWhenForwardAndToFieldMissing||disabled,labelStyle:{mx:(0,_reactNativeSizeMatters.moderateScale)(0)},onPress:onActionHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:385,columnNumber:17}}),showReplyMenuOptions&&isReplyOptionSelected&&_react.default.createElement(_.Popover,{data:moreReplyOptions,from:_react.default.createElement(_.Button,{disabled:disabled,height:(0,_reactNativeSizeMatters.moderateScale)(30),label:"",p:0,variant:"text",RightIcon:function RightIcon(){return _react.default.createElement(_reactNativeRemixIcon.default,{color:_theme.theme.colors.background.grey800,name:"ri-arrow-down-s-line",size:(0,_reactNativeSizeMatters.moderateScale)(30),__self:_this,__source:{fileName:_jsxFileName,lineNumber:409,columnNumber:27}});},__self:_this,__source:{fileName:_jsxFileName,lineNumber:402,columnNumber:23}}),__self:_this,__source:{fileName:_jsxFileName,lineNumber:399,columnNumber:19}}))))));});exports.ChatInput=ChatInput;ChatInput.displayName="ChatInput";ChatInput.propTypes={isLoading:_propTypes.default.bool,shouldShowEmailFields:_propTypes.default.bool,showReplyMenuOptions:_propTypes.default.bool,value:_propTypes.default.string,initialSelectedOption:_propTypes.default.oneOf(Object.values(OPTION_TYPES)),onOptionChange:_propTypes.default.func,onChangeText:_propTypes.default.func,onForward:_propTypes.default.func,onCannedResponse:_propTypes.default.func,toEmails:_propTypes.default.arrayOf(_propTypes.default.string),onReply:_propTypes.default.func,onAddNote:_propTypes.default.func,onAttachment:_propTypes.default.func,attachmentsCount:_propTypes.default.number,Attachments:_propTypes.default.any,showCannedResponsesFor:_propTypes.default.arrayOf(_propTypes.default.oneOf(Object.values(OPTION_TYPES))),disabled:_propTypes.default.bool};
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.ChatInput=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=_interopRequireWildcard(require("react"));var _nodeHtmlParser=require("node-html-parser");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeRemixIcon=_interopRequireDefault(require("react-native-remix-icon"));var _reactNativeSizeMatters=require("react-native-size-matters");var _attachment=_interopRequireDefault(require("../../../assets/icons/attachment.svg"));var _cannedResponse=_interopRequireDefault(require("../../../assets/icons/canned-response.svg"));var _expand=_interopRequireDefault(require("../../../assets/icons/expand.svg"));var _forward=_interopRequireDefault(require("../../../assets/icons/forward.svg"));var _minimize=_interopRequireDefault(require("../../../assets/icons/minimize.svg"));var _note=_interopRequireDefault(require("../../../assets/icons/note.svg"));var _reply=_interopRequireDefault(require("../../../assets/icons/reply.svg"));var _=require("./..");var _AttachmentsView=require("./AttachmentsView");var _EmailFields=require("./EmailFields");var _IconButton=require("./IconButton");var _MentionsInputWrapper=require("./MentionsInputWrapper");var _theme=require("../../theme");var _excluded=["shouldShowEmailFields","showReplyMenuOptions","value","onChangeText","onForward","onCannedResponse","toEmails","onReply","onAddNote","onAttachment","attachmentsCount","Attachments","showCannedResponsesFor","disabled","isLoading","onOptionChange","initialSelectedOption","suggestions"];var _placeholders,_labels,_this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/ChatInput/ChatInput.jsx";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}function _createForOfIteratorHelperLoose(o,allowArrayLike){var it=typeof Symbol!=="undefined"&&o[Symbol.iterator]||o["@@iterator"];if(it)return(it=it.call(o)).next.bind(it);if(Array.isArray(o)||(it=_unsupportedIterableToArray(o))||allowArrayLike&&o&&typeof o.length==="number"){if(it)o=it;var i=0;return function(){if(i>=o.length)return{done:true};return{done:false,value:o[i++]};};}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}function _unsupportedIterableToArray(o,minLen){if(!o)return;if(typeof o==="string")return _arrayLikeToArray(o,minLen);var n=Object.prototype.toString.call(o).slice(8,-1);if(n==="Object"&&o.constructor)n=o.constructor.name;if(n==="Map"||n==="Set")return Array.from(o);if(n==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return _arrayLikeToArray(o,minLen);}function _arrayLikeToArray(arr,len){if(len==null||len>arr.length)len=arr.length;for(var i=0,arr2=new Array(len);i<len;i++){arr2[i]=arr[i];}return arr2;}var OPTION_TYPES={REPLY:"REPLY",NOTE:"NOTE",FORWARD:"FORWARD"};var placeholders=(_placeholders={},(0,_defineProperty2.default)(_placeholders,OPTION_TYPES.REPLY,"Type here to reply…"),(0,_defineProperty2.default)(_placeholders,OPTION_TYPES.NOTE,"Add note here…"),(0,_defineProperty2.default)(_placeholders,OPTION_TYPES.FORWARD,"Type here to forward…"),_placeholders);var labels=(_labels={},(0,_defineProperty2.default)(_labels,OPTION_TYPES.REPLY,"Reply"),(0,_defineProperty2.default)(_labels,OPTION_TYPES.NOTE,"Add note"),(0,_defineProperty2.default)(_labels,OPTION_TYPES.FORWARD,"Forward"),_labels);var convertToMentions=function convertToMentions(_ref){var suggestions=_ref.suggestions,value=_ref.value;var mentionsRegex=new RegExp(/@\[[^)]*\)/g);var html="<p>"+value+"</p>";var allMentions=html.matchAll(mentionsRegex);var _loop=function _loop(mentionObject){var mention=mentionObject[0];var id=/\((.*)\)/.exec(mention)[1];var suggestion=suggestions.find(function(suggestion){return suggestion.id===id;});var rootNode=(0,_nodeHtmlParser.parse)("<span></span>");var spanNode=rootNode.querySelector("span");spanNode.setAttribute("data-type","mention");spanNode.setAttribute("data-id",id);spanNode.setAttribute("data-label",suggestion.name);spanNode.set_content("@"+suggestion.name);var rootNodeString=rootNode.toString();html=html.replace(mention,rootNodeString);};for(var _iterator=_createForOfIteratorHelperLoose(allMentions),_step;!(_step=_iterator()).done;){var mentionObject=_step.value;_loop(mentionObject);}return html;};var ChatInput=(0,_react.forwardRef)(function(_ref2,ref){var shouldShowEmailFields=_ref2.shouldShowEmailFields,showReplyMenuOptions=_ref2.showReplyMenuOptions,_ref2$value=_ref2.value,value=_ref2$value===void 0?"":_ref2$value,_ref2$onChangeText=_ref2.onChangeText,onChangeText=_ref2$onChangeText===void 0?function(){}:_ref2$onChangeText,onForward=_ref2.onForward,onCannedResponse=_ref2.onCannedResponse,initialToEmails=_ref2.toEmails,_ref2$onReply=_ref2.onReply,onReply=_ref2$onReply===void 0?function(){}:_ref2$onReply,_ref2$onAddNote=_ref2.onAddNote,onAddNote=_ref2$onAddNote===void 0?function(){}:_ref2$onAddNote,_ref2$onAttachment=_ref2.onAttachment,onAttachment=_ref2$onAttachment===void 0?function(){}:_ref2$onAttachment,attachmentsCount=_ref2.attachmentsCount,Attachments=_ref2.Attachments,_ref2$showCannedRespo=_ref2.showCannedResponsesFor,showCannedResponsesFor=_ref2$showCannedRespo===void 0?[OPTION_TYPES.REPLY]:_ref2$showCannedRespo,disabled=_ref2.disabled,_ref2$isLoading=_ref2.isLoading,isLoading=_ref2$isLoading===void 0?true:_ref2$isLoading,_ref2$onOptionChange=_ref2.onOptionChange,onOptionChange=_ref2$onOptionChange===void 0?function(){}:_ref2$onOptionChange,_ref2$initialSelected=_ref2.initialSelectedOption,initialSelectedOption=_ref2$initialSelected===void 0?OPTION_TYPES.REPLY:_ref2$initialSelected,suggestions=_ref2.suggestions,rest=(0,_objectWithoutProperties2.default)(_ref2,_excluded);var inputRef=(0,_react.useRef)();var _useState=(0,_react.useState)(initialSelectedOption),_useState2=(0,_slicedToArray2.default)(_useState,2),selectedOption=_useState2[0],setSelectedOption=_useState2[1];var _useState3=(0,_react.useState)(false),_useState4=(0,_slicedToArray2.default)(_useState3,2),isEmailFieldsVisible=_useState4[0],setIsEmailFieldsVisible=_useState4[1];var _useState5=(0,_react.useState)(false),_useState6=(0,_slicedToArray2.default)(_useState5,2),isAttachmentsVisible=_useState6[0],setIsAttachmentsVisible=_useState6[1];var isReplyOptionSelected=selectedOption===OPTION_TYPES.REPLY;var isNoteOptionSelected=selectedOption===OPTION_TYPES.NOTE;var isForwardOptionSelected=selectedOption===OPTION_TYPES.FORWARD;var _useState7=(0,_react.useState)(initialToEmails!=null?initialToEmails:[]),_useState8=(0,_slicedToArray2.default)(_useState7,2),toEmails=_useState8[0],setToEmails=_useState8[1];var _useState9=(0,_react.useState)([]),_useState10=(0,_slicedToArray2.default)(_useState9,2),toEmailsForForward=_useState10[0],setToEmailsForForward=_useState10[1];var _useState11=(0,_react.useState)([]),_useState12=(0,_slicedToArray2.default)(_useState11,2),ccEmails=_useState12[0],setCcEmails=_useState12[1];var _useState13=(0,_react.useState)([]),_useState14=(0,_slicedToArray2.default)(_useState13,2),bccEmails=_useState14[0],setBccEmails=_useState14[1];var moreReplyOptions=[{label:"Send and set as closed",Icon:function Icon(){return null;},onPress:function onPress(){onReply({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails,status:"closed"});}}];(0,_react.useImperativeHandle)(ref,function(){return{clearEmailFields:function clearEmailFields(){setToEmails(initialToEmails!=null?initialToEmails:[]);setToEmailsForForward([]);setCcEmails([]);setBccEmails([]);inputRef.current.blur();}};},[initialToEmails,isReplyOptionSelected]);(0,_react.useEffect)(function(){onOptionChange(selectedOption);},[selectedOption]);(0,_react.useEffect)(function(){setSelectedOption(initialSelectedOption);},[initialSelectedOption]);(0,_react.useEffect)(function(){setToEmails(initialToEmails!=null?initialToEmails:[]);},[initialToEmails]);var showEmailFieldsAndAttachments=function showEmailFieldsAndAttachments(){setIsAttachmentsVisible(true);setIsEmailFieldsVisible(true);};var hideEmailFieldsAndAttachments=function hideEmailFieldsAndAttachments(){setIsAttachmentsVisible(false);setIsEmailFieldsVisible(false);};var onReplyClickHandler=function onReplyClickHandler(){hideEmailFieldsAndAttachments();inputRef.current.focus();setSelectedOption(OPTION_TYPES.REPLY);};var onAddNoteClickHandler=function onAddNoteClickHandler(){hideEmailFieldsAndAttachments();inputRef.current.focus();setIsEmailFieldsVisible(false);setSelectedOption(OPTION_TYPES.NOTE);};var onAddForwardClickHandler=function onAddForwardClickHandler(){inputRef.current.focus();setIsEmailFieldsVisible(true);setIsAttachmentsVisible(false);setSelectedOption(OPTION_TYPES.FORWARD);};var onAddAttachmentsClickHandler=function onAddAttachmentsClickHandler(){if(!isAttachmentsVisible&&attachmentsCount>0){}else{onAttachment();}setIsEmailFieldsVisible(false);setIsAttachmentsVisible(true);};var onActionHandler=(0,_react.useCallback)(function(){var _OPTION_TYPES$REPLY$O;(_OPTION_TYPES$REPLY$O={},(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.REPLY,function(){onReply({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.NOTE,function(){onAddNote({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails,html:convertToMentions({suggestions:suggestions,value:value})});}),(0,_defineProperty2.default)(_OPTION_TYPES$REPLY$O,OPTION_TYPES.FORWARD,function(){onForward({toEmails:toEmails,ccEmails:ccEmails,bccEmails:bccEmails});}),_OPTION_TYPES$REPLY$O)[selectedOption]();},[bccEmails,ccEmails,onAddNote,onForward,onReply,selectedOption,suggestions,toEmails,value]);var shouldShowExpandAndMinimizeButton=attachmentsCount>0||toEmails.length>0;var shouldDisableWhenForwardAndToFieldMissing=isForwardOptionSelected&&toEmailsForForward.length===0;return _react.default.createElement(_.Container,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:292,columnNumber:7}},_react.default.createElement(_.LineLoader,{backgroundColor:_theme.theme.colors.background.grey400,isLoading:isLoading,__self:_this,__source:{fileName:_jsxFileName,lineNumber:293,columnNumber:9}}),_react.default.createElement(_.Container,{bg:isNoteOptionSelected?"background.oldLace":"transparent",p:(0,_reactNativeSizeMatters.moderateScale)(5),pt:0,px:(0,_reactNativeSizeMatters.moderateScale)(16),__self:_this,__source:{fileName:_jsxFileName,lineNumber:297,columnNumber:9}},_react.default.createElement(_.Container,{pt:(0,_reactNativeSizeMatters.moderateScale)(8),__self:_this,__source:{fileName:_jsxFileName,lineNumber:303,columnNumber:11}},_react.default.createElement(_EmailFields.EmailFields,{bccEmails:bccEmails,ccEmails:ccEmails,isEmailFieldsVisible:isEmailFieldsVisible,isForwardOptionSelected:isForwardOptionSelected,isNoteOptionSelected:isNoteOptionSelected,isReplyOptionSelected:isReplyOptionSelected,setBccEmails:setBccEmails,setCcEmails:setCcEmails,setIsEmailFieldsVisible:setIsEmailFieldsVisible,setToEmails:setToEmails,setToEmailsForForward:setToEmailsForForward,shouldShowEmailFields:shouldShowEmailFields,toEmails:toEmails,toEmailsForForward:toEmailsForForward,__self:_this,__source:{fileName:_jsxFileName,lineNumber:304,columnNumber:13}}),_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:320,columnNumber:13}},_react.default.createElement(_MentionsInputWrapper.MentionsInputWrapper,(0,_extends2.default)({placeholder:placeholders[selectedOption],ref:inputRef,suggestions:suggestions,value:value,onChange:onChangeText,onTouchStart:hideEmailFieldsAndAttachments},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:321,columnNumber:15}})),_react.default.createElement(_.Container,{alignSelf:"center",__self:_this,__source:{fileName:_jsxFileName,lineNumber:330,columnNumber:15}},shouldShowExpandAndMinimizeButton&&(isEmailFieldsVisible||isAttachmentsVisible?_react.default.createElement(_IconButton.IconButton,{Icon:_minimize.default,height:(0,_reactNativeSizeMatters.moderateScale)(30),pt:(0,_reactNativeSizeMatters.moderateScale)(8),width:(0,_reactNativeSizeMatters.moderateScale)(30),onPress:hideEmailFieldsAndAttachments,__self:_this,__source:{fileName:_jsxFileName,lineNumber:333,columnNumber:21}}):_react.default.createElement(_IconButton.IconButton,{Icon:_expand.default,height:(0,_reactNativeSizeMatters.moderateScale)(30),pt:(0,_reactNativeSizeMatters.moderateScale)(8),width:(0,_reactNativeSizeMatters.moderateScale)(30),onPress:showEmailFieldsAndAttachments,__self:_this,__source:{fileName:_jsxFileName,lineNumber:341,columnNumber:21}})))),_react.default.createElement(_AttachmentsView.AttachmentsView,{Attachments:Attachments,attachmentsCount:attachmentsCount,isAttachmentsVisible:isAttachmentsVisible,isNoteOptionSelected:isNoteOptionSelected,setIsAttachmentsVisible:setIsAttachmentsVisible,__self:_this,__source:{fileName:_jsxFileName,lineNumber:351,columnNumber:13}}),_react.default.createElement(_.Container,{alignItems:"center",flexDirection:"row",justifyContent:"space-between",mt:(0,_reactNativeSizeMatters.moderateScale)(10),__self:_this,__source:{fileName:_jsxFileName,lineNumber:358,columnNumber:13}},_react.default.createElement(_.Container,{flexDirection:"row",justifyContent:"space-between",__self:_this,__source:{fileName:_jsxFileName,lineNumber:364,columnNumber:15}},_react.default.createElement(_IconButton.IconButton,{Icon:_reply.default,opacity:isReplyOptionSelected?1:0.5,pl:(0,_reactNativeSizeMatters.moderateScale)(10),onPress:onReplyClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:365,columnNumber:17}}),_react.default.createElement(_IconButton.IconButton,{Icon:_note.default,opacity:isNoteOptionSelected?1:0.5,onPress:onAddNoteClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:371,columnNumber:17}}),onForward&&_react.default.createElement(_IconButton.IconButton,{Icon:_forward.default,opacity:isForwardOptionSelected?1:0.5,onPress:onAddForwardClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:377,columnNumber:19}}),_react.default.createElement(_.Container,{bg:"background.grey400",mx:(0,_reactNativeSizeMatters.moderateScale)(5),p:(0,_reactNativeSizeMatters.moderateScale)(0.4),__self:_this,__source:{fileName:_jsxFileName,lineNumber:383,columnNumber:17}}),onCannedResponse&&showCannedResponsesFor.includes(selectedOption)&&_react.default.createElement(_IconButton.IconButton,{Icon:_cannedResponse.default,opacity:0.5,onPress:onCannedResponse,__self:_this,__source:{fileName:_jsxFileName,lineNumber:390,columnNumber:21}}),_react.default.createElement(_IconButton.IconButton,{Icon:_attachment.default,opacity:0.5,onPress:onAddAttachmentsClickHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:396,columnNumber:17}})),_react.default.createElement(_.Container,{alignItems:"center",flexDirection:"row",__self:_this,__source:{fileName:_jsxFileName,lineNumber:402,columnNumber:15}},_react.default.createElement(_.Button,{height:(0,_reactNativeSizeMatters.moderateScale)(30),label:labels[selectedOption],pr:0,variant:"text",disabled:shouldDisableWhenForwardAndToFieldMissing||disabled,labelStyle:{mx:(0,_reactNativeSizeMatters.moderateScale)(0)},onPress:onActionHandler,__self:_this,__source:{fileName:_jsxFileName,lineNumber:403,columnNumber:17}}),showReplyMenuOptions&&isReplyOptionSelected&&_react.default.createElement(_.Popover,{data:moreReplyOptions,from:_react.default.createElement(_.Button,{disabled:disabled,height:(0,_reactNativeSizeMatters.moderateScale)(30),label:"",p:0,variant:"text",RightIcon:function RightIcon(){return _react.default.createElement(_reactNativeRemixIcon.default,{color:_theme.theme.colors.background.grey800,name:"ri-arrow-down-s-line",size:(0,_reactNativeSizeMatters.moderateScale)(30),__self:_this,__source:{fileName:_jsxFileName,lineNumber:427,columnNumber:27}});},__self:_this,__source:{fileName:_jsxFileName,lineNumber:420,columnNumber:23}}),__self:_this,__source:{fileName:_jsxFileName,lineNumber:417,columnNumber:19}}))))));});exports.ChatInput=ChatInput;ChatInput.displayName="ChatInput";ChatInput.propTypes={isLoading:_propTypes.default.bool,shouldShowEmailFields:_propTypes.default.bool,showReplyMenuOptions:_propTypes.default.bool,value:_propTypes.default.string,initialSelectedOption:_propTypes.default.oneOf(Object.values(OPTION_TYPES)),onOptionChange:_propTypes.default.func,onChangeText:_propTypes.default.func,onForward:_propTypes.default.func,onCannedResponse:_propTypes.default.func,toEmails:_propTypes.default.arrayOf(_propTypes.default.string),onReply:_propTypes.default.func,onAddNote:_propTypes.default.func,onAttachment:_propTypes.default.func,attachmentsCount:_propTypes.default.number,Attachments:_propTypes.default.any,showCannedResponsesFor:_propTypes.default.arrayOf(_propTypes.default.oneOf(Object.values(OPTION_TYPES))),disabled:_propTypes.default.bool,suggestions:_propTypes.default.arrayOf(_propTypes.default.shape({name:_propTypes.default.string,imageUrl:_propTypes.default.string,id:_propTypes.default.string}))};
@@ -0,0 +1 @@
1
+ var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.MentionsInputWrapper=void 0;var _extends2=_interopRequireDefault(require("@babel/runtime/helpers/extends"));var _slicedToArray2=_interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));var _objectWithoutProperties2=_interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _propTypes=_interopRequireDefault(require("prop-types"));var _reactNativeControlledMentions=require("react-native-controlled-mentions");var _reactNativeSizeMatters=require("react-native-size-matters");var _native=require("styled-components/native");var _=require("./..");var _excluded=["suggestions"];var _this=this,_jsxFileName="/home/runner/work/neeto-ui-rn/neeto-ui-rn/src/components/ChatInput/MentionsInputWrapper.jsx";function _getRequireWildcardCache(nodeInterop){if(typeof WeakMap!=="function")return null;var cacheBabelInterop=new WeakMap();var cacheNodeInterop=new WeakMap();return(_getRequireWildcardCache=function _getRequireWildcardCache(nodeInterop){return nodeInterop?cacheNodeInterop:cacheBabelInterop;})(nodeInterop);}function _interopRequireWildcard(obj,nodeInterop){if(!nodeInterop&&obj&&obj.__esModule){return obj;}if(obj===null||typeof obj!=="object"&&typeof obj!=="function"){return{default:obj};}var cache=_getRequireWildcardCache(nodeInterop);if(cache&&cache.has(obj)){return cache.get(obj);}var newObj={};var hasPropertyDescriptor=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var key in obj){if(key!=="default"&&Object.prototype.hasOwnProperty.call(obj,key)){var desc=hasPropertyDescriptor?Object.getOwnPropertyDescriptor(obj,key):null;if(desc&&(desc.get||desc.set)){Object.defineProperty(newObj,key,desc);}else{newObj[key]=obj[key];}}}newObj.default=obj;if(cache){cache.set(obj,newObj);}return newObj;}var MentionsInputWrapper=(0,_react.forwardRef)(function(_ref,ref){var suggestions=_ref.suggestions,rest=(0,_objectWithoutProperties2.default)(_ref,_excluded);var _useState=(0,_react.useState)(0),_useState2=(0,_slicedToArray2.default)(_useState,2),visibleMentionsCount=_useState2[0],setVisibleMentionsCount=_useState2[1];var theme=(0,_react.useContext)(_native.ThemeContext);var heightOfMention=(0,_reactNativeSizeMatters.moderateScale)(50);var mentionsListHeight=visibleMentionsCount*heightOfMention;var renderSuggestions=function renderSuggestions(_ref2){var keyword=_ref2.keyword,onSuggestionPress=_ref2.onSuggestionPress;if(keyword===null){if(visibleMentionsCount!==false)setVisibleMentionsCount(false);return null;}var filteredSuggestions=suggestions.filter(function(suggestion){return suggestion.name.toLocaleLowerCase().includes(keyword==null?void 0:keyword.toLocaleLowerCase());});setVisibleMentionsCount(filteredSuggestions.length>4?4:filteredSuggestions.length);return _react.default.createElement(_.Card,{elevation:4,__self:_this,__source:{fileName:_jsxFileName,lineNumber:44,columnNumber:9}},_react.default.createElement(_reactNative.ScrollView,{contentInset:{bottom:(0,_reactNativeSizeMatters.moderateScale)(20)},keyboardShouldPersistTaps:"always",contentContainerStyle:(0,_extends2.default)({},filteredSuggestions.length===0?{height:0}:{height:mentionsListHeight,justifyContent:"flex-end",borderRadius:(0,_reactNativeSizeMatters.moderateScale)(10),backgroundColor:theme.colors.background.grey100}),__self:_this,__source:{fileName:_jsxFileName,lineNumber:45,columnNumber:11}},filteredSuggestions.map(function(suggestion,index){var name=suggestion.name,imageUrl=suggestion.imageUrl;return _react.default.createElement(_.Touchable,(0,_extends2.default)({bg:"background.grey100",width:"100%"},index===0&&{borderTopLeftRadius:(0,_reactNativeSizeMatters.moderateScale)(10),borderTopRightRadius:(0,_reactNativeSizeMatters.moderateScale)(10)},index===filteredSuggestions.length-1&&{borderBottomLeftRadius:(0,_reactNativeSizeMatters.moderateScale)(10),borderBottomRightRadius:(0,_reactNativeSizeMatters.moderateScale)(10)},{height:heightOfMention,key:index,px:(0,_reactNativeSizeMatters.moderateScale)(10),onPress:function onPress(){return onSuggestionPress(suggestion);},__self:_this,__source:{fileName:_jsxFileName,lineNumber:63,columnNumber:17}}),_react.default.createElement(_.Container,{alignItems:"center",flex:1,flexDirection:"row",__self:_this,__source:{fileName:_jsxFileName,lineNumber:79,columnNumber:19}},_react.default.createElement(_.Avatar,{imageUrl:imageUrl,mr:(0,_reactNativeSizeMatters.moderateScale)(8),name:name,variant:"extra-small",__self:_this,__source:{fileName:_jsxFileName,lineNumber:80,columnNumber:21}}),_react.default.createElement(_.Typography,{color:"font.primary",flex:1,fontFamily:"sf400",fontSize:"xs",__self:_this,__source:{fileName:_jsxFileName,lineNumber:86,columnNumber:21}},name)),index!==filteredSuggestions.length-1&&_react.default.createElement(_.Divider,{bg:"border.primary",width:"100%",__self:_this,__source:{fileName:_jsxFileName,lineNumber:96,columnNumber:21}}));})));};return _react.default.createElement(_reactNativeControlledMentions.MentionInput,(0,_extends2.default)({inputRef:ref,containerStyle:[styles.mentionsTextInputStyle,{minHeight:(0,_reactNativeSizeMatters.moderateScale)(60)+mentionsListHeight}],partTypes:[{isInsertSpaceAfterMention:true,allowedSpacesCount:0,trigger:"@",renderSuggestions:renderSuggestions,textStyle:{fontFamily:theme.fonts.sf700,color:theme.colors.font.base}}]},rest,{__self:_this,__source:{fileName:_jsxFileName,lineNumber:107,columnNumber:7}}));});exports.MentionsInputWrapper=MentionsInputWrapper;MentionsInputWrapper.displayName="MentionsInputWrapper";var styles=_reactNative.StyleSheet.create({mentionsTextInputStyle:{marginVertical:(0,_reactNativeSizeMatters.moderateScale)(10),flex:1,width:"100%"}});MentionsInputWrapper.propTypes={suggestions:_propTypes.default.arrayOf(_propTypes.default.shape({name:_propTypes.default.string,imageUrl:_propTypes.default.string}))};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bigbinary/neetoui-rn",
3
- "version": "0.0.250",
3
+ "version": "0.0.253",
4
4
  "main": "lib/index.js",
5
5
  "author": "BigBinary",
6
6
  "license": "MIT",
@@ -55,8 +55,10 @@
55
55
  "@shopify/flash-list": "^1.2.0",
56
56
  "@styled-system/prop-types": "^5.1.5",
57
57
  "dayjs": "^1.11.4",
58
+ "node-html-parser": "^6.1.5",
58
59
  "react-content-loader": "^6.2.0",
59
60
  "react-native-calendars": "^1.1285.0",
61
+ "react-native-controlled-mentions": "^2.2.5",
60
62
  "react-native-gesture-handler": "^2.4.0",
61
63
  "react-native-modal": "^13.0.0",
62
64
  "react-native-pell-rich-editor": "^1.8.6",
@@ -128,7 +130,7 @@
128
130
  "react-native-device-info": "^10.3.0",
129
131
  "react-native-fast-image": "^8.6.0",
130
132
  "react-native-pager-view": "^5.4.25",
131
- "react-native-reanimated": "2.13.0",
133
+ "react-native-reanimated": "2.14.4",
132
134
  "react-native-screens": "^3.15.0",
133
135
  "react-native-storybook-loader": "^2.0.5",
134
136
  "react-native-svg": "^12.4.4",
@@ -128,7 +128,7 @@ AnimatedImage.propTypes = {
128
128
  /**
129
129
  * Height for image.
130
130
  */
131
- imageHeight: PropTypes.number,
131
+ imageHeight: PropTypes.number | PropTypes.string,
132
132
  /**
133
133
  * Width for image.
134
134
  */
@@ -136,5 +136,5 @@ AnimatedImage.propTypes = {
136
136
  /**
137
137
  * Url to display the Image. It accepts a standard React Native Image source prop Or a function that returns an Image.
138
138
  */
139
- imageUrl: PropTypes.string.isRequired,
139
+ imageUrl: PropTypes.string,
140
140
  };
@@ -7,18 +7,10 @@ import React, {
7
7
  useImperativeHandle,
8
8
  } from "react";
9
9
 
10
+ import { parse } from "node-html-parser";
10
11
  import PropTypes from "prop-types";
11
12
  import Icon from "react-native-remix-icon";
12
13
  import { moderateScale } from "react-native-size-matters";
13
- import styled from "styled-components/native";
14
- import {
15
- flexbox,
16
- space,
17
- border,
18
- buttonStyle,
19
- typography,
20
- color,
21
- } from "styled-system";
22
14
 
23
15
  import AttachmentSVG from "@assets/icons/attachment.svg";
24
16
  import CannedResponseSVG from "@assets/icons/canned-response.svg";
@@ -32,15 +24,10 @@ import { Container, LineLoader, Popover, Button } from "@components";
32
24
  import { AttachmentsView } from "./AttachmentsView";
33
25
  import { EmailFields } from "./EmailFields";
34
26
  import { IconButton } from "./IconButton";
27
+ import { MentionsInputWrapper } from "./MentionsInputWrapper";
35
28
 
36
29
  import { theme } from "../../theme";
37
30
 
38
- const placeholders = {
39
- reply: "Type here to reply...",
40
- note: "Add note here...",
41
- forward: "Type here to forward...",
42
- };
43
-
44
31
  // eslint-disable-next-line @bigbinary/neeto/no-dangling-constants
45
32
  const OPTION_TYPES = {
46
33
  REPLY: "REPLY",
@@ -48,20 +35,18 @@ const OPTION_TYPES = {
48
35
  FORWARD: "FORWARD",
49
36
  };
50
37
 
38
+ const placeholders = {
39
+ [OPTION_TYPES.REPLY]: "Type here to reply…",
40
+ [OPTION_TYPES.NOTE]: "Add note here…",
41
+ [OPTION_TYPES.FORWARD]: "Type here to forward…",
42
+ };
43
+
51
44
  const labels = {
52
45
  [OPTION_TYPES.REPLY]: "Reply",
53
46
  [OPTION_TYPES.NOTE]: "Add note",
54
47
  [OPTION_TYPES.FORWARD]: "Forward",
55
48
  };
56
49
 
57
- const TextInput = styled.TextInput`
58
- ${flexbox}
59
- ${space}
60
- ${border}
61
- ${buttonStyle}
62
- ${typography}
63
- ${color}
64
- `;
65
50
  /**
66
51
  * ChatInput component supports various options like `REPLY`, `NOTE` and `FORWARD`.
67
52
  * This component supports below props categories from [styled-system ](/styled-system).
@@ -123,6 +108,31 @@ const TextInput = styled.TextInput`
123
108
  * ```
124
109
  */
125
110
 
111
+ const convertToMentions = ({ suggestions, value }) => {
112
+ const mentionsRegex = new RegExp(/@\[[^)]*\)/g);
113
+ let html = `<p>${value}</p>`;
114
+ const allMentions = html.matchAll(mentionsRegex);
115
+
116
+ for (const mentionObject of allMentions) {
117
+ const mention = mentionObject[0];
118
+ const id = /\((.*)\)/.exec(mention)[1];
119
+
120
+ const suggestion = suggestions.find(suggestion => suggestion.id === id);
121
+
122
+ const rootNode = parse("<span></span>");
123
+ const spanNode = rootNode.querySelector("span");
124
+
125
+ spanNode.setAttribute("data-type", "mention");
126
+ spanNode.setAttribute("data-id", id);
127
+ spanNode.setAttribute("data-label", suggestion.name);
128
+ spanNode.set_content(`@${suggestion.name}`);
129
+ const rootNodeString = rootNode.toString();
130
+ html = html.replace(mention, rootNodeString);
131
+ }
132
+
133
+ return html;
134
+ };
135
+
126
136
  export const ChatInput = forwardRef(
127
137
  (
128
138
  {
@@ -143,6 +153,7 @@ export const ChatInput = forwardRef(
143
153
  isLoading = true,
144
154
  onOptionChange = () => {},
145
155
  initialSelectedOption = OPTION_TYPES.REPLY,
156
+ suggestions,
146
157
  ...rest
147
158
  },
148
159
  ref
@@ -241,10 +252,19 @@ export const ChatInput = forwardRef(
241
252
  const onActionHandler = useCallback(() => {
242
253
  ({
243
254
  [OPTION_TYPES.REPLY]: () => {
244
- onReply({ toEmails, ccEmails, bccEmails });
255
+ onReply({
256
+ toEmails,
257
+ ccEmails,
258
+ bccEmails,
259
+ });
245
260
  },
246
261
  [OPTION_TYPES.NOTE]: () => {
247
- onAddNote({ toEmails, ccEmails, bccEmails });
262
+ onAddNote({
263
+ toEmails,
264
+ ccEmails,
265
+ bccEmails,
266
+ html: convertToMentions({ suggestions, value }),
267
+ });
248
268
  },
249
269
  [OPTION_TYPES.FORWARD]: () => {
250
270
  onForward({ toEmails, ccEmails, bccEmails });
@@ -257,7 +277,9 @@ export const ChatInput = forwardRef(
257
277
  onForward,
258
278
  onReply,
259
279
  selectedOption,
280
+ suggestions,
260
281
  toEmails,
282
+ value,
261
283
  ]);
262
284
 
263
285
  const shouldShowExpandAndMinimizeButton =
@@ -296,16 +318,12 @@ export const ChatInput = forwardRef(
296
318
  toEmailsForForward={toEmailsForForward}
297
319
  />
298
320
  <Container flexDirection="row" justifyContent="space-between">
299
- <TextInput
300
- multiline
301
- flex={1}
302
- maxHeight={moderateScale(150)}
303
- my={moderateScale(12)}
304
- overflow="hidden"
321
+ <MentionsInputWrapper
305
322
  placeholder={placeholders[selectedOption]}
306
323
  ref={inputRef}
324
+ suggestions={suggestions}
307
325
  value={value}
308
- onChangeText={onChangeText}
326
+ onChange={onChangeText}
309
327
  onTouchStart={hideEmailFieldsAndAttachments}
310
328
  {...rest}
311
329
  />
@@ -497,4 +515,14 @@ ChatInput.propTypes = {
497
515
  * If true, Disables the reply, forward and add note button.
498
516
  */
499
517
  disabled: PropTypes.bool,
518
+ /**
519
+ * List of mentions
520
+ */
521
+ suggestions: PropTypes.arrayOf(
522
+ PropTypes.shape({
523
+ name: PropTypes.string,
524
+ imageUrl: PropTypes.string,
525
+ id: PropTypes.string,
526
+ })
527
+ ),
500
528
  };
@@ -0,0 +1,149 @@
1
+ import React, { forwardRef, useContext, useState } from "react";
2
+ import { ScrollView, StyleSheet } from "react-native";
3
+
4
+ import PropTypes from "prop-types";
5
+ import { MentionInput } from "react-native-controlled-mentions";
6
+ import { moderateScale } from "react-native-size-matters";
7
+ import { ThemeContext } from "styled-components/native";
8
+
9
+ import {
10
+ Touchable,
11
+ Avatar,
12
+ Typography,
13
+ Card,
14
+ Divider,
15
+ Container,
16
+ } from "@components";
17
+
18
+ export const MentionsInputWrapper = forwardRef(
19
+ ({ suggestions, ...rest }, ref) => {
20
+ const [visibleMentionsCount, setVisibleMentionsCount] = useState(0);
21
+ const theme = useContext(ThemeContext);
22
+
23
+ const heightOfMention = moderateScale(50);
24
+ const mentionsListHeight = visibleMentionsCount * heightOfMention;
25
+
26
+ const renderSuggestions = ({ keyword, onSuggestionPress }) => {
27
+ if (keyword === null) {
28
+ if (visibleMentionsCount !== false) setVisibleMentionsCount(false);
29
+
30
+ return null;
31
+ }
32
+
33
+ const filteredSuggestions = suggestions.filter(suggestion =>
34
+ suggestion.name
35
+ .toLocaleLowerCase()
36
+ .includes(keyword?.toLocaleLowerCase())
37
+ );
38
+
39
+ setVisibleMentionsCount(
40
+ filteredSuggestions.length > 4 ? 4 : filteredSuggestions.length
41
+ );
42
+
43
+ return (
44
+ <Card elevation={4}>
45
+ <ScrollView
46
+ contentInset={{ bottom: moderateScale(20) }}
47
+ keyboardShouldPersistTaps="always"
48
+ contentContainerStyle={{
49
+ ...(filteredSuggestions.length === 0
50
+ ? { height: 0 }
51
+ : {
52
+ height: mentionsListHeight,
53
+ justifyContent: "flex-end",
54
+ borderRadius: moderateScale(10),
55
+ backgroundColor: theme.colors.background.grey100,
56
+ }),
57
+ }}
58
+ >
59
+ {filteredSuggestions.map((suggestion, index) => {
60
+ const { name, imageUrl } = suggestion;
61
+
62
+ return (
63
+ <Touchable
64
+ bg="background.grey100"
65
+ width="100%"
66
+ {...(index === 0 && {
67
+ borderTopLeftRadius: moderateScale(10),
68
+ borderTopRightRadius: moderateScale(10),
69
+ })}
70
+ {...(index === filteredSuggestions.length - 1 && {
71
+ borderBottomLeftRadius: moderateScale(10),
72
+ borderBottomRightRadius: moderateScale(10),
73
+ })}
74
+ height={heightOfMention}
75
+ key={index}
76
+ px={moderateScale(10)}
77
+ onPress={() => onSuggestionPress(suggestion)}
78
+ >
79
+ <Container alignItems="center" flex={1} flexDirection="row">
80
+ <Avatar
81
+ imageUrl={imageUrl}
82
+ mr={moderateScale(8)}
83
+ name={name}
84
+ variant="extra-small"
85
+ />
86
+ <Typography
87
+ color="font.primary"
88
+ flex={1}
89
+ fontFamily="sf400"
90
+ fontSize="xs"
91
+ >
92
+ {name}
93
+ </Typography>
94
+ </Container>
95
+ {index !== filteredSuggestions.length - 1 && (
96
+ <Divider bg="border.primary" width="100%" />
97
+ )}
98
+ </Touchable>
99
+ );
100
+ })}
101
+ </ScrollView>
102
+ </Card>
103
+ );
104
+ };
105
+
106
+ return (
107
+ <MentionInput
108
+ inputRef={ref}
109
+ containerStyle={[
110
+ styles.mentionsTextInputStyle,
111
+ {
112
+ minHeight: moderateScale(60) + mentionsListHeight,
113
+ },
114
+ ]}
115
+ partTypes={[
116
+ {
117
+ isInsertSpaceAfterMention: true,
118
+ allowedSpacesCount: 0,
119
+ trigger: "@",
120
+ renderSuggestions,
121
+ textStyle: {
122
+ fontFamily: theme.fonts.sf700,
123
+ color: theme.colors.font.base,
124
+ },
125
+ },
126
+ ]}
127
+ {...rest}
128
+ />
129
+ );
130
+ }
131
+ );
132
+
133
+ MentionsInputWrapper.displayName = "MentionsInputWrapper";
134
+ const styles = StyleSheet.create({
135
+ mentionsTextInputStyle: {
136
+ marginVertical: moderateScale(10),
137
+ flex: 1,
138
+ width: "100%",
139
+ },
140
+ });
141
+
142
+ MentionsInputWrapper.propTypes = {
143
+ suggestions: PropTypes.arrayOf(
144
+ PropTypes.shape({
145
+ name: PropTypes.string,
146
+ imageUrl: PropTypes.string,
147
+ })
148
+ ),
149
+ };