UNPKG

@llamaindex/ui

Version:

A comprehensive UI component library built with React, TypeScript, and Tailwind CSS for LlamaIndex applications

27 lines (24 loc) 781 B
import React from 'react'; // src/lib/use-stream-event-batcher.ts function useStreamEventBatcher(pushIntervalMs = 100, sort) { const bufferRef = React.useRef([]); const [items, setItems] = React.useState([]); const push = React.useCallback((item) => { bufferRef.current.push(item); }, []); const clear = React.useCallback(() => { bufferRef.current = []; setItems([]); }, []); React.useEffect(() => { const id = setInterval(() => { const buf = bufferRef.current; if (buf.length === 0) return; setItems((prev) => [...prev, ...buf].sort(sort)); bufferRef.current = []; }, pushIntervalMs); return () => clearInterval(id); }, [pushIntervalMs, sort]); return { items, push, clear }; } export { useStreamEventBatcher };