JSPM

editorjs-mention-tool

1.0.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 93
  • Score
    100M100P100Q74086F
  • License ISC

Mention Tool plugin for Editor.js, use @ and $ to print variables.

Package Exports

  • editorjs-mention-tool
  • editorjs-mention-tool/src/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (editorjs-mention-tool) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Logo

Mention Tool Plugin for Editor.js

Demo

https://mention-tool-editorjs.vercel.app/

Installation

Install with npm

  npm install editorjs-mention-tool

Usage/Examples

// 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

Screenshots

App ddd