import React, { useContext } from 'react'; import { CanonicalEmoji, Emoji as EmojiCharacter } from 'interweave-emoji'; import { Context } from './Context'; import { useTitleFormat } from './hooks/useTitleFormat'; export interface PreviewBarProps { emoji?: CanonicalEmoji | null; hideEmoticon: boolean; hideShortcodes: boolean; noPreview?: React.ReactNode; } // eslint-disable-next-line complexity export function PreviewBar({ emoji, hideEmoticon, hideShortcodes, noPreview }: PreviewBarProps) { const { classNames, emojiLargeSize, emojiPath, emojiSource, messages } = useContext(Context); const title = useTitleFormat(emoji?.label ?? ''); const subtitle = []; if (!emoji) { const preview = noPreview ?? messages.noPreview; return ( {preview && {preview}} ); } if (!hideEmoticon && emoji.emoticon) { if (Array.isArray(emoji.emoticon)) { subtitle.push(...emoji.emoticon); } else { subtitle.push(emoji.emoticon); } } if (!hideShortcodes && emoji.canonical_shortcodes) { subtitle.push(...emoji.canonical_shortcodes); } return ( {title && ( {title} {emoji.skins && emoji.skins.length > 0 && ( // eslint-disable-next-line react/jsx-no-literals {`(+${emoji.skins.length})`} )} )} {subtitle.length > 0 && ( {subtitle.join(' ')} )} ); }