slate-react 0.147.1 → 0.147.2
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-native-format-dom.d.ts +7 -0
- package/dist/hooks/use-native-format-dom.d.ts.map +1 -0
- package/dist/index.es.js +81 -1
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +82 -1
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +82 -1
- package/dist/slate-react.min.js +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -3078,6 +3078,75 @@ var useCompositionDOM = function useCompositionDOM(editor) {
|
|
|
3078
3078
|
return compositionDOM;
|
|
3079
3079
|
};
|
|
3080
3080
|
|
|
3081
|
+
var revertMutation = function revertMutation(mutation) {
|
|
3082
|
+
var target = mutation.target;
|
|
3083
|
+
if (mutation.type === 'characterData') {
|
|
3084
|
+
target.nodeValue = mutation.oldValue;
|
|
3085
|
+
} else if (mutation.type === 'attributes' && slateDom.isDOMElement(target)) {
|
|
3086
|
+
var name = mutation.attributeName;
|
|
3087
|
+
if (mutation.oldValue === null) {
|
|
3088
|
+
target.removeAttribute(name);
|
|
3089
|
+
} else {
|
|
3090
|
+
target.setAttribute(name, mutation.oldValue);
|
|
3091
|
+
}
|
|
3092
|
+
} else {
|
|
3093
|
+
mutation.addedNodes.forEach(function (node) {
|
|
3094
|
+
var _node$parentNode;
|
|
3095
|
+
return (_node$parentNode = node.parentNode) === null || _node$parentNode === void 0 ? void 0 : _node$parentNode.removeChild(node);
|
|
3096
|
+
});
|
|
3097
|
+
mutation.removedNodes.forEach(function (node) {
|
|
3098
|
+
return target.insertBefore(node, mutation.nextSibling);
|
|
3099
|
+
});
|
|
3100
|
+
}
|
|
3101
|
+
};
|
|
3102
|
+
var useNativeFormatDOM = function useNativeFormatDOM(editor) {
|
|
3103
|
+
var nativeFormatDOM = React.useMemo(function () {
|
|
3104
|
+
var delivered = [];
|
|
3105
|
+
var observer = null;
|
|
3106
|
+
var deliver = function deliver(mutations) {
|
|
3107
|
+
var _delivered;
|
|
3108
|
+
if (delivered.length === 0) {
|
|
3109
|
+
setTimeout(function () {
|
|
3110
|
+
delivered = [];
|
|
3111
|
+
});
|
|
3112
|
+
}
|
|
3113
|
+
(_delivered = delivered).push.apply(_delivered, _toConsumableArray(mutations));
|
|
3114
|
+
};
|
|
3115
|
+
var observe = function observe() {
|
|
3116
|
+
observer !== null && observer !== void 0 ? observer : observer = new MutationObserver(deliver);
|
|
3117
|
+
observer.observe(ReactEditor.toDOMNode(editor, editor), {
|
|
3118
|
+
attributes: true,
|
|
3119
|
+
attributeOldValue: true,
|
|
3120
|
+
characterData: true,
|
|
3121
|
+
characterDataOldValue: true,
|
|
3122
|
+
childList: true,
|
|
3123
|
+
subtree: true
|
|
3124
|
+
});
|
|
3125
|
+
};
|
|
3126
|
+
var disconnect = function disconnect() {
|
|
3127
|
+
var _observer;
|
|
3128
|
+
(_observer = observer) === null || _observer === void 0 || _observer.disconnect();
|
|
3129
|
+
delivered = [];
|
|
3130
|
+
};
|
|
3131
|
+
var revert = function revert() {
|
|
3132
|
+
var _observer$takeRecords, _observer2;
|
|
3133
|
+
var mutations = [].concat(_toConsumableArray(delivered), _toConsumableArray((_observer$takeRecords = (_observer2 = observer) === null || _observer2 === void 0 ? void 0 : _observer2.takeRecords()) !== null && _observer$takeRecords !== void 0 ? _observer$takeRecords : []));
|
|
3134
|
+
delivered = [];
|
|
3135
|
+
mutations.reverse().forEach(revertMutation);
|
|
3136
|
+
};
|
|
3137
|
+
return {
|
|
3138
|
+
observe: observe,
|
|
3139
|
+
disconnect: disconnect,
|
|
3140
|
+
revert: revert
|
|
3141
|
+
};
|
|
3142
|
+
}, [editor]);
|
|
3143
|
+
React.useEffect(function () {
|
|
3144
|
+
nativeFormatDOM.observe();
|
|
3145
|
+
return nativeFormatDOM.disconnect;
|
|
3146
|
+
}, [nativeFormatDOM]);
|
|
3147
|
+
return nativeFormatDOM;
|
|
3148
|
+
};
|
|
3149
|
+
|
|
3081
3150
|
var caretTop = function caretTop(editor, point) {
|
|
3082
3151
|
var range = ReactEditor.resolveDOMRange(editor, {
|
|
3083
3152
|
anchor: point,
|
|
@@ -3472,6 +3541,7 @@ var Editable = /*#__PURE__*/React.forwardRef(function (props, forwardedRef) {
|
|
|
3472
3541
|
setPlaceholderHeight = _useState4[1];
|
|
3473
3542
|
var processing = React.useRef(false);
|
|
3474
3543
|
var compositionDOM = useCompositionDOM(editor);
|
|
3544
|
+
var nativeFormatDOM = useNativeFormatDOM(editor);
|
|
3475
3545
|
var deleteOnCompositionEndRef = React.useRef(false);
|
|
3476
3546
|
var _useTrackUserInput = useTrackUserInput(),
|
|
3477
3547
|
onUserInput = _useTrackUserInput.onUserInput,
|
|
@@ -4278,6 +4348,7 @@ var Editable = /*#__PURE__*/React.forwardRef(function (props, forwardedRef) {
|
|
|
4278
4348
|
}
|
|
4279
4349
|
}, [attributes.onBeforeInput, editor, readOnly]),
|
|
4280
4350
|
onInput: React.useCallback(function (event) {
|
|
4351
|
+
var _event$nativeEvent$in;
|
|
4281
4352
|
if (readOnly) {
|
|
4282
4353
|
isEventHandled(event, attributes.onInput);
|
|
4283
4354
|
return;
|
|
@@ -4293,6 +4364,16 @@ var Editable = /*#__PURE__*/React.forwardRef(function (props, forwardedRef) {
|
|
|
4293
4364
|
androidInputManagerRef.current.handleInput();
|
|
4294
4365
|
return;
|
|
4295
4366
|
}
|
|
4367
|
+
if ((_event$nativeEvent$in = event.nativeEvent.inputType) !== null && _event$nativeEvent$in !== void 0 && _event$nativeEvent$in.startsWith('format')) {
|
|
4368
|
+
var domSelection = slateDom.getSelection(ReactEditor.findDocumentOrShadowRoot(editor));
|
|
4369
|
+
var range = domSelection && ReactEditor.resolveSlateRange(editor, domSelection);
|
|
4370
|
+
nativeFormatDOM.revert();
|
|
4371
|
+
if (domSelection && range) {
|
|
4372
|
+
slate.Transforms.select(editor, range);
|
|
4373
|
+
restoreDomSelection(editor, domSelection, state);
|
|
4374
|
+
}
|
|
4375
|
+
return;
|
|
4376
|
+
}
|
|
4296
4377
|
// Flush native operations, as native events will have propogated
|
|
4297
4378
|
// and we can correctly compare DOM text values in components
|
|
4298
4379
|
// to stop rendering, so that browser functions like autocorrect
|
|
@@ -4335,7 +4416,7 @@ var Editable = /*#__PURE__*/React.forwardRef(function (props, forwardedRef) {
|
|
|
4335
4416
|
if (!ReactEditor.isFocused(editor)) {
|
|
4336
4417
|
handleNativeHistoryEvents(editor, event.nativeEvent);
|
|
4337
4418
|
}
|
|
4338
|
-
}, [readOnly, attributes.onInput, editor, compositionDOM]),
|
|
4419
|
+
}, [readOnly, attributes.onInput, editor, compositionDOM, nativeFormatDOM]),
|
|
4339
4420
|
onBlur: React.useCallback(function (event) {
|
|
4340
4421
|
if (readOnly) {
|
|
4341
4422
|
isEventHandled(event, attributes.onBlur);
|