soapbox/app/soapbox/components/autosuggest-emoji.tsx

52 wiersze
1022 B
TypeScript
Czysty Zwykły widok Historia

2022-06-04 23:29:58 +00:00
import React from 'react';
2022-11-15 17:23:36 +00:00
import unicodeMapping from 'soapbox/features/emoji/emoji-unicode-mapping-light';
2022-06-04 23:29:58 +00:00
import { joinPublicPath } from 'soapbox/utils/static';
2022-06-04 23:35:04 +00:00
export type Emoji = {
id: string
custom: boolean
imageUrl: string
native: string
colons: string
2022-06-04 23:29:58 +00:00
}
type UnicodeMapping = {
filename: string
2022-06-04 23:29:58 +00:00
}
interface IAutosuggestEmoji {
emoji: Emoji
2022-06-04 23:29:58 +00:00
}
const AutosuggestEmoji: React.FC<IAutosuggestEmoji> = ({ emoji }) => {
let url;
if (emoji.custom) {
url = emoji.imageUrl;
} else {
// @ts-ignore
const mapping: UnicodeMapping = unicodeMapping[emoji.native] || unicodeMapping[emoji.native.replace(/\uFE0F$/, '')];
if (!mapping) {
return null;
}
url = joinPublicPath(`packs/emoji/${mapping.filename}.svg`);
}
return (
<div className='autosuggest-emoji' data-testid='emoji'>
<img
className='emojione'
src={url}
alt={emoji.native || emoji.colons}
/>
{emoji.colons}
</div>
);
};
export default AutosuggestEmoji;