Skip to content
This repository has been archived by the owner on Sep 11, 2024. It is now read-only.

Add regional indicators to emoji picker #6490

Merged
merged 4 commits into from
Aug 5, 2021
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 8 additions & 1 deletion src/emoji.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,9 @@ export const EMOTICON_TO_EMOJI = new Map<string, IEmoji>();

export const getEmojiFromUnicode = unicode => UNICODE_TO_EMOJI.get(stripVariation(unicode));

const isRegionalIndicator = (x: string): boolean =>
Array.from(x).length === 1 && x >= '\u{1f1e6}' && x <= '\u{1f1ff}';
robintown marked this conversation as resolved.
Show resolved Hide resolved

const EMOJIBASE_GROUP_ID_TO_CATEGORY = [
"people", // smileys
"people", // actually people
Expand Down Expand Up @@ -72,7 +75,11 @@ export const EMOJI: IEmoji[] = EMOJIBASE.map((emojiData: Omit<IEmoji, "shortcode
shortcodes: typeof shortcodeData === "string" ? [shortcodeData] : shortcodeData,
};

const categoryId = EMOJIBASE_GROUP_ID_TO_CATEGORY[emoji.group];
// We manually include regional indicators in the symbols group, since
// Emojibase intentionally leaves them uncategorized
const categoryId = EMOJIBASE_GROUP_ID_TO_CATEGORY[emoji.group] ??
(isRegionalIndicator(emoji.unicode) ? "symbols" : null);

if (DATA_BY_CATEGORY.hasOwnProperty(categoryId)) {
DATA_BY_CATEGORY[categoryId].push(emoji);
}
Expand Down