{"version":3,"file":"VOtpInput.mjs","names":["VInput","VTextField","ripple","convertToUnit","keyCodes","breaking","mixins","baseMixins","extend","name","directives","inheritAttrs","props","length","type","Number","String","default","plain","Boolean","data","initialValue","isBooted","otp","computed","outlined","classes","options","call","watch","isFocused","value","val","lazyValue","split","created","$attrs","hasOwnProperty","internalValue","mounted","requestAnimationFrame","methods","focus","e","otpIdx","onFocus","genInputSlot","$createElement","setBackgroundColor","backgroundColor","staticClass","style","height","on","click","onClick","mousedown","onMouseDown","mouseup","onMouseUp","genDefaultSlot","genControl","genFieldset","genTextFieldSlot","genContent","Array","from","_","i","setTextColor","validationState","class","attrs","genLegend","span","domProps","innerHTML","width","genInput","listeners","Object","assign","listeners$","change","min","attrs$","autocomplete","disabled","isDisabled","readonly","isReadonly","id","computedId","blur","onBlur","input","onInput","keydown","onKeyDown","keyup","onKeyUp","ref","refInFor","$nextTick","$emit","$refs","undefined","preventDefault","stopPropagation","elements","document","activeElement","select","index","maxCursor","target","inputDataArray","newOtp","appIdx","toString","splice","join","onCompleted","clearFocus","changeFocus","keyCode","enter","hasMouseDown","updateValue","hasColor","event","eventKey","key","includes","rsp","render","h","themeClasses"],"sources":["../../../src/components/VOtpInput/VOtpInput.ts"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n\n// Styles\nimport '../VTextField/VTextField.sass'\nimport './VOtpInput.sass'\n\n// Extensions\nimport VInput from '../VInput'\nimport VTextField from '../VTextField/VTextField'\n// Directives\nimport ripple from '../../directives/ripple'\n\n// Utilities\nimport { convertToUnit, keyCodes } from '../../util/helpers'\nimport { breaking } from '../../util/console'\n\n// Types\nimport mixins from '../../util/mixins'\nimport { VNode } from 'vue'\n\nconst baseMixins = mixins(\n  VInput,\n)\n\ninterface options extends InstanceType<typeof baseMixins> {\n  $refs: {\n    input: HTMLInputElement[]\n  }\n}\n\n/* @vue/component */\nexport default baseMixins.extend<options>().extend({\n  name: 'v-otp-input',\n\n  directives: {\n    ripple,\n  },\n\n  inheritAttrs: false,\n\n  props: {\n    length: {\n      type: [Number, String],\n      default: 6,\n    },\n    type: {\n      type: String,\n      default: 'text',\n    },\n    plain: Boolean,\n  },\n\n  data: () => ({\n    initialValue: null,\n    isBooted: false,\n    otp: [] as string[],\n  }),\n\n  computed: {\n    outlined (): Boolean {\n      return !this.plain\n    },\n    classes (): object {\n      return {\n        ...VInput.options.computed.classes.call(this),\n        ...VTextField.options.computed.classes.call(this),\n        'v-otp-input--plain': this.plain,\n      }\n    },\n  },\n\n  watch: {\n    isFocused: 'updateValue',\n    value (val) {\n      this.lazyValue = val\n      this.otp = val?.split('') || []\n    },\n  },\n\n  created () {\n    /* istanbul ignore next */\n    if (this.$attrs.hasOwnProperty('browser-autocomplete')) {\n      breaking('browser-autocomplete', 'autocomplete', this)\n    }\n\n    this.otp = this.internalValue?.split('') || []\n  },\n\n  mounted () {\n    requestAnimationFrame(() => (this.isBooted = true))\n  },\n\n  methods: {\n    /** @public */\n    focus (e: Event, otpIdx: number) {\n      this.onFocus(e, otpIdx || 0)\n    },\n    genInputSlot (otpIdx: number) {\n      return this.$createElement('div', this.setBackgroundColor(this.backgroundColor, {\n        staticClass: 'v-input__slot',\n        style: { height: convertToUnit(this.height) },\n        on: {\n          click: () => this.onClick(otpIdx),\n          mousedown: (e: Event) => this.onMouseDown(e, otpIdx),\n          mouseup: (e: Event) => this.onMouseUp(e, otpIdx),\n        },\n      }), [this.genDefaultSlot(otpIdx)])\n    },\n    genControl (otpIdx: number) {\n      return this.$createElement('div', {\n        staticClass: 'v-input__control',\n      }, [\n        this.genInputSlot(otpIdx),\n      ])\n    },\n    genDefaultSlot (otpIdx: number) {\n      return [\n        this.genFieldset(),\n        this.genTextFieldSlot(otpIdx),\n      ]\n    },\n    genContent () {\n      return Array.from({ length: +this.length }, (_, i) => {\n        return this.$createElement('div', this.setTextColor(this.validationState, {\n          staticClass: 'v-input',\n          class: this.classes,\n        }), [this.genControl(i)])\n      })\n    },\n    genFieldset () {\n      return this.$createElement('fieldset', {\n        attrs: {\n          'aria-hidden': true,\n        },\n      }, [this.genLegend()])\n    },\n    genLegend () {\n      const span = this.$createElement('span', {\n        domProps: { innerHTML: '&#8203;' },\n      })\n\n      return this.$createElement('legend', {\n        style: {\n          width: '0px',\n        },\n      }, [span])\n    },\n    genInput (otpIdx: number) {\n      const listeners = Object.assign({}, this.listeners$)\n      delete listeners.change // Change should not be bound externally\n\n      return this.$createElement('input', {\n        style: {},\n        domProps: {\n          value: this.otp[otpIdx],\n          min: this.type === 'number' ? 0 : null,\n        },\n        attrs: {\n          ...this.attrs$,\n          autocomplete: 'one-time-code',\n          disabled: this.isDisabled,\n          readonly: this.isReadonly,\n          type: this.type,\n          id: `${this.computedId}--${otpIdx}`,\n          class: `otp-field-box--${otpIdx}`,\n        },\n        on: Object.assign(listeners, {\n          blur: this.onBlur,\n          input: (e: Event) => this.onInput(e, otpIdx),\n          focus: (e: Event) => this.onFocus(e, otpIdx),\n          keydown: this.onKeyDown,\n          keyup: (e: KeyboardEvent) => this.onKeyUp(e, otpIdx),\n        }),\n        ref: 'input',\n        refInFor: true,\n      })\n    },\n    genTextFieldSlot (otpIdx: number): VNode {\n      return this.$createElement('div', {\n        staticClass: 'v-text-field__slot',\n      }, [\n        this.genInput(otpIdx),\n      ])\n    },\n    onBlur (e?: Event) {\n      this.isFocused = false\n      e && this.$nextTick(() => this.$emit('blur', e))\n    },\n    onClick (otpIdx: number) {\n      if (this.isFocused || this.isDisabled || !this.$refs.input[otpIdx]) return\n\n      this.onFocus(undefined, otpIdx)\n    },\n    onFocus (e?: Event, otpIdx?: number) {\n      e?.preventDefault()\n      e?.stopPropagation()\n      const elements = this.$refs.input as HTMLInputElement[]\n      const ref = this.$refs.input && elements[otpIdx || 0]\n      if (!ref) return\n\n      if (document.activeElement !== ref) {\n        ref.focus()\n        return ref.select()\n      }\n\n      if (!this.isFocused) {\n        this.isFocused = true\n        ref.select()\n        e && this.$emit('focus', e)\n      }\n    },\n    onInput (e: Event, index: number) {\n      const maxCursor = +this.length - 1\n\n      const target = e.target as HTMLInputElement\n      const value = target.value\n      const inputDataArray = value?.split('') || []\n\n      const newOtp: string[] = [...this.otp]\n      for (let i = 0; i < inputDataArray.length; i++) {\n        const appIdx = index + i\n        if (appIdx > maxCursor) break\n        newOtp[appIdx] = inputDataArray[i].toString()\n      }\n      if (!inputDataArray.length) {\n        newOtp.splice(index, 1)\n      }\n\n      this.otp = newOtp\n      this.internalValue = this.otp.join('')\n\n      if (index + inputDataArray.length >= +this.length) {\n        this.onCompleted()\n        this.clearFocus(index)\n      } else if (inputDataArray.length) {\n        this.changeFocus(index + inputDataArray.length)\n      }\n    },\n    clearFocus (index: number) {\n      const input = this.$refs.input[index] as HTMLInputElement\n      input.blur()\n    },\n    onKeyDown (e: KeyboardEvent) {\n      if (e.keyCode === keyCodes.enter) {\n        this.$emit('change', this.internalValue)\n      }\n\n      this.$emit('keydown', e)\n    },\n    onMouseDown (e: Event, otpIdx: number) {\n      // Prevent input from being blurred\n      if (e.target !== this.$refs.input[otpIdx]) {\n        e.preventDefault()\n        e.stopPropagation()\n      }\n\n      VInput.options.methods.onMouseDown.call(this, e)\n    },\n    onMouseUp (e: Event, otpIdx: number) {\n      if (this.hasMouseDown) this.focus(e, otpIdx)\n\n      VInput.options.methods.onMouseUp.call(this, e)\n    },\n    changeFocus (index: number) {\n      this.onFocus(undefined, index || 0)\n    },\n    updateValue (val: boolean) {\n      // Sets validationState from validatable\n      this.hasColor = val\n\n      if (val) {\n        this.initialValue = this.lazyValue\n      } else if (this.initialValue !== this.lazyValue) {\n        this.$emit('change', this.lazyValue)\n      }\n    },\n    onKeyUp (event: KeyboardEvent, index: number) {\n      event.preventDefault()\n      const eventKey = event.key\n      if (['Tab', 'Shift', 'Meta', 'Control', 'Alt'].includes(eventKey)) {\n        return\n      }\n      if (['Delete'].includes(eventKey)) {\n        return\n      }\n      if (eventKey === 'ArrowLeft' || (eventKey === 'Backspace' && !this.otp[index])) {\n        return index > 0 && this.changeFocus(index - 1)\n      }\n      if (eventKey === 'ArrowRight') {\n        return index + 1 < +this.length && this.changeFocus(index + 1)\n      }\n    },\n    onCompleted () {\n      const rsp = this.otp.join('')\n      if (rsp.length === +this.length) {\n        this.$emit('finish', rsp)\n      }\n    },\n  },\n  render (h): VNode {\n    return h('div', {\n      staticClass: 'v-otp-input',\n      class: this.themeClasses,\n    }, this.genContent())\n  },\n})\n"],"mappings":"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"}