emoji-mart
Version:
Customizable Slack-like emoji picker for React
110 lines (92 loc) • 2.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.uncompress = exports.compress = exports.buildSearch = void 0;
var mapping = {
name: 'a',
unified: 'b',
non_qualified: 'c',
has_img_apple: 'd',
has_img_google: 'e',
has_img_twitter: 'f',
has_img_facebook: 'h',
keywords: 'j',
sheet: 'k',
emoticons: 'l',
text: 'm',
short_names: 'n',
added_in: 'o'
};
var buildSearch = function buildSearch(emoji) {
var search = [];
var addToSearch = function addToSearch(strings, split) {
if (!strings) {
return;
}
;
(Array.isArray(strings) ? strings : [strings]).forEach(function (string) {
;
(split ? string.split(/[-|_|\s]+/) : [string]).forEach(function (s) {
s = s.toLowerCase();
if (search.indexOf(s) == -1) {
search.push(s);
}
});
});
};
addToSearch(emoji.short_names, true);
addToSearch(emoji.name, true);
addToSearch(emoji.keywords, false);
addToSearch(emoji.emoticons, false);
return search.join(',');
};
exports.buildSearch = buildSearch;
var compress = function compress(emoji) {
emoji.short_names = emoji.short_names.filter(function (short_name) {
return short_name !== emoji.short_name;
});
delete emoji.short_name;
emoji.sheet = [emoji.sheet_x, emoji.sheet_y];
delete emoji.sheet_x;
delete emoji.sheet_y;
emoji.added_in = parseInt(emoji.added_in);
if (emoji.added_in === 6) {
delete emoji.added_in;
}
for (var key in mapping) {
emoji[mapping[key]] = emoji[key];
delete emoji[key];
}
for (var _key in emoji) {
var value = emoji[_key];
if (Array.isArray(value) && !value.length) {
delete emoji[_key];
} else if (typeof value === 'string' && !value.length) {
delete emoji[_key];
} else if (value === null) {
delete emoji[_key];
}
}
};
exports.compress = compress;
var uncompress = function uncompress(data) {
data.compressed = false;
for (var id in data.emojis) {
var emoji = data.emojis[id];
for (var key in mapping) {
emoji[key] = emoji[mapping[key]];
delete emoji[mapping[key]];
}
if (!emoji.short_names) emoji.short_names = [];
emoji.short_names.unshift(id);
emoji.sheet_x = emoji.sheet[0];
emoji.sheet_y = emoji.sheet[1];
delete emoji.sheet;
if (!emoji.text) emoji.text = '';
if (!emoji.added_in) emoji.added_in = 6;
emoji.added_in = emoji.added_in.toFixed(1);
emoji.search = buildSearch(emoji);
}
};
exports.uncompress = uncompress;