emoji-picker-react 4.4.11 → 4.5.0-rc.1

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 (54) hide show
  1. package/dist/components/emoji/BaseEmojiProps.d.ts +12 -0
  2. package/dist/components/emoji/ClickableEmojiButton.d.ts +13 -0
  3. package/dist/components/emoji/Emoji.d.ts +3 -13
  4. package/dist/components/emoji/EmojiImg.d.ts +10 -0
  5. package/dist/components/emoji/ExportedEmoji.d.ts +2 -2
  6. package/dist/components/emoji/NativeEmoji.d.ts +5 -0
  7. package/dist/components/emoji/ViewOnlyEmoji.d.ts +3 -0
  8. package/dist/config/categoryConfig.d.ts +4 -0
  9. package/dist/config/config.d.ts +5 -1
  10. package/dist/config/customEmojiConfig.d.ts +6 -0
  11. package/dist/config/useConfig.d.ts +2 -0
  12. package/dist/data/emojis.d.ts +1 -0
  13. package/dist/dataUtils/DataTypes.d.ts +16 -6
  14. package/dist/dataUtils/alphaNumericEmojiIndex.d.ts +1 -0
  15. package/dist/dataUtils/emojiSelectors.d.ts +5 -3
  16. package/dist/emoji-picker-react.cjs.development.css +2 -2
  17. package/dist/emoji-picker-react.cjs.development.js +294 -187
  18. package/dist/emoji-picker-react.cjs.development.js.map +1 -1
  19. package/dist/emoji-picker-react.cjs.production.min.js +1 -1
  20. package/dist/emoji-picker-react.cjs.production.min.js.map +1 -1
  21. package/dist/emoji-picker-react.esm.js +304 -197
  22. package/dist/emoji-picker-react.esm.js.map +1 -1
  23. package/dist/hooks/preloadEmoji.d.ts +1 -1
  24. package/dist/hooks/useShouldHideCustomEmojis.d.ts +1 -0
  25. package/dist/typeRefinements/typeRefinements.d.ts +5 -0
  26. package/dist/types/exposedTypes.d.ts +1 -0
  27. package/package.json +5 -5
  28. package/src/components/context/PickerConfigContext.tsx +2 -1
  29. package/src/components/emoji/BaseEmojiProps.ts +13 -0
  30. package/src/components/emoji/ClickableEmojiButton.tsx +42 -0
  31. package/src/components/emoji/Emoji.css +2 -0
  32. package/src/components/emoji/Emoji.tsx +15 -125
  33. package/src/components/emoji/EmojiImg.tsx +31 -0
  34. package/src/components/emoji/ExportedEmoji.tsx +3 -2
  35. package/src/components/emoji/NativeEmoji.tsx +23 -0
  36. package/src/components/emoji/ViewOnlyEmoji.tsx +70 -0
  37. package/src/components/footer/Preview.tsx +1 -1
  38. package/src/components/navigation/CategoryNavigation.css +3 -0
  39. package/src/components/navigation/CategoryNavigation.tsx +8 -0
  40. package/src/config/categoryConfig.ts +10 -0
  41. package/src/config/config.ts +15 -3
  42. package/src/config/customEmojiConfig.ts +7 -0
  43. package/src/config/useConfig.ts +17 -3
  44. package/src/data/emojis.json +1 -1
  45. package/src/data/emojis.ts +1 -1
  46. package/src/dataUtils/DataTypes.ts +19 -6
  47. package/src/dataUtils/alphaNumericEmojiIndex.ts +16 -11
  48. package/src/dataUtils/emojiSelectors.ts +30 -11
  49. package/src/hooks/preloadEmoji.ts +1 -1
  50. package/src/hooks/useEmojiPreviewEvents.ts +0 -2
  51. package/src/hooks/useMouseDownHandlers.ts +1 -1
  52. package/src/hooks/useShouldHideCustomEmojis.ts +11 -0
  53. package/src/typeRefinements/typeRefinements.ts +17 -0
  54. package/src/types/exposedTypes.ts +1 -0
@@ -255,6 +255,7 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
255
255
 
256
256
  (function (Categories) {
257
257
  Categories["SUGGESTED"] = "suggested";
258
+ Categories["CUSTOM"] = "custom";
258
259
  Categories["SMILEYS_PEOPLE"] = "smileys_people";
259
260
  Categories["ANIMALS_NATURE"] = "animals_nature";
260
261
  Categories["FOOD_DRINK"] = "food_drink";
@@ -270,6 +271,94 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
270
271
  SkinTonePickerLocation["PREVIEW"] = "PREVIEW";
271
272
  })(exports.SkinTonePickerLocation || (exports.SkinTonePickerLocation = {}));
272
273
 
