@jayfong/x-text-render 2.61.3 → 2.62.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/_cjs/code_render.css +2 -2
- package/lib/_cjs/code_render.js +1 -1
- package/lib/_cjs/douyin_emoji_render.css +19 -19
- package/lib/_cjs/douyin_emoji_render.js +20 -5
- package/lib/_cjs/text_parser.js +100 -0
- package/lib/_cjs/unified_emoji_render.css +2 -2
- package/lib/_cjs/unified_emoji_render.js +19 -6
- package/lib/_cjs/weixin_emoji_render.css +2 -2
- package/lib/_cjs/weixin_emoji_render.js +16 -4
- package/lib/code_render.css +2 -2
- package/lib/code_render.js +1 -1
- package/lib/douyin_emoji_render.css +19 -19
- package/lib/douyin_emoji_render.d.ts +6 -0
- package/lib/douyin_emoji_render.js +20 -5
- package/lib/text_parser.d.ts +60 -0
- package/lib/text_parser.js +96 -0
- package/lib/unified_emoji_render.css +2 -2
- package/lib/unified_emoji_render.d.ts +6 -0
- package/lib/unified_emoji_render.js +19 -5
- package/lib/weixin_emoji_render.css +2 -2
- package/lib/weixin_emoji_render.d.ts +6 -0
- package/lib/weixin_emoji_render.js +16 -4
- package/package.json +9 -4
package/lib/_cjs/code_render.css
CHANGED
package/lib/_cjs/code_render.js
CHANGED
|
@@ -6,7 +6,7 @@ require("./code_render.css");
|
|
|
6
6
|
var _vtils = require("vtils");
|
|
7
7
|
var _html_render = require("./html_render");
|
|
8
8
|
// @ts-ignore
|
|
9
|
-
var _ = {"code":"
|
|
9
|
+
var _ = {"code":"xtr_15084","content":"xtr_16953"};
|
|
10
10
|
var codeRegExp = /```[^\r\n]*[\r\n]([\s\S]+?)```/g;
|
|
11
11
|
var CodeRender = exports.CodeRender = /*#__PURE__*/function () {
|
|
12
12
|
function CodeRender() {}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.
|
|
1
|
+
.xtr_15527 {
|
|
2
2
|
display: inline-block;
|
|
3
3
|
font-size: 1.2em;
|
|
4
4
|
width: 1em;
|
|
@@ -6,76 +6,76 @@
|
|
|
6
6
|
vertical-align: -0.2em;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
.
|
|
9
|
+
.xtr_17349 {
|
|
10
10
|
background-size: 100% 100%;
|
|
11
11
|
background-repeat: no-repeat;
|
|
12
12
|
background-position: center;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
.
|
|
15
|
+
.xtr_14823 {
|
|
16
16
|
width: 1.0781em;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
.
|
|
19
|
+
.xtr_10729 {
|
|
20
20
|
width: 1.0313em;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
.
|
|
23
|
+
.xtr_2405 {
|
|
24
24
|
width: 1.0625em;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
.
|
|
27
|
+
.xtr_16652 {
|
|
28
28
|
width: 1.1563em;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
.
|
|
31
|
+
.xtr_16538 {
|
|
32
32
|
width: 1.0469em;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
.
|
|
35
|
+
.xtr_3933 {
|
|
36
36
|
width: 1.1406em;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
.
|
|
39
|
+
.xtr_17630 {
|
|
40
40
|
width: 1.0781em;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
.
|
|
43
|
+
.xtr_18752 {
|
|
44
44
|
width: 1.1406em;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
.
|
|
47
|
+
.xtr_11061 {
|
|
48
48
|
width: 1.0781em;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
.
|
|
51
|
+
.xtr_578 {
|
|
52
52
|
width: 1.1406em;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
.
|
|
55
|
+
.xtr_1171 {
|
|
56
56
|
width: 1.375em;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
.
|
|
59
|
+
.xtr_8799 {
|
|
60
60
|
width: 1.0625em;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
.
|
|
63
|
+
.xtr_13682 {
|
|
64
64
|
width: 1.1406em;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
.
|
|
67
|
+
.xtr_17316 {
|
|
68
68
|
width: 1.1406em;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
.
|
|
71
|
+
.xtr_15734 {
|
|
72
72
|
width: 1.0625em;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
.
|
|
75
|
+
.xtr_9971 {
|
|
76
76
|
width: 1.125em;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
.
|
|
79
|
+
.xtr_11560 {
|
|
80
80
|
width: 1.0469em;
|
|
81
81
|
}
|
|
@@ -5,7 +5,7 @@ exports.DouyinEmojiRender = void 0;
|
|
|
5
5
|
require("./douyin_emoji_render.css");
|
|
6
6
|
var _html_render = require("./html_render");
|
|
7
7
|
// @ts-ignore
|
|
8
|
-
var _ = {"emoji":"
|
|
8
|
+
var _ = {"emoji":"xtr_15527","background":"xtr_17349","_互粉":"xtr_14823","_再见":"xtr_10729","_吐血":"xtr_2405","_听歌":"xtr_16652","_嘿哈":"xtr_16538","_大哭":"xtr_3933","_强":"xtr_17630","_我想静静":"xtr_18752","_擦汗":"xtr_11061","_机智":"xtr_578","_求抱抱":"xtr_1171","_灵机一动":"xtr_8799","_熊吉":"xtr_13682","_笑哭":"xtr_17316","_紫薇别走":"xtr_15734","_耶":"xtr_9971","_飞吻":"xtr_11560"};
|
|
9
9
|
// douyinEmojiAllList
|
|
10
10
|
// biome-ignore format:
|
|
11
11
|
var douyinEmojiAllList = ["6", "666", "18禁", "OK", "V5", "candy", "emo", "iloveyou", "okk", "yyds", "一起加油", "不失礼貌的微笑", "不看", "二哈", "互粉", "做鬼脸", "偷笑", "元宝", "再见", "冷漠", "凋谢", "减一", "凝视", "击掌", "加一", "加好友", "加鸡腿", "勾引", "去污粉", "发", "发呆", "发怒", "可怜", "右边", "吃瓜群众", "吐", "吐彩虹", "吐舌", "吐血", "听歌", "呆无辜", "呲牙", "咒骂", "咖啡", "哈欠", "啤酒", "嘘", "嘴唇", "嘿哈", "囧", "困", "圣诞帽", "圣诞树", "坏笑", "大哭", "大笑", "大金牙", "太阳", "奋斗", "奸笑", "如花", "委屈", "害羞", "小黄鸭", "小鼓掌", "尬笑", "屎", "左上", "左边", "巧克力", "干杯", "干饭人", "平安果", "年兽兔", "开心兔", "弱", "强", "强壮", "得意", "微笑", "微笑袋鼠", "心碎", "必胜", "快哭了", "思考", "恐惧", "悠闲", "情书", "惊喜", "惊恐", "惊讶", "愉快", "感谢", "憨笑", "我太难了", "我想静静", "我酸了", "戒指", "手套", "扎心", "打call", "打脸", "抓狂", "抠鼻", "抱抱", "抱抱你", "抱拳", "招财兔", "拥抱", "拳头", "捂脸", "握手", "握爪", "摸头", "撇嘴", "撒花", "擦汗", "敲打", "斜眼", "无语", "晕", "暗中观察", "月亮", "机智", "来看我", "栓Q", "棒棒糖", "比心", "气球", "求抱抱", "汤圆", "泣不成声", "泪奔", "流泪", "灯笼", "灵机一动", "炸弹", "烟花", "熊吉", "爱心", "猪头", "玫瑰", "球鞋", "疑问", "白眼", "皱眉", "看", "石化", "碰拳", "礼物", "福", "笑哭", "粽子", "糖葫芦", "紫薇别走", "红包", "红脸", "纸飞机", "给力", "给跪了", "绝", "绝望的凝视", "绿帽子", "翻白眼", "耶", "胜利", "胡瓜", "舔屏", "色", "菜狗", "蕉绿", "虎头", "蛋糕", "衰", "裂开", "西瓜", "调皮", "赞", "足球", "送心", "鄙视", "酷拽", "钱", "锦鲤", "闭嘴", "阴险", "难过", "雪人", "雪花", "震惊", "鞭炮", "飞吻", "饺子", "黑脸", "鼓掌", "不是吧", "动动脑子", "叹气", "好开心", "展开说说", "投降", "敢怒不敢言", "求求了", "真的会谢", "眼含热泪", "蜜蜂狗", "表面呲牙", "表面微笑", "躺平", "达咩", "鞠躬", "kisskiss", "一头乱麻", "不你不想", "九转大肠", "亚运鼓掌", "他急了", "你不大行", "噢买尬", "宕机", "手花", "敲木鱼", "脸疼", "苦涩", "还得是我", "逞强落泪", "金牌"];
|
|
@@ -256,13 +256,28 @@ var DouyinEmojiRender = exports.DouyinEmojiRender = /*#__PURE__*/function () {
|
|
|
256
256
|
function DouyinEmojiRender() {}
|
|
257
257
|
DouyinEmojiRender.render = function render(text, options) {
|
|
258
258
|
return text.replace(douyinEmojiRegExp, function (__, v) {
|
|
259
|
-
var
|
|
259
|
+
var _DouyinEmojiRender$ge = DouyinEmojiRender.getInfo(v),
|
|
260
|
+
imgUrl = _DouyinEmojiRender$ge.imgUrl,
|
|
261
|
+
imgClass = _DouyinEmojiRender$ge.imgClass,
|
|
262
|
+
imgBackgroundClass = _DouyinEmojiRender$ge.imgBackgroundClass;
|
|
260
263
|
var alt = "[" + v + "]";
|
|
261
|
-
|
|
262
|
-
return _html_render.HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + url + "')\" class=\"" + baseClass + " " + _.background + "\" alt=\"" + alt + "\"></span>" : "<img src=\"" + url + "\" class=\"" + baseClass + "\" alt=\"" + alt + "\" />", options);
|
|
264
|
+
return _html_render.HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + imgUrl + "')\" class=\"" + imgClass + " " + imgBackgroundClass + "\" alt=\"" + alt + "\"></span>" : "<img src=\"" + imgUrl + "\" class=\"" + imgClass + "\" alt=\"" + alt + "\" />", options);
|
|
263
265
|
});
|
|
264
266
|
};
|
|
265
267
|
return DouyinEmojiRender;
|
|
266
268
|
}();
|
|
269
|
+
DouyinEmojiRender.regExp = douyinEmojiRegExp;
|
|
267
270
|
DouyinEmojiRender.allEmojiList = douyinEmojiAllList;
|
|
268
|
-
DouyinEmojiRender.latestEmojiList = douyinEmojiLatestList;
|
|
271
|
+
DouyinEmojiRender.latestEmojiList = douyinEmojiLatestList;
|
|
272
|
+
DouyinEmojiRender.getInfo = function (emoji) {
|
|
273
|
+
if (emoji[0] === '[' && emoji[emoji.length - 1] === ']') {
|
|
274
|
+
emoji = emoji.slice(1, emoji.length - 1);
|
|
275
|
+
}
|
|
276
|
+
var imageUrl = "" + douyinEmojiBaseUrl + douyinEmojiUrlMap[emoji] + ".png";
|
|
277
|
+
var imgClass = "" + _.emoji + (_["_" + emoji] ? " " + _["_" + emoji] : '');
|
|
278
|
+
return {
|
|
279
|
+
imgUrl: imageUrl,
|
|
280
|
+
imgClass: imgClass,
|
|
281
|
+
imgBackgroundClass: _.background
|
|
282
|
+
};
|
|
283
|
+
};
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
exports.__esModule = true;
|
|
4
|
+
exports.TextParserNodeType = exports.TextParser = void 0;
|
|
5
|
+
var _simpleTextParser = require("simple-text-parser");
|
|
6
|
+
var _douyin_emoji_render = require("./douyin_emoji_render");
|
|
7
|
+
var _unified_emoji_render = require("./unified_emoji_render");
|
|
8
|
+
var _weixin_emoji_render = require("./weixin_emoji_render");
|
|
9
|
+
var TextParserNodeType = exports.TextParserNodeType = /*#__PURE__*/function (TextParserNodeType) {
|
|
10
|
+
TextParserNodeType[TextParserNodeType["PARAGRAPH"] = 1] = "PARAGRAPH";
|
|
11
|
+
TextParserNodeType[TextParserNodeType["PLAIN_TEXT"] = 2] = "PLAIN_TEXT";
|
|
12
|
+
TextParserNodeType[TextParserNodeType["WEB_LINK"] = 4] = "WEB_LINK";
|
|
13
|
+
TextParserNodeType[TextParserNodeType["LINE_BREAK"] = 8] = "LINE_BREAK";
|
|
14
|
+
TextParserNodeType[TextParserNodeType["WEIXIN_EMOJI"] = 16] = "WEIXIN_EMOJI";
|
|
15
|
+
TextParserNodeType[TextParserNodeType["UNIFIED_EMOJI"] = 32] = "UNIFIED_EMOJI";
|
|
16
|
+
TextParserNodeType[TextParserNodeType["DOUYIN_EMOJI"] = 64] = "DOUYIN_EMOJI";
|
|
17
|
+
TextParserNodeType[TextParserNodeType["MINI_PROGRAM_SHORT_LINK"] = 128] = "MINI_PROGRAM_SHORT_LINK";
|
|
18
|
+
return TextParserNodeType;
|
|
19
|
+
}({});
|
|
20
|
+
var TextParser = exports.TextParser = function TextParser(options) {
|
|
21
|
+
var _this = this;
|
|
22
|
+
this.options = options;
|
|
23
|
+
this.parser = void 0;
|
|
24
|
+
this.parse = function (text) {
|
|
25
|
+
var paragraphs = [];
|
|
26
|
+
var paragraph = [];
|
|
27
|
+
_this.parser.toTree(text).forEach(function (item) {
|
|
28
|
+
var nodeType = item.type === 'text' ? TextParserNodeType.PLAIN_TEXT : item.type === 'url' ? TextParserNodeType.WEB_LINK : item.type;
|
|
29
|
+
if (nodeType & TextParserNodeType.LINE_BREAK) {
|
|
30
|
+
if (paragraph.length > 0) {
|
|
31
|
+
paragraphs.push({
|
|
32
|
+
type: TextParserNodeType.PARAGRAPH,
|
|
33
|
+
nodes: paragraph
|
|
34
|
+
});
|
|
35
|
+
paragraph = [];
|
|
36
|
+
}
|
|
37
|
+
} else {
|
|
38
|
+
var node = {
|
|
39
|
+
type: nodeType,
|
|
40
|
+
content: item.text,
|
|
41
|
+
info: item.info
|
|
42
|
+
};
|
|
43
|
+
paragraph.push(node);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
if (paragraph.length > 0) {
|
|
47
|
+
paragraphs.push({
|
|
48
|
+
type: TextParserNodeType.PARAGRAPH,
|
|
49
|
+
nodes: paragraph
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
return paragraphs;
|
|
53
|
+
};
|
|
54
|
+
var parser = new _simpleTextParser.Parser();
|
|
55
|
+
if (this.options.webLink) {
|
|
56
|
+
parser.addPreset('url');
|
|
57
|
+
}
|
|
58
|
+
parser.addRule(/\r?\n/g, function (lineBreak) {
|
|
59
|
+
return {
|
|
60
|
+
type: TextParserNodeType.LINE_BREAK,
|
|
61
|
+
text: lineBreak
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
if (this.options.weixinEmoji) {
|
|
65
|
+
parser.addRule(_weixin_emoji_render.WeixinEmojiRender.regExp, function (weixinEmoji) {
|
|
66
|
+
return {
|
|
67
|
+
type: TextParserNodeType.WEIXIN_EMOJI,
|
|
68
|
+
text: weixinEmoji,
|
|
69
|
+
info: _this.options.weixinEmojiInfo ? _weixin_emoji_render.WeixinEmojiRender.getInfo(weixinEmoji) : undefined
|
|
70
|
+
};
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
if (this.options.unifiedEmoji) {
|
|
74
|
+
parser.addRule(_unified_emoji_render.UnifiedEmojiRender.regExp, function (unifiedEmoji) {
|
|
75
|
+
return {
|
|
76
|
+
type: TextParserNodeType.UNIFIED_EMOJI,
|
|
77
|
+
text: unifiedEmoji,
|
|
78
|
+
info: _this.options.unifiedEmojiInfo ? _unified_emoji_render.UnifiedEmojiRender.getInfo(unifiedEmoji) : undefined
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (this.options.douyinEmoji) {
|
|
83
|
+
parser.addRule(_douyin_emoji_render.DouyinEmojiRender.regExp, function (douyinEmoji) {
|
|
84
|
+
return {
|
|
85
|
+
type: TextParserNodeType.DOUYIN_EMOJI,
|
|
86
|
+
text: douyinEmoji,
|
|
87
|
+
info: _this.options.douyinEmojiInfo ? _douyin_emoji_render.DouyinEmojiRender.getInfo(douyinEmoji) : undefined
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
if (this.options.miniProgramShortLink) {
|
|
92
|
+
parser.addRule(/#小程序:\/\/[^\/]+\/\w+/g, function (miniProgramShortLink) {
|
|
93
|
+
return {
|
|
94
|
+
type: TextParserNodeType.MINI_PROGRAM_SHORT_LINK,
|
|
95
|
+
text: miniProgramShortLink
|
|
96
|
+
};
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
this.parser = parser;
|
|
100
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.
|
|
1
|
+
.xtr_15444 {
|
|
2
2
|
display: inline-block;
|
|
3
3
|
font-size: 1.2em;
|
|
4
4
|
width: 1em;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
vertical-align: -0.2em;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
.
|
|
9
|
+
.xtr_17493 {
|
|
10
10
|
background-size: 100% 100%;
|
|
11
11
|
background-repeat: no-repeat;
|
|
12
12
|
background-position: center;
|
|
@@ -6,8 +6,8 @@ require("./unified_emoji_render.css");
|
|
|
6
6
|
var _vtils = require("vtils");
|
|
7
7
|
var _regexp = require("vtils/regexp");
|
|
8
8
|
var _html_render = require("./html_render");
|
|
9
|
-
// @ts-ignore
|
|
10
|
-
var _ = {"unifiedEmoji":"
|
|
9
|
+
var _UnifiedEmojiRender; // @ts-ignore
|
|
10
|
+
var _ = {"unifiedEmoji":"xtr_15444","background":"xtr_17493"};
|
|
11
11
|
var unifiedEmojiRegExp = _regexp.emojiRegExpBuilder.build({
|
|
12
12
|
global: true
|
|
13
13
|
});
|
|
@@ -92,12 +92,25 @@ var UnifiedEmojiRender = exports.UnifiedEmojiRender = /*#__PURE__*/function () {
|
|
|
92
92
|
return unifiedEmojiKeywordMap[v];
|
|
93
93
|
});
|
|
94
94
|
return text.replace(unifiedEmojiRegExp, function (v) {
|
|
95
|
-
var
|
|
96
|
-
|
|
95
|
+
var _UnifiedEmojiRender$g = UnifiedEmojiRender.getInfo(v),
|
|
96
|
+
imgUrl = _UnifiedEmojiRender$g.imgUrl,
|
|
97
|
+
imgClass = _UnifiedEmojiRender$g.imgClass,
|
|
98
|
+
imgBackgroundClass = _UnifiedEmojiRender$g.imgBackgroundClass;
|
|
99
|
+
if (imgUrl === v) {
|
|
97
100
|
return v;
|
|
98
101
|
}
|
|
99
|
-
return _html_render.HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" +
|
|
102
|
+
return _html_render.HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + imgUrl + "')\" class=\"" + imgClass + " " + imgBackgroundClass + "\" alt=\"" + v + "\"></span>" : "<img src=\"" + imgUrl + "\" class=\"" + imgClass + "\" alt=\"" + v + "\" />", options);
|
|
100
103
|
});
|
|
101
104
|
};
|
|
102
105
|
return UnifiedEmojiRender;
|
|
103
|
-
}();
|
|
106
|
+
}();
|
|
107
|
+
_UnifiedEmojiRender = UnifiedEmojiRender;
|
|
108
|
+
UnifiedEmojiRender.regExp = unifiedEmojiRegExp;
|
|
109
|
+
UnifiedEmojiRender.getInfo = function (emoji) {
|
|
110
|
+
var imageUrl = _UnifiedEmojiRender.getEmojiImageUrl(emoji);
|
|
111
|
+
return {
|
|
112
|
+
imgUrl: imageUrl,
|
|
113
|
+
imgClass: _.unifiedEmoji,
|
|
114
|
+
imgBackgroundClass: _.background
|
|
115
|
+
};
|
|
116
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.
|
|
1
|
+
.xtr_14602 {
|
|
2
2
|
display: inline-block;
|
|
3
3
|
font-size: 1.2em;
|
|
4
4
|
width: 1em;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
vertical-align: -0.2em;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
.
|
|
9
|
+
.xtr_17550 {
|
|
10
10
|
background-size: 100% 100%;
|
|
11
11
|
background-repeat: no-repeat;
|
|
12
12
|
background-position: center;
|
|
@@ -6,7 +6,7 @@ require("./weixin_emoji_render.css");
|
|
|
6
6
|
var _vtils = require("vtils");
|
|
7
7
|
var _html_render = require("./html_render");
|
|
8
8
|
// @ts-ignore
|
|
9
|
-
var _ = {"weixinEmoji":"
|
|
9
|
+
var _ = {"weixinEmoji":"xtr_14602","background":"xtr_17550"};
|
|
10
10
|
var weixinEmojiBaseUrl = "https://wxpublic-1251448646.file.myqcloud.com/public/common/files/";
|
|
11
11
|
|
|
12
12
|
// weixinEmojiUrlMap
|
|
@@ -329,9 +329,21 @@ var WeixinEmojiRender = exports.WeixinEmojiRender = /*#__PURE__*/function () {
|
|
|
329
329
|
function WeixinEmojiRender() {}
|
|
330
330
|
WeixinEmojiRender.render = function render(text, options) {
|
|
331
331
|
return text.replace(weixinEmojiRegExp, function (__, v) {
|
|
332
|
-
var
|
|
333
|
-
|
|
332
|
+
var _WeixinEmojiRender$ge = WeixinEmojiRender.getInfo(v),
|
|
333
|
+
imgUrl = _WeixinEmojiRender$ge.imgUrl,
|
|
334
|
+
imgClass = _WeixinEmojiRender$ge.imgClass,
|
|
335
|
+
imgBackgroundClass = _WeixinEmojiRender$ge.imgBackgroundClass;
|
|
336
|
+
return _html_render.HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + imgUrl + "')\" class=\"" + imgClass + " " + imgBackgroundClass + "\" alt=\"" + v + "\"></span>" : "<img src=\"" + imgUrl + "\" class=\"" + imgClass + "\" alt=\"" + v + "\" />", options);
|
|
334
337
|
});
|
|
335
338
|
};
|
|
336
339
|
return WeixinEmojiRender;
|
|
337
|
-
}();
|
|
340
|
+
}();
|
|
341
|
+
WeixinEmojiRender.regExp = weixinEmojiRegExp;
|
|
342
|
+
WeixinEmojiRender.getInfo = function (emoji) {
|
|
343
|
+
var imageUrl = "" + weixinEmojiBaseUrl + weixinEmojiMap2[emoji] + ".png";
|
|
344
|
+
return {
|
|
345
|
+
imgUrl: imageUrl,
|
|
346
|
+
imgClass: _.weixinEmoji,
|
|
347
|
+
imgBackgroundClass: _.background
|
|
348
|
+
};
|
|
349
|
+
};
|
package/lib/code_render.css
CHANGED
package/lib/code_render.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @ts-ignore
|
|
2
2
|
import "./code_render.css";
|
|
3
|
-
var _ = {"code":"
|
|
3
|
+
var _ = {"code":"xtr_15084","content":"xtr_16953"};
|
|
4
4
|
import { escape } from 'vtils';
|
|
5
5
|
import { HTMLRender } from "./html_render";
|
|
6
6
|
var codeRegExp = /```[^\r\n]*[\r\n]([\s\S]+?)```/g;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.
|
|
1
|
+
.xtr_15527 {
|
|
2
2
|
display: inline-block;
|
|
3
3
|
font-size: 1.2em;
|
|
4
4
|
width: 1em;
|
|
@@ -6,76 +6,76 @@
|
|
|
6
6
|
vertical-align: -0.2em;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
.
|
|
9
|
+
.xtr_17349 {
|
|
10
10
|
background-size: 100% 100%;
|
|
11
11
|
background-repeat: no-repeat;
|
|
12
12
|
background-position: center;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
.
|
|
15
|
+
.xtr_14823 {
|
|
16
16
|
width: 1.0781em;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
.
|
|
19
|
+
.xtr_10729 {
|
|
20
20
|
width: 1.0313em;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
-
.
|
|
23
|
+
.xtr_2405 {
|
|
24
24
|
width: 1.0625em;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
.
|
|
27
|
+
.xtr_16652 {
|
|
28
28
|
width: 1.1563em;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
.
|
|
31
|
+
.xtr_16538 {
|
|
32
32
|
width: 1.0469em;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
.
|
|
35
|
+
.xtr_3933 {
|
|
36
36
|
width: 1.1406em;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
.
|
|
39
|
+
.xtr_17630 {
|
|
40
40
|
width: 1.0781em;
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
.
|
|
43
|
+
.xtr_18752 {
|
|
44
44
|
width: 1.1406em;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
.
|
|
47
|
+
.xtr_11061 {
|
|
48
48
|
width: 1.0781em;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
.
|
|
51
|
+
.xtr_578 {
|
|
52
52
|
width: 1.1406em;
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
.
|
|
55
|
+
.xtr_1171 {
|
|
56
56
|
width: 1.375em;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
.
|
|
59
|
+
.xtr_8799 {
|
|
60
60
|
width: 1.0625em;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
.
|
|
63
|
+
.xtr_13682 {
|
|
64
64
|
width: 1.1406em;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
-
.
|
|
67
|
+
.xtr_17316 {
|
|
68
68
|
width: 1.1406em;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
.
|
|
71
|
+
.xtr_15734 {
|
|
72
72
|
width: 1.0625em;
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
.
|
|
75
|
+
.xtr_9971 {
|
|
76
76
|
width: 1.125em;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
.
|
|
79
|
+
.xtr_11560 {
|
|
80
80
|
width: 1.0469em;
|
|
81
81
|
}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { TextRenderOptions } from './text_render';
|
|
2
2
|
export declare class DouyinEmojiRender {
|
|
3
|
+
static regExp: RegExp;
|
|
3
4
|
static allEmojiList: ("6" | "666" | "18禁" | "OK" | "V5" | "candy" | "emo" | "iloveyou" | "okk" | "yyds" | "一起加油" | "不失礼貌的微笑" | "不看" | "二哈" | "互粉" | "做鬼脸" | "偷笑" | "元宝" | "再见" | "冷漠" | "凋谢" | "减一" | "凝视" | "击掌" | "加一" | "加好友" | "加鸡腿" | "勾引" | "去污粉" | "发" | "发呆" | "发怒" | "可怜" | "右边" | "吃瓜群众" | "吐" | "吐彩虹" | "吐舌" | "吐血" | "听歌" | "呆无辜" | "呲牙" | "咒骂" | "咖啡" | "哈欠" | "啤酒" | "嘘" | "嘴唇" | "嘿哈" | "囧" | "困" | "圣诞帽" | "圣诞树" | "坏笑" | "大哭" | "大笑" | "大金牙" | "太阳" | "奋斗" | "奸笑" | "如花" | "委屈" | "害羞" | "小黄鸭" | "小鼓掌" | "尬笑" | "屎" | "左上" | "左边" | "巧克力" | "干杯" | "干饭人" | "平安果" | "年兽兔" | "开心兔" | "弱" | "强" | "强壮" | "得意" | "微笑" | "微笑袋鼠" | "心碎" | "必胜" | "快哭了" | "思考" | "恐惧" | "悠闲" | "情书" | "惊喜" | "惊恐" | "惊讶" | "愉快" | "感谢" | "憨笑" | "我太难了" | "我想静静" | "我酸了" | "戒指" | "手套" | "扎心" | "打call" | "打脸" | "抓狂" | "抠鼻" | "抱抱" | "抱抱你" | "抱拳" | "招财兔" | "拥抱" | "拳头" | "捂脸" | "握手" | "握爪" | "摸头" | "撇嘴" | "撒花" | "擦汗" | "敲打" | "斜眼" | "无语" | "晕" | "暗中观察" | "月亮" | "机智" | "来看我" | "栓Q" | "棒棒糖" | "比心" | "气球" | "求抱抱" | "汤圆" | "泣不成声" | "泪奔" | "流泪" | "灯笼" | "灵机一动" | "炸弹" | "烟花" | "熊吉" | "爱心" | "猪头" | "玫瑰" | "球鞋" | "疑问" | "白眼" | "皱眉" | "看" | "石化" | "碰拳" | "礼物" | "福" | "笑哭" | "粽子" | "糖葫芦" | "紫薇别走" | "红包" | "红脸" | "纸飞机" | "给力" | "给跪了" | "绝" | "绝望的凝视" | "绿帽子" | "翻白眼" | "耶" | "胜利" | "胡瓜" | "舔屏" | "色" | "菜狗" | "蕉绿" | "虎头" | "蛋糕" | "衰" | "裂开" | "西瓜" | "调皮" | "赞" | "足球" | "送心" | "鄙视" | "酷拽" | "钱" | "锦鲤" | "闭嘴" | "阴险" | "难过" | "雪人" | "雪花" | "震惊" | "鞭炮" | "飞吻" | "饺子" | "黑脸" | "鼓掌" | "不是吧" | "动动脑子" | "叹气" | "好开心" | "展开说说" | "投降" | "敢怒不敢言" | "求求了" | "真的会谢" | "眼含热泪" | "蜜蜂狗" | "表面呲牙" | "表面微笑" | "躺平" | "达咩" | "鞠躬" | "kisskiss" | "一头乱麻" | "不你不想" | "九转大肠" | "亚运鼓掌" | "他急了" | "你不大行" | "噢买尬" | "宕机" | "手花" | "敲木鱼" | "脸疼" | "苦涩" | "还得是我" | "逞强落泪" | "金牌")[];
|
|
4
5
|
static latestEmojiList: ("6" | "666" | "18禁" | "OK" | "V5" | "candy" | "emo" | "iloveyou" | "okk" | "yyds" | "一起加油" | "不失礼貌的微笑" | "不看" | "二哈" | "互粉" | "做鬼脸" | "偷笑" | "元宝" | "再见" | "冷漠" | "凋谢" | "减一" | "凝视" | "击掌" | "加一" | "加好友" | "加鸡腿" | "勾引" | "去污粉" | "发" | "发呆" | "发怒" | "可怜" | "右边" | "吃瓜群众" | "吐" | "吐彩虹" | "吐舌" | "吐血" | "听歌" | "呆无辜" | "呲牙" | "咒骂" | "咖啡" | "哈欠" | "啤酒" | "嘘" | "嘴唇" | "嘿哈" | "囧" | "困" | "圣诞帽" | "圣诞树" | "坏笑" | "大哭" | "大笑" | "大金牙" | "太阳" | "奋斗" | "奸笑" | "如花" | "委屈" | "害羞" | "小黄鸭" | "小鼓掌" | "尬笑" | "屎" | "左上" | "左边" | "巧克力" | "干杯" | "干饭人" | "平安果" | "年兽兔" | "开心兔" | "弱" | "强" | "强壮" | "得意" | "微笑" | "微笑袋鼠" | "心碎" | "必胜" | "快哭了" | "思考" | "恐惧" | "悠闲" | "情书" | "惊喜" | "惊恐" | "惊讶" | "愉快" | "感谢" | "憨笑" | "我太难了" | "我想静静" | "我酸了" | "戒指" | "扎心" | "打call" | "打脸" | "抓狂" | "抠鼻" | "抱抱你" | "抱拳" | "招财兔" | "拳头" | "捂脸" | "握手" | "握爪" | "摸头" | "撇嘴" | "撒花" | "擦汗" | "敲打" | "斜眼" | "无语" | "晕" | "暗中观察" | "月亮" | "机智" | "来看我" | "栓Q" | "棒棒糖" | "比心" | "气球" | "求抱抱" | "汤圆" | "泣不成声" | "泪奔" | "流泪" | "灯笼" | "灵机一动" | "炸弹" | "烟花" | "熊吉" | "爱心" | "猪头" | "玫瑰" | "疑问" | "白眼" | "皱眉" | "看" | "石化" | "碰拳" | "礼物" | "福" | "笑哭" | "粽子" | "糖葫芦" | "紫薇别走" | "红包" | "红脸" | "纸飞机" | "给力" | "给跪了" | "绝" | "绝望的凝视" | "绿帽子" | "翻白眼" | "耶" | "胜利" | "胡瓜" | "舔屏" | "色" | "菜狗" | "蕉绿" | "虎头" | "蛋糕" | "衰" | "裂开" | "西瓜" | "调皮" | "赞" | "送心" | "鄙视" | "酷拽" | "钱" | "锦鲤" | "闭嘴" | "阴险" | "难过" | "雪人" | "雪花" | "震惊" | "鞭炮" | "飞吻" | "饺子" | "黑脸" | "鼓掌" | "不是吧" | "动动脑子" | "叹气" | "好开心" | "展开说说" | "投降" | "敢怒不敢言" | "求求了" | "真的会谢" | "眼含热泪" | "蜜蜂狗" | "表面呲牙" | "表面微笑" | "躺平" | "达咩" | "鞠躬" | "kisskiss" | "一头乱麻" | "不你不想" | "九转大肠" | "亚运鼓掌" | "他急了" | "你不大行" | "噢买尬" | "宕机" | "手花" | "敲木鱼" | "脸疼" | "苦涩" | "还得是我" | "逞强落泪" | "金牌")[];
|
|
6
|
+
static getInfo: (emoji: string) => {
|
|
7
|
+
imgUrl: string;
|
|
8
|
+
imgClass: string;
|
|
9
|
+
imgBackgroundClass: any;
|
|
10
|
+
};
|
|
5
11
|
static render(text: string, options: TextRenderOptions): string;
|
|
6
12
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @ts-ignore
|
|
2
2
|
import "./douyin_emoji_render.css";
|
|
3
|
-
var _ = {"emoji":"
|
|
3
|
+
var _ = {"emoji":"xtr_15527","background":"xtr_17349","_互粉":"xtr_14823","_再见":"xtr_10729","_吐血":"xtr_2405","_听歌":"xtr_16652","_嘿哈":"xtr_16538","_大哭":"xtr_3933","_强":"xtr_17630","_我想静静":"xtr_18752","_擦汗":"xtr_11061","_机智":"xtr_578","_求抱抱":"xtr_1171","_灵机一动":"xtr_8799","_熊吉":"xtr_13682","_笑哭":"xtr_17316","_紫薇别走":"xtr_15734","_耶":"xtr_9971","_飞吻":"xtr_11560"};
|
|
4
4
|
import { HTMLRender } from "./html_render";
|
|
5
5
|
// douyinEmojiAllList
|
|
6
6
|
// biome-ignore format:
|
|
@@ -252,13 +252,28 @@ export var DouyinEmojiRender = /*#__PURE__*/function () {
|
|
|
252
252
|
function DouyinEmojiRender() {}
|
|
253
253
|
DouyinEmojiRender.render = function render(text, options) {
|
|
254
254
|
return text.replace(douyinEmojiRegExp, function (__, v) {
|
|
255
|
-
var
|
|
255
|
+
var _DouyinEmojiRender$ge = DouyinEmojiRender.getInfo(v),
|
|
256
|
+
imgUrl = _DouyinEmojiRender$ge.imgUrl,
|
|
257
|
+
imgClass = _DouyinEmojiRender$ge.imgClass,
|
|
258
|
+
imgBackgroundClass = _DouyinEmojiRender$ge.imgBackgroundClass;
|
|
256
259
|
var alt = "[" + v + "]";
|
|
257
|
-
|
|
258
|
-
return HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + url + "')\" class=\"" + baseClass + " " + _.background + "\" alt=\"" + alt + "\"></span>" : "<img src=\"" + url + "\" class=\"" + baseClass + "\" alt=\"" + alt + "\" />", options);
|
|
260
|
+
return HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + imgUrl + "')\" class=\"" + imgClass + " " + imgBackgroundClass + "\" alt=\"" + alt + "\"></span>" : "<img src=\"" + imgUrl + "\" class=\"" + imgClass + "\" alt=\"" + alt + "\" />", options);
|
|
259
261
|
});
|
|
260
262
|
};
|
|
261
263
|
return DouyinEmojiRender;
|
|
262
264
|
}();
|
|
265
|
+
DouyinEmojiRender.regExp = douyinEmojiRegExp;
|
|
263
266
|
DouyinEmojiRender.allEmojiList = douyinEmojiAllList;
|
|
264
|
-
DouyinEmojiRender.latestEmojiList = douyinEmojiLatestList;
|
|
267
|
+
DouyinEmojiRender.latestEmojiList = douyinEmojiLatestList;
|
|
268
|
+
DouyinEmojiRender.getInfo = function (emoji) {
|
|
269
|
+
if (emoji[0] === '[' && emoji[emoji.length - 1] === ']') {
|
|
270
|
+
emoji = emoji.slice(1, emoji.length - 1);
|
|
271
|
+
}
|
|
272
|
+
var imageUrl = "" + douyinEmojiBaseUrl + douyinEmojiUrlMap[emoji] + ".png";
|
|
273
|
+
var imgClass = "" + _.emoji + (_["_" + emoji] ? " " + _["_" + emoji] : '');
|
|
274
|
+
return {
|
|
275
|
+
imgUrl: imageUrl,
|
|
276
|
+
imgClass: imgClass,
|
|
277
|
+
imgBackgroundClass: _.background
|
|
278
|
+
};
|
|
279
|
+
};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export declare enum TextParserNodeType {
|
|
2
|
+
/** 段落 */
|
|
3
|
+
PARAGRAPH = 1,
|
|
4
|
+
/** 纯文本 */
|
|
5
|
+
PLAIN_TEXT = 2,
|
|
6
|
+
/** 网页链接 */
|
|
7
|
+
WEB_LINK = 4,
|
|
8
|
+
/** 换行 */
|
|
9
|
+
LINE_BREAK = 8,
|
|
10
|
+
/** 微信表情 */
|
|
11
|
+
WEIXIN_EMOJI = 16,
|
|
12
|
+
/** Emoji */
|
|
13
|
+
UNIFIED_EMOJI = 32,
|
|
14
|
+
/** 抖音表情 */
|
|
15
|
+
DOUYIN_EMOJI = 64,
|
|
16
|
+
/** 小程序短链接 */
|
|
17
|
+
MINI_PROGRAM_SHORT_LINK = 128
|
|
18
|
+
}
|
|
19
|
+
export type TextParserNodeEmojiInfo = {
|
|
20
|
+
/** 图片链接 */
|
|
21
|
+
imgUrl: string;
|
|
22
|
+
/** 图片类名 */
|
|
23
|
+
imgClass: string;
|
|
24
|
+
/** 图片背景类名 */
|
|
25
|
+
imgBackgroundClass: string;
|
|
26
|
+
};
|
|
27
|
+
export type TextParserNode = {
|
|
28
|
+
/** 类型 */
|
|
29
|
+
type: TextParserNodeType;
|
|
30
|
+
/** 节点列表 */
|
|
31
|
+
nodes?: TextParserNode[];
|
|
32
|
+
/** 内容 */
|
|
33
|
+
content?: string;
|
|
34
|
+
/** 信息 */
|
|
35
|
+
info?: TextParserNodeEmojiInfo;
|
|
36
|
+
};
|
|
37
|
+
export type TextParserOptions = {
|
|
38
|
+
/** 是否解析网页链接 */
|
|
39
|
+
webLink?: boolean;
|
|
40
|
+
/** 是否解析微信表情 */
|
|
41
|
+
weixinEmoji?: boolean;
|
|
42
|
+
/** 解析微信表情时是否包含信息 */
|
|
43
|
+
weixinEmojiInfo?: boolean;
|
|
44
|
+
/** 是否解析 Emoji */
|
|
45
|
+
unifiedEmoji?: boolean;
|
|
46
|
+
/** 解析 Emoji 时是否包含信息 */
|
|
47
|
+
unifiedEmojiInfo?: boolean;
|
|
48
|
+
/** 是否解析抖音表情 */
|
|
49
|
+
douyinEmoji?: boolean;
|
|
50
|
+
/** 解析抖音表情时是否包含信息 */
|
|
51
|
+
douyinEmojiInfo?: boolean;
|
|
52
|
+
/** 是否解析小程序短链接 */
|
|
53
|
+
miniProgramShortLink?: boolean;
|
|
54
|
+
};
|
|
55
|
+
export declare class TextParser {
|
|
56
|
+
private options;
|
|
57
|
+
private parser;
|
|
58
|
+
constructor(options: TextParserOptions);
|
|
59
|
+
parse: (text: string) => TextParserNode[];
|
|
60
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Parser } from 'simple-text-parser';
|
|
2
|
+
import { DouyinEmojiRender } from "./douyin_emoji_render";
|
|
3
|
+
import { UnifiedEmojiRender } from "./unified_emoji_render";
|
|
4
|
+
import { WeixinEmojiRender } from "./weixin_emoji_render";
|
|
5
|
+
export var TextParserNodeType = /*#__PURE__*/function (TextParserNodeType) {
|
|
6
|
+
TextParserNodeType[TextParserNodeType["PARAGRAPH"] = 1] = "PARAGRAPH";
|
|
7
|
+
TextParserNodeType[TextParserNodeType["PLAIN_TEXT"] = 2] = "PLAIN_TEXT";
|
|
8
|
+
TextParserNodeType[TextParserNodeType["WEB_LINK"] = 4] = "WEB_LINK";
|
|
9
|
+
TextParserNodeType[TextParserNodeType["LINE_BREAK"] = 8] = "LINE_BREAK";
|
|
10
|
+
TextParserNodeType[TextParserNodeType["WEIXIN_EMOJI"] = 16] = "WEIXIN_EMOJI";
|
|
11
|
+
TextParserNodeType[TextParserNodeType["UNIFIED_EMOJI"] = 32] = "UNIFIED_EMOJI";
|
|
12
|
+
TextParserNodeType[TextParserNodeType["DOUYIN_EMOJI"] = 64] = "DOUYIN_EMOJI";
|
|
13
|
+
TextParserNodeType[TextParserNodeType["MINI_PROGRAM_SHORT_LINK"] = 128] = "MINI_PROGRAM_SHORT_LINK";
|
|
14
|
+
return TextParserNodeType;
|
|
15
|
+
}({});
|
|
16
|
+
export var TextParser = function TextParser(options) {
|
|
17
|
+
var _this = this;
|
|
18
|
+
this.options = options;
|
|
19
|
+
this.parser = void 0;
|
|
20
|
+
this.parse = function (text) {
|
|
21
|
+
var paragraphs = [];
|
|
22
|
+
var paragraph = [];
|
|
23
|
+
_this.parser.toTree(text).forEach(function (item) {
|
|
24
|
+
var nodeType = item.type === 'text' ? TextParserNodeType.PLAIN_TEXT : item.type === 'url' ? TextParserNodeType.WEB_LINK : item.type;
|
|
25
|
+
if (nodeType & TextParserNodeType.LINE_BREAK) {
|
|
26
|
+
if (paragraph.length > 0) {
|
|
27
|
+
paragraphs.push({
|
|
28
|
+
type: TextParserNodeType.PARAGRAPH,
|
|
29
|
+
nodes: paragraph
|
|
30
|
+
});
|
|
31
|
+
paragraph = [];
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
var node = {
|
|
35
|
+
type: nodeType,
|
|
36
|
+
content: item.text,
|
|
37
|
+
info: item.info
|
|
38
|
+
};
|
|
39
|
+
paragraph.push(node);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
if (paragraph.length > 0) {
|
|
43
|
+
paragraphs.push({
|
|
44
|
+
type: TextParserNodeType.PARAGRAPH,
|
|
45
|
+
nodes: paragraph
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
return paragraphs;
|
|
49
|
+
};
|
|
50
|
+
var parser = new Parser();
|
|
51
|
+
if (this.options.webLink) {
|
|
52
|
+
parser.addPreset('url');
|
|
53
|
+
}
|
|
54
|
+
parser.addRule(/\r?\n/g, function (lineBreak) {
|
|
55
|
+
return {
|
|
56
|
+
type: TextParserNodeType.LINE_BREAK,
|
|
57
|
+
text: lineBreak
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
if (this.options.weixinEmoji) {
|
|
61
|
+
parser.addRule(WeixinEmojiRender.regExp, function (weixinEmoji) {
|
|
62
|
+
return {
|
|
63
|
+
type: TextParserNodeType.WEIXIN_EMOJI,
|
|
64
|
+
text: weixinEmoji,
|
|
65
|
+
info: _this.options.weixinEmojiInfo ? WeixinEmojiRender.getInfo(weixinEmoji) : undefined
|
|
66
|
+
};
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
if (this.options.unifiedEmoji) {
|
|
70
|
+
parser.addRule(UnifiedEmojiRender.regExp, function (unifiedEmoji) {
|
|
71
|
+
return {
|
|
72
|
+
type: TextParserNodeType.UNIFIED_EMOJI,
|
|
73
|
+
text: unifiedEmoji,
|
|
74
|
+
info: _this.options.unifiedEmojiInfo ? UnifiedEmojiRender.getInfo(unifiedEmoji) : undefined
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (this.options.douyinEmoji) {
|
|
79
|
+
parser.addRule(DouyinEmojiRender.regExp, function (douyinEmoji) {
|
|
80
|
+
return {
|
|
81
|
+
type: TextParserNodeType.DOUYIN_EMOJI,
|
|
82
|
+
text: douyinEmoji,
|
|
83
|
+
info: _this.options.douyinEmojiInfo ? DouyinEmojiRender.getInfo(douyinEmoji) : undefined
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
if (this.options.miniProgramShortLink) {
|
|
88
|
+
parser.addRule(/#小程序:\/\/[^\/]+\/\w+/g, function (miniProgramShortLink) {
|
|
89
|
+
return {
|
|
90
|
+
type: TextParserNodeType.MINI_PROGRAM_SHORT_LINK,
|
|
91
|
+
text: miniProgramShortLink
|
|
92
|
+
};
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
this.parser = parser;
|
|
96
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.
|
|
1
|
+
.xtr_15444 {
|
|
2
2
|
display: inline-block;
|
|
3
3
|
font-size: 1.2em;
|
|
4
4
|
width: 1em;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
vertical-align: -0.2em;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
.
|
|
9
|
+
.xtr_17493 {
|
|
10
10
|
background-size: 100% 100%;
|
|
11
11
|
background-repeat: no-repeat;
|
|
12
12
|
background-position: center;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { TextRenderOptions } from './text_render';
|
|
2
2
|
export declare class UnifiedEmojiRender {
|
|
3
|
+
static regExp: RegExp;
|
|
3
4
|
static getEmojiImageUrl(emoji: string): string;
|
|
4
5
|
static tryParseEmojiImageUrl(url: string): string;
|
|
6
|
+
static getInfo: (emoji: string) => {
|
|
7
|
+
imgUrl: string;
|
|
8
|
+
imgClass: any;
|
|
9
|
+
imgBackgroundClass: any;
|
|
10
|
+
};
|
|
5
11
|
static render(text: string, options: TextRenderOptions): string;
|
|
6
12
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
var _UnifiedEmojiRender;
|
|
1
2
|
// @ts-ignore
|
|
2
3
|
import "./unified_emoji_render.css";
|
|
3
|
-
var _ = {"unifiedEmoji":"
|
|
4
|
+
var _ = {"unifiedEmoji":"xtr_15444","background":"xtr_17493"};
|
|
4
5
|
import { characterToCodepoint, escapeRegExp } from 'vtils';
|
|
5
6
|
import { emojiRegExpBuilder } from 'vtils/regexp';
|
|
6
7
|
import { HTMLRender } from "./html_render";
|
|
@@ -88,12 +89,25 @@ export var UnifiedEmojiRender = /*#__PURE__*/function () {
|
|
|
88
89
|
return unifiedEmojiKeywordMap[v];
|
|
89
90
|
});
|
|
90
91
|
return text.replace(unifiedEmojiRegExp, function (v) {
|
|
91
|
-
var
|
|
92
|
-
|
|
92
|
+
var _UnifiedEmojiRender$g = UnifiedEmojiRender.getInfo(v),
|
|
93
|
+
imgUrl = _UnifiedEmojiRender$g.imgUrl,
|
|
94
|
+
imgClass = _UnifiedEmojiRender$g.imgClass,
|
|
95
|
+
imgBackgroundClass = _UnifiedEmojiRender$g.imgBackgroundClass;
|
|
96
|
+
if (imgUrl === v) {
|
|
93
97
|
return v;
|
|
94
98
|
}
|
|
95
|
-
return HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" +
|
|
99
|
+
return HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + imgUrl + "')\" class=\"" + imgClass + " " + imgBackgroundClass + "\" alt=\"" + v + "\"></span>" : "<img src=\"" + imgUrl + "\" class=\"" + imgClass + "\" alt=\"" + v + "\" />", options);
|
|
96
100
|
});
|
|
97
101
|
};
|
|
98
102
|
return UnifiedEmojiRender;
|
|
99
|
-
}();
|
|
103
|
+
}();
|
|
104
|
+
_UnifiedEmojiRender = UnifiedEmojiRender;
|
|
105
|
+
UnifiedEmojiRender.regExp = unifiedEmojiRegExp;
|
|
106
|
+
UnifiedEmojiRender.getInfo = function (emoji) {
|
|
107
|
+
var imageUrl = _UnifiedEmojiRender.getEmojiImageUrl(emoji);
|
|
108
|
+
return {
|
|
109
|
+
imgUrl: imageUrl,
|
|
110
|
+
imgClass: _.unifiedEmoji,
|
|
111
|
+
imgBackgroundClass: _.background
|
|
112
|
+
};
|
|
113
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.
|
|
1
|
+
.xtr_14602 {
|
|
2
2
|
display: inline-block;
|
|
3
3
|
font-size: 1.2em;
|
|
4
4
|
width: 1em;
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
vertical-align: -0.2em;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
.
|
|
9
|
+
.xtr_17550 {
|
|
10
10
|
background-size: 100% 100%;
|
|
11
11
|
background-repeat: no-repeat;
|
|
12
12
|
background-position: center;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
import type { TextRenderOptions } from './text_render';
|
|
2
2
|
export declare class WeixinEmojiRender {
|
|
3
|
+
static regExp: RegExp;
|
|
4
|
+
static getInfo: (emoji: string) => {
|
|
5
|
+
imgUrl: string;
|
|
6
|
+
imgClass: any;
|
|
7
|
+
imgBackgroundClass: any;
|
|
8
|
+
};
|
|
3
9
|
static render(text: string, options: TextRenderOptions): string;
|
|
4
10
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @ts-ignore
|
|
2
2
|
import "./weixin_emoji_render.css";
|
|
3
|
-
var _ = {"weixinEmoji":"
|
|
3
|
+
var _ = {"weixinEmoji":"xtr_14602","background":"xtr_17550"};
|
|
4
4
|
import { escapeRegExp, keysStrict } from 'vtils';
|
|
5
5
|
import { HTMLRender } from "./html_render";
|
|
6
6
|
var weixinEmojiBaseUrl = "https://wxpublic-1251448646.file.myqcloud.com/public/common/files/";
|
|
@@ -325,9 +325,21 @@ export var WeixinEmojiRender = /*#__PURE__*/function () {
|
|
|
325
325
|
function WeixinEmojiRender() {}
|
|
326
326
|
WeixinEmojiRender.render = function render(text, options) {
|
|
327
327
|
return text.replace(weixinEmojiRegExp, function (__, v) {
|
|
328
|
-
var
|
|
329
|
-
|
|
328
|
+
var _WeixinEmojiRender$ge = WeixinEmojiRender.getInfo(v),
|
|
329
|
+
imgUrl = _WeixinEmojiRender$ge.imgUrl,
|
|
330
|
+
imgClass = _WeixinEmojiRender$ge.imgClass,
|
|
331
|
+
imgBackgroundClass = _WeixinEmojiRender$ge.imgBackgroundClass;
|
|
332
|
+
return HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + imgUrl + "')\" class=\"" + imgClass + " " + imgBackgroundClass + "\" alt=\"" + v + "\"></span>" : "<img src=\"" + imgUrl + "\" class=\"" + imgClass + "\" alt=\"" + v + "\" />", options);
|
|
330
333
|
});
|
|
331
334
|
};
|
|
332
335
|
return WeixinEmojiRender;
|
|
333
|
-
}();
|
|
336
|
+
}();
|
|
337
|
+
WeixinEmojiRender.regExp = weixinEmojiRegExp;
|
|
338
|
+
WeixinEmojiRender.getInfo = function (emoji) {
|
|
339
|
+
var imageUrl = "" + weixinEmojiBaseUrl + weixinEmojiMap2[emoji] + ".png";
|
|
340
|
+
return {
|
|
341
|
+
imgUrl: imageUrl,
|
|
342
|
+
imgClass: _.weixinEmoji,
|
|
343
|
+
imgBackgroundClass: _.background
|
|
344
|
+
};
|
|
345
|
+
};
|
package/package.json
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jayfong/x-text-render",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.62.0",
|
|
4
4
|
"license": "ISC",
|
|
5
|
-
"sideEffects": [
|
|
5
|
+
"sideEffects": [
|
|
6
|
+
"*.css"
|
|
7
|
+
],
|
|
6
8
|
"main": "lib/_cjs/index.js",
|
|
7
9
|
"module": "lib/index.js",
|
|
8
10
|
"types": "lib/index.d.ts",
|
|
9
|
-
"files": [
|
|
11
|
+
"files": [
|
|
12
|
+
"lib"
|
|
13
|
+
],
|
|
10
14
|
"scripts": {
|
|
11
15
|
"build": "haoma compile",
|
|
12
16
|
"douyin_emoji_download": "haoma run ./scripts/douyin_emoji.ts download",
|
|
@@ -18,10 +22,11 @@
|
|
|
18
22
|
"weixin_emoji_upload": "haoma run ./scripts/weixin_emoji.ts upload"
|
|
19
23
|
},
|
|
20
24
|
"dependencies": {
|
|
25
|
+
"simple-text-parser": "^2.1.1",
|
|
21
26
|
"vtils": "^4.95.0"
|
|
22
27
|
},
|
|
23
28
|
"devDependencies": {
|
|
24
|
-
"@jayfong/x-request": "^2.
|
|
29
|
+
"@jayfong/x-request": "^2.62.0",
|
|
25
30
|
"fs-extra": "^10.0.1",
|
|
26
31
|
"globby": "^11",
|
|
27
32
|
"katex": "^0.16.8",
|