diff --git a/packages/lexical-react/flow/LexicalSelectionAlwaysOnDisplay.js.flow b/packages/lexical-react/flow/LexicalSelectionAlwaysOnDisplay.js.flow index b096fb0aa60..378527a059e 100644 --- a/packages/lexical-react/flow/LexicalSelectionAlwaysOnDisplay.js.flow +++ b/packages/lexical-react/flow/LexicalSelectionAlwaysOnDisplay.js.flow @@ -10,4 +10,6 @@ /** * LexicalSelectionAlwaysOnDisplay */ -declare export function SelectionAlwaysOnDisplay(): null; +declare export function SelectionAlwaysOnDisplay({ + onReposition?: (node: Array) => void, +}): null; diff --git a/packages/lexical-react/src/LexicalSelectionAlwaysOnDisplay.tsx b/packages/lexical-react/src/LexicalSelectionAlwaysOnDisplay.tsx index 69a24adbc58..55be9d70dc3 100644 --- a/packages/lexical-react/src/LexicalSelectionAlwaysOnDisplay.tsx +++ b/packages/lexical-react/src/LexicalSelectionAlwaysOnDisplay.tsx @@ -10,11 +10,15 @@ import {useLexicalComposerContext} from '@lexical/react/LexicalComposerContext'; import {selectionAlwaysOnDisplay} from '@lexical/utils'; import {useEffect} from 'react'; -export function SelectionAlwaysOnDisplay(): null { +type Props = Readonly<{ + onReposition?: (node: Array) => void; +}>; + +export function SelectionAlwaysOnDisplay({onReposition}: Props): null { const [editor] = useLexicalComposerContext(); useEffect(() => { - return selectionAlwaysOnDisplay(editor); - }, [editor]); + return selectionAlwaysOnDisplay(editor, onReposition); + }, [editor, onReposition]); return null; } diff --git a/packages/lexical-utils/flow/LexicalUtils.js.flow b/packages/lexical-utils/flow/LexicalUtils.js.flow index 9fc63482549..3d5bfe41cb7 100644 --- a/packages/lexical-utils/flow/LexicalUtils.js.flow +++ b/packages/lexical-utils/flow/LexicalUtils.js.flow @@ -84,6 +84,7 @@ declare export function positionNodeOnRange( ): () => void; declare export function selectionAlwaysOnDisplay( editor: LexicalEditor, + onReposition?: (node: Array) => void, ): () => void; declare export function $getNearestBlockElementAncestorOrThrow( startNode: LexicalNode, diff --git a/packages/lexical-utils/src/selectionAlwaysOnDisplay.ts b/packages/lexical-utils/src/selectionAlwaysOnDisplay.ts index 0677e590512..f2b05d1d280 100644 --- a/packages/lexical-utils/src/selectionAlwaysOnDisplay.ts +++ b/packages/lexical-utils/src/selectionAlwaysOnDisplay.ts @@ -12,6 +12,7 @@ import markSelection from './markSelection'; export default function selectionAlwaysOnDisplay( editor: LexicalEditor, + onReposition?: (node: Array) => void, ): () => void { let removeSelectionMark: (() => void) | null = null; @@ -32,7 +33,7 @@ export default function selectionAlwaysOnDisplay( } } else { if (removeSelectionMark === null) { - removeSelectionMark = markSelection(editor); + removeSelectionMark = markSelection(editor, onReposition); } } };