274
+ var _configByCategory;
275
+ var categoriesOrdered = [exports.Categories.SUGGESTED, exports.Categories.CUSTOM, exports.Categories.SMILEYS_PEOPLE, exports.Categories.ANIMALS_NATURE, exports.Categories.FOOD_DRINK, exports.Categories.TRAVEL_PLACES, exports.Categories.ACTIVITIES, exports.Categories.OBJECTS, exports.Categories.SYMBOLS, exports.Categories.FLAGS];
276
+ var SuggestedRecent = {
277
+ name: 'Recently Used',
278
+ category: exports.Categories.SUGGESTED
279
+ };
280
+ var configByCategory = (_configByCategory = {}, _configByCategory[exports.Categories.SUGGESTED] = {
281
+ category: exports.Categories.SUGGESTED,
282
+ name: 'Frequently Used'
283
+ }, _configByCategory[exports.Categories.CUSTOM] = {
284
+ category: exports.Categories.CUSTOM,
285
+ name: 'Custom Emojis'
286
+ }, _configByCategory[exports.Categories.SMILEYS_PEOPLE] = {
287
+ category: exports.Categories.SMILEYS_PEOPLE,
288
+ name: 'Smileys & People'
289
+ }, _configByCategory[exports.Categories.ANIMALS_NATURE] = {
290
+ category: exports.Categories.ANIMALS_NATURE,
291
+ name: 'Animals & Nature'
292
+ }, _configByCategory[exports.Categories.FOOD_DRINK] = {
293
+ category: exports.Categories.FOOD_DRINK,
294
+ name: 'Food & Drink'
295
+ }, _configByCategory[exports.Categories.TRAVEL_PLACES] = {
296
+ category: exports.Categories.TRAVEL_PLACES,
297
+ name: 'Travel & Places'
298
+ }, _configByCategory[exports.Categories.ACTIVITIES] = {
299
+ category: exports.Categories.ACTIVITIES,
300
+ name: 'Activities'
301
+ }, _configByCategory[exports.Categories.OBJECTS] = {
302
+ category: exports.Categories.OBJECTS,
303
+ name: 'Objects'
304
+ }, _configByCategory[exports.Categories.SYMBOLS] = {
305
+ category: exports.Categories.SYMBOLS,
306
+ name: 'Symbols'
307
+ }, _configByCategory[exports.Categories.FLAGS] = {
308
+ category: exports.Categories.FLAGS,
309
+ name: 'Flags'
310
+ }, _configByCategory);
311
+ function baseCategoriesConfig(modifiers) {
312
+ return categoriesOrdered.map(function (category) {
313
+ return _extends({}, configByCategory[category], modifiers && modifiers[category] && modifiers[category]);
314
+ });
315
+ }
316
+ function categoryFromCategoryConfig(category) {
317
+ return category.category;
318
+ }
319
+ function categoryNameFromCategoryConfig(category) {
320
+ return category.name;
321
+ }
322
+ function mergeCategoriesConfig(userCategoriesConfig, modifiers) {
323
+ var _userCategoriesConfig;
324
+
325
+ if (userCategoriesConfig === void 0) {
326
+ userCategoriesConfig = [];
327
+ }
328
+
329
+ if (modifiers === void 0) {
330
+ modifiers = {};
331
+ }
332
+
333
+ var extra = {};
334
+
335
+ if (modifiers.suggestionMode === exports.SuggestionMode.RECENT) {
336
+ extra[exports.Categories.SUGGESTED] = SuggestedRecent;
337
+ }
338
+
339
+ var base = baseCategoriesConfig(extra);
340
+
341
+ if (!((_userCategoriesConfig = userCategoriesConfig) != null && _userCategoriesConfig.length)) {
342
+ return base;
343
+ }
344
+
345
+ return userCategoriesConfig.map(function (category) {
346
+ if (typeof category === 'string') {
347
+ return getBaseConfigByCategory(category, extra[category]);
348
+ }
349
+
350
+ return _extends({}, getBaseConfigByCategory(category.category, extra[category.category]), category);
351
+ });
352
+ }
353
+
354
+ function getBaseConfigByCategory(category, modifier) {
355
+ if (modifier === void 0) {
356
+ modifier = {};
357
+ }
358
+
359
+ return Object.assign(configByCategory[category], modifier);
360
+ }
361
+
273
362
  var CDN_URL_APPLE = 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/';
274
363
  var CDN_URL_FACEBOOK = 'https://cdn.jsdelivr.net/npm/emoji-datasource-facebook/img/facebook/64/';
275
364
  var CDN_URL_TWITTER = 'https://cdn.jsdelivr.net/npm/emoji-datasource-twitter/img/twitter/64/';
@@ -291,6 +380,8 @@ function cdnUrl(emojiStyle) {
291
380
  }
292
381
  }
293
382
 
