510 lines
264 KiB
JavaScript
510 lines
264 KiB
JavaScript
|
/* jshint maxerr: 10000 */
|
||
|
/* jslint unused: true */
|
||
|
/* jshint shadow: true */
|
||
|
/* jshint -W075 */
|
||
|
(function(ns){
|
||
|
// this list must be ordered from largest length of the value array, index 0, to the shortest
|
||
|
ns.emojioneList = {":kiss_ww:":{"unicode":["1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","1f469-2764-1f48b-1f469"],"isCanonical": true},":couplekiss_ww:":{"unicode":["1f469-200d-2764-fe0f-200d-1f48b-200d-1f469","1f469-2764-1f48b-1f469"],"isCanonical": false},":kiss_mm:":{"unicode":["1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","1f468-2764-1f48b-1f468"],"isCanonical": true},":couplekiss_mm:":{"unicode":["1f468-200d-2764-fe0f-200d-1f48b-200d-1f468","1f468-2764-1f48b-1f468"],"isCanonical": false},":family_mmbb:":{"unicode":["1f468-200d-1f468-200d-1f466-200d-1f466","1f468-1f468-1f466-1f466"],"isCanonical": true},":family_mmgb:":{"unicode":["1f468-200d-1f468-200d-1f467-200d-1f466","1f468-1f468-1f467-1f466"],"isCanonical": true},":family_mmgg:":{"unicode":["1f468-200d-1f468-200d-1f467-200d-1f467","1f468-1f468-1f467-1f467"],"isCanonical": true},":family_mwbb:":{"unicode":["1f468-200d-1f469-200d-1f466-200d-1f466","1f468-1f469-1f466-1f466"],"isCanonical": true},":family_mwgb:":{"unicode":["1f468-200d-1f469-200d-1f467-200d-1f466","1f468-1f469-1f467-1f466"],"isCanonical": true},":family_mwgg:":{"unicode":["1f468-200d-1f469-200d-1f467-200d-1f467","1f468-1f469-1f467-1f467"],"isCanonical": true},":family_wwbb:":{"unicode":["1f469-200d-1f469-200d-1f466-200d-1f466","1f469-1f469-1f466-1f466"],"isCanonical": true},":family_wwgb:":{"unicode":["1f469-200d-1f469-200d-1f467-200d-1f466","1f469-1f469-1f467-1f466"],"isCanonical": true},":family_wwgg:":{"unicode":["1f469-200d-1f469-200d-1f467-200d-1f467","1f469-1f469-1f467-1f467"],"isCanonical": true},":couple_ww:":{"unicode":["1f469-200d-2764-fe0f-200d-1f469","1f469-2764-1f469"],"isCanonical": true},":couple_with_heart_ww:":{"unicode":["1f469-200d-2764-fe0f-200d-1f469","1f469-2764-1f469"],"isCanonical": false},":couple_mm:":{"unicode":["1f468-200d-2764-fe0f-200d-1f468","1f468-2764-1f468"],"isCanonical": true},":couple_with_heart_mm:":{"unicode":["1f468-200d-2764-fe0f-200d-1f468","1f468-2764-1f468"],"isCanonical": false},":family_mmb:":{"unicode":["1f468-200d-1f468-200d-1f466","1f468-1f468-1f466"],"isCanonical": true},":family_mmg:":{"unicode":["1f468-200d-1f468-200d-1f467","1f468-1f468-1f467"],"isCanonical": true},":family_mwg:":{"unicode":["1f468-200d-1f469-200d-1f467","1f468-1f469-1f467"],"isCanonical": true},":family_wwb:":{"unicode":["1f469-200d-1f469-200d-1f466","1f469-1f469-1f466"],"isCanonical": true},":family_wwg:":{"unicode":["1f469-200d-1f469-200d-1f467","1f469-1f469-1f467"],"isCanonical": true},":eye_in_speech_bubble:":{"unicode":["1f441-200d-1f5e8","1f441-1f5e8"],"isCanonical": true},":hash:":{"unicode":["0023-fe0f-20e3","0023-20e3"],"isCanonical": true},":zero:":{"unicode":["0030-fe0f-20e3","0030-20e3"],"isCanonical": true},":one:":{"unicode":["0031-fe0f-20e3","0031-20e3"],"isCanonical": true},":two:":{"unicode":["0032-fe0f-20e3","0032-20e3"],"isCanonical": true},":three:":{"unicode":["0033-fe0f-20e3","0033-20e3"],"isCanonical": true},":four:":{"unicode":["0034-fe0f-20e3","0034-20e3"],"isCanonical": true},":five:":{"unicode":["0035-fe0f-20e3","0035-20e3"],"isCanonical": true},":six:":{"unicode":["0036-fe0f-20e3","0036-20e3"],"isCanonical": true},":seven:":{"unicode":["0037-fe0f-20e3","0037-20e3"],"isCanonical": true},":eight:":{"unicode":["0038-fe0f-20e3","0038-20e3"],"isCanonical": true},":nine:":{"unicode":["0039-fe0f-20e3","0039-20e3"],"isCanonical": true},":asterisk:":{"unicode":["002a-fe0f-20e3","002a-20e3"],"isCanonical": true},":keycap_asterisk:":{"unicode":["002a-fe0f-20e3","002a-20e3"],"isCanonical": false},":handball_tone5:":{"unicode":["1f93e-1f3ff"],"isCanonical": true},":handball_tone4:":{"unicode":["1f93e-1f3fe"],"isCanonical": true},":handball_tone3:":{"unicode":["1f93e-1f3fd"],"isCanonical": true},":handball_tone2:":{"unicode":["1f93e-1f3fc"],"isCanonical": true},":handball_tone1:":{"unicode":["1f93e-1f3fb"],"isCanonical": true},":water_polo_tone5:":{"unicode":["1f93d-1f3ff"],"isCanonical": true},":water_polo_tone4:":{"unicode":["1f93d-1f3fe"],"isCanonical": true},":water_polo_tone3:":{"unicode":["1f93d-1f3fd"],"isCanonical": true},":water_polo_tone2:":{"unicode":
|
||
|
// ns.shortnames = Object.keys(ns.emojioneList).map(function(emoji) {
|
||
|
// return emoji.replace(/[+]/g, "\\$&");
|
||
|
// }).join('|');
|
||
|
var tmpShortNames = [],
|
||
|
emoji;
|
||
|
for (emoji in ns.emojioneList) {
|
||
|
if (!ns.emojioneList.hasOwnProperty(emoji)) continue;
|
||
|
tmpShortNames.push(emoji.replace(/[+]/g, "\\$&"));
|
||
|
}
|
||
|
ns.shortnames = tmpShortNames.join('|');
|
||
|
ns.asciiList = {
|
||
|
'<3':'2764',
|
||
|
'</3':'1f494',
|
||
|
':\')':'1f602',
|
||
|
':\'-)':'1f602',
|
||
|
':D':'1f603',
|
||
|
':-D':'1f603',
|
||
|
'=D':'1f603',
|
||
|
':)':'1f642',
|
||
|
':-)':'1f642',
|
||
|
'=]':'1f642',
|
||
|
'=)':'1f642',
|
||
|
':]':'1f642',
|
||
|
'\':)':'1f605',
|
||
|
'\':-)':'1f605',
|
||
|
'\'=)':'1f605',
|
||
|
'\':D':'1f605',
|
||
|
'\':-D':'1f605',
|
||
|
'\'=D':'1f605',
|
||
|
'>:)':'1f606',
|
||
|
'>;)':'1f606',
|
||
|
'>:-)':'1f606',
|
||
|
'>=)':'1f606',
|
||
|
';)':'1f609',
|
||
|
';-)':'1f609',
|
||
|
'*-)':'1f609',
|
||
|
'*)':'1f609',
|
||
|
';-]':'1f609',
|
||
|
';]':'1f609',
|
||
|
';D':'1f609',
|
||
|
';^)':'1f609',
|
||
|
'\':(':'1f613',
|
||
|
'\':-(':'1f613',
|
||
|
'\'=(':'1f613',
|
||
|
':*':'1f618',
|
||
|
':-*':'1f618',
|
||
|
'=*':'1f618',
|
||
|
':^*':'1f618',
|
||
|
'>:P':'1f61c',
|
||
|
'X-P':'1f61c',
|
||
|
'x-p':'1f61c',
|
||
|
'>:[':'1f61e',
|
||
|
':-(':'1f61e',
|
||
|
':(':'1f61e',
|
||
|
':-[':'1f61e',
|
||
|
':[':'1f61e',
|
||
|
'=(':'1f61e',
|
||
|
'>:(':'1f620',
|
||
|
'>:-(':'1f620',
|
||
|
':@':'1f620',
|
||
|
':\'(':'1f622',
|
||
|
':\'-(':'1f622',
|
||
|
';(':'1f622',
|
||
|
';-(':'1f622',
|
||
|
'>.<':'1f623',
|
||
|
'D:':'1f628',
|
||
|
':$':'1f633',
|
||
|
'=$':'1f633',
|
||
|
'#-)':'1f635',
|
||
|
'#)':'1f635',
|
||
|
'%-)':'1f635',
|
||
|
'%)':'1f635',
|
||
|
'X)':'1f635',
|
||
|
'X-)':'1f635',
|
||
|
'*\\0/*':'1f646',
|
||
|
'\\0/':'1f646',
|
||
|
'*\\O/*':'1f646',
|
||
|
'\\O/':'1f646',
|
||
|
'O:-)':'1f607',
|
||
|
'0:-3':'1f607',
|
||
|
'0:3':'1f607',
|
||
|
'0:-)':'1f607',
|
||
|
'0:)':'1f607',
|
||
|
'0;^)':'1f607',
|
||
|
'O:)':'1f607',
|
||
|
'O;-)':'1f607',
|
||
|
'O=)':'1f607',
|
||
|
'0;-)':'1f607',
|
||
|
'O:-3':'1f607',
|
||
|
'O:3':'1f607',
|
||
|
'B-)':'1f60e',
|
||
|
'B)':'1f60e',
|
||
|
'8)':'1f60e',
|
||
|
'8-)':'1f60e',
|
||
|
'B-D':'1f60e',
|
||
|
'8-D':'1f60e',
|
||
|
'-_-':'1f611',
|
||
|
'-__-':'1f611',
|
||
|
'-___-':'1f611',
|
||
|
'>:\\':'1f615',
|
||
|
'>:/':'1f615',
|
||
|
':-/':'1f615',
|
||
|
':-.':'1f615',
|
||
|
':/':'1f615',
|
||
|
':\\':'1f615',
|
||
|
'=/':'1f615',
|
||
|
'=\\':'1f615',
|
||
|
':L':'1f615',
|
||
|
'=L':'1f615',
|
||
|
':P':'1f61b',
|
||
|
':-P':'1f61b',
|
||
|
'=P':'1f61b',
|
||
|
':-p':'1f61b',
|
||
|
':p':'1f61b',
|
||
|
'=p':'1f61b',
|
||
|
':-Þ':'1f61b',
|
||
|
':Þ':'1f61b',
|
||
|
':þ':'1f61b',
|
||
|
':-þ':'1f61b',
|
||
|
':-b':'1f61b',
|
||
|
':b':'1f61b',
|
||
|
'd:':'1f61b',
|
||
|
':-O':'1f62e',
|
||
|
':O':'1f62e',
|
||
|
':-o':'1f62e',
|
||
|
':o':'1f62e',
|
||
|
'O_O':'1f62e',
|
||
|
'>:O':'1f62e',
|
||
|
':-X':'1f636',
|
||
|
':X':'1f636',
|
||
|
':-#':'1f636',
|
||
|
':#':'1f636',
|
||
|
'=X':'1f636',
|
||
|
'=x':'1f636',
|
||
|
':x':'1f636',
|
||
|
':-x':'1f636',
|
||
|
'=#':'1f636'
|
||
|
};
|
||
|
ns.asciiRegexp = '(\\<3|<3|\\<\\/3|<\\/3|\\:\'\\)|\\:\'\\-\\)|\\:D|\\:\\-D|\\=D|\\:\\)|\\:\\-\\)|\\=\\]|\\=\\)|\\:\\]|\'\\:\\)|\'\\:\\-\\)|\'\\=\\)|\'\\:D|\'\\:\\-D|\'\\=D|\\>\\:\\)|>\\:\\)|\\>;\\)|>;\\)|\\>\\:\\-\\)|>\\:\\-\\)|\\>\\=\\)|>\\=\\)|;\\)|;\\-\\)|\\*\\-\\)|\\*\\)|;\\-\\]|;\\]|;D|;\\^\\)|\'\\:\\(|\'\\:\\-\\(|\'\\=\\(|\\:\\*|\\:\\-\\*|\\=\\*|\\:\\^\\*|\\>\\:P|>\\:P|X\\-P|x\\-p|\\>\\:\\[|>\\:\\[|\\:\\-\\(|\\:\\(|\\:\\-\\[|\\:\\[|\\=\\(|\\>\\:\\(|>\\:\\(|\\>\\:\\-\\(|>\\:\\-\\(|\\:@|\\:\'\\(|\\:\'\\-\\(|;\\(|;\\-\\(|\\>\\.\\<|>\\.<|D\\:|\\:\\$|\\=\\$|#\\-\\)|#\\)|%\\-\\)|%\\)|X\\)|X\\-\\)|\\*\\\\0\\/\\*|\\\\0\\/|\\*\\\\O\\/\\*|\\\\O\\/|O\\:\\-\\)|0\\:\\-3|0\\:3|0\\:\\-\\)|0\\:\\)|0;\\^\\)|O\\:\\-\\)|O\\:\\)|O;\\-\\)|O\\=\\)|0;\\-\\)|O\\:\\-3|O\\:3|B\\-\\)|B\\)|8\\)|8\\-\\)|B\\-D|8\\-D|\\-_\\-|\\-__\\-|\\-___\\-|\\>\\:\\\\|>\\:\\\\|\\>\\:\\/|>\\:\\/|\\:\\-\\/|\\:\\-\\.|\\:\\/|\\:\\\\|\\=\\/|\\=\\\\|\\:L|\\=L|\\:P|\\:\\-P|\\=P|\\:\\-p|\\:p|\\=p|\\:\\-Þ|\\:\\-Þ|\\:Þ|\\:Þ|\\:þ|\\:þ|\\:\\-þ|\\:\\-þ|\\:\\-b|\\:b|d\\:|\\:\\-O|\\:O|\\:\\-o|\\:o|O_O|\\>\\:O|>\\:O|\\:\\-X|\\:X|\\:\\-#|\\:#|\\=X|\\=x|\\:x|\\:\\-x|\\=#)';
|
||
|
// javascript escapes here must be ordered from largest length to shortest
|
||
|
ns.unicodeRegexp = '(\\uD83D\\uDC69\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC8B\\u200D\\uD83D\\uDC69|\\uD83D\\uDC68\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC8B\\u200D\\uD83D\\uDC68|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC67|\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D\\uD83D\\uDC67|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC68\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC68|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC67|\\uD83D\\uDC68\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83D\\uDC69\\u200D\\u2764\\uFE0F\\u200D\\uD83D\\uDC69|\\uD83D\\uDC68\\u200D\\uD83D\\uDC68\\u200D\\uD83D\\uDC66|\\uD83D\\uDC41\\u200D\\uD83D\\uDDE8|\\uD83C\\uDDE6\\uD83C\\uDDE9|\\uD83C\\uDDE6\\uD83C\\uDDEA|\\uD83C\\uDDE6\\uD83C\\uDDEB|\\uD83C\\uDDE6\\uD83C\\uDDEC|\\uD83C\\uDDE6\\uD83C\\uDDEE|\\uD83C\\uDDE6\\uD83C\\uDDF1|\\uD83C\\uDDE6\\uD83C\\uDDF2|\\uD83C\\uDDE6\\uD83C\\uDDF4|\\uD83C\\uDDE6\\uD83C\\uDDF6|\\uD83C\\uDDE6\\uD83C\\uDDF7|\\uD83C\\uDDE6\\uD83C\\uDDF8|\\uD83E\\uDD18\\uD83C\\uDFFF|\\uD83E\\uDD18\\uD83C\\uDFFE|\\uD83E\\uDD18\\uD83C\\uDFFD|\\uD83E\\uDD18\\uD83C\\uDFFC|\\uD83E\\uDD18\\uD83C\\uDFFB|\\uD83D\\uDEC0\\uD83C\\uDFFF|\\uD83D\\uDEC0\\uD83C\\uDFFE|\\uD83D\\uDEC0\\uD83C\\uDFFD|\\uD83D\\uDEC0\\uD83C\\uDFFC|\\uD83D\\uDEC0\\uD83C\\uDFFB|\\uD83D\\uDEB6\\uD83C\\uDFFF|\\uD83D\\uDEB6\\uD83C\\uDFFE|\\uD83D\\uDEB6\\uD83C\\uDFFD|\\uD83D\\uDEB6\\uD83C\\uDFFC|\\uD83D\\uDEB6\\uD83C\\uDFFB|\\uD83D\\uDEB5\\uD83C\\uDFFF|\\uD83D\\uDEB5\\uD83C\\uDFFE|\\uD83D\\uDEB5\\uD83C\\uDFFD|\\uD83D\\uDEB5\\uD83C\\uDFFC|\\uD83D\\uDEB5\\uD83C\\uDFFB|\\uD83D\\uDEB4\\uD83C\\uDFFF|\\uD83D\\uDEB4\\uD83C\\uDFFE|\\uD83D\\uDEB4\\uD83C\\uDFFD|\\uD83D\\uDEB4\\uD83C\\uDFFC|\\uD83D\\uDEB4\\uD83C\\uDFFB|\\uD83D\\uDEA3\\uD83C\\uDFFF|\\uD83D\\uDEA3\\uD83C\\uDFFE|\\uD83D\\uDEA3\\uD83C\\uDFFD|\\uD83D\\uDEA3\\uD83C\\uDFFC|\\uD83D\\uDEA3\\uD83C\\uDFFB|\\uD83D\\uDE4F\\uD83C\\uDFFF|\\uD83D\\uDE4F\\uD83C\\uDFFE|\\uD83D\\uDE4F\\uD83C\\uDFFD|\\uD83D\\uDE4F\\uD83C\\uDFFC|\\uD83D\\uDE4F\\uD83C\\uDFFB|\\uD83D\\uDE4E\\uD83C\\uDFFF|\\uD83D\\uDE4E\\uD83C\\uDFFE|\\uD83D\\uDE4E\\uD83C\\uDFFD|\\uD83D\\uDE4E\\uD83C\\uDFFC|\\uD83D\\uDE4E\\uD83C\\uDFFB|\\uD83D\\uDE4D\\uD83C\\uDFFF|\\uD83D\\uDE4D\\uD83C\\uDFFE|\\uD83D\\uDE4D\\uD83C\\uDFFD|\\uD83D\\uDE4D\\uD83C\\uDFFC|\\uD83D\\uDE4D\\uD83C\\uDFFB|\\uD83D\\uDE4C\\uD83C\\uDFFF|\\uD83D\\uDE4C\\uD83C\\uDFFE|\\uD83D\\uDE4C\\uD83C\\uDFFD|\\uD83D\\uDE4C\\uD83C\\uDFFC|\\uD83D\\uDE4C\\uD83C\\uDFFB|\\uD83D\\uDE4B\\uD83C\\uDFFF|\\uD83D\\uDE4B\\uD83C\\uDFFE|\\uD83D\\uDE4B\\uD83C\\uDFFD|\\uD83D\\uDE4B\\uD83C\\uDFFC|\\uD83D\\uDE4B\\uD83C\\uDFFB|\\uD83D\\uDE47\\uD83C\\uDFFF|\\uD83D\\uDE47\\uD83C\\uDFFE|\\uD83D\\uDE47\\uD83C\\uDFFD|\\uD83D\\uDE47\\uD83C\\uDFFC|\\uD83D\\uDE47\\uD83C\\uDFFB|\\uD83D\\uDE46\\uD83C\\uDFFF|\\uD83D\\uDE46\\uD83C\\uDFFE|\\uD83D\\uDE46\\uD83C\\uDFFD|\\uD83D\\uDE46\\uD83C\\uDFFC|\\uD83D\\uDE46\\uD83C\\uDFFB|\\uD83D\\uDE45\\uD83C\\uDFFF|\\uD83D\\uDE45\\uD83C\\uDFFE|\\uD83D\\uDE45\\uD83C\\uDFFD|\\uD83D\\uDE45\\uD83C\\uDFFC|\\uD83D\\uDE45\\uD83C\\uDFFB|\\uD83D\\uDD96\\uD83C\\uDFFF|\\uD83D\\uDD96\\uD83C\\uDFFE|\\uD83D\\uDD96\\uD83C\\uDFFD|\\uD83D\\uDD96\\uD83C\\uDFFC|\\uD83D\\uDD96\\uD83C\\uDFFB|\\uD83D\\uDD95\\uD83C\\uDFFF|\\uD83D\\uDD95\\uD83C\\uDFFE|\\uD83D\\uDD95\\uD83C\\uDFFD|\\uD83D\\uDD95\\uD83C\\uDFFC|\\uD83D\\uDD95\\uD83C\\uDFFB|\\uD83D\\uDD90\\uD83C\\uDFFF|\\uD83D\\uDD90\\uD83C\\uDFFE|\\uD83D\\uDD90\\uD83C\\uDFFD|\\uD83D\\uDD90\\uD83C\\uDFFC|\\uD83D\\uDD90\\uD83C\
|
||
|
ns.jsEscapeMap = {"\uD83D\uDC69\u2764\uD83D\uDC8B\uD83D\uDC69":"1f469-2764-1f48b-1f469","\uD83D\uDC68\u2764\uD83D\uDC8B\uD83D\uDC68":"1f468-2764-1f48b-1f468","\uD83D\uDC68\uD83D\uDC68\uD83D\uDC66\uD83D\uDC66":"1f468-1f468-1f466-1f466","\uD83D\uDC68\uD83D\uDC68\uD83D\uDC67\uD83D\uDC66":"1f468-1f468-1f467-1f466","\uD83D\uDC68\uD83D\uDC68\uD83D\uDC67\uD83D\uDC67":"1f468-1f468-1f467-1f467","\uD83D\uDC68\uD83D\uDC69\uD83D\uDC66\uD83D\uDC66":"1f468-1f469-1f466-1f466","\uD83D\uDC68\uD83D\uDC69\uD83D\uDC67\uD83D\uDC66":"1f468-1f469-1f467-1f466","\uD83D\uDC68\uD83D\uDC69\uD83D\uDC67\uD83D\uDC67":"1f468-1f469-1f467-1f467","\uD83D\uDC69\uD83D\uDC69\uD83D\uDC66\uD83D\uDC66":"1f469-1f469-1f466-1f466","\uD83D\uDC69\uD83D\uDC69\uD83D\uDC67\uD83D\uDC66":"1f469-1f469-1f467-1f466","\uD83D\uDC69\uD83D\uDC69\uD83D\uDC67\uD83D\uDC67":"1f469-1f469-1f467-1f467","\uD83D\uDC69\u2764\uD83D\uDC69":"1f469-2764-1f469","\uD83D\uDC68\u2764\uD83D\uDC68":"1f468-2764-1f468","\uD83D\uDC68\uD83D\uDC68\uD83D\uDC66":"1f468-1f468-1f466","\uD83D\uDC68\uD83D\uDC68\uD83D\uDC67":"1f468-1f468-1f467","\uD83D\uDC68\uD83D\uDC69\uD83D\uDC67":"1f468-1f469-1f467","\uD83D\uDC69\uD83D\uDC69\uD83D\uDC66":"1f469-1f469-1f466","\uD83D\uDC69\uD83D\uDC69\uD83D\uDC67":"1f469-1f469-1f467","\uD83D\uDC41\uD83D\uDDE8":"1f441-1f5e8","#\u20E3":"0023-20e3","0\u20E3":"0030-20e3","1\u20E3":"0031-20e3","2\u20E3":"0032-20e3","3\u20E3":"0033-20e3","4\u20E3":"0034-20e3","5\u20E3":"0035-20e3","6\u20E3":"0036-20e3","7\u20E3":"0037-20e3","8\u20E3":"0038-20e3","9\u20E3":"0039-20e3","*\u20E3":"002a-20e3","\uD83E\uDD3E\uD83C\uDFFF":"1f93e-1f3ff","\uD83E\uDD3E\uD83C\uDFFE":"1f93e-1f3fe","\uD83E\uDD3E\uD83C\uDFFD":"1f93e-1f3fd","\uD83E\uDD3E\uD83C\uDFFC":"1f93e-1f3fc","\uD83E\uDD3E\uD83C\uDFFB":"1f93e-1f3fb","\uD83E\uDD3D\uD83C\uDFFF":"1f93d-1f3ff","\uD83E\uDD3D\uD83C\uDFFE":"1f93d-1f3fe","\uD83E\uDD3D\uD83C\uDFFD":"1f93d-1f3fd","\uD83E\uDD3D\uD83C\uDFFC":"1f93d-1f3fc","\uD83E\uDD3D\uD83C\uDFFB":"1f93d-1f3fb","\uD83E\uDD3C\uD83C\uDFFF":"1f93c-1f3ff","\uD83E\uDD3C\uD83C\uDFFE":"1f93c-1f3fe","\uD83E\uDD3C\uD83C\uDFFD":"1f93c-1f3fd","\uD83E\uDD3C\uD83C\uDFFC":"1f93c-1f3fc","\uD83E\uDD3C\uD83C\uDFFB":"1f93c-1f3fb","\uD83E\uDD39\uD83C\uDFFF":"1f939-1f3ff","\uD83E\uDD39\uD83C\uDFFE":"1f939-1f3fe","\uD83E\uDD39\uD83C\uDFFD":"1f939-1f3fd","\uD83E\uDD39\uD83C\uDFFC":"1f939-1f3fc","\uD83E\uDD39\uD83C\uDFFB":"1f939-1f3fb","\uD83E\uDD38\uD83C\uDFFF":"1f938-1f3ff","\uD83E\uDD38\uD83C\uDFFE":"1f938-1f3fe","\uD83E\uDD38\uD83C\uDFFD":"1f938-1f3fd","\uD83E\uDD38\uD83C\uDFFC":"1f938-1f3fc","\uD83E\uDD38\uD83C\uDFFB":"1f938-1f3fb","\uD83E\uDD37\uD83C\uDFFF":"1f937-1f3ff","\uD83E\uDD37\uD83C\uDFFE":"1f937-1f3fe","\uD83E\uDD37\uD83C\uDFFD":"1f937-1f3fd","\uD83E\uDD37\uD83C\uDFFC":"1f937-1f3fc","\uD83E\uDD37\uD83C\uDFFB":"1f937-1f3fb","\uD83E\uDD36\uD83C\uDFFF":"1f936-1f3ff","\uD83E\uDD36\uD83C\uDFFE":"1f936-1f3fe","\uD83E\uDD36\uD83C\uDFFD":"1f936-1f3fd","\uD83E\uDD36\uD83C\uDFFC":"1f936-1f3fc","\uD83E\uDD36\uD83C\uDFFB":"1f936-1f3fb","\uD83E\uDD35\uD83C\uDFFF":"1f935-1f3ff","\uD83E\uDD35\uD83C\uDFFE":"1f935-1f3fe","\uD83E\uDD35\uD83C\uDFFD":"1f935-1f3fd","\uD83E\uDD35\uD83C\uDFFC":"1f935-1f3fc","\uD83E\uDD35\uD83C\uDFFB":"1f935-1f3fb","\uD83E\uDD34\uD83C\uDFFF":"1f934-1f3ff","\uD83E\uDD34\uD83C\uDFFE":"1f934-1f3fe","\uD83E\uDD34\uD83C\uDFFD":"1f934-1f3fd","\uD83E\uDD34\uD83C\uDFFC":"1f934-1f3fc","\uD83E\uDD34\uD83C\uDFFB":"1f934-1f3fb","\uD83E\uDD33\uD83C\uDFFF":"1f933-1f3ff","\uD83E\uDD33\uD83C\uDFFE":"1f933-1f3fe","\uD83E\uDD33\uD83C\uDFFD":"1f933-1f3fd","\uD83E\uDD33\uD83C\uDFFC":"1f933-1f3fc","\uD83E\uDD33\uD83C\uDFFB":"1f933-1f3fb","\uD83E\uDD30\uD83C\uDFFF":"1f930-1f3ff","\uD83E\uDD30\uD83C\uDFFE":"1f930-1f3fe","\uD83E\uDD30\uD83C\uDFFD":"1f930-1f3fd","\uD83E\uDD30\uD83C\uDFFC":"1f930-1f3fc","\uD83E\uDD30\uD83C\uDFFB":"1f930-1f3fb","\uD83E\uDD26\uD83C\uDFFF":"1f926-1f3ff","\uD83E\uDD26\uD83C\uDFFE":"1f926-1f3fe","\uD83E\uDD26\uD83C\uDFFD":"1f926-1f3fd","\uD83E\uDD26\uD83C\uDFFC":"1f926-1f3fc","\uD83E\uDD26\uD83C\uDFFB":"1f926-1f3fb","\uD83E\uDD1E\uD83C\uDFFF":"1f91e-1f3ff","\uD83E\uDD1E\uD83C\uDFFE":"1f91e-1
|
||
|
ns.imagePathPNG = '//cdn.jsdelivr.net/emojione/assets/png/';
|
||
|
ns.imagePathSVG = '//cdn.jsdelivr.net/emojione/assets/svg/';
|
||
|
ns.imagePathSVGSprites = './../assets/sprites/emojione.sprites.svg';
|
||
|
ns.imageType = 'png'; // or svg
|
||
|
ns.sprites = false; // if this is true then sprite markup will be used (if SVG image type is set then you must include the SVG sprite file locally)
|
||
|
ns.unicodeAlt = true; // use the unicode char as the alt attribute (makes copy and pasting the resulting text better)
|
||
|
ns.ascii = false; // change to true to convert ascii smileys
|
||
|
ns.cacheBustParam = '?v=2.2.6'; // you can [optionally] modify this to force browsers to refresh their cache. it will be appended to the send of the filenames
|
||
|
|
||
|
ns.regShortNames = new RegExp("<object[^>]*>.*?<\/object>|<span[^>]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|("+ns.shortnames+")", "gi");
|
||
|
ns.regAscii = new RegExp("<object[^>]*>.*?<\/object>|<span[^>]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|((\\s|^)"+ns.asciiRegexp+"(?=\\s|$|[!,.?]))", "g");
|
||
|
ns.regUnicode = new RegExp("<object[^>]*>.*?<\/object>|<span[^>]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|("+ns.unicodeRegexp+")", "gi");
|
||
|
|
||
|
ns.toImage = function(str) {
|
||
|
str = ns.unicodeToImage(str);
|
||
|
str = ns.shortnameToImage(str);
|
||
|
return str;
|
||
|
};
|
||
|
|
||
|
// Uses toShort to transform all unicode into a standard shortname
|
||
|
// then transforms the shortname into unicode
|
||
|
// This is done for standardization when converting several unicode types
|
||
|
ns.unifyUnicode = function(str) {
|
||
|
str = ns.toShort(str);
|
||
|
str = ns.shortnameToUnicode(str);
|
||
|
return str;
|
||
|
};
|
||
|
|
||
|
// Replace shortnames (:wink:) with Ascii equivalents ( ;^) )
|
||
|
// Useful for systems that dont support unicode nor images
|
||
|
ns.shortnameToAscii = function(str) {
|
||
|
var unicode,
|
||
|
// something to keep in mind here is that array flip will destroy
|
||
|
// half of the ascii text "emojis" because the unicode numbers are duplicated
|
||
|
// this is ok for what it's being used for
|
||
|
unicodeToAscii = ns.objectFlip(ns.asciiList);
|
||
|
|
||
|
str = str.replace(ns.regShortNames, function(shortname) {
|
||
|
if( (typeof shortname === 'undefined') || (shortname === '') || (!(shortname in ns.emojioneList)) ) {
|
||
|
// if the shortname doesnt exist just return the entire match
|
||
|
return shortname;
|
||
|
}
|
||
|
else {
|
||
|
unicode = ns.emojioneList[shortname].unicode[ns.emojioneList[shortname].unicode.length-1];
|
||
|
if(typeof unicodeToAscii[unicode] !== 'undefined') {
|
||
|
return unicodeToAscii[unicode];
|
||
|
} else {
|
||
|
return shortname;
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
return str;
|
||
|
};
|
||
|
|
||
|
// will output unicode from shortname
|
||
|
// useful for sending emojis back to mobile devices
|
||
|
ns.shortnameToUnicode = function(str) {
|
||
|
// replace regular shortnames first
|
||
|
var unicode;
|
||
|
str = str.replace(ns.regShortNames, function(shortname) {
|
||
|
if( (typeof shortname === 'undefined') || (shortname === '') || (!(shortname in ns.emojioneList)) ) {
|
||
|
// if the shortname doesnt exist just return the entire match
|
||
|
return shortname;
|
||
|
}
|
||
|
unicode = ns.emojioneList[shortname].unicode[0].toUpperCase();
|
||
|
return ns.convert(unicode);
|
||
|
});
|
||
|
|
||
|
// if ascii smileys are turned on, then we'll replace them!
|
||
|
if (ns.ascii) {
|
||
|
|
||
|
str = str.replace(ns.regAscii, function(entire, m1, m2, m3) {
|
||
|
if( (typeof m3 === 'undefined') || (m3 === '') || (!(ns.unescapeHTML(m3) in ns.asciiList)) ) {
|
||
|
// if the shortname doesnt exist just return the entire match
|
||
|
return entire;
|
||
|
}
|
||
|
|
||
|
m3 = ns.unescapeHTML(m3);
|
||
|
unicode = ns.asciiList[m3].toUpperCase();
|
||
|
return m2+ns.convert(unicode);
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return str;
|
||
|
};
|
||
|
|
||
|
ns.shortnameToImage = function(str) {
|
||
|
// replace regular shortnames first
|
||
|
var replaceWith,unicode,alt;
|
||
|
str = str.replace(ns.regShortNames, function(shortname) {
|
||
|
if( (typeof shortname === 'undefined') || (shortname === '') || (!(shortname in ns.emojioneList)) ) {
|
||
|
// if the shortname doesnt exist just return the entire match
|
||
|
return shortname;
|
||
|
}
|
||
|
else {
|
||
|
unicode = ns.emojioneList[shortname].unicode[ns.emojioneList[shortname].unicode.length-1];
|
||
|
|
||
|
// depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname
|
||
|
alt = (ns.unicodeAlt) ? ns.convert(unicode.toUpperCase()) : shortname;
|
||
|
|
||
|
if(ns.imageType === 'png') {
|
||
|
if(ns.sprites) {
|
||
|
replaceWith = '<span class="emojione emojione-'+unicode+'" title="'+shortname+'">'+alt+'</span>';
|
||
|
}
|
||
|
else {
|
||
|
replaceWith = '<img class="emojione" alt="'+alt+'" src="'+ns.imagePathPNG+unicode+'.png'+ns.cacheBustParam+'"/>';
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
// svg
|
||
|
if(ns.sprites) {
|
||
|
replaceWith = '<svg class="emojione"><description>'+alt+'</description><use xlink:href="'+ns.imagePathSVGSprites+'#emoji-'+unicode+'"></use></svg>';
|
||
|
}
|
||
|
else {
|
||
|
replaceWith = '<object class="emojione" data="'+ns.imagePathSVG+unicode+'.svg'+ns.cacheBustParam+'" type="image/svg+xml" standby="'+alt+'">'+alt+'</object>';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return replaceWith;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
// if ascii smileys are turned on, then we'll replace them!
|
||
|
if (ns.ascii) {
|
||
|
|
||
|
str = str.replace(ns.regAscii, function(entire, m1, m2, m3) {
|
||
|
if( (typeof m3 === 'undefined') || (m3 === '') || (!(ns.unescapeHTML(m3) in ns.asciiList)) ) {
|
||
|
// if the shortname doesnt exist just return the entire match
|
||
|
return entire;
|
||
|
}
|
||
|
|
||
|
m3 = ns.unescapeHTML(m3);
|
||
|
unicode = ns.asciiList[m3];
|
||
|
|
||
|
// depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname
|
||
|
alt = (ns.unicodeAlt) ? ns.convert(unicode.toUpperCase()) : ns.escapeHTML(m3);
|
||
|
|
||
|
if(ns.imageType === 'png') {
|
||
|
if(ns.sprites) {
|
||
|
replaceWith = m2+'<span class="emojione emojione-'+unicode+'" title="'+ns.escapeHTML(m3)+'">'+alt+'</span>';
|
||
|
}
|
||
|
else {
|
||
|
replaceWith = m2+'<img class="emojione" alt="'+alt+'" src="'+ns.imagePathPNG+unicode+'.png'+ns.cacheBustParam+'"/>';
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
// svg
|
||
|
if(ns.sprites) {
|
||
|
replaceWith = '<svg class="emojione"><description>'+alt+'</description><use xlink:href="'+ns.imagePathSVGSprites+'#emoji-'+unicode+'"></use></svg>';
|
||
|
}
|
||
|
else {
|
||
|
replaceWith = m2+'<object class="emojione" data="'+ns.imagePathSVG+unicode+'.svg'+ns.cacheBustParam+'" type="image/svg+xml" standby="'+alt+'">'+alt+'</object>';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return replaceWith;
|
||
|
});
|
||
|
}
|
||
|
|
||
|
return str;
|
||
|
};
|
||
|
|
||
|
ns.unicodeToImage = function(str) {
|
||
|
|
||
|
var replaceWith,unicode,alt;
|
||
|
|
||
|
if((!ns.unicodeAlt) || (ns.sprites)) {
|
||
|
// if we are using the shortname as the alt tag then we need a reversed array to map unicode code point to shortnames
|
||
|
var mappedUnicode = ns.mapUnicodeToShort();
|
||
|
}
|
||
|
|
||
|
str = str.replace(ns.regUnicode, function(unicodeChar) {
|
||
|
if( (typeof unicodeChar === 'undefined') || (unicodeChar === '') || (!(unicodeChar in ns.jsEscapeMap)) ) {
|
||
|
// if the unicodeChar doesnt exist just return the entire match
|
||
|
return unicodeChar;
|
||
|
}
|
||
|
else {
|
||
|
// get the unicode codepoint from the actual char
|
||
|
unicode = ns.jsEscapeMap[unicodeChar];
|
||
|
|
||
|
// depending on the settings, we'll either add the native unicode as the alt tag, otherwise the shortname
|
||
|
alt = (ns.unicodeAlt) ? ns.convert(unicode.toUpperCase()) : mappedUnicode[unicode];
|
||
|
|
||
|
if(ns.imageType === 'png') {
|
||
|
if(ns.sprites) {
|
||
|
replaceWith = '<span class="emojione emojione-'+unicode+'" title="'+mappedUnicode[unicode]+'">'+alt+'</span>';
|
||
|
}
|
||
|
else {
|
||
|
replaceWith = '<img class="emojione" alt="'+alt+'" src="'+ns.imagePathPNG+unicode+'.png'+ns.cacheBustParam+'"/>';
|
||
|
}
|
||
|
}
|
||
|
else {
|
||
|
// svg
|
||
|
if(ns.sprites) {
|
||
|
replaceWith = '<svg class="emojione"><description>'+alt+'</description><use xlink:href="'+ns.imagePathSVGSprites+'#emoji-'+unicode+'"></use></svg>';
|
||
|
}
|
||
|
else {
|
||
|
replaceWith = '<img class="emojione" alt="'+alt+'" src="'+ns.imagePathSVG+unicode+'.svg'+ns.cacheBustParam+'"/>';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return replaceWith;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
return str;
|
||
|
};
|
||
|
|
||
|
// this is really just unicodeToShortname() but I opted for the shorthand name to match toImage()
|
||
|
ns.toShort = function(str) {
|
||
|
var find = ns.getUnicodeReplacementRegEx(),
|
||
|
replacementList = ns.mapUnicodeCharactersToShort();
|
||
|
return ns.replaceAll(str, find,replacementList);
|
||
|
};
|
||
|
|
||
|
// for converting unicode code points and code pairs to their respective characters
|
||
|
ns.convert = function(unicode) {
|
||
|
if(unicode.indexOf("-") > -1) {
|
||
|
var parts = [];
|
||
|
var s = unicode.split('-');
|
||
|
for(var i = 0; i < s.length; i++) {
|
||
|
var part = parseInt(s[i], 16);
|
||
|
if (part >= 0x10000 && part <= 0x10FFFF) {
|
||
|
var hi = Math.floor((part - 0x10000) / 0x400) + 0xD800;
|
||
|
var lo = ((part - 0x10000) % 0x400) + 0xDC00;
|
||
|
part = (String.fromCharCode(hi) + String.fromCharCode(lo));
|
||
|
}
|
||
|
else {
|
||
|
part = String.fromCharCode(part);
|
||
|
}
|
||
|
parts.push(part);
|
||
|
}
|
||
|
return parts.join('');
|
||
|
}
|
||
|
else {
|
||
|
var s = parseInt(unicode, 16);
|
||
|
if (s >= 0x10000 && s <= 0x10FFFF) {
|
||
|
var hi = Math.floor((s - 0x10000) / 0x400) + 0xD800;
|
||
|
var lo = ((s - 0x10000) % 0x400) + 0xDC00;
|
||
|
return (String.fromCharCode(hi) + String.fromCharCode(lo));
|
||
|
}
|
||
|
else {
|
||
|
return String.fromCharCode(s);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
ns.escapeHTML = function (string) {
|
||
|
var escaped = {
|
||
|
'&' : '&',
|
||
|
'<' : '<',
|
||
|
'>' : '>',
|
||
|
'"' : '"',
|
||
|
'\'': '''
|
||
|
};
|
||
|
|
||
|
return string.replace(/[&<>"']/g, function (match) {
|
||
|
return escaped[match];
|
||
|
});
|
||
|
};
|
||
|
ns.unescapeHTML = function (string) {
|
||
|
var unescaped = {
|
||
|
'&' : '&',
|
||
|
'&' : '&',
|
||
|
'&' : '&',
|
||
|
'<' : '<',
|
||
|
'<' : '<',
|
||
|
'<' : '<',
|
||
|
'>' : '>',
|
||
|
'>' : '>',
|
||
|
'>' : '>',
|
||
|
'"' : '"',
|
||
|
'"' : '"',
|
||
|
'"' : '"',
|
||
|
''' : '\'',
|
||
|
''' : '\'',
|
||
|
''' : '\''
|
||
|
};
|
||
|
|
||
|
return string.replace(/&(?:amp|#38|#x26|lt|#60|#x3C|gt|#62|#x3E|apos|#39|#x27|quot|#34|#x22);/ig, function (match) {
|
||
|
return unescaped[match];
|
||
|
});
|
||
|
};
|
||
|
|
||
|
ns.mapEmojioneList = function (addToMapStorage) {
|
||
|
for (var shortname in ns.emojioneList) {
|
||
|
if (!ns.emojioneList.hasOwnProperty(shortname)) { continue; }
|
||
|
for (var i = 0, len = ns.emojioneList[shortname].unicode.length; i < len; i++) {
|
||
|
var unicode = ns.emojioneList[shortname].unicode[i];
|
||
|
addToMapStorage(unicode, shortname);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
ns.mapUnicodeToShort = function() {
|
||
|
if (!ns.memMapShortToUnicode) {
|
||
|
ns.memMapShortToUnicode = {};
|
||
|
ns.mapEmojioneList(function (unicode, shortname) {
|
||
|
ns.memMapShortToUnicode[unicode] = shortname;
|
||
|
});
|
||
|
}
|
||
|
return ns.memMapShortToUnicode;
|
||
|
};
|
||
|
|
||
|
ns.memoizeReplacement = function() {
|
||
|
if (!ns.unicodeReplacementRegEx || !ns.memMapShortToUnicodeCharacters) {
|
||
|
var unicodeList = [];
|
||
|
ns.memMapShortToUnicodeCharacters = {};
|
||
|
ns.mapEmojioneList(function (unicode, shortname) {
|
||
|
var emojiCharacter = ns.convert(unicode);
|
||
|
if(ns.emojioneList[shortname].isCanonical) {
|
||
|
ns.memMapShortToUnicodeCharacters[emojiCharacter] = shortname;
|
||
|
}
|
||
|
unicodeList.push(emojiCharacter);
|
||
|
});
|
||
|
ns.unicodeReplacementRegEx = unicodeList.join('|');
|
||
|
}
|
||
|
};
|
||
|
|
||
|
ns.mapUnicodeCharactersToShort = function() {
|
||
|
ns.memoizeReplacement();
|
||
|
return ns.memMapShortToUnicodeCharacters;
|
||
|
};
|
||
|
|
||
|
ns.getUnicodeReplacementRegEx = function() {
|
||
|
ns.memoizeReplacement();
|
||
|
return ns.unicodeReplacementRegEx;
|
||
|
};
|
||
|
|
||
|
//reverse an object
|
||
|
ns.objectFlip = function (obj) {
|
||
|
var key, tmp_obj = {};
|
||
|
|
||
|
for (key in obj) {
|
||
|
if (obj.hasOwnProperty(key)) {
|
||
|
tmp_obj[obj[key]] = key;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return tmp_obj;
|
||
|
};
|
||
|
|
||
|
ns.escapeRegExp = function(string) {
|
||
|
return string.replace(/[-[\]{}()*+?.,;:&\\^$#\s]/g, "\\$&");
|
||
|
};
|
||
|
|
||
|
ns.replaceAll = function(string, find, replacementList) {
|
||
|
var escapedFind = ns.escapeRegExp(find);
|
||
|
var search = new RegExp("<object[^>]*>.*?<\/object>|<span[^>]*>.*?<\/span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|("+escapedFind+")", "gi");
|
||
|
|
||
|
// callback prevents replacing anything inside of these common html tags as well as between an <object></object> tag
|
||
|
var replace = function(entire, m1) {
|
||
|
return ((typeof m1 === 'undefined') || (m1 === '')) ? entire : replacementList[m1];
|
||
|
};
|
||
|
|
||
|
return string.replace(search,replace);
|
||
|
};
|
||
|
|
||
|
}(this.emojione = this.emojione || {}));
|
||
|
if(typeof module === "object") module.exports = this.emojione;
|