svelte-chatbot-test / src /lib /typingAnimation.ts
ferrywuai's picture
Add loading and typing animation
84e5d08
import { writable } from "svelte/store";
export const displayedText = writable("");
export function runTypingAnimation(
fullText: string,
enabled: boolean
): Promise<void> {
return new Promise((resolve) => {
if (!enabled) {
displayedText.set(fullText);
resolve();
return;
}
displayedText.set("");
let index = 0;
const typeNextChar = () => {
if (index < fullText.length) {
displayedText.update((t) => t + fullText[index]);
index++;
setTimeout(typeNextChar, 30);
} else {
resolve();
}
};
typeNextChar();
});
}