UNPKG

di-vue-mask

Version:
6 lines 7.19 kB
/** * di-vue-mask v1.2.1 * (c) 2021 Sergio Rodrigues * @license MIT */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.VueMask=t()}(this,function(){"use strict";function e(e){var t=document.createEvent("HTMLEvents");return t.initEvent(e,!0,!0),t}function t(e){return function(t){var n=e(t),r=p("pre"in n?n.pre:null),i=f("post"in n?n.post:null),o="pattern"in n&&n.pattern?new a(n.pattern,n.options||{}):null,u="handler"in n&&"function"==typeof n.handler?n.handler:function(e){return o?o.apply(e):e};return function(e,t){void 0===t&&(t={}),t=Object.assign(t,{delimiter:d}),e=r(e,t);var n=(e.includes(d)?e:""+d+e).split(d),o=n[0],a=n[1];return a=u(a,t),i(""+o+a,t)}}}function n(t,n){var r=t.value;if(t.dataset.value!==r){var i=n(r,{el:t});if(i===r)return void(t.dataset.value=r);var o=t.selectionEnd;if(o===r.length)o=i.length;else if(o>0&&o<=i.length){var a=r.charAt(o-1);a!==i.charAt(o-1)&&(a===i.charAt(o)?o+=1:a===i.charAt(o-2)&&(o-=1))}t.value=i,t.dataset.value=i,t===document.activeElement&&t.setSelectionRange(o,o),t.dispatchEvent(e("input"))}}function r(e){var t=new WeakMap,r=new WeakMap,i=new WeakMap;return{bind:function(o,a){var s=e({value:a.value,locale:a.arg||Object.keys(a.modifiers)[0]||null}),c=u(o),l=function(e){e.isTrusted&&n(c,s)};t.set(o,s),r.set(o,c),i.set(o,l),c.addEventListener("input",l),n(c,s)},componentUpdated:function(e){n(r.get(e),t.get(e))},unbind:function(e){e.removeEventListener("input",r.get(e)),t.delete(e),r.delete(e),i.delete(e)}}}function i(e){i.installed||(o=e,e.directive("mask",r(v)),e.directive("maskDate",r(g)),e.directive("maskPhone",r(w)),e.directive("maskDecimal",r(b)),e.directive("maskNumber",r(k)),e.directive("maskCpf",r(A)),e.directive("maskCnpj",r(j)),e.directive("maskCep",r(E)),e.directive("maskCc",r(L)),e.directive("maskModel",x),i.installed=!0)}var o,a=("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self,function(e,t){return t={exports:{}},e(t,t.exports),t.exports}(function(e,t){!function(t,n){e.exports=n()}(0,function(){function e(e,t){for(var n=0,r=t-1,i={escape:!0};r>=0&&i&&i.escape;)i=u[e.charAt(r)],n+=i&&i.escape?1:0,r--;return n>0&&n%2==1}function t(e,t){var n=e.replace(/[^0]/g,"").length;return t.replace(/[^\d]/g,"").length-n}function n(e,t,n,r){return r&&"function"==typeof r.transform&&(t=r.transform(t)),n.reverse?t+e:e+t}function r(e,t,n){var i=e.charAt(t),o=u[i];return""!==i&&(!(!o||o.escape)||r(e,t+n,n))}function i(e,t,n){var r=e.charAt(t),o=u[r];return""!==r&&(!(!o||!o.recursive)||i(e,t+n,n))}function o(e,t,n){var r=e.split("");return r.splice(n,0,t),r.join("")}function a(e,t){this.options=t||{},this.options={reverse:this.options.reverse||!1,usedefaults:this.options.usedefaults||this.options.reverse},this.pattern=e}var u={0:{pattern:/\d/,_default:"0"},9:{pattern:/\d/,optional:!0},"#":{pattern:/\d/,optional:!0,recursive:!0},A:{pattern:/[a-zA-Z0-9]/},S:{pattern:/[a-zA-Z]/},U:{pattern:/[a-zA-Z]/,transform:function(e){return e.toLocaleUpperCase()}},L:{pattern:/[a-zA-Z]/,transform:function(e){return e.toLocaleLowerCase()}},$:{escape:!0}};return a.prototype.process=function(a){var s=this;if(!a)return{result:"",valid:!1};a+="";var c=this.pattern,l=!0,p="",f=this.options.reverse?a.length-1:0,d=0,v=t(c,a),h=!1,g=[],m=!1,w={start:this.options.reverse?c.length-1:0,end:this.options.reverse?-1:c.length,inc:this.options.reverse?-1:1};for(d=w.start;function(e){if(!m&&!g.length&&r(c,d,w.inc))return!0;if(!m&&g.length&&i(c,d,w.inc))return!0;if(m||(m=g.length>0),m){var t=g.shift();if(g.push(t),e.reverse&&f>=0)return d++,c=o(c,t,d),!0;if(!e.reverse&&f<a.length)return c=o(c,t,d),!0}return d<c.length&&d>=0}(this.options);d+=w.inc){var y=a.charAt(f),b=c.charAt(d),k=u[b];if(g.length&&k&&!k.recursive&&(k=null),!m||y){if(s.options.reverse&&e(c,d)){p=n(p,b,s.options,k),d+=w.inc;continue}if(!s.options.reverse&&h){p=n(p,b,s.options,k),h=!1;continue}if(!s.options.reverse&&k&&k.escape){h=!0;continue}}if(!m&&k&&k.recursive)g.push(b);else{if(m&&!y){p=n(p,b,s.options,k);continue}if(!m&&g.length>0&&!y)continue}if(k)if(k.optional){if(k.pattern.test(y)&&v)p=n(p,y,s.options,k),f+=w.inc,v--;else if(g.length>0&&y){l=!1;break}}else if(k.pattern.test(y))p=n(p,y,s.options,k),f+=w.inc;else{if(y||!k._default||!s.options.usedefaults){l=!1;break}p=n(p,k._default,s.options,k)}else p=n(p,b,s.options,k),!m&&g.length&&g.push(b)}return{result:p,valid:l}},a.prototype.apply=function(e){return this.process(e).result},a.prototype.validate=function(e){return this.process(e).valid},a.process=function(e,t,n){return new a(t,n).process(e)},a.apply=function(e,t,n){return new a(t,n).apply(e)},a.validate=function(e,t,n){return new a(t,n).validate(e)},a})})),u=function(e){var t="input"!==e.tagName.toLowerCase()?e.querySelector("input:not([readonly])"):e;if(!t)throw new Error("Mask directive requires at least one input");return t},s=function(e){return e.replace(/\D/g,"")},c=function(e){return e.replace(/[^a-zA-Z]/g,"")},l=function(e){return e.replace(/[^a-zA-Z0-9]/g,"")},p=function(e){if("function"==typeof e)return e;switch(e){case"filter-number":return s;case"filter-letter":return c;default:return l}},f=function(e){return"function"==typeof e?e:function(e){return e.trim().replace(/[^0-9]$/,"")}},d="\xa7",v=t(function(e){return{pattern:e.value,pre:l,post:function(e){return e.trim().replace(/[^a-zA-Z0-9]$/,"")}}}),h={us:"0000-00-00",br:"00/00/0000"},g=t(function(e){void 0===e&&(e={});var t=e.locale;return void 0===t&&(t=null),{pattern:h[t||"us"],pre:s}}),m={get us(){var e=new a("(000) 000-0000");return function(t){return e.apply(t)}},get br(){var e=new a("(00) 0000-0000"),t=new a("(00) 9 0000-0000"),n=new a("0000-000-0000");return function(r){return r.startsWith("0800".slice(0,r.length))?n.apply(r):r.length<=10?e.apply(r):t.apply(r)}}},w=t(function(e){var t=e.locale,n=m[t||"us"];return{pre:s,handler:n}}),y={us:{thousand:",",decimal:"."},br:{thousand:".",decimal:","}},b=t(function(e){var t=e.locale,n=e.value,r=y[t||"us"],i=["#"+r.thousand+"##0"],o=n||0;return o&&i.push(r.decimal,new Array(o).fill("0").join("")),{pattern:i.join(""),options:{reverse:!0},pre:function(e,t){var n=t.delimiter;if(!e)return"";var i=e.startsWith("-")?"-":"",a=e.split(r.decimal).map(s),u=a[0],c=a[1];return void 0===c&&(c=""),c&&c.length>o&&(u=""+u+c.slice(0,-o),c=c.slice(-o)),[i,n,Number(u),c].join("")},post:function(e){return e}}}),k=t(function(){return{pattern:"#0",options:{reverse:!0},pre:s}}),A=t(function(){return{pattern:"000.000.000-00",pre:s}}),j=t(function(){return{pattern:"00.000.000/0000-00",pre:s}}),E=t(function(){return{pattern:"00.000-000",pre:s}}),L=t(function(){return{pattern:"0000 0000 0000 0000",pre:s}}),x={bind:function(e,t,n){var r=t.value,i=t.expression;e=u(e,n);var o=i.replace(/\[(\d+)]/,".$1").split("."),a=function(e){for(var t=n.context,r=o.slice(0);r.length>1;)t=t[r.shift()];return t[r.shift()]=e};e.addEventListener("input",function(e){var t=e.target;return a(t.value)},!1),e.value=r},update:function(e,t,n){var r=t.value;r!==t.oldValue&&(e=u(e,n),e.value=r)}},z={install:i};return"undefined"!=typeof window&&window.Vue&&window.Vue.use({install:i}),z});