emoji-picker-react 4.16.0 → 4.17.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 (220) hide show
  1. package/README.md +101 -41
  2. package/dist/components/body/EmojiCategory.d.ts +1 -1
  3. package/dist/components/context/PickerDataContext.d.ts +16 -0
  4. package/dist/components/navigation/CategoryButton.d.ts +1 -1
  5. package/dist/config/categoryConfig.d.ts +2 -6
  6. package/dist/config/config.d.ts +4 -1
  7. package/dist/config/useConfig.d.ts +1 -0
  8. package/dist/data/emojis-bn.d.ts +3 -0
  9. package/dist/data/emojis-bn.js +2 -0
  10. package/dist/data/emojis-bn.json +1 -0
  11. package/dist/data/emojis-bn.ts +3 -0
  12. package/dist/data/emojis-da.d.ts +3 -0
  13. package/dist/data/emojis-da.js +2 -0
  14. package/dist/data/emojis-da.json +1 -0
  15. package/dist/data/emojis-da.ts +3 -0
  16. package/dist/data/emojis-de.d.ts +3 -0
  17. package/dist/data/emojis-de.js +2 -0
  18. package/dist/data/emojis-de.json +1 -0
  19. package/dist/data/emojis-de.ts +3 -0
  20. package/dist/data/emojis-en-gb.d.ts +3 -0
  21. package/dist/data/emojis-en-gb.js +2 -0
  22. package/dist/data/emojis-en-gb.json +1 -0
  23. package/dist/data/emojis-en-gb.ts +3 -0
  24. package/dist/data/emojis-en.d.ts +3 -0
  25. package/dist/data/emojis-en.js +2 -0
  26. package/dist/data/emojis-en.json +1 -0
  27. package/dist/data/emojis-en.ts +3 -0
  28. package/dist/data/emojis-es-mx.d.ts +3 -0
  29. package/dist/data/emojis-es-mx.js +2 -0
  30. package/dist/data/emojis-es-mx.json +1 -0
  31. package/dist/data/emojis-es-mx.ts +3 -0
  32. package/dist/data/emojis-es.d.ts +3 -0
  33. package/dist/data/emojis-es.js +2 -0
  34. package/dist/data/emojis-es.json +1 -0
  35. package/dist/data/emojis-es.ts +3 -0
  36. package/dist/data/emojis-et.d.ts +3 -0
  37. package/dist/data/emojis-et.js +2 -0
  38. package/dist/data/emojis-et.json +1 -0
  39. package/dist/data/emojis-et.ts +3 -0
  40. package/dist/data/emojis-fi.d.ts +3 -0
  41. package/dist/data/emojis-fi.js +2 -0
  42. package/dist/data/emojis-fi.json +1 -0
  43. package/dist/data/emojis-fi.ts +3 -0
  44. package/dist/data/emojis-fr.d.ts +3 -0
  45. package/dist/data/emojis-fr.js +2 -0
  46. package/dist/data/emojis-fr.json +1 -0
  47. package/dist/data/emojis-fr.ts +3 -0
  48. package/dist/data/emojis-hi.d.ts +3 -0
  49. package/dist/data/emojis-hi.js +2 -0
  50. package/dist/data/emojis-hi.json +1 -0
  51. package/dist/data/emojis-hi.ts +3 -0
  52. package/dist/data/emojis-hu.d.ts +3 -0
  53. package/dist/data/emojis-hu.js +2 -0
  54. package/dist/data/emojis-hu.json +1 -0
  55. package/dist/data/emojis-hu.ts +3 -0
  56. package/dist/data/emojis-it.d.ts +3 -0
  57. package/dist/data/emojis-it.js +2 -0
  58. package/dist/data/emojis-it.json +1 -0
  59. package/dist/data/emojis-it.ts +3 -0
  60. package/dist/data/emojis-ja.d.ts +3 -0
  61. package/dist/data/emojis-ja.js +2 -0
  62. package/dist/data/emojis-ja.json +1 -0
  63. package/dist/data/emojis-ja.ts +3 -0
  64. package/dist/data/emojis-ko.d.ts +3 -0
  65. package/dist/data/emojis-ko.js +2 -0
  66. package/dist/data/emojis-ko.json +1 -0
  67. package/dist/data/emojis-ko.ts +3 -0
  68. package/dist/data/emojis-lt.d.ts +3 -0
  69. package/dist/data/emojis-lt.js +2 -0
  70. package/dist/data/emojis-lt.json +1 -0
  71. package/dist/data/emojis-lt.ts +3 -0
  72. package/dist/data/emojis-ms.d.ts +3 -0
  73. package/dist/data/emojis-ms.js +2 -0
  74. package/dist/data/emojis-ms.json +1 -0
  75. package/dist/data/emojis-ms.ts +3 -0
  76. package/dist/data/emojis-nb.d.ts +3 -0
  77. package/dist/data/emojis-nb.js +2 -0
  78. package/dist/data/emojis-nb.json +1 -0
  79. package/dist/data/emojis-nb.ts +3 -0
  80. package/dist/data/emojis-nl.d.ts +3 -0
  81. package/dist/data/emojis-nl.js +2 -0
  82. package/dist/data/emojis-nl.json +1 -0
  83. package/dist/data/emojis-nl.ts +3 -0
  84. package/dist/data/emojis-pl.d.ts +3 -0
  85. package/dist/data/emojis-pl.js +2 -0
  86. package/dist/data/emojis-pl.json +1 -0
  87. package/dist/data/emojis-pl.ts +3 -0
  88. package/dist/data/emojis-pt.d.ts +3 -0
  89. package/dist/data/emojis-pt.js +2 -0
  90. package/dist/data/emojis-pt.json +1 -0
  91. package/dist/data/emojis-pt.ts +3 -0
  92. package/dist/data/emojis-ru.d.ts +3 -0
  93. package/dist/data/emojis-ru.js +2 -0
  94. package/dist/data/emojis-ru.json +1 -0
  95. package/dist/data/emojis-ru.ts +3 -0
  96. package/dist/data/emojis-sv.d.ts +3 -0
  97. package/dist/data/emojis-sv.js +2 -0
  98. package/dist/data/emojis-sv.json +1 -0
  99. package/dist/data/emojis-sv.ts +3 -0
  100. package/dist/data/emojis-th.d.ts +3 -0
  101. package/dist/data/emojis-th.js +2 -0
  102. package/dist/data/emojis-th.json +1 -0
  103. package/dist/data/emojis-th.ts +3 -0
  104. package/dist/data/emojis-uk.d.ts +3 -0
  105. package/dist/data/emojis-uk.js +2 -0
  106. package/dist/data/emojis-uk.json +1 -0
  107. package/dist/data/emojis-uk.ts +3 -0
  108. package/dist/data/emojis-zh-hant.d.ts +3 -0
  109. package/dist/data/emojis-zh-hant.js +2 -0
  110. package/dist/data/emojis-zh-hant.json +1 -0
  111. package/dist/data/emojis-zh-hant.ts +3 -0
  112. package/dist/data/emojis-zh.d.ts +3 -0
  113. package/dist/data/emojis-zh.js +2 -0
  114. package/dist/data/emojis-zh.json +1 -0
  115. package/dist/data/emojis-zh.ts +3 -0
  116. package/dist/data/emojis.d.ts +102 -50
  117. package/dist/data/emojis.js +1 -0
  118. package/dist/data/emojis.json +1 -0
  119. package/dist/data/emojis.ts +1 -0
  120. package/dist/data/groups.d.ts +2 -2
  121. package/dist/data/groups.js +11 -0
  122. package/dist/data/groups.ts +12 -0
  123. package/dist/data/skinToneVariations.d.ts +5 -5
  124. package/dist/data/skinToneVariations.js +17 -0
  125. package/dist/data/skinToneVariations.ts +31 -0
  126. package/dist/dataUtils/DataTypes.d.ts +2 -2
  127. package/dist/dataUtils/emojiUtils.d.ts +12 -0
  128. package/dist/emoji-picker-react.cjs.development.js +20142 -17373
  129. package/dist/emoji-picker-react.cjs.development.js.map +1 -1
  130. package/dist/emoji-picker-react.cjs.production.min.js +1 -1
  131. package/dist/emoji-picker-react.cjs.production.min.js.map +1 -1
  132. package/dist/emoji-picker-react.esm.js +20143 -17374
  133. package/dist/emoji-picker-react.esm.js.map +1 -1
  134. package/dist/typeRefinements/typeRefinements.d.ts +2 -1
  135. package/dist/types/exposedTypes.d.ts +64 -50
  136. package/dist/types/exposedTypes.js +46 -0
  137. package/package.json +9 -5
  138. package/src/EmojiPickerReact.tsx +4 -1
  139. package/src/components/Reactions/Reactions.tsx +28 -20
  140. package/src/components/body/EmojiCategory.tsx +1 -1
  141. package/src/components/body/EmojiList.tsx +3 -5
  142. package/src/components/context/PickerConfigContext.tsx +3 -1
  143. package/src/components/context/PickerContext.tsx +7 -2
  144. package/src/components/context/PickerDataContext.tsx +157 -0
  145. package/src/components/emoji/ClickableEmojiButton.tsx +1 -3
  146. package/src/components/emoji/ViewOnlyEmoji.tsx +4 -5
  147. package/src/components/footer/Preview.tsx +6 -6
  148. package/src/components/header/Search/BtnClearSearch.tsx +4 -2
  149. package/src/components/navigation/CategoryButton.tsx +2 -4
  150. package/src/config/categoryConfig.ts +47 -30
  151. package/src/config/compareConfig.ts +4 -2
  152. package/src/config/config.ts +34 -15
  153. package/src/config/useConfig.ts +6 -0
  154. package/src/data/emojis-bn.json +1 -0
  155. package/src/data/emojis-bn.ts +3 -0
  156. package/src/data/emojis-da.json +1 -0
  157. package/src/data/emojis-da.ts +3 -0
  158. package/src/data/emojis-de.json +1 -0
  159. package/src/data/emojis-de.ts +3 -0
  160. package/src/data/emojis-en-gb.json +1 -0
  161. package/src/data/emojis-en-gb.ts +3 -0
  162. package/src/data/emojis-en.json +1 -0
  163. package/src/data/emojis-en.ts +3 -0
  164. package/src/data/emojis-es-mx.json +1 -0
  165. package/src/data/emojis-es-mx.ts +3 -0
  166. package/src/data/emojis-es.json +1 -0
  167. package/src/data/emojis-es.ts +3 -0
  168. package/src/data/emojis-et.json +1 -0
  169. package/src/data/emojis-et.ts +3 -0
  170. package/src/data/emojis-fi.json +1 -0
  171. package/src/data/emojis-fi.ts +3 -0
  172. package/src/data/emojis-fr.json +1 -0
  173. package/src/data/emojis-fr.ts +3 -0
  174. package/src/data/emojis-hi.json +1 -0
  175. package/src/data/emojis-hi.ts +3 -0
  176. package/src/data/emojis-hu.json +1 -0
  177. package/src/data/emojis-hu.ts +3 -0
  178. package/src/data/emojis-it.json +1 -0
  179. package/src/data/emojis-it.ts +3 -0
  180. package/src/data/emojis-ja.json +1 -0
  181. package/src/data/emojis-ja.ts +3 -0
  182. package/src/data/emojis-ko.json +1 -0
  183. package/src/data/emojis-ko.ts +3 -0
  184. package/src/data/emojis-lt.json +1 -0
  185. package/src/data/emojis-lt.ts +3 -0
  186. package/src/data/emojis-ms.json +1 -0
  187. package/src/data/emojis-ms.ts +3 -0
  188. package/src/data/emojis-nb.json +1 -0
  189. package/src/data/emojis-nb.ts +3 -0
  190. package/src/data/emojis-nl.json +1 -0
  191. package/src/data/emojis-nl.ts +3 -0
  192. package/src/data/emojis-pl.json +1 -0
  193. package/src/data/emojis-pl.ts +3 -0
  194. package/src/data/emojis-pt.json +1 -0
  195. package/src/data/emojis-pt.ts +3 -0
  196. package/src/data/emojis-ru.json +1 -0
  197. package/src/data/emojis-ru.ts +3 -0
  198. package/src/data/emojis-sv.json +1 -0
  199. package/src/data/emojis-sv.ts +3 -0
  200. package/src/data/emojis-th.json +1 -0
  201. package/src/data/emojis-th.ts +3 -0
  202. package/src/data/emojis-uk.json +1 -0
  203. package/src/data/emojis-uk.ts +3 -0
  204. package/src/data/emojis-zh-hant.json +1 -0
  205. package/src/data/emojis-zh-hant.ts +3 -0
  206. package/src/data/emojis-zh.json +1 -0
  207. package/src/data/emojis-zh.ts +3 -0
  208. package/src/data/emojis.json +1 -1
  209. package/src/data/emojis.ts +1 -1
  210. package/src/dataUtils/DataTypes.ts +2 -2
  211. package/src/dataUtils/alphaNumericEmojiIndex.ts +1 -8
  212. package/src/dataUtils/emojiSelectors.ts +24 -25
  213. package/src/dataUtils/emojiUtils.ts +74 -0
  214. package/src/hooks/preloadEmoji.ts +1 -1
  215. package/src/hooks/useDisallowedEmojis.ts +4 -3
  216. package/src/hooks/useEmojiVirtualization.tsx +2 -3
  217. package/src/hooks/useFilter.ts +1 -1
  218. package/src/hooks/useIsEmojiHidden.ts +1 -1
  219. package/src/typeRefinements/typeRefinements.ts +2 -5
  220. package/src/types/exposedTypes.ts +17 -0
