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.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); // Right to left
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 === focusNode) {
1158
- anchorNode = lastRange.endContainer;
1159
- anchorOffset = lastRange.endOffset;
1160
- focusOffset = firstRange.startOffset;
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
- // Left to right
1163
- anchorNode = firstRange.startContainer;
1164
- anchorOffset = firstRange.endOffset;
1165
- focusOffset = lastRange.startOffset;
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;