emoji-picker-react 4.5.5 → 4.5.7

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/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "4.5.5",
2
+ "version": "4.5.7",
3
3
  "license": "MIT",
4
4
  "main": "dist/index.js",
5
5
  "typings": "dist/index.d.ts",
@@ -16,7 +16,9 @@ export enum ClassNames {
16
16
  open = 'epr-open',
17
17
  vertical = 'epr-vertical',
18
18
  horizontal = 'epr-horizontal',
19
- variationPicker = 'epr-emoji-variation-picker'
19
+ variationPicker = 'epr-emoji-variation-picker',
20
+ darkTheme = 'epr-dark-theme',
21
+ autoTheme = 'epr-auto-theme'
20
22
  }
21
23
 
22
24
  export function asSelectors(...classNames: ClassNames[]): string {
@@ -1,7 +1,7 @@
1
1
  import { DataEmoji } from '../dataUtils/DataTypes';
2
2
  import {
3
3
  emojiByUnified,
4
- unifiedWithoutSkinTone,
4
+ unifiedWithoutSkinTone
5
5
  } from '../dataUtils/emojiSelectors';
6
6
 
7
7
  import { asSelectors, ClassNames } from './classNames';
@@ -13,7 +13,7 @@ export const EmojiButtonSelector = `button${asSelectors(ClassNames.emoji)}`;
13
13
  export const VisibleEmojiSelector = [
14
14
  EmojiButtonSelector,
15
15
  asSelectors(ClassNames.visible),
16
- `:not(${asSelectors(ClassNames.hidden)})`,
16
+ `:not(${asSelectors(ClassNames.hidden)})`
17
17
  ].join('');
18
18
 
19
19
  export function buttonFromTarget(
@@ -40,7 +40,7 @@ export function emojiFromElement(
40
40
  return [];
41
41
  }
42
42
 
43
- const emoji = emojiByUnified(originalUnified);
43
+ const emoji = emojiByUnified(unified ?? originalUnified);
44
44
 
45
45
  if (!emoji) {
46
46
  return [];
@@ -71,21 +71,78 @@
71
71
  --epr-preview-z-index: 6;
72
72
  }
73
73
 
74
- .EmojiPickerReact.epr-dark-theme {
74
+ .EmojiPickerReact {
75
+ /* Dark Theme Variables */
75
76
  --epr-dark: #000;
76
- --epr-emoji-variation-picker-bg-color: var(--epr-dark);
77
- --epr-highlight-color: #c0c0c0;
78
- --epr-text-color: var(--epr-highlight-color);
79
- --epr-hover-bg-color: #363636f6;
80
- --epr-focus-bg-color: #474747;
81
- --epr-search-input-bg-color: #333333;
82
- --epr-category-label-bg-color: #222222e6;
83
- --epr-picker-border-color: #151617;
84
- --epr-bg-color: #222222;
85
- --epr-search-input-bg-color-active: var(--epr-dark);
86
- --epr-emoji-variation-indicator-color: #444;
87
- --epr-category-icon-active-color: #3271b7;
88
- --epr-skin-tone-picker-menu-color: #22222295;
77
+ --epr-dark-emoji-variation-picker-bg-color: var(--epr-dark);
78
+ --epr-dark-highlight-color: #c0c0c0;
79
+ --epr-dark-text-color: var(--epr-highlight-color);
80
+ --epr-dark-hover-bg-color: #363636f6;
81
+ --epr-dark-focus-bg-color: #474747;
82
+ --epr-dark-search-input-bg-color: #333333;
83
+ --epr-dark-category-label-bg-color: #222222e6;
84
+ --epr-dark-picker-border-color: #151617;
85
+ --epr-dark-bg-color: #222222;
86
+ --epr-dark-search-input-bg-color-active: var(--epr-dark);
87
+ --epr-dark-emoji-variation-indicator-color: #444;
88
+ --epr-dark-category-icon-active-color: #3271b7;
89
+ --epr-dark-skin-tone-picker-menu-color: #22222295;
90
+ }
91
+
92
+ @media (prefers-color-scheme: dark) {
93
+ /* Keep in sync with the section below */
94
+ .EmojiPickerReact.epr-auto-theme {
95
+ --epr-dark: var(--epr-dark-dark);
96
+ --epr-emoji-variation-picker-bg-color: var(
97
+ --epr-dark-emoji-variation-picker-bg-color
98
+ );
99
+ --epr-highlight-color: var(--epr-dark-highlight-color);
100
+ --epr-text-color: var(--epr-dark-text-color);
101
+ --epr-hover-bg-color: var(--epr-dark-hover-bg-color);
102
+ --epr-focus-bg-color: var(--epr-dark-focus-bg-color);
103
+ --epr-search-input-bg-color: var(--epr-dark-search-input-bg-color);
104
+ --epr-category-label-bg-color: var(--epr-dark-category-label-bg-color);
105
+ --epr-picker-border-color: var(--epr-dark-picker-border-color);
106
+ --epr-bg-color: var(--epr-dark-bg-color);
107
+ --epr-search-input-bg-color-active: var(
108
+ --epr-dark-search-input-bg-color-active
109
+ );
110
+ --epr-emoji-variation-indicator-color: var(
111
+ --epr-dark-emoji-variation-indicator-color
112
+ );
113
+ --epr-category-icon-active-color: var(
114
+ --epr-dark-category-icon-active-color
115
+ );
116
+ --epr-skin-tone-picker-menu-color: var(
117
+ --epr-dark-skin-tone-picker-menu-color
118
+ );
119
+ }
120
+ }
121
+
122
+ .EmojiPickerReact.epr-dark-theme {
123
+ /* Keep in sync with the section above */
124
+ --epr-dark: var(--epr-dark-dark);
125
+ --epr-emoji-variation-picker-bg-color: var(
126
+ --epr-dark-emoji-variation-picker-bg-color
127
+ );
128
+ --epr-highlight-color: var(--epr-dark-highlight-color);
129
+ --epr-text-color: var(--epr-dark-text-color);
130
+ --epr-hover-bg-color: var(--epr-dark-hover-bg-color);
131
+ --epr-focus-bg-color: var(--epr-dark-focus-bg-color);
132
+ --epr-search-input-bg-color: var(--epr-dark-search-input-bg-color);
133
+ --epr-category-label-bg-color: var(--epr-dark-category-label-bg-color);
134
+ --epr-picker-border-color: var(--epr-dark-picker-border-color);
135
+ --epr-bg-color: var(--epr-dark-bg-color);
136
+ --epr-search-input-bg-color-active: var(
137
+ --epr-dark-search-input-bg-color-active
138
+ );
139
+ --epr-emoji-variation-indicator-color: var(
140
+ --epr-dark-emoji-variation-indicator-color
141
+ );
142
+ --epr-category-icon-active-color: var(--epr-dark-category-icon-active-color);
143
+ --epr-skin-tone-picker-menu-color: var(
144
+ --epr-dark-skin-tone-picker-menu-color
145
+ );
89
146
  }
90
147
 
91
148
  .EmojiPickerReact {
@@ -67,6 +67,10 @@
67
67
  letter-spacing: 0;
68
68
  }
69
69
 
70
+ .EmojiPickerReact button.epr-emoji > * {
71
+ transition: background-color 0.2s;
72
+ }
73
+
70
74
  .EmojiPickerReact button.epr-emoji:hover > * {
71
75
  background-color: var(--epr-emoji-hover-color);
72
76
  }
@@ -17,8 +17,8 @@ import Flex from '../Layout/Flex';
17
17
  import Space from '../Layout/Space';
18
18
  import { useEmojiVariationPickerState } from '../context/PickerContext';
19
19
  import './Preview.css';
20
- import { SkinTonePickerMenu } from '../header/SkinTonePicker';
21
20
  import { ViewOnlyEmoji } from '../emoji/ViewOnlyEmoji';
21
+ import { SkinTonePickerMenu } from '../header/SkinTonePicker';
22
22
 
23
23
  export function Preview() {
24
24
  const previewConfig = usePreviewConfig();
@@ -46,16 +46,19 @@ export function PreviewBody() {
46
46
 
47
47
  useEmojiPreviewEvents(previewConfig.showPreview, setPreviewEmoji);
48
48
 
49
- const emoji = emojiByUnified(previewEmoji?.originalUnified);
49
+ const emoji = emojiByUnified(
50
+ previewEmoji?.unified ?? previewEmoji?.originalUnified
51
+ );
50
52
 
51
53
  const show = emoji != null && previewEmoji != null;
52
54
 
53
55
  return <PreviewContent />;
54
56
 
55
57
  function PreviewContent() {
56
- const defaultEmoji = variationPickerEmoji ?? emojiByUnified(previewConfig.defaultEmoji)
58
+ const defaultEmoji =
59
+ variationPickerEmoji ?? emojiByUnified(previewConfig.defaultEmoji);
57
60
  if (!defaultEmoji) {
58
- return null
61
+ return null;
59
62
  }
60
63
  const defaultText = variationPickerEmoji
61
64
  ? emojiName(variationPickerEmoji)
@@ -83,9 +86,7 @@ export function PreviewBody() {
83
86
  ) : null}
84
87
  </div>
85
88
  {show ? (
86
- <div className="epr-preview-emoji-label">
87
- {emojiName(emoji)}
88
- </div>
89
+ <div className="epr-preview-emoji-label">{emojiName(emoji)}</div>
89
90
  ) : (
90
91
  <div className="epr-preview-emoji-label">{defaultText}</div>
91
92
  )}
@@ -40,11 +40,14 @@ function PickerRootElement({ children }: RootProps) {
40
40
  width
41
41
  };
42
42
 
43
+
44
+
43
45
  return (
44
46
  <aside
45
47
  className={clsx(ClassNames.emojiPicker, 'epr-main', {
46
48
  [ClassNames.searchActive]: searchModeActive,
47
- 'epr-dark-theme': theme === Theme.DARK
49
+ [ClassNames.darkTheme]: theme === Theme.DARK,
50
+ [ClassNames.autoTheme]: theme === Theme.AUTO
48
51
  })}
49
52
  ref={PickerMainRef}
50
53
  style={style}
@@ -1,4 +1,3 @@
1
- import { isSystemDarkTheme } from '../DomUtils/isDarkTheme';
2
1
  import { usePickerConfig } from '../components/context/PickerConfigContext';
3
2
  import {
4
3
  EmojiClickData,
@@ -73,10 +72,6 @@ export function usePreviewConfig(): PreviewConfig {
73
72
  export function useThemeConfig(): Theme {
74
73
  const { theme } = usePickerConfig();
75
74
 
76
- if (theme === Theme.AUTO) {
77
- return isSystemDarkTheme() ? Theme.DARK : Theme.LIGHT;
78
- }
79
-
80
75
  return theme;
81
76
  }
82
77
 
@@ -123,6 +123,13 @@ const allEmojisByUnified: {
123
123
  setTimeout(() => {
124
124
  allEmojis.reduce((allEmojis, Emoji) => {
125
125
  allEmojis[emojiUnified(Emoji)] = Emoji;
126
+
127
+ if (emojiHasVariations(Emoji)) {
128
+ emojiVariations(Emoji).forEach(variation => {
129
+ allEmojis[variation] = Emoji;
130
+ });
131
+ }
132
+
126
133
  return allEmojis;
127
134
  }, allEmojisByUnified);
128
135
  });
@@ -1 +0,0 @@
1
- export declare function isSystemDarkTheme(): boolean;
@@ -1,7 +0,0 @@
1
- export function isSystemDarkTheme(): boolean {
2
- if (typeof window === 'undefined') {
3
- return false;
4
- }
5
-
6
- return !!window.matchMedia('(prefers-color-scheme: dark)').matches;
7
- }