Howdy! Recently I had the need for an inputrules plugin with slightly different behavior from the default, so I lightly forked prosemirror-inputrules
. Maybe some other folks will also want this approach!
@handlewithcare/prosemirror-inputrules
From the README:
Differences from prosemirror-inputrules
The primary behavior difference from prosemirror-inputrules
is that this library actually applies the text that triggers its rules before executing the rules. In the first example, we had the following rule:
new InputRule(/->\s/, "β ");
Using prosemirror-inputrules
, if a user typed -
and then >
, the editor history would look like:
[
{
"from": 1,
"to": 1,
"text": "-"
},
{
"from": 1,
"to": 2,
"text": "β"
}
]
The plugin identifies that a user is going to type ->
, and executes the input rule instead of applying the >
. This means that an undo command, rather than undoing just the input rule, undoes the insertion of the >
character, resulting in just -
again.
By contrast, hereβs the editor history after the same inputs using this library:
[
{
"from": 1,
"to": 1,
"text": "-"
},
{
"from": 2,
"to": 2,
"text": ">"
},
{
"from": 1,
"to": 3,
"text": "β"
}
]
Since this library actually applies the >
character to the editor before executing the input rule, an undo command only undoes the input rule, resulting in what the user initially typed (->
).
Also, this library exports a markTypeInputRule
builder that can be used for Markdown-style formatting (e.g. **text**
becomes text).