refactor(core): refactor nodepos class to support block nodes #4841
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.
Please describe your changes
This PR adds support for block nodes in the NodePos implementation. This is still a bit janky but at least block nodes are now found. Reason for this jank is that ResolvedPos in Prosemirror won't find block nodes at their positions but the
doc
node and the depth of 0.This is bad because I used ResolvedPos for all the position mapping inside the NodePos class. In the future we should see if we can improve on this. This means that currently
.before
,.after
, etc. won't be very exact and could lead to wrong positions as I'm trying to find those positions by checking if a nodepos is a block nodepos.How did you accomplish your changes
isBlock
into a nodePos together with it's actualdepth
that I try to get from the context of thechildren
getter.How have you tested your changes
I used a customized Examples/Default demo locally.
How can we verify your changes
You can do the same above - bind the editor created in the demo to window.editor and then try to do things like
editor.$node('bulletList')
Remarks
As I said above this still is a bit jank as the ResolvedPos implementation of Prosemirror doesn't give me correct information about a nodes depth. We'll probably need to improve this class over time as we run into more and more issues.
Checklist
Related issues
closes #4840