emoji-picker-react 4.7.10 → 4.7.12

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 CHANGED
@@ -6,8 +6,7 @@
6
6
 
7
7
  ![image](https://github.com/ealush/emoji-picker-react/assets/11255103/48901306-e7fd-49cd-8f1e-9b214083a61d)
8
8
 
9
- ![reactions](https://github.com/ealush/emoji-picker-react/assets/11255103/c28cc954-dc1d-4d82-91a8-64a74cf1d598)
10
- ---
9
+ ## ![reactions](https://github.com/ealush/emoji-picker-react/assets/11255103/c28cc954-dc1d-4d82-91a8-64a74cf1d598)
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`. |
@@ -1,5 +1,5 @@
1
- /// <reference types="react" />
2
1
  import { Styles } from 'flairup';
2
+ import * as React from 'react';
3
3
  export declare const stylesheet: {
4
4
  create: <K extends string>(styles: Partial<{ [k in K]: Partial<Partial<CSSStyleDeclaration> & Partial<{
5
5
  '.'?: string | string[] | undefined;
@@ -9,7 +9,7 @@ export declare const stylesheet: {
9
9
  isApplied: () => boolean;
10
10
  };
11
11
  export declare const commonStyles: Record<never, Set<string>>;
12
- export declare function PickerStyleTag(): JSX.Element | null;
12
+ export declare const PickerStyleTag: React.NamedExoticComponent<object>;
13
13
  export declare const commonInteractionStyles: Record<never, Set<string>>;
14
14
  export declare function darkMode(key: string, value: Styles): {
15
15
  '.epr-dark-theme': {
@@ -34,6 +34,7 @@ export declare type PickerConfigInternal = {
34
34
  customEmojis: CustomEmoji[];
35
35
  reactionsDefaultOpen: boolean;
36
36
  reactions: string[];
37
+ open: boolean;
37
38
  };
38
39
  export declare type PreviewConfig = {
39
40
  defaultEmoji: string;
@@ -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;
@@ -110,19 +110,7 @@ function asSelectors() {
110
110
  }).join('');
111
111
  }
112
112
 
113
- var isEverMounted = false;
114
- function useIsEverMounted() {
115
- var _React$useState = React.useState(isEverMounted),
116
- isMounted = _React$useState[0],
117
- setIsMounted = _React$useState[1];
118
- React.useEffect(function () {
119
- setIsMounted(true);
120
- isEverMounted = true;
121
- }, []);
122
- return isMounted || isEverMounted;
123
- }
124
-
125
- var stylesheet = /*#__PURE__*/flairup.createSheet('epr');
113
+ var stylesheet = /*#__PURE__*/flairup.createSheet('epr', null);
126
114
  var hidden = {
127
115
  display: 'none',
128
116
  opacity: '0',
@@ -135,18 +123,14 @@ var commonStyles = /*#__PURE__*/stylesheet.create({
135
123
  '.': ClassNames.hidden
136
124
  }, hidden)
137
125
  });
138
- function PickerStyleTag() {
139
- var isMounted = useIsEverMounted();
140
- if (stylesheet.isApplied() && isMounted) {
141
- return null;
142
- }
126
+ var PickerStyleTag = /*#__PURE__*/React.memo(function PickerStyleTag() {
143
127
  return React.createElement("style", {
144
128
  suppressHydrationWarning: true,
145
129
  dangerouslySetInnerHTML: {
146
130
  __html: stylesheet.getStyle()
147
131
  }
148
132
  });
149
- }
133
+ });
150
134
  var commonInteractionStyles = /*#__PURE__*/stylesheet.create({
151
135
  '.epr-main': {
152
136
  ':has(input:not(:placeholder-shown))': {
@@ -16851,7 +16835,8 @@ function basePickerConfig() {
16851
16835
  unicodeToHide: new Set(KNOWN_FAILING_EMOJIS),
16852
16836
  width: 350,
16853
16837
  reactionsDefaultOpen: false,
16854
- reactions: DEFAULT_REACTIONS
16838
+ reactions: DEFAULT_REACTIONS,
16839
+ open: true
16855
16840
  };
16856
16841
  }
16857
16842
  var basePreviewConfig = {
@@ -16871,25 +16856,29 @@ function PickerConfigProvider(_ref) {
16871
16856
  }, children);
16872
16857
  }
16873
16858
  function useSetConfig(config) {
16874
- var _config$customEmojis2;
16859
+ var _config$customEmojis;
16875
16860
  var _React$useState = React.useState(function () {
16876
16861
  return mergeConfig(config);
16877
16862
  }),
16878
16863
  mergedConfig = _React$useState[0],
16879
16864
  setMergedConfig = _React$useState[1];
16880
16865
  React.useEffect(function () {
16881
- var _config$customEmojis, _mergedConfig$customE;
16882
- if (((_config$customEmojis = config.customEmojis) == null ? void 0 : _config$customEmojis.length) !== ((_mergedConfig$customE = mergedConfig.customEmojis) == null ? void 0 : _mergedConfig$customE.length)) {
16883
- setMergedConfig(mergeConfig(config));
16866
+ if (avoidRefresh(config, mergedConfig)) {
16867
+ return;
16884
16868
  }
16869
+ setMergedConfig(mergeConfig(config));
16885
16870
  // not gonna...
16886
16871
  // eslint-disable-next-line react-hooks/exhaustive-deps
16887
- }, [(_config$customEmojis2 = config.customEmojis) == null ? void 0 : _config$customEmojis2.length]);
16872
+ }, [(_config$customEmojis = config.customEmojis) == null ? void 0 : _config$customEmojis.length, config.open]);
16888
16873
  return mergedConfig;
16889
16874
  }
16890
16875
  function usePickerConfig() {
16891
16876
  return React.useContext(ConfigContext);
16892
16877
  }
16878
+ function avoidRefresh(prev, next) {
16879
+ var _prev$customEmojis, _next$customEmojis;
16880
+ return ((_prev$customEmojis = prev.customEmojis) == null ? void 0 : _prev$customEmojis.length) === ((_next$customEmojis = next.customEmojis) == null ? void 0 : _next$customEmojis.length) && prev.open === next.open;
16881
+ }
16893
16882
 
16894
16883
  var MutableConfigContext = /*#__PURE__*/React__default.createContext({});
16895
16884
  function useMutableConfig() {
@@ -16903,7 +16892,8 @@ function useDefineMutableConfig(config) {
16903
16892
  });
16904
16893
  React__default.useEffect(function () {
16905
16894
  MutableConfigRef.current.onEmojiClick = config.onEmojiClick || emptyFunc;
16906
- }, [config.onEmojiClick]);
16895
+ MutableConfigRef.current.onReactionClick = config.onReactionClick || config.onEmojiClick;
16896
+ }, [config.onEmojiClick, config.onReactionClick]);
16907
16897
  return MutableConfigRef;
16908
16898
  }
16909
16899
  function emptyFunc() {}
@@ -16952,6 +16942,11 @@ function useCustomEmojisConfig() {
16952
16942
  customEmojis = _usePickerConfig7.customEmojis;
16953
16943
  return customEmojis;
16954
16944
  }
16945
+ function useOpenConfig() {
16946
+ var _usePickerConfig8 = usePickerConfig(),
16947
+ open = _usePickerConfig8.open;
16948
+ return open;
16949
+ }
16955
16950
  function useOnEmojiClickConfig(mouseEventSource) {
16956
16951
  var _ref;
16957
16952
  var _useMutableConfig = useMutableConfig(),
@@ -16960,73 +16955,73 @@ function useOnEmojiClickConfig(mouseEventSource) {
16960
16955
  return handler || function () {};
16961
16956
  }
16962
16957
  function usePreviewConfig() {
16963
- var _usePickerConfig8 = usePickerConfig(),
16964
- previewConfig = _usePickerConfig8.previewConfig;
16958
+ var _usePickerConfig9 = usePickerConfig(),
16959
+ previewConfig = _usePickerConfig9.previewConfig;
16965
16960
  return previewConfig;
16966
16961
  }
16967
16962
  function useThemeConfig() {
16968
- var _usePickerConfig9 = usePickerConfig(),
16969
- theme = _usePickerConfig9.theme;
16963
+ var _usePickerConfig10 = usePickerConfig(),
16964
+ theme = _usePickerConfig10.theme;
16970
16965
  return theme;
16971
16966
  }
16972
16967
  function useSuggestedEmojisModeConfig() {
16973
- var _usePickerConfig10 = usePickerConfig(),
16974
- suggestedEmojisMode = _usePickerConfig10.suggestedEmojisMode;
16968
+ var _usePickerConfig11 = usePickerConfig(),
16969
+ suggestedEmojisMode = _usePickerConfig11.suggestedEmojisMode;
16975
16970
  return suggestedEmojisMode;
16976
16971
  }
16977
16972
  function useLazyLoadEmojisConfig() {
16978
- var _usePickerConfig11 = usePickerConfig(),
16979
- lazyLoadEmojis = _usePickerConfig11.lazyLoadEmojis;
16973
+ var _usePickerConfig12 = usePickerConfig(),
16974
+ lazyLoadEmojis = _usePickerConfig12.lazyLoadEmojis;
16980
16975
  return lazyLoadEmojis;
16981
16976
  }
16982
16977
  function useClassNameConfig() {
16983
- var _usePickerConfig12 = usePickerConfig(),
16984
- className = _usePickerConfig12.className;
16978
+ var _usePickerConfig13 = usePickerConfig(),
16979
+ className = _usePickerConfig13.className;
16985
16980
  return className;
16986
16981
  }
16987
16982
  function useStyleConfig() {
16988
- var _usePickerConfig13 = usePickerConfig(),
16989
- height = _usePickerConfig13.height,
16990
- width = _usePickerConfig13.width,
16991
- style = _usePickerConfig13.style;
16983
+ var _usePickerConfig14 = usePickerConfig(),
16984
+ height = _usePickerConfig14.height,
16985
+ width = _usePickerConfig14.width,
16986
+ style = _usePickerConfig14.style;
16992
16987
  return _extends({
16993
16988
  height: getDimension(height),
16994
16989
  width: getDimension(width)
16995
16990
  }, style);
16996
16991
  }
16997
16992
  function useReactionsOpenConfig() {
16998
- var _usePickerConfig14 = usePickerConfig(),
16999
- reactionsDefaultOpen = _usePickerConfig14.reactionsDefaultOpen;
16993
+ var _usePickerConfig15 = usePickerConfig(),
16994
+ reactionsDefaultOpen = _usePickerConfig15.reactionsDefaultOpen;
17000
16995
  return reactionsDefaultOpen;
17001
16996
  }
17002
16997
  function useEmojiVersionConfig() {
17003
- var _usePickerConfig15 = usePickerConfig(),
17004
- emojiVersion = _usePickerConfig15.emojiVersion;
16998
+ var _usePickerConfig16 = usePickerConfig(),
16999
+ emojiVersion = _usePickerConfig16.emojiVersion;
17005
17000
  return emojiVersion;
17006
17001
  }
17007
17002
  function useSearchDisabledConfig() {
17008
- var _usePickerConfig16 = usePickerConfig(),
17009
- searchDisabled = _usePickerConfig16.searchDisabled;
17003
+ var _usePickerConfig17 = usePickerConfig(),
17004
+ searchDisabled = _usePickerConfig17.searchDisabled;
17010
17005
  return searchDisabled;
17011
17006
  }
17012
17007
  function useSkinTonePickerLocationConfig() {
17013
- var _usePickerConfig17 = usePickerConfig(),
17014
- skinTonePickerLocation = _usePickerConfig17.skinTonePickerLocation;
17008
+ var _usePickerConfig18 = usePickerConfig(),
17009
+ skinTonePickerLocation = _usePickerConfig18.skinTonePickerLocation;
17015
17010
  return skinTonePickerLocation;
17016
17011
  }
17017
17012
  function useUnicodeToHide() {
17018
- var _usePickerConfig18 = usePickerConfig(),
17019
- unicodeToHide = _usePickerConfig18.unicodeToHide;
17013
+ var _usePickerConfig19 = usePickerConfig(),
17014
+ unicodeToHide = _usePickerConfig19.unicodeToHide;
17020
17015
  return unicodeToHide;
17021
17016
  }
17022
17017
  function useReactionsConfig() {
17023
- var _usePickerConfig19 = usePickerConfig(),
17024
- reactions = _usePickerConfig19.reactions;
17018
+ var _usePickerConfig20 = usePickerConfig(),
17019
+ reactions = _usePickerConfig20.reactions;
17025
17020
  return reactions;
17026
17021
  }
17027
17022
  function useGetEmojiUrlConfig() {
17028
- var _usePickerConfig20 = usePickerConfig(),
17029
- getEmojiUrl = _usePickerConfig20.getEmojiUrl;
17023
+ var _usePickerConfig21 = usePickerConfig(),
17024
+ getEmojiUrl = _usePickerConfig21.getEmojiUrl;
17030
17025
  return getEmojiUrl;
17031
17026
  }
17032
17027
  function getDimension(dimensionConfig) {
@@ -18525,6 +18520,18 @@ var styles$6 = /*#__PURE__*/stylesheet.create({
18525
18520
  }
18526
18521
  });
18527
18522
 
18523
+ var isEverMounted = false;
18524
+ function useIsEverMounted() {
18525
+ var _React$useState = React.useState(isEverMounted),
18526
+ isMounted = _React$useState[0],
18527
+ setIsMounted = _React$useState[1];
18528
+ React.useEffect(function () {
18529
+ setIsMounted(true);
18530
+ isEverMounted = true;
18531
+ }, []);
18532
+ return isMounted || isEverMounted;
18533
+ }
18534
+
18528
18535
  function Suggested(_ref) {
18529
18536
  var categoryConfig = _ref.categoryConfig;
18530
18537
  var _useUpdateSuggested = useUpdateSuggested(),
@@ -20187,7 +20194,7 @@ function useOnFocus() {
20187
20194
  var _excluded$1 = ["width", "height"];
20188
20195
  function PickerMain(_ref) {
20189
20196
  var children = _ref.children;
20190
- return React.createElement(PickerContextProvider, null, React.createElement(PickerStyleTag, null), React.createElement(PickerRootElement, null, children));
20197
+ return React.createElement(PickerContextProvider, null, React.createElement(PickerRootElement, null, children));
20191
20198
  }
20192
20199
  function PickerRootElement(_ref2) {
20193
20200
  var _cx;
@@ -20353,7 +20360,7 @@ var styles$j = /*#__PURE__*/stylesheet.create({
20353
20360
  });
20354
20361
 
20355
20362
  function EmojiPicker(props) {
20356
- return React.createElement(ElementRefContextProvider, null, React.createElement(PickerConfigProvider, Object.assign({}, props), React.createElement(ContentControl, null)));
20363
+ return React.createElement(ElementRefContextProvider, null, React.createElement(PickerStyleTag, null), React.createElement(PickerConfigProvider, Object.assign({}, props), React.createElement(ContentControl, null)));
20357
20364
  }
20358
20365
  function ContentControl() {
20359
20366
  var _useReactionsModeStat = useReactionsModeState(),
@@ -20361,11 +20368,15 @@ function ContentControl() {
20361
20368
  var _React$useState = React.useState(!reactionsDefaultOpen),
20362
20369
  renderAll = _React$useState[0],
20363
20370
  setRenderAll = _React$useState[1];
20371
+ var isOpen = useOpenConfig();
20364
20372
  React.useEffect(function () {
20365
20373
  if (!renderAll) {
20366
20374
  setRenderAll(true);
20367
20375
  }
20368
20376
  }, [renderAll]);
20377
+ if (!isOpen) {
20378
+ return null;
20379
+ }
20369
20380
  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);
20370
20381
  }
20371
20382
  // eslint-disable-next-line complexity
@@ -20373,7 +20384,7 @@ var EmojiPickerReact = /*#__PURE__*/React.memo(EmojiPicker, function (prev, next
20373
20384
  var _prev$customEmojis, _next$customEmojis;
20374
20385
  var prevCustomEmojis = (_prev$customEmojis = prev.customEmojis) != null ? _prev$customEmojis : [];
20375
20386
  var nextCustomEmojis = (_next$customEmojis = next.customEmojis) != null ? _next$customEmojis : [];
20376
- 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;
20387
+ 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;
20377
20388
  });
20378
20389
 
20379
20390
  var ErrorBoundary = /*#__PURE__*/function (_React$Component) {