https://mention-tool-editorjs.vercel.app/
Install with npm
npm install editorjs-mention-tool
// Here Import react with useEffect
import React, { useEffect } from 'react'
// Here EditorJS with some plugins
import { createReactEditorJS } from 'react-editor-js'
import Header from "@editorjs/header"
import Paragraph from '@editorjs/paragraph'
// Here mention module
import MentionTool from 'editorjs-mention-tool'
import "editorjs-mention-tool/src/styles.css"
const CustomEditor = () => {
const editorCore = React.useRef(null)
const handleInitialize = React.useCallback((instance) => {
editorCore.current = instance
}, [])
const ReactEditorJS = createReactEditorJS() // Initialize editor
const EDITOR_JS_TOOLS = {
paragraph: {
class: Paragraph,
inlineToolbar: true,
},
header: Header,
}
useEffect(() => {
// Here create new MentionTool with $ accessor key to use it as variable layout
new MentionTool({
holder: 'editorHolder', // This is the editor Holder ( see below )
accessKey: "$", // Access key ( $ or @ )
allUsers: [ // The array with the data you want to show when the users type $
{
"id": "1234",
"name": "Variable 1",
"slug": "variable1"
},
{
"id": "12345",
"name": "Thing of v1",
"slug": "variable1.something"
},
],
baseUrl: '',
searchAPIUrl: ''
})
// Here create new MentionTool with @ accessor key to use it as mention layout
new MentionTool({
holder: 'editorHolder', // This is the editor Holder ( see below )
accessKey: "@", // Access key ( $ or @ )
allUsers: [ // The array with the data you want to show when the users type @
{
"id": "21029",
"name": "Kyle Ockford",
"avatar": "https://i.pravatar.cc/300",
"slug": "kyleockford"
},
{
"id": "21030",
"name": "Paige Cortez",
"avatar": "https://avatars.dicebear.com/api/croodles/your-custom-seed.svg",
"slug": "paigecortez"
},
{
"id": "21031",
"name": "Nyla Warren",
"slug": "nylawarren"
},
{
"id": "21032",
"name": "Hassan Lee",
"slug": "hassanlee"
},
{
"id": "21033",
"name": "Domas Rivas",
"avatar": "https://avatars.dicebear.com/api/pixel-art-neutral/kreudev.svg",
"slug": "domasrivas"
},
{
"id": "21034",
"name": "Arthur Hunt",
"slug": "arthurhunt"
},
],
baseUrl: '',
searchAPIUrl: ''
})
}, [])
return (
<ReactEditorJS onInitialize={handleInitialize} tools={EDITOR_JS_TOOLS} placeholder={`Write something here...`} holder="editorHolder">
<div id="editorHolder" />
</ReactEditorJS>
)
}
// Return the CustomEditor to use by other components.
export default CustomEditor