{"version":3,"file":"ng-otp-input.mjs","sources":["../../../projects/ng-otp-input/src/lib/utils/keyboard-util.ts","../../../projects/ng-otp-input/src/lib/utils/object-util.ts","../../../projects/ng-otp-input/src/lib/components/ng-otp-input/ng-otp-input.component.ts","../../../projects/ng-otp-input/src/lib/components/ng-otp-input/ng-otp-input.component.html","../../../projects/ng-otp-input/src/lib/ng-otp-input.module.ts","../../../projects/ng-otp-input/src/lib/models/config.ts","../../../projects/ng-otp-input/src/public_api.ts","../../../projects/ng-otp-input/src/ng-otp-input.ts"],"sourcesContent":["export class KeyboardUtil{\r\n    static ifTab(event:KeyboardEvent){\r\n        return this.ifKey(event,'Tab');\r\n    }\r\n    static ifDelete(event:KeyboardEvent){\r\n        return this.ifKey(event,'Delete;Del');\r\n    }\r\n    static ifBackspace(event:KeyboardEvent){\r\n        return this.ifKey(event,'Backspace');\r\n    }\r\n    static ifRightArrow(event:KeyboardEvent){\r\n        return this.ifKey(event,'ArrowRight;Right')\r\n    }\r\n    static ifLeftArrow(event:KeyboardEvent){\r\n        return this.ifKey(event,'ArrowLeft;Left')\r\n    }\r\n    static ifSpacebar(event:KeyboardEvent){\r\n        return this.ifKey(event,'Spacebar; ')//don't remove the space after ; as this will check for space key\r\n    }\r\n    static  ifKey(event:KeyboardEvent, keys:string):boolean{\r\n        let keysToCheck=keys.split(';');\r\n        return keysToCheck.some(k=> k ===event.key);\r\n    }\r\n}","export class ObjectUtil{\r\n    static keys(obj):string[]{\r\n        if(!obj) return [];\r\n        return Object.keys(obj);\r\n    }\r\n}","import {\r\n  Component,\r\n  OnInit,\r\n  Input,\r\n  Output,\r\n  AfterViewInit,\r\n  Inject,\r\n  forwardRef,\r\n  Injector\r\n} from '@angular/core';\r\nimport { FormGroup, FormControl, ReactiveFormsModule, NG_VALUE_ACCESSOR, ControlValueAccessor, NgControl } from '@angular/forms';\r\nimport { Config } from '../../models/config';\r\nimport { KeyboardUtil } from '../../utils/keyboard-util';\r\nimport { DOCUMENT, NgClass, NgFor, NgIf, NgStyle } from '@angular/common';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil } from 'rxjs/operators';\r\nimport { ObjectUtil } from '../../utils/object-util';\r\nimport { OnDestroy } from '@angular/core';\r\n@Component({\r\n  // tslint:disable-next-line: component-selector\r\n  selector: 'ng-otp-input, ngx-otp-input',\r\n  templateUrl: './ng-otp-input.component.html',\r\n  styleUrls: ['./ng-otp-input.component.scss'],\r\n  imports: [ReactiveFormsModule, NgIf, NgFor, NgStyle, NgClass],\r\n  providers: [\r\n    {\r\n      provide: NG_VALUE_ACCESSOR,\r\n      useExisting: forwardRef(() => NgOtpInputComponent),\r\n      multi: true,\r\n    },\r\n  ]\r\n})\r\nexport class NgOtpInputComponent implements OnInit, AfterViewInit, OnDestroy, ControlValueAccessor {\r\n  @Input() config: Config = { length: 4 };\r\n  /**\r\n   * @deprecated formCtrl is deprecated and will be removed soon. Use `FormControl` instead.\r\n   */\r\n  @Input() formCtrl: FormControl;\r\n  @Input() set disabled(isDisabled: boolean) {\r\n    this.setDisabledState(isDisabled);\r\n  }\r\n  @Output() onBlur = new Subject<void>();\r\n  @Output() onInputChange = new Subject<string>();\r\n  otpForm: FormGroup;\r\n  currentVal: string;\r\n  inputControls: FormControl[] = new Array(this.config.length);\r\n  componentKey = Math.random()\r\n    .toString(36)\r\n    .substring(2) + new Date().getTime().toString(36);\r\n  get inputType() {\r\n    return this.config?.isPasswordInput\r\n      ? 'password'\r\n      : this.config?.allowNumbersOnly\r\n        ? 'tel'\r\n        : 'text';\r\n  }\r\n  get controlKeys() { return ObjectUtil.keys(this.otpForm?.controls) };\r\n  private destroy$ = new Subject<void>();\r\n  private activeFocusCount = 0;\r\n  private onChange: (value: any) => void = () => { };\r\n  private onTouched: () => void = () => { };\r\n  private _isDisabled: boolean = false;\r\n  get formControl() {\r\n    return this.formCtrl ?? this.inj?.get(NgControl);\r\n  }\r\n  constructor(@Inject(DOCUMENT) private document: Document, private inj: Injector) {\r\n   \r\n  }\r\n\r\n\r\n  ngOnInit() {\r\n    this.otpForm = new FormGroup({});\r\n    for (let index = 0; index < this.config.length; index++) {\r\n      this.otpForm.addControl(this.getControlName(index), new FormControl());\r\n    }\r\n    this.otpForm.valueChanges.pipe(takeUntil(this.destroy$)).subscribe((v: object) => {\r\n      ObjectUtil.keys(this.otpForm.controls).forEach((k) => {\r\n        var val = this.otpForm.controls[k].value;\r\n        if (val && val.length > 1) {\r\n          if (val.length >= this.config.length) {\r\n            this.setValue(val);\r\n          } else {\r\n            this.rebuildValue();\r\n          }\r\n        }\r\n      });\r\n    });\r\n  }\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this._isDisabled = isDisabled; // Update local state\r\n    if (this.otpForm) {\r\n      if (isDisabled) {\r\n        this.otpForm.disable({ emitEvent: false }); // Disable form group\r\n      } else {\r\n        this.otpForm.enable({ emitEvent: false }); // Enable form group\r\n      }\r\n    }\r\n  }\r\n  writeValue(value: string): void {\r\n    this.currentVal = !this.hasVal(value) ? null : value;\r\n    this.setValue(this.currentVal);\r\n  }\r\n\r\n  registerOnChange(fn: any): void {\r\n    this.onChange = fn;\r\n  }\r\n\r\n  registerOnTouched(fn: any): void {\r\n    this.onTouched = fn;\r\n  }\r\n\r\n  onFocusIn() {\r\n    this.onTouched();\r\n    this.activeFocusCount++;\r\n  }\r\n\r\n  onFocusOut() {\r\n    setTimeout(() => {\r\n      this.activeFocusCount--;\r\n      if (this.activeFocusCount === 0) {\r\n        this.onTouched();\r\n        this.onBlur.next();\r\n      }\r\n    }, 0);\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (!this.config.disableAutoFocus) {\r\n      const containerItem = this.document.getElementById(`c_${this.componentKey}`);\r\n      if (containerItem) {\r\n        const ele: any = containerItem.getElementsByClassName('otp-input')[0];\r\n        if (ele && ele.focus) {\r\n          ele.focus();\r\n        }\r\n      }\r\n    }\r\n  }\r\n  private getControlName(idx) {\r\n    return `ctrl_${idx}`;\r\n  }\r\n\r\n  onKeyDown($event, inputIdx) {\r\n    const prevInputId = this.getBoxId(inputIdx - 1);\r\n    const currentInputId = this.getBoxId(inputIdx);\r\n    if (KeyboardUtil.ifKey($event, 'Enter')) {\r\n      let inp = this.document.getElementById(currentInputId);\r\n      const form = inp?.closest('form');\r\n      if (form) {\r\n        $event.preventDefault();\r\n        const submitEvent = new Event('submit', { bubbles: true, cancelable: true });\r\n        form.dispatchEvent(submitEvent);\r\n        return;\r\n      }\r\n    }\r\n    if (KeyboardUtil.ifSpacebar($event)) {\r\n      $event.preventDefault();\r\n      return false;\r\n    }\r\n    if (KeyboardUtil.ifBackspace($event)) {\r\n      if (!$event.target.value) {\r\n        this.clearInput(prevInputId, inputIdx - 1);\r\n        this.setSelected(prevInputId);\r\n      } else {\r\n        this.clearInput(currentInputId, inputIdx);\r\n      }\r\n      this.rebuildValue();\r\n      return;\r\n    }\r\n    if (KeyboardUtil.ifDelete($event)) {\r\n      if (!$event.target.value) {\r\n        this.clearInput(prevInputId, inputIdx - 1);\r\n        this.setSelected(prevInputId);\r\n      } else {\r\n        this.clearInput(currentInputId, inputIdx);\r\n      }\r\n      this.rebuildValue();\r\n      return;\r\n    }\r\n\r\n  }\r\n  hasVal(val) {\r\n    return val != null && val != undefined && (!val?.trim || val.trim() != '');\r\n  }\r\n  onInput($event, inputIdx) {\r\n    let newVal = this.hasVal(this.currentVal) ? `${this.currentVal}${$event.target.value}` : $event.target.value;\r\n    if (this.config.allowNumbersOnly && !this.validateNumber(newVal)) {\r\n      $event.target.value = null;\r\n      $event.stopPropagation();\r\n      $event.preventDefault();\r\n      this.clearInput(null, inputIdx);\r\n      return;\r\n    }\r\n    if (this.ifValidKeyCode(null, $event.target.value)) {\r\n      const nextInputId = this.getBoxId(inputIdx + 1);\r\n      this.setSelected(nextInputId);\r\n      this.rebuildValue();\r\n    } else {\r\n      $event.target.value = null;\r\n      let ctrlName = this.getControlName(inputIdx);\r\n      this.otpForm.controls[ctrlName]?.setValue(null);\r\n      this.rebuildValue();\r\n    }\r\n  }\r\n\r\n\r\n  onKeyUp($event, inputIdx) {\r\n    if (KeyboardUtil.ifTab($event)) {\r\n      inputIdx -= 1;\r\n    }\r\n    const nextInputId = this.getBoxId(inputIdx + 1);\r\n    const prevInputId = this.getBoxId(inputIdx - 1);\r\n    if (KeyboardUtil.ifRightArrow($event)) {\r\n      $event.preventDefault();\r\n      this.setSelected(nextInputId);\r\n      return;\r\n    }\r\n    if (KeyboardUtil.ifLeftArrow($event)) {\r\n      $event.preventDefault();\r\n      this.setSelected(prevInputId);\r\n      return;\r\n    }\r\n  }\r\n\r\n  validateNumber(val) {\r\n    return val && /^[0-9]+$/.test(val);\r\n  }\r\n\r\n  getBoxId(idx: string | number) {\r\n    return `otp_${idx}_${this.componentKey}`;\r\n  }\r\n\r\n  private clearInput(eleId: string, inputIdx) {\r\n    let ctrlName = this.getControlName(inputIdx);\r\n    this.otpForm.controls[ctrlName]?.setValue(null);\r\n    if (eleId) {\r\n      const ele = this.document.getElementById(eleId);\r\n      if (ele && ele instanceof HTMLInputElement) {\r\n        ele.value = null;\r\n      }\r\n    }\r\n  }\r\n\r\n  private setSelected(eleId) {\r\n    this.focusTo(eleId);\r\n    const ele: any = this.document.getElementById(eleId);\r\n    if (ele && ele.setSelectionRange) {\r\n      setTimeout(() => {\r\n        ele.setSelectionRange(0, 1);\r\n      }, 0);\r\n    }\r\n  }\r\n\r\n  private ifValidKeyCode(event, val?) {\r\n    const inp = val ?? event.key;\r\n    if (this.config?.allowNumbersOnly) {\r\n      return this.validateNumber(inp);\r\n    }\r\n    const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\r\n    return (\r\n      isMobile ||\r\n      (/^[a-zA-Z0-9%*_\\-@#$!]$/.test(inp) && inp.length == 1)\r\n    );\r\n  }\r\n\r\n  focusTo(eleId) {\r\n    const ele: any = this.document.getElementById(eleId);\r\n    if (ele) {\r\n      ele.focus();\r\n    }\r\n  }\r\n\r\n  // method to set component value\r\n  setValue(value: any) {\r\n    if (this.config.allowNumbersOnly && isNaN(value)) {\r\n      return;\r\n    }\r\n    this.otpForm?.reset();\r\n    if (!this.hasVal(value)) {\r\n      this.rebuildValue();\r\n      return;\r\n    }\r\n    value = value.toString().replace(/\\s/g, ''); // remove whitespace\r\n    Array.from(value).forEach((c, idx) => {\r\n      if (this.otpForm.get(this.getControlName(idx))) {\r\n        this.otpForm.get(this.getControlName(idx)).setValue(c);\r\n      }\r\n    });\r\n    if (!this.config.disableAutoFocus) {\r\n      setTimeout(() => {\r\n        const containerItem = this.document.getElementById(`c_${this.componentKey}`);\r\n        var indexOfElementToFocus = value.length < this.config.length ? value.length : (this.config.length - 1);\r\n        let ele: any = containerItem.getElementsByClassName('otp-input')[indexOfElementToFocus];\r\n        if (ele && ele.focus) {\r\n          setTimeout(() => {\r\n            ele.focus();\r\n          }, 1);\r\n        }\r\n      }, 0);\r\n\r\n    }\r\n    this.rebuildValue();\r\n  }\r\n\r\n  private rebuildValue() {\r\n    let val = null;\r\n    ObjectUtil.keys(this.otpForm.controls).forEach(k => {\r\n      let ctrlVal = this.otpForm.controls[k].value;\r\n      if (ctrlVal) {\r\n        let isLengthExceed = ctrlVal.length > 1;\r\n        let isCaseTransformEnabled = !this.config.allowNumbersOnly && this.config.letterCase && (this.config.letterCase.toLocaleLowerCase() == 'upper' || this.config.letterCase.toLocaleLowerCase() == 'lower');\r\n        ctrlVal = ctrlVal[0];\r\n        let transformedVal = isCaseTransformEnabled ? this.config.letterCase.toLocaleLowerCase() == 'upper' ? ctrlVal.toUpperCase() : ctrlVal.toLowerCase() : ctrlVal;\r\n        if (isCaseTransformEnabled && transformedVal == ctrlVal) {\r\n          isCaseTransformEnabled = false;\r\n        } else {\r\n          ctrlVal = transformedVal;\r\n        }\r\n        if (val == null) {\r\n          val = ctrlVal;\r\n        } else {\r\n          val += ctrlVal;\r\n        }\r\n        if (isLengthExceed || isCaseTransformEnabled) {\r\n          this.otpForm.controls[k].setValue(ctrlVal);\r\n        }\r\n      }\r\n    });\r\n    if (this.currentVal != val) {\r\n      this.currentVal = val;\r\n      this.onChange(val);\r\n      if (this.formCtrl?.setValue) {\r\n        this.formCtrl.setValue(val);\r\n      }\r\n      this.onInputChange.next(val);\r\n    }\r\n  }\r\n\r\n\r\n  handlePaste(e) {\r\n    // Get pasted data via clipboard API\r\n    let clipboardData = e.clipboardData || window['clipboardData'];\r\n    if (clipboardData) {\r\n      var pastedData = clipboardData.getData('Text');\r\n    }\r\n    e.stopPropagation();\r\n    e.preventDefault();\r\n    if (!pastedData || (this.config.allowNumbersOnly && !this.validateNumber(pastedData))) {\r\n      return;\r\n    }\r\n    this.setValue(pastedData);\r\n  }\r\n  ngOnDestroy() {\r\n    this.destroy$.next();\r\n    this.destroy$.complete();\r\n  }\r\n}\r\n\r\n\r\n","<div class=\"ng-otp-input-wrapper wrapper {{config.containerClass}}\" id=\"c_{{componentKey}}\" *ngIf=\"otpForm?.controls\"\r\n  [ngStyle]=\"config.containerStyles\" tabindex=\"0\" \r\n  (focusin)=\"onFocusIn()\" \r\n  (focusout)=\"onFocusOut()\">\r\n  <div class=\"n-o-c\">\r\n    <ng-container *ngFor=\"let item of controlKeys;let i=index;let last=last\">\r\n      <input (paste)=\"handlePaste($event)\" [pattern]=\"config.allowNumbersOnly ? '\\\\d*' : ''\" \r\n      [type]=\"inputType\"  [placeholder]=\"config?.placeholder || ''\"\r\n      [attr.inputmode]=\"config.allowNumbersOnly ? 'numeric' : (config.inputMode ||'text')\"\r\n      [ngStyle]=\"config.inputStyles\" \r\n      class=\"otp-input {{config.inputClass}}\" autocomplete=\"one-time-code\" \r\n      [formControl]=\"otpForm.controls[item]\" #inp [id]=\"getBoxId(i)\" \r\n      (keyup)=\"onKeyUp($event,i)\" (input)=\"onInput($event,i)\" (keydown)=\"onKeyDown($event,i)\" [ngClass]=\"{'error-input': (config?.showError && formControl?.invalid && (formControl?.dirty || formControl?.touched))}\">\r\n      <span *ngIf=\"config.separator && !last\">\r\n        {{config.separator}}\r\n      </span>\r\n    </ng-container>\r\n  </div>  \r\n</div>","import { NgModule } from '@angular/core';\r\nimport { NgOtpInputComponent } from './components/ng-otp-input/ng-otp-input.component';\r\n\r\n@NgModule({\r\n  imports: [\r\n    NgOtpInputComponent\r\n  ],\r\n  exports: [NgOtpInputComponent]\r\n})\r\nexport class NgOtpInputModule { }\r\n","export class Config {\r\n  inputStyles?: { [key: string]: any };\r\n  containerStyles?: { [key: string]: any };\r\n  length: number;\r\n  allowNumbersOnly?: boolean;\r\n  inputClass?: string;\r\n  inputMode?: string;\r\n  containerClass?: string;\r\n  isPasswordInput?: boolean;\r\n  disableAutoFocus?: boolean;\r\n  placeholder?: string;\r\n  letterCase?: \"Upper\" | \"Lower\";\r\n  separator?:string;\r\n  showError?:boolean;\r\n}\r\n","/*\r\n * Public API Surface of ng-otp-input\r\n */\r\n\r\nexport * from './lib/ng-otp-input.module';\r\nexport {Config as NgOtpInputConfig} from './lib/models/config';\r\nexport * from './lib/components/ng-otp-input/ng-otp-input.component';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}