383
+ var custom = [
384
+ ];
294
385
  var smileys_people = [
295
386
  {
296
387
  n: [
@@ -16601,6 +16692,7 @@ var flags = [
16601
16692
  }
16602
16693
  ];
16603
16694
  var emojis = {
16695
+ custom: custom,
16604
16696
  smileys_people: smileys_people,
16605
16697
  animals_nature: animals_nature,
16606
16698
  food_drink: food_drink,
@@ -16631,8 +16723,26 @@ var EmojiProperties;
16631
16723
  EmojiProperties["unified"] = "u";
16632
16724
  EmojiProperties["variations"] = "v";
16633
16725
  EmojiProperties["added_in"] = "a";
16726
+ EmojiProperties["imgUrl"] = "imgUrl";
16634
16727
  })(EmojiProperties || (EmojiProperties = {}));
16635
16728
 
16729
+ var alphaNumericEmojiIndex = {};
16730
+ setTimeout(function () {
16731
+ allEmojis.reduce(function (searchIndex, emoji) {
16732
+ indexEmoji(emoji);
16733
+ return searchIndex;
16734
+ }, alphaNumericEmojiIndex);
16735
+ });
16736
+ function indexEmoji(emoji) {
16737
+ var joinedNameString = emojiNames(emoji).flat().join('').toLowerCase().replace(/[^a-zA-Z\d]/g, '').split('');
16738
+ joinedNameString.forEach(function (_char) {
16739
+ var _alphaNumericEmojiInd;
16740
+
16741
+ alphaNumericEmojiIndex[_char] = (_alphaNumericEmojiInd = alphaNumericEmojiIndex[_char]) != null ? _alphaNumericEmojiInd : {};
16742
+ alphaNumericEmojiIndex[_char][emojiUnified(emoji)] = emoji;
16743
+ });
16744
+ }
16745
+
16636
16746
  function emojiNames(emoji) {
16637
16747
  var _emoji$EmojiPropertie;
16638
16748
 
@@ -16707,6 +16817,29 @@ function emojiByUnified(unified) {
16707
16817
  return allEmojisByUnified[withoutSkinTone];
16708
16818
  }
16709
16819
  var allEmojis = /*#__PURE__*/Object.values(emojis).flat();
16820
+ function addCustomEmojis(customEmojis) {
16821
+ customEmojis.forEach(function (emoji) {
16822
+ var emojiData = customToRegularEmoji(emoji);
16823
+
16824
+ if (allEmojisByUnified[emojiData[EmojiProperties.unified]]) {
16825
+ return;
16826
+ }
16827
+
16828
+ allEmojis.push(emojiData);
16829
+ allEmojisByUnified[emojiData[EmojiProperties.unified]] = emojiData;
16830
+ emojis[exports.Categories.CUSTOM].push(emojiData);
16831
+ indexEmoji(emojiData);
16832
+ });
16833
+ }
16834
+
16835
+ function customToRegularEmoji(emoji) {
16836
+ var _ref;
16837
+
16838
+ return _ref = {}, _ref[EmojiProperties.name] = emoji.names.map(function (name) {
16839
+ return name.toLowerCase();
16840
+ }), _ref[EmojiProperties.unified] = emoji.id.toLowerCase(), _ref[EmojiProperties.added_in] = '0', _ref[EmojiProperties.imgUrl] = emoji.imgUrl, _ref;
16841
+ }
16842
+
16710
16843
  var allEmojisByUnified = {};
16711
16844
  setTimeout(function () {
16712
16845
  allEmojis.reduce(function (allEmojis, Emoji) {
@@ -16721,94 +16854,10 @@ function activeVariationFromUnified(unified) {
16721
16854
  return skinToneVariations.includes(suspectedSkinTone) ? suspectedSkinTone : null;
16722
16855
  }
16723
16856
 
16724
- var _configByCategory;
16725
- var categoriesOrdered = [exports.Categories.SUGGESTED, exports.Categories.SMILEYS_PEOPLE, exports.Categories.ANIMALS_NATURE, exports.Categories.FOOD_DRINK, exports.Categories.TRAVEL_PLACES, exports.Categories.ACTIVITIES, exports.Categories.OBJECTS, exports.Categories.SYMBOLS, exports.Categories.FLAGS];
16726
- var SuggestedRecent = {
16727
- name: 'Recently Used',
16728
- category: exports.Categories.SUGGESTED
16729
- };
16730
- var configByCategory = (_configByCategory = {}, _configByCategory[exports.Categories.SUGGESTED] = {
16731
- category: exports.Categories.SUGGESTED,
16732
- name: 'Frequently Used'
16733
- }, _configByCategory[exports.Categories.SMILEYS_PEOPLE] = {
16734
- category: exports.Categories.SMILEYS_PEOPLE,
16735
- name: 'Smileys & People'
16736
- }, _configByCategory[exports.Categories.ANIMALS_NATURE] = {
16737
- category: exports.Categories.ANIMALS_NATURE,
16738
- name: 'Animals & Nature'
16739
- }, _configByCategory[exports.Categories.FOOD_DRINK] = {
16740
- category: exports.Categories.FOOD_DRINK,
16741
- name: 'Food & Drink'
16742
- }, _configByCategory[exports.Categories.TRAVEL_PLACES] = {
16743
- category: exports.Categories.TRAVEL_PLACES,
16744
- name: 'Travel & Places'
16745
- }, _configByCategory[exports.Categories.ACTIVITIES] = {
16746
- category: exports.Categories.ACTIVITIES,
16747
- name: 'Activities'
16748
- }, _configByCategory[exports.Categories.OBJECTS] = {
16749
- category: exports.Categories.OBJECTS,
16750
- name: 'Objects'
16751
- }, _configByCategory[exports.Categories.SYMBOLS] = {
16752
- category: exports.Categories.SYMBOLS,
16753
- name: 'Symbols'
16754
- }, _configByCategory[exports.Categories.FLAGS] = {
16755
- category: exports.Categories.FLAGS,
16756
- name: 'Flags'
16757
- }, _configByCategory);
16758
- function baseCategoriesConfig(modifiers) {
16759
- return categoriesOrdered.map(function (category) {
16760
- return _extends({}, configByCategory[category], modifiers && modifiers[category] && modifiers[category]);
16761
- });
16762
- }
16763
- function categoryFromCategoryConfig(category) {
16764
- return category.category;
16765
- }
16766
- function categoryNameFromCategoryConfig(category) {
16767
- return category.name;
16768
- }
16769
- function mergeCategoriesConfig(userCategoriesConfig, modifiers) {
16770
- var _userCategoriesConfig;
16771
-
16772
- if (userCategoriesConfig === void 0) {
16773
- userCategoriesConfig = [];
16774
- }
16775
-
16776
- if (modifiers === void 0) {
16777
- modifiers = {};
16778
- }
16779
-
16780
- var extra = {};
16781
-
16782
- if (modifiers.suggestionMode === exports.SuggestionMode.RECENT) {
16783
- extra[exports.Categories.SUGGESTED] = SuggestedRecent;
16784
- }
16785
-
16786
- var base = baseCategoriesConfig(extra);
16787
-
16788
- if (!((_userCategoriesConfig = userCategoriesConfig) != null && _userCategoriesConfig.length)) {
16789
- return base;
16790
- }
16791
-
16792
- return userCategoriesConfig.map(function (category) {
16793
- if (typeof category === 'string') {
16794
- return getBaseConfigByCategory(category, extra[category]);
16795
- }
16796
-
16797
- return _extends({}, getBaseConfigByCategory(category.category, extra[category.category]), category);
16798
- });
16799
- }
16800
-
16801
- function getBaseConfigByCategory(category, modifier) {
16802
- if (modifier === void 0) {
16803
- modifier = {};
16804
- }
16805
-
16806
- return Object.assign(configByCategory[category], modifier);
16807
- }
16808
-
16809
16857
  var KNOWN_FAILING_EMOJIS = ['2640-fe0f', '2642-fe0f', '2695-fe0f'];
16858
+ var DEFAULT_SEARCH_PLACEHOLDER = 'Search';
16810
16859
  function mergeConfig(userConfig) {
16811
- var _userConfig$previewCo;
16860
+ var _userConfig$previewCo, _config$customEmojis;
16812
16861
 
16813
16862
  if (userConfig === void 0) {
16814
16863
  userConfig = {};
@@ -16820,6 +16869,7 @@ function mergeConfig(userConfig) {
16820
16869
  var categories = mergeCategoriesConfig(userConfig.categories, {
16821
16870
  suggestionMode: config.suggestedEmojisMode
16822
16871
  });
16872
+ addCustomEmojis((_config$customEmojis = config.customEmojis) != null ? _config$customEmojis : []);
16823
16873
  var skinTonePickerLocation = config.searchDisabled ? exports.SkinTonePickerLocation.PREVIEW : config.skinTonePickerLocation;
16824
16874
  return _extends({}, config, {
16825
16875
  categories: categories,
@@ -16831,6 +16881,7 @@ function basePickerConfig() {
16831
16881
  return {
16832
16882
  autoFocusSearch: true,
16833
16883
  categories: baseCategoriesConfig(),
16884
+ customEmojis: [],
16834
16885
  defaultSkinTone: exports.SkinTones.NEUTRAL,
16835
16886
  emojiStyle: exports.EmojiStyle.APPLE,
16836
16887
  emojiVersion: null,
@@ -16844,7 +16895,8 @@ function basePickerConfig() {
16844
16895
  event) {},
16845
16896
  previewConfig: _extends({}, basePreviewConfig),
16846
16897
  searchDisabled: false,
16847
- searchPlaceHolder: 'Search',
16898
+ searchPlaceHolder: DEFAULT_SEARCH_PLACEHOLDER,
16899
+ searchPlaceholder: DEFAULT_SEARCH_PLACEHOLDER,
16848
16900
  skinTonePickerLocation: exports.SkinTonePickerLocation.SEARCH,
16849
16901
  skinTonesDisabled: false,
16850
16902
  suggestedEmojisMode: exports.SuggestionMode.FREQUENT,
@@ -16865,8 +16917,13 @@ function PickerConfigProvider(_ref) {
16865
16917
  var children = _ref.children,
16866
16918
  config = _objectWithoutPropertiesLoose(_ref, _excluded);
16867
16919
 
16920
+ var _React$useState = React.useState(function () {
16921
+ return mergeConfig(config);
16922
+ }),
16923
+ mergedConfig = _React$useState[0];
16924
+
16868
16925
  return React.createElement(ConfigContext.Provider, {
16869
- value: mergeConfig(config)
16926
+ value: mergedConfig
16870
16927
  }, children);
16871
16928
  }
16872
16929
  function usePickerConfig() {
@@ -16874,10 +16931,15 @@ function usePickerConfig() {
16874
16931
  }
16875
16932
 
16876
16933
  function useSearchPlaceHolderConfig() {
16934
+ var _find;
16935
+
16877
16936
  var _usePickerConfig = usePickerConfig(),
16878
- searchPlaceHolder = _usePickerConfig.searchPlaceHolder;
16937
+ searchPlaceHolder = _usePickerConfig.searchPlaceHolder,
16938
+ searchPlaceholder = _usePickerConfig.searchPlaceholder;
16879
16939
 
16880
- return searchPlaceHolder;
16940
+ return (_find = [searchPlaceHolder, searchPlaceholder].find(function (p) {
16941
+ return p !== DEFAULT_SEARCH_PLACEHOLDER;
16942
+ })) != null ? _find : DEFAULT_SEARCH_PLACEHOLDER;
16881
16943
  }
16882
16944
  function useDefaultSkinToneConfig() {
16883
16945
  var _usePickerConfig2 = usePickerConfig(),
@@ -16909,21 +16971,27 @@ function useCategoriesConfig() {
16909
16971
 
16910
16972
  return categories;
16911
16973
  }
16912
- function useOnEmojiClickConfig() {
16974
+ function useCustomEmojisConfig() {
16913
16975
  var _usePickerConfig7 = usePickerConfig(),
16914
- onEmojiClick = _usePickerConfig7.onEmojiClick;
16976
+ customEmojis = _usePickerConfig7.customEmojis;
16977
+
16978
+ return customEmojis;
16979
+ }
16980
+ function useOnEmojiClickConfig() {
16981
+ var _usePickerConfig8 = usePickerConfig(),
16982
+ onEmojiClick = _usePickerConfig8.onEmojiClick;
16915
16983
 
16916
16984
  return onEmojiClick;
16917
16985
  }
16918
16986
  function usePreviewConfig() {
16919
- var _usePickerConfig8 = usePickerConfig(),
16920
- previewConfig = _usePickerConfig8.previewConfig;
16987
+ var _usePickerConfig9 = usePickerConfig(),
16988
+ previewConfig = _usePickerConfig9.previewConfig;
16921
16989
 
16922
16990
  return previewConfig;
16923
16991
  }
16924
16992
  function useThemeConfig() {
16925
- var _usePickerConfig9 = usePickerConfig(),
16926
- theme = _usePickerConfig9.theme;
16993
+ var _usePickerConfig10 = usePickerConfig(),
16994
+ theme = _usePickerConfig10.theme;
16927
16995
 
16928
16996
  if (theme === exports.Theme.AUTO) {
16929
16997
  return isSystemDarkTheme() ? exports.Theme.DARK : exports.Theme.LIGHT;
@@ -16932,21 +17000,21 @@ function useThemeConfig() {
16932
17000
  return theme;
16933
17001
  }
16934
17002
  function useSuggestedEmojisModeConfig() {
16935
- var _usePickerConfig10 = usePickerConfig(),
16936
- suggestedEmojisMode = _usePickerConfig10.suggestedEmojisMode;
17003
+ var _usePickerConfig11 = usePickerConfig(),
17004
+ suggestedEmojisMode = _usePickerConfig11.suggestedEmojisMode;
16937
17005
 
16938
17006
  return suggestedEmojisMode;
16939
17007
  }
16940
17008
  function useLazyLoadEmojisConfig() {
16941
- var _usePickerConfig11 = usePickerConfig(),
16942
- lazyLoadEmojis = _usePickerConfig11.lazyLoadEmojis;
17009
+ var _usePickerConfig12 = usePickerConfig(),
17010
+ lazyLoadEmojis = _usePickerConfig12.lazyLoadEmojis;
16943
17011
 
16944
17012
  return lazyLoadEmojis;
16945
17013
  }
16946
17014
  function usePickerSizeConfig() {
16947
- var _usePickerConfig12 = usePickerConfig(),
16948
- height = _usePickerConfig12.height,
16949
- width = _usePickerConfig12.width;
17015
+ var _usePickerConfig13 = usePickerConfig(),
17016
+ height = _usePickerConfig13.height,
17017
+ width = _usePickerConfig13.width;
16950
17018
 
16951
17019
  return {
16952
17020
  height: getDimension(height),
@@ -16954,32 +17022,32 @@ function usePickerSizeConfig() {
16954
17022
  };
16955
17023
  }
16956
17024
  function useEmojiVersionConfig() {
16957
- var _usePickerConfig13 = usePickerConfig(),
16958
- emojiVersion = _usePickerConfig13.emojiVersion;
17025
+ var _usePickerConfig14 = usePickerConfig(),
17026
+ emojiVersion = _usePickerConfig14.emojiVersion;
16959
17027
 
16960
17028
  return emojiVersion;
16961
17029
  }
16962
17030
  function useSearchDisabledConfig() {
16963
- var _usePickerConfig14 = usePickerConfig(),
16964
- searchDisabled = _usePickerConfig14.searchDisabled;
17031
+ var _usePickerConfig15 = usePickerConfig(),
17032
+ searchDisabled = _usePickerConfig15.searchDisabled;
16965
17033
 
16966
17034
  return searchDisabled;
16967
17035
  }
16968
17036
  function useSkinTonePickerLocationConfig() {
16969
- var _usePickerConfig15 = usePickerConfig(),
16970
- skinTonePickerLocation = _usePickerConfig15.skinTonePickerLocation;
17037
+ var _usePickerConfig16 = usePickerConfig(),
17038
+ skinTonePickerLocation = _usePickerConfig16.skinTonePickerLocation;
16971
17039
 
16972
17040
  return skinTonePickerLocation;
16973
17041
  }
16974
17042
  function useUnicodeToHide() {
16975
- var _usePickerConfig16 = usePickerConfig(),
16976
- unicodeToHide = _usePickerConfig16.unicodeToHide;
17043
+ var _usePickerConfig17 = usePickerConfig(),
17044
+ unicodeToHide = _usePickerConfig17.unicodeToHide;
16977
17045
 
16978
17046
  return unicodeToHide;
16979
17047
  }
16980
17048
  function useGetEmojiUrlConfig() {
16981
- var _usePickerConfig17 = usePickerConfig(),
16982
- getEmojiUrl = _usePickerConfig17.getEmojiUrl;
17049
+ var _usePickerConfig18 = usePickerConfig(),
17050
+ getEmojiUrl = _usePickerConfig18.getEmojiUrl;
16983
17051
 
16984
17052
  return getEmojiUrl;
16985
17053
  }
@@ -16988,20 +17056,6 @@ function getDimension(dimensionConfig) {
16988
17056
  return typeof dimensionConfig === 'number' ? dimensionConfig + "px" : dimensionConfig;
16989
17057
  }
16990
17058
 
16991
- var alphaNumericEmojiIndex = {};
16992
- setTimeout(function () {
16993
- allEmojis.reduce(function (searchIndex, emoji) {
16994
- var joinedNameString = emojiNames(emoji).flat().join('').replace(/[^a-zA-Z\d]/g, '').split('');
16995
- joinedNameString.forEach(function (_char) {
16996
- var _searchIndex$_char;
16997
-
16998
- searchIndex[_char] = (_searchIndex$_char = searchIndex[_char]) != null ? _searchIndex$_char : {};
16999
- searchIndex[_char][emojiUnified(emoji)] = emoji;
17000
- });
17001
- return searchIndex;
17002
- }, alphaNumericEmojiIndex);
17003
- });
17004
-
17005
17059
  function useDebouncedState(initialValue, delay) {
17006
17060
  if (delay === void 0) {
17007
17061
  delay = 0;
@@ -18108,42 +18162,71 @@ function Button(props) {
18108
18162
  }), props.children);
18109
18163
  }
18110
18164
 
18111
- function ClickableEmoji(_ref) {
18165
+ function ClickableEmojiButton(_ref) {
18112
18166
  var _clsx;
18113
18167
 
18114
- var emoji = _ref.emoji,
18168
+ var emojiNames = _ref.emojiNames,
18115
18169
  unified = _ref.unified,
18116
18170
  hidden = _ref.hidden,
18117
18171
  hiddenOnSearch = _ref.hiddenOnSearch,
18118
- emojiStyle = _ref.emojiStyle,
18119
18172
  _ref$showVariations = _ref.showVariations,
18120
18173
  showVariations = _ref$showVariations === void 0 ? true : _ref$showVariations,
18121
- size = _ref.size,
18122
- lazyLoad = _ref.lazyLoad,
18123
- getEmojiUrl = _ref.getEmojiUrl;
18124
- var hasVariations = emojiHasVariations(emoji);
18174
+ hasVariations = _ref.hasVariations,
18175
+ children = _ref.children;
18125
18176
  return React.createElement(Button, {
18126
18177
  className: clsx(ClassNames.emoji, (_clsx = {}, _clsx[ClassNames.hidden] = hidden, _clsx[ClassNames.hiddenOnSearch] = hiddenOnSearch, _clsx[ClassNames.visible] = !hidden && !hiddenOnSearch, _clsx[ClassNames.emojiHasVariations] = hasVariations && showVariations, _clsx)),
18127
18178
  "data-unified": unified,
18128
- "aria-label": emojiName(emoji),
18129
- "data-full-name": emojiNames(emoji)
18130
- }, React.createElement(ViewOnlyEmoji, {
18131
- unified: unified,
18132
- emoji: emoji,
18133
- size: size,
18134
- emojiStyle: emojiStyle,
18135
- lazyLoad: lazyLoad,
18136
- getEmojiUrl: getEmojiUrl
18137
- }));
18179
+ "aria-label": emojiNames[0],
18180
+ "data-full-name": emojiNames
18181
+ }, children);
18182
+ }
18183
+
18184
+ function isCustomCategory(category) {
18185
+ return category.category === exports.Categories.CUSTOM;
18186
+ }
18187
+ function isCustomEmoji(emoji) {
18188
+ return emoji.imgUrl !== undefined;
18189
+ }
18190
+
18191
+ function EmojiImg(_ref) {
18192
+ var emojiName = _ref.emojiName,
18193
+ style = _ref.style,
18194
+ _ref$lazyLoad = _ref.lazyLoad,
18195
+ lazyLoad = _ref$lazyLoad === void 0 ? false : _ref$lazyLoad,
18196
+ imgUrl = _ref.imgUrl,
18197
+ onError = _ref.onError;
18198
+ return React.createElement("img", {
18199
+ src: imgUrl,
18200
+ alt: emojiName,
18201
+ className: clsx(ClassNames.external, 'epr-emoji-img'),
18202
+ loading: lazyLoad ? 'lazy' : 'eager',
18203
+ onError: onError,
18204
+ style: style
18205
+ });
18138
18206
  }
18139
- function ViewOnlyEmoji(_ref2) {
18140
- var emoji = _ref2.emoji,
18141
- unified = _ref2.unified,
18142
- emojiStyle = _ref2.emojiStyle,
18143
- size = _ref2.size,
18144
- lazyLoad = _ref2.lazyLoad,
18145
- _ref2$getEmojiUrl = _ref2.getEmojiUrl,
18146
- getEmojiUrl = _ref2$getEmojiUrl === void 0 ? emojiUrlByUnified : _ref2$getEmojiUrl;
18207
+
18208
+ function NativeEmoji(_ref) {
18209
+ var unified = _ref.unified,
18210
+ style = _ref.style;
18211
+ return React.createElement("span", {
18212
+ className: clsx(ClassNames.external, 'epr-emoji-native'),
18213
+ "data-unified": unified,
18214
+ style: style
18215
+ }, parseNativeEmoji(unified));
18216
+ }
18217
+
18218
+ function ViewOnlyEmoji(_ref) {
18219
+ var emoji = _ref.emoji,
18220
+ unified = _ref.unified,
18221
+ emojiStyle = _ref.emojiStyle,
18222
+ size = _ref.size,
18223
+ lazyLoad = _ref.lazyLoad,
18224
+ _ref$getEmojiUrl = _ref.getEmojiUrl,
18225
+ getEmojiUrl = _ref$getEmojiUrl === void 0 ? emojiUrlByUnified : _ref$getEmojiUrl;
18226
+
18227
+ var _useEmojisThatFailedT = useEmojisThatFailedToLoadState(),
18228
+ setEmojisThatFailedToLoad = _useEmojisThatFailedT[1];
18229
+
18147
18230
  var style = {};
18148
18231
 
18149
18232
  if (size) {
@@ -18156,49 +18239,28 @@ function ViewOnlyEmoji(_ref2) {
18156
18239
  return null;
18157
18240
  }
18158
18241
 
18242
+ if (isCustomEmoji(emojiToRender)) {
18243
+ return React.createElement(EmojiImg, {
18244
+ style: style,
18245
+ emojiName: unified,
18246
+ emojiStyle: emojiStyle,
18247
+ lazyLoad: lazyLoad,
18248
+ imgUrl: emojiToRender.imgUrl,
18249
+ onError: onError
18250
+ });
18251
+ }
18252
+
18159
18253
  return React.createElement(React.Fragment, null, emojiStyle === exports.EmojiStyle.NATIVE ? React.createElement(NativeEmoji, {
18160
18254
  unified: unified,
18161
18255
  style: style
18162
18256
  }) : React.createElement(EmojiImg, {
18163
- unified: unified,
18164
18257
  style: style,
18165
- emoji: emojiToRender,
18258
+ emojiName: emojiName(emojiToRender),
18166
18259
  emojiStyle: emojiStyle,
18167
18260
  lazyLoad: lazyLoad,
18168
- getEmojiUrl: getEmojiUrl
18261
+ imgUrl: getEmojiUrl(unified, emojiStyle),
18262
+ onError: onError
18169
18263
  }));
18170
- }
18171
-
18172
- function NativeEmoji(_ref3) {
18173
- var unified = _ref3.unified,
18174
- style = _ref3.style;
18175
- return React.createElement("span", {
18176
- className: clsx(ClassNames.external, 'epr-emoji-native'),
18177
- "data-unified": unified,
18178
- style: style
18179
- }, parseNativeEmoji(unified));
18180
- }
18181
-
18182
- function EmojiImg(_ref4) {
18183
- var emoji = _ref4.emoji,
18184
- unified = _ref4.unified,
18185
- emojiStyle = _ref4.emojiStyle,
18186
- style = _ref4.style,
18187
- _ref4$lazyLoad = _ref4.lazyLoad,
18188
- lazyLoad = _ref4$lazyLoad === void 0 ? false : _ref4$lazyLoad,
18189
- getEmojiUrl = _ref4.getEmojiUrl;
18190
-
18191
- var _useEmojisThatFailedT = useEmojisThatFailedToLoadState(),
18192
- setEmojisThatFailedToLoad = _useEmojisThatFailedT[1];
18193
-
18194
- return React.createElement("img", {
18195
- src: getEmojiUrl(unified, emojiStyle),
18196
- alt: emojiName(emoji),
18197
- className: clsx(ClassNames.external, 'epr-emoji-img'),
18198
- loading: lazyLoad ? 'lazy' : 'eager',
18199
- onError: onError,
18200
- style: style
18201
- });
18202
18264
 
18203
18265
  function onError() {
18204
18266
  setEmojisThatFailedToLoad(function (prev) {
@@ -18207,6 +18269,35 @@ function EmojiImg(_ref4) {
18207
18269
  }
18208
18270
  }
18209
18271
 
18272
+ function ClickableEmoji(_ref) {
18273
+ var emoji = _ref.emoji,
18274
+ unified = _ref.unified,
18275
+ hidden = _ref.hidden,
18276
+ hiddenOnSearch = _ref.hiddenOnSearch,
18277
+ emojiStyle = _ref.emojiStyle,
18278
+ _ref$showVariations = _ref.showVariations,
18279
+ showVariations = _ref$showVariations === void 0 ? true : _ref$showVariations,
18280
+ size = _ref.size,
18281
+ lazyLoad = _ref.lazyLoad,
18282
+ getEmojiUrl = _ref.getEmojiUrl;
18283
+ var hasVariations = emojiHasVariations(emoji);
18284
+ return React.createElement(ClickableEmojiButton, {
18285
+ hasVariations: hasVariations,
18286
+ showVariations: showVariations,
18287
+ hidden: hidden,
18288
+ hiddenOnSearch: hiddenOnSearch,
18289
+ emojiNames: emojiNames(emoji),
18290
+ unified: unified
18291
+ }, React.createElement(ViewOnlyEmoji, {
18292
+ unified: unified,
18293
+ emoji: emoji,
18294
+ size: size,
18295
+ emojiStyle: emojiStyle,
18296
+ lazyLoad: lazyLoad,
18297
+ getEmojiUrl: getEmojiUrl
18298
+ }));
18299
+ }
18300
+
18210
18301
  function EmojiCategory(_ref) {
18211
18302
  var _clsx;
18212
18303
 
@@ -18967,6 +19058,16 @@ function useScrollCategoryIntoView() {
18967
19058
  };
18968
19059
  }
18969
19060
 
19061
+ function useShouldHideCustomEmojis() {
19062
+ var customCategoryConfig = useCustomEmojisConfig();
19063
+
19064
+ if (!customCategoryConfig) {
19065
+ return false;
19066
+ }
19067
+
19068
+ return customCategoryConfig.length === 0;
19069
+ }
19070
+
18970
19071
  function CategoryNavigation() {
18971
19072
  var _useState = React.useState(null),
18972
19073
  activeCategory = _useState[0],
@@ -18977,6 +19078,7 @@ function CategoryNavigation() {
18977
19078
  var isSearchMode = useIsSearchMode();
18978
19079
  var categoriesConfig = useCategoriesConfig();
18979
19080
  var CategoryNavigationRef = useCategoryNavigationRef();
19081
+ var hideCustomCategory = useShouldHideCustomEmojis();
18980
19082
  return React.createElement("div", {
18981
19083
  className: "epr-category-nav",
18982
19084
  ref: CategoryNavigationRef
@@ -18984,6 +19086,11 @@ function CategoryNavigation() {
18984
19086
  var _clsx;
18985
19087
 
18986
19088
  var category = categoryFromCategoryConfig(categoryConfig);
19089
+
19090
+ if (isCustomCategory(categoryConfig) && hideCustomCategory) {
19091
+ return null;
19092
+ }
19093
+
18987
19094
  return React.createElement(Button, {
18988
19095
  tabIndex: isSearchMode ? -1 : 0,
18989
19096
  className: clsx('epr-cat-btn', "epr-icn-" + category, (_clsx = {}, _clsx[ClassNames.active] = category === activeCategory, _clsx)),