import anchorme from "anchorme";
import uEmojiParser from "universal-emoji-parser";
import twemoji from "twemoji";
import Config from "../../config";
const EmojiList = [
"笑脸",
"生病",
"破涕为笑",
"吐舌",
"脸红",
"恐惧",
"失望",
"无语",
"嘿哈",
"捂脸",
"奸笑",
"机智",
"皱眉",
"耶",
"鬼魂",
"合十",
"强壮",
"庆祝",
"礼物",
"红包",
"鸡",
"开心",
"大笑",
"热情",
"眨眼",
"色",
"接吻",
"亲吻",
"露齿笑",
"满意",
"戏弄",
"得意",
"汗",
"低落",
"呸",
"焦虑",
"担心",
"震惊",
"悔恨",
"眼泪",
"哭",
"晕",
"心烦",
"生气",
"睡觉",
"恶魔",
"外星人",
"心",
"心碎",
"丘比特",
"闪烁",
"星星",
"叹号",
"问号",
"睡着",
"水滴",
"音乐",
"火",
"便便",
"弱",
"拳头",
"胜利",
"上",
"下",
"右",
"左",
"第一",
"吻",
"热恋",
"男孩",
"女孩",
"女士",
"男士",
"天使",
"骷髅",
"红唇",
"太阳",
"下雨",
"多云",
"雪人",
"月亮",
"闪电",
"海浪",
"猫",
"小狗",
"老鼠",
"仓鼠",
"兔子",
"狗",
"青蛙",
"老虎",
"考拉",
"熊",
"猪",
"牛",
"野猪",
"猴子",
"马",
"蛇",
"鸽子",
"鸡",
"企鹅",
"毛虫",
"章鱼",
"鱼",
"鲸鱼",
"海豚",
"玫瑰",
"花",
"棕榈树",
"仙人掌",
"礼盒",
"南瓜灯",
"圣诞老人",
"圣诞树",
"礼物",
"铃",
"气球",
"CD",
"相机",
"录像机",
"电脑",
"电视",
"电话",
"解锁",
"锁",
"钥匙",
"成交",
"灯泡",
"邮箱",
"浴缸",
"钱",
"炸弹",
"手枪",
"药丸",
"橄榄球",
"篮球",
"足球",
"棒球",
"高尔夫",
"奖杯",
"入侵者",
"唱歌",
"吉他",
"比基尼",
"皇冠",
"雨伞",
"手提包",
"口红",
"戒指",
"钻石",
"咖啡",
"啤酒",
"干杯",
"鸡尾酒",
"汉堡",
"薯条",
"意面",
"寿司",
"面条",
"煎蛋",
"冰激凌",
"蛋糕",
"苹果",
"飞机",
"火箭",
"自行车",
"高铁",
"警告",
"旗",
"男人",
"女人",
"O",
"X",
"版权",
"注册商标",
"商标",
];
const QQFaceMap = {
微笑: "0",
撇嘴: "1",
色: "2",
发呆: "3",
得意: "4",
流泪: "5",
害羞: "6",
闭嘴: "7",
睡: "8",
大哭: "9",
尴尬: "10",
发怒: "11",
调皮: "12",
呲牙: "13",
惊讶: "14",
难过: "15",
酷: "16",
冷汗: "17",
抓狂: "18",
吐: "19",
偷笑: "20",
可爱: "21",
愉快: "21",
白眼: "22",
傲慢: "23",
饥饿: "24",
困: "25",
惊恐: "26",
流汗: "27",
憨笑: "28",
悠闲: "29",
大兵: "29",
奋斗: "30",
咒骂: "31",
疑问: "32",
嘘: "33",
晕: "34",
疯了: "35",
折磨: "35",
衰: "36",
骷髅: "37",
敲打: "38",
再见: "39",
擦汗: "40",
抠鼻: "41",
鼓掌: "42",
糗大了: "43",
坏笑: "44",
左哼哼: "45",
右哼哼: "46",
哈欠: "47",
鄙视: "48",
委屈: "49",
快哭了: "50",
阴险: "51",
亲亲: "52",
吓: "53",
可怜: "54",
菜刀: "55",
西瓜: "56",
啤酒: "57",
篮球: "58",
乒乓: "59",
咖啡: "60",
饭: "61",
猪头: "62",
玫瑰: "63",
凋谢: "64",
嘴唇: "65",
示爱: "65",
爱心: "66",
心碎: "67",
蛋糕: "68",
闪电: "69",
炸弹: "70",
刀: "71",
足球: "72",
瓢虫: "73",
便便: "74",
月亮: "75",
太阳: "76",
礼物: "77",
拥抱: "78",
强: "79",
弱: "80",
握手: "81",
胜利: "82",
抱拳: "83",
勾引: "84",
拳头: "85",
差劲: "86",
爱你: "87",
NO: "88",
OK: "89",
爱情: "90",
飞吻: "91",
跳跳: "92",
发抖: "93",
怄火: "94",
转圈: "95",
磕头: "96",
回头: "97",
跳绳: "98",
投降: "99",
激动: "100",
乱舞: "101",
献吻: "102",
左太极: "103",
右太极: "104",
嘿哈: "105",
捂脸: "106",
奸笑: "107",
机智: "108",
皱眉: "109",
耶: "110",
鸡: "111",
红包: "112",
Smile: "0",
Grimace: "1",
Drool: "2",
Scowl: "3",
Chill: "4",
CoolGuy: "4",
Sob: "5",
Shy: "6",
Shutup: "7",
Silent: "7",
Sleep: "8",
Cry: "9",
Awkward: "10",
Pout: "11",
Angry: "11",
Wink: "12",
Tongue: "12",
Grin: "13",
Surprised: "14",
Surprise: "14",
Frown: "15",
Cool: "16",
Ruthless: "16",
Tension: "17",
Blush: "17",
Scream: "18",
Crazy: "18",
Puke: "19",
Chuckle: "20",
Joyful: "21",
Slight: "22",
Smug: "23",
Hungry: "24",
Drowsy: "25",
Panic: "26",
Sweat: "27",
Laugh: "28",
Loafer: "29",
Commando: "29",
Strive: "30",
Determined: "30",
Scold: "31",
Doubt: "32",
Shocked: "32",
Shhh: "33",
Dizzy: "34",
Tormented: "35",
BadLuck: "36",
Toasted: "36",
Skull: "37",
Hammer: "38",
Wave: "39",
Relief: "40",
Speechless: "40",
DigNose: "41",
NosePick: "41",
Clap: "42",
Shame: "43",
Trick: "44",
"Bah! L": "45",
"Bah! R": "46",
Yawn: "47",
Lookdown: "48",
"Pooh-pooh": "48",
Wronged: "49",
Shrunken: "49",
Puling: "50",
TearingUp: "50",
Sly: "51",
Kiss: "52",
"Uh-oh": "53",
Wrath: "53",
Whimper: "54",
Cleaver: "55",
Melon: "56",
Watermelon: "56",
Beer: "57",
Basketball: "58",
PingPong: "59",
Coffee: "60",
Rice: "61",
Pig: "62",
Rose: "63",
Wilt: "64",
Lip: "65",
Lips: "65",
Heart: "66",
BrokenHeart: "67",
Cake: "68",
Lightning: "69",
Bomb: "70",
Dagger: "71",
Soccer: "72",
Ladybug: "73",
Poop: "74",
Moon: "75",
Sun: "76",
Gift: "77",
Hug: "78",
Strong: "79",
ThumbsUp: "79",
Weak: "80",
ThumbsDown: "80",
Shake: "81",
Victory: "82",
Peace: "82",
Admire: "83",
Fight: "83",
Salute: "83",
Beckon: "84",
Fist: "85",
Pinky: "86",
Love: "2",
RockOn: "87",
No: "88",
"Nuh-uh": "88",
InLove: "90",
Blowkiss: "91",
Waddle: "92",
Tremble: "93",
"Aaagh!": "94",
Twirl: "95",
Kotow: "96",
Lookback: "97",
Dramatic: "97",
Jump: "98",
JumpRope: "98",
"Give-in": "99",
Surrender: "99",
Hooray: "100",
HeyHey: "101",
Meditate: "101",
Smooch: "102",
"TaiJi L": "103",
"TaiChi L": "103",
"TaiJi R": "104",
"TaiChi R": "104",
Hey: "105",
Facepalm: "106",
Smirk: "107",
Smart: "108",
Concerned: "109",
"Yeah!": "110",
Chicken: "111",
Packet: "112",
發呆: "3",
流淚: "5",
閉嘴: "7",
尷尬: "10",
發怒: "11",
調皮: "12",
驚訝: "14",
難過: "15",
饑餓: "24",
累: "25",
驚恐: "26",
悠閑: "29",
奮鬥: "30",
咒罵: "31",
疑問: "32",
噓: "33",
暈: "34",
瘋了: "35",
骷髏頭: "37",
再見: "39",
摳鼻: "41",
羞辱: "43",
壞笑: "44",
鄙視: "48",
陰險: "51",
親親: "52",
嚇: "53",
可憐: "54",
籃球: "58",
飯: "61",
豬頭: "62",
枯萎: "64",
愛心: "66",
閃電: "69",
炸彈: "70",
甲蟲: "73",
太陽: "76",
禮物: "77",
擁抱: "78",
強: "79",
勝利: "82",
拳頭: "85",
差勁: "86",
愛你: "88",
愛情: "90",
飛吻: "91",
發抖: "93",
噴火: "94",
轉圈: "95",
磕頭: "96",
回頭: "97",
跳繩: "98",
激動: "100",
亂舞: "101",
獻吻: "102",
左太極: "103",
右太極: "104",
吼嘿: "105",
掩面: "106",
機智: "108",
皺眉: "109",
歐耶: "110",
雞: "111",
紅包: "112",
};
const emoji = [];
Object.keys(QQFaceMap)
.slice(0, 105)
.map((e) => {
var id = QQFaceMap[e];
emoji.push({
key: e,
value: QQFaceMap[e],
className: `qqemoji qqemoji${id}`,
});
});
function getEmojiClassName(name) {
name = name.substring(1, name.length - 1);
var keys = Object.keys(QQFaceMap);
var key = keys.find((e) => e === name);
if (key) {
let id = QQFaceMap[key];
let emojiCN = keys.find((e) => QQFaceMap[e] === id);
if (+id < 200) {
return `qqemoji qqemoji${id}`;
}
if (EmojiList.includes(emojiCN)) {
return `emoji emoji${id}`;
}
}
return false;
}
function parser(text) {
var decodeText = anchorme({
input: text,
options: {
attributes: {
target: "_blank",
},
},
});
// (text.match(/\[[\w\s\u4E00-\u9FCC\u3400-\u4DB5\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA1F\uFA21\uFA23\uFA24\uFA27-\uFA29\ud840-\ud868\udc00-\udfff\ud869[\udc00-\uded6\udf00-\udfff\ud86a-\ud86c\udc00-\udfff\ud86d[\udc00-\udf34\udf40-\udfff\ud86e\udc00-\udc1d]+\]/g) || []).map(e => {
// var className = getEmojiClassName(e);
//
// if (!className) {
// // Invalid emoji
// return;
// }
// text = decodeText = text.split(`${e}`).join(``);
// });
let emoji = twemoji.parse(decodeText);
emoji = emoji.replace(/src="https:\/\/twemoji\.maxcdn\.com\/v\/[0-9.]+\//g, 'src="' + Config.emojiBaseUrl());
return emoji;
}
function normalize(text = "") {
var matchs = text.match(/<\/span>/g) || [];
var decodeText = text;
try {
matchs.map((e) => {
// Decode utf16 to emoji
var emojiCode = e.match(/emoji([0-9a-fA-F]+)/)[1].substr(0, 5);
var emoji = String.fromCodePoint(parseInt(emojiCode, 16));
text = decodeText = text.split(e).join(emoji);
});
} catch (ex) {
console.error("Failed decode %s: %o", text, ex);
}
return decodeText;
}
export { emoji, parser, normalize };