import type { UIMessage } from "ai"; import { ArrowDownOutlined } from "@ant-design/icons"; import { Button } from "antd"; import "overlayscrollbars/styles/overlayscrollbars.css"; import { OverlayScrollbarsComponent, type OverlayScrollbarsComponentRef } from "overlayscrollbars-react"; import { useCallback, useRef, useState } from "react"; import { useChatScroll } from "./use-chat-scroll"; interface ChatScrollAreaProps { children: React.ReactNode; messages: UIMessage[]; status: string; } export function ChatScrollArea({ children, messages, status }: ChatScrollAreaProps) { const scrollRef = useRef(null); const osRef = useRef(null); const [viewportElement, setViewportElement] = useState(null); const handleOsInitialized = useCallback(() => { const os = osRef.current; if (!os) return; const instance = os.osInstance(); if (!instance) return; const viewport = instance.elements().viewport as HTMLDivElement; scrollRef.current = viewport; setViewportElement(viewport); }, []); const { isAtBottom, scrollToBottom } = useChatScroll({ messages, scrollRef, status, viewportElement }); return ( <> {children} {!isAtBottom && (