emoji-picker-react 4.7.11 → 4.7.13
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 +2 -2
- package/dist/DomUtils/detectEmojyPartiallyBelowFold.d.ts +2 -0
- package/dist/config/compareConfig.d.ts +2 -0
- package/dist/config/config.d.ts +1 -0
- package/dist/config/useConfig.d.ts +1 -0
- package/dist/emoji-picker-react.cjs.development.js +79 -43
- 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 +80 -44
- package/dist/emoji-picker-react.esm.js.map +1 -1
- package/package.json +1 -1
- package/src/DomUtils/detectEmojyPartiallyBelowFold.ts +16 -0
- package/src/EmojiPickerReact.tsx +10 -24
- package/src/components/context/PickerConfigContext.tsx +24 -3
- package/src/components/main/PickerMain.tsx +1 -2
- package/src/config/compareConfig.ts +28 -0
- package/src/config/config.ts +3 -1
- package/src/config/mutableConfig.ts +3 -1
- package/src/config/useConfig.ts +5 -0
- package/src/hooks/useEmojiPreviewEvents.ts +11 -0
package/README.md
CHANGED
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|

|
|
8
8
|
|
|
9
|
-

|
|
10
|
-
---
|
|
9
|
+
## 
|
|
11
10
|
|
|
12
11
|
_If you enjoy using emoji-picker-react<br/>
|
|
13
12
|
You should also consider trying:<br/>
|
|
@@ -65,6 +64,7 @@ The following props are accepted by them picker:
|
|
|
65
64
|
|
|
66
65
|
| Prop | Type | Default | Description |
|
|
67
66
|
| ---------------------- | ------------------------------------------------------ | ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
67
|
+
| open | boolean | `true` | Controls whether the picker is open or not. |
|
|
68
68
|
| onEmojiClick | function | | Callback function that is called when an emoji is clicked. The function receives the emoji object as a parameter. |
|
|
69
69
|
| autoFocusSearch | boolean | `true` | Controls the auto focus of the search input. |
|
|
70
70
|
| Theme | string | `light` | Controls the theme of the picker. Possible values are `light`, `dark` and `auto`. |
|
package/dist/config/config.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export declare function useEmojiStyleConfig(): EmojiStyle;
|
|
|
14
14
|
export declare function useAutoFocusSearchConfig(): boolean;
|
|
15
15
|
export declare function useCategoriesConfig(): CategoriesConfig;
|
|
16
16
|
export declare function useCustomEmojisConfig(): CustomEmoji[];
|
|
17
|
+
export declare function useOpenConfig(): boolean;
|
|
17
18
|
export declare function useOnEmojiClickConfig(mouseEventSource: MOUSE_EVENT_SOURCE): (emoji: EmojiClickData, event: MouseEvent) => void;
|
|
18
19
|
export declare function usePreviewConfig(): PreviewConfig;
|
|
19
20
|
export declare function useThemeConfig(): Theme;
|
|
@@ -187,6 +187,14 @@ function darkMode(key, value) {
|
|
|
187
187
|
};
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
+
// eslint-disable-next-line complexity
|
|
191
|
+
function compareConfig(prev, next) {
|
|
192
|
+
var _prev$customEmojis, _next$customEmojis;
|
|
193
|
+
var prevCustomEmojis = (_prev$customEmojis = prev.customEmojis) != null ? _prev$customEmojis : [];
|
|
194
|
+
var nextCustomEmojis = (_next$customEmojis = next.customEmojis) != null ? _next$customEmojis : [];
|
|
195
|
+
return prev.open === next.open && prev.emojiVersion === next.emojiVersion && prev.reactionsDefaultOpen === next.reactionsDefaultOpen && prev.searchPlaceHolder === next.searchPlaceHolder && prev.searchPlaceholder === next.searchPlaceholder && prev.defaultSkinTone === next.defaultSkinTone && prev.skinTonesDisabled === next.skinTonesDisabled && prev.autoFocusSearch === next.autoFocusSearch && prev.emojiStyle === next.emojiStyle && prev.theme === next.theme && prev.suggestedEmojisMode === next.suggestedEmojisMode && prev.lazyLoadEmojis === next.lazyLoadEmojis && prev.className === next.className && prev.height === next.height && prev.width === next.width && prev.style === next.style && prev.searchDisabled === next.searchDisabled && prev.skinTonePickerLocation === next.skinTonePickerLocation && prevCustomEmojis.length === nextCustomEmojis.length;
|
|
196
|
+
}
|
|
197
|
+
|
|
190
198
|
var DEFAULT_REACTIONS = ['1f44d', '2764-fe0f', '1f603', '1f622', '1f64f', '1f44e', '1f621' // 😡
|
|
191
199
|
];
|
|
192
200
|
|
|
@@ -16835,7 +16843,8 @@ function basePickerConfig() {
|
|
|
16835
16843
|
unicodeToHide: new Set(KNOWN_FAILING_EMOJIS),
|
|
16836
16844
|
width: 350,
|
|
16837
16845
|
reactionsDefaultOpen: false,
|
|
16838
|
-
reactions: DEFAULT_REACTIONS
|
|
16846
|
+
reactions: DEFAULT_REACTIONS,
|
|
16847
|
+
open: true
|
|
16839
16848
|
};
|
|
16840
16849
|
}
|
|
16841
16850
|
var basePreviewConfig = {
|
|
@@ -16855,20 +16864,20 @@ function PickerConfigProvider(_ref) {
|
|
|
16855
16864
|
}, children);
|
|
16856
16865
|
}
|
|
16857
16866
|
function useSetConfig(config) {
|
|
16858
|
-
var _config$
|
|
16867
|
+
var _config$customEmojis;
|
|
16859
16868
|
var _React$useState = React.useState(function () {
|
|
16860
16869
|
return mergeConfig(config);
|
|
16861
16870
|
}),
|
|
16862
16871
|
mergedConfig = _React$useState[0],
|
|
16863
16872
|
setMergedConfig = _React$useState[1];
|
|
16864
16873
|
React.useEffect(function () {
|
|
16865
|
-
|
|
16866
|
-
|
|
16867
|
-
setMergedConfig(mergeConfig(config));
|
|
16874
|
+
if (compareConfig(mergedConfig, config)) {
|
|
16875
|
+
return;
|
|
16868
16876
|
}
|
|
16877
|
+
setMergedConfig(mergeConfig(config));
|
|
16869
16878
|
// not gonna...
|
|
16870
16879
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
16871
|
-
}, [(_config$
|
|
16880
|
+
}, [(_config$customEmojis = config.customEmojis) == null ? void 0 : _config$customEmojis.length, config.open, config.emojiVersion, config.reactionsDefaultOpen, config.searchPlaceHolder, config.searchPlaceholder, config.defaultSkinTone, config.skinTonesDisabled, config.autoFocusSearch, config.emojiStyle, config.theme, config.suggestedEmojisMode, config.lazyLoadEmojis, config.className, config.height, config.width, config.searchDisabled, config.skinTonePickerLocation]);
|
|
16872
16881
|
return mergedConfig;
|
|
16873
16882
|
}
|
|
16874
16883
|
function usePickerConfig() {
|
|
@@ -16887,7 +16896,8 @@ function useDefineMutableConfig(config) {
|
|
|
16887
16896
|
});
|
|
16888
16897
|
React__default.useEffect(function () {
|
|
16889
16898
|
MutableConfigRef.current.onEmojiClick = config.onEmojiClick || emptyFunc;
|
|
16890
|
-
|
|
16899
|
+
MutableConfigRef.current.onReactionClick = config.onReactionClick || config.onEmojiClick;
|
|
16900
|
+
}, [config.onEmojiClick, config.onReactionClick]);
|
|
16891
16901
|
return MutableConfigRef;
|
|
16892
16902
|
}
|
|
16893
16903
|
function emptyFunc() {}
|
|
@@ -16936,6 +16946,11 @@ function useCustomEmojisConfig() {
|
|
|
16936
16946
|
customEmojis = _usePickerConfig7.customEmojis;
|
|
16937
16947
|
return customEmojis;
|
|
16938
16948
|
}
|
|
16949
|
+
function useOpenConfig() {
|
|
16950
|
+
var _usePickerConfig8 = usePickerConfig(),
|
|
16951
|
+
open = _usePickerConfig8.open;
|
|
16952
|
+
return open;
|
|
16953
|
+
}
|
|
16939
16954
|
function useOnEmojiClickConfig(mouseEventSource) {
|
|
16940
16955
|
var _ref;
|
|
16941
16956
|
var _useMutableConfig = useMutableConfig(),
|
|
@@ -16944,73 +16959,73 @@ function useOnEmojiClickConfig(mouseEventSource) {
|
|
|
16944
16959
|
return handler || function () {};
|
|
16945
16960
|
}
|
|
16946
16961
|
function usePreviewConfig() {
|
|
16947
|
-
var
|
|
16948
|
-
previewConfig =
|
|
16962
|
+
var _usePickerConfig9 = usePickerConfig(),
|
|
16963
|
+
previewConfig = _usePickerConfig9.previewConfig;
|
|
16949
16964
|
return previewConfig;
|
|
16950
16965
|
}
|
|
16951
16966
|
function useThemeConfig() {
|
|
16952
|
-
var
|
|
16953
|
-
theme =
|
|
16967
|
+
var _usePickerConfig10 = usePickerConfig(),
|
|
16968
|
+
theme = _usePickerConfig10.theme;
|
|
16954
16969
|
return theme;
|
|
16955
16970
|
}
|
|
16956
16971
|
function useSuggestedEmojisModeConfig() {
|
|
16957
|
-
var
|
|
16958
|
-
suggestedEmojisMode =
|
|
16972
|
+
var _usePickerConfig11 = usePickerConfig(),
|
|
16973
|
+
suggestedEmojisMode = _usePickerConfig11.suggestedEmojisMode;
|
|
16959
16974
|
return suggestedEmojisMode;
|
|
16960
16975
|
}
|
|
16961
16976
|
function useLazyLoadEmojisConfig() {
|
|
16962
|
-
var
|
|
16963
|
-
lazyLoadEmojis =
|
|
16977
|
+
var _usePickerConfig12 = usePickerConfig(),
|
|
16978
|
+
lazyLoadEmojis = _usePickerConfig12.lazyLoadEmojis;
|
|
16964
16979
|
return lazyLoadEmojis;
|
|
16965
16980
|
}
|
|
16966
16981
|
function useClassNameConfig() {
|
|
16967
|
-
var
|
|
16968
|
-
className =
|
|
16982
|
+
var _usePickerConfig13 = usePickerConfig(),
|
|
16983
|
+
className = _usePickerConfig13.className;
|
|
16969
16984
|
return className;
|
|
16970
16985
|
}
|
|
16971
16986
|
function useStyleConfig() {
|
|
16972
|
-
var
|
|
16973
|
-
height =
|
|
16974
|
-
width =
|
|
16975
|
-
style =
|
|
16987
|
+
var _usePickerConfig14 = usePickerConfig(),
|
|
16988
|
+
height = _usePickerConfig14.height,
|
|
16989
|
+
width = _usePickerConfig14.width,
|
|
16990
|
+
style = _usePickerConfig14.style;
|
|
16976
16991
|
return _extends({
|
|
16977
16992
|
height: getDimension(height),
|
|
16978
16993
|
width: getDimension(width)
|
|
16979
16994
|
}, style);
|
|
16980
16995
|
}
|
|
16981
16996
|
function useReactionsOpenConfig() {
|
|
16982
|
-
var
|
|
16983
|
-
reactionsDefaultOpen =
|
|
16997
|
+
var _usePickerConfig15 = usePickerConfig(),
|
|
16998
|
+
reactionsDefaultOpen = _usePickerConfig15.reactionsDefaultOpen;
|
|
16984
16999
|
return reactionsDefaultOpen;
|
|
16985
17000
|
}
|
|
16986
17001
|
function useEmojiVersionConfig() {
|
|
16987
|
-
var
|
|
16988
|
-
emojiVersion =
|
|
17002
|
+
var _usePickerConfig16 = usePickerConfig(),
|
|
17003
|
+
emojiVersion = _usePickerConfig16.emojiVersion;
|
|
16989
17004
|
return emojiVersion;
|
|
16990
17005
|
}
|
|
16991
17006
|
function useSearchDisabledConfig() {
|
|
16992
|
-
var
|
|
16993
|
-
searchDisabled =
|
|
17007
|
+
var _usePickerConfig17 = usePickerConfig(),
|
|
17008
|
+
searchDisabled = _usePickerConfig17.searchDisabled;
|
|
16994
17009
|
return searchDisabled;
|
|
16995
17010
|
}
|
|
16996
17011
|
function useSkinTonePickerLocationConfig() {
|
|
16997
|
-
var
|
|
16998
|
-
skinTonePickerLocation =
|
|
17012
|
+
var _usePickerConfig18 = usePickerConfig(),
|
|
17013
|
+
skinTonePickerLocation = _usePickerConfig18.skinTonePickerLocation;
|
|
16999
17014
|
return skinTonePickerLocation;
|
|
17000
17015
|
}
|
|
17001
17016
|
function useUnicodeToHide() {
|
|
17002
|
-
var
|
|
17003
|
-
unicodeToHide =
|
|
17017
|
+
var _usePickerConfig19 = usePickerConfig(),
|
|
17018
|
+
unicodeToHide = _usePickerConfig19.unicodeToHide;
|
|
17004
17019
|
return unicodeToHide;
|
|
17005
17020
|
}
|
|
17006
17021
|
function useReactionsConfig() {
|
|
17007
|
-
var
|
|
17008
|
-
reactions =
|
|
17022
|
+
var _usePickerConfig20 = usePickerConfig(),
|
|
17023
|
+
reactions = _usePickerConfig20.reactions;
|
|
17009
17024
|
return reactions;
|
|
17010
17025
|
}
|
|
17011
17026
|
function useGetEmojiUrlConfig() {
|
|
17012
|
-
var
|
|
17013
|
-
getEmojiUrl =
|
|
17027
|
+
var _usePickerConfig21 = usePickerConfig(),
|
|
17028
|
+
getEmojiUrl = _usePickerConfig21.getEmojiUrl;
|
|
17014
17029
|
return getEmojiUrl;
|
|
17015
17030
|
}
|
|
17016
17031
|
function getDimension(dimensionConfig) {
|
|
@@ -18917,6 +18932,16 @@ var styles$9 = /*#__PURE__*/stylesheet.create({
|
|
|
18917
18932
|
}
|
|
18918
18933
|
});
|
|
18919
18934
|
|
|
18935
|
+
function detectEmojyPartiallyBelowFold(button, bodyRef) {
|
|
18936
|
+
if (!button || !bodyRef) {
|
|
18937
|
+
return 0;
|
|
18938
|
+
}
|
|
18939
|
+
var buttonRect = button.getBoundingClientRect();
|
|
18940
|
+
var bodyRect = bodyRef.getBoundingClientRect();
|
|
18941
|
+
// If the element is obscured by at least half of its size
|
|
18942
|
+
return bodyRect.height - (buttonRect.y - bodyRect.y);
|
|
18943
|
+
}
|
|
18944
|
+
|
|
18920
18945
|
function useEmojiPreviewEvents(allow, setPreviewEmoji) {
|
|
18921
18946
|
var BodyRef = useBodyRef();
|
|
18922
18947
|
var isMouseDisallowed = useIsMouseDisallowed();
|
|
@@ -18970,6 +18995,18 @@ function useEmojiPreviewEvents(allow, setPreviewEmoji) {
|
|
|
18970
18995
|
}
|
|
18971
18996
|
var button = buttonFromTarget(e.target);
|
|
18972
18997
|
if (button) {
|
|
18998
|
+
var belowFoldByPx = detectEmojyPartiallyBelowFold(button, bodyRef);
|
|
18999
|
+
var buttonHeight = button.getBoundingClientRect().height;
|
|
19000
|
+
if (belowFoldByPx < buttonHeight / 2) {
|
|
19001
|
+
return;
|
|
19002
|
+
}
|
|
19003
|
+
if (belowFoldByPx < buttonHeight) {
|
|
19004
|
+
button.scrollIntoView({
|
|
19005
|
+
behavior: 'smooth',
|
|
19006
|
+
block: 'end'
|
|
19007
|
+
});
|
|
19008
|
+
return;
|
|
19009
|
+
}
|
|
18973
19010
|
focusElement(button);
|
|
18974
19011
|
}
|
|
18975
19012
|
}
|
|
@@ -20183,7 +20220,7 @@ function useOnFocus() {
|
|
|
20183
20220
|
var _excluded$1 = ["width", "height"];
|
|
20184
20221
|
function PickerMain(_ref) {
|
|
20185
20222
|
var children = _ref.children;
|
|
20186
|
-
return React.createElement(PickerContextProvider, null, React.createElement(
|
|
20223
|
+
return React.createElement(PickerContextProvider, null, React.createElement(PickerRootElement, null, children));
|
|
20187
20224
|
}
|
|
20188
20225
|
function PickerRootElement(_ref2) {
|
|
20189
20226
|
var _cx;
|
|
@@ -20349,7 +20386,7 @@ var styles$j = /*#__PURE__*/stylesheet.create({
|
|
|
20349
20386
|
});
|
|
20350
20387
|
|
|
20351
20388
|
function EmojiPicker(props) {
|
|
20352
|
-
return React.createElement(ElementRefContextProvider, null, React.createElement(PickerConfigProvider, Object.assign({}, props), React.createElement(ContentControl, null)));
|
|
20389
|
+
return React.createElement(ElementRefContextProvider, null, React.createElement(PickerStyleTag, null), React.createElement(PickerConfigProvider, Object.assign({}, props), React.createElement(ContentControl, null)));
|
|
20353
20390
|
}
|
|
20354
20391
|
function ContentControl() {
|
|
20355
20392
|
var _useReactionsModeStat = useReactionsModeState(),
|
|
@@ -20357,20 +20394,19 @@ function ContentControl() {
|
|
|
20357
20394
|
var _React$useState = React.useState(!reactionsDefaultOpen),
|
|
20358
20395
|
renderAll = _React$useState[0],
|
|
20359
20396
|
setRenderAll = _React$useState[1];
|
|
20397
|
+
var isOpen = useOpenConfig();
|
|
20360
20398
|
React.useEffect(function () {
|
|
20361
20399
|
if (!renderAll) {
|
|
20362
20400
|
setRenderAll(true);
|
|
20363
20401
|
}
|
|
20364
20402
|
}, [renderAll]);
|
|
20403
|
+
if (!isOpen) {
|
|
20404
|
+
return null;
|
|
20405
|
+
}
|
|
20365
20406
|
return React.createElement(PickerMain, null, React.createElement(Reactions, null), renderAll ? React.createElement(React.Fragment, null, React.createElement(Header, null), React.createElement(Body, null), React.createElement(Preview, null)) : null);
|
|
20366
20407
|
}
|
|
20367
20408
|
// eslint-disable-next-line complexity
|
|
20368
|
-
var EmojiPickerReact = /*#__PURE__*/React.memo(EmojiPicker,
|
|
20369
|
-
var _prev$customEmojis, _next$customEmojis;
|
|
20370
|
-
var prevCustomEmojis = (_prev$customEmojis = prev.customEmojis) != null ? _prev$customEmojis : [];
|
|
20371
|
-
var nextCustomEmojis = (_next$customEmojis = next.customEmojis) != null ? _next$customEmojis : [];
|
|
20372
|
-
return prev.emojiVersion === next.emojiVersion && prev.reactionsDefaultOpen === next.reactionsDefaultOpen && prev.searchPlaceHolder === next.searchPlaceHolder && prev.searchPlaceholder === next.searchPlaceholder && prev.defaultSkinTone === next.defaultSkinTone && prev.skinTonesDisabled === next.skinTonesDisabled && prev.autoFocusSearch === next.autoFocusSearch && prev.emojiStyle === next.emojiStyle && prev.theme === next.theme && prev.suggestedEmojisMode === next.suggestedEmojisMode && prev.lazyLoadEmojis === next.lazyLoadEmojis && prev.className === next.className && prev.height === next.height && prev.width === next.width && prev.style === next.style && prev.searchDisabled === next.searchDisabled && prev.skinTonePickerLocation === next.skinTonePickerLocation && prevCustomEmojis.length === nextCustomEmojis.length;
|
|
20373
|
-
});
|
|
20409
|
+
var EmojiPickerReact = /*#__PURE__*/React.memo(EmojiPicker, compareConfig);
|
|
20374
20410
|
|
|
20375
20411
|
var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
20376
20412
|
_inheritsLoose(ErrorBoundary, _React$Component);
|