chatbot-template/components/use-scroll-to-bottom.ts

32 lines
727 B
TypeScript
Raw Normal View History

2024-11-14 12:16:05 -05:00
import { useEffect, useRef, RefObject } from 'react';
2024-10-11 18:00:22 +05:30
export function useScrollToBottom<T extends HTMLElement>(): [
RefObject<T>,
RefObject<T>,
] {
const containerRef = useRef<T>(null);
const endRef = useRef<T>(null);
useEffect(() => {
const container = containerRef.current;
const end = endRef.current;
if (container && end) {
const observer = new MutationObserver(() => {
2024-11-14 12:16:05 -05:00
end.scrollIntoView({ behavior: 'instant', block: 'end' });
2024-10-11 18:00:22 +05:30
});
observer.observe(container, {
childList: true,
subtree: true,
attributes: true,
characterData: true,
2024-10-11 18:00:22 +05:30
});
return () => observer.disconnect();
}
}, []);
return [containerRef, endRef];
}