{"version":3,"file":"wts-otp.mjs","sources":["../../../projects/wts-otp/src/lib/wts-otp.component.ts","../../../projects/wts-otp/src/lib/wts-otp.component.html","../../../projects/wts-otp/src/public-api.ts","../../../projects/wts-otp/src/wts-otp.ts"],"sourcesContent":["import { Component, ElementRef, afterNextRender, computed, effect, forwardRef, input, output, viewChild } from '@angular/core';\nimport { IOptions } from './type';\nimport { NgStyle } from '@angular/common';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\n\nexport class Options {\n  digits: number = 4\n  placeholder: string = '' //'●' // '★', '－'\n  type: 'text' | 'number' = 'number';\n  visibleAs: \"text\" | \"password\" = 'text'\n  borderOn: 'top' | 'bottom' | 'left' | 'right' | 'all-side' = 'all-side'\n  autofocus: boolean = true\n\n  constructor(data?: any) {\n    if (!data) return;\n    Object.keys(data).forEach((key: string) => {\n      typeof (data[key]) !== 'undefined' && ((this as any)[key] = data[key]);\n    })\n  }\n}\n\n\n@Component({\n  selector: 'wts-otp, [wts-otp]',\n  // imports: [NgStyle],\n  templateUrl: './wts-otp.component.html',\n  styleUrl: './wts-otp.component.scss',\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => WtsOtpComponent), // replace name as appropriate\n      multi: true\n    }\n  ]\n})\nexport class WtsOtpComponent {\n\n  options = input<IOptions>(new Options());\n  showError = input<boolean>(false);\n  value = input<string>('');\n  valueChange = output<string>()\n  getValue = output<any>()\n  protected OTP: string = '';\n  protected config = computed(() => new Options(this.options()));\n  private OTPMaster = viewChild<ElementRef>('OTPMaster')\n  protected OPTARRAY: Array<string | number> = [];\n  constructor() {\n\n\n    afterNextRender(() => {\n      const value = this.value();\n      const _inputs = this.OTPMaster();\n      if (value && _inputs) {\n        const allvalue = value.split(\"\").slice(0, this.config().digits)\n        const otp: HTMLElement = _inputs.nativeElement, inputs = otp.querySelectorAll('input');\n        for (let i = 0; i < allvalue.length; i++) {\n          const value = allvalue[i];\n          setTimeout(() => { inputs.item(i).value = value }, 0);\n        }\n      }\n    })\n  }\n\n\n\n\n  protected _keyPress(e: KeyboardEvent, index: number) {\n    const config = this.config();\n\n    const _inputs = this.OTPMaster();\n    if (_inputs) {\n\n      let otp = _inputs.nativeElement, inputs = otp.querySelectorAll('input');\n      if (e.key === 'ArrowLeft') {\n        index > 0 && setTimeout(() => { inputs.item(index - 1).focus() }, 0);\n      }\n      if (e.key === 'ArrowRight') {\n        inputs.item(index + 1) && setTimeout(() => { inputs.item(index + 1).focus() }, 0)\n      }\n      if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n\n        inputs.item(index + 1) && setTimeout(() => { inputs.item(index + 1).focus() }, 0)\n      }\n      if (e.key === 'Backspace') {\n        inputs.item(index).value = '';\n        delete this.OPTARRAY[index];\n        this.emitValue();\n        index > 0 && setTimeout(() => { inputs.item(index - 1).focus() }, 0);\n      }\n    }\n\n    if (config.type === 'number') {\n      return e.key >= '0' && e.key <= '9'\n    } else {\n      return true\n    }\n\n  }\n\n\n  public reset(): void {\n    const _inputs = this.OTPMaster();\n    if (_inputs) {\n      const otp: HTMLElement = _inputs.nativeElement, inputs = otp.querySelectorAll('input');\n      inputs.forEach((item) => {\n        item.value = ''\n      })\n    }\n  }\n\n  public focus(index: number = 0): void {\n    if (!this.config().autofocus) return\n    const _inputs = this.OTPMaster();\n    if (_inputs) {\n      const otp = _inputs.nativeElement;\n      const inputs = otp.querySelectorAll('input');\n      index < inputs.length ? inputs.item(index).focus() : console.error('Invalid index number!');\n    }\n  }\n\n  protected onFocus(e: FocusEvent, index: number) {\n    const value = (<HTMLInputElement>e.target).value;\n    value && (<HTMLInputElement>e.target).select();\n  }\n\n  protected onInputChange(e: Event, index: number): void {\n    const config = this.config();\n    (config.digits - 1 > index) && this.focusItem(index + 1);\n    this.emitValue();\n  }\n\n  private emitValue(): void {\n    const _inputs = this.OTPMaster();\n    if (_inputs) {\n      const value: Array<number | string> = [];\n      const otp: HTMLElement = _inputs.nativeElement;\n      const inputs = otp.querySelectorAll('input');\n      inputs.forEach(element => {\n        value.push(element.value);\n      })\n      if (value.length) {\n        setTimeout(() => {\n          const _value = value.join(',').replaceAll(',', '');\n          this.valueChange.emit(_value);\n          this.getValue.emit(_value);\n        }, this.config().digits * 50);\n      }\n    }\n  }\n\n  private focusItem(index: number): void {\n    const _inputs = this.OTPMaster();\n    if (_inputs) {\n      const otp: HTMLElement = _inputs.nativeElement, inputs = otp.querySelectorAll('input');\n      inputs.item(index).focus();\n\n    }\n  }\n\n  protected onChange(e: InputEvent | Event, index: number) {\n    const config = this.config();\n    const target = e.target as HTMLInputElement;\n    target.value = target.value.slice(-1)\n    if (target.value) {\n      this.OPTARRAY[index] = target.value;\n      setTimeout(() => {\n        index < (config.digits - 1) && this.focusItem(index + 1);\n        // index >= (config.digits - 1) && this.focusItem(index - 1);\n      }, 10);\n      this.emitValue();\n      // (config.digits - 1 > index) && this.focusItem(index + 1);\n      // index && (index <= config.digits) && this.focusItem(index - 1);\n    }\n\n  }\n\n\n  protected onPaste(e: ClipboardEvent, index: number) {\n    const _inputs = this.OTPMaster();\n    if (!e.clipboardData || !_inputs) return;\n    let otp: HTMLInputElement = _inputs.nativeElement, inputs = otp.querySelectorAll('input'), value: number | string = e.clipboardData.getData('Text');\n    let isValid = true;\n    const target = e.target as HTMLInputElement;\n    if (this.config().type === 'number') {\n      value = parseFloat(value)\n      isValid = typeof (value) === 'number'\n      if (isNaN(value)) {\n        throw new Error('Invalid OTP')\n      }\n    }\n    value = value.toString();\n    if (value && isValid) {\n      const allvalue = value.slice(0, this.config().digits);\n      console.log(allvalue);\n\n      for (let i = 0; i < allvalue.length; i++) {\n        const _value = allvalue[i];\n        inputs.item(i).value = _value;\n        this.OPTARRAY[i] = _value;\n        setTimeout(() => { inputs.item(i).value = _value }, 0);\n      }\n    } else {\n      target.value = '';\n    }\n  }\n\n  protected onKeyUp(e: KeyboardEvent, index: number): void {\n\n    // const _inputs = this.OTPMaster();\n    // if (_inputs) {\n\n    //   let otp = _inputs.nativeElement, inputs = otp.querySelectorAll('input');\n    //   if (e.key === 'ArrowLeft') {\n    //     index > 0 && setTimeout(() => { inputs.item(index - 1).focus() }, 0);\n    //   }\n    //   if (e.key === 'ArrowRight') {\n    //     inputs.item(index + 1) && setTimeout(() => { inputs.item(index + 1).focus() }, 0)\n    //   }\n    //   if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n\n    //     inputs.item(index + 1) && setTimeout(() => { inputs.item(index + 1).focus() }, 0)\n    //   }\n    //   if (e.key === 'Backspace') {\n    //     console.log(e.key);\n    //   }\n    // }\n\n  }\n}\n\n","@let _config = config();\n@let _isError = showError();\n\n<div #OTPMaster class=\"___wts___OTP\" [class.___invalid]=\"_isError\">\n  @for (item of [].constructor(_config.digits); track '__inputs'+$index) {\n\n  @let isDisabled = ($index >= 1 && !(OPTARRAY[$index-1]));\n\n  <div class=\"__wts__input__box\">\n    <input type=\"password\" #inputItem name=\"password\" (input)=\"onChange($event, $index)\" autofocus\n      autocomplete=\"new-password\" [attr.inputmode]=\"_config.type === 'number' ? 'numeric' : 'text'\"\n      (paste)=\"onPaste($event, $index)\" (focus)=\"onFocus($event, $index)\" (keyup)=\"onKeyUp($event, $index)\"\n      [type]=\"_config.visibleAs  === 'password'? 'password' : 'text'\" (keydown)=\"_keyPress($event, $index)\"\n      [placeholder]=\"_config.placeholder\" [class]=\"'border-'+_config.borderOn\" [disabled]=\"isDisabled\"\n      [class.disabled]=\"isDisabled\" [class.hasError]=\"!OPTARRAY[$index]\">\n  </div>\n  }\n</div>\n","/*\n * Public API Surface of wts-otp\n */\n\nexport * from './lib/wts-otp.component';\nexport * from './lib/type';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}