wechat-emojis 1.0.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/API.md +228 -0
- package/REACT_USAGE.md +456 -0
- package/README.md +251 -0
- package/assets/animal//345/217/221/346/212/226.png +0 -0
- package/assets/animal//347/214/252/345/244/264.png +0 -0
- package/assets/animal//350/267/263/350/267/263.png +0 -0
- package/assets/animal//350/275/254/345/234/210.png +0 -0
- package/assets/blessing//345/272/206/347/245/235.png +0 -0
- package/assets/blessing//347/203/237/350/212/261.png +0 -0
- package/assets/blessing//347/210/206/347/253/271.png +0 -0
- package/assets/blessing//347/231/274.png +0 -0
- package/assets/blessing//347/244/274/347/211/251.png +0 -0
- package/assets/blessing//347/246/217.png +0 -0
- package/assets/blessing//347/272/242/345/214/205.png +0 -0
- package/assets/face/666.png +0 -0
- package/assets/face/Emm.png +0 -0
- package/assets/face//344/272/262/344/272/262.png +0 -0
- package/assets/face//345/201/267/347/254/221.png +0 -0
- package/assets/face//345/202/262/346/205/242.png +0 -0
- package/assets/face//345/206/215/350/247/201.png +0 -0
- package/assets/face//345/212/240/346/262/271.png +0 -0
- package/assets/face//345/217/221/345/221/206.png +0 -0
- package/assets/face//345/217/221/346/200/222.png +0 -0
- package/assets/face//345/217/257/346/200/234.png +0 -0
- package/assets/face//345/217/263/345/223/274/345/223/274.png +0 -0
- package/assets/face//345/217/271/346/260/224.png +0 -0
- package/assets/face//345/220/203/347/223/234.png +0 -0
- package/assets/face//345/220/220.png +0 -0
- package/assets/face//345/221/262/347/211/231.png +0 -0
- package/assets/face//345/222/222/351/252/202.png +0 -0
- package/assets/face//345/223/207.png +0 -0
- package/assets/face//345/230/230.png +0 -0
- package/assets/face//345/230/277/345/223/210.png +0 -0
- package/assets/face//345/233/247.png +0 -0
- package/assets/face//345/233/260.png +0 -0
- package/assets/face//345/235/217/347/254/221.png +0 -0
- package/assets/face//345/244/247/345/223/255.png +0 -0
- package/assets/face//345/244/251/345/225/212.png +0 -0
- package/assets/face//345/244/261/346/234/233.png +0 -0
- package/assets/face//345/245/270/347/254/221.png +0 -0
- package/assets/face//345/245/275/347/232/204.png +0 -0
- package/assets/face//345/247/224/345/261/210.png +0 -0
- package/assets/face//345/256/263/347/276/236.png +0 -0
- package/assets/face//345/260/264/345/260/254.png +0 -0
- package/assets/face//345/276/227/346/204/217.png +0 -0
- package/assets/face//345/276/256/347/254/221.png +0 -0
- package/assets/face//345/277/253/345/223/255/344/272/206.png +0 -0
- package/assets/face//346/201/220/346/203/247.png +0 -0
- package/assets/face//346/202/240/351/227/262.png +0 -0
- package/assets/face//346/203/212/346/201/220.png +0 -0
- package/assets/face//346/203/212/350/256/266.png +0 -0
- package/assets/face//346/204/211/345/277/253.png +0 -0
- package/assets/face//346/206/250/347/254/221.png +0 -0
- package/assets/face//346/211/223/350/204/270.png +0 -0
- package/assets/face//346/212/223/347/213/202.png +0 -0
- package/assets/face//346/212/240/351/274/273.png +0 -0
- package/assets/face//346/215/202/350/204/270.png +0 -0
- package/assets/face//346/222/207/345/230/264.png +0 -0
- package/assets/face//346/223/246/346/261/227.png +0 -0
- package/assets/face//346/225/262/346/211/223.png +0 -0
- package/assets/face//346/227/240/350/257/255.png +0 -0
- package/assets/face//346/227/272/346/237/264.png +0 -0
- package/assets/face//346/231/225.png +0 -0
- package/assets/face//346/234/272/346/231/272.png +0 -0
- package/assets/face//346/261/227.png +0 -0
- package/assets/face//346/265/201/346/263/252.png +0 -0
- package/assets/face//347/224/237/347/227/205.png +0 -0
- package/assets/face//347/226/221/351/227/256.png +0 -0
- package/assets/face//347/231/275/347/234/274.png +0 -0
- package/assets/face//347/232/261/347/234/211.png +0 -0
- package/assets/face//347/235/241.png +0 -0
- package/assets/face//347/240/264/346/266/225/344/270/272/347/254/221.png +0 -0
- package/assets/face//347/244/276/344/274/232.png +0 -0
- package/assets/face//347/254/221/350/204/270.png +0 -0
- package/assets/face//347/277/273/347/231/275/347/234/274.png +0 -0
- package/assets/face//350/200/266.png +0 -0
- package/assets/face//350/204/270/347/272/242.png +0 -0
- package/assets/face//350/211/262.png +0 -0
- package/assets/face//350/213/246/346/266/251.png +0 -0
- package/assets/face//350/241/260.png +0 -0
- package/assets/face//350/243/202/345/274/200.png +0 -0
- package/assets/face//350/256/251/346/210/221/347/234/213/347/234/213.png +0 -0
- package/assets/face//350/260/203/347/232/256.png +0 -0
- package/assets/face//351/204/231/350/247/206.png +0 -0
- package/assets/face//351/227/255/345/230/264.png +0 -0
- package/assets/face//351/230/264/351/231/251.png +0 -0
- package/assets/face//351/232/276/350/277/207.png +0 -0
- package/assets/face//351/252/267/351/253/205.png +0 -0
- package/assets/face//351/274/223/346/216/214.png +0 -0
- package/assets/gesture/OK.png +0 -0
- package/assets/gesture//345/213/276/345/274/225.png +0 -0
- package/assets/gesture//345/220/210/345/215/201.png +0 -0
- package/assets/gesture//345/274/261.png +0 -0
- package/assets/gesture//345/274/272.png +0 -0
- package/assets/gesture//345/276/227/346/204/217.png +0 -0
- package/assets/gesture//346/212/261/346/213/263.png +0 -0
- package/assets/gesture//346/213/245/346/212/261.png +0 -0
- package/assets/gesture//346/213/263/345/244/264.png +0 -0
- package/assets/gesture//346/217/241/346/211/213.png +0 -0
- package/assets/gesture//350/200/266.png +0 -0
- package/assets/gesture//350/203/234/345/210/251.png +0 -0
- package/assets/other//344/276/277/344/276/277.png +0 -0
- package/assets/other//345/207/213/350/260/242.png +0 -0
- package/assets/other//345/222/226/345/225/241.png +0 -0
- package/assets/other//345/225/244/351/205/222.png +0 -0
- package/assets/other//345/230/264/345/224/207.png +0 -0
- package/assets/other//345/244/252/351/230/263.png +0 -0
- package/assets/other//345/245/213/346/226/227.png +0 -0
- package/assets/other//345/277/203/347/242/216.png +0 -0
- package/assets/other//346/231/232/345/256/211.png +0 -0
- package/assets/other//347/202/270/345/274/271.png +0 -0
- package/assets/other//347/210/206/347/217/240.png +0 -0
- package/assets/other//347/210/206/347/253/271.png +0 -0
- package/assets/other//347/210/261/345/277/203.png +0 -0
- package/assets/other//350/217/234/345/210/200.png +0 -0
- package/assets/other//350/233/213/347/263/225.png +0 -0
- package/assets/other//351/262/234/350/212/261.png +0 -0
- package/package.json +49 -0
- package/wechatEmoji.js +314 -0
- package/wechatEmoji.ts +364 -0
package/wechatEmoji.ts
ADDED
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 微信表情包 TypeScript 模块
|
|
3
|
+
* 提供类型安全的表情访问和图片路径获取功能
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* 表情类别枚举
|
|
8
|
+
*/
|
|
9
|
+
export enum EmojiCategory {
|
|
10
|
+
/** 人脸表情 */
|
|
11
|
+
FACE = 'face',
|
|
12
|
+
/** 手势表情 */
|
|
13
|
+
GESTURE = 'gesture',
|
|
14
|
+
/** 动物表情 */
|
|
15
|
+
ANIMAL = 'animal',
|
|
16
|
+
/** 祝福表情 */
|
|
17
|
+
BLESSING = 'blessing',
|
|
18
|
+
/** 其他表情 */
|
|
19
|
+
OTHER = 'other'
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* 表情信息接口
|
|
24
|
+
*/
|
|
25
|
+
export interface EmojiInfo {
|
|
26
|
+
/** 表情名称 */
|
|
27
|
+
name: string;
|
|
28
|
+
/** 表情类别 */
|
|
29
|
+
category: EmojiCategory;
|
|
30
|
+
/** 图片文件路径 */
|
|
31
|
+
path: string;
|
|
32
|
+
/** 英文名称(可选) */
|
|
33
|
+
englishName?: string;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* 表情名称类型
|
|
38
|
+
*/
|
|
39
|
+
export type EmojiName =
|
|
40
|
+
// 人脸表情
|
|
41
|
+
| '微笑' | '撇嘴' | '色' | '发呆' | '得意' | '流泪' | '害羞' | '闭嘴' | '睡' | '大哭'
|
|
42
|
+
| '尴尬' | '发怒' | '调皮' | '呲牙' | '惊讶' | '难过' | '囧' | '抓狂' | '吐' | '偷笑'
|
|
43
|
+
| '愉快' | '白眼' | '傲慢' | '困' | '惊恐' | '憨笑' | '悠闲' | '咒骂' | '疑问' | '嘘'
|
|
44
|
+
| '晕' | '衰' | '骷髅' | '敲打' | '再见' | '擦汗' | '抠鼻' | '鼓掌' | '坏笑' | '右哼哼'
|
|
45
|
+
| '鄙视' | '委屈' | '快哭了' | '阴险' | '亲亲' | '可怜' | '笑脸' | '生病' | '脸红' | '破涕为笑'
|
|
46
|
+
| '恐惧' | '失望' | '无语' | '嘿哈' | '捂脸' | '机智' | '皱眉' | '耶' | '吃瓜'
|
|
47
|
+
| '加油' | '汗' | '天啊' | 'Emm' | '社会' | '旺柴' | '好的' | '打脸' | '哇' | '翻白眼'
|
|
48
|
+
| '666' | '让我看看' | '叹气' | '苦涩' | '裂开' | '奸笑'
|
|
49
|
+
// 手势表情
|
|
50
|
+
| '握手' | '胜利' | '抱拳' | '勾引' | '拳头' | 'OK' | '合十' | '强' | '拥抱' | '弱'
|
|
51
|
+
// 动物表情
|
|
52
|
+
| '猪头' | '跳跳' | '发抖' | '转圈'
|
|
53
|
+
// 祝福表情
|
|
54
|
+
| '庆祝' | '礼物' | '红包' | '發' | '福' | '烟花' | '爆竹'
|
|
55
|
+
// 其他表情
|
|
56
|
+
| '嘴唇' | '爱心' | '心碎' | '啤酒' | '咖啡' | '蛋糕' | '凋谢' | '菜刀' | '炸弹' | '便便' | '太阳'
|
|
57
|
+
| '晚安' | '鲜花';
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* 表情数据映射
|
|
61
|
+
* 将表情名称映射到完整的表情信息
|
|
62
|
+
*/
|
|
63
|
+
const EMOJI_DATA: Record<EmojiName, EmojiInfo> = {
|
|
64
|
+
// 人脸表情
|
|
65
|
+
'微笑': { name: '微笑', category: EmojiCategory.FACE, path: 'assets/face/微笑.png' },
|
|
66
|
+
'撇嘴': { name: '撇嘴', category: EmojiCategory.FACE, path: 'assets/face/撇嘴.png' },
|
|
67
|
+
'色': { name: '色', category: EmojiCategory.FACE, path: 'assets/face/色.png' },
|
|
68
|
+
'发呆': { name: '发呆', category: EmojiCategory.FACE, path: 'assets/face/发呆.png' },
|
|
69
|
+
'得意': { name: '得意', category: EmojiCategory.FACE, path: 'assets/face/得意.png' },
|
|
70
|
+
'流泪': { name: '流泪', category: EmojiCategory.FACE, path: 'assets/face/流泪.png' },
|
|
71
|
+
'害羞': { name: '害羞', category: EmojiCategory.FACE, path: 'assets/face/害羞.png' },
|
|
72
|
+
'闭嘴': { name: '闭嘴', category: EmojiCategory.FACE, path: 'assets/face/闭嘴.png' },
|
|
73
|
+
'睡': { name: '睡', category: EmojiCategory.FACE, path: 'assets/face/睡.png' },
|
|
74
|
+
'大哭': { name: '大哭', category: EmojiCategory.FACE, path: 'assets/face/大哭.png' },
|
|
75
|
+
'尴尬': { name: '尴尬', category: EmojiCategory.FACE, path: 'assets/face/尴尬.png' },
|
|
76
|
+
'发怒': { name: '发怒', category: EmojiCategory.FACE, path: 'assets/face/发怒.png' },
|
|
77
|
+
'调皮': { name: '调皮', category: EmojiCategory.FACE, path: 'assets/face/调皮.png' },
|
|
78
|
+
'呲牙': { name: '呲牙', category: EmojiCategory.FACE, path: 'assets/face/呲牙.png' },
|
|
79
|
+
'惊讶': { name: '惊讶', category: EmojiCategory.FACE, path: 'assets/face/惊讶.png' },
|
|
80
|
+
'难过': { name: '难过', category: EmojiCategory.FACE, path: 'assets/face/难过.png' },
|
|
81
|
+
'囧': { name: '囧', category: EmojiCategory.FACE, path: 'assets/face/囧.png' },
|
|
82
|
+
'抓狂': { name: '抓狂', category: EmojiCategory.FACE, path: 'assets/face/抓狂.png' },
|
|
83
|
+
'吐': { name: '吐', category: EmojiCategory.FACE, path: 'assets/face/吐.png' },
|
|
84
|
+
'偷笑': { name: '偷笑', category: EmojiCategory.FACE, path: 'assets/face/偷笑.png' },
|
|
85
|
+
'愉快': { name: '愉快', category: EmojiCategory.FACE, path: 'assets/face/愉快.png' },
|
|
86
|
+
'白眼': { name: '白眼', category: EmojiCategory.FACE, path: 'assets/face/白眼.png' },
|
|
87
|
+
'傲慢': { name: '傲慢', category: EmojiCategory.FACE, path: 'assets/face/傲慢.png' },
|
|
88
|
+
'困': { name: '困', category: EmojiCategory.FACE, path: 'assets/face/困.png' },
|
|
89
|
+
'惊恐': { name: '惊恐', category: EmojiCategory.FACE, path: 'assets/face/惊恐.png' },
|
|
90
|
+
'憨笑': { name: '憨笑', category: EmojiCategory.FACE, path: 'assets/face/憨笑.png' },
|
|
91
|
+
'悠闲': { name: '悠闲', category: EmojiCategory.FACE, path: 'assets/face/悠闲.png' },
|
|
92
|
+
'咒骂': { name: '咒骂', category: EmojiCategory.FACE, path: 'assets/face/咒骂.png' },
|
|
93
|
+
'疑问': { name: '疑问', category: EmojiCategory.FACE, path: 'assets/face/疑问.png' },
|
|
94
|
+
'嘘': { name: '嘘', category: EmojiCategory.FACE, path: 'assets/face/嘘.png' },
|
|
95
|
+
'晕': { name: '晕', category: EmojiCategory.FACE, path: 'assets/face/晕.png' },
|
|
96
|
+
'衰': { name: '衰', category: EmojiCategory.FACE, path: 'assets/face/衰.png' },
|
|
97
|
+
'骷髅': { name: '骷髅', category: EmojiCategory.FACE, path: 'assets/face/骷髅.png' },
|
|
98
|
+
'敲打': { name: '敲打', category: EmojiCategory.FACE, path: 'assets/face/敲打.png' },
|
|
99
|
+
'再见': { name: '再见', category: EmojiCategory.FACE, path: 'assets/face/再见.png' },
|
|
100
|
+
'擦汗': { name: '擦汗', category: EmojiCategory.FACE, path: 'assets/face/擦汗.png' },
|
|
101
|
+
'抠鼻': { name: '抠鼻', category: EmojiCategory.FACE, path: 'assets/face/抠鼻.png' },
|
|
102
|
+
'鼓掌': { name: '鼓掌', category: EmojiCategory.FACE, path: 'assets/face/鼓掌.png' },
|
|
103
|
+
'坏笑': { name: '坏笑', category: EmojiCategory.FACE, path: 'assets/face/坏笑.png' },
|
|
104
|
+
'右哼哼': { name: '右哼哼', category: EmojiCategory.FACE, path: 'assets/face/右哼哼.png' },
|
|
105
|
+
'鄙视': { name: '鄙视', category: EmojiCategory.FACE, path: 'assets/face/鄙视.png' },
|
|
106
|
+
'委屈': { name: '委屈', category: EmojiCategory.FACE, path: 'assets/face/委屈.png' },
|
|
107
|
+
'快哭了': { name: '快哭了', category: EmojiCategory.FACE, path: 'assets/face/快哭了.png' },
|
|
108
|
+
'阴险': { name: '阴险', category: EmojiCategory.FACE, path: 'assets/face/阴险.png' },
|
|
109
|
+
'亲亲': { name: '亲亲', category: EmojiCategory.FACE, path: 'assets/face/亲亲.png' },
|
|
110
|
+
'可怜': { name: '可怜', category: EmojiCategory.FACE, path: 'assets/face/可怜.png' },
|
|
111
|
+
'笑脸': { name: '笑脸', category: EmojiCategory.FACE, path: 'assets/face/笑脸.png' },
|
|
112
|
+
'生病': { name: '生病', category: EmojiCategory.FACE, path: 'assets/face/生病.png' },
|
|
113
|
+
'脸红': { name: '脸红', category: EmojiCategory.FACE, path: 'assets/face/脸红.png' },
|
|
114
|
+
'破涕为笑': { name: '破涕为笑', category: EmojiCategory.FACE, path: 'assets/face/破涕为笑.png' },
|
|
115
|
+
'恐惧': { name: '恐惧', category: EmojiCategory.FACE, path: 'assets/face/恐惧.png' },
|
|
116
|
+
'失望': { name: '失望', category: EmojiCategory.FACE, path: 'assets/face/失望.png' },
|
|
117
|
+
'无语': { name: '无语', category: EmojiCategory.FACE, path: 'assets/face/无语.png' },
|
|
118
|
+
'嘿哈': { name: '嘿哈', category: EmojiCategory.FACE, path: 'assets/face/嘿哈.png' },
|
|
119
|
+
'捂脸': { name: '捂脸', category: EmojiCategory.FACE, path: 'assets/face/捂脸.png' },
|
|
120
|
+
|
|
121
|
+
'机智': { name: '机智', category: EmojiCategory.FACE, path: 'assets/face/机智.png' },
|
|
122
|
+
'皱眉': { name: '皱眉', category: EmojiCategory.FACE, path: 'assets/face/皱眉.png' },
|
|
123
|
+
'耶': { name: '耶', category: EmojiCategory.FACE, path: 'assets/face/耶.png' },
|
|
124
|
+
'吃瓜': { name: '吃瓜', category: EmojiCategory.FACE, path: 'assets/face/吃瓜.png' },
|
|
125
|
+
'加油': { name: '加油', category: EmojiCategory.FACE, path: 'assets/face/加油.png' },
|
|
126
|
+
|
|
127
|
+
'汗': { name: '汗', category: EmojiCategory.FACE, path: 'assets/face/汗.png' },
|
|
128
|
+
'天啊': { name: '天啊', category: EmojiCategory.FACE, path: 'assets/face/天啊.png' },
|
|
129
|
+
'Emm': { name: 'Emm', category: EmojiCategory.FACE, path: 'assets/face/Emm.png' },
|
|
130
|
+
'社会': { name: '社会', category: EmojiCategory.FACE, path: 'assets/face/社会.png' },
|
|
131
|
+
'旺柴': { name: '旺柴', category: EmojiCategory.FACE, path: 'assets/face/旺柴.png' },
|
|
132
|
+
'好的': { name: '好的', category: EmojiCategory.FACE, path: 'assets/face/好的.png' },
|
|
133
|
+
'打脸': { name: '打脸', category: EmojiCategory.FACE, path: 'assets/face/打脸.png' },
|
|
134
|
+
'哇': { name: '哇', category: EmojiCategory.FACE, path: 'assets/face/哇.png' },
|
|
135
|
+
'翻白眼': { name: '翻白眼', category: EmojiCategory.FACE, path: 'assets/face/翻白眼.png' },
|
|
136
|
+
'666': { name: '666', category: EmojiCategory.FACE, path: 'assets/face/666.png' },
|
|
137
|
+
'让我看看': { name: '让我看看', category: EmojiCategory.FACE, path: 'assets/face/让我看看.png' },
|
|
138
|
+
'叹气': { name: '叹气', category: EmojiCategory.FACE, path: 'assets/face/叹气.png' },
|
|
139
|
+
'苦涩': { name: '苦涩', category: EmojiCategory.FACE, path: 'assets/face/苦涩.png' },
|
|
140
|
+
'裂开': { name: '裂开', category: EmojiCategory.FACE, path: 'assets/face/裂开.png' },
|
|
141
|
+
'奸笑': { name: '奸笑', category: EmojiCategory.FACE, path: 'assets/face/奸笑.png' },
|
|
142
|
+
|
|
143
|
+
// 手势表情
|
|
144
|
+
'握手': { name: '握手', category: EmojiCategory.GESTURE, path: 'assets/gesture/握手.png' },
|
|
145
|
+
'胜利': { name: '胜利', category: EmojiCategory.GESTURE, path: 'assets/gesture/胜利.png' },
|
|
146
|
+
'抱拳': { name: '抱拳', category: EmojiCategory.GESTURE, path: 'assets/gesture/抱拳.png' },
|
|
147
|
+
'勾引': { name: '勾引', category: EmojiCategory.GESTURE, path: 'assets/gesture/勾引.png' },
|
|
148
|
+
'拳头': { name: '拳头', category: EmojiCategory.GESTURE, path: 'assets/gesture/拳头.png' },
|
|
149
|
+
'OK': { name: 'OK', category: EmojiCategory.GESTURE, path: 'assets/gesture/OK.png' },
|
|
150
|
+
'合十': { name: '合十', category: EmojiCategory.GESTURE, path: 'assets/gesture/合十.png' },
|
|
151
|
+
'强': { name: '强', category: EmojiCategory.GESTURE, path: 'assets/gesture/强.png' },
|
|
152
|
+
'拥抱': { name: '拥抱', category: EmojiCategory.GESTURE, path: 'assets/gesture/拥抱.png' },
|
|
153
|
+
'弱': { name: '弱', category: EmojiCategory.GESTURE, path: 'assets/gesture/弱.png' },
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
// 动物表情
|
|
157
|
+
'猪头': { name: '猪头', category: EmojiCategory.ANIMAL, path: 'assets/animal/猪头.png' },
|
|
158
|
+
'跳跳': { name: '跳跳', category: EmojiCategory.ANIMAL, path: 'assets/animal/跳跳.png' },
|
|
159
|
+
'发抖': { name: '发抖', category: EmojiCategory.ANIMAL, path: 'assets/animal/发抖.png' },
|
|
160
|
+
'转圈': { name: '转圈', category: EmojiCategory.ANIMAL, path: 'assets/animal/转圈.png' },
|
|
161
|
+
|
|
162
|
+
// 祝福表情
|
|
163
|
+
'庆祝': { name: '庆祝', category: EmojiCategory.BLESSING, path: 'assets/blessing/庆祝.png' },
|
|
164
|
+
'礼物': { name: '礼物', category: EmojiCategory.BLESSING, path: 'assets/blessing/礼物.png' },
|
|
165
|
+
'红包': { name: '红包', category: EmojiCategory.BLESSING, path: 'assets/blessing/红包.png' },
|
|
166
|
+
'發': { name: '發', category: EmojiCategory.BLESSING, path: 'assets/blessing/發.png' },
|
|
167
|
+
'福': { name: '福', category: EmojiCategory.BLESSING, path: 'assets/blessing/福.png' },
|
|
168
|
+
'烟花': { name: '烟花', category: EmojiCategory.BLESSING, path: 'assets/blessing/烟花.png' },
|
|
169
|
+
'爆竹': { name: '爆竹', category: EmojiCategory.BLESSING, path: 'assets/blessing/爆竹.png' },
|
|
170
|
+
|
|
171
|
+
// 其他表情
|
|
172
|
+
'嘴唇': { name: '嘴唇', category: EmojiCategory.OTHER, path: 'assets/other/嘴唇.png' },
|
|
173
|
+
'爱心': { name: '爱心', category: EmojiCategory.OTHER, path: 'assets/other/爱心.png' },
|
|
174
|
+
'心碎': { name: '心碎', category: EmojiCategory.OTHER, path: 'assets/other/心碎.png' },
|
|
175
|
+
'啤酒': { name: '啤酒', category: EmojiCategory.OTHER, path: 'assets/other/啤酒.png' },
|
|
176
|
+
'咖啡': { name: '咖啡', category: EmojiCategory.OTHER, path: 'assets/other/咖啡.png' },
|
|
177
|
+
'蛋糕': { name: '蛋糕', category: EmojiCategory.OTHER, path: 'assets/other/蛋糕.png' },
|
|
178
|
+
'凋谢': { name: '凋谢', category: EmojiCategory.OTHER, path: 'assets/other/凋谢.png' },
|
|
179
|
+
'菜刀': { name: '菜刀', category: EmojiCategory.OTHER, path: 'assets/other/菜刀.png' },
|
|
180
|
+
'炸弹': { name: '炸弹', category: EmojiCategory.OTHER, path: 'assets/other/炸弹.png' },
|
|
181
|
+
'便便': { name: '便便', category: EmojiCategory.OTHER, path: 'assets/other/便便.png' },
|
|
182
|
+
'太阳': { name: '太阳', category: EmojiCategory.OTHER, path: 'assets/other/太阳.png' },
|
|
183
|
+
'晚安': { name: '晚安', category: EmojiCategory.OTHER, path: 'assets/other/晚安.png' },
|
|
184
|
+
'鲜花': { name: '鲜花', category: EmojiCategory.OTHER, path: 'assets/other/鲜花.png' }
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* 获取所有表情数据的辅助函数
|
|
189
|
+
*/
|
|
190
|
+
function getAllEmojiData(): EmojiInfo[] {
|
|
191
|
+
const result: EmojiInfo[] = [];
|
|
192
|
+
for (const key in EMOJI_DATA) {
|
|
193
|
+
if (EMOJI_DATA.hasOwnProperty(key)) {
|
|
194
|
+
result.push(EMOJI_DATA[key as EmojiName]);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return result;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* 按类别分组的表情数据
|
|
202
|
+
*/
|
|
203
|
+
export const EMOJI_CATEGORIES = {
|
|
204
|
+
[EmojiCategory.FACE]: getAllEmojiData().filter(emoji => emoji.category === EmojiCategory.FACE),
|
|
205
|
+
[EmojiCategory.GESTURE]: getAllEmojiData().filter(emoji => emoji.category === EmojiCategory.GESTURE),
|
|
206
|
+
[EmojiCategory.ANIMAL]: getAllEmojiData().filter(emoji => emoji.category === EmojiCategory.ANIMAL),
|
|
207
|
+
[EmojiCategory.BLESSING]: getAllEmojiData().filter(emoji => emoji.category === EmojiCategory.BLESSING),
|
|
208
|
+
[EmojiCategory.OTHER]: getAllEmojiData().filter(emoji => emoji.category === EmojiCategory.OTHER)
|
|
209
|
+
} as const;
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* 获取表情图片路径
|
|
213
|
+
* @param name 表情名称
|
|
214
|
+
* @returns 图片路径,如果表情不存在则返回 null
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* ```typescript
|
|
218
|
+
* const path = getEmojiPath('微笑'); // 'assets/face/微笑.png'
|
|
219
|
+
* const invalidPath = getEmojiPath('不存在'); // null
|
|
220
|
+
* ```
|
|
221
|
+
*/
|
|
222
|
+
export function getEmojiPath(name: EmojiName): string | null {
|
|
223
|
+
const emoji = EMOJI_DATA[name];
|
|
224
|
+
return emoji ? emoji.path : null;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* 获取表情信息
|
|
229
|
+
* @param name 表情名称
|
|
230
|
+
* @returns 表情信息对象,如果表情不存在则返回 null
|
|
231
|
+
*
|
|
232
|
+
* @example
|
|
233
|
+
* ```typescript
|
|
234
|
+
* const emoji = getEmojiInfo('微笑');
|
|
235
|
+
* // { name: '微笑', category: EmojiCategory.FACE, path: 'assets/face/微笑.png' }
|
|
236
|
+
* ```
|
|
237
|
+
*/
|
|
238
|
+
export function getEmojiInfo(name: EmojiName): EmojiInfo | null {
|
|
239
|
+
return EMOJI_DATA[name] || null;
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* 根据类别获取表情列表
|
|
244
|
+
* @param category 表情类别
|
|
245
|
+
* @returns 该类别下的所有表情信息
|
|
246
|
+
*
|
|
247
|
+
* @example
|
|
248
|
+
* ```typescript
|
|
249
|
+
* const faceEmojis = getEmojisByCategory(EmojiCategory.FACE);
|
|
250
|
+
* ```
|
|
251
|
+
*/
|
|
252
|
+
export function getEmojisByCategory(category: EmojiCategory): EmojiInfo[] {
|
|
253
|
+
return EMOJI_CATEGORIES[category];
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* 获取所有表情信息
|
|
258
|
+
* @returns 所有表情的信息数组
|
|
259
|
+
*
|
|
260
|
+
* @example
|
|
261
|
+
* ```typescript
|
|
262
|
+
* const allEmojis = getAllEmojis();
|
|
263
|
+
* console.log(`总共有 ${allEmojis.length} 个表情`);
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
export function getAllEmojis(): EmojiInfo[] {
|
|
267
|
+
return getAllEmojiData();
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* 搜索表情
|
|
272
|
+
* @param keyword 搜索关键词
|
|
273
|
+
* @returns 匹配的表情信息数组
|
|
274
|
+
*
|
|
275
|
+
* @example
|
|
276
|
+
* ```typescript
|
|
277
|
+
* const results = searchEmojis('笑');
|
|
278
|
+
* // 返回包含 '微笑', '偷笑', '坏笑' 等的表情
|
|
279
|
+
* ```
|
|
280
|
+
*/
|
|
281
|
+
export function searchEmojis(keyword: string): EmojiInfo[] {
|
|
282
|
+
return getAllEmojiData().filter(emoji =>
|
|
283
|
+
emoji.name.indexOf(keyword) !== -1
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
* 检查表情是否存在
|
|
289
|
+
* @param name 表情名称
|
|
290
|
+
* @returns 是否存在该表情
|
|
291
|
+
*
|
|
292
|
+
* @example
|
|
293
|
+
* ```typescript
|
|
294
|
+
* const exists = hasEmoji('微笑'); // true
|
|
295
|
+
* const notExists = hasEmoji('不存在的表情'); // false
|
|
296
|
+
* ```
|
|
297
|
+
*/
|
|
298
|
+
export function hasEmoji(name: string): name is EmojiName {
|
|
299
|
+
return name in EMOJI_DATA;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* 获取表情名称列表
|
|
304
|
+
* @param category 可选的类别筛选
|
|
305
|
+
* @returns 表情名称数组
|
|
306
|
+
*
|
|
307
|
+
* @example
|
|
308
|
+
* ```typescript
|
|
309
|
+
* const allNames = getEmojiNames();
|
|
310
|
+
* const faceNames = getEmojiNames(EmojiCategory.FACE);
|
|
311
|
+
* ```
|
|
312
|
+
*/
|
|
313
|
+
export function getEmojiNames(category?: EmojiCategory): string[] {
|
|
314
|
+
if (category) {
|
|
315
|
+
return getEmojisByCategory(category).map(emoji => emoji.name);
|
|
316
|
+
}
|
|
317
|
+
const names: string[] = [];
|
|
318
|
+
for (const key in EMOJI_DATA) {
|
|
319
|
+
if (EMOJI_DATA.hasOwnProperty(key)) {
|
|
320
|
+
names.push(key);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
return names;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* 随机获取表情
|
|
328
|
+
* @param category 可选的类别筛选
|
|
329
|
+
* @returns 随机表情信息
|
|
330
|
+
*
|
|
331
|
+
* @example
|
|
332
|
+
* ```typescript
|
|
333
|
+
* const randomEmoji = getRandomEmoji();
|
|
334
|
+
* const randomFaceEmoji = getRandomEmoji(EmojiCategory.FACE);
|
|
335
|
+
* ```
|
|
336
|
+
*/
|
|
337
|
+
export function getRandomEmoji(category?: EmojiCategory): EmojiInfo {
|
|
338
|
+
const emojis = category ? getEmojisByCategory(category) : getAllEmojis();
|
|
339
|
+
const randomIndex = Math.floor(Math.random() * emojis.length);
|
|
340
|
+
return emojis[randomIndex];
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* 默认导出对象,包含所有主要功能
|
|
345
|
+
*/
|
|
346
|
+
const WeChatEmojis = {
|
|
347
|
+
// 枚举和类型
|
|
348
|
+
EmojiCategory,
|
|
349
|
+
|
|
350
|
+
// 数据
|
|
351
|
+
EMOJI_CATEGORIES,
|
|
352
|
+
|
|
353
|
+
// 工具函数
|
|
354
|
+
getEmojiPath,
|
|
355
|
+
getEmojiInfo,
|
|
356
|
+
getEmojisByCategory,
|
|
357
|
+
getAllEmojis,
|
|
358
|
+
searchEmojis,
|
|
359
|
+
hasEmoji,
|
|
360
|
+
getEmojiNames,
|
|
361
|
+
getRandomEmoji
|
|
362
|
+
} as const;
|
|
363
|
+
|
|
364
|
+
export default WeChatEmojis;
|