slate-react 0.91.12-2023217153619 → 0.92.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/editable.tsx"],"names":[],"mappings":"AAGA,OAAO,KAON,MAAM,OAAO,CAAA;AAEd,OAAO,EAEL,OAAO,EAEP,SAAS,EAET,KAAK,EACL,IAAI,EAEL,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAOpD,OAAO,EAGL,QAAQ,EAMT,MAAM,cAAc,CAAA;AAwCrB;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE;QACV,iBAAiB,EAAE,SAAS,CAAA;QAC5B,mBAAmB,CAAC,EAAE,IAAI,CAAA;QAC1B,iBAAiB,CAAC,EAAE,IAAI,CAAA;QACxB,GAAG,CAAC,EAAE,KAAK,CAAA;QACX,GAAG,EAAE,GAAG,CAAA;KACT,CAAA;CACF;AAED;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE;QACV,iBAAiB,EAAE,IAAI,CAAA;KACxB,CAAA;CACF;AAED;;GAEG;AAEH,oBAAY,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,EAAE,CAAA;IACxC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,GAAG,CAAC,OAAO,CAAA;IACpD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,GAAG,CAAC,OAAO,CAAA;IAClE,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC3E,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,GAAG,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAEhD;;GAEG;AAEH,eAAO,MAAM,QAAQ,UAAW,aAAa,gBAk/C5C,CAAA;AAED;;GAEG;AACH,oBAAY,sBAAsB,GAAG;IACnC,QAAQ,EAAE,GAAG,CAAA;IACb,UAAU,EAAE;QACV,wBAAwB,EAAE,OAAO,CAAA;QACjC,GAAG,CAAC,EAAE,KAAK,CAAA;QACX,eAAe,EAAE,OAAO,CAAA;QACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACzB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,kBAAkB,8BAG5B,sBAAsB,gBAOxB,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,EAAa,CAAA;AA4BtE;;GAEG;AAEH,eAAO,MAAM,cAAc,gHAIO,IAAI,GAAG,OAAO,yBAc/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,yFAUjC,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,iBAAiB,uDAEJ,IAAI,GAAG,OAAO,yBAevC,CAAA"}
1
+ {"version":3,"file":"editable.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/components/editable.tsx"],"names":[],"mappings":"AAGA,OAAO,KAON,MAAM,OAAO,CAAA;AAEd,OAAO,EAEL,OAAO,EAEP,SAAS,EAET,KAAK,EACL,IAAI,EAEL,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAOpD,OAAO,EAGL,QAAQ,EAMT,MAAM,cAAc,CAAA;AAyCrB;;GAEG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,GAAG,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE;QACV,iBAAiB,EAAE,SAAS,CAAA;QAC5B,mBAAmB,CAAC,EAAE,IAAI,CAAA;QAC1B,iBAAiB,CAAC,EAAE,IAAI,CAAA;QACxB,GAAG,CAAC,EAAE,KAAK,CAAA;QACX,GAAG,EAAE,GAAG,CAAA;KACT,CAAA;CACF;AAED;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,GAAG,CAAA;IACb,IAAI,EAAE,IAAI,CAAA;IACV,IAAI,EAAE,IAAI,CAAA;IACV,UAAU,EAAE;QACV,iBAAiB,EAAE,IAAI,CAAA;KACxB,CAAA;CACF;AAED;;GAEG;AAEH,oBAAY,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,EAAE,CAAA;IACxC,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAA;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,GAAG,CAAC,OAAO,CAAA;IAC1D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,GAAG,CAAC,OAAO,CAAA;IACpD,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,GAAG,CAAC,OAAO,CAAA;IAClE,uBAAuB,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAA;IAC3E,EAAE,CAAC,EAAE,KAAK,CAAC,WAAW,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B,GAAG,KAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAA;AAEhD;;GAEG;AAEH,eAAO,MAAM,QAAQ,UAAW,aAAa,gBAohD5C,CAAA;AAED;;GAEG;AACH,oBAAY,sBAAsB,GAAG;IACnC,QAAQ,EAAE,GAAG,CAAA;IACb,UAAU,EAAE;QACV,wBAAwB,EAAE,OAAO,CAAA;QACjC,GAAG,CAAC,EAAE,KAAK,CAAA;QACX,eAAe,EAAE,OAAO,CAAA;QACxB,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;QACzB,KAAK,EAAE,KAAK,CAAC,aAAa,CAAA;KAC3B,CAAA;CACF,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,kBAAkB,8BAG5B,sBAAsB,gBAOxB,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,EAAa,CAAA;AA4BtE;;GAEG;AAEH,eAAO,MAAM,cAAc,gHAIO,IAAI,GAAG,OAAO,yBAc/C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,yFAUjC,CAAA;AAED;;GAEG;AAEH,eAAO,MAAM,iBAAiB,uDAEJ,IAAI,GAAG,OAAO,yBAevC,CAAA"}
@@ -3,6 +3,6 @@ import { CreateAndroidInputManagerOptions } from './android-input-manager';
3
3
  declare type UseAndroidInputManagerOptions = {
4
4
  node: RefObject<HTMLElement>;
5
5
  } & Omit<CreateAndroidInputManagerOptions, 'editor' | 'onUserInput' | 'receivedUserInput'>;
