| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | 
							- 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 { ContextBlockType } from '../../types'
 
- import {
 
-   $createContextBlockNode,
 
-   ContextBlockNode,
 
- } from './node'
 
- export const INSERT_CONTEXT_BLOCK_COMMAND = createCommand('INSERT_CONTEXT_BLOCK_COMMAND')
 
- export const DELETE_CONTEXT_BLOCK_COMMAND = createCommand('DELETE_CONTEXT_BLOCK_COMMAND')
 
- export type Dataset = {
 
-   id: string
 
-   name: string
 
-   type: string
 
- }
 
- const ContextBlock = memo(({
 
-   datasets = [],
 
-   onAddContext = () => {},
 
-   onInsert,
 
-   onDelete,
 
-   canNotAddContext,
 
- }: ContextBlockType) => {
 
-   const [editor] = useLexicalComposerContext()
 
-   useEffect(() => {
 
-     if (!editor.hasNodes([ContextBlockNode]))
 
-       throw new Error('ContextBlockPlugin: ContextBlock not registered on editor')
 
-     return mergeRegister(
 
-       editor.registerCommand(
 
-         INSERT_CONTEXT_BLOCK_COMMAND,
 
-         () => {
 
-           const contextBlockNode = $createContextBlockNode(datasets, onAddContext, canNotAddContext)
 
-           $insertNodes([contextBlockNode])
 
-           if (onInsert)
 
-             onInsert()
 
-           return true
 
-         },
 
-         COMMAND_PRIORITY_EDITOR,
 
-       ),
 
-       editor.registerCommand(
 
-         DELETE_CONTEXT_BLOCK_COMMAND,
 
-         () => {
 
-           if (onDelete)
 
-             onDelete()
 
-           return true
 
-         },
 
-         COMMAND_PRIORITY_EDITOR,
 
-       ),
 
-     )
 
-   }, [editor, datasets, onAddContext, onInsert, onDelete, canNotAddContext])
 
-   return null
 
- })
 
- ContextBlock.displayName = 'ContextBlock'
 
- export { ContextBlock }
 
- export { ContextBlockNode } from './node'
 
- export { default as ContextBlockReplacementBlock } from './context-block-replacement-block'
 
 
  |