From 82d9ade7a6abc663b30b3df4ae08a8980d61e233 Mon Sep 17 00:00:00 2001 From: Nolan Lawson Date: Tue, 3 Oct 2017 11:43:57 -0700 Subject: Compress emoji_data_light.js (#5201) --- app/javascript/mastodon/emoji_data_compressed.js | 22 +++++++++++++++++++ app/javascript/mastodon/emoji_data_light.js | 27 ++++++++++++------------ 2 files changed, 35 insertions(+), 14 deletions(-) create mode 100644 app/javascript/mastodon/emoji_data_compressed.js diff --git a/app/javascript/mastodon/emoji_data_compressed.js b/app/javascript/mastodon/emoji_data_compressed.js new file mode 100644 index 000000000..f69a3e46a --- /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 f03442455..f91ee592e 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; -- cgit