import clsx from 'clsx'; import React, { useState } from 'react'; import AnimatedNumber from 'soapbox/components/animated-number'; import unicodeMapping from 'soapbox/features/emoji/emoji-unicode-mapping-light'; import Emoji from './emoji'; import type { Map as ImmutableMap } from 'immutable'; import type { AnnouncementReaction } from 'soapbox/types/entities'; interface IReaction { announcementId: string reaction: AnnouncementReaction emojiMap: ImmutableMap> addReaction: (id: string, name: string) => void removeReaction: (id: string, name: string) => void style: React.CSSProperties } const Reaction: React.FC = ({ announcementId, reaction, addReaction, removeReaction, emojiMap, style }) => { const [hovered, setHovered] = useState(false); const handleClick = () => { if (reaction.me) { removeReaction(announcementId, reaction.name); } else { addReaction(announcementId, reaction.name); } }; const handleMouseEnter = () => setHovered(true); const handleMouseLeave = () => setHovered(false); let shortCode = reaction.name; // @ts-ignore if (unicodeMapping[shortCode]) { // @ts-ignore shortCode = unicodeMapping[shortCode].shortCode; } return ( ); }; export default Reaction;