@llamaindex/ui
Version:
A comprehensive UI component library built with React, TypeScript, and Tailwind CSS for LlamaIndex applications
27 lines (24 loc) • 781 B
JavaScript
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 };