react-input-emoji 5.6.5 → 5.6.6
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 +86 -22
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +86 -22
- 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
|
}
|