1ff70886a1
Co-authored-by: tobi <tobi.smethurst@protonmail.com> Reviewed-on: https://codeberg.org/superseriousbusiness/masto-fe-standalone/pulls/88 Co-authored-by: Zoë Bijl <moiety@noreply.codeberg.org> Co-committed-by: Zoë Bijl <moiety@noreply.codeberg.org>
55 lines
1.4 KiB
TypeScript
55 lines
1.4 KiB
TypeScript
// The output of this module is designed to mimic emoji-mart's
|
|
// "data" object, such that we can use it for a light version of emoji-mart's
|
|
// emojiIndex.search functionality.
|
|
import { type BaseEmoji } from "emoji-mart";
|
|
import { type Emoji } from "emoji-mart/dist-es/utils/data";
|
|
|
|
import { type Search, type ShortCodesToEmojiData } from "./emoji_compressed";
|
|
import emojiCompressed from "./emoji_compressed";
|
|
import { unicodeToUnifiedName } from "./unicode_to_unified_name";
|
|
|
|
type Emojis = {
|
|
[key in NonNullable<keyof ShortCodesToEmojiData>]: {
|
|
native: BaseEmoji["native"],
|
|
search: Search,
|
|
short_names: Emoji["short_names"],
|
|
unified: Emoji["unified"],
|
|
};
|
|
};
|
|
|
|
const [
|
|
shortCodesToEmojiData,
|
|
skins,
|
|
categories,
|
|
short_names,
|
|
_emojisWithoutShortCodes,
|
|
] = emojiCompressed;
|
|
|
|
const emojis: Emojis = {};
|
|
|
|
// decompress
|
|
Object.keys(shortCodesToEmojiData).forEach((shortCode) => {
|
|
const [_filenameData, searchData] = shortCodesToEmojiData[shortCode];
|
|
const native = searchData[0];
|
|
let short_names = searchData[1];
|
|
const search = searchData[2];
|
|
let unified = searchData[3];
|
|
|
|
if (!unified) {
|
|
// unified name can be derived from unicodeToUnifiedName
|
|
unified = unicodeToUnifiedName(native);
|
|
}
|
|
|
|
if (short_names) {
|
|
short_names = [shortCode].concat(short_names);
|
|
}
|
|
emojis[shortCode] = {
|
|
native,
|
|
search,
|
|
short_names,
|
|
unified,
|
|
};
|
|
});
|
|
|
|
export { emojis, skins, categories, short_names };
|