NeuralVault / frontend /src /utils /streamText.js
Gaurav711's picture
feat: NeuralVault 2.0 - Complete Free-Tier Groq & ML Explainability Architecture
62c290b
Raw
History Blame Contribute Delete
607 Bytes
/**
* Streaming typewriter effect - appends characters to a ref element
* @param {string} text - Text to stream
* @param {function} onChar - Called with accumulated text on each character
* @param {number} delayMs - Delay between characters
* @param {AbortSignal} signal - Optional abort signal
*/
export async function streamText(text, onChar, delayMs = 8, signal = null) {
let accumulated = '';
for (const char of text) {
if (signal && signal.aborted) break;
accumulated += char;
onChar(accumulated);
await new Promise((r) => setTimeout(r, delayMs));
}
return accumulated;
}