{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\r\n  Observable,\r\n  concat,\r\n  concatMap,\r\n  delay,\r\n  from,\r\n  ignoreElements,\r\n  interval,\r\n  map,\r\n  of,\r\n  repeat,\r\n  take,\r\n} from \"rxjs\";\r\n\r\nexport class TypeWriter {\r\n  private writeSpeed = 40;\r\n  private waitAfterTyped = 3500;\r\n  private waitAfterDeleted = 50;\r\n  private loop = true;\r\n  private wordsCount = 0;\r\n\r\n  typeWriteEffect(\r\n    words: string[],\r\n    loop?: boolean,\r\n    writeSpeed?: number,\r\n    deleteDelay?: number,\r\n    writeDelay?: number\r\n  ): Observable<string> {\r\n    this.writeSpeed = writeSpeed ?? this.writeSpeed;\r\n    this.waitAfterTyped = deleteDelay ?? this.waitAfterTyped;\r\n    this.waitAfterDeleted = writeDelay ?? this.waitAfterDeleted;\r\n    this.loop = loop ?? this.loop;\r\n\r\n    this.wordsCount = words.length;\r\n\r\n    return this.startTypewriter(words);\r\n  }\r\n\r\n  private startTypewriter(words: string[]): Observable<string> {\r\n    if (this.loop === false) {\r\n      return from(words).pipe(concatMap((word) => this.typeEffect(word)));\r\n    }\r\n\r\n    return from(words).pipe(\r\n      concatMap((word) => this.typeEffect(word)),\r\n      repeat()\r\n    );\r\n  }\r\n\r\n  private typeEffect(word: string): Observable<string> {\r\n    if (this.loop === false) {\r\n      this.wordsCount -= 1;\r\n    }\r\n\r\n    return concat(\r\n      this.typeWord(word),\r\n      of(\"\").pipe(delay(this.waitAfterTyped), ignoreElements()),\r\n      this.typeWord(word, true),\r\n      of(\"\").pipe(delay(this.waitAfterDeleted), ignoreElements())\r\n    );\r\n  }\r\n\r\n  private typeWord(word: string, backwards?: boolean): Observable<string> {\r\n    if (this.loop === false && this.wordsCount <= 0 && backwards) {\r\n      return of(word);\r\n    }\r\n\r\n    return interval(this.writeSpeed).pipe(\r\n      map((x) => {\r\n        return backwards\r\n          ? word.substring(0, word.length - x)\r\n          : word.substring(0, x + 1);\r\n      }),\r\n      take(word.length + 1)\r\n    );\r\n  }\r\n}\r\n"],"mappings":";AAAA;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEA,IAAM,aAAN,MAAiB;AAAA,EAAjB;AACL,SAAQ,aAAa;AACrB,SAAQ,iBAAiB;AACzB,SAAQ,mBAAmB;AAC3B,SAAQ,OAAO;AACf,SAAQ,aAAa;AAAA;AAAA,EAErB,gBACE,OACA,MACA,YACA,aACA,YACoB;AACpB,SAAK,aAAa,kCAAc,KAAK;AACrC,SAAK,iBAAiB,oCAAe,KAAK;AAC1C,SAAK,mBAAmB,kCAAc,KAAK;AAC3C,SAAK,OAAO,sBAAQ,KAAK;AAEzB,SAAK,aAAa,MAAM;AAExB,WAAO,KAAK,gBAAgB,KAAK;AAAA,EACnC;AAAA,EAEQ,gBAAgB,OAAqC;AAC3D,QAAI,KAAK,SAAS,OAAO;AACvB,aAAO,KAAK,KAAK,EAAE,KAAK,UAAU,CAAC,SAAS,KAAK,WAAW,IAAI,CAAC,CAAC;AAAA,IACpE;AAEA,WAAO,KAAK,KAAK,EAAE;AAAA,MACjB,UAAU,CAAC,SAAS,KAAK,WAAW,IAAI,CAAC;AAAA,MACzC,OAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEQ,WAAW,MAAkC;AACnD,QAAI,KAAK,SAAS,OAAO;AACvB,WAAK,cAAc;AAAA,IACrB;AAEA,WAAO;AAAA,MACL,KAAK,SAAS,IAAI;AAAA,MAClB,GAAG,EAAE,EAAE,KAAK,MAAM,KAAK,cAAc,GAAG,eAAe,CAAC;AAAA,MACxD,KAAK,SAAS,MAAM,IAAI;AAAA,MACxB,GAAG,EAAE,EAAE,KAAK,MAAM,KAAK,gBAAgB,GAAG,eAAe,CAAC;AAAA,IAC5D;AAAA,EACF;AAAA,EAEQ,SAAS,MAAc,WAAyC;AACtE,QAAI,KAAK,SAAS,SAAS,KAAK,cAAc,KAAK,WAAW;AAC5D,aAAO,GAAG,IAAI;AAAA,IAChB;AAEA,WAAO,SAAS,KAAK,UAAU,EAAE;AAAA,MAC/B,IAAI,CAAC,MAAM;AACT,eAAO,YACH,KAAK,UAAU,GAAG,KAAK,SAAS,CAAC,IACjC,KAAK,UAAU,GAAG,IAAI,CAAC;AAAA,MAC7B,CAAC;AAAA,MACD,KAAK,KAAK,SAAS,CAAC;AAAA,IACtB;AAAA,EACF;AACF;","names":[]}