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.js
CHANGED
|
@@ -1152,17 +1152,57 @@ var ReactEditor = {
|
|
|
1152
1152
|
focusNode = domRange.focusNode; // Focus node works fine
|
|
1153
1153
|
|
|
1154
1154
|
var firstRange = domRange.getRangeAt(0);
|
|
1155
|
-
var lastRange = domRange.getRangeAt(domRange.rangeCount - 1); //
|
|
1155
|
+
var lastRange = domRange.getRangeAt(domRange.rangeCount - 1); // Here we are in the contenteditable mode of a table in firefox
|
|
1156
1156
|
|
|
1157
|
-
if (firstRange.startContainer
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1157
|
+
if (focusNode instanceof HTMLTableRowElement && firstRange.startContainer instanceof HTMLTableRowElement && lastRange.startContainer instanceof HTMLTableRowElement) {
|
|
1158
|
+
// HTMLElement, becouse Element is a slate element
|
|
1159
|
+
var getLastChildren = function getLastChildren(element) {
|
|
1160
|
+
if (element.childElementCount > 0) {
|
|
1161
|
+
return getLastChildren(element.children[0]);
|
|
1162
|
+
} else {
|
|
1163
|
+
return element;
|
|
1164
|
+
}
|
|
1165
|
+
};
|
|
1166
|
+
|
|
1167
|
+
var firstNodeRow = firstRange.startContainer;
|
|
1168
|
+
var lastNodeRow = lastRange.startContainer; // This should never fail as "The HTMLElement interface represents any HTML element."
|
|
1169
|
+
|
|
1170
|
+
var firstNode = getLastChildren(firstNodeRow.children[firstRange.startOffset]);
|
|
1171
|
+
var lastNode = getLastChildren(lastNodeRow.children[lastRange.startOffset]); // Zero, as we allways take the right one as the anchor point
|
|
1172
|
+
|
|
1173
|
+
focusOffset = 0;
|
|
1174
|
+
|
|
1175
|
+
if (lastNode.childNodes.length > 0) {
|
|
1176
|
+
anchorNode = lastNode.childNodes[0];
|
|
1177
|
+
} else {
|
|
1178
|
+
anchorNode = lastNode;
|
|
1179
|
+
}
|
|
1180
|
+
|
|
1181
|
+
if (firstNode.childNodes.length > 0) {
|
|
1182
|
+
focusNode = firstNode.childNodes[0];
|
|
1183
|
+
} else {
|
|
1184
|
+
focusNode = firstNode;
|
|
1185
|
+
}
|
|
1186
|
+
|
|
1187
|
+
if (lastNode instanceof HTMLElement) {
|
|
1188
|
+
anchorOffset = lastNode.innerHTML.length;
|
|
1189
|
+
} else {
|
|
1190
|
+
// Fallback option
|
|
1191
|
+
anchorOffset = 0;
|
|
1192
|
+
}
|
|
1161
1193
|
} else {
|
|
1162
|
-
//
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1194
|
+
// This is the read only mode of a firefox table
|
|
1195
|
+
// Right to left
|
|
1196
|
+
if (firstRange.startContainer === focusNode) {
|
|
1197
|
+
anchorNode = lastRange.endContainer;
|
|
1198
|
+
anchorOffset = lastRange.endOffset;
|
|
1199
|
+
focusOffset = firstRange.startOffset;
|
|
1200
|
+
} else {
|
|
1201
|
+
// Left to right
|
|
1202
|
+
anchorNode = firstRange.startContainer;
|
|
1203
|
+
anchorOffset = firstRange.endOffset;
|
|
1204
|
+
focusOffset = lastRange.startOffset;
|
|
1205
|
+
}
|
|
1166
1206
|
}
|
|
1167
1207
|
} else {
|
|
1168
1208
|
anchorNode = domRange.anchorNode;
|