mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-08-04 01:50:08 +00:00
Co-authored-by: Fangyin Cheng <staneyffer@gmail.com> Co-authored-by: 谨欣 <echo.cmy@antgroup.com> Co-authored-by: 严志勇 <yanzhiyong@tiansuixiansheng.com> Co-authored-by: yanzhiyong <932374019@qq.com>
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import ChatHeader from '@/new-components/chat/header/ChatHeader';
|
|
import dynamic from 'next/dynamic';
|
|
import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
|
|
const ChatCompletion = dynamic(() => import('@/new-components/chat/content/ChatCompletion'), { ssr: false });
|
|
|
|
// eslint-disable-next-line no-empty-pattern
|
|
const ChatContentContainer = ({}, ref: React.ForwardedRef<any>) => {
|
|
const scrollRef = useRef<HTMLDivElement>(null);
|
|
const [isScrollToTop, setIsScrollToTop] = useState<boolean>(false);
|
|
|
|
useImperativeHandle(ref, () => {
|
|
return scrollRef.current;
|
|
});
|
|
|
|
useEffect(() => {
|
|
if (scrollRef.current) {
|
|
scrollRef.current.addEventListener('scroll', () => {
|
|
const st = scrollRef.current?.scrollTop || 0;
|
|
if (st >= 42 + 32) {
|
|
setIsScrollToTop(true);
|
|
} else {
|
|
setIsScrollToTop(false);
|
|
}
|
|
});
|
|
}
|
|
return () => {
|
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
scrollRef.current && scrollRef.current.removeEventListener('scroll', () => {});
|
|
};
|
|
}, []);
|
|
|
|
return (
|
|
<div className='flex flex-1 overflow-hidden'>
|
|
<div ref={scrollRef} className='h-full w-full mx-auto overflow-y-auto'>
|
|
<ChatHeader isScrollToTop={isScrollToTop} />
|
|
<ChatCompletion />
|
|
</div>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default forwardRef(ChatContentContainer);
|