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.
@@ -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;AAYlC,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;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"}
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"}
@@ -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 (state.isComposing || !domSelection || !ReactEditor.isFocused(editor)) {
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 (!state.isComposing && !state.isUpdatingSelection && !state.isDraggingInternally) {
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
- state.isComposing && setIsComposing(false);
2555
- state.isComposing = false;
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 (!state.isComposing) {
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
- state.isComposing && setIsComposing(false);
2809
- state.isComposing = false; // COMPAT: In Chrome, `beforeinput` events for compositions
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
- !state.isComposing && setIsComposing(true);
2840
- state.isComposing = true;
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) && !isEventHandled(event, attributes.onKeyDown) && !state.isComposing) {
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 (IS_COMPOSING.get(_this.editor) || IS_ON_COMPOSITION_END.get(_this.editor)) {
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;