{"version":3,"file":"real-typer-angular.mjs","sources":["../../../projects/real-typer/src/lib/utils/RealTyperUtils.ts","../../../projects/real-typer/src/lib/real-typer.component.ts","../../../projects/real-typer/src/lib/real-typer.component.html","../../../projects/real-typer/src/lib/real-typer.module.ts","../../../projects/real-typer/src/public-api.ts","../../../projects/real-typer/src/real-typer-angular.ts"],"sourcesContent":["/**\r\n *   RealTyper for Angular\r\n *\r\n *   An Angular component that gives the effect of typing for texts\r\n *\r\n *   [Doc](https://github.com/cyrus2281/Real-Typer/tree/main/src/Angular/projects/real-typer#readme)\r\n *\r\n *   author: Cyrus Mobini\r\n *\r\n *   Licensed under the MIT license.\r\n *   http://www.opensource.org/licenses/mit-license.php\r\n *\r\n *   Copyright 2023 Cyrus Mobini (https://github.com/cyrus2281)\r\n *\r\n *\r\n */\r\n\r\nexport interface StringTypeOptions {\r\n  /** The speed of typing in milliseconds */\r\n  typeSpeed: number;\r\n  /** The speed of deleting in milliseconds */\r\n  deleteSpeed: number;\r\n  /** The delay between typing and deleting in milliseconds */\r\n  holdDelay: number;\r\n}\r\n\r\nexport interface RealTypeOptions {\r\n  /** The delay before typing starts in milliseconds */\r\n  startDelay: number;\r\n  /** The text that will be typed, can be an array of strings */\r\n  strings: string | string[];\r\n  /** If true, the typing will loop */\r\n  loop: boolean;\r\n  /** The index of the string that the loop will start from */\r\n  loopStartIndex: number;\r\n  /** The delay between loops in milliseconds */\r\n  loopHold: number;\r\n  /** If true, the strings will be delete after typing */\r\n  delete: boolean;\r\n  /** If true, the last string will be deleted */\r\n  deleteLastString: boolean;\r\n  /** The delay between each string element in milliseconds */\r\n  pauseDelay: number;\r\n  /** A function that will be called after each cycle */\r\n  callback: (args: unknown) => void;\r\n  /** The arguments that will be passed to the callback function */\r\n  callbackArgs: unknown;\r\n  /** If true, there would be log errors if there is an issue with the prop validation*/\r\n  developerMode: boolean;\r\n}\r\n\r\nexport interface CurserOptions {\r\n  /** The character that will be used as a cursor, \"\" for no cursor */\r\n  cursorCharacter: string;\r\n  /** whether to blink the cursor or not */\r\n  cursorBlink: boolean;\r\n}\r\n\r\nexport type EmitterInput = {\r\n  /**\r\n   * string to be added to the queue\r\n   */\r\n  input: string;\r\n  /**\r\n   * index of the string in the queue, if true, it will be the last string in the queue, if undefined, it will add it a new string to the queue\r\n   */\r\n  index?: undefined | number | true;\r\n};\r\n\r\n/**\r\n * Emit a string to be added to the list of strings to be typed\r\n * @param {string} input string to be added to the queue\r\n * @param {undefined|number|true} index index of the string in the queue, if true, it will be the last string in the queue, if undefined, it will add it a new string to the queue\r\n */\r\nexport type Emit = (input: string, index: undefined | number | true) => void;\r\n\r\ninterface LoopInput {\r\n  isRunning: boolean;\r\n  queue: string[];\r\n  location: [number, number];\r\n  typeOptions: RealTypeOptions & StringTypeOptions;\r\n  setOutput: (string: string) => void;\r\n}\r\n\r\nconst sleep = (duration: number): Promise<void> =>\r\n  new Promise((resolve) => setTimeout(resolve, duration));\r\n\r\nconst checkValues = (props: {\r\n  strings: string | string[];\r\n  developerMode: boolean;\r\n  loopStartIndex: number;\r\n  callback: (args: unknown) => void;\r\n}) => {\r\n  if (!(typeof props.strings === 'string' || Array.isArray(props.strings))) {\r\n    if (props.developerMode) {\r\n      console.warn(\r\n        'Input string should be either a string or an array of strings'\r\n      );\r\n    }\r\n    return false;\r\n  } else {\r\n    if (\r\n      Array.isArray(props.strings) &&\r\n      !(props.loopStartIndex < props.strings?.length)\r\n    ) {\r\n      if (props.developerMode) {\r\n        console.error(\r\n          'loop start value can not be bigger than length of the strings(' +\r\n            props.strings?.length +\r\n            ')'\r\n        );\r\n      }\r\n      return false;\r\n    }\r\n  }\r\n  if (!!props.callback) {\r\n    if (!(props.callback instanceof Function)) {\r\n      if (props.developerMode) {\r\n        console.error('Only a function can be assigned to callback');\r\n      }\r\n      return false;\r\n    }\r\n  }\r\n  return true;\r\n};\r\n\r\nconst typeString = async (\r\n  string: string,\r\n  location: [number, number],\r\n  deleteString: boolean,\r\n  setOutput: (output: string) => void,\r\n  typeOptions: StringTypeOptions\r\n) => {\r\n  const { typeSpeed, deleteSpeed, holdDelay } = typeOptions;\r\n\r\n  for (let i = location[1]; i < string.length; i++) {\r\n    location[1] = i;\r\n    await sleep(typeSpeed);\r\n    setOutput(string.substring(0, i + 1));\r\n  }\r\n\r\n  if (deleteString) {\r\n    await sleep(holdDelay);\r\n    for (let i = string.length; i >= 0; i--) {\r\n      location[1] = i;\r\n      await sleep(deleteSpeed);\r\n      setOutput(string.substring(0, i));\r\n    }\r\n  }\r\n};\r\n\r\nconst typeLoop = async (props: LoopInput) => {\r\n  const { queue, location, typeOptions, setOutput } = props;\r\n  const {\r\n    loop,\r\n    loopStartIndex,\r\n    loopHold,\r\n    delete: deleteProp,\r\n    deleteLastString,\r\n    pauseDelay,\r\n    callback,\r\n    callbackArgs,\r\n  } = typeOptions;\r\n\r\n  props.isRunning = true;\r\n  do {\r\n    for (let i = location[0]; i < queue.length; i++) {\r\n      location[0] = i;\r\n      const deleteString =\r\n        deleteProp && (deleteLastString || i !== queue.length - 1);\r\n\r\n      await typeString(queue[i], location, deleteString, setOutput, {\r\n        typeSpeed: typeOptions.typeSpeed,\r\n        deleteSpeed: typeOptions.deleteSpeed,\r\n        holdDelay: typeOptions.holdDelay,\r\n      });\r\n\r\n      if (\r\n        queue.length - 1 > location[0] &&\r\n        queue[location[0]].length - 1 === location[1]\r\n      ) {\r\n        // if the string is not the last string in the queue and\r\n        // the last character of the string is typed, clear index\r\n        location[1] = 0;\r\n      }\r\n      pauseDelay && (await sleep(pauseDelay));\r\n    }\r\n    callback && callback(callbackArgs);\r\n    if (loop) {\r\n      loopHold && (await sleep(loopHold));\r\n      location[0] = loopStartIndex;\r\n    }\r\n  } while (loop);\r\n  props.isRunning = false;\r\n};\r\n\r\nexport const realType = (\r\n  typeOptions: RealTypeOptions & StringTypeOptions,\r\n  setOutput: (string: string) => void\r\n) => {\r\n  const { startDelay, strings, loopStartIndex, callback, developerMode } =\r\n    typeOptions;\r\n\r\n  if (\r\n    !checkValues({\r\n      strings,\r\n      developerMode,\r\n      loopStartIndex,\r\n      callback,\r\n    })\r\n  ) {\r\n    throw new Error('Invalid input, set developerMode to true for more info');\r\n  }\r\n\r\n  const initialValues = Array.isArray(strings) ? strings : [strings];\r\n  const loopInput: LoopInput = {\r\n    isRunning: true,\r\n    queue: initialValues,\r\n    location: [0, 0],\r\n    typeOptions,\r\n    setOutput,\r\n  };\r\n\r\n  const start = async () => {\r\n    startDelay && (await sleep(startDelay));\r\n    typeLoop(loopInput);\r\n  };\r\n\r\n  /**\r\n   * Emit a string to be added to the list of strings to be typed\r\n   * @param {string} input string to be added to the queue\r\n   * @param {undefined|number|true} index index of the string in the queue, if true, it will be the last string in the queue, if undefined, it will add it a new string to the queue\r\n   */\r\n  const streamInput: Emit = (input, index) => {\r\n    if (index === true) {\r\n      index = loopInput.queue.length - 1;\r\n    }\r\n    if (typeof index === 'number' && index < loopInput.queue.length) {\r\n      loopInput.queue[index] += input;\r\n    } else {\r\n      loopInput.queue.push(input);\r\n    }\r\n    if (!loopInput.isRunning) {\r\n      typeLoop(loopInput);\r\n    }\r\n  };\r\n\r\n  start();\r\n  return streamInput;\r\n};\r\n\r\nexport const realTyperDefaultProps: RealTypeOptions &\r\n  StringTypeOptions &\r\n  CurserOptions = {\r\n  strings: '',\r\n  cursorCharacter: '|',\r\n  cursorBlink: true,\r\n  typeSpeed: 100,\r\n  deleteSpeed: 50,\r\n  holdDelay: 1500,\r\n  pauseDelay: 1000,\r\n  startDelay: 0,\r\n  delete: true,\r\n  deleteLastString: true,\r\n  loop: true,\r\n  loopHold: 1500,\r\n  loopStartIndex: 0,\r\n  callback: () => {},\r\n  callbackArgs: undefined,\r\n  developerMode: false,\r\n};\r\n\r\nexport default realType;\r\n","import {\r\n  AfterViewInit,\r\n  OnDestroy,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  Output,\r\n} from '@angular/core';\r\nimport realType, {\r\n  realTyperDefaultProps,\r\n  Emit,\r\n  EmitterInput,\r\n} from './utils/RealTyperUtils';\r\n\r\n/**\r\n *   RealTyper for Angular\r\n *\r\n *   An Angular component that gives the effect of typing for texts\r\n *\r\n *   [Doc](https://github.com/cyrus2281/Real-Typer/tree/main/src/Angular/projects/real-typer#readme)\r\n *\r\n *   [Github](https://github.com/cyrus2281)\r\n *\r\n */\r\n@Component({\r\n  selector: 'real-typer',\r\n  templateUrl: './real-typer.component.html',\r\n  styleUrls: ['./real-typer.component.css'],\r\n})\r\nexport class RealTyperComponent implements AfterViewInit, OnDestroy {\r\n  @Input() strings!: string | string[];\r\n  @Input() cursorCharacter: string = realTyperDefaultProps.cursorCharacter;\r\n  @Input() cursorBlink: boolean = realTyperDefaultProps.cursorBlink;\r\n  @Input() typeSpeed: number = realTyperDefaultProps.typeSpeed;\r\n  @Input() deleteSpeed: number = realTyperDefaultProps.deleteSpeed;\r\n  @Input() holdDelay: number = realTyperDefaultProps.holdDelay;\r\n  @Input() pauseDelay: number = realTyperDefaultProps.pauseDelay;\r\n  @Input() startDelay: number = realTyperDefaultProps.startDelay;\r\n  @Input() delete: boolean = realTyperDefaultProps.delete;\r\n  @Input() deleteLastString: boolean = realTyperDefaultProps.deleteLastString;\r\n  @Input() loop: boolean = realTyperDefaultProps.loop;\r\n  @Input() loopHold: number = realTyperDefaultProps.loopHold;\r\n  @Input() loopStartIndex: number = realTyperDefaultProps.loopStartIndex;\r\n  @Input() developerMode: boolean = realTyperDefaultProps.developerMode;\r\n  @Input() callback!: Function;\r\n  @Input() callbackArgs!: any;\r\n  @Input() styles!: {};\r\n\r\n  @Input() emitter: EventEmitter<EmitterInput> = new EventEmitter();\r\n  @Output() callBackOutput: EventEmitter<any> = new EventEmitter();\r\n\r\n  public typerOutput: string = '';\r\n  private _typerEmitter!: Emit;\r\n\r\n  ngAfterViewInit(): void {\r\n    this.type();\r\n    this.emitter.subscribe((event) => {\r\n      this._typerEmitter(event.input, event.index);\r\n    });\r\n  }\r\n\r\n  setOutput = (string: string) => {\r\n    this.typerOutput = string;\r\n  };\r\n\r\n  eventBasedCallback = (args: any) => {\r\n    if (!!this.callback) {\r\n      this.callBackOutput.emit(this.callback(this.callbackArgs));\r\n    }\r\n  };\r\n\r\n  type(): void {\r\n    this._typerEmitter = realType(\r\n      {\r\n        strings: this.strings,\r\n        typeSpeed: this.typeSpeed,\r\n        deleteSpeed: this.deleteSpeed,\r\n        holdDelay: this.holdDelay,\r\n        pauseDelay: this.pauseDelay,\r\n        startDelay: this.startDelay,\r\n        delete: this.delete,\r\n        deleteLastString: this.deleteLastString,\r\n        loop: this.loop,\r\n        loopHold: this.loopHold,\r\n        loopStartIndex: this.loopStartIndex,\r\n        callback: this.eventBasedCallback,\r\n        callbackArgs: this.callbackArgs,\r\n        developerMode: this.developerMode,\r\n      },\r\n      this.setOutput\r\n    );\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.emitter) this.emitter.unsubscribe();\r\n  }\r\n}\r\n","<div [ngStyle]=\"styles\">\r\n  <span>\r\n    {{ typerOutput }}\r\n  </span>\r\n  <span [ngClass]=\"{'real-typer-cursor-animation': cursorBlink }\">\r\n    {{ cursorCharacter }}\r\n  </span>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { RealTyperComponent } from './real-typer.component';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n\r\n@NgModule({\r\n  declarations: [\r\n    RealTyperComponent\r\n  ],\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  exports: [\r\n    RealTyperComponent\r\n  ]\r\n})\r\nexport class RealTyperModule { }\r\n","/*\r\n * Public API Surface of real-typer\r\n */\r\n\r\nexport * from './lib/real-typer.component';\r\nexport * from './lib/real-typer.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}