blockPluginConstructor
As we saw, the RichTextExt can be extended using a plugin system.
For a typical Block or List plugin (heading, quote, unordered list...), React Bricks provides the blockPluginConstructor
helper that allows you to create a new plugin very quickly.
It just accepts a simple BlockPlugin
object:
type BlockPluginConstructor = (blockPlugin: BlockPlugin) => RichTextPlugin
interface BlockPlugin {
name: string
isInline?: boolean
itemName?: string
label?: string
hotKey?: string
render: (props: RenderElementProps) => JSX.Element
renderItem?: (props: RenderElementProps) => 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. If you set an itemName
React Bricks will create a List plugin, otherwise a Block one.
Usage example
Here's the code for React Bricks h1
plugin, created using the blockPluginConstructor
import React from 'react'
import { MdLooksOne } from 'react-icons/md'
import { blockPluginConstructor } from 'react-bricks/frontend'
const plugin = blockPluginConstructor({
name: 'h1',
hotKey: 'mod+shift+1',
render: (props: any) => <h1>{props.children}</h1>,
icon: <MdLooksOne />,
})
export default plugin