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.
- package/dist/components/editable.d.ts.map +1 -1
- package/dist/hooks/android-input-manager/use-android-input-manager.d.ts +1 -1
- package/dist/hooks/android-input-manager/use-android-input-manager.d.ts.map +1 -1
- package/dist/hooks/use-slate-selector.d.ts +1 -1
- package/dist/hooks/use-slate-selector.d.ts.map +1 -1
- package/dist/index.es.js +60 -42
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +99 -77
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +99 -77
- package/dist/slate-react.min.js +1 -1
- package/package.json +1 -1
|
@@ -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;
|
|
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
|
|
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,
|
|
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
|
|
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;;;
|
|
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
|
-
|
|
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]);
|
|
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 =
|
|
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
|
-
|
|
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) ||
|
|
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 = (
|
|
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 (
|
|
3520
|
-
return
|
|
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,
|
|
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
|
-
}, [
|
|
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 (
|
|
3942
|
-
|
|
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
|
-
}, [
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
} =
|
|
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
|
|