import { useCallback, useEffect, useState } from "react"; import type { Message } from "./AiChat" import Marked from "../general/Marked"; import TextArea from "antd/lib/input/TextArea"; import { Button, message, Space, Tooltip } from "antd"; import { CheckOutlined, CloseOutlined, CopyOutlined, EditOutlined, } from "@ant-design/icons"; interface IWidget { msg?: Message; onChange?: (value: string) => void; } const MsgUser = ({ msg, onChange }: IWidget) => { const [editing, setEditing] = useState(false); const [current, _setCurrent] = useState(0); const [content, setContent] = useState(""); useEffect(() => { if (msg?.versions && msg?.versions.length > 0) { setContent(msg.versions[current].content); } }, [current, msg]); const confirmEdit = useCallback((): void => { onChange && onChange(content); }, [content, onChange]); const cancelEdit = useCallback((): void => { setEditing(false); }, []); const handleEditKeyPress = useCallback( (e: React.KeyboardEvent): void => { if (e.key === "Enter" && e.ctrlKey) { e.preventDefault(); confirmEdit(); } else if (e.key === "Escape") { cancelEdit(); } }, [cancelEdit, confirmEdit] ); return (
{editing ? (