{"version":3,"file":"index.mjs","sources":["../../src/inputotp/BaseInputOtp.vue","../../src/inputotp/InputOtp.vue","../../src/inputotp/InputOtp.vue?vue&type=template&id=4eebf078&lang.js"],"sourcesContent":["<script>\nimport BaseInput from '@primevue/core/baseinput';\nimport InputOtpStyle from 'primevue/inputotp/style';\n\nexport default {\n    name: 'BaseInputOtp',\n    extends: BaseInput,\n    props: {\n        readonly: {\n            type: Boolean,\n            default: false\n        },\n        tabindex: {\n            type: Number,\n            default: null\n        },\n        length: {\n            type: Number,\n            default: 4\n        },\n        mask: {\n            type: Boolean,\n            default: false\n        },\n        integerOnly: {\n            type: Boolean,\n            default: false\n        }\n    },\n    style: InputOtpStyle,\n    provide() {\n        return {\n            $pcInputOtp: this,\n            $parentInstance: this\n        };\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <template v-for=\"i in length\" :key=\"i\">\n            <slot :events=\"getTemplateEvents(i - 1)\" :attrs=\"getTemplateAttrs(i - 1)\" :index=\"i\">\n                <OtpInputText\n                    :value=\"tokens[i - 1]\"\n                    :type=\"inputType\"\n                    :class=\"cx('pcInputText')\"\n                    :name=\"$formName\"\n                    :inputmode=\"inputMode\"\n                    :variant=\"variant\"\n                    :readonly=\"readonly\"\n                    :disabled=\"disabled\"\n                    :size=\"size\"\n                    :invalid=\"invalid\"\n                    :tabindex=\"tabindex\"\n                    :unstyled=\"unstyled\"\n                    @input=\"onInput($event, i - 1)\"\n                    @focus=\"onFocus($event)\"\n                    @blur=\"onBlur($event)\"\n                    @paste=\"onPaste($event)\"\n                    @keydown=\"onKeyDown($event)\"\n                    @click=\"onClick($event)\"\n                    :pt=\"ptm('pcInputText')\"\n                />\n            </slot>\n        </template>\n    </div>\n</template>\n\n<script>\nimport InputText from 'primevue/inputtext';\nimport BaseInputOtp from './BaseInputOtp.vue';\n\nexport default {\n    name: 'InputOtp',\n    extends: BaseInputOtp,\n    inheritAttrs: false,\n    emits: ['change', 'focus', 'blur'],\n    data() {\n        return {\n            tokens: []\n        };\n    },\n    watch: {\n        modelValue: {\n            immediate: true,\n            handler(newValue) {\n                this.tokens = newValue ? newValue.split('') : new Array(this.length);\n            }\n        }\n    },\n    methods: {\n        getTemplateAttrs(index) {\n            return {\n                value: this.tokens[index]\n            };\n        },\n        getTemplateEvents(index) {\n            return {\n                input: (event) => this.onInput(event, index),\n                keydown: (event) => this.onKeyDown(event),\n                focus: (event) => this.onFocus(event),\n                blur: (event) => this.onBlur(event),\n                paste: (event) => this.onPaste(event)\n            };\n        },\n        onInput(event, index) {\n            this.tokens[index] = event.target.value;\n            this.updateModel(event);\n\n            if (event.inputType === 'deleteContentBackward') {\n                this.moveToPrev(event);\n            } else if (event.inputType === 'insertText' || event.inputType === 'deleteContentForward') {\n                this.moveToNext(event);\n            }\n        },\n        updateModel(event) {\n            const newValue = this.tokens.join('');\n\n            this.writeValue(newValue, event);\n            this.$emit('change', {\n                originalEvent: event,\n                value: newValue\n            });\n        },\n        moveToPrev(event) {\n            let prevInput = this.findPrevInput(event.target);\n\n            if (prevInput) {\n                prevInput.focus();\n                prevInput.select();\n            }\n        },\n        moveToNext(event) {\n            let nextInput = this.findNextInput(event.target);\n\n            if (nextInput) {\n                nextInput.focus();\n                nextInput.select();\n            }\n        },\n        findNextInput(element) {\n            let nextElement = element.nextElementSibling;\n\n            if (!nextElement) return;\n\n            return nextElement.nodeName === 'INPUT' ? nextElement : this.findNextInput(nextElement);\n        },\n        findPrevInput(element) {\n            let prevElement = element.previousElementSibling;\n\n            if (!prevElement) return;\n\n            return prevElement.nodeName === 'INPUT' ? prevElement : this.findPrevInput(prevElement);\n        },\n        onFocus(event) {\n            event.target.select();\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.$emit('blur', event);\n        },\n        onClick(event) {\n            setTimeout(() => event.target.select(), 1);\n        },\n        onKeyDown(event) {\n            if (event.ctrlKey || event.metaKey) {\n                return;\n            }\n\n            switch (event.code) {\n                case 'ArrowLeft':\n                    this.moveToPrev(event);\n                    event.preventDefault();\n\n                    break;\n\n                case 'ArrowUp':\n                case 'ArrowDown':\n                    event.preventDefault();\n\n                    break;\n\n                case 'Backspace':\n                    if (event.target.value.length === 0) {\n                        this.moveToPrev(event);\n                        event.preventDefault();\n                    }\n\n                    break;\n\n                case 'ArrowRight':\n                    this.moveToNext(event);\n                    event.preventDefault();\n\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                case 'Tab':\n                    break;\n\n                default:\n                    if ((this.integerOnly && !(event.code !== 'Space' && Number(event.key) >= 0 && Number(event.key) <= 9)) || (this.tokens.join('').length >= this.length && event.code !== 'Delete')) {\n                        event.preventDefault();\n                    }\n\n                    break;\n            }\n        },\n        onPaste(event) {\n            let paste = event.clipboardData.getData('text');\n\n            if (paste.length) {\n                let pastedCode = paste.substring(0, this.length);\n\n                if (!this.integerOnly || !isNaN(pastedCode)) {\n                    this.tokens = pastedCode.split('');\n                    this.updateModel(event);\n                }\n            }\n\n            event.preventDefault();\n        }\n    },\n    computed: {\n        inputMode() {\n            return this.integerOnly ? 'numeric' : 'text';\n        },\n        inputType() {\n            return this.mask ? 'password' : 'text';\n        }\n    },\n    components: {\n        OtpInputText: InputText\n    }\n};\n</script>\n","<template>\n    <div :class=\"cx('root')\" v-bind=\"ptmi('root')\">\n        <template v-for=\"i in length\" :key=\"i\">\n            <slot :events=\"getTemplateEvents(i - 1)\" :attrs=\"getTemplateAttrs(i - 1)\" :index=\"i\">\n                <OtpInputText\n                    :value=\"tokens[i - 1]\"\n                    :type=\"inputType\"\n                    :class=\"cx('pcInputText')\"\n                    :name=\"$formName\"\n                    :inputmode=\"inputMode\"\n                    :variant=\"variant\"\n                    :readonly=\"readonly\"\n                    :disabled=\"disabled\"\n                    :size=\"size\"\n                    :invalid=\"invalid\"\n                    :tabindex=\"tabindex\"\n                    :unstyled=\"unstyled\"\n                    @input=\"onInput($event, i - 1)\"\n                    @focus=\"onFocus($event)\"\n                    @blur=\"onBlur($event)\"\n                    @paste=\"onPaste($event)\"\n                    @keydown=\"onKeyDown($event)\"\n                    @click=\"onClick($event)\"\n                    :pt=\"ptm('pcInputText')\"\n                />\n            </slot>\n        </template>\n    </div>\n</template>\n\n<script>\nimport InputText from 'primevue/inputtext';\nimport BaseInputOtp from './BaseInputOtp.vue';\n\nexport default {\n    name: 'InputOtp',\n    extends: BaseInputOtp,\n    inheritAttrs: false,\n    emits: ['change', 'focus', 'blur'],\n    data() {\n        return {\n            tokens: []\n        };\n    },\n    watch: {\n        modelValue: {\n            immediate: true,\n            handler(newValue) {\n                this.tokens = newValue ? newValue.split('') : new Array(this.length);\n            }\n        }\n    },\n    methods: {\n        getTemplateAttrs(index) {\n            return {\n                value: this.tokens[index]\n            };\n        },\n        getTemplateEvents(index) {\n            return {\n                input: (event) => this.onInput(event, index),\n                keydown: (event) => this.onKeyDown(event),\n                focus: (event) => this.onFocus(event),\n                blur: (event) => this.onBlur(event),\n                paste: (event) => this.onPaste(event)\n            };\n        },\n        onInput(event, index) {\n            this.tokens[index] = event.target.value;\n            this.updateModel(event);\n\n            if (event.inputType === 'deleteContentBackward') {\n                this.moveToPrev(event);\n            } else if (event.inputType === 'insertText' || event.inputType === 'deleteContentForward') {\n                this.moveToNext(event);\n            }\n        },\n        updateModel(event) {\n            const newValue = this.tokens.join('');\n\n            this.writeValue(newValue, event);\n            this.$emit('change', {\n                originalEvent: event,\n                value: newValue\n            });\n        },\n        moveToPrev(event) {\n            let prevInput = this.findPrevInput(event.target);\n\n            if (prevInput) {\n                prevInput.focus();\n                prevInput.select();\n            }\n        },\n        moveToNext(event) {\n            let nextInput = this.findNextInput(event.target);\n\n            if (nextInput) {\n                nextInput.focus();\n                nextInput.select();\n            }\n        },\n        findNextInput(element) {\n            let nextElement = element.nextElementSibling;\n\n            if (!nextElement) return;\n\n            return nextElement.nodeName === 'INPUT' ? nextElement : this.findNextInput(nextElement);\n        },\n        findPrevInput(element) {\n            let prevElement = element.previousElementSibling;\n\n            if (!prevElement) return;\n\n            return prevElement.nodeName === 'INPUT' ? prevElement : this.findPrevInput(prevElement);\n        },\n        onFocus(event) {\n            event.target.select();\n            this.$emit('focus', event);\n        },\n        onBlur(event) {\n            this.$emit('blur', event);\n        },\n        onClick(event) {\n            setTimeout(() => event.target.select(), 1);\n        },\n        onKeyDown(event) {\n            if (event.ctrlKey || event.metaKey) {\n                return;\n            }\n\n            switch (event.code) {\n                case 'ArrowLeft':\n                    this.moveToPrev(event);\n                    event.preventDefault();\n\n                    break;\n\n                case 'ArrowUp':\n                case 'ArrowDown':\n                    event.preventDefault();\n\n                    break;\n\n                case 'Backspace':\n                    if (event.target.value.length === 0) {\n                        this.moveToPrev(event);\n                        event.preventDefault();\n                    }\n\n                    break;\n\n                case 'ArrowRight':\n                    this.moveToNext(event);\n                    event.preventDefault();\n\n                    break;\n\n                case 'Enter':\n                case 'NumpadEnter':\n                case 'Tab':\n                    break;\n\n                default:\n                    if ((this.integerOnly && !(event.code !== 'Space' && Number(event.key) >= 0 && Number(event.key) <= 9)) || (this.tokens.join('').length >= this.length && event.code !== 'Delete')) {\n                        event.preventDefault();\n                    }\n\n                    break;\n            }\n        },\n        onPaste(event) {\n            let paste = event.clipboardData.getData('text');\n\n            if (paste.length) {\n                let pastedCode = paste.substring(0, this.length);\n\n                if (!this.integerOnly || !isNaN(pastedCode)) {\n                    this.tokens = pastedCode.split('');\n                    this.updateModel(event);\n                }\n            }\n\n            event.preventDefault();\n        }\n    },\n    computed: {\n        inputMode() {\n            return this.integerOnly ? 'numeric' : 'text';\n        },\n        inputType() {\n            return this.mask ? 'password' : 'text';\n        }\n    },\n    components: {\n        OtpInputText: InputText\n    }\n};\n</script>\n"],"names":["name","BaseInput","props","readonly","type","Boolean","tabindex","Number","length","mask","integerOnly","style","InputOtpStyle","provide","$pcInputOtp","$parentInstance","BaseInputOtp","inheritAttrs","emits","data","tokens","watch","modelValue","immediate","handler","newValue","split","Array","methods","getTemplateAttrs","index","value","getTemplateEvents","_this","input","event","onInput","keydown","onKeyDown","focus","onFocus","blur","onBlur","paste","onPaste","target","updateModel","inputType","moveToPrev","moveToNext","join","writeValue","$emit","originalEvent","prevInput","findPrevInput","select","nextInput","findNextInput","element","nextElement","nextElementSibling","nodeName","prevElement","previousElementSibling","onClick","setTimeout","ctrlKey","metaKey","code","preventDefault","key","clipboardData","getData","pastedCode","substring","isNaN","computed","inputMode","components","OtpInputText","InputText","_openBlock","_createElementBlock","_mergeProps","_ctx","cx","ptmi","_Fragment","_renderList","i","_renderSlot","$slots","events","$options","attrs","_createVNode","_component_OtpInputText","$data","$formName","inputmode","variant","disabled","size","invalid","unstyled","$event","_cache","onKeydown","pt","ptm"],"mappings":"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"}