| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- import {
 -   memo,
 -   useCallback,
 -   useState,
 - } from 'react'
 - import cn from 'classnames'
 - import { useNodesInteractions } from '../../hooks'
 - import type {
 -   BlockEnum,
 -   OnSelectBlock,
 - } from '../../types'
 - import BlockSelector from '../../block-selector'
 - 
 - type InsertBlockProps = {
 -   startNodeId: string
 -   availableBlocksTypes: BlockEnum[]
 - }
 - const InsertBlock = ({
 -   startNodeId,
 -   availableBlocksTypes,
 - }: InsertBlockProps) => {
 -   const [open, setOpen] = useState(false)
 -   const { handleNodeAdd } = useNodesInteractions()
 - 
 -   const handleOpenChange = useCallback((v: boolean) => {
 -     setOpen(v)
 -   }, [])
 -   const handleInsert = useCallback<OnSelectBlock>((nodeType, toolDefaultValue) => {
 -     handleNodeAdd(
 -       {
 -         nodeType,
 -         toolDefaultValue,
 -       },
 -       {
 -         nextNodeId: startNodeId,
 -         nextNodeTargetHandle: 'target',
 -       },
 -     )
 -   }, [startNodeId, handleNodeAdd])
 - 
 -   return (
 -     <div
 -       className={cn(
 -         'nopan nodrag',
 -         'hidden group-hover/insert:block absolute top-1/2 left-1/2 transform -translate-x-1/2 -translate-y-1/2',
 -         open && '!block',
 -       )}
 -     >
 -       <BlockSelector
 -         open={open}
 -         onOpenChange={handleOpenChange}
 -         asChild
 -         onSelect={handleInsert}
 -         availableBlocksTypes={availableBlocksTypes}
 -         triggerClassName={() => 'hover:scale-125 transition-all'}
 -       />
 -     </div>
 -   )
 - }
 - 
 - export default memo(InsertBlock)
 
 
  |