react-input-emoji 5.8.1 → 5.9.0
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/index.es.js +23 -3
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/src/utils/input-event-utils.d.ts +9 -2
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
@@ -619,9 +619,22 @@ function handleCopy(event) {
|
|
619
619
|
event.preventDefault();
|
620
620
|
}
|
621
621
|
|
622
|
+
/** @type {Range|undefined} */
|
623
|
+
/** @type {Range|undefined} */
|
624
|
+
var currentRangeCached;
|
625
|
+
|
622
626
|
/**
|
623
|
-
*
|
624
|
-
|
627
|
+
* Caches the current text selection range
|
628
|
+
*/
|
629
|
+
function cacheCurrentRange() {
|
630
|
+
var selection = window.getSelection();
|
631
|
+
if (!selection.rangeCount || (selection === null || selection === void 0 ? void 0 : selection.anchorNode['className']) !== 'react-input-emoji--input' && selection.anchorNode.parentNode['className'] !== 'react-input-emoji--input') return;
|
632
|
+
var range = selection.getRangeAt(0);
|
633
|
+
currentRangeCached = range.cloneRange();
|
634
|
+
}
|
635
|
+
|
636
|
+
/**
|
637
|
+
* @param {string} html - HTML string to be pasted at the caret position
|
625
638
|
*/
|
626
639
|
function handlePasteHtmlAtCaret(html) {
|
627
640
|
var sel;
|
@@ -631,7 +644,8 @@ function handlePasteHtmlAtCaret(html) {
|
|
631
644
|
sel = window.getSelection();
|
632
645
|
if (sel === null) return;
|
633
646
|
if (sel.getRangeAt && sel.rangeCount) {
|
634
|
-
|
647
|
+
var _currentRangeCached;
|
648
|
+
range = (_currentRangeCached = currentRangeCached) !== null && _currentRangeCached !== void 0 ? _currentRangeCached : sel.getRangeAt(0);
|
635
649
|
range.deleteContents();
|
636
650
|
|
637
651
|
// Range.createContextualFragment() would be useful here but is
|
@@ -649,6 +663,7 @@ function handlePasteHtmlAtCaret(html) {
|
|
649
663
|
// Preserve the selection
|
650
664
|
if (lastNode) {
|
651
665
|
range = range.cloneRange();
|
666
|
+
currentRangeCached = range;
|
652
667
|
range.setStartAfter(lastNode);
|
653
668
|
range.collapse(true);
|
654
669
|
sel.removeAllRanges();
|
@@ -4055,6 +4070,11 @@ var EmojiPickerWrapper = function EmojiPickerWrapper(props) {
|
|
4055
4070
|
_useState6 = _slicedToArray(_useState5, 2),
|
4056
4071
|
emojiPickerPosition = _useState6[0],
|
4057
4072
|
setEmojiPickerPosition = _useState6[1];
|
4073
|
+
useEffect(function () {
|
4074
|
+
if (showPicker) {
|
4075
|
+
cacheCurrentRange();
|
4076
|
+
}
|
4077
|
+
}, [showPicker]);
|
4058
4078
|
useEffect(function () {
|
4059
4079
|
addSanitizeFn(replaceAllTextEmojiToString);
|
4060
4080
|
}, [addSanitizeFn]);
|