fix: properly handle VariableNode deletion in Lexical #1120
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request includes several updates to the
useVariablePlugin
function in thefrontend/src/components/RichEditor/useVariablePlugin.ts
file to improve whitespace handling aroundVariableNode
elements. The most important changes include adding a new utility function for cleaning up whitespace, updating the node insertion logic, and modifying the mutation listener.Whitespace handling improvements:
cleanUpWhitespace
function to ensure proper whitespace handling aroundVariableNode
elements.isWhitespaceBefore
andisWhitespaceAfter
functions to handle cases where the node is null or contains whitespace at the start or end of the text content.Node insertion logic:
useVariablePlugin
function to insert whitespace before and after aVariableNode
if necessary, ensuring proper spacing.Mutation listener:
useEffect
hook to register a mutation listener that cleans up whitespace when aVariableNode
is detached.Additional imports:
$getNodeByKey
import fromlexical
to support the new mutation listener logic.