78 lines
3.1 KiB
JavaScript
78 lines
3.1 KiB
JavaScript
"use strict";
|
|
const common_vendor = require("../../../../common/vendor.js");
|
|
const TUIKit_components_TUIChat_emojiConfig_customEmoji = require("./custom-emoji.js");
|
|
const TUIKit_components_TUIChat_emojiConfig_defaultEmoji = require("./default-emoji.js");
|
|
const TUIKit_components_TUIChat_emojiConfig_locales_zh_cn = require("./locales/zh_cn.js");
|
|
const TUIKit_constant = require("../../../constant.js");
|
|
const TUIKit_utils_env = require("../../../utils/env.js");
|
|
const BASIC_EMOJI_URL = TUIKit_components_TUIChat_emojiConfig_defaultEmoji.DEFAULT_BASIC_EMOJI_URL;
|
|
const BASIC_EMOJI_URL_MAPPING = TUIKit_components_TUIChat_emojiConfig_defaultEmoji.DEFAULT_BASIC_EMOJI_URL_MAPPING;
|
|
const EMOJI_GROUP_LIST = [
|
|
{
|
|
emojiGroupID: 0,
|
|
type: TUIKit_constant.EMOJI_TYPE.BASIC,
|
|
url: BASIC_EMOJI_URL,
|
|
list: Object.keys(BASIC_EMOJI_URL_MAPPING)
|
|
},
|
|
...TUIKit_components_TUIChat_emojiConfig_defaultEmoji.BIG_EMOJI_GROUP_LIST,
|
|
...TUIKit_components_TUIChat_emojiConfig_customEmoji.CUSTOM_BIG_EMOJI_GROUP_LIST
|
|
];
|
|
const convertKeyToEmojiName = (key) => {
|
|
return TUIKit_utils_env.isWeChat ? TUIKit_components_TUIChat_emojiConfig_locales_zh_cn.Emoji[key] : common_vendor.Wt.t(`Emoji.${key}`);
|
|
};
|
|
const transformTextWithKeysToEmojiNames = (text) => {
|
|
if (!text) {
|
|
return "";
|
|
}
|
|
const reg = /(\[.+?\])/g;
|
|
let txt = text;
|
|
if (reg.test(text)) {
|
|
txt = text.replace(reg, (match) => BASIC_EMOJI_URL_MAPPING[match] ? convertKeyToEmojiName(match) : match);
|
|
}
|
|
return txt;
|
|
};
|
|
const transformTextWithEmojiNamesToKeys = (text) => {
|
|
if (!text) {
|
|
return "";
|
|
}
|
|
const reg = /(\[.+?\])/g;
|
|
let txt = text;
|
|
if (reg.test(text)) {
|
|
txt = text.replace(reg, (match) => TUIKit_components_TUIChat_emojiConfig_defaultEmoji.BASIC_EMOJI_NAME_TO_KEY_MAPPING[match] || match);
|
|
}
|
|
return txt;
|
|
};
|
|
const parseTextToRenderArray = (text) => {
|
|
const emojiRegex = /\[([^\]]+)\]/g;
|
|
const result = [];
|
|
let match;
|
|
let lastIndex = 0;
|
|
while ((match = emojiRegex.exec(text)) !== null) {
|
|
const startIndex = match.index;
|
|
const endIndex = emojiRegex.lastIndex;
|
|
const emojiKey = match[0];
|
|
if (startIndex > lastIndex) {
|
|
result.push({ type: "text", content: text.substring(lastIndex, startIndex) });
|
|
}
|
|
const emojiUrl = BASIC_EMOJI_URL + BASIC_EMOJI_URL_MAPPING[emojiKey];
|
|
if (emojiUrl) {
|
|
result.push({ type: "image", content: emojiUrl, emojiKey });
|
|
} else {
|
|
result.push({ type: "text", content: emojiKey });
|
|
}
|
|
lastIndex = endIndex;
|
|
emojiRegex.lastIndex = lastIndex;
|
|
}
|
|
if (lastIndex < text.length) {
|
|
result.push({ type: "text", content: text.substring(lastIndex) });
|
|
}
|
|
return result;
|
|
};
|
|
exports.BASIC_EMOJI_URL_MAPPING = BASIC_EMOJI_URL_MAPPING;
|
|
exports.EMOJI_GROUP_LIST = EMOJI_GROUP_LIST;
|
|
exports.convertKeyToEmojiName = convertKeyToEmojiName;
|
|
exports.parseTextToRenderArray = parseTextToRenderArray;
|
|
exports.transformTextWithEmojiNamesToKeys = transformTextWithEmojiNamesToKeys;
|
|
exports.transformTextWithKeysToEmojiNames = transformTextWithKeysToEmojiNames;
|
|
//# sourceMappingURL=../../../../../.sourcemap/mp-weixin/TUIKit/components/TUIChat/emoji-config/index.js.map
|