@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.
@@ -1,9 +1,9 @@
1
- .xtr_17651 {
1
+ .xtr_15084 {
2
2
  margin: 6px 0;
3
3
  margin-left: var(--text-indent, 0px);
4
4
  }
5
5
 
6
- .xtr_17651 .xtr_15175 {
6
+ .xtr_15084 .xtr_16953 {
7
7
  text-indent: 0;
8
8
  white-space: pre-wrap;
9
9
  background-color: rgba(0, 0, 0, 0.5);
@@ -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":"xtr_17651","content":"xtr_15175"};
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
- .xtr_1766 {
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
- .xtr_19282 {
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
- .xtr_2657 {
15
+ .xtr_14823 {
16
16
  width: 1.0781em;
17
17
  }
18
18
 
19
- .xtr_9997 {
19
+ .xtr_10729 {
20
20
  width: 1.0313em;
21
21
  }
22
22
 
23
- .xtr_10813 {
23
+ .xtr_2405 {
24
24
  width: 1.0625em;
25
25
  }
26
26
 
27
- .xtr_17803 {
27
+ .xtr_16652 {
28
28
  width: 1.1563em;
29
29
  }
30
30
 
31
- .xtr_15064 {
31
+ .xtr_16538 {
32
32
  width: 1.0469em;
33
33
  }
34
34
 
35
- .xtr_8220 {
35
+ .xtr_3933 {
36
36
  width: 1.1406em;
37
37
  }
38
38
 
39
- .xtr_12994 {
39
+ .xtr_17630 {
40
40
  width: 1.0781em;
41
41
  }
42
42
 
43
- .xtr_7683 {
43
+ .xtr_18752 {
44
44
  width: 1.1406em;
45
45
  }
46
46
 
47
- .xtr_1074 {
47
+ .xtr_11061 {
48
48
  width: 1.0781em;
49
49
  }
50
50
 
51
- .xtr_1075 {
51
+ .xtr_578 {
52
52
  width: 1.1406em;
53
53
  }
54
54
 
55
- .xtr_4729 {
55
+ .xtr_1171 {
56
56
  width: 1.375em;
57
57
  }
58
58
 
59
- .xtr_4125 {
59
+ .xtr_8799 {
60
60
  width: 1.0625em;
61
61
  }
62
62
 
63
- .xtr_5020 {
63
+ .xtr_13682 {
64
64
  width: 1.1406em;
65
65
  }
66
66
 
67
- .xtr_14723 {
67
+ .xtr_17316 {
68
68
  width: 1.1406em;
69
69
  }
70
70
 
71
- .xtr_10040 {
71
+ .xtr_15734 {
72
72
  width: 1.0625em;
73
73
  }
74
74
 
75
- .xtr_1335 {
75
+ .xtr_9971 {
76
76
  width: 1.125em;
77
77
  }
78
78
 
79
- .xtr_13601 {
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":"xtr_1766","background":"xtr_19282","_互粉":"xtr_2657","_再见":"xtr_9997","_吐血":"xtr_10813","_听歌":"xtr_17803","_嘿哈":"xtr_15064","_大哭":"xtr_8220","_强":"xtr_12994","_我想静静":"xtr_7683","_擦汗":"xtr_1074","_机智":"xtr_1075","_求抱抱":"xtr_4729","_灵机一动":"xtr_4125","_熊吉":"xtr_5020","_笑哭":"xtr_14723","_紫薇别走":"xtr_10040","_耶":"xtr_1335","_飞吻":"xtr_13601"};
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 url = "" + douyinEmojiBaseUrl + douyinEmojiUrlMap[v] + ".png";
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
- var baseClass = "" + _.emoji + (_["_" + v] ? " " + _["_" + v] : '');
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
- .xtr_13616 {
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
- .xtr_16149 {
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":"xtr_13616","background":"xtr_16149"};
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 imageUrl = UnifiedEmojiRender.getEmojiImageUrl(v);
96
- if (imageUrl === v) {
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('" + imageUrl + "')\" class=\"" + _.unifiedEmoji + " " + _.background + "\" alt=\"" + v + "\"></span>" : "<img src=\"" + imageUrl + "\" class=\"" + _.unifiedEmoji + "\" alt=\"" + v + "\" />", options);
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
- .xtr_48 {
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
- .xtr_10136 {
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":"xtr_48","background":"xtr_10136"};
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 url = "" + weixinEmojiBaseUrl + weixinEmojiMap2[v] + ".png";
333
- return _html_render.HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + url + "')\" class=\"" + _.weixinEmoji + " " + _.background + "\" alt=\"" + v + "\"></span>" : "<img src=\"" + url + "\" class=\"" + _.weixinEmoji + "\" alt=\"" + v + "\" />", options);
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
+ };
@@ -1,9 +1,9 @@
1
- .xtr_17651 {
1
+ .xtr_15084 {
2
2
  margin: 6px 0;
3
3
  margin-left: var(--text-indent, 0px);
4
4
  }
5
5
 
6
- .xtr_17651 .xtr_15175 {
6
+ .xtr_15084 .xtr_16953 {
7
7
  text-indent: 0;
8
8
  white-space: pre-wrap;
9
9
  background-color: rgba(0, 0, 0, 0.5);
@@ -1,6 +1,6 @@
1
1
  // @ts-ignore
2
2
  import "./code_render.css";
3
- var _ = {"code":"xtr_17651","content":"xtr_15175"};
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
- .xtr_1766 {
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
- .xtr_19282 {
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
- .xtr_2657 {
15
+ .xtr_14823 {
16
16
  width: 1.0781em;
17
17
  }
18
18
 
19
- .xtr_9997 {
19
+ .xtr_10729 {
20
20
  width: 1.0313em;
21
21
  }
22
22
 
23
- .xtr_10813 {
23
+ .xtr_2405 {
24
24
  width: 1.0625em;
25
25
  }
26
26
 
27
- .xtr_17803 {
27
+ .xtr_16652 {
28
28
  width: 1.1563em;
29
29
  }
30
30
 
31
- .xtr_15064 {
31
+ .xtr_16538 {
32
32
  width: 1.0469em;
33
33
  }
34
34
 
35
- .xtr_8220 {
35
+ .xtr_3933 {
36
36
  width: 1.1406em;
37
37
  }
38
38
 
39
- .xtr_12994 {
39
+ .xtr_17630 {
40
40
  width: 1.0781em;
41
41
  }
42
42
 
43
- .xtr_7683 {
43
+ .xtr_18752 {
44
44
  width: 1.1406em;
45
45
  }
46
46
 
47
- .xtr_1074 {
47
+ .xtr_11061 {
48
48
  width: 1.0781em;
49
49
  }
50
50
 
51
- .xtr_1075 {
51
+ .xtr_578 {
52
52
  width: 1.1406em;
53
53
  }
54
54
 
55
- .xtr_4729 {
55
+ .xtr_1171 {
56
56
  width: 1.375em;
57
57
  }
58
58
 
59
- .xtr_4125 {
59
+ .xtr_8799 {
60
60
  width: 1.0625em;
61
61
  }
62
62
 
63
- .xtr_5020 {
63
+ .xtr_13682 {
64
64
  width: 1.1406em;
65
65
  }
66
66
 
67
- .xtr_14723 {
67
+ .xtr_17316 {
68
68
  width: 1.1406em;
69
69
  }
70
70
 
71
- .xtr_10040 {
71
+ .xtr_15734 {
72
72
  width: 1.0625em;
73
73
  }
74
74
 
75
- .xtr_1335 {
75
+ .xtr_9971 {
76
76
  width: 1.125em;
77
77
  }
78
78
 
79
- .xtr_13601 {
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":"xtr_1766","background":"xtr_19282","_互粉":"xtr_2657","_再见":"xtr_9997","_吐血":"xtr_10813","_听歌":"xtr_17803","_嘿哈":"xtr_15064","_大哭":"xtr_8220","_强":"xtr_12994","_我想静静":"xtr_7683","_擦汗":"xtr_1074","_机智":"xtr_1075","_求抱抱":"xtr_4729","_灵机一动":"xtr_4125","_熊吉":"xtr_5020","_笑哭":"xtr_14723","_紫薇别走":"xtr_10040","_耶":"xtr_1335","_飞吻":"xtr_13601"};
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 url = "" + douyinEmojiBaseUrl + douyinEmojiUrlMap[v] + ".png";
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
- var baseClass = "" + _.emoji + (_["_" + v] ? " " + _["_" + v] : '');
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
- .xtr_13616 {
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
- .xtr_16149 {
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":"xtr_13616","background":"xtr_16149"};
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 imageUrl = UnifiedEmojiRender.getEmojiImageUrl(v);
92
- if (imageUrl === v) {
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('" + imageUrl + "')\" class=\"" + _.unifiedEmoji + " " + _.background + "\" alt=\"" + v + "\"></span>" : "<img src=\"" + imageUrl + "\" class=\"" + _.unifiedEmoji + "\" alt=\"" + v + "\" />", options);
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
- .xtr_48 {
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
- .xtr_10136 {
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":"xtr_48","background":"xtr_10136"};
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 url = "" + weixinEmojiBaseUrl + weixinEmojiMap2[v] + ".png";
329
- return HTMLRender.freeze(options.emojiRenderer === 'background' ? "<span style=\"background-image:url('" + url + "')\" class=\"" + _.weixinEmoji + " " + _.background + "\" alt=\"" + v + "\"></span>" : "<img src=\"" + url + "\" class=\"" + _.weixinEmoji + "\" alt=\"" + v + "\" />", options);
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.61.3",
3
+ "version": "2.62.0",
4
4
  "license": "ISC",
5
- "sideEffects": ["*.css"],
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": ["lib"],
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.61.3",
29
+ "@jayfong/x-request": "^2.62.0",
25
30
  "fs-extra": "^10.0.1",
26
31
  "globby": "^11",
27
32
  "katex": "^0.16.8",