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.
- package/README.md +101 -41
- package/dist/components/body/EmojiCategory.d.ts +1 -1
- package/dist/components/context/PickerDataContext.d.ts +16 -0
- package/dist/components/navigation/CategoryButton.d.ts +1 -1
- package/dist/config/categoryConfig.d.ts +2 -6
- package/dist/config/config.d.ts +4 -1
- package/dist/config/useConfig.d.ts +1 -0
- package/dist/data/emojis-bn.d.ts +3 -0
- package/dist/data/emojis-bn.js +2 -0
- package/dist/data/emojis-bn.json +1 -0
- package/dist/data/emojis-bn.ts +3 -0
- package/dist/data/emojis-da.d.ts +3 -0
- package/dist/data/emojis-da.js +2 -0
- package/dist/data/emojis-da.json +1 -0
- package/dist/data/emojis-da.ts +3 -0
- package/dist/data/emojis-de.d.ts +3 -0
- package/dist/data/emojis-de.js +2 -0
- package/dist/data/emojis-de.json +1 -0
- package/dist/data/emojis-de.ts +3 -0
- package/dist/data/emojis-en-gb.d.ts +3 -0
- package/dist/data/emojis-en-gb.js +2 -0
- package/dist/data/emojis-en-gb.json +1 -0
- package/dist/data/emojis-en-gb.ts +3 -0
- package/dist/data/emojis-en.d.ts +3 -0
- package/dist/data/emojis-en.js +2 -0
- package/dist/data/emojis-en.json +1 -0
- package/dist/data/emojis-en.ts +3 -0
- package/dist/data/emojis-es-mx.d.ts +3 -0
- package/dist/data/emojis-es-mx.js +2 -0
- package/dist/data/emojis-es-mx.json +1 -0
- package/dist/data/emojis-es-mx.ts +3 -0
- package/dist/data/emojis-es.d.ts +3 -0
- package/dist/data/emojis-es.js +2 -0
- package/dist/data/emojis-es.json +1 -0
- package/dist/data/emojis-es.ts +3 -0
- package/dist/data/emojis-et.d.ts +3 -0
- package/dist/data/emojis-et.js +2 -0
- package/dist/data/emojis-et.json +1 -0
- package/dist/data/emojis-et.ts +3 -0
- package/dist/data/emojis-fi.d.ts +3 -0
- package/dist/data/emojis-fi.js +2 -0
- package/dist/data/emojis-fi.json +1 -0
- package/dist/data/emojis-fi.ts +3 -0
- package/dist/data/emojis-fr.d.ts +3 -0
- package/dist/data/emojis-fr.js +2 -0
- package/dist/data/emojis-fr.json +1 -0
- package/dist/data/emojis-fr.ts +3 -0
- package/dist/data/emojis-hi.d.ts +3 -0
- package/dist/data/emojis-hi.js +2 -0
- package/dist/data/emojis-hi.json +1 -0
- package/dist/data/emojis-hi.ts +3 -0
- package/dist/data/emojis-hu.d.ts +3 -0
- package/dist/data/emojis-hu.js +2 -0
- package/dist/data/emojis-hu.json +1 -0
- package/dist/data/emojis-hu.ts +3 -0
- package/dist/data/emojis-it.d.ts +3 -0
- package/dist/data/emojis-it.js +2 -0
- package/dist/data/emojis-it.json +1 -0
- package/dist/data/emojis-it.ts +3 -0
- package/dist/data/emojis-ja.d.ts +3 -0
- package/dist/data/emojis-ja.js +2 -0
- package/dist/data/emojis-ja.json +1 -0
- package/dist/data/emojis-ja.ts +3 -0
- package/dist/data/emojis-ko.d.ts +3 -0
- package/dist/data/emojis-ko.js +2 -0
- package/dist/data/emojis-ko.json +1 -0
- package/dist/data/emojis-ko.ts +3 -0
- package/dist/data/emojis-lt.d.ts +3 -0
- package/dist/data/emojis-lt.js +2 -0
- package/dist/data/emojis-lt.json +1 -0
- package/dist/data/emojis-lt.ts +3 -0
- package/dist/data/emojis-ms.d.ts +3 -0
- package/dist/data/emojis-ms.js +2 -0
- package/dist/data/emojis-ms.json +1 -0
- package/dist/data/emojis-ms.ts +3 -0
- package/dist/data/emojis-nb.d.ts +3 -0
- package/dist/data/emojis-nb.js +2 -0
- package/dist/data/emojis-nb.json +1 -0
- package/dist/data/emojis-nb.ts +3 -0
- package/dist/data/emojis-nl.d.ts +3 -0
- package/dist/data/emojis-nl.js +2 -0
- package/dist/data/emojis-nl.json +1 -0
- package/dist/data/emojis-nl.ts +3 -0
- package/dist/data/emojis-pl.d.ts +3 -0
- package/dist/data/emojis-pl.js +2 -0
- package/dist/data/emojis-pl.json +1 -0
- package/dist/data/emojis-pl.ts +3 -0
- package/dist/data/emojis-pt.d.ts +3 -0
- package/dist/data/emojis-pt.js +2 -0
- package/dist/data/emojis-pt.json +1 -0
- package/dist/data/emojis-pt.ts +3 -0
- package/dist/data/emojis-ru.d.ts +3 -0
- package/dist/data/emojis-ru.js +2 -0
- package/dist/data/emojis-ru.json +1 -0
- package/dist/data/emojis-ru.ts +3 -0
- package/dist/data/emojis-sv.d.ts +3 -0
- package/dist/data/emojis-sv.js +2 -0
- package/dist/data/emojis-sv.json +1 -0
- package/dist/data/emojis-sv.ts +3 -0
- package/dist/data/emojis-th.d.ts +3 -0
- package/dist/data/emojis-th.js +2 -0
- package/dist/data/emojis-th.json +1 -0
- package/dist/data/emojis-th.ts +3 -0
- package/dist/data/emojis-uk.d.ts +3 -0
- package/dist/data/emojis-uk.js +2 -0
- package/dist/data/emojis-uk.json +1 -0
- package/dist/data/emojis-uk.ts +3 -0
- package/dist/data/emojis-zh-hant.d.ts +3 -0
- package/dist/data/emojis-zh-hant.js +2 -0
- package/dist/data/emojis-zh-hant.json +1 -0
- package/dist/data/emojis-zh-hant.ts +3 -0
- package/dist/data/emojis-zh.d.ts +3 -0
- package/dist/data/emojis-zh.js +2 -0
- package/dist/data/emojis-zh.json +1 -0
- package/dist/data/emojis-zh.ts +3 -0
- package/dist/data/emojis.d.ts +102 -50
- package/dist/data/emojis.js +1 -0
- package/dist/data/emojis.json +1 -0
- package/dist/data/emojis.ts +1 -0
- package/dist/data/groups.d.ts +2 -2
- package/dist/data/groups.js +11 -0
- package/dist/data/groups.ts +12 -0
- package/dist/data/skinToneVariations.d.ts +5 -5
- package/dist/data/skinToneVariations.js +17 -0
- package/dist/data/skinToneVariations.ts +31 -0
- package/dist/dataUtils/DataTypes.d.ts +2 -2
- package/dist/dataUtils/emojiUtils.d.ts +12 -0
- package/dist/emoji-picker-react.cjs.development.js +20142 -17373
- 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 +20143 -17374
- package/dist/emoji-picker-react.esm.js.map +1 -1
- package/dist/typeRefinements/typeRefinements.d.ts +2 -1
- package/dist/types/exposedTypes.d.ts +64 -50
- package/dist/types/exposedTypes.js +46 -0
- package/package.json +9 -5
- package/src/EmojiPickerReact.tsx +4 -1
- package/src/components/Reactions/Reactions.tsx +28 -20
- package/src/components/body/EmojiCategory.tsx +1 -1
- package/src/components/body/EmojiList.tsx +3 -5
- package/src/components/context/PickerConfigContext.tsx +3 -1
- package/src/components/context/PickerContext.tsx +7 -2
- package/src/components/context/PickerDataContext.tsx +157 -0
- package/src/components/emoji/ClickableEmojiButton.tsx +1 -3
- package/src/components/emoji/ViewOnlyEmoji.tsx +4 -5
- package/src/components/footer/Preview.tsx +6 -6
- package/src/components/header/Search/BtnClearSearch.tsx +4 -2
- package/src/components/navigation/CategoryButton.tsx +2 -4
- package/src/config/categoryConfig.ts +47 -30
- package/src/config/compareConfig.ts +4 -2
- package/src/config/config.ts +34 -15
- package/src/config/useConfig.ts +6 -0
- package/src/data/emojis-bn.json +1 -0
- package/src/data/emojis-bn.ts +3 -0
- package/src/data/emojis-da.json +1 -0
- package/src/data/emojis-da.ts +3 -0
- package/src/data/emojis-de.json +1 -0
- package/src/data/emojis-de.ts +3 -0
- package/src/data/emojis-en-gb.json +1 -0
- package/src/data/emojis-en-gb.ts +3 -0
- package/src/data/emojis-en.json +1 -0
- package/src/data/emojis-en.ts +3 -0
- package/src/data/emojis-es-mx.json +1 -0
- package/src/data/emojis-es-mx.ts +3 -0
- package/src/data/emojis-es.json +1 -0
- package/src/data/emojis-es.ts +3 -0
- package/src/data/emojis-et.json +1 -0
- package/src/data/emojis-et.ts +3 -0
- package/src/data/emojis-fi.json +1 -0
- package/src/data/emojis-fi.ts +3 -0
- package/src/data/emojis-fr.json +1 -0
- package/src/data/emojis-fr.ts +3 -0
- package/src/data/emojis-hi.json +1 -0
- package/src/data/emojis-hi.ts +3 -0
- package/src/data/emojis-hu.json +1 -0
- package/src/data/emojis-hu.ts +3 -0
- package/src/data/emojis-it.json +1 -0
- package/src/data/emojis-it.ts +3 -0
- package/src/data/emojis-ja.json +1 -0
- package/src/data/emojis-ja.ts +3 -0
- package/src/data/emojis-ko.json +1 -0
- package/src/data/emojis-ko.ts +3 -0
- package/src/data/emojis-lt.json +1 -0
- package/src/data/emojis-lt.ts +3 -0
- package/src/data/emojis-ms.json +1 -0
- package/src/data/emojis-ms.ts +3 -0
- package/src/data/emojis-nb.json +1 -0
- package/src/data/emojis-nb.ts +3 -0
- package/src/data/emojis-nl.json +1 -0
- package/src/data/emojis-nl.ts +3 -0
- package/src/data/emojis-pl.json +1 -0
- package/src/data/emojis-pl.ts +3 -0
- package/src/data/emojis-pt.json +1 -0
- package/src/data/emojis-pt.ts +3 -0
- package/src/data/emojis-ru.json +1 -0
- package/src/data/emojis-ru.ts +3 -0
- package/src/data/emojis-sv.json +1 -0
- package/src/data/emojis-sv.ts +3 -0
- package/src/data/emojis-th.json +1 -0
- package/src/data/emojis-th.ts +3 -0
- package/src/data/emojis-uk.json +1 -0
- package/src/data/emojis-uk.ts +3 -0
- package/src/data/emojis-zh-hant.json +1 -0
- package/src/data/emojis-zh-hant.ts +3 -0
- package/src/data/emojis-zh.json +1 -0
- package/src/data/emojis-zh.ts +3 -0
- package/src/data/emojis.json +1 -1
- package/src/data/emojis.ts +1 -1
- package/src/dataUtils/DataTypes.ts +2 -2
- package/src/dataUtils/alphaNumericEmojiIndex.ts +1 -8
- package/src/dataUtils/emojiSelectors.ts +24 -25
- package/src/dataUtils/emojiUtils.ts +74 -0
- package/src/hooks/preloadEmoji.ts +1 -1
- package/src/hooks/useDisallowedEmojis.ts +4 -3
- package/src/hooks/useEmojiVirtualization.tsx +2 -3
- package/src/hooks/useFilter.ts +1 -1
- package/src/hooks/useIsEmojiHidden.ts +1 -1
- package/src/typeRefinements/typeRefinements.ts +2 -5
- package/src/types/exposedTypes.ts +17 -0
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import {
|
|
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 =
|
|
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
|
-
|
|
106
|
-
|
|
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
|
+
}
|
package/src/config/config.ts
CHANGED
|
@@ -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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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(
|
|
48
|
-
|
|
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
|
|
package/src/config/useConfig.ts
CHANGED
|
@@ -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;
|