{"version":3,"file":"index.cjs","sources":["../../src/index.tsx"],"sourcesContent":["import React from 'react';\n\ntype AllowedInputTypes = 'password' | 'text' | 'number' | 'tel';\n\ntype InputProps = Required<\n  Pick<\n    React.InputHTMLAttributes<HTMLInputElement>,\n    | 'value'\n    | 'onChange'\n    | 'onFocus'\n    | 'onBlur'\n    | 'onKeyDown'\n    | 'onPaste'\n    | 'aria-label'\n    | 'autoComplete'\n    | 'style'\n    | 'inputMode'\n    | 'onInput'\n  > & {\n    ref: React.RefCallback<HTMLInputElement>;\n    placeholder: string | undefined;\n    className: string | undefined;\n    type: AllowedInputTypes;\n  }\n>;\n\ninterface OTPInputProps {\n  /** Value of the OTP input */\n  value?: string;\n  /** Number of OTP inputs to be rendered */\n  numInputs?: number;\n  /** Callback to be called when the OTP value changes */\n  onChange: (otp: string) => void;\n  /** Callback to be called when pasting content into the component */\n  onPaste?: (event: React.ClipboardEvent<HTMLDivElement>) => void;\n  /** Function to render the input */\n  renderInput: (inputProps: InputProps, index: number) => React.ReactNode;\n  /** Whether the first input should be auto focused */\n  shouldAutoFocus?: boolean;\n  /** Placeholder for the inputs */\n  placeholder?: string;\n  /** Function to render the separator */\n  renderSeparator?: ((index: number) => React.ReactNode) | React.ReactNode;\n  /** Style for the container */\n  containerStyle?: React.CSSProperties | string;\n  /** Style for the input */\n  inputStyle?: React.CSSProperties | string;\n  /** The type that will be passed to the input being rendered */\n  inputType?: AllowedInputTypes;\n  /** Do not apply the default styles to the inputs, will be removed in future versions */\n  skipDefaultStyles?: boolean; // TODO: Remove in next major release\n}\n\nconst isStyleObject = (obj: unknown) => typeof obj === 'object' && obj !== null;\n\nconst OTPInput = ({\n  value = '',\n  numInputs = 4,\n  onChange,\n  onPaste,\n  renderInput,\n  shouldAutoFocus = false,\n  inputType = 'text',\n  renderSeparator,\n  placeholder,\n  containerStyle,\n  inputStyle,\n  skipDefaultStyles = false,\n}: OTPInputProps) => {\n  const [activeInput, setActiveInput] = React.useState(0);\n  const inputRefs = React.useRef<Array<HTMLInputElement | null>>([]);\n\n  const getOTPValue = () => (value ? value.toString().split('') : []);\n\n  const isInputNum = inputType === 'number' || inputType === 'tel';\n\n  React.useEffect(() => {\n    inputRefs.current = inputRefs.current.slice(0, numInputs);\n  }, [numInputs]);\n\n  React.useEffect(() => {\n    if (shouldAutoFocus) {\n      inputRefs.current[0]?.focus();\n    }\n  }, [shouldAutoFocus]);\n\n  const getPlaceholderValue = () => {\n    if (typeof placeholder === 'string') {\n      if (placeholder.length === numInputs) {\n        return placeholder;\n      }\n\n      if (placeholder.length > 0) {\n        console.error('Length of the placeholder should be equal to the number of inputs.');\n      }\n    }\n    return undefined;\n  };\n\n  const isInputValueValid = (value: string) => {\n    const isTypeValid = isInputNum ? !isNaN(Number(value)) : typeof value === 'string';\n    return isTypeValid && value.trim().length === 1;\n  };\n\n  const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const { value } = event.target;\n\n    if (isInputValueValid(value)) {\n      changeCodeAtFocus(value);\n      focusInput(activeInput + 1);\n    }\n  };\n\n  const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n    const { nativeEvent } = event;\n    const value = event.target.value;\n\n    if (!isInputValueValid(value)) {\n      // Pasting from the native autofill suggestion on a mobile device can pass\n      // the pasted string as one long input to one of the cells. This ensures\n      // that we handle the full input and not just the first character.\n      if (value.length === numInputs) {\n        const hasInvalidInput = value.split('').some((cellInput) => !isInputValueValid(cellInput));\n        if (!hasInvalidInput) {\n          handleOTPChange(value.split(''));\n          focusInput(numInputs - 1);\n        }\n      }\n\n      // @ts-expect-error - This was added previously to handle and edge case\n      // for dealing with keyCode \"229 Unidentified\" on Android. Check if this is\n      // still needed.\n      if (nativeEvent.data === null && nativeEvent.inputType === 'deleteContentBackward') {\n        event.preventDefault();\n        changeCodeAtFocus('');\n        focusInput(activeInput - 1);\n      }\n\n      // Clear the input if it's not valid value because firefox allows\n      // pasting non-numeric characters in a number type input\n      event.target.value = '';\n    }\n  };\n\n  const handleFocus = (event: React.FocusEvent<HTMLInputElement>) => (index: number) => {\n    setActiveInput(index);\n    event.target.select();\n  };\n\n  const handleBlur = () => {\n    setActiveInput(activeInput - 1);\n  };\n\n  const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n    const otp = getOTPValue();\n    if ([event.code, event.key].includes('Backspace')) {\n      event.preventDefault();\n      changeCodeAtFocus('');\n      focusInput(activeInput - 1);\n    } else if (event.code === 'Delete') {\n      event.preventDefault();\n      changeCodeAtFocus('');\n    } else if (event.code === 'ArrowLeft') {\n      event.preventDefault();\n      focusInput(activeInput - 1);\n    } else if (event.code === 'ArrowRight') {\n      event.preventDefault();\n      focusInput(activeInput + 1);\n    }\n    // React does not trigger onChange when the same value is entered\n    // again. So we need to focus the next input manually in this case.\n    else if (event.key === otp[activeInput]) {\n      event.preventDefault();\n      focusInput(activeInput + 1);\n    } else if (\n      event.code === 'Spacebar' ||\n      event.code === 'Space' ||\n      event.code === 'ArrowUp' ||\n      event.code === 'ArrowDown'\n    ) {\n      event.preventDefault();\n    }\n  };\n\n  const focusInput = (index: number) => {\n    const activeInput = Math.max(Math.min(numInputs - 1, index), 0);\n\n    if (inputRefs.current[activeInput]) {\n      inputRefs.current[activeInput]?.focus();\n      inputRefs.current[activeInput]?.select();\n      setActiveInput(activeInput);\n    }\n  };\n\n  const changeCodeAtFocus = (value: string) => {\n    const otp = getOTPValue();\n    otp[activeInput] = value[0];\n    handleOTPChange(otp);\n  };\n\n  const handleOTPChange = (otp: Array<string>) => {\n    const otpValue = otp.join('');\n    onChange(otpValue);\n  };\n\n  const handlePaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n    event.preventDefault();\n\n    const otp = getOTPValue();\n    let nextActiveInput = activeInput;\n\n    // Get pastedData in an array of max size (num of inputs - current position)\n    const pastedData = event.clipboardData\n      .getData('text/plain')\n      .slice(0, numInputs - activeInput)\n      .split('');\n\n    // Prevent pasting if the clipboard data contains non-numeric values for number inputs\n    if (isInputNum && pastedData.some((value) => isNaN(Number(value)))) {\n      return;\n    }\n\n    // Paste data from focused input onwards\n    for (let pos = 0; pos < numInputs; ++pos) {\n      if (pos >= activeInput && pastedData.length > 0) {\n        otp[pos] = pastedData.shift() ?? '';\n        nextActiveInput++;\n      }\n    }\n\n    focusInput(nextActiveInput);\n    handleOTPChange(otp);\n  };\n\n  return (\n    <div\n      style={Object.assign({ display: 'flex', alignItems: 'center' }, isStyleObject(containerStyle) && containerStyle)}\n      className={typeof containerStyle === 'string' ? containerStyle : undefined}\n      onPaste={onPaste}\n    >\n      {Array.from({ length: numInputs }, (_, index) => index).map((index) => (\n        <React.Fragment key={index}>\n          {renderInput(\n            {\n              value: getOTPValue()[index] ?? '',\n              placeholder: getPlaceholderValue()?.[index] ?? undefined,\n              ref: (element) => (inputRefs.current[index] = element),\n              onChange: handleChange,\n              onFocus: (event) => handleFocus(event)(index),\n              onBlur: handleBlur,\n              onKeyDown: handleKeyDown,\n              onPaste: handlePaste,\n              autoComplete: 'off',\n              'aria-label': `Please enter OTP character ${index + 1}`,\n              style: Object.assign(\n                !skipDefaultStyles ? ({ width: '1em', textAlign: 'center' } as const) : {},\n                isStyleObject(inputStyle) ? inputStyle : {}\n              ),\n              className: typeof inputStyle === 'string' ? inputStyle : undefined,\n              type: inputType,\n              inputMode: isInputNum ? 'numeric' : 'text',\n              onInput: handleInputChange,\n            },\n            index\n          )}\n          {index < numInputs - 1 && (typeof renderSeparator === 'function' ? renderSeparator(index) : renderSeparator)}\n        </React.Fragment>\n      ))}\n    </div>\n  );\n};\n\nexport type { OTPInputProps, InputProps, AllowedInputTypes };\nexport default OTPInput;\n"],"names":["React"],"mappings":"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"}