emoji-picker-react 4.0.0-rc.20 → 4.0.0-rc.21
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/dist/DomUtils/keyboardNavigation.d.ts +1 -0
- package/dist/emoji-picker-react.cjs.development.css +2 -2
- package/dist/emoji-picker-react.cjs.development.js +201 -115
- 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 +203 -117
- package/dist/emoji-picker-react.esm.js.map +1 -1
- package/dist/hooks/useFilter.d.ts +1 -0
- package/package.json +1 -1
- package/src/DomUtils/keyboardNavigation.ts +9 -3
- package/src/DomUtils/selectors.ts +5 -5
- package/src/EmojiPickerReact.css +3 -0
- package/src/components/body/EmojiCategory.css +14 -19
- package/src/components/body/EmojiCategory.tsx +1 -1
- package/src/hooks/useEmojiPreviewEvents.ts +19 -1
- package/src/hooks/useFilter.ts +14 -1
- package/src/hooks/useKeyboardNavigation.ts +59 -7
- package/dist/DomUtils/lastElementChild.d.ts +0 -2
- package/src/DomUtils/lastElementChild.ts +0 -7
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { NullableElement } from './selectors';
|
|
2
2
|
export declare function focusFirstVisibleEmoji(parent: NullableElement): void;
|
|
3
|
+
export declare function focusAndClickFirstVisibleEmoji(parent: NullableElement): void;
|
|
3
4
|
export declare function focusLastVisibleEmoji(parent: NullableElement): void;
|
|
4
5
|
export declare function focusNextVisibleEmoji(element: NullableElement): void;
|
|
5
6
|
export declare function focusPrevVisibleEmoji(element: NullableElement): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
.EmojiPickerReact button.epr-emoji{border-radius:8px;padding:var(--epr-emoji-padding);position:relative}.EmojiPickerReact button.epr-emoji.epr-emoji-has-variations:after{border-bottom:4px solid var(--epr-emoji-variation-indicator-color);border-left:4px solid transparent;border-right:4px solid transparent;bottom:0;content:"";display:block;height:0;position:absolute;right:-2px;transform:rotate(135deg);width:0;z-index:var(--epr-emoji-variations-indictator-z-index)}.EmojiPickerReact button.epr-emoji>*{display:block;height:var(--epr-emoji-size);width:var(--epr-emoji-size)}.EmojiPickerReact button.epr-emoji.epr-emoji-has-variations:hover:after{border-bottom:4px solid var(--epr-emoji-variation-indicator-color-hover)}.EmojiPickerReact button.epr-emoji>.epr-emoji-img{font-size:0}.EmojiPickerReact button.epr-emoji>.epr-emoji-native{font-family:Noto Color Emoji,Apple Color Emoji,Segoe UI Emoji,Times,Symbola,Aegyptus,Code2000,Code2001,Code2002,Musica,serif,LastResort;font-size:var(--epr-emoji-size);line-height:100%}.EmojiPickerReact button.epr-emoji:hover{background-color:var(--epr-emoji-hover-color)}.EmojiPickerReact button.epr-emoji:focus-visible{background-color:var(--epr-focus-bg-color)}
|
|
2
|
-
.EmojiPickerReact li.epr-emoji-category>.epr-emoji-category-label{align-items:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background-color:var(--epr-category-label-bg-color);color:var(--epr-category-label-text-color);display:flex;font-weight:700;height:var(--epr-category-label-height);padding:var(--epr-category-label-padding);position:-webkit-sticky;position:sticky;text-transform:capitalize;top:0;width:100%;z-index:var(--epr-category-label-z-index)}.EmojiPickerReact.epr-search-active li.epr-emoji-category>.epr-emoji-category-label{opacity:.4;position:relative}
|
|
2
|
+
.EmojiPickerReact li.epr-emoji-category>.epr-emoji-category-content{grid-gap:0;display:grid;grid-template-columns:repeat(auto-fill,var(--epr-emoji-fullsize));justify-content:space-between;padding:var(--epr-category-padding);position:relative}.EmojiPickerReact li.epr-emoji-category:not(:has(.epr-visible)){display:none}.EmojiPickerReact li.epr-emoji-category>.epr-emoji-category-label{align-items:center;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background-color:var(--epr-category-label-bg-color);color:var(--epr-category-label-text-color);display:flex;font-weight:700;height:var(--epr-category-label-height);padding:var(--epr-category-label-padding);position:-webkit-sticky;position:sticky;text-transform:capitalize;top:0;width:100%;z-index:var(--epr-category-label-z-index)}.EmojiPickerReact.epr-search-active li.epr-emoji-category>.epr-emoji-category-label{opacity:.4;position:relative}
|
|
3
3
|
.EmojiPickerReact ul.epr-emoji-list{list-style:none;margin:0;padding:0}
|
|
4
4
|
.EmojiPickerReact .epr-emoji-variation-picker{align-items:center;background:var(--epr-emoji-variation-picker-bg-color);border:1px solid var(--epr-picker-border-color);border-radius:3px;box-shadow:0 2px 5px rgba(0,0,0,.2);display:flex;height:0;height:var(--epr-emoji-variation-picker-height);justify-content:space-around;left:5px;opacity:0;padding:5px;pointer-events:none;position:absolute;right:5px;top:0;top:-100%;visibility:hidden;z-index:var(--epr-skin-variation-picker-z-index)}.EmojiPickerReact .epr-emoji-variation-picker.visible{opacity:1;pointer-events:all;visibility:visible}.EmojiPickerReact .epr-emoji-variation-picker .EmojiPickerReact .epr-emoji-variation-picker button.epr-emoji:hover{background:none}.EmojiPickerReact .epr-emoji-variation-picker .epr-emoji-pointer{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='50' height='15' xml:space='preserve'%3E%3Cg stroke-miterlimit='10'%3E%3Cpath fill='%23FFF' stroke='%23E8E7E7' d='m1.86-.43 9.83 11.53c.59.69 1.56.69 2.14 0L23.66-.43'/%3E%3Cpath fill='%23010202' stroke='%23151617' d='m26.86-.43 9.83 11.53c.59.69 1.56.69 2.14 0L48.66-.43'/%3E%3C/g%3E%3C/svg%3E");background-position:0 0;background-repeat:no-repeat;background-size:50px 15px;content:"";height:15px;position:absolute;top:-10px;width:25px}.EmojiPickerReact.epr-dark-theme .epr-emoji-variation-picker .epr-emoji-pointer{background-position:-25px 0}.EmojiPickerReact .epr-emoji-variation-picker .epr-emoji-pointer{top:100%;transform:translateX(-7px)}.EmojiPickerReact .epr-emoji-variation-picker .epr-emoji-pointer.pointing-up{top:0;transform:rotate(180deg) translateY(100%) translateX(7px)}
|
|
5
5
|
.EmojiPickerReact .epr-body{flex:1;overflow-x:hidden;overflow-y:scroll;position:relative}
|
|
@@ -10,4 +10,4 @@
|
|
|
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-visible{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
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;height:var(--epr-picker-height);position:relative;width:var(--epr-picker-width)}
|
|
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-width:350px;--epr-picker-height:450px;--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:55px;--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-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{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}
|
|
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-width:350px;--epr-picker-height:450px;--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:55px;--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{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}
|
|
@@ -15289,9 +15289,99 @@ function useActiveCategoryScrollDetection(bodyRef) {
|
|
|
15289
15289
|
}, [bodyRef, setActiveCategory]);
|
|
15290
15290
|
}
|
|
15291
15291
|
|
|
15292
|
-
function
|
|
15293
|
-
if (!element)
|
|
15294
|
-
|
|
15292
|
+
function elementCountInRow(parent, element) {
|
|
15293
|
+
if (!parent || !element) {
|
|
15294
|
+
return 0;
|
|
15295
|
+
}
|
|
15296
|
+
|
|
15297
|
+
var parentWidth = parent.getBoundingClientRect().width;
|
|
15298
|
+
var elementWidth = element.getBoundingClientRect().width;
|
|
15299
|
+
return Math.floor(parentWidth / elementWidth);
|
|
15300
|
+
}
|
|
15301
|
+
function elementIndexInRow(parent, element) {
|
|
15302
|
+
if (!parent || !element) {
|
|
15303
|
+
return 0;
|
|
15304
|
+
}
|
|
15305
|
+
|
|
15306
|
+
var elementWidth = element.getBoundingClientRect().width;
|
|
15307
|
+
var elementLeft = element.getBoundingClientRect().left;
|
|
15308
|
+
var parentLeft = parent.getBoundingClientRect().left;
|
|
15309
|
+
return Math.floor((elementLeft - parentLeft) / elementWidth);
|
|
15310
|
+
}
|
|
15311
|
+
function rowNumber(parent, element) {
|
|
15312
|
+
if (!parent || !element) {
|
|
15313
|
+
return 0;
|
|
15314
|
+
}
|
|
15315
|
+
|
|
15316
|
+
var elementHeight = element.getBoundingClientRect().height;
|
|
15317
|
+
var elementTop = element.getBoundingClientRect().top;
|
|
15318
|
+
var parentTop = parent.getBoundingClientRect().top;
|
|
15319
|
+
return Math.floor((elementTop - parentTop) / elementHeight) - 1;
|
|
15320
|
+
}
|
|
15321
|
+
function hasNextRow(parent, element) {
|
|
15322
|
+
if (!parent || !element) {
|
|
15323
|
+
return false;
|
|
15324
|
+
}
|
|
15325
|
+
|
|
15326
|
+
var elementHeight = element.getBoundingClientRect().height;
|
|
15327
|
+
var elementTop = element.getBoundingClientRect().top;
|
|
15328
|
+
var parentTop = parent.getBoundingClientRect().top;
|
|
15329
|
+
var parentHeight = parent.getBoundingClientRect().height;
|
|
15330
|
+
return elementTop - parentTop + elementHeight < parentHeight;
|
|
15331
|
+
}
|
|
15332
|
+
|
|
15333
|
+
function getRowElements(elements, row, elementsInRow) {
|
|
15334
|
+
if (row === -1) {
|
|
15335
|
+
var lastRow = Math.floor(elements.length / elementsInRow);
|
|
15336
|
+
var firstElementIndex = lastRow * elementsInRow;
|
|
15337
|
+
var lastElementIndex = elements.length - 1;
|
|
15338
|
+
return elements.slice(firstElementIndex, lastElementIndex + 1);
|
|
15339
|
+
}
|
|
15340
|
+
|
|
15341
|
+
return elements.slice(row * elementsInRow, (row + 1) * elementsInRow);
|
|
15342
|
+
}
|
|
15343
|
+
|
|
15344
|
+
function getNextRowElements(allElements, currentRow, elementsInRow) {
|
|
15345
|
+
var nextRow = currentRow + 1;
|
|
15346
|
+
|
|
15347
|
+
if (nextRow * elementsInRow > allElements.length) {
|
|
15348
|
+
return [];
|
|
15349
|
+
}
|
|
15350
|
+
|
|
15351
|
+
return getRowElements(allElements, nextRow, elementsInRow);
|
|
15352
|
+
}
|
|
15353
|
+
|
|
15354
|
+
function getElementInRow(elements, row, elementsInRow, indexInRow) {
|
|
15355
|
+
var rowElements = getRowElements(elements, row, elementsInRow); // get element, default to last
|
|
15356
|
+
|
|
15357
|
+
return rowElements[indexInRow] || rowElements[rowElements.length - 1] || null;
|
|
15358
|
+
}
|
|
15359
|
+
function getElementInNextRow(allElements, currentRow, elementsInRow, index) {
|
|
15360
|
+
var nextRowElements = getNextRowElements(allElements, currentRow, elementsInRow); // return item in index, or last item in row
|
|
15361
|
+
|
|
15362
|
+
return nextRowElements[index] || nextRowElements[nextRowElements.length - 1] || null;
|
|
15363
|
+
}
|
|
15364
|
+
function getElementInPrevRow(allElements, currentRow, elementsInRow, index) {
|
|
15365
|
+
var prevRowElements = getRowElements(allElements, currentRow - 1, elementsInRow); // default to last
|
|
15366
|
+
|
|
15367
|
+
return prevRowElements[index] || prevRowElements[prevRowElements.length - 1] || null;
|
|
15368
|
+
}
|
|
15369
|
+
function firstVisibleElementInContainer(parent, elements) {
|
|
15370
|
+
if (!parent || !elements.length) {
|
|
15371
|
+
return null;
|
|
15372
|
+
}
|
|
15373
|
+
|
|
15374
|
+
var parentTop = parent.getBoundingClientRect().top;
|
|
15375
|
+
var parentBottom = parent.getBoundingClientRect().bottom;
|
|
15376
|
+
var visibleElements = elements.find(function (element) {
|
|
15377
|
+
var elementTop = element.getBoundingClientRect().top;
|
|
15378
|
+
var elementBottom = element.getBoundingClientRect().bottom;
|
|
15379
|
+
return elementTop >= parentTop && elementTop <= parentBottom || elementBottom >= parentTop && elementBottom <= parentBottom;
|
|
15380
|
+
});
|
|
15381
|
+
return visibleElements || null;
|
|
15382
|
+
}
|
|
15383
|
+
function hasNextElementSibling(element) {
|
|
15384
|
+
return !!element.nextElementSibling;
|
|
15295
15385
|
}
|
|
15296
15386
|
|
|
15297
15387
|
var EmojiButtonSelector = "button" + /*#__PURE__*/asSelectors(ClassNames.emoji);
|
|
@@ -15393,7 +15483,10 @@ function allVisibleEmojis(parent) {
|
|
|
15393
15483
|
}
|
|
15394
15484
|
function lastVisibleEmoji(element) {
|
|
15395
15485
|
if (!element) return null;
|
|
15396
|
-
var
|
|
15486
|
+
var allEmojis = allVisibleEmojis(element);
|
|
15487
|
+
|
|
15488
|
+
var _allEmojis$slice = allEmojis.slice(-1),
|
|
15489
|
+
last = _allEmojis$slice[0];
|
|
15397
15490
|
|
|
15398
15491
|
if (!last) {
|
|
15399
15492
|
return null;
|
|
@@ -15436,8 +15529,8 @@ function firstVisibleEmoji(parent) {
|
|
|
15436
15529
|
return null;
|
|
15437
15530
|
}
|
|
15438
15531
|
|
|
15439
|
-
var
|
|
15440
|
-
return
|
|
15532
|
+
var allEmojis = allVisibleEmojis(parent);
|
|
15533
|
+
return firstVisibleElementInContainer(parent, allEmojis);
|
|
15441
15534
|
}
|
|
15442
15535
|
function prevCategory(element) {
|
|
15443
15536
|
var category = closestCategory(element);
|
|
@@ -15801,14 +15894,29 @@ function useClearSearch() {
|
|
|
15801
15894
|
setSearchTerm('');
|
|
15802
15895
|
};
|
|
15803
15896
|
}
|
|
15897
|
+
function useAppendSearch() {
|
|
15898
|
+
var SearchInputRef = useSearchInputRef();
|
|
15899
|
+
|
|
15900
|
+
var _useSearchTermState2 = useSearchTermState(),
|
|
15901
|
+
setSearchTerm = _useSearchTermState2[1];
|
|
15902
|
+
|
|
15903
|
+
return function appendSearch(str) {
|
|
15904
|
+
if (SearchInputRef.current) {
|
|
15905
|
+
SearchInputRef.current.value = SearchInputRef.current.value + str;
|
|
15906
|
+
setSearchTerm(SearchInputRef.current.value);
|
|
15907
|
+
}
|
|
15908
|
+
|
|
15909
|
+
setSearchTerm(str);
|
|
15910
|
+
};
|
|
15911
|
+
}
|
|
15804
15912
|
function useFilter() {
|
|
15805
15913
|
var SearchInputRef = useSearchInputRef();
|
|
15806
15914
|
var filterRef = useFilterRef();
|
|
15807
15915
|
var setFilterRef = useSetFilterRef();
|
|
15808
15916
|
|
|
15809
|
-
var
|
|
15810
|
-
searchTerm =
|
|
15811
|
-
setSearchTerm =
|
|
15917
|
+
var _useSearchTermState3 = useSearchTermState(),
|
|
15918
|
+
searchTerm = _useSearchTermState3[0],
|
|
15919
|
+
setSearchTerm = _useSearchTermState3[1];
|
|
15812
15920
|
|
|
15813
15921
|
var PickerMainRef = usePickerMainRef();
|
|
15814
15922
|
return {
|
|
@@ -15891,8 +15999,8 @@ function useIsEmojiFiltered() {
|
|
|
15891
15999
|
var _useFilterRef = useFilterRef(),
|
|
15892
16000
|
filter = _useFilterRef.current;
|
|
15893
16001
|
|
|
15894
|
-
var
|
|
15895
|
-
searchTerm =
|
|
16002
|
+
var _useSearchTermState4 = useSearchTermState(),
|
|
16003
|
+
searchTerm = _useSearchTermState4[0];
|
|
15896
16004
|
|
|
15897
16005
|
return function (unified) {
|
|
15898
16006
|
return isEmojiFilteredBySearchTerm(unified, filter, searchTerm);
|
|
@@ -16028,7 +16136,9 @@ function EmojiCategory(_ref) {
|
|
|
16028
16136
|
"data-name": category
|
|
16029
16137
|
}, React.createElement("div", {
|
|
16030
16138
|
className: "epr-emoji-category-label"
|
|
16031
|
-
}, categoryName),
|
|
16139
|
+
}, categoryName), React.createElement("div", {
|
|
16140
|
+
className: "epr-emoji-category-content"
|
|
16141
|
+
}, children));
|
|
16032
16142
|
}
|
|
16033
16143
|
|
|
16034
16144
|
function Suggested(_ref) {
|
|
@@ -16308,6 +16418,9 @@ function useEmojiPreviewEvents(allow, setPreviewEmoji) {
|
|
|
16308
16418
|
}
|
|
16309
16419
|
|
|
16310
16420
|
var bodyRef = BodyRef.current;
|
|
16421
|
+
bodyRef == null ? void 0 : bodyRef.addEventListener('keydown', onEscape, {
|
|
16422
|
+
passive: true
|
|
16423
|
+
});
|
|
16311
16424
|
bodyRef == null ? void 0 : bodyRef.addEventListener('mouseover', onMouseOver, {
|
|
16312
16425
|
passive: true
|
|
16313
16426
|
});
|
|
@@ -16337,15 +16450,30 @@ function useEmojiPreviewEvents(allow, setPreviewEmoji) {
|
|
|
16337
16450
|
});
|
|
16338
16451
|
}
|
|
16339
16452
|
|
|
16340
|
-
function onLeave() {
|
|
16453
|
+
function onLeave(e) {
|
|
16454
|
+
if (e) {
|
|
16455
|
+
var button = buttonFromTarget(e.target);
|
|
16456
|
+
|
|
16457
|
+
if (button) {
|
|
16458
|
+
return;
|
|
16459
|
+
}
|
|
16460
|
+
}
|
|
16461
|
+
|
|
16341
16462
|
setPreviewEmoji(null);
|
|
16342
16463
|
}
|
|
16343
16464
|
|
|
16465
|
+
function onEscape(e) {
|
|
16466
|
+
if (e.key === 'Escape') {
|
|
16467
|
+
setPreviewEmoji(null);
|
|
16468
|
+
}
|
|
16469
|
+
}
|
|
16470
|
+
|
|
16344
16471
|
return function () {
|
|
16345
16472
|
bodyRef == null ? void 0 : bodyRef.removeEventListener('mouseover', onMouseOver);
|
|
16346
16473
|
bodyRef == null ? void 0 : bodyRef.removeEventListener('mouseout', onLeave);
|
|
16347
16474
|
bodyRef == null ? void 0 : bodyRef.removeEventListener('focus', onEnter, true);
|
|
16348
16475
|
bodyRef == null ? void 0 : bodyRef.removeEventListener('blur', onLeave, true);
|
|
16476
|
+
bodyRef == null ? void 0 : bodyRef.removeEventListener('keydown', onEscape);
|
|
16349
16477
|
};
|
|
16350
16478
|
}, [BodyRef, allow, setPreviewEmoji]);
|
|
16351
16479
|
|
|
@@ -16558,108 +16686,17 @@ function useIsSearchMode() {
|
|
|
16558
16686
|
return !!searchTerm;
|
|
16559
16687
|
}
|
|
16560
16688
|
|
|
16561
|
-
function elementCountInRow(parent, element) {
|
|
16562
|
-
if (!parent || !element) {
|
|
16563
|
-
return 0;
|
|
16564
|
-
}
|
|
16565
|
-
|
|
16566
|
-
var parentWidth = parent.getBoundingClientRect().width;
|
|
16567
|
-
var elementWidth = element.getBoundingClientRect().width;
|
|
16568
|
-
return Math.floor(parentWidth / elementWidth);
|
|
16569
|
-
}
|
|
16570
|
-
function elementIndexInRow(parent, element) {
|
|
16571
|
-
if (!parent || !element) {
|
|
16572
|
-
return 0;
|
|
16573
|
-
}
|
|
16574
|
-
|
|
16575
|
-
var elementWidth = element.getBoundingClientRect().width;
|
|
16576
|
-
var elementLeft = element.getBoundingClientRect().left;
|
|
16577
|
-
var parentLeft = parent.getBoundingClientRect().left;
|
|
16578
|
-
return Math.floor((elementLeft - parentLeft) / elementWidth);
|
|
16579
|
-
}
|
|
16580
|
-
function rowNumber(parent, element) {
|
|
16581
|
-
if (!parent || !element) {
|
|
16582
|
-
return 0;
|
|
16583
|
-
}
|
|
16584
|
-
|
|
16585
|
-
var elementHeight = element.getBoundingClientRect().height;
|
|
16586
|
-
var elementTop = element.getBoundingClientRect().top;
|
|
16587
|
-
var parentTop = parent.getBoundingClientRect().top;
|
|
16588
|
-
return Math.floor((elementTop - parentTop) / elementHeight) - 1;
|
|
16589
|
-
}
|
|
16590
|
-
function hasNextRow(parent, element) {
|
|
16591
|
-
if (!parent || !element) {
|
|
16592
|
-
return false;
|
|
16593
|
-
}
|
|
16594
|
-
|
|
16595
|
-
var elementHeight = element.getBoundingClientRect().height;
|
|
16596
|
-
var elementTop = element.getBoundingClientRect().top;
|
|
16597
|
-
var parentTop = parent.getBoundingClientRect().top;
|
|
16598
|
-
var parentHeight = parent.getBoundingClientRect().height;
|
|
16599
|
-
return elementTop - parentTop + elementHeight < parentHeight;
|
|
16600
|
-
}
|
|
16601
|
-
|
|
16602
|
-
function getRowElements(elements, row, elementsInRow) {
|
|
16603
|
-
if (row === -1) {
|
|
16604
|
-
var lastRow = Math.floor(elements.length / elementsInRow);
|
|
16605
|
-
var firstElementIndex = lastRow * elementsInRow;
|
|
16606
|
-
var lastElementIndex = elements.length - 1;
|
|
16607
|
-
return elements.slice(firstElementIndex, lastElementIndex + 1);
|
|
16608
|
-
}
|
|
16609
|
-
|
|
16610
|
-
return elements.slice(row * elementsInRow, (row + 1) * elementsInRow);
|
|
16611
|
-
}
|
|
16612
|
-
|
|
16613
|
-
function getNextRowElements(allElements, currentRow, elementsInRow) {
|
|
16614
|
-
var nextRow = currentRow + 1;
|
|
16615
|
-
|
|
16616
|
-
if (nextRow * elementsInRow > allElements.length) {
|
|
16617
|
-
return [];
|
|
16618
|
-
}
|
|
16619
|
-
|
|
16620
|
-
return getRowElements(allElements, nextRow, elementsInRow);
|
|
16621
|
-
}
|
|
16622
|
-
|
|
16623
|
-
function getElementInRow(elements, row, elementsInRow, indexInRow) {
|
|
16624
|
-
var rowElements = getRowElements(elements, row, elementsInRow); // get element, default to last
|
|
16625
|
-
|
|
16626
|
-
return rowElements[indexInRow] || rowElements[rowElements.length - 1] || null;
|
|
16627
|
-
}
|
|
16628
|
-
function getElementInNextRow(allElements, currentRow, elementsInRow, index) {
|
|
16629
|
-
var nextRowElements = getNextRowElements(allElements, currentRow, elementsInRow); // return item in index, or last item in row
|
|
16630
|
-
|
|
16631
|
-
return nextRowElements[index] || nextRowElements[nextRowElements.length - 1] || null;
|
|
16632
|
-
}
|
|
16633
|
-
function getElementInPrevRow(allElements, currentRow, elementsInRow, index) {
|
|
16634
|
-
var prevRowElements = getRowElements(allElements, currentRow - 1, elementsInRow); // default to last
|
|
16635
|
-
|
|
16636
|
-
return prevRowElements[index] || prevRowElements[prevRowElements.length - 1] || null;
|
|
16637
|
-
}
|
|
16638
|
-
function firstVisibleElementInContainer(parent, elements) {
|
|
16639
|
-
if (!parent || !elements.length) {
|
|
16640
|
-
return null;
|
|
16641
|
-
}
|
|
16642
|
-
|
|
16643
|
-
var parentTop = parent.getBoundingClientRect().top;
|
|
16644
|
-
var parentBottom = parent.getBoundingClientRect().bottom;
|
|
16645
|
-
var visibleElements = elements.find(function (element) {
|
|
16646
|
-
var elementTop = element.getBoundingClientRect().top;
|
|
16647
|
-
var elementBottom = element.getBoundingClientRect().bottom;
|
|
16648
|
-
return elementTop >= parentTop && elementTop <= parentBottom || elementBottom >= parentTop && elementBottom <= parentBottom;
|
|
16649
|
-
});
|
|
16650
|
-
return visibleElements || null;
|
|
16651
|
-
}
|
|
16652
|
-
function hasNextElementSibling(element) {
|
|
16653
|
-
return !!element.nextElementSibling;
|
|
16654
|
-
}
|
|
16655
|
-
|
|
16656
16689
|
function getActiveElement() {
|
|
16657
16690
|
return document.activeElement;
|
|
16658
16691
|
}
|
|
16659
16692
|
|
|
16660
16693
|
function focusFirstVisibleEmoji(parent) {
|
|
16661
|
-
|
|
16662
|
-
|
|
16694
|
+
focusElement(firstVisibleEmoji(parent));
|
|
16695
|
+
}
|
|
16696
|
+
function focusAndClickFirstVisibleEmoji(parent) {
|
|
16697
|
+
var firstEmoji = firstVisibleEmoji(parent);
|
|
16698
|
+
focusElement(firstEmoji);
|
|
16699
|
+
firstEmoji == null ? void 0 : firstEmoji.click();
|
|
16663
16700
|
}
|
|
16664
16701
|
function focusLastVisibleEmoji(parent) {
|
|
16665
16702
|
focusElement(lastVisibleEmoji(parent));
|
|
@@ -16795,6 +16832,7 @@ var KeyboardEvents;
|
|
|
16795
16832
|
KeyboardEvents["ArrowLeft"] = "ArrowLeft";
|
|
16796
16833
|
KeyboardEvents["ArrowRight"] = "ArrowRight";
|
|
16797
16834
|
KeyboardEvents["Escape"] = "Escape";
|
|
16835
|
+
KeyboardEvents["Enter"] = "Enter";
|
|
16798
16836
|
})(KeyboardEvents || (KeyboardEvents = {}));
|
|
16799
16837
|
|
|
16800
16838
|
function useKeyboardNavigation() {
|
|
@@ -16816,7 +16854,7 @@ function usePickerMainKeyboardEvents() {
|
|
|
16816
16854
|
return function onKeyDown(event) {
|
|
16817
16855
|
var key = event.key;
|
|
16818
16856
|
|
|
16819
|
-
if (key ===
|
|
16857
|
+
if (key === KeyboardEvents.Escape) {
|
|
16820
16858
|
event.preventDefault();
|
|
16821
16859
|
clearSearch();
|
|
16822
16860
|
closeAllOpenToggles();
|
|
@@ -16842,6 +16880,7 @@ function usePickerMainKeyboardEvents() {
|
|
|
16842
16880
|
function useSearchInputKeyboardEvents() {
|
|
16843
16881
|
var focusSkinTonePicker = useFocusSkinTonePicker();
|
|
16844
16882
|
var PickerMainRef = usePickerMainRef();
|
|
16883
|
+
var BodyRef = useBodyRef();
|
|
16845
16884
|
var SearchInputRef = useSearchInputRef();
|
|
16846
16885
|
|
|
16847
16886
|
var _useSkinToneFanOpenSt = useSkinToneFanOpenState(),
|
|
@@ -16863,9 +16902,14 @@ function useSearchInputKeyboardEvents() {
|
|
|
16863
16902
|
event.preventDefault();
|
|
16864
16903
|
goDownFromSearchInput();
|
|
16865
16904
|
break;
|
|
16905
|
+
|
|
16906
|
+
case KeyboardEvents.Enter:
|
|
16907
|
+
event.preventDefault();
|
|
16908
|
+
focusAndClickFirstVisibleEmoji(BodyRef.current);
|
|
16909
|
+
break;
|
|
16866
16910
|
}
|
|
16867
16911
|
};
|
|
16868
|
-
}, [focusSkinTonePicker, goDownFromSearchInput, setSkinToneFanOpenState]);
|
|
16912
|
+
}, [focusSkinTonePicker, goDownFromSearchInput, setSkinToneFanOpenState, BodyRef]);
|
|
16869
16913
|
React.useEffect(function () {
|
|
16870
16914
|
var current = SearchInputRef.current;
|
|
16871
16915
|
|
|
@@ -16890,6 +16934,7 @@ function useSkinTonePickerKeyboardEvents() {
|
|
|
16890
16934
|
isOpen = _useSkinToneFanOpenSt2[0],
|
|
16891
16935
|
setIsOpen = _useSkinToneFanOpenSt2[1];
|
|
16892
16936
|
|
|
16937
|
+
var onType = useOnType();
|
|
16893
16938
|
var onKeyDown = React.useMemo(function () {
|
|
16894
16939
|
return function onKeyDown(event) {
|
|
16895
16940
|
var key = event.key;
|
|
@@ -16924,9 +16969,13 @@ function useSkinTonePickerKeyboardEvents() {
|
|
|
16924
16969
|
|
|
16925
16970
|
goDownFromSearchInput();
|
|
16926
16971
|
break;
|
|
16972
|
+
|
|
16973
|
+
default:
|
|
16974
|
+
onType(event);
|
|
16975
|
+
break;
|
|
16927
16976
|
}
|
|
16928
16977
|
};
|
|
16929
|
-
}, [isOpen, focusSearchInput, setIsOpen, goDownFromSearchInput]);
|
|
16978
|
+
}, [isOpen, focusSearchInput, setIsOpen, goDownFromSearchInput, onType]);
|
|
16930
16979
|
React.useEffect(function () {
|
|
16931
16980
|
var current = SkinTonePickerRef.current;
|
|
16932
16981
|
|
|
@@ -16945,6 +16994,7 @@ function useCategoryNavigationKeyboardEvents() {
|
|
|
16945
16994
|
var focusSearchInput = useFocusSearchInput();
|
|
16946
16995
|
var CategoryNavigationRef = useCategoryNavigationRef();
|
|
16947
16996
|
var BodyRef = useBodyRef();
|
|
16997
|
+
var onType = useOnType();
|
|
16948
16998
|
var onKeyDown = React.useMemo(function () {
|
|
16949
16999
|
return function onKeyDown(event) {
|
|
16950
17000
|
var key = event.key;
|
|
@@ -16969,9 +17019,13 @@ function useCategoryNavigationKeyboardEvents() {
|
|
|
16969
17019
|
event.preventDefault();
|
|
16970
17020
|
focusFirstVisibleEmoji(BodyRef.current);
|
|
16971
17021
|
break;
|
|
17022
|
+
|
|
17023
|
+
default:
|
|
17024
|
+
onType(event);
|
|
17025
|
+
break;
|
|
16972
17026
|
}
|
|
16973
17027
|
};
|
|
16974
|
-
}, [BodyRef, focusSearchInput]);
|
|
17028
|
+
}, [BodyRef, focusSearchInput, onType]);
|
|
16975
17029
|
React.useEffect(function () {
|
|
16976
17030
|
var current = CategoryNavigationRef.current;
|
|
16977
17031
|
|
|
@@ -16989,6 +17043,7 @@ function useCategoryNavigationKeyboardEvents() {
|
|
|
16989
17043
|
function useBodyKeyboardEvents() {
|
|
16990
17044
|
var BodyRef = useBodyRef();
|
|
16991
17045
|
var goUpFromBody = useGoUpFromBody();
|
|
17046
|
+
var onType = useOnType();
|
|
16992
17047
|
var onKeyDown = React.useMemo(function () {
|
|
16993
17048
|
return function onKeyDown(event) {
|
|
16994
17049
|
var key = event.key;
|
|
@@ -17014,9 +17069,13 @@ function useBodyKeyboardEvents() {
|
|
|
17014
17069
|
event.preventDefault();
|
|
17015
17070
|
focusVisibleEmojiOneRowUp(activeElement, goUpFromBody);
|
|
17016
17071
|
break;
|
|
17072
|
+
|
|
17073
|
+
default:
|
|
17074
|
+
onType(event);
|
|
17075
|
+
break;
|
|
17017
17076
|
}
|
|
17018
17077
|
};
|
|
17019
|
-
}, [goUpFromBody]);
|
|
17078
|
+
}, [goUpFromBody, onType]);
|
|
17020
17079
|
React.useEffect(function () {
|
|
17021
17080
|
var current = BodyRef.current;
|
|
17022
17081
|
|
|
@@ -17081,6 +17140,33 @@ function focusPrevSkinTone() {
|
|
|
17081
17140
|
focusPrevElementSibling(currentSkinTone);
|
|
17082
17141
|
}
|
|
17083
17142
|
|
|
17143
|
+
function useOnType() {
|
|
17144
|
+
var appendSearch = useAppendSearch();
|
|
17145
|
+
var focusSearchInput = useFocusSearchInput();
|
|
17146
|
+
var closeAllOpenToggles = useCloseAllOpenToggles();
|
|
17147
|
+
return function onType(event) {
|
|
17148
|
+
var key = event.key;
|
|
17149
|
+
|
|
17150
|
+
if (hasModifier(event)) {
|
|
17151
|
+
return;
|
|
17152
|
+
}
|
|
17153
|
+
|
|
17154
|
+
if (key.match(/(^[a-zA-Z0-9]$){1}/)) {
|
|
17155
|
+
event.preventDefault();
|
|
17156
|
+
closeAllOpenToggles();
|
|
17157
|
+
focusSearchInput();
|
|
17158
|
+
appendSearch(key);
|
|
17159
|
+
}
|
|
17160
|
+
};
|
|
17161
|
+
}
|
|
17162
|
+
|
|
17163
|
+
function hasModifier(event) {
|
|
17164
|
+
var metaKey = event.metaKey,
|
|
17165
|
+
ctrlKey = event.ctrlKey,
|
|
17166
|
+
altKey = event.altKey;
|
|
17167
|
+
return metaKey || ctrlKey || altKey;
|
|
17168
|
+
}
|
|
17169
|
+
|
|
17084
17170
|
function PickerMain(_ref) {
|
|
17085
17171
|
var children = _ref.children;
|
|
17086
17172
|
return React.createElement(PickerContextProvider, null, React.createElement(PickerRootElement, null, children));
|