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.js
CHANGED
@@ -689,35 +689,100 @@ function totalCharacters(_ref2) {
|
|
689
689
|
var emojisCount = (html.match(/<img/g) || []).length;
|
690
690
|
return textCount + emojisCount;
|
691
691
|
}
|
692
|
+
/**
|
693
|
+
*
|
694
|
+
* @param {HTMLDivElement} inputDiv
|
695
|
+
* @return {string}
|
696
|
+
*/
|
697
|
+
function removeHtmlExceptBr(inputDiv) {
|
698
|
+
var temp = inputDiv.innerHTML.replace(/<br\s*\/?>/gi, "[BR]"); // temporarily replace <br> with placeholder
|
699
|
+
var stripped = temp.replace(/<[^>]+>/g, ""); // strip all html tags
|
700
|
+
var _final = stripped.replace(/\[BR\]/gi, "</br>"); // replace placeholders with <br>
|
701
|
+
return _final;
|
702
|
+
}
|
692
703
|
|
693
704
|
/**
|
694
|
-
*
|
695
|
-
* @param {
|
705
|
+
*
|
706
|
+
* @param {*} range
|
707
|
+
* @returns
|
696
708
|
*/
|
697
|
-
function
|
698
|
-
var range;
|
699
|
-
var
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
selection.removeAllRanges();
|
707
|
-
selection.addRange(range);
|
709
|
+
function getSelectionStart$1(range) {
|
710
|
+
var node = range.startContainer;
|
711
|
+
var offset = range.startOffset;
|
712
|
+
|
713
|
+
// Handle cases where the selection start node is not a text node
|
714
|
+
if (node.nodeType !== Node.TEXT_NODE) {
|
715
|
+
while (node.nodeType !== Node.TEXT_NODE) {
|
716
|
+
node = node.nextSibling;
|
717
|
+
if (!node) break;
|
708
718
|
}
|
719
|
+
if (!node) {
|
720
|
+
node = range.commonAncestorContainer;
|
721
|
+
while (node.nodeType !== Node.TEXT_NODE) {
|
722
|
+
node = node.firstChild;
|
723
|
+
}
|
724
|
+
}
|
725
|
+
offset = 0;
|
709
726
|
}
|
727
|
+
return {
|
728
|
+
node: node,
|
729
|
+
offset: offset
|
730
|
+
};
|
710
731
|
}
|
732
|
+
|
711
733
|
/**
|
712
734
|
*
|
713
|
-
* @
|
714
|
-
* @return {string}
|
735
|
+
* @returns {Object} cursor
|
715
736
|
*/
|
716
|
-
function
|
717
|
-
var
|
718
|
-
var
|
719
|
-
var
|
720
|
-
return
|
737
|
+
function getCursor() {
|
738
|
+
var selection = window.getSelection();
|
739
|
+
var range = selection.getRangeAt(0);
|
740
|
+
var selectionStart = getSelectionStart$1(range);
|
741
|
+
return {
|
742
|
+
selection: selection,
|
743
|
+
range: range,
|
744
|
+
selectionStart: selectionStart
|
745
|
+
};
|
746
|
+
}
|
747
|
+
|
748
|
+
/**
|
749
|
+
*
|
750
|
+
*/
|
751
|
+
function addLineBreak() {
|
752
|
+
var _getCursor = getCursor(),
|
753
|
+
selection = _getCursor.selection,
|
754
|
+
range = _getCursor.range,
|
755
|
+
selectionStart = _getCursor.selectionStart;
|
756
|
+
|
757
|
+
// If cursor is at the end of the text content, add one more line break
|
758
|
+
if (selection.isCollapsed && selectionStart.offset === selectionStart.node.textContent.length) {
|
759
|
+
var br = document.createElement("br");
|
760
|
+
range.insertNode(br);
|
761
|
+
range.setStartAfter(br);
|
762
|
+
range.setEndAfter(br);
|
763
|
+
selection.removeAllRanges();
|
764
|
+
selection.addRange(range);
|
765
|
+
var br2 = document.createElement("br");
|
766
|
+
range.insertNode(br2);
|
767
|
+
range.setStartAfter(br2);
|
768
|
+
range.setEndAfter(br2);
|
769
|
+
selection.removeAllRanges();
|
770
|
+
selection.addRange(range);
|
771
|
+
} else {
|
772
|
+
var _br = document.createElement("br");
|
773
|
+
range.insertNode(_br);
|
774
|
+
range.setStartAfter(_br);
|
775
|
+
range.setEndAfter(_br);
|
776
|
+
selection.removeAllRanges();
|
777
|
+
selection.addRange(range);
|
778
|
+
// Set cursor position right before the first letter after the line break
|
779
|
+
if (selectionStart.node.nextSibling && selectionStart.node.nextSibling.nodeType === Node.TEXT_NODE) {
|
780
|
+
range.setStart(selectionStart.node.nextSibling, 1);
|
781
|
+
range.setEnd(selectionStart.node.nextSibling, 1);
|
782
|
+
}
|
783
|
+
selection.removeAllRanges();
|
784
|
+
selection.addRange(range);
|
785
|
+
}
|
721
786
|
}
|
722
787
|
|
723
788
|
// @ts-check
|
@@ -976,8 +1041,7 @@ var TextInput = function TextInput(_ref, ref) {
|
|
976
1041
|
if (event.key === "Enter" && (event.shiftKey === true || event.ctrlKey === true) && props.shouldReturn) {
|
977
1042
|
event.preventDefault();
|
978
1043
|
if (textInputRef.current) {
|
979
|
-
|
980
|
-
moveCaretToEnd(textInputRef);
|
1044
|
+
addLineBreak();
|
981
1045
|
return;
|
982
1046
|
}
|
983
1047
|
}
|