wechat-emojis 1.0.0 → 2.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.
Files changed (106) hide show
  1. package/README.md +82 -19
  2. package/assets/animal//345/217/221/346/212/226.png +0 -0
  3. package/assets/animal//347/214/252/345/244/264.png +0 -0
  4. package/assets/animal//350/267/263/350/267/263.png +0 -0
  5. package/assets/animal//350/275/254/345/234/210.png +0 -0
  6. package/assets/blessing//347/210/206/347/253/271.png +0 -0
  7. package/assets/blessing//347/231/274.png +0 -0
  8. package/assets/blessing//347/244/274/347/211/251.png +0 -0
  9. package/assets/face/Emm.png +0 -0
  10. package/assets/face//344/272/262/344/272/262.png +0 -0
  11. package/assets/face//345/201/267/347/254/221.png +0 -0
  12. package/assets/face//345/202/262/346/205/242.png +0 -0
  13. package/assets/face//345/206/215/350/247/201.png +0 -0
  14. package/assets/face//345/212/240/346/262/271.png +0 -0
  15. package/assets/face//345/217/221/345/221/206.png +0 -0
  16. package/assets/face//345/217/221/346/200/222.png +0 -0
  17. package/assets/face//345/217/257/346/200/234.png +0 -0
  18. package/assets/face//345/217/263/345/223/274/345/223/274.png +0 -0
  19. package/assets/face//345/217/271/346/260/224.png +0 -0
  20. package/assets/face//345/220/220.png +0 -0
  21. package/assets/face//345/221/262/347/211/231.png +0 -0
  22. package/assets/face//345/222/222/351/252/202.png +0 -0
  23. package/assets/face//345/223/207.png +0 -0
  24. package/assets/face//345/230/230.png +0 -0
  25. package/assets/face//345/230/277/345/223/210.png +0 -0
  26. package/assets/face//345/233/247.png +0 -0
  27. package/assets/face//345/233/260.png +0 -0
  28. package/assets/face//345/235/217/347/254/221.png +0 -0
  29. package/assets/face//345/244/247/345/223/255.png +0 -0
  30. package/assets/face//345/244/251/345/225/212.png +0 -0
  31. package/assets/face//345/245/270/347/254/221.png +0 -0
  32. package/assets/face//345/247/224/345/261/210.png +0 -0
  33. package/assets/face//345/256/263/347/276/236.png +0 -0
  34. package/assets/face//345/260/264/345/260/254.png +0 -0
  35. package/assets/face//345/276/227/346/204/217.png +0 -0
  36. package/assets/face//345/276/256/347/254/221.png +0 -0
  37. package/assets/face//345/277/253/345/223/255/344/272/206.png +0 -0
  38. package/assets/face//346/201/220/346/203/247.png +0 -0
  39. package/assets/face//346/202/240/351/227/262.png +0 -0
  40. package/assets/face//346/203/212/346/201/220.png +0 -0
  41. package/assets/face//346/203/212/350/256/266.png +0 -0
  42. package/assets/face//346/204/211/345/277/253.png +0 -0
  43. package/assets/face//346/206/250/347/254/221.png +0 -0
  44. package/assets/face//346/211/223/350/204/270.png +0 -0
  45. package/assets/face//346/212/223/347/213/202.png +0 -0
  46. package/assets/face//346/212/240/351/274/273.png +0 -0
  47. package/assets/face//346/222/207/345/230/264.png +0 -0
  48. package/assets/face//346/223/246/346/261/227.png +0 -0
  49. package/assets/face//346/225/262/346/211/223.png +0 -0
  50. package/assets/face//346/227/240/350/257/255.png +0 -0
  51. package/assets/face//346/227/272/346/237/264.png +0 -0
  52. package/assets/face//346/231/225.png +0 -0
  53. package/assets/face//346/265/201/346/263/252.png +0 -0
  54. package/assets/face//347/226/221/351/227/256.png +0 -0
  55. package/assets/face//347/231/275/347/234/274.png +0 -0
  56. package/assets/face//347/232/261/347/234/211.png +0 -0
  57. package/assets/face//347/235/241.png +0 -0
  58. package/assets/face//347/244/276/344/274/232/347/244/276/344/274/232.png +0 -0
  59. package/assets/face//350/200/266.png +0 -0
  60. package/assets/face//350/204/270/347/272/242.png +0 -0
  61. package/assets/face//350/211/262.png +0 -0
  62. package/assets/face//350/213/246/346/266/251.png +0 -0
  63. package/assets/face//350/243/202/345/274/200.png +0 -0
  64. package/assets/face//350/256/251/346/210/221/347/234/213/347/234/213.png +0 -0
  65. package/assets/face//350/260/203/347/232/256.png +0 -0
  66. package/assets/face//351/227/255/345/230/264.png +0 -0
  67. package/assets/face//351/232/276/350/277/207.png +0 -0
  68. package/assets/face//351/252/267/351/253/205.png +0 -0
  69. package/assets/face//351/274/223/346/216/214.png +0 -0
  70. package/assets/gesture/OK.png +0 -0
  71. package/assets/gesture//345/213/276/345/274/225.png +0 -0
  72. package/assets/gesture//345/220/210/345/215/201.png +0 -0
  73. package/assets/gesture//345/274/261.png +0 -0
  74. package/assets/gesture//346/212/261/346/213/263.png +0 -0
  75. package/assets/gesture//346/213/245/346/212/261.png +0 -0
  76. package/assets/gesture//346/213/263/345/244/264.png +0 -0
  77. package/assets/gesture//346/217/241/346/211/213.png +0 -0
  78. package/assets/gesture//350/203/234/345/210/251.png +0 -0
  79. package/assets/other//344/276/277/344/276/277.png +0 -0
  80. package/assets/other//345/207/213/350/260/242.png +0 -0
  81. package/assets/other//345/222/226/345/225/241.png +0 -0
  82. package/assets/other//345/225/244/351/205/222.png +0 -0
  83. package/assets/other//345/230/264/345/224/207.png +0 -0
  84. package/assets/other//345/244/252/351/230/263.png +0 -0
  85. package/assets/other//345/277/203/347/242/216.png +0 -0
  86. package/assets/other//346/234/210/344/272/256.png +0 -0
  87. package/assets/other//347/202/270/345/274/271.png +0 -0
  88. package/assets/other//347/210/261/345/277/203.png +0 -0
  89. package/assets/other//347/216/253/347/221/260.png +0 -0
  90. package/assets/other//350/217/234/345/210/200.png +0 -0
  91. package/assets/other//350/233/213/347/263/225.png +0 -0
  92. package/dist/index.d.ts +162 -0
  93. package/{wechatEmoji.js → dist/index.js} +13 -13
  94. package/{API.md → docs/API.md} +8 -8
  95. package/docs/NPM_USAGE.md +223 -0
  96. package/{REACT_USAGE.md → docs/REACT_USAGE.md} +3 -4
  97. package/package.json +23 -15
  98. package/assets/face//347/244/276/344/274/232.png +0 -0
  99. package/assets/gesture//345/276/227/346/204/217.png +0 -0
  100. package/assets/gesture//350/200/266.png +0 -0
  101. package/assets/other//345/245/213/346/226/227.png +0 -0
  102. package/assets/other//346/231/232/345/256/211.png +0 -0
  103. package/assets/other//347/210/206/347/217/240.png +0 -0
  104. package/assets/other//347/210/206/347/253/271.png +0 -0
  105. package/assets/other//351/262/234/350/212/261.png +0 -0
  106. package/wechatEmoji.ts +0 -364
package/wechatEmoji.ts DELETED
@@ -1,364 +0,0 @@
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;