UNPKG

@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
'use strict'; 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;