fix(prosemirror): undoable inputrules #1546
Open
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.
Summary
Specifying
undoable
for inputrules does not currently seem to work.The upstream implementation of
run
from prosemirror-inputrules checks if the rule is undoable before adding the meta information. The custom implementation of therun
function in Milkdown does not seem to do that here.Not all the type information seems to be captured for the
InputRule
class, such as theundoable
property that should be stored on it, so I have inserted ats-expect-error
comment for now...How did you test this change?
I have not tested this yet. The testing procedure would involve creating an inputrule, such as the Markdown "replace with emoji when text surrounded by colon" and specifying it as undoable. Immediately after triggering it, the user should hit backspace and "undoInputRule" should not trigger. In my own project, this means that it would look like this.
:smile:
😄
Currently, it will do this
:smile:
😄
:smile:
Motivation
For this emoji node in particular, I would like
:smile:
sequences to be replaced with an emoji upon successful completion, and if the user immediately hits "Backspace" for the emoji to be removed entirely.Project
Resolves #1545