slate-react 0.98.0 → 0.98.1
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 +49 -9
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +49 -9
- package/dist/index.js.map +1 -1
- package/dist/plugin/react-editor.d.ts.map +1 -1
- package/dist/slate-react.js +49 -9
- package/dist/slate-react.min.js +1 -1
- package/package.json +1 -1
package/dist/index.es.js
CHANGED
|
@@ -896,17 +896,57 @@ var ReactEditor = {
|
|
|
896
896
|
focusNode = domRange.focusNode; // Focus node works fine
|
|
897
897
|
|
|
898
898
|
var firstRange = domRange.getRangeAt(0);
|
|
899
|
-
var lastRange = domRange.getRangeAt(domRange.rangeCount - 1); //
|
|
899
|
+
var lastRange = domRange.getRangeAt(domRange.rangeCount - 1); // Here we are in the contenteditable mode of a table in firefox
|
|
900
900
|
|
|
901
|
-
if (firstRange.startContainer
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
901
|
+
if (focusNode instanceof HTMLTableRowElement && firstRange.startContainer instanceof HTMLTableRowElement && lastRange.startContainer instanceof HTMLTableRowElement) {
|
|
902
|
+
// HTMLElement, becouse Element is a slate element
|
|
903
|
+
function getLastChildren(element) {
|
|
904
|
+
if (element.childElementCount > 0) {
|
|
905
|
+
return getLastChildren(element.children[0]);
|
|
906
|
+
} else {
|
|
907
|
+
return element;
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
var firstNodeRow = firstRange.startContainer;
|
|
912
|
+
var lastNodeRow = lastRange.startContainer; // This should never fail as "The HTMLElement interface represents any HTML element."
|
|
913
|
+
|
|
914
|
+
var firstNode = getLastChildren(firstNodeRow.children[firstRange.startOffset]);
|
|
915
|
+
var lastNode = getLastChildren(lastNodeRow.children[lastRange.startOffset]); // Zero, as we allways take the right one as the anchor point
|
|
916
|
+
|
|
917
|
+
focusOffset = 0;
|
|
918
|
+
|
|
919
|
+
if (lastNode.childNodes.length > 0) {
|
|
920
|
+
anchorNode = lastNode.childNodes[0];
|
|
921
|
+
} else {
|
|
922
|
+
anchorNode = lastNode;
|
|
923
|
+
}
|
|
924
|
+
|
|
925
|
+
if (firstNode.childNodes.length > 0) {
|
|
926
|
+
focusNode = firstNode.childNodes[0];
|
|
927
|
+
} else {
|
|
928
|
+
focusNode = firstNode;
|
|
929
|
+
}
|
|
930
|
+
|
|
931
|
+
if (lastNode instanceof HTMLElement) {
|
|
932
|
+
anchorOffset = lastNode.innerHTML.length;
|
|
933
|
+
} else {
|
|
934
|
+
// Fallback option
|
|
935
|
+
anchorOffset = 0;
|
|
936
|
+
}
|
|
905
937
|
} else {
|
|
906
|
-
//
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
938
|
+
// This is the read only mode of a firefox table
|
|
939
|
+
// Right to left
|
|
940
|
+
if (firstRange.startContainer === focusNode) {
|
|
941
|
+
anchorNode = lastRange.endContainer;
|
|
942
|
+
anchorOffset = lastRange.endOffset;
|
|
943
|
+
focusOffset = firstRange.startOffset;
|
|
944
|
+
} else {
|
|
945
|
+
// Left to right
|
|
946
|
+
anchorNode = firstRange.startContainer;
|
|
947
|
+
anchorOffset = firstRange.endOffset;
|
|
948
|
+
focusOffset = lastRange.startOffset;
|
|
949
|
+
}
|
|
910
950
|
}
|
|
911
951
|
} else {
|
|
912
952
|
anchorNode = domRange.anchorNode;
|