6
- export declare function useAndroidInputManager({ node, ...options }: UseAndroidInputManagerOptions): import("./android-input-manager").AndroidInputManager | null;
6
+ export declare const useAndroidInputManager: ({ node, ...options }: UseAndroidInputManagerOptions) => import("./android-input-manager").AndroidInputManager | null;
7
7
  export {};
8
8
  //# sourceMappingURL=use-android-input-manager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-android-input-manager.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/hooks/android-input-manager/use-android-input-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAI3C,OAAO,EAEL,gCAAgC,EACjC,MAAM,yBAAyB,CAAA;AAIhC,aAAK,6BAA6B,GAAG;IACnC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;CAC7B,GAAG,IAAI,CACN,gCAAgC,EAChC,QAAQ,GAAG,aAAa,GAAG,mBAAmB,CAC/C,CAAA;AAQD,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,GAAG,OAAO,EACX,EAAE,6BAA6B,gEA2B/B"}
1
+ {"version":3,"file":"use-android-input-manager.d.ts","sourceRoot":"","sources":["../../packages/slate-react/src/hooks/android-input-manager/use-android-input-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAA;AAI3C,OAAO,EAEL,gCAAgC,EACjC,MAAM,yBAAyB,CAAA;AAIhC,aAAK,6BAA6B,GAAG;IACnC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAA;CAC7B,GAAG,IAAI,CACN,gCAAgC,EAChC,QAAQ,GAAG,aAAa,GAAG,mBAAmB,CAC/C,CAAA;AAQD,eAAO,MAAM,sBAAsB,yBAER,6BAA6B,iEA2BnD,CAAA"}
@@ -21,7 +21,7 @@ export declare function useSlateSelector<T>(selector: (editor: Editor) => T, equ
21
21
  /**
22
22
  * Create selector context with editor updating on every editor change
23
23
  */
24
- export declare function getSelectorContext(editor: Editor): {
24
+ export declare function useSelectorContext(editor: Editor): {
25
25
  selectorContext: {
26
26
  getSlate: () => import("..").ReactEditor;
27
27
  addEventListener: (callback: EditorChangeHandler) => () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"use-slate-selector.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/hooks/use-slate-selector.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAO9B,aAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;AACnD;;GAEG;AAEH,eAAO,MAAM,oBAAoB;cACrB,MAAM,MAAM;iCACO,mBAAmB,KAAK,MAAM,IAAI;EACpD,CAAA;AAIb;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,EAC/B,UAAU,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAqB,KAuElD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;qCAed,mBAAmB;;uBARd,MAAM;EAiB7C"}
1
+ {"version":3,"file":"use-slate-selector.d.ts","sourceRoot":"","sources":["../packages/slate-react/src/hooks/use-slate-selector.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAO9B,aAAK,mBAAmB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;AACnD;;GAEG;AAEH,eAAO,MAAM,oBAAoB;cACrB,MAAM,MAAM;iCACO,mBAAmB,KAAK,MAAM,IAAI;EACpD,CAAA;AAIb;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,CAAC,EAC/B,UAAU,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAqB,KAuElD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM;;;qCAoBd,mBAAmB;;uBAZzC,MAAM;EAqBlB"}
package/dist/index.es.js CHANGED
@@ -1393,7 +1393,7 @@ var Leaf = props => {
1393
1393
  return () => {
1394
1394
  EDITOR_TO_PLACEHOLDER_ELEMENT.delete(editor);
1395
1395
  };
1396
- }, [placeholderRef, leaf]);
1396
+ }, [placeholderRef, leaf, editor]);
1397
1397
  var children = /*#__PURE__*/React.createElement(String, {
1398
1398
  isLast: isLast,
1399
1399
  leaf: leaf,
@@ -3176,7 +3176,7 @@ function useMutationObserver(node, callback, options) {
3176
3176
 
3177
3177
  mutationObserver.observe(node.current, options);
3178
3178
  return () => mutationObserver.disconnect();
3179
- }, []);
3179
+ }, [mutationObserver, node, options]);
3180
3180
  }
