File size: 1,252 Bytes
4304c6d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
import { useEffect } from 'react'
import {
$insertNodes,
COMMAND_PRIORITY_EDITOR,
createCommand,
} from 'lexical'
import { mergeRegister } from '@lexical/utils'
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'
import { CustomTextNode } from '../custom-text/node'
export const INSERT_VARIABLE_BLOCK_COMMAND = createCommand('INSERT_VARIABLE_BLOCK_COMMAND')
export const INSERT_VARIABLE_VALUE_BLOCK_COMMAND = createCommand('INSERT_VARIABLE_VALUE_BLOCK_COMMAND')
const VariableBlock = () => {
const [editor] = useLexicalComposerContext()
useEffect(() => {
return mergeRegister(
editor.registerCommand(
INSERT_VARIABLE_BLOCK_COMMAND,
() => {
const textNode = new CustomTextNode('{')
$insertNodes([textNode])
return true
},
COMMAND_PRIORITY_EDITOR,
),
editor.registerCommand(
INSERT_VARIABLE_VALUE_BLOCK_COMMAND,
(value: string) => {
const textNode = new CustomTextNode(value)
$insertNodes([textNode])
return true
},
COMMAND_PRIORITY_EDITOR,
),
)
}, [editor])
return null
}
export default VariableBlock
|