{"version":3,"file":"ngx-otp-input.mjs","sources":["../../../projects/ngx-otp-input/src/lib/default.config.ts","../../../projects/ngx-otp-input/src/lib/otp-sanitizer.ts","../../../projects/ngx-otp-input/src/lib/caret-manager.ts","../../../projects/ngx-otp-input/src/lib/key-handlers/printable-key.handler.ts","../../../projects/ngx-otp-input/src/lib/key-handlers/arrow-key.handler.ts","../../../projects/ngx-otp-input/src/lib/key-handlers/backspace-key.handler.ts","../../../projects/ngx-otp-input/src/lib/key-handlers/delete-key.handler.ts","../../../projects/ngx-otp-input/src/lib/key-handlers/enter-key.handler.ts","../../../projects/ngx-otp-input/src/lib/key-handlers/index.ts","../../../projects/ngx-otp-input/src/lib/ngx-otp-input.component.ts","../../../projects/ngx-otp-input/src/lib/ngx-otp-input.component.html","../../../projects/ngx-otp-input/src/public-api.ts","../../../projects/ngx-otp-input/src/ngx-otp-input.ts"],"sourcesContent":["export type OtpStatus = 'idle' | 'success' | 'error';\n\nexport interface OtpStatusMessages {\n  success?: string;\n  error?: string;\n}\n\nexport interface OtpInvalidEvent {\n  reason: 'too-long' | 'char-rejected';\n  attemptedValue: string;\n  acceptedValue: string;\n}\n\nexport interface OtpChangeEvent {\n  value: string;\n  isComplete: boolean;\n}\n\nexport interface NgxOtpInputV2Defaults {\n  length: number;\n  autoFocus: boolean;\n  autoBlur: boolean;\n  mask: boolean;\n  charPattern: RegExp;\n  inputMode: string;\n  ariaLabel: string;\n  statusMessages: Required<OtpStatusMessages>;\n}\n\nexport const defaultV2: NgxOtpInputV2Defaults = {\n  length: 6,\n  autoFocus: true,\n  autoBlur: true,\n  mask: false,\n  charPattern: /^\\d$/,\n  inputMode: 'numeric',\n  ariaLabel: 'One Time Password',\n  statusMessages: {\n    success: 'Code verified.',\n    error: 'Invalid code.',\n  },\n};\n","import { OtpInvalidEvent } from './default.config';\n\nexport interface SanitizationResult {\n  attempted: string;\n  accepted: string;\n  rejectedReason?: OtpInvalidEvent['reason'];\n}\n\nexport class OtpSanitizer {\n  sanitize(\n    value: string,\n    maxLength: number,\n    charPattern: RegExp,\n  ): SanitizationResult {\n    const attempted = value ?? '';\n    const chars = attempted.split('');\n    let rejectedReason: OtpInvalidEvent['reason'] | undefined;\n\n    const acceptedChars: string[] = [];\n    for (const ch of chars) {\n      if (acceptedChars.length >= maxLength) {\n        rejectedReason = rejectedReason ?? 'too-long';\n        continue;\n      }\n      if (!this.isCharAllowed(ch, charPattern)) {\n        rejectedReason = rejectedReason ?? 'char-rejected';\n        continue;\n      }\n      acceptedChars.push(ch);\n    }\n\n    return { attempted, accepted: acceptedChars.join(''), rejectedReason };\n  }\n\n  isCharAllowed(ch: string, charPattern: RegExp): boolean {\n    const isValid = charPattern.test(ch);\n    if (charPattern.global || charPattern.sticky) {\n      charPattern.lastIndex = 0;\n    }\n    return isValid;\n  }\n}\n","export class CaretManager {\n  syncNativeValue(input: HTMLInputElement | undefined, value: string): void {\n    if (input && input.value !== value) {\n      input.value = value;\n    }\n  }\n\n  setCaretPosition(\n    input: HTMLInputElement | undefined,\n    index: number,\n    maxIndex: number,\n  ): number {\n    const clamped = Math.min(Math.max(0, index), maxIndex);\n\n    if (input) {\n      try {\n        input.setSelectionRange(clamped, clamped);\n      } catch {\n        // Ignore selection errors for unsupported input types.\n      }\n    }\n\n    return clamped;\n  }\n\n  selectAll(input: HTMLInputElement | undefined): void {\n    try {\n      input?.setSelectionRange(0, input.value.length);\n    } catch {\n      // Ignore selection errors for unsupported input types.\n    }\n  }\n}\n","import { KeyHandler, KeyHandlerContext } from './key-handler';\n\nexport class PrintableKeyHandler implements KeyHandler {\n  canHandle(event: KeyboardEvent): boolean {\n    return (\n      event.key.length === 1 &&\n      !event.ctrlKey &&\n      !event.metaKey &&\n      !event.altKey\n    );\n  }\n\n  handle(event: KeyboardEvent, context: KeyHandlerContext): void {\n    event.preventDefault();\n\n    if (!context.isCharAllowed(event.key)) {\n      context.setInvalidState('char-rejected', event.key);\n      return;\n    }\n\n    const start = Math.min(context.selectionStart, context.selectionEnd);\n    const end = Math.max(context.selectionStart, context.selectionEnd);\n    let nextValue = context.value;\n\n    if (start < context.value.length) {\n      nextValue =\n        context.value.slice(0, start) +\n        event.key +\n        context.value.slice(\n          Math.min(end + (start === end ? 1 : 0), context.value.length),\n        );\n    } else if (context.value.length < context.resolvedLength) {\n      nextValue = context.value + event.key;\n    }\n\n    const sanitized = context.sanitize(nextValue);\n    context.applySanitizedResult(sanitized, () => start + 1);\n  }\n}\n","import { KeyHandler, KeyHandlerContext } from './key-handler';\n\nexport class ArrowKeyHandler implements KeyHandler {\n  canHandle(event: KeyboardEvent): boolean {\n    return event.key === 'ArrowLeft' || event.key === 'ArrowRight';\n  }\n\n  handle(event: KeyboardEvent, context: KeyHandlerContext): void {\n    event.preventDefault();\n\n    if (event.key === 'ArrowLeft') {\n      context.setCaretIndex(context.selectionStart - 1);\n      return;\n    }\n\n    context.setCaretIndex(context.selectionStart + 1);\n  }\n}\n","import { KeyHandler, KeyHandlerContext } from './key-handler';\n\nexport class BackspaceKeyHandler implements KeyHandler {\n  canHandle(event: KeyboardEvent): boolean {\n    return event.key === 'Backspace';\n  }\n\n  handle(event: KeyboardEvent, context: KeyHandlerContext): void {\n    event.preventDefault();\n\n    const { selectionStart, selectionEnd } = context;\n\n    if (selectionEnd > selectionStart) {\n      const newValue =\n        context.value.slice(0, selectionStart) +\n        context.value.slice(selectionEnd);\n      context.setValueFromUser(newValue);\n      context.syncNativeInputValue();\n      context.setCaretIndex(selectionStart);\n      return;\n    }\n\n    if (selectionStart > 0) {\n      const nextValue =\n        context.value.slice(0, selectionStart - 1) +\n        context.value.slice(selectionStart);\n      context.setValueFromUser(nextValue);\n      context.syncNativeInputValue();\n      context.setCaretIndex(selectionStart - 1);\n    }\n  }\n}\n","import { KeyHandler, KeyHandlerContext } from './key-handler';\n\nexport class DeleteKeyHandler implements KeyHandler {\n  canHandle(event: KeyboardEvent): boolean {\n    return event.key === 'Delete';\n  }\n\n  handle(event: KeyboardEvent, context: KeyHandlerContext): void {\n    event.preventDefault();\n\n    const { selectionStart, selectionEnd } = context;\n\n    if (selectionEnd > selectionStart) {\n      const newValue =\n        context.value.slice(0, selectionStart) +\n        context.value.slice(selectionEnd);\n      context.setValueFromUser(newValue);\n      context.syncNativeInputValue();\n      context.setCaretIndex(selectionStart);\n      return;\n    }\n\n    if (selectionStart < context.value.length) {\n      const nextValue =\n        context.value.slice(0, selectionStart) +\n        context.value.slice(selectionStart + 1);\n      context.setValueFromUser(nextValue);\n      context.syncNativeInputValue();\n      context.setCaretIndex(selectionStart);\n    }\n  }\n}\n","import { KeyHandler, KeyHandlerContext } from './key-handler';\n\nexport class EnterKeyHandler implements KeyHandler {\n  canHandle(event: KeyboardEvent): boolean {\n    return event.key === 'Enter';\n  }\n\n  handle(event: KeyboardEvent, context: KeyHandlerContext): void {\n    void context;\n    event.preventDefault();\n  }\n}\n","export { KeyHandler, KeyHandlerContext } from './key-handler';\nexport { PrintableKeyHandler } from './printable-key.handler';\nexport { ArrowKeyHandler } from './arrow-key.handler';\nexport { BackspaceKeyHandler } from './backspace-key.handler';\nexport { DeleteKeyHandler } from './delete-key.handler';\nexport { EnterKeyHandler } from './enter-key.handler';\n\nimport { KeyHandler } from './key-handler';\nimport { PrintableKeyHandler } from './printable-key.handler';\nimport { ArrowKeyHandler } from './arrow-key.handler';\nimport { BackspaceKeyHandler } from './backspace-key.handler';\nimport { DeleteKeyHandler } from './delete-key.handler';\nimport { EnterKeyHandler } from './enter-key.handler';\n\nexport function createDefaultKeyHandlers(): KeyHandler[] {\n  return [\n    new PrintableKeyHandler(),\n    new ArrowKeyHandler(),\n    new BackspaceKeyHandler(),\n    new DeleteKeyHandler(),\n    new EnterKeyHandler(),\n  ];\n}\n","import {\n  AfterViewInit,\n  ChangeDetectionStrategy,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  inject,\n  Input,\n  OnChanges,\n  Output,\n  signal,\n  SimpleChanges,\n  ViewChild,\n} from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport {\n  defaultV2,\n  OtpChangeEvent,\n  OtpInvalidEvent,\n  OtpStatus,\n  OtpStatusMessages,\n} from './default.config';\nimport { OtpSanitizer, SanitizationResult } from './otp-sanitizer';\nimport { CaretManager } from './caret-manager';\nimport {\n  KeyHandler,\n  KeyHandlerContext,\n  createDefaultKeyHandlers,\n} from './key-handlers';\n\nlet nextStatusId = 0;\n\nfunction isPasteLikeInput(event: InputEvent): boolean {\n  return (\n    event.inputType === 'insertFromPaste' ||\n    event.inputType === 'insertReplacementText'\n  );\n}\n\n@Component({\n  standalone: true,\n  imports: [CommonModule],\n  selector: 'ngx-otp-input',\n  templateUrl: 'ngx-otp-input.component.html',\n  styleUrls: ['ngx-otp-input.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  providers: [\n    {\n      provide: NG_VALUE_ACCESSOR,\n      useExisting: forwardRef(() => NgxOtpInputComponent),\n      multi: true,\n    },\n  ],\n})\nexport class NgxOtpInputComponent\n  implements ControlValueAccessor, OnChanges, AfterViewInit\n{\n  private readonly valueState = signal('');\n  private readonly caretIndexState = signal<number | null>(null);\n  private readonly isDisabledState = signal(false);\n  private readonly hasInvalidOtpState = signal(false);\n  readonly statusMessageId = `ngx-otp-input-status-${nextStatusId++}`;\n\n  private readonly sanitizer = new OtpSanitizer();\n  private readonly caretManager = new CaretManager();\n  private readonly keyHandlers: KeyHandler[] = createDefaultKeyHandlers();\n  private readonly pasteDedupeWindowMs = 120;\n  private pasteHandledAt = 0;\n\n  @ViewChild('otpInput', { static: true })\n  private otpInput?: ElementRef<HTMLInputElement>;\n\n  @Input() length = defaultV2.length;\n  @Input() autoFocus = defaultV2.autoFocus;\n  @Input() autoBlur = defaultV2.autoBlur;\n  @Input() mask = defaultV2.mask;\n  @Input() charPattern: RegExp = defaultV2.charPattern;\n  @Input() inputMode = defaultV2.inputMode;\n  @Input() ariaLabel = defaultV2.ariaLabel;\n  @Input() status: OtpStatus = 'idle';\n  @Input() statusMessages: OtpStatusMessages = defaultV2.statusMessages;\n\n  @Output() otpChange = new EventEmitter<OtpChangeEvent>();\n  @Output() otpComplete = new EventEmitter<string>();\n  @Output() otpInvalid = new EventEmitter<OtpInvalidEvent>();\n\n  private readonly cdr = inject(ChangeDetectorRef);\n\n  // ---------------------------------------------------------------------------\n  // State accessors\n  // ---------------------------------------------------------------------------\n\n  private get value(): string {\n    return this.valueState();\n  }\n\n  private set value(nextValue: string) {\n    this.valueState.set(nextValue);\n  }\n\n  private get caretIndex(): number | null {\n    return this.caretIndexState();\n  }\n\n  private set caretIndex(nextIndex: number | null) {\n    this.caretIndexState.set(nextIndex);\n  }\n\n  get isDisabled(): boolean {\n    return this.isDisabledState();\n  }\n\n  get hasInvalidOtp(): boolean {\n    return this.hasInvalidOtpState();\n  }\n\n  // ---------------------------------------------------------------------------\n  // Template getters\n  // ---------------------------------------------------------------------------\n\n  get inputType(): string {\n    return this.mask ? 'password' : 'text';\n  }\n\n  get statusMessage(): string {\n    const messages: Record<OtpStatus, string> = {\n      success: this.statusMessages?.success ?? defaultV2.statusMessages.success,\n      error: this.statusMessages?.error ?? defaultV2.statusMessages.error,\n      idle: '',\n    };\n    return messages[this.status] ?? '';\n  }\n\n  private get isComplete(): boolean {\n    return this.value.length === this.resolvedLength;\n  }\n\n  get characters(): string[] {\n    const chars = this.value.split('');\n    return Array.from({ length: this.resolvedLength }, (_, index) => {\n      return chars[index] ?? '';\n    });\n  }\n\n  get displayCharacters(): string[] {\n    return this.characters.map((char) => {\n      if (this.mask && char) {\n        return '•';\n      }\n      return char;\n    });\n  }\n\n  get activeIndex(): number {\n    const fallbackIndex = this.value.length;\n    const caretIndex = this.caretIndex ?? fallbackIndex;\n    return Math.min(\n      Math.max(0, caretIndex),\n      Math.max(0, this.resolvedLength - 1),\n    );\n  }\n\n  get boxes(): number[] {\n    return Array.from({ length: this.resolvedLength }, (_, index) => index);\n  }\n\n  get patternAttribute(): string | null {\n    const source = this.charPattern?.source ?? '';\n    if (!source) {\n      return null;\n    }\n    const unanchored = source.replace(/^\\^/, '').replace(/\\$$/, '');\n    return `(?:${unanchored}){0,${this.resolvedLength}}`;\n  }\n\n  get resolvedLength(): number {\n    const length = Number.isFinite(this.length)\n      ? Math.max(1, Math.floor(this.length))\n      : defaultV2.length;\n    return length;\n  }\n\n  // ---------------------------------------------------------------------------\n  // Lifecycle hooks\n  // ---------------------------------------------------------------------------\n\n  ngAfterViewInit(): void {\n    if (this.autoFocus && !this.isDisabled) {\n      queueMicrotask(() => this.otpInput?.nativeElement.focus());\n    }\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes['length'] || changes['charPattern']) {\n      const result = this.sanitize(this.value);\n      if (result.accepted !== this.value) {\n        this.value = result.accepted;\n        this.onChange(this.value);\n      }\n      this.syncNativeInputValue();\n      this.setCaretIndex(this.value.length);\n      this.cdr.markForCheck();\n    }\n  }\n\n  // ---------------------------------------------------------------------------\n  // ControlValueAccessor\n  // ---------------------------------------------------------------------------\n\n  writeValue(value: string | null): void {\n    this.value = this.sanitize(value ?? '').accepted;\n    this.hasInvalidOtpState.set(false);\n    this.cdr.markForCheck();\n    this.syncNativeInputValue();\n    this.setCaretIndex(this.value.length);\n  }\n\n  registerOnChange(fn: (value: string) => void): void {\n    this.onChange = fn;\n  }\n\n  registerOnTouched(fn: () => void): void {\n    this.onTouched = fn;\n  }\n\n  setDisabledState(isDisabled: boolean): void {\n    this.isDisabledState.set(isDisabled);\n    this.cdr.markForCheck();\n  }\n\n  // ---------------------------------------------------------------------------\n  // Event handlers (template-bound)\n  // ---------------------------------------------------------------------------\n\n  handleContainerPointerDown(event: PointerEvent): void {\n    if (this.isDisabled) {\n      return;\n    }\n\n    this.otpInput?.nativeElement.focus();\n\n    if (event.pointerType === 'mouse') {\n      event.preventDefault();\n      queueMicrotask(() => this.setCaretIndex(this.value.length));\n    }\n  }\n\n  handleBoxPointerDown(event: PointerEvent, index: number): void {\n    if (this.isDisabled) {\n      return;\n    }\n    if (event.pointerType !== 'mouse') {\n      return;\n    }\n\n    event.preventDefault();\n    event.stopPropagation();\n    this.otpInput?.nativeElement.focus();\n    const nextIndex = Math.min(index, this.value.length);\n    this.setCaretIndex(nextIndex);\n    queueMicrotask(() => this.setCaretIndex(nextIndex));\n  }\n\n  handleBeforeInput(event: InputEvent): void {\n    if (this.isDisabled) {\n      return;\n    }\n\n    if (!isPasteLikeInput(event)) {\n      return;\n    }\n\n    if (this.wasPasteHandledRecently()) {\n      event.preventDefault();\n      return;\n    }\n\n    const insertedText =\n      event.data ?? event.dataTransfer?.getData('text/plain') ?? '';\n    if (!insertedText) {\n      // iOS can omit payload in beforeinput/paste for security reasons.\n      // Select all so native insertion replaces existing value.\n      this.caretManager.selectAll(this.otpInput?.nativeElement);\n      return;\n    }\n\n    event.preventDefault();\n    this.markPasteHandled();\n    this.applyPastedValue(insertedText);\n  }\n\n  handleInput(event: Event): void {\n    const target = event.target as HTMLInputElement;\n    const result = this.sanitize(target.value ?? '');\n    this.applySanitizedResult(\n      result,\n      () => target.selectionStart ?? this.value.length,\n    );\n  }\n\n  handleKeyDown(event: KeyboardEvent): void {\n    if (this.isDisabled) {\n      return;\n    }\n\n    const context = this.buildKeyHandlerContext();\n\n    for (const handler of this.keyHandlers) {\n      if (handler.canHandle(event)) {\n        handler.handle(event, context);\n        return;\n      }\n    }\n  }\n\n  handlePaste(event: ClipboardEvent): void {\n    if (this.isDisabled) {\n      return;\n    }\n\n    if (this.wasPasteHandledRecently()) {\n      event.preventDefault();\n      return;\n    }\n\n    const text = event.clipboardData?.getData('text') ?? '';\n    if (!text) {\n      // Some mobile browsers (notably iOS Safari paste callout) can dispatch\n      // paste without exposing clipboardData; select all so native insertion\n      // replaces current value.\n      this.caretManager.selectAll(this.otpInput?.nativeElement);\n      return;\n    }\n    event.preventDefault();\n    this.markPasteHandled();\n    this.applyPastedValue(text);\n  }\n\n  handleBlur(): void {\n    this.onTouched();\n  }\n\n  reset(): void {\n    this.setValueFromUser('');\n    this.syncNativeInputValue();\n    this.setCaretIndex(0);\n  }\n\n  // ---------------------------------------------------------------------------\n  // Private helpers\n  // ---------------------------------------------------------------------------\n\n  private onChange: (value: string) => void = () => {};\n  private onTouched: () => void = () => {};\n\n  private sanitize(value: string): SanitizationResult {\n    return this.sanitizer.sanitize(\n      value,\n      this.resolvedLength,\n      this.charPattern,\n    );\n  }\n\n  private setValueFromUser(nextValue: string): void {\n    this.value = nextValue;\n    this.onChange(this.value);\n    this.otpChange.emit({ value: this.value, isComplete: this.isComplete });\n\n    if (this.isComplete) {\n      this.otpComplete.emit(this.value);\n      if (this.autoBlur) {\n        this.otpInput?.nativeElement.blur();\n      }\n    }\n\n    this.cdr.markForCheck();\n  }\n\n  private applyInvalidState(result: SanitizationResult): void {\n    this.hasInvalidOtpState.set(!!result.rejectedReason);\n    if (result.rejectedReason) {\n      this.otpInvalid.emit({\n        reason: result.rejectedReason,\n        attemptedValue: result.attempted,\n        acceptedValue: result.accepted,\n      });\n    }\n  }\n\n  private applySanitizedResult(\n    result: SanitizationResult,\n    resolveCaretIndex: () => number,\n  ): void {\n    this.applyInvalidState(result);\n    this.setValueFromUser(result.accepted);\n    this.syncNativeInputValue();\n    this.setCaretIndex(resolveCaretIndex());\n  }\n\n  private applyPastedValue(rawValue: string): void {\n    const result = this.sanitize(rawValue);\n    this.applySanitizedResult(result, () => this.value.length);\n  }\n\n  private markPasteHandled(): void {\n    this.pasteHandledAt = performance.now();\n  }\n\n  private wasPasteHandledRecently(): boolean {\n    if (this.pasteHandledAt === 0) {\n      return false;\n    }\n\n    if (performance.now() - this.pasteHandledAt < this.pasteDedupeWindowMs) {\n      return true;\n    }\n\n    this.pasteHandledAt = 0;\n    return false;\n  }\n\n  private syncNativeInputValue(): void {\n    this.caretManager.syncNativeValue(this.otpInput?.nativeElement, this.value);\n  }\n\n  private setCaretIndex(nextIndex: number): void {\n    const clamped = this.caretManager.setCaretPosition(\n      this.otpInput?.nativeElement,\n      nextIndex,\n      this.value.length,\n    );\n    this.caretIndex = clamped;\n    this.cdr.markForCheck();\n  }\n\n  private buildKeyHandlerContext(): KeyHandlerContext {\n    const input = this.otpInput?.nativeElement;\n    const selectionStart = input?.selectionStart ?? this.value.length;\n    const selectionEnd = input?.selectionEnd ?? selectionStart;\n\n    return {\n      value: this.value,\n      resolvedLength: this.resolvedLength,\n      selectionStart,\n      selectionEnd,\n      isCharAllowed: (ch: string) =>\n        this.sanitizer.isCharAllowed(ch, this.charPattern),\n      sanitize: (value: string) => this.sanitize(value),\n      applySanitizedResult: (result, caretResolver) =>\n        this.applySanitizedResult(result, caretResolver),\n      setValueFromUser: (value: string) => this.setValueFromUser(value),\n      syncNativeInputValue: () => this.syncNativeInputValue(),\n      setCaretIndex: (index: number) => this.setCaretIndex(index),\n      setInvalidState: (reason, attemptedValue) => {\n        this.hasInvalidOtpState.set(true);\n        this.otpInvalid.emit({\n          reason,\n          attemptedValue,\n          acceptedValue: this.value,\n        });\n        this.cdr.markForCheck();\n      },\n    };\n  }\n}\n","<div\n  class=\"ngx-otp-input-root\"\n  role=\"group\"\n  [attr.aria-label]=\"ariaLabel\"\n  (pointerdown)=\"handleContainerPointerDown($event)\"\n  data-testid=\"ngx-otp-input-root\"\n>\n  <input\n    #otpInput\n    class=\"ngx-otp-input-native\"\n    [type]=\"inputType\"\n    [disabled]=\"isDisabled\"\n    [inputMode]=\"inputMode\"\n    [attr.pattern]=\"patternAttribute\"\n    name=\"one-time-code\"\n    autocomplete=\"one-time-code\"\n    autocapitalize=\"off\"\n    autocorrect=\"off\"\n    spellcheck=\"false\"\n    [attr.aria-invalid]=\"status === 'error' || hasInvalidOtp ? 'true' : null\"\n    [attr.aria-describedby]=\"statusMessage ? statusMessageId : null\"\n    (beforeinput)=\"handleBeforeInput($event)\"\n    (input)=\"handleInput($event)\"\n    (keydown)=\"handleKeyDown($event)\"\n    (paste)=\"handlePaste($event)\"\n    (blur)=\"handleBlur()\"\n    data-testid=\"ngx-otp-input-native\"\n  />\n\n  <div\n    class=\"ngx-otp-input-form\"\n    aria-hidden=\"true\"\n  >\n    @for (i of boxes; track i) {\n      <div\n        class=\"ngx-otp-input-box\"\n        [class.ngx-otp-input-disabled]=\"isDisabled\"\n        [class.ngx-otp-input-filled]=\"characters[i]\"\n        [class.ngx-otp-input-success]=\"status === 'success'\"\n        [class.ngx-otp-input-failed]=\"status === 'error'\"\n        [class.ngx-otp-input-active]=\"i === activeIndex && !isDisabled\"\n        (pointerdown)=\"handleBoxPointerDown($event, i)\"\n        data-testid=\"ngx-otp-input-box\"\n      >\n        {{ displayCharacters[i] }}\n      </div>\n    }\n  </div>\n\n  <span\n    [id]=\"statusMessageId\"\n    class=\"ngx-otp-input-status\"\n    role=\"status\"\n    aria-live=\"polite\"\n    aria-atomic=\"true\"\n  >\n    {{ statusMessage }}\n  </span>\n</div>\n","/*\n * Public API Surface of ngx-otp-input\n */\n\nexport * from './lib/ngx-otp-input.component';\nexport type {\n  OtpChangeEvent,\n  OtpInvalidEvent,\n  OtpStatus,\n  OtpStatusMessages,\n} from './lib/default.config';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}