3181
3181
 
3182
3182
  var _excluded$2 = ["node"];
@@ -3189,7 +3189,7 @@ var MUTATION_OBSERVER_CONFIG = {
3189
3189
  childList: true,
3190
3190
  characterData: true
3191
3191
  };
3192
- function useAndroidInputManager(_ref) {
3192
+ var useAndroidInputManager = !IS_ANDROID ? () => null : _ref => {
3193
3193
  var {
3194
3194
  node
3195
3195
  } = _ref,
@@ -3212,7 +3212,7 @@ function useAndroidInputManager(_ref) {
3212
3212
  }
3213
3213
 
3214
3214
  return inputManager;
3215
- }
3215
+ };
3216
3216
 
3217
3217
  function useTrackUserInput() {
3218
3218
  var editor = useSlateStatic();
@@ -3229,7 +3229,7 @@ function useTrackUserInput() {
3229
3229
  animationFrameIdRef.current = window.requestAnimationFrame(() => {
3230
3230
  receivedUserInput.current = false;
3231
3231
  });
3232
- }, []);
3232
+ }, [editor]);
3233
3233
  useEffect(() => () => cancelAnimationFrame(animationFrameIdRef.current), []);
3234
3234
  return {
3235
3235
  receivedUserInput,
@@ -3297,13 +3297,23 @@ var Editable = props => {
3297
3297
  if (ref.current && autoFocus) {
3298
3298
  ref.current.focus();
3299
3299
  }
3300
- }, [autoFocus]); // Listen on the native `selectionchange` event to be able to update any time
3300
+ }, [autoFocus]);
3301
+ /**
3302
+ * The AndroidInputManager object has a cyclical dependency on onDOMSelectionChange
3303
+ *
3304
+ * It is defined as a reference to simplify hook dependencies and clarify that
3305
+ * it needs to be initialized.
3306
+ */
3307
+
3308
+ var androidInputManagerRef = useRef(); // Listen on the native `selectionchange` event to be able to update any time
3301
3309
  // the selection changes. This is required because React's `onSelect` is leaky
3302
3310
  // and non-standard so it doesn't fire until after a selection has been
3303
3311
  // released. This causes issues in situations where another change happens
3304
3312
  // while a selection is being dragged.
3305
3313
 
