emoji-picker-react 4.1.0 → 4.2.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 (33) hide show
  1. package/README.md +25 -21
  2. package/dist/DomUtils/classNames.d.ts +3 -1
  3. package/dist/components/emoji/Emoji.d.ts +4 -2
  4. package/dist/components/emoji/ExportedEmoji.d.ts +3 -1
  5. package/dist/config/cdnUrls.d.ts +1 -1
  6. package/dist/config/config.d.ts +2 -0
  7. package/dist/config/useConfig.d.ts +1 -0
  8. package/dist/dataUtils/emojiSelectors.d.ts +1 -2
  9. package/dist/emoji-picker-react.cjs.development.js +295 -259
  10. package/dist/emoji-picker-react.cjs.development.js.map +1 -1
  11. package/dist/emoji-picker-react.cjs.production.min.js +1 -1
  12. package/dist/emoji-picker-react.cjs.production.min.js.map +1 -1
  13. package/dist/emoji-picker-react.esm.js +295 -259
  14. package/dist/emoji-picker-react.esm.js.map +1 -1
  15. package/dist/hooks/preloadEmoji.d.ts +2 -1
  16. package/package.json +1 -1
  17. package/src/DomUtils/classNames.ts +4 -2
  18. package/src/components/body/EmojiList.tsx +5 -1
  19. package/src/components/body/EmojiVariationPicker.tsx +13 -8
  20. package/src/components/body/Suggested.tsx +5 -2
  21. package/src/components/emoji/Emoji.tsx +17 -8
  22. package/src/components/emoji/ExportedEmoji.tsx +5 -2
  23. package/src/components/footer/Preview.tsx +9 -2
  24. package/src/components/header/Search.tsx +29 -10
  25. package/src/components/main/PickerMain.tsx +3 -3
  26. package/src/config/cdnUrls.ts +1 -1
  27. package/src/config/config.ts +4 -0
  28. package/src/config/useConfig.ts +8 -0
  29. package/src/dataUtils/emojiSelectors.ts +3 -10
  30. package/src/hooks/preloadEmoji.ts +5 -7
  31. package/src/hooks/useFilter.ts +8 -8
  32. package/src/hooks/useMouseDownHandlers.ts +19 -13
  33. package/src/hooks/useOnFocus.ts +4 -3
@@ -21,7 +21,9 @@ var ClassNames;
21
21
  ClassNames["categoryContent"] = "epr-emoji-category-content";
22
22
  ClassNames["emojiHasVariatios"] = "epr-emoji-has-variations";
23
23
  ClassNames["scrollBody"] = "epr-body";
24
+ ClassNames["emojiList"] = "epr-emoji-list";
24
25
  ClassNames["external"] = "__EmojiPicker__";
26
+ ClassNames["emojiPicker"] = "EmojiPickerReact";
25
27
  })(ClassNames || (ClassNames = {}));
26
28
 
27
29
  function asSelectors() {
@@ -230,238 +232,6 @@ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
230
232
  Categories["FLAGS"] = "flags";
231
233
  })(exports.Categories || (exports.Categories = {}));
232
234
 
