feat: custom emoji

This commit is contained in:
codytseng 2025-08-22 21:05:44 +08:00
parent 481d6a1447
commit 71d4420604
46 changed files with 885 additions and 176 deletions

View file

@ -1,14 +1,20 @@
import { parseEmojiPickerUnified } from '@/lib/utils'
import { useScreenSize } from '@/providers/ScreenSizeProvider'
import { useTheme } from '@/providers/ThemeProvider'
import customEmojiService from '@/services/custom-emoji.service'
import { TEmoji } from '@/types'
import EmojiPickerReact, {
EmojiStyle,
SkinTonePickerLocation,
SuggestionMode,
Theme
} from 'emoji-picker-react'
import { MouseDownEvent } from 'emoji-picker-react/dist/config/config'
export default function EmojiPicker({ onEmojiClick }: { onEmojiClick: MouseDownEvent }) {
export default function EmojiPicker({
onEmojiClick
}: {
onEmojiClick: (emoji: string | TEmoji | undefined, event: MouseEvent) => void
}) {
const { themeSetting } = useTheme()
const { isSmallScreen } = useScreenSize()
@ -31,7 +37,11 @@ export default function EmojiPicker({ onEmojiClick }: { onEmojiClick: MouseDownE
} as React.CSSProperties
}
suggestedEmojisMode={SuggestionMode.FREQUENT}
onEmojiClick={onEmojiClick}
onEmojiClick={(data, e) => {
const emoji = parseEmojiPickerUnified(data.unified)
onEmojiClick(emoji, e)
}}
customEmojis={customEmojiService.getAllCustomEmojisForPicker()}
/>
)
}