slate-react 0.77.4 → 0.79.0-20224219174
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/android/android-input-manager.d.ts.map +1 -1
- package/dist/components/editable.d.ts.map +1 -1
- package/dist/index.es.js +38 -13
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +38 -13
- package/dist/index.js.map +1 -1
- package/dist/plugin/react-editor.d.ts +4 -0
- package/dist/plugin/react-editor.d.ts.map +1 -1
- package/dist/slate-react.js +38 -13
- package/dist/slate-react.min.js +1 -1
- package/package.json +2 -2
|
@@ -12,6 +12,10 @@ export interface ReactEditor extends BaseEditor {
|
|
|
12
12
|
hasRange: (editor: ReactEditor, range: Range) => boolean;
|
|
13
13
|
}
|
|
14
14
|
export declare const ReactEditor: {
|
|
15
|
+
/**
|
|
16
|
+
* Check if the user is currently composing inside the editor.
|
|
17
|
+
*/
|
|
18
|
+
isComposing(editor: ReactEditor): boolean;
|
|
15
19
|
/**
|
|
16
20
|
* Return the host window of the current editor.
|
|
17
21
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react-editor.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/plugin/react-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAc,UAAU,EAAE,MAAM,OAAO,CAAA;AAEhF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"react-editor.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/plugin/react-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAc,UAAU,EAAE,MAAM,OAAO,CAAA;AAEhF,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAalC,OAAO,EAEL,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,YAAY,EACZ,cAAc,EAKf,MAAM,cAAc,CAAA;AAGrB;;GAEG;AAEH,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC7C,UAAU,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAA;IACxC,kBAAkB,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAA;IACnD,cAAc,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAA;IAC/C,eAAe,EAAE,CACf,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,KAAK,KAClC,IAAI,CAAA;IACT,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,CAAA;CACzD;AAED,eAAO,MAAM,WAAW;IACtB;;OAEG;wBAEiB,WAAW,GAAG,OAAO;IAIzC;;OAEG;sBAEe,WAAW,GAAG,MAAM;IAQtC;;OAEG;oBAEa,WAAW,QAAQ,IAAI,GAAG,GAAG;IAW7C;;OAEG;qBAEc,WAAW,QAAQ,IAAI;IA8BxC;;OAEG;qCAE8B,WAAW,GAAG,QAAQ,GAAG,UAAU;IAcpE;;OAEG;sBAEe,WAAW,GAAG,OAAO;IAIvC;;OAEG;uBAEgB,WAAW,GAAG,OAAO;IAIxC;;OAEG;iBAEU,WAAW,GAAG,IAAI;IAU/B;;OAEG;kBAEW,WAAW,GAAG,IAAI;IAUhC;;OAEG;qBAEc,WAAW,GAAG,IAAI;IAenC;;OAEG;uBAGO,WAAW,UACX,OAAO,YACN;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAE,GAC9B,OAAO;IAoCV;;OAEG;uBAEgB,WAAW,QAAQ,YAAY,GAAG,IAAI;IAIzD;;OAEG;+BAEwB,WAAW,QAAQ,YAAY,GAAG,OAAO;IAIpE;;OAEG;2BAEoB,WAAW,QAAQ,YAAY,GAAG,OAAO;IAIhE;;OAEG;4BAGO,WAAW,QACb,YAAY,sDAEjB,IAAI;IAIP;;OAEG;sBAEe,WAAW,QAAQ,IAAI,GAAG,WAAW;IAevD;;OAEG;uBAEgB,WAAW,SAAS,KAAK;IAgD5C;;;;;;;OAOG;uBAEgB,WAAW,SAAS,KAAK,GAAG,QAAQ;IA8BvD;;OAEG;wBAEiB,WAAW,WAAW,OAAO,GAAG,IAAI;IAgBxD;;OAEG;2BAEoB,WAAW,SAAS,GAAG,GAAG,KAAK;IAiEtD;;OAEG;4CAGO,WAAW;;;;IAmHrB;;OAEG;8CAGO,WAAW,YACT,QAAQ,GAAG,cAAc,GAAG,YAAY;;;;;;qBAyFnC,WAAW,SAAS,KAAK,GAAG,OAAO;CAMrD,CAAA"}
|
package/dist/slate-react.js
CHANGED
|
@@ -2189,7 +2189,6 @@
|
|
|
2189
2189
|
|
|
2190
2190
|
var state = React.useMemo(function () {
|
|
2191
2191
|
return {
|
|
2192
|
-
isComposing: false,
|
|
2193
2192
|
hasInsertPrefixInCompositon: false,
|
|
2194
2193
|
isDraggingInternally: false,
|
|
2195
2194
|
isUpdatingSelection: false,
|
|
@@ -2215,7 +2214,7 @@
|
|
|
2215
2214
|
var root = ReactEditor.findDocumentOrShadowRoot(editor);
|
|
2216
2215
|
var domSelection = root.getSelection();
|
|
2217
2216
|
|
|
2218
|
-
if (
|
|
2217
|
+
if (ReactEditor.isComposing(editor) || !domSelection || !ReactEditor.isFocused(editor)) {
|
|
2219
2218
|
return;
|
|
2220
2219
|
}
|
|
2221
2220
|
|
|
@@ -2299,7 +2298,7 @@
|
|
|
2299
2298
|
// while a selection is being dragged.
|
|
2300
2299
|
|
|
2301
2300
|
var onDOMSelectionChange = React.useCallback(throttle_1(function () {
|
|
2302
|
-
if (!
|
|
2301
|
+
if (!ReactEditor.isComposing(editor) && !state.isUpdatingSelection && !state.isDraggingInternally) {
|
|
2303
2302
|
var root = ReactEditor.findDocumentOrShadowRoot(editor);
|
|
2304
2303
|
var activeElement = root.activeElement;
|
|
2305
2304
|
var el = ReactEditor.toDOMNode(editor, editor);
|
|
@@ -2551,8 +2550,10 @@
|
|
|
2551
2550
|
// then we will abort because we're still composing and the selection
|
|
2552
2551
|
// won't be updated properly.
|
|
2553
2552
|
// https://www.w3.org/TR/input-events-2/
|
|
2554
|
-
|
|
2555
|
-
|
|
2553
|
+
if (ReactEditor.isComposing(editor)) {
|
|
2554
|
+
setIsComposing(false);
|
|
2555
|
+
IS_COMPOSING.set(editor, false);
|
|
2556
|
+
}
|
|
2556
2557
|
} // use a weak comparison instead of 'instanceof' to allow
|
|
2557
2558
|
// programmatic access of paste events coming from external windows
|
|
2558
2559
|
// like cypress where cy.window does not work realibly
|
|
@@ -2672,7 +2673,7 @@
|
|
|
2672
2673
|
if (!HAS_BEFORE_INPUT_SUPPORT && !readOnly && !isEventHandled(event, attributes.onBeforeInput) && hasEditableTarget(editor, event.target)) {
|
|
2673
2674
|
event.preventDefault();
|
|
2674
2675
|
|
|
2675
|
-
if (!
|
|
2676
|
+
if (!ReactEditor.isComposing(editor)) {
|
|
2676
2677
|
var text = event.data;
|
|
2677
2678
|
slate.Editor.insertText(editor, text);
|
|
2678
2679
|
}
|
|
@@ -2805,12 +2806,15 @@
|
|
|
2805
2806
|
}, [readOnly, attributes.onClick]),
|
|
2806
2807
|
onCompositionEnd: React.useCallback(function (event) {
|
|
2807
2808
|
if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionEnd)) {
|
|
2808
|
-
|
|
2809
|
-
|
|
2809
|
+
if (ReactEditor.isComposing(editor)) {
|
|
2810
|
+
setIsComposing(false);
|
|
2811
|
+
IS_COMPOSING.set(editor, false);
|
|
2812
|
+
} // COMPAT: In Chrome, `beforeinput` events for compositions
|
|
2810
2813
|
// aren't correct and never fire the "insertFromComposition"
|
|
2811
2814
|
// type that we need. So instead, insert whenever a composition
|
|
2812
2815
|
// ends since it will already have been committed to the DOM.
|
|
2813
2816
|
|
|
2817
|
+
|
|
2814
2818
|
if (!IS_SAFARI && !IS_FIREFOX_LEGACY && !IS_IOS && !IS_QQBROWSER && !IS_WECHATBROWSER && !IS_UC_MOBILE && event.data) {
|
|
2815
2819
|
slate.Editor.insertText(editor, event.data);
|
|
2816
2820
|
}
|
|
@@ -2836,8 +2840,10 @@
|
|
|
2836
2840
|
}, [attributes.onCompositionEnd]),
|
|
2837
2841
|
onCompositionUpdate: React.useCallback(function (event) {
|
|
2838
2842
|
if (hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {
|
|
2839
|
-
!
|
|
2840
|
-
|
|
2843
|
+
if (!ReactEditor.isComposing(editor)) {
|
|
2844
|
+
setIsComposing(true);
|
|
2845
|
+
IS_COMPOSING.set(editor, true);
|
|
2846
|
+
}
|
|
2841
2847
|
}
|
|
2842
2848
|
}, [attributes.onCompositionUpdate]),
|
|
2843
2849
|
onCompositionStart: React.useCallback(function (event) {
|
|
@@ -2999,8 +3005,20 @@
|
|
|
2999
3005
|
}
|
|
3000
3006
|
}, [readOnly, attributes.onFocus]),
|
|
3001
3007
|
onKeyDown: React.useCallback(function (event) {
|
|
3002
|
-
if (!readOnly && hasEditableTarget(editor, event.target)
|
|
3003
|
-
var nativeEvent = event.nativeEvent;
|
|
3008
|
+
if (!readOnly && hasEditableTarget(editor, event.target)) {
|
|
3009
|
+
var nativeEvent = event.nativeEvent; // COMPAT: The composition end event isn't fired reliably in all browsers,
|
|
3010
|
+
// so we sometimes might end up stuck in a composition state even though we
|
|
3011
|
+
// aren't composing any more.
|
|
3012
|
+
|
|
3013
|
+
if (ReactEditor.isComposing(editor) && nativeEvent.isComposing === false) {
|
|
3014
|
+
IS_COMPOSING.set(editor, false);
|
|
3015
|
+
setIsComposing(false);
|
|
3016
|
+
}
|
|
3017
|
+
|
|
3018
|
+
if (isEventHandled(event, attributes.onKeyDown) || ReactEditor.isComposing(editor)) {
|
|
3019
|
+
return;
|
|
3020
|
+
}
|
|
3021
|
+
|
|
3004
3022
|
var selection = editor.selection;
|
|
3005
3023
|
var element = editor.children[selection !== null ? selection.focus.path[0] : 0];
|
|
3006
3024
|
var isRTL = direction_1(slate.Node.string(element)) === 'rtl'; // COMPAT: Since we prevent the default behavior on
|
|
@@ -3642,6 +3660,13 @@
|
|
|
3642
3660
|
};
|
|
3643
3661
|
|
|
3644
3662
|
var ReactEditor = {
|
|
3663
|
+
/**
|
|
3664
|
+
* Check if the user is currently composing inside the editor.
|
|
3665
|
+
*/
|
|
3666
|
+
isComposing: function isComposing(editor) {
|
|
3667
|
+
return !!IS_COMPOSING.get(editor);
|
|
3668
|
+
},
|
|
3669
|
+
|
|
3645
3670
|
/**
|
|
3646
3671
|
* Return the host window of the current editor.
|
|
3647
3672
|
*/
|
|
@@ -4415,7 +4440,7 @@
|
|
|
4415
4440
|
var selection = _this.editor.selection; // If it is in composing or after `onCompositionend`, set `EDITOR_ON_COMPOSITION_TEXT` and return.
|
|
4416
4441
|
// Text will be inserted on compositionend event.
|
|
4417
4442
|
|
|
4418
|
-
if (
|
|
4443
|
+
if (ReactEditor.isComposing(_this.editor) || IS_ON_COMPOSITION_END.get(_this.editor)) {
|
|
4419
4444
|
EDITOR_ON_COMPOSITION_TEXT.set(_this.editor, insertedText);
|
|
4420
4445
|
IS_ON_COMPOSITION_END.set(_this.editor, false);
|
|
4421
4446
|
return;
|