{"version":3,"file":"index.mjs","sources":["../../src/keyfilter/BaseKeyFilter.js","../../src/keyfilter/KeyFilter.js"],"sourcesContent":["import BaseDirective from '@primevue/core/basedirective';\nimport KeyFilterStyle from 'primevue/keyfilter/style';\n\nconst BaseKeyFilter = BaseDirective.extend({\n    style: KeyFilterStyle\n});\n\nexport default BaseKeyFilter;\n","import { isAttributeEquals } from '@primeuix/utils/dom';\nimport BaseKeyFilter from './BaseKeyFilter';\n\nconst KeyFilter = BaseKeyFilter.extend('keyfilter', {\n    beforeMount(el, options) {\n        let target = this.getTarget(el);\n\n        if (!target) return;\n\n        target.$_pkeyfilterModifier = this.getModifiers(options);\n\n        if (options.value !== undefined) {\n            target.$_pkeyfilterPattern = options.value?.pattern || options.value;\n            target.$_pkeyfilterValidateOnly = options.value?.validateOnly || false;\n        }\n\n        this.bindEvents(target);\n\n        target.setAttribute('data-pd-keyfilter', true);\n    },\n    updated(el, options) {\n        let target = this.getTarget(el);\n\n        if (!target) return;\n\n        target.$_pkeyfilterModifier = this.getModifiers(options);\n        this.unbindEvents(el, options);\n\n        if (options.value !== undefined) {\n            target.$_pkeyfilterPattern = options.value?.pattern || options.value;\n            target.$_pkeyfilterValidateOnly = options.value?.validateOnly || false;\n        }\n\n        this.bindEvents(target);\n    },\n    unmounted(el, options) {\n        this.unbindEvents(el, options);\n    },\n    DEFAULT_PATTERNS: {\n        pint: /[\\d]/,\n        int: /[\\d-]/,\n        pnum: /[\\d.]/,\n        money: /[\\d.\\s,]/,\n        num: /[\\d-.]/,\n        hex: /[0-9a-f]/i,\n        email: /[a-z0-9_.-@]/i,\n        alpha: /[a-z_]/i,\n        alphanum: /[a-z0-9_]/\n    },\n    methods: {\n        getTarget(el) {\n            return isAttributeEquals(el, 'data-pc-name', 'inputtext') || isAttributeEquals(el, 'data-pc-name', 'textarea') ? el : null;\n        },\n        getModifiers(options) {\n            if (options.modifiers && Object.keys(options.modifiers).length) {\n                return Object.keys(options.modifiers)[Object.keys(options.modifiers).length - 1];\n            }\n\n            return '';\n        },\n        getRegex(target) {\n            return target.$_pkeyfilterPattern ? target.$_pkeyfilterPattern : target.$_pkeyfilterModifier ? this.DEFAULT_PATTERNS[target.$_pkeyfilterModifier] : /./;\n        },\n        bindEvents(el) {\n            el.$_keyfilterKeydownEvent = (event) => this.onKeydown(event, el);\n            el.$_keyfilterPasteEvent = (event) => this.onPaste(event, el);\n            el.$_keyfilterInputEvent = (event) => this.onInput(event, el);\n            el.$_keyfilterCompositionStartEvent = (event) => this.onCompositionStart(event, el);\n            el.$_keyfilterCompositionEndEvent = (event) => this.onCompositionEnd(event, el);\n\n            el.addEventListener('keypress', el.$_keyfilterKeydownEvent);\n            el.addEventListener('paste', el.$_keyfilterPasteEvent);\n            el.addEventListener('input', el.$_keyfilterInputEvent);\n            el.addEventListener('compositionstart', el.$_keyfilterCompositionStartEvent);\n            el.addEventListener('compositionend', el.$_keyfilterCompositionEndEvent);\n        },\n        unbindEvents(el) {\n            el.removeEventListener('keypress', el.$_keyfilterKeydownEvent);\n            el.removeEventListener('paste', el.$_keyfilterPasteEvent);\n            el.removeEventListener('input', el.$_keyfilterInputEvent);\n            el.removeEventListener('compositionstart', el.$_keyfilterCompositionStartEvent);\n            el.removeEventListener('compositionend', el.$_keyfilterCompositionEndEvent);\n\n            el.$_keyfilterKeydownEvent = null;\n            el.$_keyfilterPasteEvent = null;\n            el.$_keyfilterInputEvent = null;\n            el.$_keyfilterCompositionStartEvent = null;\n            el.$_keyfilterCompositionEndEvent = null;\n        },\n        onCompositionStart(event, target) {\n            target.$_pkeyfilterComposing = true;\n        },\n        onCompositionEnd(event, target) {\n            target.$_pkeyfilterComposing = false;\n            this.onInput(event, target);\n        },\n        onInput(event, target) {\n            if (target.$_pkeyfilterComposing) return;\n\n            const regex = this.getRegex(target);\n\n            if (regex && !regex.test(target.value)) {\n                // remove invalid character e.g. ~ \"\n                target.value = target.value.slice(0, -1);\n            }\n        },\n        onKeydown(event, target) {\n            if (event.ctrlKey || event.altKey || event.metaKey || event.key === 'Tab') {\n                return;\n            }\n\n            let regex = this.getRegex(target);\n\n            if (regex === '') {\n                return;\n            }\n\n            let testKey = `${event.key}`;\n\n            if (target.$_pkeyfilterValidateOnly) {\n                testKey = `${target.value.substring(0, target.selectionStart)}${event.key}${target.value.substring(target.selectionEnd)}`;\n            }\n\n            if (!regex.test(testKey)) {\n                // runs before @update:modelValue emit\n                event.preventDefault();\n            }\n        },\n        onPaste(event, target) {\n            let regex = this.getRegex(target);\n\n            if (regex === '') {\n                return;\n            }\n\n            const clipboard = event.clipboardData.getData('text');\n\n            if (target.$_pkeyfilterValidateOnly) {\n                const newValue = `${target.value.substring(0, target.selectionStart)}${clipboard}${target.value.substring(target.selectionEnd)}`;\n\n                if (!regex.test(newValue)) {\n                    event.preventDefault();\n                }\n            } else {\n                for (let i = 0; i < clipboard.length; i++) {\n                    if (!regex.test(clipboard[i])) {\n                        event.preventDefault();\n\n                        return;\n                    }\n                }\n            }\n        }\n    }\n});\n\nexport default KeyFilter;\n"],"names":["BaseKeyFilter","BaseDirective","extend","style","KeyFilterStyle","KeyFilter","beforeMount","el","options","target","getTarget","$_pkeyfilterModifier","getModifiers","value","undefined","_options$value","_options$value2","$_pkeyfilterPattern","pattern","$_pkeyfilterValidateOnly","validateOnly","bindEvents","setAttribute","updated","unbindEvents","_options$value3","_options$value4","unmounted","DEFAULT_PATTERNS","pint","pnum","money","num","hex","email","alpha","alphanum","methods","isAttributeEquals","modifiers","Object","keys","length","getRegex","_this","$_keyfilterKeydownEvent","event","onKeydown","$_keyfilterPasteEvent","onPaste","$_keyfilterInputEvent","onInput","$_keyfilterCompositionStartEvent","onCompositionStart","$_keyfilterCompositionEndEvent","onCompositionEnd","addEventListener","removeEventListener","$_pkeyfilterComposing","regex","test","slice","ctrlKey","altKey","metaKey","key","testKey","concat","substring","selectionStart","selectionEnd","preventDefault","clipboard","clipboardData","getData","newValue","i"],"mappings":"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"}