233
- var _configByCategory;
234
- 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];
235
- var SuggestedRecent = {
236
- name: 'Recently Used',
237
- category: exports.Categories.SUGGESTED
238
- };
239
- var configByCategory = (_configByCategory = {}, _configByCategory[exports.Categories.SUGGESTED] = {
240
- category: exports.Categories.SUGGESTED,
241
- name: 'Frequently Used'
242
- }, _configByCategory[exports.Categories.SMILEYS_PEOPLE] = {
243
- category: exports.Categories.SMILEYS_PEOPLE,
244
- name: 'Smileys & People'
245
- }, _configByCategory[exports.Categories.ANIMALS_NATURE] = {
246
- category: exports.Categories.ANIMALS_NATURE,
247
- name: 'Animals & Nature'
248
- }, _configByCategory[exports.Categories.FOOD_DRINK] = {
249
- category: exports.Categories.FOOD_DRINK,
250
- name: 'Food & Drink'
251
- }, _configByCategory[exports.Categories.TRAVEL_PLACES] = {
252
- category: exports.Categories.TRAVEL_PLACES,
253
- name: 'Travel & Places'
254
- }, _configByCategory[exports.Categories.ACTIVITIES] = {
255
- category: exports.Categories.ACTIVITIES,
256
- name: 'Activities'
257
- }, _configByCategory[exports.Categories.OBJECTS] = {
258
- category: exports.Categories.OBJECTS,
259
- name: 'Objects'
260
- }, _configByCategory[exports.Categories.SYMBOLS] = {
261
- category: exports.Categories.SYMBOLS,
262
- name: 'Symbols'
263
- }, _configByCategory[exports.Categories.FLAGS] = {
264
- category: exports.Categories.FLAGS,
265
- name: 'Flags'
266
- }, _configByCategory);
267
- function baseCategoriesConfig(modifiers) {
268
- return categoriesOrdered.map(function (category) {
269
- return _extends({}, configByCategory[category], modifiers && modifiers[category] && modifiers[category]);
270
- });
271
- }
272
- function categoryFromCategoryConfig(category) {
273
- return category.category;
274
- }
275
- function categoryNameFromCategoryConfig(category) {
276
- return category.name;
277
- }
278
- function mergeCategoriesConfig(userCategoriesConfig, modifiers) {
279
- var _userCategoriesConfig;
280
-
281
- if (userCategoriesConfig === void 0) {
282
- userCategoriesConfig = [];
283
- }
284
-
285
- if (modifiers === void 0) {
286
- modifiers = {};
287
- }
288
-
289
- var extra = {};
290
-
291
- if (modifiers.suggestionMode === exports.SuggestionMode.RECENT) {
292
- extra[exports.Categories.SUGGESTED] = SuggestedRecent;
293
- }
294
-
295
- var base = baseCategoriesConfig(extra);
296
-
297
- if (!((_userCategoriesConfig = userCategoriesConfig) != null && _userCategoriesConfig.length)) {
298
- return base;
299
- }
300
-
301
- return userCategoriesConfig.map(function (category) {
302
- if (typeof category === 'string') {
303
- return getBaseConfigByCategory(category, extra[category]);
304
- }
305
-
306
- return _extends({}, getBaseConfigByCategory(category.category, extra[category.category]), category);
307
- });
308
- }
309
-
310
- function getBaseConfigByCategory(category, modifier) {
311
- if (modifier === void 0) {
312
- modifier = {};
313
- }
314
-
315
- return Object.assign(configByCategory[category], modifier);
316
- }
317
-
318
- function mergeConfig(userConfig) {
319
- var _userConfig$previewCo;
320
-
321
- if (userConfig === void 0) {
322
- userConfig = {};
323
- }
324
-
325
- var base = basePickerConfig();
326
- var previewConfig = Object.assign(base.previewConfig, (_userConfig$previewCo = userConfig.previewConfig) != null ? _userConfig$previewCo : {});
327
- var config = Object.assign(base, userConfig);
328
- var categories = mergeCategoriesConfig(userConfig.categories, {
329
- suggestionMode: config.suggestedEmojisMode
330
- });
331
- return _extends({}, config, {
332
- categories: categories,
333
- previewConfig: previewConfig
334
- });
335
- }
336
- function basePickerConfig() {
337
- return {
338
- autoFocusSearch: true,
339
- categories: baseCategoriesConfig(),
340
- defaultSkinTone: exports.SkinTones.NEUTRAL,
341
- emojiStyle: exports.EmojiStyle.APPLE,
342
- emojiVersion: null,
343
- height: 450,
344
- lazyLoadEmojis: false,
345
- onEmojiClick: function defaultOnClickHandler( // @ts-ignore
346
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
347
- emoji, // @ts-ignore
348
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
349
- event) {},
350
- previewConfig: _extends({}, basePreviewConfig),
351
- searchPlaceHolder: 'Search',
352
- skinTonesDisabled: false,
353
- suggestedEmojisMode: exports.SuggestionMode.FREQUENT,
354
- theme: exports.Theme.LIGHT,
355
- width: 350
356
- };
357
- }
358
- var basePreviewConfig = {
359
- defaultEmoji: '1f60a',
360
- defaultCaption: "What's your mood?",
361
- showPreview: true
362
- };
363
-
364
- var _excluded = ["children"];
365
- var ConfigContext = /*#__PURE__*/React.createContext( /*#__PURE__*/basePickerConfig());
366
- function PickerConfigProvider(_ref) {
367
- var children = _ref.children,
368
- config = _objectWithoutPropertiesLoose(_ref, _excluded);
369
-
370
- return React.createElement(ConfigContext.Provider, {
371
- value: mergeConfig(config)
372
- }, children);
373
- }
374
- function usePickerConfig() {
375
- return React.useContext(ConfigContext);
376
- }
377
-
378
- function useSearchPlaceHolderConfig() {
379
- var _usePickerConfig = usePickerConfig(),
380
- searchPlaceHolder = _usePickerConfig.searchPlaceHolder;
381
-
382
- return searchPlaceHolder;
383
- }
384
- function useDefaultSkinToneConfig() {
385
- var _usePickerConfig2 = usePickerConfig(),
386
- defaultSkinTone = _usePickerConfig2.defaultSkinTone;
387
-
388
- return defaultSkinTone;
389
- }
390
- function useSkinTonesDisabledConfig() {
391
- var _usePickerConfig3 = usePickerConfig(),
392
- skinTonesDisabled = _usePickerConfig3.skinTonesDisabled;
393
-
394
- return skinTonesDisabled;
395
- }
396
- function useEmojiStyleConfig() {
397
- var _usePickerConfig4 = usePickerConfig(),
398
- emojiStyle = _usePickerConfig4.emojiStyle;
399
-
400
- return emojiStyle;
401
- }
402
- function useAutoFocusSearchConfig() {
403
- var _usePickerConfig5 = usePickerConfig(),
404
- autoFocusSearch = _usePickerConfig5.autoFocusSearch;
405
-
406
- return autoFocusSearch;
407
- }
408
- function useCategoriesConfig() {
409
- var _usePickerConfig6 = usePickerConfig(),
410
- categories = _usePickerConfig6.categories;
411
-
412
- return categories;
413
- }
414
- function useOnEmojiClickConfig() {
415
- var _usePickerConfig7 = usePickerConfig(),
416
- onEmojiClick = _usePickerConfig7.onEmojiClick;
417
-
418
- return onEmojiClick;
419
- }
420
- function usePreviewConfig() {
421
- var _usePickerConfig8 = usePickerConfig(),
422
- previewConfig = _usePickerConfig8.previewConfig;
423
-
424
- return previewConfig;
425
- }
426
- function useThemeConfig() {
427
- var _usePickerConfig9 = usePickerConfig(),
428
- theme = _usePickerConfig9.theme;
429
-
430
- if (theme === exports.Theme.AUTO) {
431
- return isSystemDarkTheme() ? exports.Theme.DARK : exports.Theme.LIGHT;
432
- }
433
-
434
- return theme;
435
- }
436
- function useSuggestedEmojisModeConfig() {
437
- var _usePickerConfig10 = usePickerConfig(),
438
- suggestedEmojisMode = _usePickerConfig10.suggestedEmojisMode;
439
-
440
- return suggestedEmojisMode;
441
- }
442
- function useLazyLoadEmojisConfig() {
443
- var _usePickerConfig11 = usePickerConfig(),
444
- lazyLoadEmojis = _usePickerConfig11.lazyLoadEmojis;
445
-
446
- return lazyLoadEmojis;
447
- }
448
- function usePickerSizeConfig() {
449
- var _usePickerConfig12 = usePickerConfig(),
450
- height = _usePickerConfig12.height,
451
- width = _usePickerConfig12.width;
452
-
453
- return {
454
- height: height,
455
- width: width
456
- };
457
- }
458
- function useEmojiVersionConfig() {
459
- var _usePickerConfig13 = usePickerConfig(),
460
- emojiVersion = _usePickerConfig13.emojiVersion;
461
-
462
- return emojiVersion;
463
- }
464
-
465
235
  var CDN_URL_APPLE = 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/';
