Unverified Commit c34fc646 authored by Eva H's avatar Eva H Committed by GitHub
Browse files

app/ui: use requestAnimationFrame to prevent bottom line cutoff in streaming...

app/ui: use requestAnimationFrame to prevent bottom line cutoff in streaming thinking display (#13137)
parent 7cf6f18c
...@@ -50,21 +50,33 @@ export default function Thinking({ ...@@ -50,21 +50,33 @@ export default function Thinking({
// Position content to show bottom when collapsed // Position content to show bottom when collapsed
useEffect(() => { useEffect(() => {
if (isCollapsed && contentRef.current && wrapperRef.current) { if (isCollapsed && contentRef.current && wrapperRef.current) {
const contentHeight = contentRef.current.scrollHeight; requestAnimationFrame(() => {
const wrapperHeight = wrapperRef.current.clientHeight; if (!contentRef.current || !wrapperRef.current) return;
if (contentHeight > wrapperHeight) {
const translateY = -(contentHeight - wrapperHeight); const contentHeight = contentRef.current.scrollHeight;
contentRef.current.style.transform = `translateY(${translateY}px)`; const wrapperHeight = wrapperRef.current.clientHeight;
setHasOverflow(true); if (contentHeight > wrapperHeight) {
} else { const translateY = -(contentHeight - wrapperHeight);
setHasOverflow(false); contentRef.current.style.transform = `translateY(${translateY}px)`;
} setHasOverflow(true);
} else {
contentRef.current.style.transform = "translateY(0)";
setHasOverflow(false);
}
});
} else if (contentRef.current) { } else if (contentRef.current) {
contentRef.current.style.transform = "translateY(0)"; contentRef.current.style.transform = "translateY(0)";
setHasOverflow(false); setHasOverflow(false);
} }
}, [thinking, isCollapsed]); }, [thinking, isCollapsed]);
useEffect(() => {
if (activelyThinking && wrapperRef.current && !isCollapsed) {
// When expanded and actively thinking, scroll to bottom
wrapperRef.current.scrollTop = wrapperRef.current.scrollHeight;
}
}, [thinking, activelyThinking, isCollapsed]);
const handleToggle = () => { const handleToggle = () => {
setIsCollapsed(!isCollapsed); setIsCollapsed(!isCollapsed);
setHasUserInteracted(true); setHasUserInteracted(true);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment