react-input-emoji 5.8.0 → 5.9.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.es.js +39 -14
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +39 -14
- package/dist/index.js.map +1 -1
- package/dist/src/utils/input-event-utils.d.ts +9 -2
- package/package.json +4 -4
package/dist/index.js
CHANGED
@@ -626,9 +626,22 @@ function handleCopy(event) {
|
|
626
626
|
event.preventDefault();
|
627
627
|
}
|
628
628
|
|
629
|
+
/** @type {Range|undefined} */
|
630
|
+
/** @type {Range|undefined} */
|
631
|
+
var currentRangeCached;
|
632
|
+
|
629
633
|
/**
|
630
|
-
*
|
631
|
-
|
634
|
+
* Caches the current text selection range
|
635
|
+
*/
|
636
|
+
function cacheCurrentRange() {
|
637
|
+
var selection = window.getSelection();
|
638
|
+
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;
|
639
|
+
var range = selection.getRangeAt(0);
|
640
|
+
currentRangeCached = range.cloneRange();
|
641
|
+
}
|
642
|
+
|
643
|
+
/**
|
644
|
+
* @param {string} html - HTML string to be pasted at the caret position
|
632
645
|
*/
|
633
646
|
function handlePasteHtmlAtCaret(html) {
|
634
647
|
var sel;
|
@@ -638,7 +651,8 @@ function handlePasteHtmlAtCaret(html) {
|
|
638
651
|
sel = window.getSelection();
|
639
652
|
if (sel === null) return;
|
640
653
|
if (sel.getRangeAt && sel.rangeCount) {
|
641
|
-
|
654
|
+
var _currentRangeCached;
|
655
|
+
range = (_currentRangeCached = currentRangeCached) !== null && _currentRangeCached !== void 0 ? _currentRangeCached : sel.getRangeAt(0);
|
642
656
|
range.deleteContents();
|
643
657
|
|
644
658
|
// Range.createContextualFragment() would be useful here but is
|
@@ -656,6 +670,7 @@ function handlePasteHtmlAtCaret(html) {
|
|
656
670
|
// Preserve the selection
|
657
671
|
if (lastNode) {
|
658
672
|
range = range.cloneRange();
|
673
|
+
currentRangeCached = range;
|
659
674
|
range.setStartAfter(lastNode);
|
660
675
|
range.collapse(true);
|
661
676
|
sel.removeAllRanges();
|
@@ -1738,6 +1753,9 @@ var $f72b75cf796873c7$export$2e2bcd8739ae039 = {
|
|
1738
1753
|
};
|
1739
1754
|
const $c84d045dcc34faf5$var$CACHE = new Map();
|
1740
1755
|
const $c84d045dcc34faf5$var$VERSIONS = [{
|
1756
|
+
v: 15,
|
1757
|
+
emoji: "\uD83E\uDEE8"
|
1758
|
+
}, {
|
1741
1759
|
v: 14,
|
1742
1760
|
emoji: "\uD83E\uDEE0"
|
1743
1761
|
}, {
|
@@ -1917,8 +1935,8 @@ var $b247ea80b67298d5$export$2e2bcd8739ae039 = {
|
|
1917
1935
|
value: 24
|
1918
1936
|
},
|
1919
1937
|
emojiVersion: {
|
1920
|
-
value:
|
1921
|
-
choices: [1, 2, 3, 4, 5, 11, 12, 12.1, 13, 13.1, 14]
|
1938
|
+
value: 15,
|
1939
|
+
choices: [1, 2, 3, 4, 5, 11, 12, 12.1, 13, 13.1, 14, 15]
|
1922
1940
|
},
|
1923
1941
|
exceptEmojis: {
|
1924
1942
|
value: []
|
@@ -1929,7 +1947,7 @@ var $b247ea80b67298d5$export$2e2bcd8739ae039 = {
|
|
1929
1947
|
},
|
1930
1948
|
locale: {
|
1931
1949
|
value: "en",
|
1932
|
-
choices: ["en", "ar", "be", "cs", "de", "es", "fa", "fi", "fr", "hi", "it", "ja", "
|
1950
|
+
choices: ["en", "ar", "be", "cs", "de", "es", "fa", "fi", "fr", "hi", "it", "ja", "ko", "nl", "pl", "pt", "ru", "sa", "tr", "uk", "vi", "zh"]
|
1933
1951
|
},
|
1934
1952
|
maxFrequentRows: {
|
1935
1953
|
value: 4
|
@@ -2448,8 +2466,8 @@ function $254755d3f438722f$export$2e2bcd8739ae039(props) {
|
|
2448
2466
|
emoji || (emoji = ($c4d155af13ad4d4b$export$2e2bcd8739ae039).get(id || props.native));
|
2449
2467
|
if (!emoji) return props.fallback;
|
2450
2468
|
const emojiSkin = emoji.skins[skin - 1] || emoji.skins[0];
|
2451
|
-
const imageSrc = emojiSkin.src || (props.set != "native" && !props.spritesheet ? typeof props.getImageURL === "function" ? props.getImageURL(props.set, emojiSkin.unified) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@
|
2452
|
-
const spritesheetSrc = typeof props.getSpritesheetURL === "function" ? props.getSpritesheetURL(props.set) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@
|
2469
|
+
const imageSrc = emojiSkin.src || (props.set != "native" && !props.spritesheet ? typeof props.getImageURL === "function" ? props.getImageURL(props.set, emojiSkin.unified) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@15.0.1/img/${props.set}/64/${emojiSkin.unified}.png` : undefined);
|
2470
|
+
const spritesheetSrc = typeof props.getSpritesheetURL === "function" ? props.getSpritesheetURL(props.set) : `https://cdn.jsdelivr.net/npm/emoji-datasource-${props.set}@15.0.1/img/${props.set}/sheets-256/64.png`;
|
2453
2471
|
return /*#__PURE__*/($bd9dd35321b03dd4$export$34b9dba7ce09269b)("span", {
|
2454
2472
|
class: "emoji-mart-emoji",
|
2455
2473
|
"data-emoji-set": props.set,
|
@@ -2972,6 +2990,7 @@ class $89bd6bb200cc8fef$export$2e2bcd8739ae039 extends ($fb96b826c0c5f37a$export
|
|
2972
2990
|
}
|
2973
2991
|
unregister() {
|
2974
2992
|
document.removeEventListener("click", this.handleClickOutside);
|
2993
|
+
this.darkMedia?.removeEventListener("change", this.darkMediaCallback);
|
2975
2994
|
this.unobserve();
|
2976
2995
|
}
|
2977
2996
|
observe() {
|
@@ -3029,12 +3048,7 @@ class $89bd6bb200cc8fef$export$2e2bcd8739ae039 extends ($fb96b826c0c5f37a$export
|
|
3029
3048
|
if (!this.darkMedia) {
|
3030
3049
|
this.darkMedia = matchMedia("(prefers-color-scheme: dark)");
|
3031
3050
|
if (this.darkMedia.media.match(/^not/)) return "light";
|
3032
|
-
this.darkMedia.
|
3033
|
-
if (this.props.theme != "auto") return;
|
3034
|
-
this.setState({
|
3035
|
-
theme: this.darkMedia.matches ? "dark" : "light"
|
3036
|
-
});
|
3037
|
-
});
|
3051
|
+
this.darkMedia.addEventListener("change", this.darkMediaCallback);
|
3038
3052
|
}
|
3039
3053
|
return this.darkMedia.matches ? "dark" : "light";
|
3040
3054
|
}
|
@@ -3639,6 +3653,12 @@ class $89bd6bb200cc8fef$export$2e2bcd8739ae039 extends ($fb96b826c0c5f37a$export
|
|
3639
3653
|
}
|
3640
3654
|
constructor(props) {
|
3641
3655
|
super();
|
3656
|
+
($c770c458706daa72$export$2e2bcd8739ae039)(this, "darkMediaCallback", () => {
|
3657
|
+
if (this.props.theme != "auto") return;
|
3658
|
+
this.setState({
|
3659
|
+
theme: this.darkMedia.matches ? "dark" : "light"
|
3660
|
+
});
|
3661
|
+
});
|
3642
3662
|
($c770c458706daa72$export$2e2bcd8739ae039)(this, "handleClickOutside", e => {
|
3643
3663
|
const {
|
3644
3664
|
element: element
|
@@ -4057,6 +4077,11 @@ var EmojiPickerWrapper = function EmojiPickerWrapper(props) {
|
|
4057
4077
|
_useState6 = _slicedToArray(_useState5, 2),
|
4058
4078
|
emojiPickerPosition = _useState6[0],
|
4059
4079
|
setEmojiPickerPosition = _useState6[1];
|
4080
|
+
React.useEffect(function () {
|
4081
|
+
if (showPicker) {
|
4082
|
+
cacheCurrentRange();
|
4083
|
+
}
|
4084
|
+
}, [showPicker]);
|
4060
4085
|
React.useEffect(function () {
|
4061
4086
|
addSanitizeFn(replaceAllTextEmojiToString);
|
4062
4087
|
}, [addSanitizeFn]);
|