slate-react 0.91.11 → 0.92.0-202321717544
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 +4 -0
- 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 +69 -44
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +108 -79
- package/dist/index.js.map +1 -1
- package/dist/slate-react.js +108 -79
- package/dist/slate-react.min.js +1 -1
- package/package.json +1 -1
|
@@ -73,6 +73,10 @@ export declare const defaultDecorate: (entry: NodeEntry) => Range[];
|
|
|
73
73
|
* Check if an event is overrided by a handler.
|
|
74
74
|
*/
|
|
75
75
|
export declare const isEventHandled: <EventType extends React.SyntheticEvent<unknown, unknown>>(event: EventType, handler?: ((event: EventType) => void | boolean) | undefined) => boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Check if the event's target is an input element
|
|
78
|
+
*/
|
|
79
|
+
export declare const isDOMEventTargetInput: <EventType extends React.SyntheticEvent<unknown, unknown>>(event: EventType) => boolean;
|
|
76
80
|
/**
|
|
77
81
|
* Check if a DOM event is overrided by a handler.
|
|
78
82
|
*/
|
|
@@ -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,15 +4154,15 @@ var Editable = props => {
|
|
|
4138
4154
|
}
|
|
4139
4155
|
}
|
|
4140
4156
|
}
|
|
4141
|
-
}, [attributes.onCompositionStart]),
|
|
4157
|
+
}, [attributes.onCompositionStart, editor]),
|
|
4142
4158
|
onCopy: useCallback(event => {
|
|
4143
|
-
if (ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCopy)) {
|
|
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
|
-
if (!readOnly && ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut)) {
|
|
4165
|
+
if (!readOnly && ReactEditor.hasSelectableTarget(editor, event.target) && !isEventHandled(event, attributes.onCut) && !isDOMEventTargetInput(event)) {
|
|
4150
4166
|
event.preventDefault();
|
|
4151
4167
|
ReactEditor.setFragmentData(editor, event.clipboardData, 'cut');
|
|
4152
4168
|
var {
|
|
@@ -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,
|
|
@@ -4627,6 +4645,13 @@ var isEventHandled = (event, handler) => {
|
|
|
4627
4645
|
|
|
4628
4646
|
return event.isDefaultPrevented() || event.isPropagationStopped();
|
|
4629
4647
|
};
|
|
4648
|
+
/**
|
|
4649
|
+
* Check if the event's target is an input element
|
|
4650
|
+
*/
|
|
4651
|
+
|
|
4652
|
+
var isDOMEventTargetInput = event => {
|
|
4653
|
+
return isDOMNode(event.target) && (event.target instanceof HTMLInputElement || event.target instanceof HTMLTextAreaElement);
|
|
4654
|
+
};
|
|
4630
4655
|
/**
|
|
4631
4656
|
* Check if a DOM event is overrided by a handler.
|
|
4632
4657
|
*/
|
|
@@ -4751,7 +4776,7 @@ function useSlateSelector(selector) {
|
|
|
4751
4776
|
* Create selector context with editor updating on every editor change
|
|
4752
4777
|
*/
|
|
4753
4778
|
|
|
4754
|
-
function
|
|
4779
|
+
function useSelectorContext(editor) {
|
|
4755
4780
|
var eventListeners = useRef([]).current;
|
|
4756
4781
|
var slateRef = useRef({
|
|
4757
4782
|
editor
|
|
@@ -4759,7 +4784,7 @@ function getSelectorContext(editor) {
|
|
|
4759
4784
|
var onChange = useCallback(editor => {
|
|
4760
4785
|
slateRef.editor = editor;
|
|
4761
4786
|
eventListeners.forEach(listener => listener(editor));
|
|
4762
|
-
}, []);
|
|
4787
|
+
}, [eventListeners, slateRef]);
|
|
4763
4788
|
var selectorContext = useMemo(() => {
|
|
4764
4789
|
return {
|
|
4765
4790
|
getSlate: () => slateRef.editor,
|
|
@@ -4812,7 +4837,7 @@ var Slate = props => {
|
|
|
4812
4837
|
var {
|
|
4813
4838
|
selectorContext,
|
|
4814
4839
|
onChange: handleSelectorChange
|
|
4815
|
-
} =
|
|
4840
|
+
} = useSelectorContext(editor);
|
|
4816
4841
|
var onContextChange = useCallback(() => {
|
|
4817
4842
|
if (onChange) {
|
|
4818
4843
|
onChange(editor.children);
|
|
@@ -4823,18 +4848,18 @@ var Slate = props => {
|
|
|
4823
4848
|
editor
|
|
4824
4849
|
}));
|
|
4825
4850
|
handleSelectorChange(editor);
|
|
4826
|
-
}, [onChange]);
|
|
4851
|
+
}, [editor, handleSelectorChange, onChange]);
|
|
4827
4852
|
useEffect(() => {
|
|
4828
4853
|
EDITOR_TO_ON_CHANGE.set(editor, onContextChange);
|
|
4829
4854
|
return () => {
|
|
4830
4855
|
EDITOR_TO_ON_CHANGE.set(editor, () => {});
|
|
4831
4856
|
unmountRef.current = true;
|
|
4832
4857
|
};
|
|
4833
|
-
}, [onContextChange]);
|
|
4858
|
+
}, [editor, onContextChange]);
|
|
4834
4859
|
var [isFocused, setIsFocused] = useState(ReactEditor.isFocused(editor));
|
|
4835
4860
|
useEffect(() => {
|
|
4836
4861
|
setIsFocused(ReactEditor.isFocused(editor));
|
|
4837
|
-
});
|
|
4862
|
+
}, [editor]);
|
|
4838
4863
|
useIsomorphicLayoutEffect(() => {
|
|
4839
4864
|
var fn = () => setIsFocused(ReactEditor.isFocused(editor));
|
|
4840
4865
|
|