import React from 'react';
import {Text} from 'react-native';
import {
isMentionPartType,
parseValue,
Part,
PartType,
} from 'react-native-controlled-mentions';
import TaggTypeahead from '../components/common/TaggTypeahead';
import {TAGG_LIGHT_BLUE} from '../constants';
/**
* Part renderer
*
* https://github.com/dabakovich/react-native-controlled-mentions#rendering-mentioninputs-value
*
* @param part
* @param index
*/
const renderPart = (part: Part, index: number) => {
// Just plain text
if (!part.partType) {
return {part.text};
}
// Mention type part
if (isMentionPartType(part.partType)) {
return (
console.log('Pressed', part.data)}>
{part.text}
);
}
// Other styled part types
return (
{part.text}
);
};
interface RenderProps {
value: string;
partTypes: PartType[];
}
/**
* Value renderer. Parsing value to parts array and then mapping the array using 'renderPart'
*
* https://github.com/dabakovich/react-native-controlled-mentions#rendering-mentioninputs-value
*
* @param value - value from MentionInput
* @param partTypes - the part types array that you providing to MentionInput
*/
export const renderTextWithMentions: React.FC = ({
value,
partTypes,
}) => {
const {parts} = parseValue(value, partTypes);
return {parts.map(renderPart)};
};
export const mentionPartTypes: PartType[] = [
{
trigger: '@',
renderSuggestions: (props) => ,
allowedSpacesCount: 0,
isInsertSpaceAfterMention: true,
textStyle: {color: TAGG_LIGHT_BLUE},
},
];