466
236
  var CDN_URL_FACEBOOK = 'https://cdn.jsdelivr.net/npm/emoji-datasource-facebook/img/facebook/64/';
467
237
  var CDN_URL_TWITTER = 'https://cdn.jsdelivr.net/npm/emoji-datasource-twitter/img/twitter/64/';
@@ -16864,8 +16634,9 @@ function emojisByCategory(category) {
16864
16634
 
16865
16635
  // @ts-ignore
16866
16636
  return (_emojis$category = emojis == null ? void 0 : emojis[category]) != null ? _emojis$category : [];
16867
- }
16868
- function emojiUrlByUnified(emojiStyle, unified) {
16637
+ } // WARNING: DO NOT USE DIRECTLY
16638
+
16639
+ function emojiUrlByUnified(unified, emojiStyle) {
16869
16640
  return "" + cdnUrl(emojiStyle) + unified + ".png";
16870
16641
  }
16871
16642
  function emojiVariations(emoji) {
@@ -16908,6 +16679,245 @@ function activeVariationFromUnified(unified) {
16908
16679
  return skinToneVariations.includes(suspectedSkinTone) ? suspectedSkinTone : null;
16909
16680
  }
16910
16681
 
16682
+ var _configByCategory;
16683
+ 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];
16684
+ var SuggestedRecent = {
16685
+ name: 'Recently Used',
16686
+ category: exports.Categories.SUGGESTED
16687
+ };
16688
+ var configByCategory = (_configByCategory = {}, _configByCategory[exports.Categories.SUGGESTED] = {
16689
+ category: exports.Categories.SUGGESTED,
16690
+ name: 'Frequently Used'
16691
+ }, _configByCategory[exports.Categories.SMILEYS_PEOPLE] = {
16692
+ category: exports.Categories.SMILEYS_PEOPLE,
16693
+ name: 'Smileys & People'
16694
+ }, _configByCategory[exports.Categories.ANIMALS_NATURE] = {
16695
+ category: exports.Categories.ANIMALS_NATURE,
16696
+ name: 'Animals & Nature'
16697
+ }, _configByCategory[exports.Categories.FOOD_DRINK] = {
16698
+ category: exports.Categories.FOOD_DRINK,
16699
+ name: 'Food & Drink'
16700
+ }, _configByCategory[exports.Categories.TRAVEL_PLACES] = {
16701
+ category: exports.Categories.TRAVEL_PLACES,
16702
+ name: 'Travel & Places'
16703
+ }, _configByCategory[exports.Categories.ACTIVITIES] = {
16704
+ category: exports.Categories.ACTIVITIES,
16705
+ name: 'Activities'
16706
+ }, _configByCategory[exports.Categories.OBJECTS] = {
16707
+ category: exports.Categories.OBJECTS,
16708
+ name: 'Objects'
16709
+ }, _configByCategory[exports.Categories.SYMBOLS] = {
16710
+ category: exports.Categories.SYMBOLS,
16711
+ name: 'Symbols'
16712
+ }, _configByCategory[exports.Categories.FLAGS] = {
16713
+ category: exports.Categories.FLAGS,
16714
+ name: 'Flags'
16715
+ }, _configByCategory);
16716
+ function baseCategoriesConfig(modifiers) {
16717
+ return categoriesOrdered.map(function (category) {
16718
+ return _extends({}, configByCategory[category], modifiers && modifiers[category] && modifiers[category]);
16719
+ });
16720
+ }
16721
+ function categoryFromCategoryConfig(category) {
16722
+ return category.category;
16723
+ }
16724
+ function categoryNameFromCategoryConfig(category) {
16725
+ return category.name;
16726
+ }
16727
+ function mergeCategoriesConfig(userCategoriesConfig, modifiers) {
16728
+ var _userCategoriesConfig;
16729
+
16730
+ if (userCategoriesConfig === void 0) {
16731
+ userCategoriesConfig = [];
16732
+ }
16733
+
16734
+ if (modifiers === void 0) {
16735
+ modifiers = {};
16736
+ }
16737
+
16738
+ var extra = {};
16739
+
16740
+ if (modifiers.suggestionMode === exports.SuggestionMode.RECENT) {
16741
+ extra[exports.Categories.SUGGESTED] = SuggestedRecent;
16742
+ }
16743
+
16744
+ var base = baseCategoriesConfig(extra);
16745
+
16746
+ if (!((_userCategoriesConfig = userCategoriesConfig) != null && _userCategoriesConfig.length)) {
16747
+ return base;
16748
+ }
16749
+
16750
+ return userCategoriesConfig.map(function (category) {
16751
+ if (typeof category === 'string') {
16752
+ return getBaseConfigByCategory(category, extra[category]);
16753
+ }
16754
+
16755
+ return _extends({}, getBaseConfigByCategory(category.category, extra[category.category]), category);
16756
+ });
16757
+ }
16758
+
16759
+ function getBaseConfigByCategory(category, modifier) {
16760
+ if (modifier === void 0) {
16761
+ modifier = {};
16762
+ }
16763
+
16764
+ return Object.assign(configByCategory[category], modifier);
16765
+ }
16766
+
16767
+ function mergeConfig(userConfig) {
16768
+ var _userConfig$previewCo;
16769
+
16770
+ if (userConfig === void 0) {
16771
+ userConfig = {};
16772
+ }
16773
+
16774
+ var base = basePickerConfig();
16775
+ var previewConfig = Object.assign(base.previewConfig, (_userConfig$previewCo = userConfig.previewConfig) != null ? _userConfig$previewCo : {});
16776
+ var config = Object.assign(base, userConfig);
16777
+ var categories = mergeCategoriesConfig(userConfig.categories, {
16778
+ suggestionMode: config.suggestedEmojisMode
16779
+ });
16780
+ return _extends({}, config, {
16781
+ categories: categories,
16782
+ previewConfig: previewConfig
16783
+ });
16784
+ }
16785
+ function basePickerConfig() {
16786
+ return {
16787
+ autoFocusSearch: true,
16788
+ categories: baseCategoriesConfig(),
16789
+ defaultSkinTone: exports.SkinTones.NEUTRAL,
16790
+ emojiStyle: exports.EmojiStyle.APPLE,
16791
+ emojiVersion: null,
16792
+ getEmojiUrl: emojiUrlByUnified,
16793
+ height: 450,
16794
+ lazyLoadEmojis: false,
16795
+ onEmojiClick: function defaultOnClickHandler( // @ts-ignore
16796
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
16797
+ emoji, // @ts-ignore
16798
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
16799
+ event) {},
16800
+ previewConfig: _extends({}, basePreviewConfig),
16801
+ searchPlaceHolder: 'Search',
16802
+ skinTonesDisabled: false,
16803
+ suggestedEmojisMode: exports.SuggestionMode.FREQUENT,
16804
+ theme: exports.Theme.LIGHT,
16805
+ width: 350
16806
+ };
16807
+ }
16808
+ var basePreviewConfig = {
16809
+ defaultEmoji: '1f60a',
16810
+ defaultCaption: "What's your mood?",
16811
+ showPreview: true
16812
+ };
16813
+
16814
+ var _excluded = ["children"];
16815
+ var ConfigContext = /*#__PURE__*/React.createContext( /*#__PURE__*/basePickerConfig());
16816
+ function PickerConfigProvider(_ref) {
16817
+ var children = _ref.children,
16818
+ config = _objectWithoutPropertiesLoose(_ref, _excluded);
16819
+
16820
+ return React.createElement(ConfigContext.Provider, {
16821
+ value: mergeConfig(config)
16822
+ }, children);
16823
+ }
16824
+ function usePickerConfig() {
16825
+ return React.useContext(ConfigContext);
16826
+ }
16827
+
16828
+ function useSearchPlaceHolderConfig() {
16829
+ var _usePickerConfig = usePickerConfig(),
16830
+ searchPlaceHolder = _usePickerConfig.searchPlaceHolder;
16831
+
16832
+ return searchPlaceHolder;
16833
+ }
16834
+ function useDefaultSkinToneConfig() {
16835
+ var _usePickerConfig2 = usePickerConfig(),
16836
+ defaultSkinTone = _usePickerConfig2.defaultSkinTone;
16837
+
16838
+ return defaultSkinTone;
16839
+ }
16840
+ function useSkinTonesDisabledConfig() {
16841
+ var _usePickerConfig3 = usePickerConfig(),
16842
+ skinTonesDisabled = _usePickerConfig3.skinTonesDisabled;
16843
+
16844
+ return skinTonesDisabled;
16845
+ }
16846
+ function useEmojiStyleConfig() {
16847
+ var _usePickerConfig4 = usePickerConfig(),
16848
+ emojiStyle = _usePickerConfig4.emojiStyle;
16849
+
16850
+ return emojiStyle;
16851
+ }
16852
+ function useAutoFocusSearchConfig() {
16853
+ var _usePickerConfig5 = usePickerConfig(),
16854
+ autoFocusSearch = _usePickerConfig5.autoFocusSearch;
16855
+
16856
+ return autoFocusSearch;
16857
+ }
16858
+ function useCategoriesConfig() {
16859
+ var _usePickerConfig6 = usePickerConfig(),
16860
+ categories = _usePickerConfig6.categories;
16861
+
16862
+ return categories;
16863
+ }
16864
+ function useOnEmojiClickConfig() {
16865
+ var _usePickerConfig7 = usePickerConfig(),
16866
+ onEmojiClick = _usePickerConfig7.onEmojiClick;
16867
+
16868
+ return onEmojiClick;
16869
+ }
16870
+ function usePreviewConfig() {
16871
+ var _usePickerConfig8 = usePickerConfig(),
16872
+ previewConfig = _usePickerConfig8.previewConfig;
16873
+
16874
+ return previewConfig;
16875
+ }
16876
+ function useThemeConfig() {
16877
+ var _usePickerConfig9 = usePickerConfig(),
16878
+ theme = _usePickerConfig9.theme;
16879
+
16880
+ if (theme === exports.Theme.AUTO) {
16881
+ return isSystemDarkTheme() ? exports.Theme.DARK : exports.Theme.LIGHT;
16882
+ }
16883
+
16884
+ return theme;
16885
+ }
16886
+ function useSuggestedEmojisModeConfig() {
16887
+ var _usePickerConfig10 = usePickerConfig(),
16888
+ suggestedEmojisMode = _usePickerConfig10.suggestedEmojisMode;
16889
+
16890
+ return suggestedEmojisMode;
16891
+ }
16892
+ function useLazyLoadEmojisConfig() {
16893
+ var _usePickerConfig11 = usePickerConfig(),
16894
+ lazyLoadEmojis = _usePickerConfig11.lazyLoadEmojis;
16895
+
16896
+ return lazyLoadEmojis;
16897
+ }
16898
+ function usePickerSizeConfig() {
16899
+ var _usePickerConfig12 = usePickerConfig(),
16900
+ height = _usePickerConfig12.height,
16901
+ width = _usePickerConfig12.width;
16902
+
16903
+ return {
16904
+ height: height,
16905
+ width: width
16906
+ };
16907
+ }
16908
+ function useEmojiVersionConfig() {
16909
+ var _usePickerConfig13 = usePickerConfig(),
16910
+ emojiVersion = _usePickerConfig13.emojiVersion;
16911
+
16912
+ return emojiVersion;
16913
+ }
16914
+ function useGetEmojiUrlConfig() {
16915
+ var _usePickerConfig14 = usePickerConfig(),
16916
+ getEmojiUrl = _usePickerConfig14.getEmojiUrl;
16917
+
16918
+ return getEmojiUrl;
16919
+ }
16920
+
16911
16921
  var alphaNumericEmojiIndex = {};
