emoji-picker-react 4.0.8 → 4.1.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.
- package/README.md +13 -4
- package/dist/components/context/PickerContext.d.ts +1 -0
- package/dist/config/config.d.ts +1 -0
- package/dist/config/useConfig.d.ts +1 -0
- package/dist/dataUtils/DataTypes.d.ts +1 -0
- package/dist/dataUtils/emojiSelectors.d.ts +1 -0
- package/dist/emoji-picker-react.cjs.development.js +3758 -1855
- package/dist/emoji-picker-react.cjs.development.js.map +1 -1
- package/dist/emoji-picker-react.cjs.production.min.js +1 -1
- package/dist/emoji-picker-react.cjs.production.min.js.map +1 -1
- package/dist/emoji-picker-react.esm.js +3759 -1856
- package/dist/emoji-picker-react.esm.js.map +1 -1
- package/dist/hooks/useDisallowedEmojis.d.ts +1 -0
- package/package.json +5 -5
- package/src/components/body/EmojiList.tsx +14 -6
- package/src/components/context/PickerContext.tsx +16 -3
- package/src/config/config.ts +9 -7
- package/src/config/useConfig.ts +6 -1
- package/src/data/emojis.json +1 -1
- package/src/dataUtils/DataTypes.ts +1 -0
- package/src/dataUtils/emojiSelectors.ts +8 -3
- package/src/hooks/useDisallowedEmojis.ts +33 -0
- package/src/types/exposedTypes.ts +5 -5
|
@@ -2,7 +2,7 @@ import { Categories } from '../config/categoryConfig';
|
|
|
2
2
|
import { cdnUrl } from '../config/cdnUrls';
|
|
3
3
|
import emojis from '../data/emojis';
|
|
4
4
|
import skinToneVariations, {
|
|
5
|
-
skinTonesMapped
|
|
5
|
+
skinTonesMapped,
|
|
6
6
|
} from '../data/skinToneVariations';
|
|
7
7
|
import { EmojiStyle, SkinTones } from '../types/exposedTypes';
|
|
8
8
|
|
|
@@ -11,13 +11,18 @@ import { DataEmoji, DataEmojis } from './DataTypes';
|
|
|
11
11
|
enum EmojiProperties {
|
|
12
12
|
name = 'n',
|
|
13
13
|
unified = 'u',
|
|
14
|
-
variations = 'v'
|
|
14
|
+
variations = 'v',
|
|
15
|
+
added_in = 'a',
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
export function emojiNames(emoji: DataEmoji): string[] {
|
|
18
19
|
return emoji[EmojiProperties.name] ?? [];
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
export function addedIn(emoji: DataEmoji): number {
|
|
23
|
+
return parseFloat(emoji[EmojiProperties.added_in]);
|
|
24
|
+
}
|
|
25
|
+
|
|
21
26
|
export function emojiName(emoji: DataEmoji): string {
|
|
22
27
|
return emojiNames(emoji)[0];
|
|
23
28
|
}
|
|
@@ -76,7 +81,7 @@ export function emojiVariationUnified(
|
|
|
76
81
|
skinTone?: string
|
|
77
82
|
): string | undefined {
|
|
78
83
|
return skinTone
|
|
79
|
-
? emojiVariations(emoji).find(variation => variation.includes(skinTone))
|
|
84
|
+
? emojiVariations(emoji).find((variation) => variation.includes(skinTone))
|
|
80
85
|
: emojiUnified(emoji);
|
|
81
86
|
}
|
|
82
87
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { useRef, useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
import { useEmojiVersionConfig } from '../config/useConfig';
|
|
4
|
+
import { DataEmoji } from '../dataUtils/DataTypes';
|
|
5
|
+
import { addedIn, allEmojis, emojiUnified } from '../dataUtils/emojiSelectors';
|
|
6
|
+
|
|
7
|
+
export function useDisallowedEmojis() {
|
|
8
|
+
const DisallowedEmojisRef = useRef<Record<string, boolean>>({});
|
|
9
|
+
const emojiVersionConfig = useEmojiVersionConfig();
|
|
10
|
+
|
|
11
|
+
return useMemo(() => {
|
|
12
|
+
const emojiVersion = parseFloat(`${emojiVersionConfig}`);
|
|
13
|
+
|
|
14
|
+
if (!emojiVersionConfig || Number.isNaN(emojiVersion)) {
|
|
15
|
+
return DisallowedEmojisRef.current;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
return allEmojis.reduce((disallowedEmojis, emoji) => {
|
|
19
|
+
if (addedInNewerVersion(emoji, emojiVersion)) {
|
|
20
|
+
disallowedEmojis[emojiUnified(emoji)] = true;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return disallowedEmojis;
|
|
24
|
+
}, DisallowedEmojisRef.current);
|
|
25
|
+
}, [emojiVersionConfig]);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
function addedInNewerVersion(
|
|
29
|
+
emoji: DataEmoji,
|
|
30
|
+
supportedLevel: number
|
|
31
|
+
): boolean {
|
|
32
|
+
return addedIn(emoji) > supportedLevel;
|
|
33
|
+
}
|
|
@@ -9,7 +9,7 @@ export type EmojiClickData = {
|
|
|
9
9
|
|
|
10
10
|
export enum SuggestionMode {
|
|
11
11
|
RECENT = 'recent',
|
|
12
|
-
FREQUENT = 'frequent'
|
|
12
|
+
FREQUENT = 'frequent',
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
export enum EmojiStyle {
|
|
@@ -17,13 +17,13 @@ export enum EmojiStyle {
|
|
|
17
17
|
APPLE = 'apple',
|
|
18
18
|
TWITTER = 'twitter',
|
|
19
19
|
GOOGLE = 'google',
|
|
20
|
-
FACEBOOK = 'facebook'
|
|
20
|
+
FACEBOOK = 'facebook',
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export enum Theme {
|
|
24
24
|
DARK = 'dark',
|
|
25
25
|
LIGHT = 'light',
|
|
26
|
-
AUTO = 'auto'
|
|
26
|
+
AUTO = 'auto',
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export enum SkinTones {
|
|
@@ -32,7 +32,7 @@ export enum SkinTones {
|
|
|
32
32
|
MEDIUM_LIGHT = '1f3fc',
|
|
33
33
|
MEDIUM = '1f3fd',
|
|
34
34
|
MEDIUM_DARK = '1f3fe',
|
|
35
|
-
DARK = '1f3ff'
|
|
35
|
+
DARK = '1f3ff',
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
export enum Categories {
|
|
@@ -44,5 +44,5 @@ export enum Categories {
|
|
|
44
44
|
ACTIVITIES = 'activities',
|
|
45
45
|
OBJECTS = 'objects',
|
|
46
46
|
SYMBOLS = 'symbols',
|
|
47
|
-
FLAGS = 'flags'
|
|
47
|
+
FLAGS = 'flags',
|
|
48
48
|
}
|