emoji-picker-react 4.0.0-rc.33 → 4.0.0-rc.35
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 +39 -2
- package/dist/components/emoji/Emoji.d.ts +1 -3
- package/dist/components/emoji/ExportedEmoji.d.ts +8 -0
- package/dist/config/config.d.ts +2 -0
- package/dist/config/useConfig.d.ts +4 -0
- package/dist/dataUtils/emojiSelectors.d.ts +1 -1
- package/dist/emoji-picker-react.cjs.development.css +2 -2
- package/dist/emoji-picker-react.cjs.development.js +58 -74
- 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 +60 -76
- package/dist/emoji-picker-react.esm.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/package.json +1 -1
- package/src/DomUtils/elementPositionInRow.ts +1 -1
- package/src/DomUtils/keyboardNavigation.ts +2 -2
- package/src/EmojiPickerReact.css +0 -3
- package/src/components/body/EmojiList.tsx +0 -3
- package/src/components/emoji/Emoji.tsx +3 -5
- package/src/components/emoji/ExportedEmoji.tsx +30 -0
- package/src/components/header/Search.tsx +1 -1
- package/src/components/main/PickerMain.css +0 -2
- package/src/components/main/PickerMain.tsx +8 -1
- package/src/config/config.ts +4 -0
- package/src/config/useConfig.ts +5 -0
- package/src/dataUtils/emojiSelectors.ts +8 -2
- package/src/hooks/useFilter.ts +0 -39
- package/src/index.tsx +1 -1
- package/dist/DomUtils/emojiElementRef.d.ts +0 -11
- package/src/DomUtils/emojiElementRef.ts +0 -43
package/README.md
CHANGED
|
@@ -37,6 +37,7 @@ function App() {
|
|
|
37
37
|
- Skin tone change
|
|
38
38
|
- Different emoji sets (Google, Apple, Facebook, Twitter)
|
|
39
39
|
- Native Emoji support
|
|
40
|
+
- Emoji Component To Render Emojis in your app
|
|
40
41
|
|
|
41
42
|
# Props
|
|
42
43
|
|
|
@@ -54,6 +55,8 @@ The following props are accepted by them picker:
|
|
|
54
55
|
| searchPlaceholder | string | `Search` | Controls the placeholder of the search input. |
|
|
55
56
|
| suggestedEmojisMode | string | `frequent` | Controls the suggested emojis mode. Possible values are `frequent` and `recent`. |
|
|
56
57
|
| skinTonesDisabled | boolean | `false` | Controls whether the skin tones are disabled or not. |
|
|
58
|
+
| `width` | number | `350` | Controls the width of the picker. |
|
|
59
|
+
| `height` | number | `450` | Controls the height of the picker. |
|
|
57
60
|
|
|
58
61
|
## Full details
|
|
59
62
|
|
|
@@ -154,14 +157,22 @@ import { SkinTones } from 'emoji-picker-react';
|
|
|
154
157
|
|
|
155
158
|
# Customization
|
|
156
159
|
|
|
160
|
+
## Custom Picker Width and Height
|
|
161
|
+
|
|
162
|
+
To customize the dimensions of the picker, use the `height` and `width` props:
|
|
163
|
+
|
|
164
|
+
```jsx
|
|
165
|
+
<EmojiPicker height={500} width={400} />
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## CSS Variables
|
|
169
|
+
|
|
157
170
|
The picker can be customized via css variables. The root selector for the picker is `.EmojiPickerReact`, when overriding, make sure to provide a more specific selector.
|
|
158
171
|
|
|
159
172
|
In dark mode, the specific selector is `.EmojiPickerReact.epr-dark-theme`.
|
|
160
173
|
|
|
161
174
|
The list of possible variables is quite extensive, but the main ones you may want to override are:
|
|
162
175
|
|
|
163
|
-
- `--epr-picker-width`: The width of the picker.
|
|
164
|
-
- `--epr-picker-height`: The height of the picker.
|
|
165
176
|
- `--epr-emoji-size`: The size of the emojis.
|
|
166
177
|
- `--epr-emoji-gap`: The space between emojis.
|
|
167
178
|
|
|
@@ -169,6 +180,32 @@ The list of possible variables is quite extensive, but the main ones you may wan
|
|
|
169
180
|
- `--epr-bg-color`: The background color of the picker. When changing it, you should also change `--epr-category-label-bg-color` as they are usually the same color.
|
|
170
181
|
- `--epr-text-color`: The text color in the picker.
|
|
171
182
|
|
|
183
|
+
# Rendering Output Emojis in Your App
|
|
184
|
+
|
|
185
|
+
The picker exports an `Emoji` component. The emoji component is the same used within the picker, so it will render the same way as the emojis in the picker. You can choose to render emojis either as native, or as images.
|
|
186
|
+
|
|
187
|
+
## Props
|
|
188
|
+
|
|
189
|
+
| Name | Type | Default | Description |
|
|
190
|
+
| ------------ | ------------ | ------------------ | ------------------------------------------------------------------------------------------- |
|
|
191
|
+
| `unified` | string | "" | The unified code of the emoji. |
|
|
192
|
+
| `size` | number | 32 | The size of the emoji. |
|
|
193
|
+
| `emojiStyle` | `EmojiStyle` | `EmojiStyle.APPLE` | The emoji style to use. Can be either `apple`, `google`, `facebook`, `twitter` or `native`. |
|
|
194
|
+
| `lazyLoad` | boolean | `false` | Whether to lazy load the emoji. image |
|
|
195
|
+
|
|
196
|
+
```js
|
|
197
|
+
import { Emoji, EmojiStyle } from 'emoji-picker-react';
|
|
198
|
+
|
|
199
|
+
export function MyApp() {
|
|
200
|
+
return (
|
|
201
|
+
<p>
|
|
202
|
+
My Favorite emoji is:
|
|
203
|
+
<Emoji unified="1f423" size="25" />
|
|
204
|
+
</p>
|
|
205
|
+
);
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
172
209
|
# Troubleshooting
|
|
173
210
|
|
|
174
211
|
## Error Boundary
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import { EmojiRef } from '../../DomUtils/emojiElementRef';
|
|
3
2
|
import { DataEmoji } from '../../dataUtils/DataTypes';
|
|
4
3
|
import { EmojiStyle } from '../../types/exposedTypes';
|
|
5
4
|
import './Emoji.css';
|
|
6
5
|
declare type ClickableEmojiProps = Readonly<BaseProps & {
|
|
7
6
|
hidden?: boolean;
|
|
8
7
|
showVariations?: boolean;
|
|
9
|
-
emojiRef?: EmojiRef;
|
|
10
8
|
hiddenOnSearch?: boolean;
|
|
11
9
|
emoji: DataEmoji;
|
|
12
10
|
}>;
|
|
@@ -17,6 +15,6 @@ declare type BaseProps = {
|
|
|
17
15
|
size?: number;
|
|
18
16
|
lazyLoad?: boolean;
|
|
19
17
|
};
|
|
20
|
-
export declare function ClickableEmoji({ emoji, unified, hidden, hiddenOnSearch, emojiStyle, showVariations, size,
|
|
18
|
+
export declare function ClickableEmoji({ emoji, unified, hidden, hiddenOnSearch, emojiStyle, showVariations, size, lazyLoad }: ClickableEmojiProps): JSX.Element;
|
|
21
19
|
export declare function ViewOnlyEmoji({ emoji, unified, emojiStyle, size, lazyLoad }: BaseProps): JSX.Element;
|
|
22
20
|
export {};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { EmojiStyle } from '../../types/exposedTypes';
|
|
3
|
+
export declare function ExportedEmoji({ unified, size, emojiStyle, lazyLoad }: {
|
|
4
|
+
unified: string;
|
|
5
|
+
emojiStyle?: EmojiStyle;
|
|
6
|
+
size?: number;
|
|
7
|
+
lazyLoad?: boolean;
|
|
8
|
+
}): JSX.Element | null;
|
package/dist/config/config.d.ts
CHANGED
|
@@ -12,3 +12,7 @@ export declare function usePreviewConfig(): PreviewConfig;
|
|
|
12
12
|
export declare function useThemeConfig(): Theme;
|
|
13
13
|
export declare function useSuggestedEmojisModeConfig(): SuggestionMode;
|
|
14
14
|
export declare function useLazyLoadEmojisConfig(): boolean;
|
|
15
|
+
export declare function usePickerSizeConfig(): {
|
|
16
|
+
height: number;
|
|
17
|
+
width: number;
|
|
18
|
+
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Categories } from
|
|
1
|
+
import { Categories } from '../config/categoryConfig';
|
|
2
2
|
import { EmojiStyle, SkinTones } from '../types/exposedTypes';
|
|
3
3
|
import { DataEmoji, DataEmojis } from './DataTypes';
|
|
4
4
|
export declare function emojiNames(emoji: DataEmoji): string[];
|
|
@@ -9,5 +9,5 @@
|
|
|
9
9
|
.EmojiPickerReact .epr-search-container{display:block;flex:1;min-width:0}.EmojiPickerReact .epr-search-container input.epr-search{background-color:var(--epr-search-input-bg-color);border:1px solid var(--epr-search-input-bg-color);border-radius:var(--epr-search-input-border-radius);color:var(--epr-search-input-text-color);height:var(--epr-search-input-height);outline:none;padding:var(--epr-search-input-padding);transition:all .2s ease-in-out;width:100%}.EmojiPickerReact .epr-search-container button.epr-btn-clear-search{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='80' xml:space='preserve'%3E%3Cpath fill='%23868686' d='M6.98 13.59a.53.53 0 0 0 .74 0l2.42-2.42 2.43 2.43a.53.53 0 0 0 .74 0c.21-.21.21-.54 0-.75l-2.43-2.43L13.32 8c.21-.21.21-.54 0-.75a.525.525 0 0 0-.75 0l-2.42 2.42-2.41-2.4a.525.525 0 0 0-.75 0c-.21.21-.21.54 0 .75l2.41 2.41-2.42 2.42c-.21.2-.21.54 0 .74z'/%3E%3Cpath fill='%23868686' d='M10.15 18.43c4.41 0 8-3.59 8-8s-3.59-8-8-8-8 3.59-8 8 3.59 8 8 8zm0-14.94c3.83 0 6.94 3.11 6.94 6.94 0 3.83-3.11 6.94-6.94 6.94-3.83 0-6.94-3.11-6.94-6.94 0-3.83 3.12-6.94 6.94-6.94z'/%3E%3Cpath fill='%233371B7' d='M6.98 33.59a.53.53 0 0 0 .74 0l2.42-2.42 2.43 2.43a.53.53 0 0 0 .74 0c.21-.21.21-.54 0-.75l-2.43-2.43L13.32 28c.21-.21.21-.54 0-.75a.525.525 0 0 0-.75 0l-2.42 2.42-2.41-2.41a.525.525 0 0 0-.75 0c-.21.21-.21.54 0 .75l2.41 2.41-2.42 2.42c-.21.21-.21.55 0 .75z'/%3E%3Cpath fill='%233371B7' d='M10.15 38.43c4.41 0 8-3.59 8-8s-3.59-8-8-8-8 3.59-8 8 3.59 8 8 8zm0-14.94c3.83 0 6.94 3.11 6.94 6.94 0 3.83-3.11 6.94-6.94 6.94-3.83 0-6.94-3.11-6.94-6.94 0-3.83 3.12-6.94 6.94-6.94z'/%3E%3Cpath fill='%23C0C0BF' d='M6.98 53.59a.53.53 0 0 0 .74 0l2.42-2.42 2.43 2.43a.53.53 0 0 0 .74 0c.21-.21.21-.54 0-.75l-2.43-2.43L13.32 48c.21-.21.21-.54 0-.75a.525.525 0 0 0-.75 0l-2.42 2.42-2.41-2.41a.525.525 0 0 0-.75 0c-.21.21-.21.54 0 .75l2.41 2.41-2.42 2.42c-.21.21-.21.55 0 .75z'/%3E%3Cpath fill='%23C0C0BF' d='M10.15 58.43c4.41 0 8-3.59 8-8s-3.59-8-8-8-8 3.59-8 8 3.59 8 8 8zm0-14.94c3.83 0 6.94 3.11 6.94 6.94 0 3.83-3.11 6.94-6.94 6.94-3.83 0-6.94-3.11-6.94-6.94 0-3.83 3.12-6.94 6.94-6.94z'/%3E%3Cpath fill='%236AA9DD' d='M6.98 73.59a.53.53 0 0 0 .74 0l2.42-2.42 2.43 2.43a.53.53 0 0 0 .74 0c.21-.21.21-.54 0-.75l-2.43-2.43L13.32 68c.21-.21.21-.54 0-.75a.525.525 0 0 0-.75 0l-2.42 2.42-2.41-2.41a.525.525 0 0 0-.75 0c-.21.21-.21.54 0 .75l2.41 2.41-2.42 2.42c-.21.21-.21.55 0 .75z'/%3E%3Cpath fill='%236AA9DD' d='M10.15 78.43c4.41 0 8-3.59 8-8s-3.59-8-8-8-8 3.59-8 8 3.59 8 8 8zm0-14.94c3.83 0 6.94 3.11 6.94 6.94 0 3.83-3.11 6.94-6.94 6.94-3.83 0-6.94-3.11-6.94-6.94 0-3.83 3.12-6.94 6.94-6.94z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-size:20px;height:20px;position:absolute;right:var(--epr-search-bar-inner-padding);top:50%;transform:translateY(-50%);width:20px}.EmojiPickerReact .epr-search-container button.epr-btn-clear-search:hover{background-position-y:-20px}.EmojiPickerReact..epr-dark-theme .epr-search-container button.epr-btn-clear-search{background-position-y:-40px}.EmojiPickerReact..epr-dark-theme .epr-search-container button.epr-btn-clear-search:hover{background-position-y:-60px}.EmojiPickerReact .epr-search-container .epr-icn-search{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='40' xml:space='preserve'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' fill='%23868686' d='M12 8.81c0 2.08-1.68 3.76-3.76 3.76s-3.76-1.68-3.76-3.76 1.68-3.76 3.76-3.76S12 6.73 12 8.81zm-.77 3.91c-.83.64-1.87 1.01-2.99 1.01-2.72 0-4.92-2.2-4.92-4.92 0-2.72 2.2-4.92 4.92-4.92 2.72 0 4.92 2.2 4.92 4.92 0 1.13-.38 2.16-1.01 2.99l3.94 3.93c.25.25.25.66 0 .92-.25.25-.66.25-.92 0l-3.94-3.93z'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' fill='%23C0C0BF' d='M12 28.81c0 2.08-1.68 3.76-3.76 3.76s-3.76-1.68-3.76-3.76 1.68-3.76 3.76-3.76S12 26.73 12 28.81zm-.77 3.91c-.83.64-1.87 1.01-2.99 1.01-2.72 0-4.92-2.2-4.92-4.92 0-2.72 2.2-4.92 4.92-4.92 2.72 0 4.92 2.2 4.92 4.92 0 1.13-.38 2.16-1.01 2.99l3.94 3.93c.25.25.25.66 0 .92-.25.25-.66.25-.92 0l-3.94-3.93z'/%3E%3C/svg%3E");background-position:0 0;background-repeat:no-repeat;background-size:20px;content:"";height:20px;left:var(--epr-search-bar-inner-padding);position:absolute;top:50%;transform:translateY(-50%);width:20px}.EmojiPickerReact.epr-dark-theme .epr-search-container .epr-icn-search{background-position-y:-20px}.EmojiPickerReact .epr-search-container input.epr-search::-moz-placeholder{color:var(--epr-search-input-placeholder-color)}.EmojiPickerReact .epr-search-container input.epr-search::placeholder{color:var(--epr-search-input-placeholder-color)}.EmojiPickerReact .epr-search-container input.epr-search:focus{background-color:var(--epr-search-input-bg-color-active);border:1px solid var(--epr-search-border-color)}
|
|
10
10
|
.EmojiPickerReact .epr-skin-tones{--epr-skin-tone-size:16px;align-items:center;display:flex;flex-basis:30px;justify-content:flex-end;transition:all .3s ease-in-out}.EmojiPickerReact .epr-skin-tones.open{flex-basis:170px}.EmojiPickerReact .epr-skin-tone-select{height:var(--epr-skin-tone-size);position:relative;width:var(--epr-skin-tone-size)}.EmojiPickerReact .epr-skin-tones.open .epr-tone{transition:transform .3s ease-in-out,opacity .3s ease-in-out}.EmojiPickerReact .epr-skin-tones:not(.open) .epr-tone{opacity:0;z-index:0}.EmojiPickerReact .epr-skin-tones .epr-tone{border-radius:4px;box-shadow:0 0 0 0 var(--epr-active-skin-hover-color);cursor:pointer;display:block;height:var(--epr-skin-tone-size);position:absolute;right:0;transition:transform .3s ease-in-out,opacity .5s ease-in-out;width:var(--epr-skin-tone-size);z-index:1}.EmojiPickerReact .epr-skin-tones .epr-tone:hover{box-shadow:0 0 0 5px var(--epr-active-skin-hover-color)}.EmojiPickerReact .epr-skin-tones .epr-tone:focus{box-shadow:0 0 0 5px var(--epr-focus-bg-color)}.EmojiPickerReact .epr-skin-tones.open .epr-skin-tone-select .epr-tone.epr-active:after{border:1px solid var(--epr-active-skin-tone-indicator-border-color);border-radius:5px;bottom:-2px;content:"";left:-2px;position:absolute;right:-2px;top:-2px}.EmojiPickerReact .epr-skin-tones .epr-tone.epr-active{opacity:1;z-index:1}.EmojiPickerReact .epr-skin-tones .epr-tone.epr-tone-neutral{background-color:#ffd225}.EmojiPickerReact .epr-skin-tones .epr-tone.epr-tone-1f3fb{background-color:#ffdfbd}.EmojiPickerReact .epr-skin-tones .epr-tone.epr-tone-1f3fc{background-color:#e9c197}.EmojiPickerReact .epr-skin-tones .epr-tone.epr-tone-1f3fd{background-color:#c88e62}.EmojiPickerReact .epr-skin-tones .epr-tone.epr-tone-1f3fe{background-color:#a86637}.EmojiPickerReact .epr-skin-tones .epr-tone.epr-tone-1f3ff{background-color:#60463a}
|
|
11
11
|
.EmojiPickerReact .epr-header .epr-header-overlay{padding:var(--epr-header-padding);z-index:var(--epr-header-overlay-z-index)}
|
|
12
|
-
aside.EmojiPickerReact.epr-main{border-color:var(--epr-picker-border-color);border-radius:var(--epr-picker-border-radius);border-style:solid;border-width:1px;display:flex;flex-direction:column;
|
|
13
|
-
.EmojiPickerReact{--epr-highlight-color:#007aeb;--epr-hover-bg-color:#f1f8ff;--epr-focus-bg-color:#e0f0ff;--epr-text-color:#858585;--epr-search-input-bg-color:#f6f6f6;--epr-picker-border-color:#e7e7e7;--epr-bg-color:#fff;--epr-category-icon-active-color:#6aa8de;--epr-horizontal-padding:10px;--epr-picker-
|
|
12
|
+
aside.EmojiPickerReact.epr-main{border-color:var(--epr-picker-border-color);border-radius:var(--epr-picker-border-radius);border-style:solid;border-width:1px;display:flex;flex-direction:column;position:relative}
|
|
13
|
+
.EmojiPickerReact{--epr-highlight-color:#007aeb;--epr-hover-bg-color:#f1f8ff;--epr-focus-bg-color:#e0f0ff;--epr-text-color:#858585;--epr-search-input-bg-color:#f6f6f6;--epr-picker-border-color:#e7e7e7;--epr-bg-color:#fff;--epr-category-icon-active-color:#6aa8de;--epr-horizontal-padding:10px;--epr-picker-border-radius:8px;--epr-search-border-color:var(--epr-highlight-color);--epr-header-padding:15px var(--epr-horizontal-padding);--epr-active-skin-tone-indicator-border-color:var(--epr-highlight-color);--epr-active-skin-hover-color:var(--epr-hover-bg-color);--epr-search-input-bg-color-active:var(--epr-search-input-bg-color);--epr-search-input-padding:0 30px;--epr-search-input-border-radius:8px;--epr-search-input-height:40px;--epr-search-input-text-color:var(--epr-text-color);--epr-search-input-placeholder-color:var(--epr-text-color);--epr-search-bar-inner-padding:var(--epr-horizontal-padding);--epr-category-navigation-button-size:30px;--epr-emoji-variation-picker-height:45px;--epr-emoji-variation-picker-bg-color:var(--epr-bg-color);--epr-preview-height:70px;--epr-preview-text-size:14px;--epr-preview-text-padding:0 var(--epr-horizontal-padding);--epr-preview-border-color:var(--epr-picker-border-color);--epr-preview-text-color:var(--epr-text-color);--epr-category-padding:0 var(--epr-horizontal-padding);--epr-category-label-bg-color:#ffffffe6;--epr-category-label-text-color:var(--epr-text-color);--epr-category-label-padding:0 var(--epr-horizontal-padding);--epr-category-label-height:40px;--epr-emoji-size:30px;--epr-emoji-padding:5px;--epr-emoji-fullsize:calc(var(--epr-emoji-size) + var(--epr-emoji-padding)*2);--epr-emoji-hover-color:var(--epr-hover-bg-color);--epr-emoji-variation-indicator-color:var(--epr-picker-border-color);--epr-emoji-variation-indicator-color-hover:var(--epr-text-color);--epr-header-overlay-z-index:3;--epr-emoji-variations-indictator-z-index:1;--epr-category-label-z-index:2;--epr-skin-variation-picker-z-index:5}.EmojiPickerReact.epr-dark-theme{--epr-dark:#000;--epr-emoji-variation-picker-bg-color:var(--epr-dark);--epr-highlight-color:silver;--epr-text-color:var(--epr-highlight-color);--epr-hover-bg-color:#363636f6;--epr-focus-bg-color:#474747;--epr-search-input-bg-color:#333;--epr-category-label-bg-color:#222222e6;--epr-picker-border-color:#151617;--epr-bg-color:#222;--epr-search-input-bg-color-active:var(--epr-dark);--epr-emoji-variation-indicator-color:#444;--epr-category-icon-active-color:#3271b7}.EmojiPickerReact{background-color:var(--epr-bg-color);overflow:hidden}.EmojiPickerReact .epr-hidden,.EmojiPickerReact.epr-search-active .epr-hidden-on-search,.EmojiPickerReact:not(.epr-search-active) .epr-visible-on-search-only{display:none!important;opacity:0!important;pointer-events:none!important;visibility:hidden!important}aside.EmojiPickerReact.epr-main:has(input:not(:-moz-placeholder-shown)) .epr-hidden-on-search{display:none!important;opacity:0!important;pointer-events:none!important;visibility:hidden!important}aside.EmojiPickerReact.epr-main:has(input:not(:placeholder-shown)) .epr-hidden-on-search{display:none!important;opacity:0!important;pointer-events:none!important;visibility:hidden!important}aside.EmojiPickerReact.epr-main:has(input:-moz-placeholder-shown) .epr-visible-on-search-only{display:none!important;opacity:0!important;pointer-events:none!important;visibility:hidden!important}aside.EmojiPickerReact.epr-main:has(input:placeholder-shown) .epr-visible-on-search-only{display:none!important;opacity:0!important;pointer-events:none!important;visibility:hidden!important}.EmojiPickerReact *{box-sizing:border-box;font-family:sans-serif}.EmojiPickerReact button{background:none;border:0;cursor:pointer;outline:none}
|
|
@@ -320,6 +320,8 @@ function basePickerConfig() {
|
|
|
320
320
|
emoji, // @ts-ignore
|
|
321
321
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
322
322
|
event) {},
|
|
323
|
+
height: 450,
|
|
324
|
+
width: 350,
|
|
323
325
|
previewConfig: _extends({}, basePreviewConfig),
|
|
324
326
|
searchPlaceHolder: 'Search',
|
|
325
327
|
skinTonesDisabled: false,
|
|
@@ -417,6 +419,16 @@ function useLazyLoadEmojisConfig() {
|
|
|
417
419
|
|
|
418
420
|
return lazyLoadEmojis;
|
|
419
421
|
}
|
|
422
|
+
function usePickerSizeConfig() {
|
|
423
|
+
var _usePickerConfig12 = usePickerConfig(),
|
|
424
|
+
height = _usePickerConfig12.height,
|
|
425
|
+
width = _usePickerConfig12.width;
|
|
426
|
+
|
|
427
|
+
return {
|
|
428
|
+
height: height,
|
|
429
|
+
width: width
|
|
430
|
+
};
|
|
431
|
+
}
|
|
420
432
|
|
|
421
433
|
var CDN_URL_APPLE = 'https://cdn.jsdelivr.net/npm/emoji-datasource-apple/img/apple/64/';
|
|
422
434
|
var CDN_URL_FACEBOOK = 'https://cdn.jsdelivr.net/npm/emoji-datasource-facebook/img/facebook/64/';
|
|
@@ -14989,7 +15001,12 @@ function emojiByUnified(unified) {
|
|
|
14989
15001
|
return;
|
|
14990
15002
|
}
|
|
14991
15003
|
|
|
14992
|
-
|
|
15004
|
+
if (allEmojisByUnified[unified]) {
|
|
15005
|
+
return allEmojisByUnified[unified];
|
|
15006
|
+
}
|
|
15007
|
+
|
|
15008
|
+
var withoutSkinTone = unifiedWithoutSkinTone(unified);
|
|
15009
|
+
return allEmojisByUnified[withoutSkinTone];
|
|
14993
15010
|
}
|
|
14994
15011
|
var allEmojis = /*#__PURE__*/Object.values(emojis).flat();
|
|
14995
15012
|
var allEmojisByUnified = {};
|
|
@@ -15288,7 +15305,7 @@ function hasNextRow(parent, element) {
|
|
|
15288
15305
|
|
|
15289
15306
|
function getRowElements(elements, row, elementsInRow) {
|
|
15290
15307
|
if (row === -1) {
|
|
15291
|
-
var lastRow = Math.floor(elements.length / elementsInRow);
|
|
15308
|
+
var lastRow = Math.floor((elements.length - 1) / elementsInRow);
|
|
15292
15309
|
var firstElementIndex = lastRow * elementsInRow;
|
|
15293
15310
|
var lastElementIndex = elements.length - 1;
|
|
15294
15311
|
return elements.slice(firstElementIndex, lastElementIndex + 1);
|
|
@@ -15748,11 +15765,11 @@ function visibleEmojiOneRowUp(element) {
|
|
|
15748
15765
|
return null;
|
|
15749
15766
|
}
|
|
15750
15767
|
|
|
15751
|
-
return getElementInRow(allVisibleEmojis(
|
|
15768
|
+
return getElementInRow(allVisibleEmojis(prevVisibleCategory), -1, // last row
|
|
15752
15769
|
countInRow, indexInRow);
|
|
15753
15770
|
}
|
|
15754
15771
|
|
|
15755
|
-
return getElementInPrevRow(allVisibleEmojis(
|
|
15772
|
+
return getElementInPrevRow(allVisibleEmojis(categoryContent), row, countInRow, indexInRow);
|
|
15756
15773
|
}
|
|
15757
15774
|
|
|
15758
15775
|
function visibleEmojiOneRowDown(element) {
|
|
@@ -15948,36 +15965,6 @@ function useOnScroll(BodyRef) {
|
|
|
15948
15965
|
}, [BodyRef, closeAllOpenToggles]);
|
|
15949
15966
|
}
|
|
15950
15967
|
|
|
15951
|
-
var emojiRef = {};
|
|
15952
|
-
function getEmojiRef(unified) {
|
|
15953
|
-
emojiRef[unified] = emojiRef[unified] || {
|
|
15954
|
-
current: null
|
|
15955
|
-
};
|
|
15956
|
-
return emojiRef[unified];
|
|
15957
|
-
}
|
|
15958
|
-
function iterateEmojiRef(callback) {
|
|
15959
|
-
for (var unified in emojiRef) {
|
|
15960
|
-
if (!emojiRef[unified] || emojiRef[unified].current === null) {
|
|
15961
|
-
continue;
|
|
15962
|
-
}
|
|
15963
|
-
|
|
15964
|
-
callback(emojiRef[unified].current, unified);
|
|
15965
|
-
}
|
|
15966
|
-
}
|
|
15967
|
-
function hideEmojiOnSearch(unified) {
|
|
15968
|
-
hideElementOnSearch(getEmojiRef(unified).current);
|
|
15969
|
-
}
|
|
15970
|
-
function hideElementOnSearch(element) {
|
|
15971
|
-
if (!element) return;
|
|
15972
|
-
element.classList.add(ClassNames.hiddenOnSearch);
|
|
15973
|
-
element.classList.remove(ClassNames.visible);
|
|
15974
|
-
}
|
|
15975
|
-
function showElementOnSearch(element) {
|
|
15976
|
-
if (!element) return;
|
|
15977
|
-
element.classList.remove(ClassNames.hiddenOnSearch);
|
|
15978
|
-
element.classList.add(ClassNames.visible);
|
|
15979
|
-
}
|
|
15980
|
-
|
|
15981
15968
|
function scrollTo(root, top) {
|
|
15982
15969
|
if (top === void 0) {
|
|
15983
15970
|
top = 0;
|
|
@@ -16082,9 +16069,7 @@ function useApplySearch() {
|
|
|
16082
16069
|
setSearchTerm = _useSearchTermState2[1];
|
|
16083
16070
|
|
|
16084
16071
|
var PickerMainRef = usePickerMainRef();
|
|
16085
|
-
var applyFilterToDom = useApplyFilterToDom();
|
|
16086
16072
|
return function applySearch(searchTerm) {
|
|
16087
|
-
applyFilterToDom(searchTerm);
|
|
16088
16073
|
requestAnimationFrame(function () {
|
|
16089
16074
|
setSearchTerm(searchTerm).then(function () {
|
|
16090
16075
|
scrollTo(PickerMainRef.current, 0);
|
|
@@ -16093,31 +16078,6 @@ function useApplySearch() {
|
|
|
16093
16078
|
};
|
|
16094
16079
|
}
|
|
16095
16080
|
|
|
16096
|
-
function useApplyFilterToDom() {
|
|
16097
|
-
// This function is the farthest from being "React" as it can be
|
|
16098
|
-
// It performs DOM manipulation and is not a pure function
|
|
16099
|
-
// But it is the most performant way to do it, at least 5 times faster than
|
|
16100
|
-
// react re-rendering. The reason I trust it to work correctly is because we
|
|
16101
|
-
// eventually do update the state, which keeps the DOM in sync - after the fact
|
|
16102
|
-
var PickerMainRef = usePickerMainRef();
|
|
16103
|
-
var filterRef = useFilterRef();
|
|
16104
|
-
return function applyFilterToDom(searchTerm) {
|
|
16105
|
-
requestAnimationFrame(function () {
|
|
16106
|
-
var _PickerMainRef$curren;
|
|
16107
|
-
|
|
16108
|
-
(_PickerMainRef$curren = PickerMainRef.current) == null ? void 0 : _PickerMainRef$curren.classList.toggle(ClassNames.searchActive, !!searchTerm);
|
|
16109
|
-
iterateEmojiRef(function (element, unified) {
|
|
16110
|
-
if (isEmojiFilteredBySearchTerm(unified, filterRef.current, searchTerm)) {
|
|
16111
|
-
hideElementOnSearch(element);
|
|
16112
|
-
return;
|
|
16113
|
-
}
|
|
16114
|
-
|
|
16115
|
-
showElementOnSearch(element);
|
|
16116
|
-
});
|
|
16117
|
-
});
|
|
16118
|
-
};
|
|
16119
|
-
}
|
|
16120
|
-
|
|
16121
16081
|
function filterEmojiObjectByKeyword(emojis, keyword) {
|
|
16122
16082
|
var filtered = {};
|
|
16123
16083
|
|
|
@@ -16126,8 +16086,6 @@ function filterEmojiObjectByKeyword(emojis, keyword) {
|
|
|
16126
16086
|
|
|
16127
16087
|
if (hasMatch(emoji, keyword)) {
|
|
16128
16088
|
filtered[unified] = emoji;
|
|
16129
|
-
} else {
|
|
16130
|
-
hideEmojiOnSearch(unified);
|
|
16131
16089
|
}
|
|
16132
16090
|
}
|
|
16133
16091
|
|
|
@@ -16216,15 +16174,13 @@ function ClickableEmoji(_ref) {
|
|
|
16216
16174
|
_ref$showVariations = _ref.showVariations,
|
|
16217
16175
|
showVariations = _ref$showVariations === void 0 ? true : _ref$showVariations,
|
|
16218
16176
|
size = _ref.size,
|
|
16219
|
-
emojiRef = _ref.emojiRef,
|
|
16220
16177
|
lazyLoad = _ref.lazyLoad;
|
|
16221
16178
|
var hasVariations = emojiHasVariations(emoji);
|
|
16222
16179
|
return React.createElement("button", {
|
|
16223
|
-
className: clsx(ClassNames.emoji, (_clsx = {}, _clsx[ClassNames.hidden] = hidden, _clsx[ClassNames.hiddenOnSearch] = hiddenOnSearch, _clsx[ClassNames.visible] = !hidden, _clsx[ClassNames.emojiHasVariatios] = hasVariations && showVariations, _clsx)),
|
|
16180
|
+
className: clsx(ClassNames.emoji, (_clsx = {}, _clsx[ClassNames.hidden] = hidden, _clsx[ClassNames.hiddenOnSearch] = hiddenOnSearch, _clsx[ClassNames.visible] = !hidden && !hiddenOnSearch, _clsx[ClassNames.emojiHasVariatios] = hasVariations && showVariations, _clsx)),
|
|
16224
16181
|
"data-unified": unified,
|
|
16225
|
-
|
|
16226
|
-
|
|
16227
|
-
"aria-label": emojiName(emoji)
|
|
16182
|
+
"aria-label": emojiName(emoji),
|
|
16183
|
+
"data-full-name": emojiNames(emoji)
|
|
16228
16184
|
}, React.createElement(ViewOnlyEmoji, {
|
|
16229
16185
|
unified: unified,
|
|
16230
16186
|
emoji: emoji,
|
|
@@ -16397,8 +16353,6 @@ function RenderCategory(_ref) {
|
|
|
16397
16353
|
filteredOut = _isEmojiHidden.filteredOut,
|
|
16398
16354
|
hidden = _isEmojiHidden.hidden;
|
|
16399
16355
|
|
|
16400
|
-
var emojiRef = getEmojiRef(emojiUnified(emoji));
|
|
16401
|
-
|
|
16402
16356
|
if (hidden) {
|
|
16403
16357
|
hiddenCounter++;
|
|
16404
16358
|
}
|
|
@@ -16410,7 +16364,6 @@ function RenderCategory(_ref) {
|
|
|
16410
16364
|
hidden: failedToLoad,
|
|
16411
16365
|
hiddenOnSearch: filteredOut,
|
|
16412
16366
|
emojiStyle: emojiStyle,
|
|
16413
|
-
emojiRef: emojiRef,
|
|
16414
16367
|
lazyLoad: lazyLoadEmojis
|
|
16415
16368
|
});
|
|
16416
16369
|
});
|
|
@@ -16858,7 +16811,7 @@ function Search() {
|
|
|
16858
16811
|
|
|
16859
16812
|
function CssSearch(_ref) {
|
|
16860
16813
|
var value = _ref.value;
|
|
16861
|
-
return value ? React.createElement("style", null, "\n .EmojiPickerReact button.epr-emoji:not([
|
|
16814
|
+
return value ? React.createElement("style", null, "\n .EmojiPickerReact button.epr-emoji:not([data-full-name*=\"" + value + "\"]) {\n display: none;\n }\n ") : null;
|
|
16862
16815
|
}
|
|
16863
16816
|
|
|
16864
16817
|
function useFocusSearchInput() {
|
|
@@ -17418,11 +17371,21 @@ function PickerRootElement(_ref2) {
|
|
|
17418
17371
|
var theme = useThemeConfig();
|
|
17419
17372
|
var searchModeActive = useIsSearchMode();
|
|
17420
17373
|
var PickerMainRef = usePickerMainRef();
|
|
17374
|
+
|
|
17375
|
+
var _usePickerSizeConfig = usePickerSizeConfig(),
|
|
17376
|
+
height = _usePickerSizeConfig.height,
|
|
17377
|
+
width = _usePickerSizeConfig.width;
|
|
17378
|
+
|
|
17421
17379
|
useKeyboardNavigation();
|
|
17422
17380
|
useOnFocus();
|
|
17381
|
+
var style = {
|
|
17382
|
+
height: height + "px",
|
|
17383
|
+
width: width + "px"
|
|
17384
|
+
};
|
|
17423
17385
|
return React.createElement("aside", {
|
|
17424
17386
|
className: clsx('EmojiPickerReact', 'epr-main', (_clsx = {}, _clsx[ClassNames.searchActive] = searchModeActive, _clsx['epr-dark-theme'] = theme === exports.Theme.DARK, _clsx)),
|
|
17425
|
-
ref: PickerMainRef
|
|
17387
|
+
ref: PickerMainRef,
|
|
17388
|
+
style: style
|
|
17426
17389
|
}, children);
|
|
17427
17390
|
}
|
|
17428
17391
|
|
|
@@ -17467,10 +17430,31 @@ var ErrorBoundary = /*#__PURE__*/function (_React$Component) {
|
|
|
17467
17430
|
return ErrorBoundary;
|
|
17468
17431
|
}(React.Component);
|
|
17469
17432
|
|
|
17433
|
+
function ExportedEmoji(_ref) {
|
|
17434
|
+
var unified = _ref.unified,
|
|
17435
|
+
_ref$size = _ref.size,
|
|
17436
|
+
size = _ref$size === void 0 ? 32 : _ref$size,
|
|
17437
|
+
_ref$emojiStyle = _ref.emojiStyle,
|
|
17438
|
+
emojiStyle = _ref$emojiStyle === void 0 ? exports.EmojiStyle.APPLE : _ref$emojiStyle,
|
|
17439
|
+
_ref$lazyLoad = _ref.lazyLoad,
|
|
17440
|
+
lazyLoad = _ref$lazyLoad === void 0 ? false : _ref$lazyLoad;
|
|
17441
|
+
|
|
17442
|
+
if (!unified) {
|
|
17443
|
+
return null;
|
|
17444
|
+
}
|
|
17445
|
+
|
|
17446
|
+
return React.createElement(ViewOnlyEmoji, {
|
|
17447
|
+
unified: unified,
|
|
17448
|
+
size: size,
|
|
17449
|
+
emojiStyle: emojiStyle,
|
|
17450
|
+
lazyLoad: lazyLoad
|
|
17451
|
+
});
|
|
17452
|
+
}
|
|
17453
|
+
|
|
17470
17454
|
function EmojiPicker$1(props) {
|
|
17471
17455
|
return React.createElement(ErrorBoundary, null, React.createElement(EmojiPicker, Object.assign({}, props)));
|
|
17472
17456
|
}
|
|
17473
17457
|
|
|
17474
|
-
exports.Emoji =
|
|
17458
|
+
exports.Emoji = ExportedEmoji;
|
|
17475
17459
|
exports.default = EmojiPicker$1;
|
|
17476
17460
|
//# sourceMappingURL=emoji-picker-react.cjs.development.js.map
|