slate-react 0.133.0 → 0.133.2-20261010231908

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.
@@ -2672,6 +2672,8 @@
2672
2672
  slate.Transforms.delete(e, {
2673
2673
  at: currentLineRange
2674
2674
  });
2675
+ } else {
2676
+ deleteBackward('character');
2675
2677
  }
2676
2678
  }
2677
2679
  }
@@ -36810,6 +36812,93 @@
36810
36812
  };
36811
36813
  }
36812
36814
 
36815
+ var createRestoreDomManager = function createRestoreDomManager(editor, receivedUserInput) {
36816
+ var bufferedMutations = [];
36817
+ var clear = function clear() {
36818
+ bufferedMutations = [];
36819
+ };
36820
+ var registerMutations = function registerMutations(mutations) {
36821
+ var _bufferedMutations;
36822
+ if (!receivedUserInput.current) {
36823
+ return;
36824
+ }
36825
+ var trackedMutations = mutations.filter(function (mutation) {
36826
+ return isTrackedMutation(editor, mutation, mutations);
36827
+ });
36828
+ (_bufferedMutations = bufferedMutations).push.apply(_bufferedMutations, _toConsumableArray(trackedMutations));
36829
+ };
36830
+ function restoreDOM() {
36831
+ if (bufferedMutations.length > 0) {
36832
+ bufferedMutations.reverse().forEach(function (mutation) {
36833
+ if (mutation.type === 'characterData') {
36834
+ // We don't want to restore the DOM for characterData mutations
36835
+ // because this interrupts the composition.
36836
+ return;
36837
+ }
36838
+ mutation.removedNodes.forEach(function (node) {
36839
+ mutation.target.insertBefore(node, mutation.nextSibling);
36840
+ });
36841
+ mutation.addedNodes.forEach(function (node) {
36842
+ mutation.target.removeChild(node);
36843
+ });
36844
+ });
36845
+ // Clear buffered mutations to ensure we don't undo them twice
36846
+ clear();
36847
+ }
36848
+ }
36849
+ return {
36850
+ registerMutations: registerMutations,
36851
+ restoreDOM: restoreDOM,
36852
+ clear: clear
36853
+ };
36854
+ };
36855
+
36856
+ var useCompositionDOM = function useCompositionDOM(editor) {
36857
+ var compositionDOM = React.useMemo(function () {
36858
+ var manager = createRestoreDomManager(editor, {
36859
+ current: true
36860
+ });
36861
+ var observer = null;
36862
+ var clear = function clear() {
36863
+ var _observer;
36864
+ (_observer = observer) === null || _observer === void 0 || _observer.disconnect();
36865
+ observer = null;
36866
+ manager.clear();
36867
+ };
36868
+ var track = function track(text) {
36869
+ if (!observer) {
36870
+ if (!(text !== null && text !== void 0 && text.includes('\n'))) return;
36871
+ observer = new MutationObserver(manager.registerMutations);
36872
+ }
36873
+ observer.observe(ReactEditor.toDOMNode(editor, editor), {
36874
+ childList: true,
36875
+ subtree: true
36876
+ });
36877
+ };
36878
+ var pause = function pause() {
36879
+ if (!observer) return;
36880
+ manager.registerMutations(observer.takeRecords());
36881
+ observer.disconnect();
36882
+ };
36883
+ var restore = function restore() {
36884
+ pause();
36885
+ manager.restoreDOM();
36886
+ };
36887
+ return {
36888
+ track: track,
36889
+ pause: pause,
36890
+ restore: restore,
36891
+ clear: clear
36892
+ };
36893
+ }, [editor]);
36894
+ React.useEffect(function () {
36895
+ return function () {
36896
+ return compositionDOM.clear();
36897
+ };
36898
+ }, [compositionDOM]);
36899
+ return compositionDOM;
36900
+ };
36901
+
36813
36902
  function _createForOfIteratorHelper$1(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: true } : { done: false, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = true, u = false; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = true, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
36814
36903
  function _unsupportedIterableToArray$1(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray$1(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0; } }
36815
36904
  function _arrayLikeToArray$1(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; }
@@ -36937,47 +37026,6 @@
36937
37026
 
36938
37027
  var _inherits = unwrapExports(inherits);
36939
37028
 
36940
- var createRestoreDomManager = function createRestoreDomManager(editor, receivedUserInput) {
36941
- var bufferedMutations = [];
36942
- var clear = function clear() {
36943
- bufferedMutations = [];
36944
- };
36945
- var registerMutations = function registerMutations(mutations) {
36946
- var _bufferedMutations;
36947
- if (!receivedUserInput.current) {
36948
- return;
36949
- }
36950
- var trackedMutations = mutations.filter(function (mutation) {
36951
- return isTrackedMutation(editor, mutation, mutations);
36952
- });
36953
- (_bufferedMutations = bufferedMutations).push.apply(_bufferedMutations, _toConsumableArray(trackedMutations));
36954
- };
36955
- function restoreDOM() {
36956
- if (bufferedMutations.length > 0) {
36957
- bufferedMutations.reverse().forEach(function (mutation) {
36958
- if (mutation.type === 'characterData') {
36959
- // We don't want to restore the DOM for characterData mutations
36960
- // because this interrupts the composition.
36961
- return;
36962
- }
36963
- mutation.removedNodes.forEach(function (node) {
36964
- mutation.target.insertBefore(node, mutation.nextSibling);
36965
- });
36966
- mutation.addedNodes.forEach(function (node) {
36967
- mutation.target.removeChild(node);
36968
- });
36969
- });
36970
- // Clear buffered mutations to ensure we don't undo them twice
36971
- clear();
36972
- }
36973
- }
36974
- return {
36975
- registerMutations: registerMutations,
36976
- restoreDOM: restoreDOM,
36977
- clear: clear
36978
- };
36979
- };
36980
-
36981
37029
  function _callSuper(t, o, e) { return o = _getPrototypeOf(o), _possibleConstructorReturn(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], _getPrototypeOf(t).constructor) : o.apply(t, e)); }
