import React, { useState } from 'react'; import Box from '@mui/material/Box'; import TextField from '@mui/material/TextField'; import { IconButton, SxProps } from '@mui/material'; import AddIcon from '@mui/icons-material/Add'; import Divider from '@mui/material/Divider'; import RemoveIcon from '@mui/icons-material/Remove'; import AdjustIcon from '@mui/icons-material/Adjust'; import { ObjectProps, ProcessProps } from './interface'; import AgentIcon from '@/components/AgentIcon'; import DescriptionCard from '@/components/ProcessDiscription/DescriptionCard'; import { globalStorage } from '@/storage'; export interface IEditObjectProps { finishEdit: (objectName: string) => void; } export const EditObjectCard: React.FC = React.memo( ({ finishEdit }) => { const handleKeyPress = (event: any) => { if (event.key === 'Enter') { finishEdit(event.target.value); } }; return ( ); }, ); interface IHoverIconButtonProps { onAddClick: () => void; isActive: boolean; style: SxProps; responseToHover?: boolean; addOrRemove: boolean | undefined; // true for add, false for remove,undefined for adjust } const HoverIconButton: React.FC = ({ onAddClick, isActive, style, addOrRemove, responseToHover = true, }) => { const [addIconHover, setAddIconHover] = useState(false); return ( { setAddIconHover(true); }} onMouseOut={() => { setAddIconHover(false); }} onClick={() => { onAddClick(); }} sx={{ ...style, justifySelf: 'start' }} > {addOrRemove === undefined ? : <>} {addOrRemove === true ? : <>} {addOrRemove === false ? : <>} ); }; interface IEditableBoxProps { text: string; inputCallback: (text: string) => void; } const EditableBox: React.FC = ({ text, inputCallback }) => { const [isEditable, setIsEditable] = useState(false); const handleDoubleClick = () => { setIsEditable(true); }; const handleKeyPress = (event: any) => { if (event.key === 'Enter') { inputCallback(event.target.value); setIsEditable(false); } }; return ( {isEditable ? ( setIsEditable(false)} // 失去焦点时也关闭编辑状态 autoFocus sx={{ '& .MuiInputBase-root': { // 目标 MUI 的输入基础根元素 padding: '0px 0px', // 你可以设置为你希望的内边距值 }, width: '100%', }} /> ) : ( {text} )} ); }; export interface IObjectCardProps { object: ObjectProps; isAddActive?: boolean; handleAddActive?: (objectName: string) => void; addOrRemove?: boolean; } export const ObjectCard = React.memo( ({ object, isAddActive = false, handleAddActive = (objectName: string) => { console.log(objectName); }, addOrRemove = true, }) => { const onAddClick = () => { handleAddActive(object.name); }; return ( {object.name} ); }, ); export interface IProcessCardProps { process: ProcessProps; handleProcessClick: (stepId: string) => void; isFocusing: boolean; isAddActive?: boolean; handleAddActive?: (objectName: string) => void; handleEditContent: (stepTaskId: string, newContent: string) => void; // handleSizeChange: () => void; } export const ProcessCard: React.FC = React.memo( ({ process, handleProcessClick, isFocusing, isAddActive = false, handleAddActive = (objectName: string) => { console.log(objectName); }, // handleSizeChange, handleEditContent, }) => { const onAddClick = () => { handleAddActive(process.id); }; return ( handleProcessClick(process.id)} > {process.name} {/* Assuming AgentIcon is another component */} {process.agents.map(agentName => ( ))} {isFocusing && ( e.stopPropagation()}> { handleEditContent(process.id, text); // handleEditStep(step.name, { ...step, task: text }); }} /> {/* 这里直接渲染对应的 DescriptionCard */} {/* {(() => { const step = globalStorage.planManager.currentPlan.find( s => s.id === process.id ); return step ? : null; })()} */} )} ); }, ); const Card: React.FC = React.memo(() => { return <>; // Replace with your component JSX }); export default Card;