@llamaindex/ui
Version:
A comprehensive UI component library built with React, TypeScript, and Tailwind CSS for LlamaIndex applications
33 lines (27 loc) • 1.04 kB
JavaScript
;
var React = require('react');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var React__default = /*#__PURE__*/_interopDefault(React);
// src/lib/use-stream-event-batcher.ts
function useStreamEventBatcher(pushIntervalMs = 100, sort) {
const bufferRef = React__default.default.useRef([]);
const [items, setItems] = React__default.default.useState([]);
const push = React__default.default.useCallback((item) => {
bufferRef.current.push(item);
}, []);
const clear = React__default.default.useCallback(() => {
bufferRef.current = [];
setItems([]);
}, []);
React__default.default.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 };
}
exports.useStreamEventBatcher = useStreamEventBatcher;