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,9 @@
1
- import { Categories, SuggestionMode } from '../types/exposedTypes';
1
+ import {
2
+ Categories,
3
+ CategoryConfig,
4
+ EmojiData,
5
+ SuggestionMode,
6
+ } from '../types/exposedTypes';
2
7
 
3
8
  export { Categories };
4
9
 
@@ -12,12 +17,12 @@ const categoriesOrdered: Categories[] = [
12
17
  Categories.ACTIVITIES,
13
18
  Categories.OBJECTS,
14
19
  Categories.SYMBOLS,
15
- Categories.FLAGS
20
+ Categories.FLAGS,
16
21
  ];
17
22
 
18
23
  export const SuggestedRecent: CategoryConfig = {
19
24
  name: 'Recently Used',
20
- category: Categories.SUGGESTED
25
+ category: Categories.SUGGESTED,
21
26
  };
22
27
 
23
28
  export type CustomCategoryConfig = {
@@ -28,53 +33,53 @@ export type CustomCategoryConfig = {
28
33
  const configByCategory: Record<Categories, CategoryConfig> = {
29
34
  [Categories.SUGGESTED]: {
30
35
  category: Categories.SUGGESTED,
31
- name: 'Frequently Used'
36
+ name: 'Frequently Used',
32
37
  },
33
38
  [Categories.CUSTOM]: {
34
39
  category: Categories.CUSTOM,
35
- name: 'Custom Emojis'
40
+ name: 'Custom Emojis',
36
41
  },
37
42
  [Categories.SMILEYS_PEOPLE]: {
38
43
  category: Categories.SMILEYS_PEOPLE,
39
- name: 'Smileys & People'
44
+ name: 'Smileys & People',
40
45
  },
41
46
  [Categories.ANIMALS_NATURE]: {
42
47
  category: Categories.ANIMALS_NATURE,
43
- name: 'Animals & Nature'
48
+ name: 'Animals & Nature',
44
49
  },
45
50
  [Categories.FOOD_DRINK]: {
46
51
  category: Categories.FOOD_DRINK,
47
- name: 'Food & Drink'
52
+ name: 'Food & Drink',
48
53
  },
49
54
  [Categories.TRAVEL_PLACES]: {
50
55
  category: Categories.TRAVEL_PLACES,
51
- name: 'Travel & Places'
56
+ name: 'Travel & Places',
52
57
  },
53
58
  [Categories.ACTIVITIES]: {
54
59
  category: Categories.ACTIVITIES,
55
- name: 'Activities'
60
+ name: 'Activities',
56
61
  },
57
62
  [Categories.OBJECTS]: {
58
63
  category: Categories.OBJECTS,
59
- name: 'Objects'
64
+ name: 'Objects',
60
65
  },
61
66
  [Categories.SYMBOLS]: {
62
67
  category: Categories.SYMBOLS,
63
- name: 'Symbols'
68
+ name: 'Symbols',
64
69
  },
65
70
  [Categories.FLAGS]: {
66
71
  category: Categories.FLAGS,
67
- name: 'Flags'
68
- }
72
+ name: 'Flags',
73
+ },
69
74
  };
70
75
 
71
76
  export function baseCategoriesConfig(
72
- modifiers?: Record<Categories, CategoryConfig>
77
+ modifiers?: Record<Categories, CategoryConfig>,
73
78
  ): CategoriesConfig {
74
- return categoriesOrdered.map(category => {
79
+ return categoriesOrdered.map((category) => {
75
80
  return {
76
81
  ...configByCategory[category],
77
- ...(modifiers && modifiers[category] && modifiers[category])
82
+ ...(modifiers && modifiers[category] && modifiers[category]),
78
83
  };
79
84
  });
80
85
  }
@@ -89,43 +94,55 @@ export function categoryNameFromCategoryConfig(category: CategoryConfig) {
89
94
 
90
95
  export type CategoriesConfig = CategoryConfig[];
91
96
 
92
- export type CategoryConfig = {
93
- category: Categories;
94
- name: string;
95
- };
96
-
97
97
  export type UserCategoryConfig = Array<Categories | CategoryConfig>;
98
98
 
99
99
  export function mergeCategoriesConfig(
100
100
  userCategoriesConfig: UserCategoryConfig = [],
101
- modifiers: CategoryConfigModifiers = {}
101
+ modifiers: CategoryConfigModifiers = {},
102
+ emojiData?: EmojiData,
102
103
  ): CategoriesConfig {
103
- const extra = {} as Record<Categories, CategoryConfig>;
104
+ const extra = ((): Record<Categories, CategoryConfig> => {
105
+ // 1. Start with localized categories from emojiData
106
+ const fromData = emojiData?.categories
107
+ ? (Object.fromEntries(
108
+ Object.entries(emojiData.categories).filter(([, config]) => !!config),
109
+ ) as Record<Categories, CategoryConfig>)
110
+ : ({} as Record<Categories, CategoryConfig>);
111
+
112
+ // 2. Handle "Recently Used" override for explicit 'recent' mode
113
+ if (modifiers.suggestionMode === SuggestionMode.RECENT) {
114
+ const recentConfig = (
115
+ emojiData?.categories as Record<string, CategoryConfig | undefined>
116
+ )?.['suggested_recent'];
117
+ fromData[Categories.SUGGESTED] = recentConfig
118
+ ? { category: Categories.SUGGESTED, name: recentConfig.name }
119
+ : SuggestedRecent;
120
+ }
104
121
 
105
- if (modifiers.suggestionMode === SuggestionMode.RECENT) {
106
- extra[Categories.SUGGESTED] = SuggestedRecent;
107
- }
122
+ return fromData;
123
+ })();
108
124
 
109
125
  const base = baseCategoriesConfig(extra);
126
+
110
127
  if (!userCategoriesConfig?.length) {
111
128
  return base;
112
129
  }
113
130
 
114
- return userCategoriesConfig.map(category => {
131
+ return userCategoriesConfig.map((category) => {
115
132
  if (typeof category === 'string') {
116
133
  return getBaseConfigByCategory(category, extra[category]);
117
134
  }
118
135
 
119
136
  return {
120
137
  ...getBaseConfigByCategory(category.category, extra[category.category]),
121
- ...category
138
+ ...category,
122
139
  };
123
140
  });
124
141
  }
125
142
 
126
143
  function getBaseConfigByCategory(
127
144
  category: Categories,
128
- modifier: CategoryConfig = {} as CategoryConfig
145
+ modifier: CategoryConfig = {} as CategoryConfig,
129
146
  ) {
130
147
  return Object.assign(configByCategory[category], modifier);
131
148
  }
@@ -10,6 +10,7 @@ export function compareConfig(prev: PickerConfig, next: PickerConfig) {
10
10
  prev.reactionsDefaultOpen === next.reactionsDefaultOpen &&
11
11
  prev.searchPlaceHolder === next.searchPlaceHolder &&
12
12
  prev.searchPlaceholder === next.searchPlaceholder &&
13
+ prev.searchClearButtonLabel === next.searchClearButtonLabel &&
13
14
  prev.defaultSkinTone === next.defaultSkinTone &&
14
15
  prev.skinTonesDisabled === next.skinTonesDisabled &&
15
16
  prev.autoFocusSearch === next.autoFocusSearch &&
@@ -23,6 +24,7 @@ export function compareConfig(prev: PickerConfig, next: PickerConfig) {
23
24
  prev.style === next.style &&
24
25
  prev.searchDisabled === next.searchDisabled &&
25
26
  prev.skinTonePickerLocation === next.skinTonePickerLocation &&
26
- prevCustomEmojis.length === nextCustomEmojis.length
27
+ prevCustomEmojis.length === nextCustomEmojis.length &&
28
+ prev.emojiData === next.emojiData
27
29
  );
28
- }
30
+ }
@@ -2,12 +2,10 @@ import * as React from 'react';
2
2
 
3
3
  import { DEFAULT_REACTIONS } from '../components/Reactions/DEFAULT_REACTIONS';
4
4
  import { GetEmojiUrl } from '../components/emoji/BaseEmojiProps';
5
- import {
6
- setCustomEmojis,
7
- emojiUrlByUnified,
8
- } from '../dataUtils/emojiSelectors';
5
+ import { emojiUrlByUnified } from '../dataUtils/emojiUtils';
9
6
  import {
10
7
  EmojiClickData,
8
+ EmojiData,
11
9
  EmojiStyle,
12
10
  SkinTonePickerLocation,
13
11
  SkinTones,
@@ -25,6 +23,7 @@ import { CustomEmoji } from './customEmojiConfig';
25
23
  const KNOWN_FAILING_EMOJIS = ['2640-fe0f', '2642-fe0f', '2695-fe0f'];
26
24
 
27
25
  export const DEFAULT_SEARCH_PLACEHOLDER = 'Search';
26
+ export const DEFAULT_SEARCH_CLEAR_BUTTON_LABEL = 'Clear';
28
27
  export const SEARCH_RESULTS_NO_RESULTS_FOUND = 'No results found';
29
28
  export const SEARCH_RESULTS_SUFFIX =
30
29
  ' found. Use up and down arrow keys to navigate.';
@@ -34,26 +33,42 @@ export const SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND =
34
33
  '%n results' + SEARCH_RESULTS_SUFFIX;
35
34
 
36
35
  export function mergeConfig(
37
- userConfig: PickerConfig = {}
36
+ userConfig: PickerConfig = {},
38
37
  ): PickerConfigInternal {
39
38
  const base = basePickerConfig();
40
39
 
41
- const previewConfig = Object.assign(
42
- base.previewConfig,
43
- userConfig.previewConfig ?? {}
44
- );
40
+ // Get localized mood from emojiData, fallback to base default
41
+ // Get localized mood from emojiData, fallback to base default
42
+ const localizedMood = (
43
+ userConfig.emojiData?.categories as Record<
44
+ string,
45
+ { name: string } | undefined
46
+ >
47
+ )?.preview_mood?.name;
48
+
49
+ const previewConfig = {
50
+ ...base.previewConfig,
51
+ // Localized mood is default, but user can override
52
+ ...(localizedMood && !userConfig.previewConfig?.defaultCaption
53
+ ? { defaultCaption: localizedMood }
54
+ : {}),
55
+ ...(userConfig.previewConfig ?? {}),
56
+ };
57
+
45
58
  const config = Object.assign(base, userConfig);
46
59
 
47
- const categories = mergeCategoriesConfig(userConfig.categories, {
48
- suggestionMode: config.suggestedEmojisMode,
49
- });
60
+ const categories = mergeCategoriesConfig(
61
+ userConfig.categories,
62
+ {
63
+ suggestionMode: config.suggestedEmojisMode,
64
+ },
65
+ userConfig.emojiData,
66
+ );
50
67
 
51
68
  config.hiddenEmojis.forEach((emoji) => {
52
69
  config.unicodeToHide.add(emoji);
53
70
  });
54
71
 
55
- setCustomEmojis(config.customEmojis ?? []);
56
-
57
72
  const skinTonePickerLocation = config.searchDisabled
58
73
  ? SkinTonePickerLocation.PREVIEW
59
74
  : config.skinTonePickerLocation;
@@ -84,6 +99,7 @@ export function basePickerConfig(): PickerConfigInternal {
84
99
  searchDisabled: false,
85
100
  searchPlaceHolder: DEFAULT_SEARCH_PLACEHOLDER,
86
101
  searchPlaceholder: DEFAULT_SEARCH_PLACEHOLDER,
102
+ searchClearButtonLabel: DEFAULT_SEARCH_CLEAR_BUTTON_LABEL,
87
103
  skinTonePickerLocation: SkinTonePickerLocation.SEARCH,
88
104
  skinTonesDisabled: false,
89
105
  style: {},
@@ -96,6 +112,7 @@ export function basePickerConfig(): PickerConfigInternal {
96
112
  open: true,
97
113
  allowExpandReactions: true,
98
114
  hiddenEmojis: [],
115
+ emojiData: undefined,
99
116
  };
100
117
  }
101
118
 
@@ -103,6 +120,7 @@ export type PickerConfigInternal = {
103
120
  emojiVersion: string | null;
104
121
  searchPlaceHolder: string;
105
122
  searchPlaceholder: string;
123
+ searchClearButtonLabel: string;
106
124
  defaultSkinTone: SkinTones;
107
125
  skinTonesDisabled: boolean;
108
126
  autoFocusSearch: boolean;
@@ -126,6 +144,7 @@ export type PickerConfigInternal = {
126
144
  open: boolean;
127
145
  allowExpandReactions: boolean;
128
146
  hiddenEmojis: string[];
147
+ emojiData?: EmojiData;
129
148
  };
130
149
 
131
150
  export type PreviewConfig = {
@@ -154,7 +173,7 @@ export type PickerDimensions = string | number;
154
173
  export type MouseDownEvent = (
155
174
  emoji: EmojiClickData,
156
175
  event: MouseEvent,
157
- api?: OnEmojiClickApi
176
+ api?: OnEmojiClickApi,
158
177
  ) => void;
159
178
  export type OnSkinToneChange = (emoji: SkinTones) => void;
160
179
 
@@ -14,6 +14,7 @@ import {
14
14
  import { CategoriesConfig } from './categoryConfig';
15
15
  import {
16
16
  DEFAULT_SEARCH_PLACEHOLDER,
17
+ DEFAULT_SEARCH_CLEAR_BUTTON_LABEL,
17
18
  SEARCH_RESULTS_NO_RESULTS_FOUND,
18
19
  SEARCH_RESULTS_ONE_RESULT_FOUND,
19
20
  SEARCH_RESULTS_MULTIPLE_RESULTS_FOUND,
@@ -37,6 +38,11 @@ export function useSearchPlaceHolderConfig(): string {
37
38
  );
38
39
  }
39
40
 
41
+ export function useSearchClearButtonLabelConfig(): string {
42
+ const { searchClearButtonLabel } = usePickerConfig();
43
+ return searchClearButtonLabel ?? DEFAULT_SEARCH_CLEAR_BUTTON_LABEL;
44
+ }
45
+
40
46
  export function useDefaultSkinToneConfig(): SkinTones {
41
47
  const { defaultSkinTone } = usePickerConfig();
42
48
  return defaultSkinTone;