/* Copyright 2024 New Vector Ltd. Copyright 2020 The Matrix.org Foundation C.I.C. Copyright 2019 Tulir Asokan SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ import React from "react"; import { getEmojiFromUnicode, Emoji as IEmoji } from "@matrix-org/emojibase-bindings"; import { _t } from "../../../languageHandler"; import Emoji from "./Emoji"; import { ButtonEvent } from "../elements/AccessibleButton"; import Toolbar from "../../../accessibility/Toolbar"; // We use the variation-selector Heart in Quick Reactions for some reason const QUICK_REACTIONS = ["👍", "👎", "😄", "🎉", "😕", "❤️", "🚀", "👀"].map((emoji) => { const data = getEmojiFromUnicode(emoji); if (!data) { throw new Error(`Emoji ${emoji} doesn't exist in emojibase`); } return data; }); interface IProps { selectedEmojis?: Set; onClick(ev: ButtonEvent, emoji: IEmoji): void; } interface IState { hover?: IEmoji; } class QuickReactions extends React.Component { public constructor(props: IProps) { super(props); this.state = {}; } private onMouseEnter = (emoji: IEmoji): void => { this.setState({ hover: emoji, }); }; private onMouseLeave = (): void => { this.setState({ hover: undefined, }); }; public render(): React.ReactNode { return (

{!this.state.hover ? ( _t("emoji|quick_reactions") ) : ( {this.state.hover.label} {this.state.hover.shortcodes[0]} )}

{QUICK_REACTIONS.map((emoji) => ( ))}
); } } export default QuickReactions;