import { IS_PLATFORM } from 'common' import { Edit, File, Trash } from 'lucide-react' import { cn, ContextMenu, ContextMenuContent, ContextMenuItem, ContextMenuSeparator, ContextMenuTrigger, Tooltip, TooltipContent, TooltipTrigger, TreeViewItem, type INodeRendererProps, } from 'ui' import { FileData } from './FileExplorerAndEditor.types' type FileExplorerAndEditorRowProps = INodeRendererProps & { files: FileData[] selectedFileId: number setSelectedFileId: (id: number) => void handleFileNameChange: (id: number, newName: string) => void handleStartRename: (id: number) => void handleFileDelete: (id: number) => void } export const FileExplorerAndEditorRow = ({ element, isBranch, isExpanded, getNodeProps, level, files, selectedFileId, setSelectedFileId, handleFileNameChange, handleStartRename, handleFileDelete, }: FileExplorerAndEditorRowProps) => { const nodeProps = getNodeProps() const originalId = typeof element.metadata?.originalId === 'number' ? element.metadata.originalId : null const state = element.metadata?.state as FileData['state'] const isEditing = Boolean(element.metadata?.isEditing) return (
f.id === originalId)?.id === selectedFileId} level={level} xPadding={16} name={element.name} className={cn( isEditing ? '' : state === 'new' ? 'text-brand-600' : state === 'modified' ? 'text-code_block-2' : '' )} icon={} isEditing={isEditing} onEditSubmit={(value) => { if (IS_PLATFORM && originalId !== null) { handleFileNameChange(originalId, value) } }} onClick={() => { if (originalId !== null && !isEditing) { setSelectedFileId(originalId) } }} onDoubleClick={() => { if (IS_PLATFORM && originalId !== null) { handleStartRename(originalId) } }} actions={ state !== 'unchanged' && (
{state === 'new' ? 'U' : 'M'} {state === 'new' ? 'Unsaved' : 'Modified'}
) } />
{IS_PLATFORM && ( e.stopPropagation()}> { if (originalId !== null) handleStartRename(originalId) }} onFocusCapture={(e) => e.stopPropagation()} > Rename file {files.length > 1 && ( <> { if (originalId !== null) { handleFileDelete(originalId) } }} onFocusCapture={(e) => e.stopPropagation()} > Delete file )} )}
) }