import React, { useCallback, useEffect, useState } from 'react'; import { makeStyles } from 'tss-react/mui'; const useStyles = makeStyles()(() => { return { loading: { alignItems: 'center', display: 'flex', height: '435px', justifyContent: 'center' } }; }); interface IProps { onEmojiSelect: (emoji: string) => void; } const EmojiPicker: React.FC = ({ onEmojiSelect }) => { const { classes } = useStyles(); const [ PickerComponent, setPickerComponent ] = useState | null>(null); const [ data, setData ] = useState(null); useEffect(() => { Promise.all([ import('@emoji-mart/react'), import('@emoji-mart/data') ]).then(([ pickerMod, dataMod ]) => { setPickerComponent(() => pickerMod.default); setData(dataMod.default); }); }, []); const handleSelect = useCallback((emoji: { native: string; }) => { onEmojiSelect(emoji.native); }, [ onEmojiSelect ]); if (!PickerComponent || !data) { return (
Loading...
); } return ( ); }; export default EmojiPicker;