react-input-emoji 5.6.5 → 5.6.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/dist/index.es.js +157 -25
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +175 -25
- package/dist/index.js.map +1 -1
- package/dist/src/utils/input-event-utils.d.ts +19 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
@@ -682,35 +682,100 @@ function totalCharacters(_ref2) {
|
|
682
682
|
var emojisCount = (html.match(/<img/g) || []).length;
|
683
683
|
return textCount + emojisCount;
|
684
684
|
}
|
685
|
+
/**
|
686
|
+
*
|
687
|
+
* @param {HTMLDivElement} inputDiv
|
688
|
+
* @return {string}
|
689
|
+
*/
|
690
|
+
function removeHtmlExceptBr(inputDiv) {
|
691
|
+
var temp = inputDiv.innerHTML.replace(/<br\s*\/?>/gi, "[BR]"); // temporarily replace <br> with placeholder
|
692
|
+
var stripped = temp.replace(/<[^>]+>/g, ""); // strip all html tags
|
693
|
+
var _final = stripped.replace(/\[BR\]/gi, "</br>"); // replace placeholders with <br>
|
694
|
+
return _final;
|
695
|
+
}
|
685
696
|
|
686
697
|
/**
|
687
|
-
*
|
688
|
-
* @param {
|
698
|
+
*
|
699
|
+
* @param {*} range
|
700
|
+
* @returns
|
689
701
|
*/
|
690
|
-
function
|
691
|
-
var range;
|
692
|
-
var
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
selection.removeAllRanges();
|
700
|
-
selection.addRange(range);
|
702
|
+
function getSelectionStart$1(range) {
|
703
|
+
var node = range.startContainer;
|
704
|
+
var offset = range.startOffset;
|
705
|
+
|
706
|
+
// Handle cases where the selection start node is not a text node
|
707
|
+
if (node.nodeType !== Node.TEXT_NODE) {
|
708
|
+
while (node.nodeType !== Node.TEXT_NODE) {
|
709
|
+
node = node.nextSibling;
|
710
|
+
if (!node) break;
|
701
711
|
}
|
712
|
+
if (!node) {
|
713
|
+
node = range.commonAncestorContainer;
|
714
|
+
while (node.nodeType !== Node.TEXT_NODE) {
|
715
|
+
node = node.firstChild;
|
716
|
+
}
|
717
|
+
}
|
718
|
+
offset = 0;
|
702
719
|
}
|
720
|
+
return {
|
721
|
+
node: node,
|
722
|
+
offset: offset
|
723
|
+
};
|
703
724
|
}
|
725
|
+
|
704
726
|
/**
|
705
727
|
*
|
706
|
-
* @
|
707
|
-
* @return {string}
|
728
|
+
* @returns {Object} cursor
|
708
729
|
*/
|
709
|
-
function
|
710
|
-
var
|
711
|
-
var
|
712
|
-
var
|
713
|
-
return
|
730
|
+
function getCursor() {
|
731
|
+
var selection = window.getSelection();
|
732
|
+
var range = selection.getRangeAt(0);
|
733
|
+
var selectionStart = getSelectionStart$1(range);
|
734
|
+
return {
|
735
|
+
selection: selection,
|
736
|
+
range: range,
|
737
|
+
selectionStart: selectionStart
|
738
|
+
};
|
739
|
+
}
|
740
|
+
|
741
|
+
/**
|
742
|
+
*
|
743
|
+
*/
|
744
|
+
function addLineBreak() {
|
745
|
+
var _getCursor = getCursor(),
|
746
|
+
selection = _getCursor.selection,
|
747
|
+
range = _getCursor.range,
|
748
|
+
selectionStart = _getCursor.selectionStart;
|
749
|
+
|
750
|
+
// If cursor is at the end of the text content, add one more line break
|
751
|
+
if (selection.isCollapsed && selectionStart.offset === selectionStart.node.textContent.length) {
|
752
|
+
var br = document.createElement("br");
|
753
|
+
range.insertNode(br);
|
754
|
+
range.setStartAfter(br);
|
755
|
+
range.setEndAfter(br);
|
756
|
+
selection.removeAllRanges();
|
757
|
+
selection.addRange(range);
|
758
|
+
var br2 = document.createElement("br");
|
759
|
+
range.insertNode(br2);
|
760
|
+
range.setStartAfter(br2);
|
761
|
+
range.setEndAfter(br2);
|
762
|
+
selection.removeAllRanges();
|
763
|
+
selection.addRange(range);
|
764
|
+
} else {
|
765
|
+
var _br = document.createElement("br");
|
766
|
+
range.insertNode(_br);
|
767
|
+
range.setStartAfter(_br);
|
768
|
+
range.setEndAfter(_br);
|
769
|
+
selection.removeAllRanges();
|
770
|
+
selection.addRange(range);
|
771
|
+
// Set cursor position right before the first letter after the line break
|
772
|
+
if (selectionStart.node.nextSibling && selectionStart.node.nextSibling.nodeType === Node.TEXT_NODE) {
|
773
|
+
range.setStart(selectionStart.node.nextSibling, 1);
|
774
|
+
range.setEnd(selectionStart.node.nextSibling, 1);
|
775
|
+
}
|
776
|
+
selection.removeAllRanges();
|
777
|
+
selection.addRange(range);
|
778
|
+
}
|
714
779
|
}
|
715
780
|
|
716
781
|
// @ts-check
|
@@ -969,8 +1034,7 @@ var TextInput = function TextInput(_ref, ref) {
|
|
969
1034
|
if (event.key === "Enter" && (event.shiftKey === true || event.ctrlKey === true) && props.shouldReturn) {
|
970
1035
|
event.preventDefault();
|
971
1036
|
if (textInputRef.current) {
|
972
|
-
|
973
|
-
moveCaretToEnd(textInputRef);
|
1037
|
+
addLineBreak();
|
974
1038
|
return;
|
975
1039
|
}
|
976
1040
|
}
|
@@ -3549,12 +3613,31 @@ function EmojiPicker(props) {
|
|
3549
3613
|
categoryies = [].concat(_toConsumableArray(categoryies), ["people", "nature", "foods", "activity", "places", "objects", "symbols", "flags"]);
|
3550
3614
|
return categoryies;
|
3551
3615
|
}, [disableRecent]);
|
3552
|
-
var
|
3616
|
+
var _useState = useState(undefined),
|
3617
|
+
_useState2 = _slicedToArray(_useState, 2),
|
3618
|
+
i18n = _useState2[0],
|
3619
|
+
setI18n = _useState2[1];
|
3620
|
+
useEffect(function () {
|
3553
3621
|
if (!language) {
|
3554
|
-
|
3622
|
+
// @ts-ignore
|
3623
|
+
Promise.resolve().then(function () { return en$1; }).then(function (translations) {
|
3624
|
+
setI18n(translations);
|
3625
|
+
})["catch"](function (error) {
|
3626
|
+
console.error("Failed to load translations:", error);
|
3627
|
+
});
|
3628
|
+
return;
|
3555
3629
|
}
|
3556
|
-
|
3630
|
+
|
3631
|
+
// @ts-ignore
|
3632
|
+
import("@emoji-mart/data/i18n/".concat(language, ".json")).then(function (translations) {
|
3633
|
+
setI18n(translations);
|
3634
|
+
})["catch"](function (error) {
|
3635
|
+
console.error("Failed to load translations:", error);
|
3636
|
+
});
|
3557
3637
|
}, [language]);
|
3638
|
+
if (!i18n) {
|
3639
|
+
return null;
|
3640
|
+
}
|
3558
3641
|
return /*#__PURE__*/React.createElement($e5534fc185f7111e$export$2e2bcd8739ae039, {
|
3559
3642
|
data: undefined,
|
3560
3643
|
theme: theme,
|
@@ -4616,5 +4699,54 @@ InputEmojiWithRef.defaultProps = {
|
|
4616
4699
|
language: undefined
|
4617
4700
|
};
|
4618
4701
|
|
4702
|
+
var search = "Search";
|
4703
|
+
var search_no_results_1 = "Oh no!";
|
4704
|
+
var search_no_results_2 = "That emoji couldn’t be found";
|
4705
|
+
var pick = "Pick an emoji…";
|
4706
|
+
var add_custom = "Add custom emoji";
|
4707
|
+
var categories = {
|
4708
|
+
activity: "Activity",
|
4709
|
+
custom: "Custom",
|
4710
|
+
flags: "Flags",
|
4711
|
+
foods: "Food & Drink",
|
4712
|
+
frequent: "Frequently used",
|
4713
|
+
nature: "Animals & Nature",
|
4714
|
+
objects: "Objects",
|
4715
|
+
people: "Smileys & People",
|
4716
|
+
places: "Travel & Places",
|
4717
|
+
search: "Search Results",
|
4718
|
+
symbols: "Symbols"
|
4719
|
+
};
|
4720
|
+
var skins = {
|
4721
|
+
"1": "Default",
|
4722
|
+
"2": "Light",
|
4723
|
+
"3": "Medium-Light",
|
4724
|
+
"4": "Medium",
|
4725
|
+
"5": "Medium-Dark",
|
4726
|
+
"6": "Dark",
|
4727
|
+
choose: "Choose default skin tone"
|
4728
|
+
};
|
4729
|
+
var en = {
|
4730
|
+
search: search,
|
4731
|
+
search_no_results_1: search_no_results_1,
|
4732
|
+
search_no_results_2: search_no_results_2,
|
4733
|
+
pick: pick,
|
4734
|
+
add_custom: add_custom,
|
4735
|
+
categories: categories,
|
4736
|
+
skins: skins
|
4737
|
+
};
|
4738
|
+
|
4739
|
+
var en$1 = /*#__PURE__*/Object.freeze({
|
4740
|
+
__proto__: null,
|
4741
|
+
search: search,
|
4742
|
+
search_no_results_1: search_no_results_1,
|
4743
|
+
search_no_results_2: search_no_results_2,
|
4744
|
+
pick: pick,
|
4745
|
+
add_custom: add_custom,
|
4746
|
+
categories: categories,
|
4747
|
+
skins: skins,
|
4748
|
+
'default': en
|
4749
|
+
});
|
4750
|
+
|
4619
4751
|
export { InputEmojiWithRef as default };
|
4620
4752
|
//# sourceMappingURL=index.es.js.map
|