Files
mastodon-sakyey/app/javascript/mastodon/features/emoji/emoji_picker.tsx

60 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-05-14 08:39:05 +02:00
import type { EmojiProps, PickerProps } from 'emoji-mart';
import EmojiRaw from 'emoji-mart/dist-es/components/emoji/nimble-emoji';
import PickerRaw from 'emoji-mart/dist-es/components/picker/nimble-picker';
import { assetHost } from 'mastodon/utils/config';
import { EMOJI_MODE_NATIVE } from './constants';
2025-05-14 08:39:05 +02:00
import EmojiData from './emoji_data.json';
2025-10-14 11:36:25 +02:00
import { useEmojiAppState } from './mode';
2025-05-14 08:39:05 +02:00
2025-10-16 15:15:16 +02:00
const backgroundImageFnDefault = () => `${assetHost}/emoji/sheet_16_0.png`;
2025-05-14 08:39:05 +02:00
const Emoji = ({
set = 'twitter',
sheetSize = 32,
sheetColumns = 62,
sheetRows = 62,
backgroundImageFn = backgroundImageFnDefault,
...props
}: EmojiProps) => {
const { mode } = useEmojiAppState();
2025-05-14 08:39:05 +02:00
return (
<EmojiRaw
data={EmojiData}
set={set}
sheetSize={sheetSize}
sheetColumns={sheetColumns}
sheetRows={sheetRows}
2025-10-28 12:33:27 +01:00
native={mode === EMOJI_MODE_NATIVE}
2025-05-14 08:39:05 +02:00
backgroundImageFn={backgroundImageFn}
{...props}
/>
);
};
const Picker = ({
set = 'twitter',
sheetSize = 32,
sheetColumns = 62,
sheetRows = 62,
backgroundImageFn = backgroundImageFnDefault,
...props
}: PickerProps) => {
const { mode } = useEmojiAppState();
2025-05-14 08:39:05 +02:00
return (
<PickerRaw
data={EmojiData}
set={set}
sheetSize={sheetSize}
sheetColumns={sheetColumns}
sheetRows={sheetRows}
backgroundImageFn={backgroundImageFn}
2025-10-28 12:33:27 +01:00
native={mode === EMOJI_MODE_NATIVE}
2025-05-14 08:39:05 +02:00
{...props}
/>
);
};
export { Picker, Emoji };