import type { FC } from '../../../lib/teact/teact'; import type React from '../../../lib/teact/teact'; import { memo } from '../../../lib/teact/teact'; import { IS_EMOJI_SUPPORTED } from '../../../util/browser/windowEnvironment'; import buildClassName from '../../../util/buildClassName'; import { handleEmojiLoad, LOADED_EMOJIS } from '../../../util/emoji/emoji'; import useLastCallback from '../../../hooks/useLastCallback'; import './EmojiButton.scss'; type OwnProps = { emoji: Emoji; focus?: boolean; onClick: (emoji: string, name: string) => void; }; const EmojiButton: FC = ({ emoji, focus, onClick, }) => { const handleClick = useLastCallback((e: React.MouseEvent) => { // Preventing safari from losing focus on Composer MessageInput e.preventDefault(); onClick(emoji.native, emoji.id); }); const className = buildClassName( 'EmojiButton', focus && 'focus', ); const src = `./img-apple-64/${emoji.image}.png`; const isLoaded = LOADED_EMOJIS.has(src); return (
{IS_EMOJI_SUPPORTED ? emoji.native : ( {emoji.native} )}
); }; export default memo(EmojiButton);