slate-react 0.140.0 → 0.140.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.
@@ -7331,6 +7331,9 @@
7331
7331
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7332
7332
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
7333
7333
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), true).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7334
+ var isTextDOMNode = function isTextDOMNode(node) {
7335
+ return isDOMNode(node) && node.nodeType === 3;
7336
+ };
7334
7337
  var isSameCaretPosition = function isSameCaretPosition(editor, a, b) {
7335
7338
  if (!slate.Range.isCollapsed(a) || !slate.Range.isCollapsed(b)) {
7336
7339
  return false;
@@ -7389,6 +7392,7 @@
7389
7392
  var pendingInputScroll = React.useRef(false);
7390
7393
  var pendingNavigationScroll = React.useRef(false);
7391
7394
  var deferredOperations = React.useRef([]);
7395
+ var lastNativeInsertion = React.useRef(null);
7392
7396
  var _useState3 = React.useState(),
7393
7397
  _useState4 = _slicedToArray(_useState3, 2),
7394
7398
  placeholderHeight = _useState4[0],
@@ -7743,6 +7747,7 @@
7743
7747
  return;
7744
7748
  }
7745
7749
  var _native = false;
7750
+ var nativePoint = null;
7746
7751
  if (type === 'insertText' && selection && slate.Range.isCollapsed(selection) &&
7747
7752
  // Only use native character insertion for single characters a-z or space for now.
7748
7753
  // Long-press events (hold a + press 4 = ä) to choose a special character otherwise
@@ -7752,14 +7757,14 @@
7752
7757
  // When there is an inline element, e.g. a link, and you select
7753
7758
  // right after it (the start of the next node).
7754
7759
  selection.anchor.offset !== 0) {
7755
- var _getSelection;
7756
7760
  _native = true;
7757
7761
  // Skip native if there are marks, as
7758
7762
  // `insertText` will insert a node, not just text.
7759
7763
  if (editor.marks) {
7760
7764
  _native = false;
7761
7765
  }
7762
- var domAnchor = (_getSelection = getSelection(ReactEditor.findDocumentOrShadowRoot(editor))) === null || _getSelection === void 0 ? void 0 : _getSelection.anchorNode;
7766
+ var domSelection = getSelection(ReactEditor.findDocumentOrShadowRoot(editor));
7767
+ var domAnchor = domSelection === null || domSelection === void 0 ? void 0 : domSelection.anchorNode;
7763
7768
  if (!isInSlateText(domAnchor)) {
7764
7769
  _native = false;
7765
7770
  }
@@ -7796,6 +7801,9 @@
7796
7801
  _native = false;
7797
7802
  }
7798
7803
  }
7804
+ if (_native && isTextDOMNode(node)) {
7805
+ nativePoint = domSelection !== null && domSelection !== void 0 && domSelection.isCollapsed && isTextDOMNode(domAnchor) ? [domAnchor, domSelection.anchorOffset] : [node, offset];
7806
+ }
7799
7807
  }
7800
7808
  }
7801
7809
  // COMPAT: For the deleting forward/backward input types we don't want
@@ -7822,6 +7830,9 @@
7822
7830
  EDITOR_TO_USER_SELECTION.set(editor, selectionRef);
7823
7831
  }
7824
7832
  }
7833
+ if (_native && isTextDOMNode(targetRange.startContainer)) {
7834
+ nativePoint = [targetRange.startContainer, targetRange.startOffset];
7835
+ }
7825
7836
  }
7826
7837
  }
7827
7838
  // Composition change types occur while a user is composing text and can't be
@@ -7830,6 +7841,7 @@
7830
7841
  return;
7831
7842
  }
7832
7843
  if (!_native) {
7844
+ lastNativeInsertion.current = null;
7833
7845
  event.preventDefault();
7834
7846
  }
7835
7847
  // COMPAT: If the selection is expanded, even if the command seems like
@@ -7947,6 +7959,24 @@
7947
7959
  // Only insertText operations use the native functionality, for now.
7948
7960
  // Potentially expand to single character deletes, as well.
7949
7961
  if (_native) {
7962
+ lastNativeInsertion.current = null;
7963
+ if (nativePoint && selection) {
7964
+ var _Editor$leaf = slate.Editor.leaf(editor, selection.anchor),
7965
+ _Editor$leaf2 = _slicedToArray(_Editor$leaf, 1),
7966
+ _node = _Editor$leaf2[0];
7967
+ var _nativePoint = nativePoint,
7968
+ _nativePoint2 = _slicedToArray(_nativePoint, 2),
7969
+ domNode = _nativePoint2[0],
7970
+ domOffset = _nativePoint2[1];
7971
+ lastNativeInsertion.current = {
7972
+ point: selection.anchor,
7973
+ text: _node.text,
7974
+ domNode: domNode,
7975
+ domOffset: domOffset,
7976
+ domText: domNode.data,
7977
+ "char": data
7978
+ };
7979
+ }
7950
7980
  deferredOperations.current.push(function () {
7951
7981
  return slate.Editor.insertText(editor, data);
7952
7982
  });
@@ -8208,6 +8238,24 @@
8208
8238
  _iterator.f();
8209
8239
  }
8210
8240
  deferredOperations.current = [];
8241
+ var nativeInsertion = lastNativeInsertion.current;
8242
+ lastNativeInsertion.current = null;
8243
+ if (nativeInsertion) {
8244
+ var point = nativeInsertion.point,
8245
+ _text3 = nativeInsertion.text,
8246
+ domNode = nativeInsertion.domNode,
8247
+ domOffset = nativeInsertion.domOffset,
8248
+ domText = nativeInsertion.domText,
8249
+ _char = nativeInsertion["char"];
8250
+ var node = slate.Node.getIf(editor, point.path);
8251
+ if (slate.Text.isText(node) && node.text === _text3 && domNode.isConnected && domNode.data === domText.slice(0, domOffset) + _char + domText.slice(domOffset)) {
8252
+ domNode.deleteData(domOffset, _char.length);
8253
+ if (editor.selection && slate.Range.isCollapsed(editor.selection) && slate.Point.equals(editor.selection.anchor, point)) {
8254
+ var _getSelection;
8255
+ (_getSelection = getSelection(ReactEditor.findDocumentOrShadowRoot(editor))) === null || _getSelection === void 0 || _getSelection.collapse(domNode, domOffset);
8256
+ }
8257
+ }
8258
+ }
8211
8259
  // COMPAT: Since `beforeinput` doesn't fully `preventDefault`,
8212
8260
  // there's a chance that content might be placed in the browser's undo stack.
8213
8261
  // This means undo can be triggered even when the div is not focused,