16912
16922
  setTimeout(function () {
16913
16923
  allEmojis.reduce(function (searchIndex, emoji) {
@@ -17817,6 +17827,7 @@ function useMouseDownHandlers(BodyRef) {
17817
17827
  var _useUpdateSuggested = useUpdateSuggested(),
17818
17828
  updateSuggested = _useUpdateSuggested[1];
17819
17829
 
17830
+ var getEmojiUrl = useGetEmojiUrlConfig();
17820
17831
  var onClick = React.useCallback(function onClick(event) {
17821
17832
  if (disallowClickRef.current) {
17822
17833
  return;
@@ -17835,8 +17846,8 @@ function useMouseDownHandlers(BodyRef) {
17835
17846
  var skinToneToUse = activeVariationFromUnified(unified) || activeSkinTone;
17836
17847
  updateSuggested();
17837
17848
  setsuggested(emoji, skinToneToUse);
17838
- onEmojiClick(emojiClickOutput(emoji, skinToneToUse), event);
17839
- }, [activeSkinTone, closeAllOpenToggles, disallowClickRef, onEmojiClick, updateSuggested]);
17849
+ onEmojiClick(emojiClickOutput(emoji, skinToneToUse, getEmojiUrl), event);
17850
+ }, [activeSkinTone, closeAllOpenToggles, disallowClickRef, onEmojiClick, updateSuggested, getEmojiUrl]);
17840
17851
  var onMouseDown = React.useCallback(function onMouseDown(event) {
17841
17852
  var _window;
17842
17853
 
@@ -17907,13 +17918,13 @@ function emojiFromEvent(event) {
17907
17918
  return emojiFromElement(target);
17908
17919
  }
17909
17920
 
17910
- function emojiClickOutput(emoji, activeSkinTone) {
17921
+ function emojiClickOutput(emoji, activeSkinTone, getEmojiUrl) {
17911
17922
  var unified = emojiUnified(emoji, activeSkinTone);
17912
17923
  return {
17913
17924
  activeSkinTone: activeSkinTone,
17914
17925
  emoji: parseNativeEmoji(unified),
17915
17926
  getImageUrl: function getImageUrl(emojiStyle) {
17916
- return emojiUrlByUnified(emojiStyle, unified);
17927
+ return getEmojiUrl(unified, emojiStyle);
17917
17928
  },
17918
17929
  names: emojiNames(emoji),
17919
17930
  unified: unified,
@@ -18173,7 +18184,8 @@ function ClickableEmoji(_ref) {
18173
18184
  _ref$showVariations = _ref.showVariations,
18174
18185
  showVariations = _ref$showVariations === void 0 ? true : _ref$showVariations,
18175
18186
  size = _ref.size,
18176
- lazyLoad = _ref.lazyLoad;
18187
+ lazyLoad = _ref.lazyLoad,
18188
+ getEmojiUrl = _ref.getEmojiUrl;
18177
18189
  var hasVariations = emojiHasVariations(emoji);
18178
18190
  return React.createElement(Button, {
18179
18191
  className: clsx(ClassNames.emoji, (_clsx = {}, _clsx[ClassNames.hidden] = hidden, _clsx[ClassNames.hiddenOnSearch] = hiddenOnSearch, _clsx[ClassNames.visible] = !hidden && !hiddenOnSearch, _clsx[ClassNames.emojiHasVariatios] = hasVariations && showVariations, _clsx)),
@@ -18185,7 +18197,8 @@ function ClickableEmoji(_ref) {
18185
18197
  emoji: emoji,
18186
18198
  size: size,
18187
18199
  emojiStyle: emojiStyle,
18188
- lazyLoad: lazyLoad
18200
+ lazyLoad: lazyLoad,
18201
+ getEmojiUrl: getEmojiUrl
18189
18202
  }));
18190
18203
  }
18191
18204
  function ViewOnlyEmoji(_ref2) {
@@ -18193,7 +18206,9 @@ function ViewOnlyEmoji(_ref2) {
18193
18206
  unified = _ref2.unified,
18194
18207
  emojiStyle = _ref2.emojiStyle,
18195
18208
  size = _ref2.size,
18196
- lazyLoad = _ref2.lazyLoad;
18209
+ lazyLoad = _ref2.lazyLoad,
18210
+ _ref2$getEmojiUrl = _ref2.getEmojiUrl,
18211
+ getEmojiUrl = _ref2$getEmojiUrl === void 0 ? emojiUrlByUnified : _ref2$getEmojiUrl;
18197
18212
  var style = {};
18198
18213
 
18199
18214
  if (size) {
@@ -18209,7 +18224,8 @@ function ViewOnlyEmoji(_ref2) {
18209
18224
  style: style,
18210
18225
  emoji: asEmoji(emojiToRender),
18211
18226
  emojiStyle: emojiStyle,
18212
- lazyLoad: lazyLoad
18227
+ lazyLoad: lazyLoad,
18228
+ getEmojiUrl: getEmojiUrl
18213
18229
  }));
18214
18230
  }
18215
18231
 
@@ -18229,13 +18245,14 @@ function EmojiImg(_ref4) {
18229
18245
  emojiStyle = _ref4.emojiStyle,
18230
18246
  style = _ref4.style,
18231
18247
  _ref4$lazyLoad = _ref4.lazyLoad,
18232
- lazyLoad = _ref4$lazyLoad === void 0 ? false : _ref4$lazyLoad;
18248
+ lazyLoad = _ref4$lazyLoad === void 0 ? false : _ref4$lazyLoad,
18249
+ getEmojiUrl = _ref4.getEmojiUrl;
18233
18250
 
18234
18251
  var _useEmojisThatFailedT = useEmojisThatFailedToLoadState(),
18235
18252
  setEmojisThatFailedToLoad = _useEmojisThatFailedT[1];
18236
18253
 
18237
18254
  return React.createElement("img", {
18238
- src: emojiUrlByUnified(emojiStyle, unified),
18255
+ src: getEmojiUrl(unified, emojiStyle),
18239
18256
  alt: emojiName(emoji),
18240
18257
  className: clsx(ClassNames.external, 'epr-emoji-img'),
18241
18258
  loading: lazyLoad ? 'lazy' : 'eager',
@@ -18277,6 +18294,7 @@ function Suggested(_ref) {
18277
18294
  suggestedUpdated = _useUpdateSuggested[0];
18278
18295
 
18279
18296
  var suggestedEmojisModeConfig = useSuggestedEmojisModeConfig();
18297
+ var getEmojiUrl = useGetEmojiUrlConfig();
18280
18298
  var suggested = React.useMemo(function () {
18281
18299
  var _getsuggested;
18282
18300
 
@@ -18300,7 +18318,8 @@ function Suggested(_ref) {
18300
18318
  unified: suggestedItem.unified,
18301
18319
  emojiStyle: emojiStyle,
18302
18320
  emoji: emoji,
18303
- key: suggestedItem.unified
18321
+ key: suggestedItem.unified,
18322
+ getEmojiUrl: getEmojiUrl
18304
18323
  });
18305
18324
  }));
18306
18325
  }
@@ -18308,7 +18327,7 @@ function Suggested(_ref) {
18308
18327
  function EmojiList() {
18309
18328
  var categories = useCategoriesConfig();
18310
18329
  return React.createElement("ul", {
18311
- className: "epr-emoji-list"
18330
+ className: ClassNames.emojiList
18312
18331
  }, categories.map(function (categoryConfig, index) {
18313
18332
  var category = categoryFromCategoryConfig(categoryConfig);
18314
18333
 
@@ -18340,7 +18359,8 @@ function RenderCategory(_ref) {
18340
18359
  var _useActiveSkinToneSta = useActiveSkinToneState(),
18341
18360
  activeSkinTone = _useActiveSkinToneSta[0];
18342
18361
 
18343
- var disallowedEmojisRef = useDisallowedEmojisRef(); // Small trick to defer the rendering of all emoji categories until the first category is visible
18362
+ var disallowedEmojisRef = useDisallowedEmojisRef();
18363
+ var getEmojiUrl = useGetEmojiUrlConfig(); // Small trick to defer the rendering of all emoji categories until the first category is visible
18344
18364
  // This way the user gets to actually see something and not wait for the whole picker to render.
18345
18365
 
18346
18366
  var emojisToPush = !isPastInitialLoad && index > 1 ? [] : emojisByCategory(category);
@@ -18370,7 +18390,8 @@ function RenderCategory(_ref) {
18370
18390
  hidden: failedToLoad,
18371
18391
  hiddenOnSearch: filteredOut,
18372
18392
  emojiStyle: emojiStyle,
18373
- lazyLoad: lazyLoadEmojis
18393
+ lazyLoad: lazyLoadEmojis,
18394
+ getEmojiUrl: getEmojiUrl
18374
18395
  });
18375
18396
  });
18376
18397
  return React.createElement(EmojiCategory, {
@@ -18403,6 +18424,7 @@ function EmojiVariationPicker() {
18403
18424
 
18404
18425
  var setAnchoredEmojiRef = useSetAnchoredEmojiRef();
18405
18426
  var getPointerStyle = usePointerStyle(VariationPickerRef);
18427
+ var getEmojiUrl = useGetEmojiUrlConfig();
18406
18428
  var button = buttonFromTarget(AnchoredEmojiRef.current);
18407
18429
  var visible = emoji && button && emojiHasVariations(emoji) && button.classList.contains(ClassNames.emojiHasVariatios);
18408
18430
  var top, pointerStyle;
@@ -18431,7 +18453,8 @@ function EmojiVariationPicker() {
18431
18453
  emoji: safeEmoji,
18432
18454
  unified: unified,
18433
18455
  emojiStyle: emojiStyle,
18434
- showVariations: false
18456
+ showVariations: false,
18457
+ getEmojiUrl: getEmojiUrl
18435
18458
  });
18436
18459
  }) : null, React.createElement("div", {
18437
18460
  className: "epr-emoji-pointer",
@@ -18629,6 +18652,7 @@ function Preview() {
18629
18652
  var _useEmojiVariationPic = useEmojiVariationPickerState(),
18630
18653
  variationPickerEmoji = _useEmojiVariationPic[0];
18631
18654
 
18655
+ var getEmojiUrl = useGetEmojiUrlConfig();
18632
18656
  useEmojiPreviewEvents(previewConfig.showPreview, setPreviewEmoji);
18633
18657
 
18634
18658
  if (!previewConfig.showPreview) {
@@ -18648,12 +18672,14 @@ function Preview() {
18648
18672
  unified: previewEmoji == null ? void 0 : previewEmoji.unified,
18649
18673
  emoji: asEmoji(emoji),
18650
18674
  emojiStyle: emojiStyle,
18651
- size: 45
18675
+ size: 45,
18676
+ getEmojiUrl: getEmojiUrl
18652
18677
  }) : defaultEmoji ? React.createElement(ViewOnlyEmoji, {
18653
18678
  unified: emojiUnified(defaultEmoji),
18654
18679
  emoji: defaultEmoji,
18655
18680
  emojiStyle: emojiStyle,
18656
- size: 45
18681
+ size: 45,
18682
+ getEmojiUrl: getEmojiUrl
18657
18683
  }) : null), show ? React.createElement("div", {
18658
18684
  className: "epr-preview-emoji-label"
18659
18685
  }, emojiName(asEmoji(emoji))) : React.createElement("div", {
@@ -18827,10 +18853,17 @@ function Search() {
18827
18853
  className: "epr-icn-clear-search"
18828
18854
  })));
18829
18855
  }
18856
+ var CSS_SEARCH_SELECTOR = /*#__PURE__*/asSelectors(ClassNames.emojiPicker) + " " + /*#__PURE__*/asSelectors(ClassNames.emojiList);
18830
18857
 
18831
18858
  function CssSearch(_ref) {
18832
18859
  var value = _ref.value;
18833
- return value ? React.createElement("style", null, "\n .EmojiPickerReact button.epr-emoji:not([data-full-name*=\"" + getNormalizedSearchTerm(value) + "\"]) {\n display: none;\n }\n ") : null;
18860
+
18861
+ if (!value) {
18862
+ return null;
18863
+ }
18864
+
18865
+ var searchQuery = "button[data-full-name*=\"" + getNormalizedSearchTerm(value) + "\"]";
18866
+ return React.createElement("style", null, "\n " + CSS_SEARCH_SELECTOR + " " + asSelectors(ClassNames.category) + ":not(:has(" + searchQuery + ")) {\n display: none;\n }\n\n " + CSS_SEARCH_SELECTOR + " button" + asSelectors(ClassNames.emoji) + ":not(" + searchQuery + ") {\n display: none;\n }\n ");
18834
18867
  }
18835
18868
 
18836
18869
  function SkinTonePicker() {
@@ -19275,7 +19308,7 @@ function hasModifier(event) {
19275
19308
  return metaKey || ctrlKey || altKey;
19276
19309
  }
19277
19310
 
19278
- function preloadEmoji(emoji, emojiStyle) {
19311
+ function preloadEmoji(getEmojiUrl, emoji, emojiStyle) {
19279
19312
  if (!emoji) {
19280
19313
  return;
19281
19314
  }
@@ -19291,7 +19324,7 @@ function preloadEmoji(emoji, emojiStyle) {
19291
19324
  }
19292
19325
 
19293
19326
  emojiVariations(emoji).forEach(function (variation) {
19294
- var emojiUrl = emojiUrlByUnified(emojiStyle, variation);
19327
+ var emojiUrl = getEmojiUrl(variation, emojiStyle);
19295
19328
  preloadImage(emojiUrl);
19296
19329
  });
19297
19330
  preloadedEmojs.add(unified);
@@ -19306,6 +19339,7 @@ function preloadImage(url) {
19306
19339
  function useOnFocus() {
19307
19340
  var BodyRef = useBodyRef();
19308
19341
  var emojiStyle = useEmojiStyleConfig();
19342
+ var getEmojiUrl = useGetEmojiUrlConfig();
19309
19343
  React.useEffect(function () {
19310
19344
  if (emojiStyle === exports.EmojiStyle.NATIVE) {
19311
19345
  return;
@@ -19332,10 +19366,10 @@ function useOnFocus() {
19332
19366
  }
19333
19367
 
19334
19368
  if (emojiHasVariations(emoji)) {
19335
- preloadEmoji(emoji, emojiStyle);
19369
+ preloadEmoji(getEmojiUrl, emoji, emojiStyle);
19336
19370
  }
19337
19371
  }
19338
- }, [BodyRef, emojiStyle]);
19372
+ }, [BodyRef, emojiStyle, getEmojiUrl]);
19339
19373
  }
19340
19374
 
19341
19375
  function PickerMain(_ref) {
@@ -19362,7 +19396,7 @@ function PickerRootElement(_ref2) {
19362
19396
  width: width + "px"
19363
19397
  };
19364
19398
  return React.createElement("aside", {
19365
- className: clsx('EmojiPickerReact', 'epr-main', (_clsx = {}, _clsx[ClassNames.searchActive] = searchModeActive, _clsx['epr-dark-theme'] = theme === exports.Theme.DARK, _clsx)),
19399
+ className: clsx(ClassNames.emojiPicker, 'epr-main', (_clsx = {}, _clsx[ClassNames.searchActive] = searchModeActive, _clsx['epr-dark-theme'] = theme === exports.Theme.DARK, _clsx)),
19366
19400
  ref: PickerMainRef,
19367
19401
  style: style
19368
19402
  }, children);
@@ -19416,7 +19450,8 @@ function ExportedEmoji(_ref) {
19416
19450
  _ref$emojiStyle = _ref.emojiStyle,
19417
19451
  emojiStyle = _ref$emojiStyle === void 0 ? exports.EmojiStyle.APPLE : _ref$emojiStyle,
19418
19452
  _ref$lazyLoad = _ref.lazyLoad,
19419
- lazyLoad = _ref$lazyLoad === void 0 ? false : _ref$lazyLoad;
19453
+ lazyLoad = _ref$lazyLoad === void 0 ? false : _ref$lazyLoad,
19454
+ getEmojiUrl = _ref.getEmojiUrl;
19420
19455
 
19421
19456
  if (!unified) {
19422
19457
  return null;
@@ -19426,7 +19461,8 @@ function ExportedEmoji(_ref) {
19426
19461
  unified: unified,
19427
19462
  size: size,
19428
19463
  emojiStyle: emojiStyle,
19429
- lazyLoad: lazyLoad
19464
+ lazyLoad: lazyLoad,
19465
+ getEmojiUrl: getEmojiUrl
19430
19466
  });
19431
19467
  }
19432
19468