markPluginConstructor

As we saw, the RichTextExt can be extended using a plugin system.

For a typical Mark plugin (bold, italic, highlight...), React Bricks provides the markPluginConstructor helper that allows you to create a new plugin very quickly.

It just accepts a simple MarkPlugin object:

type MarkPluginConstructor = (markPlugin: MarkPlugin) => RichTextPlugin
interface MarkPlugin {
name: string
label?: string
hotKey?: string
render: (props: RenderLeafProps) => JSX.Element
icon: React.ReactElement
}

For the meaning of the arguments, you can see the interface for a RichTextPlugin. The icon is the button's icon.

Usage example

Here's the code for React Bricks bold plugin, created using the markPluginConstructor

import React from 'react'
import { FaBold } from 'react-icons/fa'
import { markPluginConstructor } from 'react-bricks'
const plugin = markPluginConstructor({
name: 'bold',
hotKey: 'mod+b',
render: (props: any) => <strong>{props.children}</strong>,
icon: <FaBold />,
})
export default plugin