'use client' import type { FC } from 'react' import type { NodeApi, TreeApi } from 'react-arborist' import type { TreeNodeData } from './type' import { RiDeleteBinLine, RiEdit2Line, RiFileAddLine, RiFolderAddLine, RiFolderUploadLine, RiUploadLine, } from '@remixicon/react' import * as React from 'react' import { useTranslation } from 'react-i18next' import Confirm from '@/app/components/base/confirm' import { cn } from '@/utils/classnames' import { useFileOperations } from './hooks/use-file-operations' type MenuItemProps = { icon: React.ElementType label: string onClick: () => void disabled?: boolean } const MenuItem: React.FC = ({ icon: Icon, label, onClick, disabled }) => ( ) type FileOperationsMenuProps = { nodeId: string onClose: () => void className?: string treeRef?: React.RefObject | null> node?: NodeApi } const FileOperationsMenu: FC = ({ nodeId, onClose, className, treeRef, node, }) => { const { t } = useTranslation('workflow') const { fileInputRef, folderInputRef, showDeleteConfirm, isLoading, isDeleting, handleNewFile, handleNewFolder, handleFileChange, handleFolderChange, handleRename, handleDeleteClick, handleDeleteConfirm, handleDeleteCancel, } = useFileOperations({ nodeId, onClose, treeRef, node }) return (
fileInputRef.current?.click()} disabled={isLoading} /> folderInputRef.current?.click()} disabled={isLoading} /> {nodeId !== 'root' && ( <>
)}
) } export default React.memo(FileOperationsMenu)