3306
- var onDOMSelectionChange = useCallback(throttle(() => {
3314
+ var onDOMSelectionChange = useMemo(() => throttle(() => {
3315
+ var androidInputManager = androidInputManagerRef.current;
3316
+
3307
3317
  if ((IS_ANDROID || !ReactEditor.isComposing(editor)) && (!state.isUpdatingSelection || androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.isFlushing()) && !state.isDraggingInternally) {
3308
3318
  var root = ReactEditor.findDocumentOrShadowRoot(editor);
3309
3319
  var {
@@ -3350,14 +3360,16 @@ var Editable = props => {
3350
3360
  Transforms.deselect(editor);
3351
3361
  }
3352
3362
  }
3353
- }, 100), [readOnly]);
3363
+ }, 100), [editor, readOnly, state]);
3354
3364
  var scheduleOnDOMSelectionChange = useMemo(() => debounce(onDOMSelectionChange, 0), [onDOMSelectionChange]);
3355
- var androidInputManager = useAndroidInputManager({
3365
+ androidInputManagerRef.current = useAndroidInputManager({
3356
3366
  node: ref,
3357
3367
  onDOMSelectionChange,
3358
3368
  scheduleOnDOMSelectionChange
3359
3369
  });
3360
3370
  useIsomorphicLayoutEffect(() => {
3371
+ var _androidInputManagerR, _androidInputManagerR2;
3372
+
3361
3373
  // Update element-related weak maps with the DOM element ref.
3362
3374
  var window;
3363
3375
 
@@ -3377,7 +3389,7 @@ var Editable = props => {
3377
3389
  var root = ReactEditor.findDocumentOrShadowRoot(editor);
3378
3390
  var domSelection = root.getSelection();
3379
3391
 
3380
- if (!domSelection || !ReactEditor.isFocused(editor) || androidInputManager !== null && androidInputManager !== void 0 && androidInputManager.hasPendingAction()) {
3392
+ if (!domSelection || !ReactEditor.isFocused(editor) || (_androidInputManagerR = androidInputManagerRef.current) !== null && _androidInputManagerR !== void 0 && _androidInputManagerR.hasPendingAction()) {
3381
3393
  return;
3382
3394
  }
3383
3395
 
@@ -3455,7 +3467,7 @@ var Editable = props => {
3455
3467
  };
3456
3468
 
3457
3469
  var newDomRange = setDomSelection();
3458
- var ensureSelection = (androidInputManager === null || androidInputManager === void 0 ? void 0 : androidInputManager.isFlushing()) === 'action';
3470
+ var ensureSelection = ((_androidInputManagerR2 = androidInputManagerRef.current) === null || _androidInputManagerR2 === void 0 ? void 0 : _androidInputManagerR2.isFlushing()) === 'action';
3459
3471
 
3460
3472
  if (!IS_ANDROID || !ensureSelection) {
3461
3473
  setTimeout(() => {
@@ -3516,8 +3528,8 @@ var Editable = props => {
3516
3528
  var _EDITOR_TO_USER_SELEC;
3517
3529
 
3518
3530
  // COMPAT: BeforeInput events aren't cancelable on android, so we have to handle them differently using the android input manager.
3519
- if (androidInputManager) {
3520
- return androidInputManager.handleDOMBeforeInput(event);
3531
+ if (androidInputManagerRef.current) {
3532
+ return androidInputManagerRef.current.handleDOMBeforeInput(event);
3521
3533
  } // Some IMEs/Chrome extensions like e.g. Grammarly set the selection immediately before
3522
3534
  // triggering a `beforeinput` expecting the change to be applied to the immediately before
3523
3535
  // set selection.
@@ -3772,7 +3784,7 @@ var Editable = props => {
3772
3784
  Transforms.select(editor, toRestore);
3773
3785
  }
3774
3786
  }
3775
- }, [readOnly, propsOnDOMBeforeInput]);
3787
+ }, [editor, onDOMSelectionChange, onUserInput, propsOnDOMBeforeInput, readOnly, scheduleOnDOMSelectionChange]);
3776
3788
  var callbackRef = useCallback(node => {
3777
3789
  if (node == null) {
3778
3790
  onDOMSelectionChange.cancel();
@@ -3796,7 +3808,7 @@ var Editable = props => {
3796
3808
  }
3797
3809
 
3798
3810
  ref.current = node;
3799
- }, [ref, onDOMBeforeInput, onDOMSelectionChange, scheduleOnDOMSelectionChange]); // Attach a native DOM event handler for `selectionchange`, because React's
3811
+ }, [onDOMSelectionChange, scheduleOnDOMSelectionChange, editor, onDOMBeforeInput]); // Attach a native DOM event handler for `selectionchange`, because React's
3800
3812
  // built-in `onSelect` handler doesn't fire for all selection changes. It's a
3801
3813
  // leaky polyfill that only fires on keypresses or clicks. Instead, we want to
3802
3814
  // fire for any change to the selection inside the editor. (2019/11/04)
@@ -3932,14 +3944,14 @@ var Editable = props => {
3932
3944
  Editor.insertText(editor, _text2);
3933
3945
  }
3934
3946
  }
3935
- }, [readOnly]),
3947
+ }, [attributes.onBeforeInput, editor, readOnly]),
3936
3948
  onInput: useCallback(event => {
3937
3949
  if (isEventHandled(event, attributes.onInput)) {
3938
3950
  return;
3939
3951
  }
3940
3952
 
3941
- if (androidInputManager) {
3942
- androidInputManager.handleInput();
3953
+ if (androidInputManagerRef.current) {
3954
+ androidInputManagerRef.current.handleInput();
3943
3955
  return;
3944
3956
  } // Flush native operations, as native events will have propogated
3945
3957
  // and we can correctly compare DOM text values in components
@@ -3952,7 +3964,7 @@ var Editable = props => {
3952
3964
  }
3953
3965
 
3954
3966
  deferredOperations.current = [];
3955
- }, []),
3967
+ }, [attributes.onInput]),
3956
3968
  onBlur: useCallback(event => {
3957
3969
  if (readOnly || state.isUpdatingSelection || !ReactEditor.hasSelectableTarget(editor, event.target) || isEventHandled(event, attributes.onBlur)) {
3958
3970
  return;
@@ -4005,7 +4017,7 @@ var Editable = props => {
4005
4017
  }
4006
4018
 
4007
4019
  IS_FOCUSED.delete(editor);
4008
- }, [readOnly, attributes.onBlur]),
4020
+ }, [readOnly, state.isUpdatingSelection, state.latestElement, editor, attributes.onBlur]),
4009
4021
  onClick: useCallback(event => {
4010
4022
  if (ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onClick) && isDOMNode(event.target)) {
4011
4023
  var node = ReactEditor.toSlateNode(editor, event.target);
@@ -4056,15 +4068,17 @@ var Editable = props => {
4056
4068
  Transforms.select(editor, _range);
4057
4069
  }
4058
4070
  }
4059
- }, [readOnly, attributes.onClick]),
4071
+ }, [editor, attributes.onClick, readOnly]),
4060
4072
  onCompositionEnd: useCallback(event => {
4061
4073
  if (ReactEditor.hasSelectableTarget(editor, event.target)) {
4074
+ var _androidInputManagerR3;
4075
+
4062
4076
  if (ReactEditor.isComposing(editor)) {
4063
4077
  setIsComposing(false);
4064
4078
  IS_COMPOSING.set(editor, false);
4065
4079
  }
4066
4080
 
4067
- androidInputManager === null || androidInputManager === void 0 ? void 0 : androidInputManager.handleCompositionEnd(event);
4081
+ (_androidInputManagerR3 = androidInputManagerRef.current) === null || _androidInputManagerR3 === void 0 ? void 0 : _androidInputManagerR3.handleCompositionEnd(event);
4068
4082
 
4069
4083
  if (isEventHandled(event, attributes.onCompositionEnd) || IS_ANDROID) {
4070
4084
  return;
@@ -4092,7 +4106,7 @@ var Editable = props => {
4092
4106
  }
4093
4107
  }
4094
4108
  }
4095
- }, [attributes.onCompositionEnd]),
4109
+ }, [attributes.onCompositionEnd, editor]),
4096
4110
  onCompositionUpdate: useCallback(event => {
4097
4111
  if (ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCompositionUpdate)) {
4098
4112
  if (!ReactEditor.isComposing(editor)) {
@@ -4100,10 +4114,12 @@ var Editable = props => {
4100
4114
  IS_COMPOSING.set(editor, true);
4101
4115
  }
4102
4116
  }
4103
- }, [attributes.onCompositionUpdate]),
4117
+ }, [attributes.onCompositionUpdate, editor]),
4104
4118
  onCompositionStart: useCallback(event => {
4105
4119
  if (ReactEditor.hasSelectableTarget(editor, event.target)) {
4106
- androidInputManager === null || androidInputManager === void 0 ? void 0 : androidInputManager.handleCompositionStart(event);
4120
+ var _androidInputManagerR4;
4121
+
4122
+ (_androidInputManagerR4 = androidInputManagerRef.current) === null || _androidInputManagerR4 === void 0 ? void 0 : _androidInputManagerR4.handleCompositionStart(event);
4107
4123
 
4108
4124
  if (isEventHandled(event, attributes.onCompositionStart) || IS_ANDROID) {
4109
4125
  return;
@@ -4138,13 +4154,13 @@ var Editable = props => {
4138
4154
  }
4139
4155
  }
4140
4156
  }
4141
- }, [attributes.onCompositionStart]),
4157
+ }, [attributes.onCompositionStart, editor]),
4142
4158
  onCopy: useCallback(event => {
4143
4159
  if (ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy) && !isDOMEventTargetInput(event)) {
4144
4160
  event.preventDefault();
4145
4161
  ReactEditor.setFragmentData(editor, event.clipboardData, 'copy');
4146
4162
  }
4147
- }, [attributes.onCopy]),
4163
+ }, [attributes.onCopy, editor]),
4148
4164
  onCut: useCallback(event => {
4149
4165
  if (!readOnly && ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut) && !isDOMEventTargetInput(event)) {
4150
4166
  event.preventDefault();
@@ -4165,7 +4181,7 @@ var Editable = props => {
4165
4181
  }
4166
4182
  }
4167
4183
  }
