{"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 (typeof options.value) {\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 (typeof options.value) {\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_]/i\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.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\n            el.addEventListener('keypress', el.$_keyfilterKeydownEvent);\n            el.addEventListener('paste', el.$_keyfilterPasteEvent);\n        },\n        unbindEvents(el) {\n            el.removeEventListener('keypress', el.$_keyfilterKeydownEvent);\n            el.removeEventListener('paste', el.$_keyfilterPasteEvent);\n\n            el.$_keyfilterKeydownEvent = null;\n            el.$_keyfilterPasteEvent = null;\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 = `${event.target.value}${event.key}`;\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            let testKey = '';\n\n            // loop over each letter pasted and if any fail prevent the paste\n            [...clipboard].forEach((c) => {\n                if (target.$_pkeyfilterValidateOnly) {\n                    testKey += c;\n                } else {\n                    testKey = c;\n                }\n\n                if (!regex.test(testKey)) {\n                    event.preventDefault();\n\n                    return false;\n                }\n            });\n        }\n    }\n});\n\nexport default KeyFilter;\n"],"names":["BaseKeyFilter","BaseDirective","extend","style","KeyFilterStyle","KeyFilter","beforeMount","el","options","target","getTarget","$_pkeyfilterModifier","getModifiers","_typeof","value","_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","addEventListener","removeEventListener","ctrlKey","altKey","metaKey","key","regex","testKey","concat","test","preventDefault","clipboard","clipboardData","getData","_toConsumableArray","forEach","c"],"mappings":";;;;AAGA,IAAMA,aAAa,GAAGC,aAAa,CAACC,MAAM,CAAC;AACvCC,EAAAA,KAAK,EAAEC;AACX,CAAC,CAAC;;;;;;;;;ACFF,IAAMC,SAAS,GAAGL,aAAa,CAACE,MAAM,CAAC,WAAW,EAAE;AAChDI,EAAAA,WAAW,WAAXA,WAAWA,CAACC,EAAE,EAAEC,OAAO,EAAE;AACrB,IAAA,IAAIC,MAAM,GAAG,IAAI,CAACC,SAAS,CAACH,EAAE,CAAC;IAE/B,IAAI,CAACE,MAAM,EAAE;IAEbA,MAAM,CAACE,oBAAoB,GAAG,IAAI,CAACC,YAAY,CAACJ,OAAO,CAAC;AAExD,IAAA,IAAAK,OAAA,CAAWL,OAAO,CAACM,KAAK,CAAE,EAAA;MAAA,IAAAC,cAAA,EAAAC,eAAA;AACtBP,MAAAA,MAAM,CAACQ,mBAAmB,GAAG,EAAAF,cAAA,GAAAP,OAAO,CAACM,KAAK,MAAAC,IAAAA,IAAAA,cAAA,uBAAbA,cAAA,CAAeG,OAAO,KAAIV,OAAO,CAACM,KAAK;AACpEL,MAAAA,MAAM,CAACU,wBAAwB,GAAG,CAAAH,CAAAA,eAAA,GAAAR,OAAO,CAACM,KAAK,MAAA,IAAA,IAAAE,eAAA,KAAbA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAeI,YAAY,KAAI,KAAK;AAC1E;AAEA,IAAA,IAAI,CAACC,UAAU,CAACZ,MAAM,CAAC;AAEvBA,IAAAA,MAAM,CAACa,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC;GACjD;AACDC,EAAAA,OAAO,WAAPA,OAAOA,CAAChB,EAAE,EAAEC,OAAO,EAAE;AACjB,IAAA,IAAIC,MAAM,GAAG,IAAI,CAACC,SAAS,CAACH,EAAE,CAAC;IAE/B,IAAI,CAACE,MAAM,EAAE;IAEbA,MAAM,CAACE,oBAAoB,GAAG,IAAI,CAACC,YAAY,CAACJ,OAAO,CAAC;AACxD,IAAA,IAAI,CAACgB,YAAY,CAACjB,EAAE,EAAEC,OAAO,CAAC;AAE9B,IAAA,IAAAK,OAAA,CAAWL,OAAO,CAACM,KAAK,CAAE,EAAA;MAAA,IAAAW,eAAA,EAAAC,eAAA;AACtBjB,MAAAA,MAAM,CAACQ,mBAAmB,GAAG,EAAAQ,eAAA,GAAAjB,OAAO,CAACM,KAAK,MAAAW,IAAAA,IAAAA,eAAA,uBAAbA,eAAA,CAAeP,OAAO,KAAIV,OAAO,CAACM,KAAK;AACpEL,MAAAA,MAAM,CAACU,wBAAwB,GAAG,CAAAO,CAAAA,eAAA,GAAAlB,OAAO,CAACM,KAAK,MAAA,IAAA,IAAAY,eAAA,KAAbA,KAAAA,CAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAeN,YAAY,KAAI,KAAK;AAC1E;AAEA,IAAA,IAAI,CAACC,UAAU,CAACZ,MAAM,CAAC;GAC1B;AACDkB,EAAAA,SAAS,WAATA,SAASA,CAACpB,EAAE,EAAEC,OAAO,EAAE;AACnB,IAAA,IAAI,CAACgB,YAAY,CAACjB,EAAE,EAAEC,OAAO,CAAC;GACjC;AACDoB,EAAAA,gBAAgB,EAAE;AACdC,IAAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAA,EAAK,QAAQ;AACbC,IAAAA,IAAI,EAAE,QAAQ;AACdC,IAAAA,KAAK,EAAE,WAAW;AAClBC,IAAAA,GAAG,EAAE,UAAU;AACfC,IAAAA,GAAG,EAAE,WAAW;AAChBC,IAAAA,KAAK,EAAE,iBAAiB;AACxBC,IAAAA,KAAK,EAAE,SAAS;AAChBC,IAAAA,QAAQ,EAAE;GACb;AACDC,EAAAA,OAAO,EAAE;AACL3B,IAAAA,SAAS,EAATA,SAAAA,SAASA,CAACH,EAAE,EAAE;MACV,OAAO+B,iBAAiB,CAAC/B,EAAE,EAAE,cAAc,EAAE,WAAW,CAAC,IAAI+B,iBAAiB,CAAC/B,EAAE,EAAE,cAAc,EAAE,UAAU,CAAC,GAAGA,EAAE,GAAG,IAAI;KAC7H;AACDK,IAAAA,YAAY,EAAZA,SAAAA,YAAYA,CAACJ,OAAO,EAAE;AAClB,MAAA,IAAIA,OAAO,CAAC+B,SAAS,IAAIC,MAAM,CAACC,IAAI,CAACjC,OAAO,CAAC+B,SAAS,CAAC,CAACG,MAAM,EAAE;AAC5D,QAAA,OAAOF,MAAM,CAACC,IAAI,CAACjC,OAAO,CAAC+B,SAAS,CAAC,CAACC,MAAM,CAACC,IAAI,CAACC,MAAM,GAAG,CAAC,CAAC;AACjE;AAEA,MAAA,OAAO,EAAE;KACZ;AACDC,IAAAA,QAAQ,EAARA,SAAAA,QAAQA,CAAClC,MAAM,EAAE;MACb,OAAOA,MAAM,CAACQ,mBAAmB,GAAGR,MAAM,CAACQ,mBAAmB,GAAGR,MAAM,CAACE,oBAAoB,GAAG,IAAI,CAACiB,gBAAgB,CAACnB,MAAM,CAACE,oBAAoB,CAAC,GAAG,GAAG;KAC1J;AACDU,IAAAA,UAAU,EAAVA,SAAAA,UAAUA,CAACd,EAAE,EAAE;AAAA,MAAA,IAAAqC,KAAA,GAAA,IAAA;AACXrC,MAAAA,EAAE,CAACsC,uBAAuB,GAAG,UAACC,KAAK,EAAA;AAAA,QAAA,OAAKF,KAAI,CAACG,SAAS,CAACD,KAAK,EAAEvC,EAAE,CAAC;AAAA,OAAA;AACjEA,MAAAA,EAAE,CAACyC,qBAAqB,GAAG,UAACF,KAAK,EAAA;AAAA,QAAA,OAAKF,KAAI,CAACK,OAAO,CAACH,KAAK,EAAEvC,EAAE,CAAC;AAAA,OAAA;MAE7DA,EAAE,CAAC2C,gBAAgB,CAAC,UAAU,EAAE3C,EAAE,CAACsC,uBAAuB,CAAC;MAC3DtC,EAAE,CAAC2C,gBAAgB,CAAC,OAAO,EAAE3C,EAAE,CAACyC,qBAAqB,CAAC;KACzD;AACDxB,IAAAA,YAAY,EAAZA,SAAAA,YAAYA,CAACjB,EAAE,EAAE;MACbA,EAAE,CAAC4C,mBAAmB,CAAC,UAAU,EAAE5C,EAAE,CAACsC,uBAAuB,CAAC;MAC9DtC,EAAE,CAAC4C,mBAAmB,CAAC,OAAO,EAAE5C,EAAE,CAACyC,qBAAqB,CAAC;MAEzDzC,EAAE,CAACsC,uBAAuB,GAAG,IAAI;MACjCtC,EAAE,CAACyC,qBAAqB,GAAG,IAAI;KAClC;AACDD,IAAAA,SAAS,WAATA,SAASA,CAACD,KAAK,EAAErC,MAAM,EAAE;AACrB,MAAA,IAAIqC,KAAK,CAACM,OAAO,IAAIN,KAAK,CAACO,MAAM,IAAIP,KAAK,CAACQ,OAAO,IAAIR,KAAK,CAACS,GAAG,KAAK,KAAK,EAAE;AACvE,QAAA;AACJ;AAEA,MAAA,IAAIC,KAAK,GAAG,IAAI,CAACb,QAAQ,CAAClC,MAAM,CAAC;MAEjC,IAAI+C,KAAK,KAAK,EAAE,EAAE;AACd,QAAA;AACJ;AAEA,MAAA,IAAIC,OAAO,GAAAC,EAAAA,CAAAA,MAAA,CAAMZ,KAAK,CAACS,GAAG,CAAE;MAE5B,IAAI9C,MAAM,CAACU,wBAAwB,EAAE;AACjCsC,QAAAA,OAAO,GAAAC,EAAAA,CAAAA,MAAA,CAAMZ,KAAK,CAACrC,MAAM,CAACK,KAAK,CAAA,CAAA4C,MAAA,CAAGZ,KAAK,CAACS,GAAG,CAAE;AACjD;AAEA,MAAA,IAAI,CAACC,KAAK,CAACG,IAAI,CAACF,OAAO,CAAC,EAAE;AACtB;QACAX,KAAK,CAACc,cAAc,EAAE;AAC1B;KACH;AACDX,IAAAA,OAAO,WAAPA,OAAOA,CAACH,KAAK,EAAErC,MAAM,EAAE;AACnB,MAAA,IAAI+C,KAAK,GAAG,IAAI,CAACb,QAAQ,CAAClC,MAAM,CAAC;MAEjC,IAAI+C,KAAK,KAAK,EAAE,EAAE;AACd,QAAA;AACJ;MAEA,IAAMK,SAAS,GAAGf,KAAK,CAACgB,aAAa,CAACC,OAAO,CAAC,MAAM,CAAC;MACrD,IAAIN,OAAO,GAAG,EAAE;;AAEhB;AACAO,MAAAA,kBAAA,CAAIH,SAAS,CAAA,CAAEI,OAAO,CAAC,UAACC,CAAC,EAAK;QAC1B,IAAIzD,MAAM,CAACU,wBAAwB,EAAE;AACjCsC,UAAAA,OAAO,IAAIS,CAAC;AAChB,SAAC,MAAM;AACHT,UAAAA,OAAO,GAAGS,CAAC;AACf;AAEA,QAAA,IAAI,CAACV,KAAK,CAACG,IAAI,CAACF,OAAO,CAAC,EAAE;UACtBX,KAAK,CAACc,cAAc,EAAE;AAEtB,UAAA,OAAO,KAAK;AAChB;AACJ,OAAC,CAAC;AACN;AACJ;AACJ,CAAC;;;;"}