@@ -1,4 +1,4 @@
1
- import emojis from '../data/emojis';
1
+ import { Categories } from '../types/exposedTypes';
2
2
 
3
3
  export enum EmojiProperties {
4
4
  name = 'n',
@@ -17,7 +17,7 @@ export interface DataEmoji extends WithName {
17
17
 
18
18
  export type DataEmojis = DataEmoji[];
19
19
 
20
- export type DataGroups = keyof typeof emojis;
20
+ export type DataGroups = Categories;
21
21
 
22
22
  export type WithName = {
23
23
  [EmojiProperties.name]: string[];
@@ -1,15 +1,8 @@
1
1
  import { DataEmoji } from './DataTypes';
2
- import { allEmojis, emojiNames, emojiUnified } from './emojiSelectors';
2
+ import { emojiNames, emojiUnified } from './emojiUtils';
3
3
 
4
4
  export const alphaNumericEmojiIndex: BaseIndex = {};
5
5
 
6
- setTimeout(() => {
7
- allEmojis.reduce((searchIndex, emoji) => {
8
- indexEmoji(emoji);
9
- return searchIndex;
10
- }, alphaNumericEmojiIndex as BaseIndex);
11
- });
12
-
13
6
  type BaseIndex = Record<string, Record<string, DataEmoji>>;
14
7
 
15
8
  export function indexEmoji(emoji: DataEmoji): void {
@@ -7,7 +7,7 @@ import { CustomEmoji } from '../config/customEmojiConfig';
7
7
  import { useSuggestedEmojisModeConfig } from '../config/useConfig';
8
8
  import emojis from '../data/emojis';
9
9
  import skinToneVariations, {
10
- skinTonesMapped
10
+ skinTonesMapped,
11
11
  } from '../data/skinToneVariations';
12
12
  import { EmojiStyle, SkinTones } from '../types/exposedTypes';
13
13
 
@@ -28,7 +28,8 @@ export function emojiName(emoji?: WithName): string {
28
28
  return '';
29
29
  }
30
30
 
31
- return emojiNames(emoji)[0];
31
+ const names = emojiNames(emoji);
32
+ return names[names.length - 1];
32
33
  }
33
34
 
34
35
  export function unifiedWithoutSkinTone(unified: string): string {
@@ -61,11 +62,11 @@ export function useGetEmojisByCategory(): (Category: Categories) => DataEmojis {
61
62
  const suggested = getSuggested(suggestedEmojisModeConfig) ?? [];
62
63
 
63
64
  return suggested
64
- .map(s => emojiByUnified(s.unified))
65
+ .map((s) => emojiByUnified(s.unified))
65
66
  .filter(Boolean) as DataEmojis;
66
67
  },
67
68
  // eslint-disable-next-line react-hooks/exhaustive-deps
68
- [suggestedUpdated, suggestedEmojisModeConfig]
69
+ [suggestedUpdated, suggestedEmojisModeConfig],
69
70
  );
70
71
 
71
72
  return function getEmojisByCategory(category: Categories): DataEmojis {
@@ -74,14 +75,14 @@ export function useGetEmojisByCategory(): (Category: Categories) => DataEmojis {
74
75
  }
75
76
 
76
77
  // @ts-ignore
77
- return emojis[category] ?? [];
78
+ return emojis.emojis[category] ?? [];
78
79
  };
79
80
  }
80
81
 
81
82
  // WARNING: DO NOT USE DIRECTLY
82
83
  export function emojiUrlByUnified(
83
84
  unified: string,
84
- emojiStyle: EmojiStyle
85
+ emojiStyle: EmojiStyle,
85
86
  ): string {
86
87
  return `${cdnUrl(emojiStyle)}${unified}.png`;
87
88
  }
@@ -96,10 +97,10 @@ export function emojiHasVariations(emoji: DataEmoji): boolean {
96
97
 
97
98
  export function emojiVariationUnified(
98
99
  emoji: DataEmoji,
99
- skinTone?: string
100
+ skinTone?: string,
100
101
  ): string | undefined {
101
102
  return skinTone
102
- ? emojiVariations(emoji).find(variation => variation.includes(skinTone))
103
+ ? emojiVariations(emoji).find((variation) => variation.includes(skinTone))
103
104
  : emojiUnified(emoji);
104
105
  }
105
106
 
@@ -116,15 +117,15 @@ export function emojiByUnified(unified?: string): DataEmoji | undefined {
116
117
  return allEmojisByUnified[withoutSkinTone];
117
118
  }
118
119
 
119
- export const allEmojis: DataEmojis = Object.values(emojis).flat();
120
+ export const allEmojis: DataEmojis = Object.values(emojis.emojis).flat();
120
121
 
121
122
  export function setCustomEmojis(customEmojis: CustomEmoji[]): void {
122
- emojis[Categories.CUSTOM].length = 0;
123
+ emojis.emojis[Categories.CUSTOM].length = 0;
123
124
 
124
- customEmojis.forEach(emoji => {
125
+ customEmojis.forEach((emoji) => {
125
126
  const emojiData = customToRegularEmoji(emoji);
126
127
 
127
- emojis[Categories.CUSTOM].push(emojiData as never);
128
+ emojis.emojis[Categories.CUSTOM].push(emojiData as never);
128
129
 
129
130
  if (allEmojisByUnified[emojiData[EmojiProperties.unified]]) {
130
131
  return;
@@ -138,10 +139,10 @@ export function setCustomEmojis(customEmojis: CustomEmoji[]): void {
138
139
 
139
140
  function customToRegularEmoji(emoji: CustomEmoji): DataEmoji {
140
141
  return {
141
- [EmojiProperties.name]: emoji.names.map(name => name.toLowerCase()),
142
+ [EmojiProperties.name]: emoji.names.map((name) => name.toLowerCase()),
142
143
  [EmojiProperties.unified]: emoji.id.toLowerCase(),
143
144
  [EmojiProperties.added_in]: '0',
144
- [EmojiProperties.imgUrl]: emoji.imgUrl
145
+ [EmojiProperties.imgUrl]: emoji.imgUrl,
145
146
  };
146
147
  }
147
148
 
@@ -149,19 +150,17 @@ const allEmojisByUnified: {
149
150
  [unified: string]: DataEmoji;
150
151
  } = {};
151
152
 
152
- setTimeout(() => {
153
- allEmojis.reduce((allEmojis, Emoji) => {
154
- allEmojis[emojiUnified(Emoji)] = Emoji;
153
+ allEmojis.reduce((allEmojis, Emoji) => {
154
+ allEmojis[emojiUnified(Emoji)] = Emoji;
155
155
 
156
- if (emojiHasVariations(Emoji)) {
157
- emojiVariations(Emoji).forEach(variation => {
158
- allEmojis[variation] = Emoji;
159
- });
160
- }
156
+ if (emojiHasVariations(Emoji)) {
157
+ emojiVariations(Emoji).forEach((variation) => {
158
+ allEmojis[variation] = Emoji;
159
+ });
160
+ }
161
161
 
162
- return allEmojis;
163
- }, allEmojisByUnified);
164
- });
162
+ return allEmojis;
163
+ }, allEmojisByUnified);
165
164
 
166
165
  export function activeVariationFromUnified(unified: string): SkinTones | null {
167
166
  const [, suspectedSkinTone] = unified.split('-') as [string, SkinTones];
@@ -0,0 +1,74 @@
1
+ import { cdnUrl } from '../config/cdnUrls';
2
+ import { skinTonesMapped } from '../data/skinToneVariations';
3
+ import { EmojiStyle, SkinTones } from '../types/exposedTypes';
4
+
5
+ import { DataEmoji, EmojiProperties, WithName } from './DataTypes';
6
+
7
+ export function emojiNames(emoji: WithName): string[] {
8
+ return emoji[EmojiProperties.name] ?? [];
9
+ }
10
+
11
+ export function addedIn(emoji: DataEmoji): number {
12
+ return parseFloat(emoji[EmojiProperties.added_in] || '0');
13
+ }
14
+
15
+ export function emojiName(emoji?: WithName): string {
16
+ if (!emoji) {
17
+ return '';
18
+ }
19
+
20
+ const names = emojiNames(emoji);
21
+ return names[names.length - 1];
22
+ }
23
+
24
+ export function unifiedWithoutSkinTone(unified: string): string {
25
+ const splat = unified.split('-');
26
+ const [skinTone] = splat.splice(1, 1);
27
+
28
+ if (skinTonesMapped[skinTone]) {
29
+ return splat.join('-');
30
+ }
31
+
32
+ return unified;
33
+ }
34
+
35
+ export function emojiUnified(emoji: DataEmoji, skinTone?: string): string {
36
+ const unified = emoji[EmojiProperties.unified];
37
+
38
+ if (!skinTone || !emojiHasVariations(emoji)) {
39
+ return unified;
40
+ }
41
+
42
+ return emojiVariationUnified(emoji, skinTone) ?? unified;
43
+ }
44
+
45
+ export function emojiUrlByUnified(
46
+ unified: string,
47
+ emojiStyle: EmojiStyle,
48
+ ): string {
49
+ return `${cdnUrl(emojiStyle)}${unified}.png`;
50
+ }
51
+
52
+ export function emojiVariations(emoji: DataEmoji): string[] {
53
+ return emoji[EmojiProperties.variations] ?? [];
54
+ }
55
+
56
+ export function emojiHasVariations(emoji: DataEmoji): boolean {
57
+ return emojiVariations(emoji).length > 0;
58
+ }
59
+
60
+ export function emojiVariationUnified(
61
+ emoji: DataEmoji,
62
+ skinTone?: string,
63
+ ): string | undefined {
64
+ return skinTone
65
+ ? emojiVariations(emoji).find((variation) => variation.includes(skinTone))
66
+ : emojiUnified(emoji);
67
+ }
68
+
69
+ export function activeVariationFromUnified(unified: string): SkinTones | null {
70
+ const [, suspectedSkinTone] = unified.split('-') as [string, SkinTones];
71
+ return Object.keys(skinTonesMapped).includes(suspectedSkinTone)
72
+ ? suspectedSkinTone
73
+ : null;
74
+ }
@@ -1,6 +1,6 @@
1
1
  import { GetEmojiUrl } from '../components/emoji/BaseEmojiProps';
2
2
  import { DataEmoji } from '../dataUtils/DataTypes';
3
- import { emojiUnified, emojiVariations } from '../dataUtils/emojiSelectors';
3
+ import { emojiUnified, emojiVariations } from '../dataUtils/emojiUtils';
4
4
  import { EmojiStyle } from '../types/exposedTypes';
5
5
  import { Dimensions } from '../virtualization/virtualizationHelpers';
6
6
 
@@ -1,19 +1,20 @@
1
1
  import { useRef, useMemo } from 'react';
2
2
 
3
+ import { usePickerDataContext } from '../components/context/PickerDataContext';
3
4
  import { useEmojiVersionConfig } from '../config/useConfig';
4
5
  import { DataEmoji } from '../dataUtils/DataTypes';
5
6
  import {
6
7
  addedIn,
7
- allEmojis,
8
8
  emojiUnified,
9
9
  unifiedWithoutSkinTone
10
- } from '../dataUtils/emojiSelectors';
10
+ } from '../dataUtils/emojiUtils';
11
11
 
12
12
  import { useIsUnicodeHidden } from './useHideEmojisByUniocode';
13
13
 
14
14
  export function useDisallowedEmojis() {
15
15
  const DisallowedEmojisRef = useRef<Record<string, boolean>>({});
16
16
  const emojiVersionConfig = useEmojiVersionConfig();
17
+ const { allEmojis } = usePickerDataContext();
17
18
 
18
19
  return useMemo(() => {
19
20
  const emojiVersion = parseFloat(`${emojiVersionConfig}`);
@@ -29,7 +30,7 @@ export function useDisallowedEmojis() {
29
30
 
30
31
  return disallowedEmojis;
31
32
  }, DisallowedEmojisRef.current);
32
- }, [emojiVersionConfig]);
33
+ }, [emojiVersionConfig, allEmojis]);
33
34
  }
34
35
 
35
36
  export function useIsEmojiDisallowed() {
@@ -1,5 +1,4 @@
1
-
2
- import { ReactNode, useEffect } from 'react';
1
+ import { ReactNode, useEffect } from 'react';
3
2
  import * as React from 'react';
4
3
 
5
4
  import { useBodyRef } from '../components/context/ElementRefContext';
@@ -12,7 +11,7 @@ import {
12
11
  useSkinTonesDisabledConfig
13
12
  } from '../config/useConfig';
14
13
  import { DataEmojis } from '../dataUtils/DataTypes';
15
- import { emojiUnified } from '../dataUtils/emojiSelectors';
14
+ import { emojiUnified } from '../dataUtils/emojiUtils';
16
15
  import {
17
16
  getEmojiPositionStyle,
18
17
  shouldVirtualize
@@ -10,7 +10,7 @@ import {
10
10
  } from '../components/context/PickerContext';
11
11
  import { useSearchResultsConfig } from '../config/useConfig';
12
12
  import { DataEmoji } from '../dataUtils/DataTypes';
13
- import { emojiNames } from '../dataUtils/emojiSelectors';
13
+ import { emojiNames } from '../dataUtils/emojiUtils';
14
14
 
15
15
  import { useFocusSearchInput } from './useFocus';
16
16
 
@@ -1,6 +1,6 @@
1
1
  import { useEmojisThatFailedToLoadState } from '../components/context/PickerContext';
2
2
  import { DataEmoji } from '../dataUtils/DataTypes';
3
- import { emojiUnified } from '../dataUtils/emojiSelectors';
3
+ import { emojiUnified } from '../dataUtils/emojiUtils';
4
4
 
5
5
  import { useIsEmojiFiltered } from './useFilter';
6
6
 
@@ -1,9 +1,6 @@
1
- import {
2
- Categories,
3
- CategoryConfig,
4
- CustomCategoryConfig
5
- } from '../config/categoryConfig';
1
+ import { Categories, CustomCategoryConfig } from '../config/categoryConfig';
6
2
  import { CustomEmoji } from '../config/customEmojiConfig';
3
+ import { CategoryConfig } from '../types/exposedTypes';
7
4
  import { DataEmoji } from '../dataUtils/DataTypes';
8
5
 
9
6
  export function isCustomCategory(
@@ -9,6 +9,23 @@ export type EmojiClickData = {
9
9
  isCustom: boolean;
10
10
  };
11
11
 
12
+ export type CategoryConfig = {
13
+ category: Categories;
14
+ name: string;
15
+ };
16
+
17
+ export type EmojiData = {
18
+ categories: Partial<Record<Categories, CategoryConfig>>;
19
+ emojis: Record<string, DataEmoji[]>;
20
+ };
21
+
22
+ export interface DataEmoji {
23
+ n: string[];
24
+ u: string;
25
+ v?: string[];
26
+ a: string;
27
+ }
28
+
12
29
  export enum SuggestionMode {
13
30
  RECENT = 'recent',
14
31
  FREQUENT = 'frequent'