File size: 617 Bytes
84e5d08
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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();
  });
}