Skip to content

prosekit/extensions/input-rule

Options for defineMarkInputRule.

regex: RegExp

The regular expression to match against, which should end with $ and has exactly one capture group. All other matched text outside the capture group will be deleted.

type: string | MarkType

The type of mark to set.

attrs?: Attrs | ((match: RegExpMatchArray) => Attrs | null) | null

Attributes to set on the mark.

inCodeMark?: boolean

Whether this rule should fire inside marks marked as code.

false


Options for defineTextBlockInputRule.

regex: RegExp

The regular expression to match against, which should end with $. It usually also starts with ^ to that it is only matched at the start of a textblock.

type: string | NodeType

The node type to replace the matched text with.

attrs?: Attrs | ((match: RegExpMatchArray) => Attrs | null) | null

Attributes to set on the node.


Options for defineWrappingInputRule.

regex: RegExp

The regular expression to match against, which should end with $. It usually also starts with ^ to that it is only matched at the start of a textblock.

type: string | NodeType

The type of node to wrap in.

attrs?: Attrs | ((match: RegExpMatchArray) => Attrs | null) | null

Attributes to set on the node.

join?: (match: RegExpMatchArray, node: EditorNode) => boolean

By default, if there’s a node with the same type above the newly wrapped node, the rule will try to join those two nodes. You can pass a join predicate, which takes a regular expression match and the node before the wrapped node, and can return a boolean to indicate whether a join should happen.

function defineInputRule(rule: InputRule): PlainExtension

Defines an input rule extension.


function defineMarkInputRule(options: MarkInputRuleOptions): PlainExtension

Defines an input rule for automatically adding inline marks when a given pattern is typed.


function defineTextBlockInputRule(options: TextBlockInputRuleOptions): PlainExtension

Defines an input rule that changes the type of a textblock when the matched text is typed into it.

See also textblockTypeInputRule


function defineWrappingInputRule(options: WrappingInputRuleOptions): PlainExtension

Defines an input rule for automatically wrapping a textblock when a given string is typed.

See also wrappingInputRule