36982
37030
  function _isNativeReflectConstruct() { try { var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); } catch (t) {} return (_isNativeReflectConstruct = function _isNativeReflectConstruct() { return !!t; })(); }
36983
37031
  var MUTATION_OBSERVER_CONFIG = {
@@ -37137,6 +37185,7 @@
37137
37185
  placeholderHeight = _useState4[0],
37138
37186
  setPlaceholderHeight = _useState4[1];
37139
37187
  var processing = React.useRef(false);
37188
+ var compositionDOM = useCompositionDOM(editor);
37140
37189
  var _useTrackUserInput = useTrackUserInput(),
37141
37190
  onUserInput = _useTrackUserInput.onUserInput,
37142
37191
  receivedUserInput = _useTrackUserInput.receivedUserInput;
@@ -37458,6 +37507,9 @@
37458
37507
  // COMPAT: use composition change events as a hint to where we should insert
37459
37508
  // composition text if we aren't composing to work around https://github.com/ianstormtaylor/slate/issues/5038
37460
37509
  if (isCompositionChange && ReactEditor.isComposing(editor)) {
37510
+ if (IS_CHROME) {
37511
+ compositionDOM.track(event.data);
37512
+ }
37461
37513
  return;
37462
37514
  }
37463
37515
  var _native = false;
@@ -37682,7 +37734,7 @@
37682
37734
  slate.Transforms.select(editor, toRestore);
37683
37735
  }
37684
37736
  }
37685
- }, [editor, onDOMSelectionChange, onUserInput, propsOnDOMBeforeInput, readOnly, scheduleOnDOMSelectionChange]);
37737
+ }, [editor, onDOMSelectionChange, onUserInput, propsOnDOMBeforeInput, compositionDOM, readOnly, scheduleOnDOMSelectionChange]);
37686
37738
  var callbackRef = React.useCallback(function (node) {
37687
37739
  if (node == null) {
37688
37740
  onDOMSelectionChange.cancel();
@@ -37877,6 +37929,7 @@
37877
37929
  }
37878
37930
  }, [attributes.onBeforeInput, editor, readOnly]),
37879
37931
  onInput: React.useCallback(function (event) {
37932
+ compositionDOM.pause();
37880
37933
  if (isEventHandled(event, attributes.onInput)) {
37881
37934
  return;
37882
37935
  }
@@ -37908,7 +37961,7 @@
37908
37961
  if (!ReactEditor.isFocused(editor)) {
37909
37962
  handleNativeHistoryEvents(editor, event.nativeEvent);
37910
37963
  }
37911
- }, [attributes.onInput, editor]),
37964
+ }, [attributes.onInput, editor, compositionDOM]),
37912
37965
  onBlur: React.useCallback(function (event) {
37913
37966
  if (readOnly || state.isUpdatingSelection || !ReactEditor.hasSelectableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {
37914
37967
  return;
@@ -38019,6 +38072,7 @@
38019
38072
  }
38020
38073
  (_androidInputManagerR3 = androidInputManagerRef.current) === null || _androidInputManagerR3 === void 0 || _androidInputManagerR3.handleCompositionEnd(event);
38021
38074
  if (isEventHandled(event, attributes.onCompositionEnd) || IS_ANDROID) {
38075
+ compositionDOM.clear();
38022
38076
  return;
38023
38077
  }
38024
38078
  // COMPAT: In Chrome, `beforeinput` events for compositions
@@ -38033,6 +38087,7 @@
38033
38087
  EDITOR_TO_USER_MARKS.set(editor, editor.marks);
38034
38088
  editor.marks = placeholderMarks;
38035
38089
  }
38090
+ compositionDOM.restore();
38036
38091
  slate.Editor.insertText(editor, event.data);
38037
38092
  var userMarks = EDITOR_TO_USER_MARKS.get(editor);
38038
38093
  EDITOR_TO_USER_MARKS["delete"](editor);
@@ -38040,8 +38095,9 @@
38040
38095
  editor.marks = userMarks;
38041
38096
  }
38042
38097
  }
38098
+ compositionDOM.clear();
38043
38099
  }
38044
- }, [attributes.onCompositionEnd, editor]),
38100
+ }, [attributes.onCompositionEnd, editor, compositionDOM]),
38045
38101
  onCompositionUpdate: React.useCallback(function (event) {
38046
38102
  if (ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate) && !isDOMEventTargetInput(event)) {
38047
38103
  if (!ReactEditor.isComposing(editor)) {
@@ -38060,6 +38116,7 @@
38060
38116
  if (isEventHandled(event, attributes.onCompositionStart) || IS_ANDROID) {
38061
38117
  return;
38062
38118
  }
38119
+ compositionDOM.clear();
38063
38120
  setIsComposing(true);
38064
38121
  var selection = editor.selection;
38065
38122
  if (selection && slate.Range.isExpanded(selection)) {
@@ -38067,7 +38124,7 @@
38067
38124
  return;
38068
38125
  }
38069
38126
  }
38070
- }, [attributes.onCompositionStart, editor]),
38127
+ }, [attributes.onCompositionStart, editor, compositionDOM]),
38071
38128
  onCopy: React.useCallback(function (event) {
38072
38129
  if (ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy) && !isDOMEventTargetInput(event)) {
38073
38130
  event.preventDefault();