4168
- }, [readOnly, attributes.onCut]),
4184
+ }, [readOnly, editor, attributes.onCut]),
4169
4185
  onDragOver: useCallback(event => {
4170
4186
  if (ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragOver)) {
4171
4187
  // Only when the target is void, call `preventDefault` to signal
@@ -4177,7 +4193,7 @@ var Editable = props => {
4177
4193
  event.preventDefault();
4178
4194
  }
4179
4195
  }
4180
- }, [attributes.onDragOver]),
4196
+ }, [attributes.onDragOver, editor]),
4181
4197
  onDragStart: useCallback(event => {
4182
4198
  if (!readOnly && ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDragStart)) {
4183
4199
  var node = ReactEditor.toSlateNode(editor, event.target);
@@ -4196,7 +4212,7 @@ var Editable = props => {
4196
4212
  state.isDraggingInternally = true;
4197
4213
  ReactEditor.setFragmentData(editor, event.dataTransfer, 'drag');
4198
4214
  }
4199
- }, [readOnly, attributes.onDragStart]),
4215
+ }, [readOnly, editor, attributes.onDragStart, state]),
4200
4216
  onDrop: useCallback(event => {
4201
4217
  if (!readOnly && ReactEditor.hasTarget(editor, event.target) && !isEventHandled(event, attributes.onDrop)) {
4202
4218
  event.preventDefault(); // Keep a reference to the dragged range before updating selection
@@ -4227,7 +4243,7 @@ var Editable = props => {
4227
4243
  }
4228
4244
 
4229
4245
  state.isDraggingInternally = false;
4230
- }, [readOnly, attributes.onDrop]),
4246
+ }, [readOnly, editor, attributes.onDrop, state]),
4231
4247
  onDragEnd: useCallback(event => {
4232
4248
  if (!readOnly && state.isDraggingInternally && attributes.onDragEnd && ReactEditor.hasTarget(editor, event.target)) {
4233
4249
  attributes.onDragEnd(event);
@@ -4237,7 +4253,7 @@ var Editable = props => {
4237
4253
 
4238
4254
 
4239
4255
  state.isDraggingInternally = false;
4240
- }, [readOnly, attributes.onDragEnd]),
4256
+ }, [readOnly, state, attributes, editor]),
4241
4257
  onFocus: useCallback(event => {
4242
4258
  if (!readOnly && !state.isUpdatingSelection && ReactEditor.hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onFocus)) {
4243
4259
  var el = ReactEditor.toDOMNode(editor, editor);
@@ -4253,10 +4269,12 @@ var Editable = props => {
4253
4269
 
4254
4270
  IS_FOCUSED.set(editor, true);
4255
4271
  }
4256
- }, [readOnly, attributes.onFocus]),
4272
+ }, [readOnly, state, editor, attributes.onFocus]),
4257
4273
  onKeyDown: useCallback(event => {
4258
4274
  if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target)) {
4259
- androidInputManager === null || androidInputManager === void 0 ? void 0 : androidInputManager.handleKeyDown(event);
4275
+ var _androidInputManagerR5;
4276
+
4277
+ (_androidInputManagerR5 = androidInputManagerRef.current) === null || _androidInputManagerR5 === void 0 ? void 0 : _androidInputManagerR5.handleKeyDown(event);
4260
4278
  var {
4261
4279
  nativeEvent
4262
4280
  } = event; // COMPAT: The composition end event isn't fired reliably in all browsers,
@@ -4544,7 +4562,7 @@ var Editable = props => {
4544
4562
  }
4545
4563
  }
