+ {items => (
+
+ {items.map(({ key, data, style }) => (
+
+ ))}
+
+ {visibleReactions.size < 8 && } />}
+
+ )}
+
+ );
+ }
+
+}
+
+class Reaction extends ImmutablePureComponent {
+
+ static propTypes = {
+ statusId: PropTypes.string,
+ reaction: ImmutablePropTypes.map.isRequired,
+ addReaction: PropTypes.func.isRequired,
+ removeReaction: PropTypes.func.isRequired,
+ emojiMap: ImmutablePropTypes.map.isRequired,
+ style: PropTypes.object,
+ };
+
+ state = {
+ hovered: false,
+ };
+
+ handleClick = () => {
+ const { reaction, statusId, addReaction, removeReaction } = this.props;
+
+ if (reaction.get('me')) {
+ removeReaction(statusId, reaction.get('name'));
+ } else {
+ addReaction(statusId, reaction.get('name'));
+ }
+ }
+
+ handleMouseEnter = () => this.setState({ hovered: true })
+
+ handleMouseLeave = () => this.setState({ hovered: false })
+
+ render() {
+ const { reaction } = this.props;
+
+ let shortCode = reaction.get('name');
+
+ if (unicodeMapping[shortCode]) {
+ shortCode = unicodeMapping[shortCode].shortCode;
+ }
+
+ return (
+