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.
- package/dist/components/editable.d.ts.map +1 -1
- package/dist/hooks/use-composition-dom.d.ts +8 -0
- package/dist/hooks/use-composition-dom.d.ts.map +1 -0
- package/dist/index.es.js +94 -43
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +100 -45
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +102 -45
- package/dist/slate-react.min.js +1 -1
- package/package.json +3 -3
package/dist/slate-react.js
CHANGED
|
@@ -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();
|