4546
4564
  }
4547
- }, [readOnly, attributes.onKeyDown]),
4565
+ }, [readOnly, editor, attributes.onKeyDown]),
4548
4566
  onPaste: useCallback(event => {
4549
4567
  if (!readOnly && ReactEditor.hasEditableTarget(editor, event.target) && !isEventHandled(event, attributes.onPaste)) {
4550
4568
  // COMPAT: Certain browsers don't support the `beforeinput` event, so we
@@ -4559,7 +4577,7 @@ var Editable = props => {
4559
4577
  ReactEditor.insertData(editor, event.clipboardData);
4560
4578
  }
4561
4579
  }
4562
- }, [readOnly, attributes.onPaste])
4580
+ }, [readOnly, editor, attributes.onPaste])
4563
4581
  }), /*#__PURE__*/React.createElement(Children, {
4564
4582
  decorations: decorations,
4565
4583
  node: editor,
@@ -4758,7 +4776,7 @@ function useSlateSelector(selector) {
4758
4776
  * Create selector context with editor updating on every editor change
4759
4777
  */
4760
4778
 
4761
- function getSelectorContext(editor) {
4779
+ function useSelectorContext(editor) {
4762
4780
  var eventListeners = useRef([]).current;
4763
4781
  var slateRef = useRef({
4764
4782
  editor
@@ -4766,7 +4784,7 @@ function getSelectorContext(editor) {
4766
4784
  var onChange = useCallback(editor => {
4767
4785
  slateRef.editor = editor;
4768
4786
  eventListeners.forEach(listener => listener(editor));
4769
- }, []);
4787
+ }, [eventListeners, slateRef]);
4770
4788
  var selectorContext = useMemo(() => {
4771
4789
  return {
4772
4790
  getSlate: () => slateRef.editor,
@@ -4819,7 +4837,7 @@ var Slate = props => {
4819
4837
  var {
4820
4838
  selectorContext,
4821
4839
  onChange: handleSelectorChange
4822
- } = getSelectorContext(editor);
4840
+ } = useSelectorContext(editor);
4823
4841
  var onContextChange = useCallback(() => {
4824
4842
  if (onChange) {
4825
4843
  onChange(editor.children);
@@ -4830,18 +4848,18 @@ var Slate = props => {
4830
4848
  editor
4831
4849
  }));
4832
4850
  handleSelectorChange(editor);
4833
- }, [onChange]);
4851
+ }, [editor, handleSelectorChange, onChange]);
4834
4852
  useEffect(() => {
4835
4853
  EDITOR_TO_ON_CHANGE.set(editor, onContextChange);
4836
4854
  return () => {
4837
4855
  EDITOR_TO_ON_CHANGE.set(editor, () => {});
4838
4856
  unmountRef.current = true;
4839
4857
  };
4840
- }, [onContextChange]);
4858
+ }, [editor, onContextChange]);
4841
4859
  var [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor));
4842
4860
  useEffect(() => {
4843
4861
  setIsFocused(ReactEditor.isFocused(editor));
4844
- });
4862
+ }, [editor]);
4845
4863
  useIsomorphicLayoutEffect(() => {
4846
4864
  var fn = () => setIsFocused(ReactEditor.isFocused(editor));
4847
4865