{"version":3,"file":"index.mjs","sources":["../../src/inputotp/BaseInputOtp.vue","../../src/inputotp/InputOtp.vue","../../src/inputotp/InputOtp.vue?vue&type=template&id=55df1e0f&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 ? $formName + '_' + (i - 1) : undefined\"\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 { isTouchDevice } from '@primeuix/utils/dom';\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' || (isTouchDevice() && event instanceof CustomEvent)) {\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.key) {\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 'Tab':\n                    break;\n\n                default:\n                    const target = event.target;\n                    const hasSelection = target.selectionStart !== target.selectionEnd;\n                    const isAtMaxLength = this.tokens.join('').length >= this.length;\n                    const isValidKey = this.integerOnly ? /^[0-9]$/.test(event.key) : true;\n\n                    if (!isValidKey || (isAtMaxLength && event.key !== 'Delete' && !hasSelection)) {\n                        event.preventDefault();\n                    }\n\n                    break;\n            }\n        },\n        onPaste(event) {\n            if (this.readonly || this.disabled) {\n                return;\n            }\n\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 ? $formName + '_' + (i - 1) : undefined\"\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 { isTouchDevice } from '@primeuix/utils/dom';\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' || (isTouchDevice() && event instanceof CustomEvent)) {\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.key) {\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 'Tab':\n                    break;\n\n                default:\n                    const target = event.target;\n                    const hasSelection = target.selectionStart !== target.selectionEnd;\n                    const isAtMaxLength = this.tokens.join('').length >= this.length;\n                    const isValidKey = this.integerOnly ? /^[0-9]$/.test(event.key) : true;\n\n                    if (!isValidKey || (isAtMaxLength && event.key !== 'Delete' && !hasSelection)) {\n                        event.preventDefault();\n                    }\n\n                    break;\n            }\n        },\n        onPaste(event) {\n            if (this.readonly || this.disabled) {\n                return;\n            }\n\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","isTouchDevice","CustomEvent","moveToNext","join","writeValue","$emit","originalEvent","prevInput","findPrevInput","select","nextInput","findNextInput","element","nextElement","nextElementSibling","nodeName","prevElement","previousElementSibling","onClick","setTimeout","ctrlKey","metaKey","key","preventDefault","hasSelection","selectionStart","selectionEnd","isAtMaxLength","isValidKey","test","disabled","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","undefined","inputmode","variant","size","invalid","unstyled","$event","_cache","onKeydown","pt","ptm"],"mappings":"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"}