import React from 'react';
import { Text, TouchableOpacity, FlatList } from 'react-native';
import shortnameToUnicode from '../../utils/shortnameToUnicode';
import styles from './styles';
import CustomEmoji from './CustomEmoji';
import scrollPersistTaps from '../../utils/scrollPersistTaps';
const EMOJI_SIZE: number = 50;
interface IEmoji {
baseUrl: string;
emojis: any;
onEmojiSelected({}: any): void;
emojisPerRow: number;
width: number;
style: any;
tabLabel: string;
}
const renderEmoji = (emoji: any, size: number, baseUrl: string) => {
if (emoji && emoji.isCustom) {
return ;
}
return (
{shortnameToUnicode(`:${ emoji }:`)}
);
};
class EmojiCategory extends React.Component> {
renderItem(emoji: any) {
const { baseUrl, onEmojiSelected } = this.props;
return (
onEmojiSelected!(emoji)}
testID={`reaction-picker-${ emoji && emoji.isCustom ? emoji.content : emoji }`}
>
{renderEmoji(emoji, EMOJI_SIZE, baseUrl!)}
);
}
render() {
const { emojis, width } = this.props;
if (!width) {
return null;
}
const numColumns = Math.trunc(width / EMOJI_SIZE);
const marginHorizontal = (width - (numColumns * EMOJI_SIZE)) / 2;
return (
// @ts-ignore
(item && item.isCustom && item.content) || item}
data={emojis}
extraData={this.props}
renderItem={({ item }) => this.renderItem(item)}
numColumns={numColumns}
initialNumToRender={45}
removeClippedSubviews
{...scrollPersistTaps}
/>
);
}
}
export default EmojiCategory;