{"version":3,"file":"ngx-otp-pin.mjs","sources":["../../../projects/ngx-otp/src/lib/ngx-otp.component.ts","../../../projects/ngx-otp/src/lib/ngx-otp.component.html","../../../projects/ngx-otp/src/public-api.ts","../../../projects/ngx-otp/src/ngx-otp-pin.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, QueryList, ViewChildren, ElementRef, Input, OnInit, ViewEncapsulation, Output, EventEmitter } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\nexport enum OTP_TYPE {\r\n  DIGITS = 'DIGITS',\r\n  CAPITAL_LETTERS = 'CAPITAL_LETTERS',\r\n  LETTERS = 'LETTERS',\r\n  SMALL_LETTERS = 'SMALL_LETTERS',\r\n  ALPHA_NUMERIC = 'ALPHA_NUMERIC'\r\n}\r\n\r\n@Component({\r\n  selector: 'ngx-otp',\r\n  standalone: true,\r\n  imports: [CommonModule, FormsModule],\r\n  templateUrl: './ngx-otp.component.html',\r\n  styleUrls: ['./ngx-otp.component.scss'],\r\n})\r\nexport class NgxOtp implements OnInit {\r\n  @Input() size = 4;\r\n  @Input() type: OTP_TYPE = OTP_TYPE.DIGITS;\r\n  @Input() isPassword = false;\r\n\r\n  @Input() containerStyles: { [key: string]: string } = {};\r\n  @Input() inputStyles: { [key: string]: string } = {};\r\n\r\n  @Input() containerClass: string = '';\r\n  @Input() inputClass: string = '';\r\n\r\n  opt: string[] = [];\r\n\r\n  @Output('opt') optValue = new EventEmitter()\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit(): void {\r\n    this.opt = new Array(this.size)\r\n    console.log(this.opt)\r\n  }\r\n\r\n  @ViewChildren('otpInput') inputRefs!: QueryList<ElementRef<HTMLInputElement>>;\r\n\r\n  protected move(currentIndex: number, $event: KeyboardEvent) {\r\n    const key = $event.key;\r\n    if (key === 'Backspace' || key === 'Delete') {\r\n      this.opt[currentIndex] = '';\r\n      const prevInput = this.inputRefs.get(currentIndex - 1);\r\n      if (this.opt[currentIndex] === '' && prevInput) {\r\n        prevInput.nativeElement.focus();\r\n      }\r\n    } else if (this.isValidKey(key)) {\r\n      this.opt[currentIndex] = key;\r\n      const nextInput = this.inputRefs.get(currentIndex + 1);\r\n      if (nextInput) {\r\n        nextInput.nativeElement.focus();\r\n      }\r\n    }\r\n    this.optValue.emit(this.opt.join(''))\r\n    $event.preventDefault();\r\n  }\r\n\r\n  private isValidKey(key: string): boolean {\r\n    switch (this.type) {\r\n      case OTP_TYPE.DIGITS:\r\n        return /^[0-9]$/.test(key);\r\n      case OTP_TYPE.CAPITAL_LETTERS:\r\n        return /^[A-Z]$/.test(key);\r\n      case OTP_TYPE.SMALL_LETTERS:\r\n        return /^[a-z]$/.test(key);\r\n      case OTP_TYPE.LETTERS:\r\n        return /^[a-zA-Z]$/.test(key);\r\n      case OTP_TYPE.ALPHA_NUMERIC:\r\n        return /^[a-zA-Z0-9]$/.test(key);\r\n      default:\r\n        return false;\r\n    }\r\n  }\r\n}\r\n","<div>\r\n    <div aria-label=\"otp container\" [ngClass]=\"containerClass\" [ngStyle]=\"containerStyles\" class=\"otp-container\">\r\n        @for(digit of opt; track $index) {\r\n        <div class=\"digital\">\r\n            <input #otpInput [attr.aria-label]=\"'opt number ' + $index\" [ngClass]=\"inputClass\" [ngStyle]=\"inputStyles\"\r\n                [ngModel]=\"digit\" [id]=\"'input_'+$index\" [type]=\"isPassword? 'password':'text'\"\r\n                (keydown)=\"move($index, $event)\" maxlength=\"1\" />\r\n        </div>\r\n        }\r\n    </div>\r\n\r\n</div>","/*\r\n * Public API Surface of ngx-otp\r\n */\r\n\r\nexport * from './lib/ngx-otp.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}