mirror of https://github.com/vector-im/riot-web
Merge pull request #6490 from robintown/regional-indicators
Add regional indicators to emoji pickerpull/21833/head
commit
7c1d9b4eda
16
src/emoji.ts
16
src/emoji.ts
|
@ -35,6 +35,16 @@ export const EMOTICON_TO_EMOJI = new Map<string, IEmoji>();
|
||||||
|
|
||||||
export const getEmojiFromUnicode = unicode => UNICODE_TO_EMOJI.get(stripVariation(unicode));
|
export const getEmojiFromUnicode = unicode => UNICODE_TO_EMOJI.get(stripVariation(unicode));
|
||||||
|
|
||||||
|
const isRegionalIndicator = (x: string): boolean => {
|
||||||
|
// First verify that the string is a single character. We use Array.from
|
||||||
|
// to make sure we count by characters, not UTF-8 code units.
|
||||||
|
return Array.from(x).length === 1 &&
|
||||||
|
// Next verify that the character is within the code point range for
|
||||||
|
// regional indicators.
|
||||||
|
// http://unicode.org/charts/PDF/Unicode-6.0/U60-1F100.pdf
|
||||||
|
x >= '\u{1f1e6}' && x <= '\u{1f1ff}';
|
||||||
|
};
|
||||||
|
|
||||||
const EMOJIBASE_GROUP_ID_TO_CATEGORY = [
|
const EMOJIBASE_GROUP_ID_TO_CATEGORY = [
|
||||||
"people", // smileys
|
"people", // smileys
|
||||||
"people", // actually people
|
"people", // actually people
|
||||||
|
@ -72,7 +82,11 @@ export const EMOJI: IEmoji[] = EMOJIBASE.map((emojiData: Omit<IEmoji, "shortcode
|
||||||
shortcodes: typeof shortcodeData === "string" ? [shortcodeData] : shortcodeData,
|
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)) {
|
if (DATA_BY_CATEGORY.hasOwnProperty(categoryId)) {
|
||||||
DATA_BY_CATEGORY[categoryId].push(emoji);
|
DATA_BY_CATEGORY[categoryId].push(emoji);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue