| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | import {  memo,  useEffect,} from 'react'import {  $insertNodes,  COMMAND_PRIORITY_EDITOR,  createCommand,} from 'lexical'import { mergeRegister } from '@lexical/utils'import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'import type { QueryBlockType } from '../../types'import {  $createQueryBlockNode,  QueryBlockNode,} from './node'export const INSERT_QUERY_BLOCK_COMMAND = createCommand('INSERT_QUERY_BLOCK_COMMAND')export const DELETE_QUERY_BLOCK_COMMAND = createCommand('DELETE_QUERY_BLOCK_COMMAND')export type QueryBlockProps = {  onInsert?: () => void  onDelete?: () => void}const QueryBlock = memo(({  onInsert,  onDelete,}: QueryBlockType) => {  const [editor] = useLexicalComposerContext()  useEffect(() => {    if (!editor.hasNodes([QueryBlockNode]))      throw new Error('QueryBlockPlugin: QueryBlock not registered on editor')    return mergeRegister(      editor.registerCommand(        INSERT_QUERY_BLOCK_COMMAND,        () => {          const contextBlockNode = $createQueryBlockNode()          $insertNodes([contextBlockNode])          if (onInsert)            onInsert()          return true        },        COMMAND_PRIORITY_EDITOR,      ),      editor.registerCommand(        DELETE_QUERY_BLOCK_COMMAND,        () => {          if (onDelete)            onDelete()          return true        },        COMMAND_PRIORITY_EDITOR,      ),    )  }, [editor, onInsert, onDelete])  return null})QueryBlock.displayName = 'QueryBlock'export { QueryBlock }export { QueryBlockNode } from './node'export { default as QueryBlockReplacementBlock } from './query-block-replacement-block'
 |