'use client'; import { Attachment, Message } from 'ai'; import { useChat } from 'ai/react'; import { AnimatePresence } from 'framer-motion'; import { useState } from 'react'; import { Model } from '@/ai/models'; import { ChatHeader } from '@/components/custom/chat-header'; import { Message as PreviewMessage } from '@/components/custom/message'; import { useScrollToBottom } from '@/components/custom/use-scroll-to-bottom'; import { Canvas, UICanvas } from './canvas'; import { CanvasStreamHandler } from './canvas-stream-handler'; import { MultimodalInput } from './multimodal-input'; import { Overview } from './overview'; export function Chat({ id, initialMessages, selectedModelId, }: { id: string; initialMessages: Array; selectedModelId: string; }) { const { messages, setMessages, handleSubmit, input, setInput, append, isLoading, stop, data: streamingData, } = useChat({ body: { id, modelId: selectedModelId }, initialMessages, onFinish: () => { window.history.replaceState({}, '', `/chat/${id}`); }, }); const [canvas, setCanvas] = useState(null); const [messagesContainerRef, messagesEndRef] = useScrollToBottom(); const [attachments, setAttachments] = useState>([]); return ( <>
{messages.length === 0 && } {messages.map((message) => ( ))}
{canvas && canvas.isVisible && ( )} ); }