diff --git a/package.json b/package.json index 38a9390eb0..05416884f9 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,6 @@ }, "dependencies": { "@clerk/nextjs": "4.22.0", - "@emoji-mart/data": "1.1.2", - "@emoji-mart/react": "1.1.1", "@floating-ui/react-dom": "2.0.1", "@mx-space/api-client": "1.4.3", "@radix-ui/react-dialog": "1.0.4", @@ -54,6 +52,7 @@ "daisyui": "3.2.1", "dayjs": "1.11.9", "emoji-mart": "5.5.2", + "emoji-picker-react": "4.4.10", "foxact": "0.2.16", "framer-motion": "^10.13.0", "idb-keyval": "6.2.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aafdb04d5c..c019c5a738 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,12 +8,6 @@ dependencies: '@clerk/nextjs': specifier: 4.22.0 version: 4.22.0(next@13.4.10)(react-dom@18.2.0)(react@18.2.0) - '@emoji-mart/data': - specifier: 1.1.2 - version: 1.1.2 - '@emoji-mart/react': - specifier: 1.1.1 - version: 1.1.1(emoji-mart@5.5.2)(react@18.2.0) '@floating-ui/react-dom': specifier: 2.0.1 version: 2.0.1(react-dom@18.2.0)(react@18.2.0) @@ -59,6 +53,9 @@ dependencies: emoji-mart: specifier: 5.5.2 version: 5.5.2 + emoji-picker-react: + specifier: 4.4.10 + version: 4.4.10(react@18.2.0) foxact: specifier: 0.2.16 version: 0.2.16(react@18.2.0) @@ -1122,20 +1119,6 @@ packages: postcss-selector-parser: 6.0.13 dev: true - /@emoji-mart/data@1.1.2: - resolution: {integrity: sha512-1HP8BxD2azjqWJvxIaWAMyTySeZY0Osr83ukYjltPVkNXeJvTz7yDrPLBtnrD5uqJ3tg4CcLuuBW09wahqL/fg==} - dev: false - - /@emoji-mart/react@1.1.1(emoji-mart@5.5.2)(react@18.2.0): - resolution: {integrity: sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==} - peerDependencies: - emoji-mart: ^5.2 - react: ^16.8 || ^17 || ^18 - dependencies: - emoji-mart: 5.5.2 - react: 18.2.0 - dev: false - /@emotion/is-prop-valid@0.8.8: resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} requiresBuild: true @@ -3914,6 +3897,16 @@ packages: resolution: {integrity: sha512-Sqc/nso4cjxhOwWJsp9xkVm8OF5c+mJLZJFoFfzRuKO+yWiN7K8c96xmtughYb0d/fZ8UC6cLIQ/p4BR6Pv3/A==} dev: false + /emoji-picker-react@4.4.10(react@18.2.0): + resolution: {integrity: sha512-/5o57w8BKiCHklyqfYCeUlm00R9tdm2ZmJd0p6Q3/Ul7E7eMh+/FduuRFn3UVQCl5F6i4kOdREMz7EJ7YI1vMg==} + engines: {node: '>=10'} + peerDependencies: + react: '>=16' + dependencies: + clsx: 1.2.1 + react: 18.2.0 + dev: false + /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} dev: true diff --git a/src/components/widgets/shared/EmojiPicker.tsx b/src/components/widgets/shared/EmojiPicker.tsx index fa475c04e8..d3172ff174 100644 --- a/src/components/widgets/shared/EmojiPicker.tsx +++ b/src/components/widgets/shared/EmojiPicker.tsx @@ -1,50 +1,17 @@ -import { useQuery } from '@tanstack/react-query' -import { memo, useCallback } from 'react' +import EmojiPicker$, { EmojiStyle } from 'emoji-picker-react' +import { memo } from 'react' import type { FC } from 'react' -import { Loading } from '~/components/ui/loading' - export const EmojiPicker: FC<{ onEmojiSelect: (emoji: string) => void }> = memo(({ onEmojiSelect }) => { - const { data, isLoading } = useQuery({ - queryKey: ['emoji-data'], - queryFn: () => - fetch('https://cdn.jsdelivr.net/npm/@emoji-mart/data', { - next: { - revalidate: 60 * 60 * 24 * 7, - }, - }).then((response) => response.json()), - - staleTime: Number.POSITIVE_INFINITY, - }) - const handleSelect = useCallback((emoji: any) => { - return onEmojiSelect(emoji.native) - }, []) - - const handleDivRef = (divEl: HTMLDivElement) => { - import('emoji-mart').then( - (m) => - new m.Picker({ - ref: { - current: divEl, - }, - data, - onEmojiSelect: handleSelect, - maxFrequentRows: 0, - }), - ) - } - - if (isLoading) - return ( - - ) - return ( -
-
-
+ { + onEmojiSelect(e.emoji) + }} + emojiStyle={EmojiStyle.NATIVE} + /> ) }) EmojiPicker.displayName = 'EmojiPicker'