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
@@ -4,22 +4,25 @@ import { useEffect, useRef } from 'react';
4
4
  import {
5
5
  emojiFromElement,
6
6
  isEmojiElement,
7
- NullableElement
7
+ NullableElement,
8
8
  } from '../DomUtils/selectors';
9
9
  import {
10
10
  useActiveSkinToneState,
11
11
  useDisallowClickRef,
12
12
  useEmojiVariationPickerState,
13
- useUpdateSuggested
13
+ useUpdateSuggested,
14
14
  } from '../components/context/PickerContext';
15
- import { useOnEmojiClickConfig } from '../config/useConfig';
15
+ import { GetEmojiUrl } from '../components/emoji/Emoji';
16
+ import {
17
+ useGetEmojiUrlConfig,
18
+ useOnEmojiClickConfig,
19
+ } from '../config/useConfig';
16
20
  import { DataEmoji } from '../dataUtils/DataTypes';
17
21
  import {
18
22
  activeVariationFromUnified,
19
23
  emojiHasVariations,
20
24
  emojiNames,
21
25
  emojiUnified,
22
- emojiUrlByUnified
23
26
  } from '../dataUtils/emojiSelectors';
24
27
  import { parseNativeEmoji } from '../dataUtils/parseNativeEmoji';
25
28
  import { setsuggested } from '../dataUtils/suggested';
@@ -39,6 +42,7 @@ export function useMouseDownHandlers(
39
42
  const [activeSkinTone] = useActiveSkinToneState();
40
43
  const onEmojiClick = useOnEmojiClickConfig();
41
44
  const [, updateSuggested] = useUpdateSuggested();
45
+ const getEmojiUrl = useGetEmojiUrlConfig();
42
46
 
43
47
  const onClick = React.useCallback(
44
48
  function onClick(event: MouseEvent) {
@@ -59,14 +63,15 @@ export function useMouseDownHandlers(
59
63
 
60
64
  updateSuggested();
61
65
  setsuggested(emoji, skinToneToUse);
62
- onEmojiClick(emojiClickOutput(emoji, skinToneToUse), event);
66
+ onEmojiClick(emojiClickOutput(emoji, skinToneToUse, getEmojiUrl), event);
63
67
  },
64
68
  [
65
69
  activeSkinTone,
66
70
  closeAllOpenToggles,
67
71
  disallowClickRef,
68
72
  onEmojiClick,
69
- updateSuggested
73
+ updateSuggested,
74
+ getEmojiUrl,
70
75
  ]
71
76
  );
72
77
 
@@ -94,7 +99,7 @@ export function useMouseDownHandlers(
94
99
  disallowClickRef,
95
100
  closeAllOpenToggles,
96
101
  setVariationPicker,
97
- setEmojiVariationPicker
102
+ setEmojiVariationPicker,
98
103
  ]
99
104
  );
100
105
  const onMouseUp = React.useCallback(
@@ -123,14 +128,14 @@ export function useMouseDownHandlers(
123
128
  }
124
129
  const bodyRef = BodyRef.current;
125
130
  bodyRef.addEventListener('click', onClick, {
126
- passive: true
131
+ passive: true,
127
132
  });
128
133
 
129
134
  bodyRef.addEventListener('mousedown', onMouseDown, {
130
- passive: true
135
+ passive: true,
131
136
  });
132
137
  bodyRef.addEventListener('mouseup', onMouseUp, {
133
- passive: true
138
+ passive: true,
134
139
  });
135
140
 
136
141
  return () => {
@@ -152,17 +157,18 @@ function emojiFromEvent(event: MouseEvent): [DataEmoji, string] | [] {
152
157
 
153
158
  function emojiClickOutput(
154
159
  emoji: DataEmoji,
155
- activeSkinTone: SkinTones
160
+ activeSkinTone: SkinTones,
161
+ getEmojiUrl: GetEmojiUrl
156
162
  ): EmojiClickData {
157
163
  const unified = emojiUnified(emoji, activeSkinTone);
158
164
  return {
159
165
  activeSkinTone,
160
166
  emoji: parseNativeEmoji(unified),
161
167
  getImageUrl(emojiStyle: EmojiStyle) {
162
- return emojiUrlByUnified(emojiStyle, unified);
168
+ return getEmojiUrl(unified, emojiStyle);
163
169
  },
164
170
  names: emojiNames(emoji),
165
171
  unified,
166
- unifiedWithoutSkinTone: emojiUnified(emoji)
172
+ unifiedWithoutSkinTone: emojiUnified(emoji),
167
173
  };
168
174
  }
@@ -2,7 +2,7 @@ import { useEffect } from 'react';
2
2
 
3
3
  import { buttonFromTarget, emojiFromElement } from '../DomUtils/selectors';
4
4
  import { useBodyRef } from '../components/context/ElementRefContext';
5
- import { useEmojiStyleConfig } from '../config/useConfig';
5
+ import { useEmojiStyleConfig, useGetEmojiUrlConfig } from '../config/useConfig';
6
6
  import { emojiHasVariations } from '../dataUtils/emojiSelectors';
7
7
  import { EmojiStyle } from '../types/exposedTypes';
8
8
 
@@ -11,6 +11,7 @@ import { preloadEmoji } from './preloadEmoji';
11
11
  export function useOnFocus() {
12
12
  const BodyRef = useBodyRef();
13
13
  const emojiStyle = useEmojiStyleConfig();
14
+ const getEmojiUrl = useGetEmojiUrlConfig();
14
15
 
15
16
  useEffect(() => {
16
17
  if (emojiStyle === EmojiStyle.NATIVE) {
@@ -39,8 +40,8 @@ export function useOnFocus() {
39
40
  }
40
41
 
41
42
  if (emojiHasVariations(emoji)) {
42
- preloadEmoji(emoji, emojiStyle);
43
+ preloadEmoji(getEmojiUrl, emoji, emojiStyle);
43
44
  }
44
45
  }
45
- }, [BodyRef, emojiStyle]);
46
+ }, [BodyRef, emojiStyle, getEmojiUrl]);
46
47
  }