diff --git a/app/javascript/mastodon/emoji_data_compressed.js b/app/javascript/mastodon/emoji_data_compressed.js new file mode 100644 index 0000000000000..f69a3e46adedd --- /dev/null +++ b/app/javascript/mastodon/emoji_data_compressed.js @@ -0,0 +1,22 @@ +// @preval +const data = require('emoji-mart/dist/data').default; +const pick = require('lodash/pick'); +const values = require('lodash/values'); + +const condensedEmojis = Object.keys(data.emojis).map(key => { + if (!data.emojis[key].short_names[0] === key) { + throw new Error('The condenser expects the first short_code to be the ' + + 'key. It may need to be rewritten if the emoji change such that this ' + + 'is no longer the case.'); + } + return values(pick(data.emojis[key], ['short_names', 'unified', 'search'])); +}); + +// JSON.parse/stringify is to emulate what @preval is doing and avoid any +// inconsistent behavior in dev mode +module.exports = JSON.parse(JSON.stringify({ + emojis: condensedEmojis, + skins: data.skins, + categories: data.categories, + short_names: data.short_names, +})); diff --git a/app/javascript/mastodon/emoji_data_light.js b/app/javascript/mastodon/emoji_data_light.js index f034424552539..f91ee592e8eb2 100644 --- a/app/javascript/mastodon/emoji_data_light.js +++ b/app/javascript/mastodon/emoji_data_light.js @@ -1,17 +1,16 @@ -// @preval -const data = require('emoji-mart/dist/data').default; -const pick = require('lodash/pick'); +const data = require('./emoji_data_compressed'); -const condensedEmojis = {}; -Object.keys(data.emojis).forEach(key => { - condensedEmojis[key] = pick(data.emojis[key], ['short_names', 'unified', 'search']); +// decompress +const emojis = {}; +data.emojis.forEach(compressedEmoji => { + const [ short_names, unified, search ] = compressedEmoji; + emojis[short_names[0]] = { + short_names, + unified, + search, + }; }); -// JSON.parse/stringify is to emulate what @preval is doing and avoid any -// inconsistent behavior in dev mode -module.exports = JSON.parse(JSON.stringify({ - emojis: condensedEmojis, - skins: data.skins, - categories: data.categories, - short_names: data.short_names, -})); +data.emojis = emojis; + +module.exports = data;