2
0
mirror of https://github.com/tenrok/maska.git synced 2026-06-02 16:04:05 +03:00
Files
maska/dist/maska.esm.js
T
2021-10-01 17:38:24 +03:00

7 lines
5.7 KiB
JavaScript

/*!
* maska v1.4.6
* (c) 2019-2021 Alexander Shabunevich
* Released under the MIT License.
*/
function e(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function t(t){for(var n=1;n<arguments.length;n++){var a=null!=arguments[n]?arguments[n]:{};n%2?e(Object(a),!0).forEach((function(e){r(t,e,a[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(a)):e(Object(a)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(a,e))}))}return t}function n(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var u={"#":{pattern:/[0-9]/},X:{pattern:/[0-9a-zA-Z]/},S:{pattern:/[a-zA-Z]/},A:{pattern:/[a-zA-Z]/,uppercase:!0},a:{pattern:/[a-zA-Z]/,lowercase:!0},"!":{escape:!0},"*":{repeat:!0}};function i(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:u,a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return o(t).length>1?s(t)(e,t,n,a):l(e,t,n,a)}function o(e){try{return JSON.parse(e)}catch(t){return[e]}}function s(e){var t=o(e).sort((function(e,t){return e.length-t.length}));return function(e,a,r){var u=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=t.map((function(t){return l(e,t,r,!1)})),o=i.pop();for(var s in t)if(n(o,t[s],r))return l(e,t[s],r,u);return""};function n(e,t,n){for(var a in n)n[a].escape&&(t=t.replace(new RegExp(a+".{1}","g"),""));return t.split("").filter((function(e){return n[e]&&n[e].pattern})).length>=e.length}}function l(e,t,n){for(var a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],r=0,u=0,i="",o="";r<t.length&&u<e.length;){var s=t[r],l=e[u],p=n[s];if(p&&p.pattern)p.pattern.test(l)&&(i+=c(l,p),r++,a&&t[r]&&(n[t[r]]?n[t[r]]&&n[t[r]].escape&&(i+=t[r+1],r+=2):(i+=t[r],r++))),u++;else if(p&&p.repeat){var f=n[t[r-1]];f&&!f.pattern.test(l)?r++:r--}else p&&p.escape&&(s=t[++r]),a&&(i+=s),l===s&&u++,r++}for(;a&&r<t.length;){var v=t[r];if(n[v]){o="";break}o+=v,r++}return i+o}function c(e,t){return t.transform&&(e=t.transform(e)),t.uppercase?e.toLocaleUpperCase():t.lowercase?e.toLocaleLowerCase():e}function p(e){return e instanceof HTMLInputElement?e:e.querySelector("input")||e}function f(e){return"[object String]"===Object.prototype.toString.call(e)}var v=function(){function e(a){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(n(this,e),!a)throw new Error("Maska: no element for mask");if(r.tokens)for(var i in r.tokens)r.tokens[i]=t({},r.tokens[i]),r.tokens[i].pattern&&f(r.tokens[i].pattern)&&(r.tokens[i].pattern=new RegExp(r.tokens[i].pattern));this._opts={mask:r.mask,tokens:t(t({},u),r.tokens)},this._el=f(a)?document.querySelectorAll(a):a.length?a:[a],this.init()}var r,o,s;return r=e,(o=[{key:"init",value:function(){for(var e=this,t=function(t){var n=p(e._el[t]);!e._opts.mask||n.dataset.mask&&n.dataset.mask===e._opts.mask||(n.dataset.mask=e._opts.mask),setTimeout((function(){return e.updateValue(n)}),0),n.dataset.maskInited||(n.dataset.maskInited=!0,n.addEventListener("input",(function(t){return e.updateValue(t.target,t)})),n.addEventListener("beforeinput",(function(t){return e.beforeInput(t)})))},n=0;n<this._el.length;n++)t(n)}},{key:"destroy",value:function(){for(var e=this,t=0;t<this._el.length;t++){var n=p(this._el[t]);n.removeEventListener("input",(function(t){return e.updateValue(t.target,t)})),n.removeEventListener("beforeinput",(function(t){return e.beforeInput(t)})),delete n.dataset.mask,delete n.dataset.maskInited}}},{key:"updateValue",value:function(e,t){if(e&&e.type){var n=e.type.match(/^number$/i)&&e.validity.badInput;if(!e.value&&!n||!e.dataset.mask)return e.dataset.maskRawValue="",void this.dispatch("maska",e,t);var a=e.selectionEnd,r=e.value,u=r[a-1];e.dataset.maskRawValue=i(e.value,e.dataset.mask,this._opts.tokens,!1),e.value=i(e.value,e.dataset.mask,this._opts.tokens),t&&"insertText"===t.inputType&&a===r.length&&(a=e.value.length),function(e,t,n){for(;t&&t<e.value.length&&e.value.charAt(t-1)!==n;)t++;(e.type?e.type.match(/^(text|search|password|tel|url)$/i):!e.type)&&e===document.activeElement&&(e.setSelectionRange(t,t),setTimeout((function(){e.setSelectionRange(t,t)}),0))}(e,a,u),this.dispatch("maska",e,t),e.value!==r&&this.dispatch("input",e,t)}}},{key:"beforeInput",value:function(e){e&&e.target&&e.target.type&&e.target.type.match(/^number$/i)&&e.data&&isNaN(e.target.value+e.data)&&e.preventDefault()}},{key:"dispatch",value:function(e,t,n){t.dispatchEvent(function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=document.createEvent("Event");return n.initEvent(e,!0,!0),t&&(n.inputType=t),n}(e,n&&n.inputType||null))}}])&&a(r.prototype,o),s&&a(r,s),e}();var d,k=(d=new WeakMap,function(e,n){if(n.value)return d.has(e)&&!function(e){return!(f(e.value)&&e.value===e.oldValue||Array.isArray(e.value)&&JSON.stringify(e.value)===JSON.stringify(e.oldValue)||e.value&&e.value.mask&&e.oldValue&&e.oldValue.mask&&e.value.mask===e.oldValue.mask)}(n)?d.get(e).updateValue(e):void d.set(e,new v(e,function(e){var n={};return e.mask?(n.mask=Array.isArray(e.mask)?JSON.stringify(e.mask):e.mask,n.tokens=e.tokens?t({},e.tokens):{}):n.mask=Array.isArray(e)?JSON.stringify(e):e,n}(n.value)))});function m(e){e.directive("maska",k)}function h(e,t){return new v(e,t)}"undefined"!=typeof window&&window.Vue&&window.Vue.use&&window.Vue.use(m);export default m;export{h as create,m as install,i as mask,k as maska,u as tokens};