mirror of
https://github.com/tenrok/maska.git
synced 2026-05-24 14:04:08 +03:00
#51 Added value preprocessor
This commit is contained in:
Vendored
+1
-1
@@ -3,4 +3,4 @@
|
||||
* (c) 2019-2021 Alexander Shabunevich
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
var t={"#":{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 e(e,s,r=t,i=!0){return n(s).length>1?function(t){const e=n(t).sort(((t,e)=>t.length-e.length));return function(t,n,r,i=!0){const o=e.map((e=>a(t,e,r,!1))).pop();for(let n in e)if(s(o,e[n],r))return a(t,e[n],r,i);return""};function s(t,e,n){for(let t in n)n[t].escape&&(e=e.replace(new RegExp(t+".{1}","g"),""));return e.split("").filter((t=>n[t]&&n[t].pattern)).length>=t.length}}(s)(e,s,r,i):a(e,s,r,i)}function n(t){try{return JSON.parse(t)}catch{return[t]}}function a(t,e,n,a=!0){let r=0,i=0,o="",u="";for(;r<e.length&&i<t.length;){let u=e[r];const l=t[i],p=n[u];if(p&&p.pattern)p.pattern.test(l)&&(o+=s(l,p),r++,a&&e[r]&&(n[e[r]]?n[e[r]]&&n[e[r]].escape&&(o+=e[r+1],r+=2):(o+=e[r],r++))),i++;else if(p&&p.repeat){const t=n[e[r-1]];t&&!t.pattern.test(l)?r++:r--}else p&&p.escape&&(r++,u=e[r]),a&&(o+=u),l===u&&i++,r++}for(;a&&r<e.length;){const t=e[r];if(n[t]){u="";break}u+=t,r++}return o+u}function s(t,e){return e.transform&&(t=e.transform(t)),e.uppercase?t.toLocaleUpperCase():e.lowercase?t.toLocaleLowerCase():t}function r(t){return t instanceof HTMLInputElement?t:t.querySelector("input")||t}function i(t){return"[object String]"===Object.prototype.toString.call(t)}class o{constructor(e,n={}){if(!e)throw new Error("Maska: no element for mask");if(n.tokens)for(const t in n.tokens)n.tokens[t]={...n.tokens[t]},n.tokens[t].pattern&&i(n.tokens[t].pattern)&&(n.tokens[t].pattern=new RegExp(n.tokens[t].pattern));this._opts={mask:n.mask,tokens:{...t,...n.tokens}},this._el=i(e)?document.querySelectorAll(e):e.length?e:[e],this.inputEvent=t=>this.updateValue(t.target,t),this.init()}init(){for(let t=0;t<this._el.length;t++){const e=r(this._el[t]);!this._opts.mask||e.dataset.mask&&e.dataset.mask===this._opts.mask||(e.dataset.mask=this._opts.mask),setTimeout((()=>this.updateValue(e)),0),e.dataset.maskInited||(e.dataset.maskInited=!0,e.addEventListener("input",this.inputEvent),e.addEventListener("beforeinput",this.beforeInput))}}destroy(){for(let t=0;t<this._el.length;t++){const e=r(this._el[t]);e.removeEventListener("input",this.inputEvent),e.removeEventListener("beforeinput",this.beforeInput),delete e.dataset.mask,delete e.dataset.maskInited}}updateValue(t,n){if(!t||!t.type)return;const a=t.type.match(/^number$/i)&&t.validity.badInput;if(!t.value&&!a||!t.dataset.mask)return t.dataset.maskRawValue="",void this.dispatch("maska",t,n);let s=t.selectionEnd;const r=t.value,i=r[s-1];t.dataset.maskRawValue=e(t.value,t.dataset.mask,this._opts.tokens,!1),t.value=e(t.value,t.dataset.mask,this._opts.tokens),n&&"insertText"===n.inputType&&s===r.length&&(s=t.value.length),function(t,e,n){for(;e&&e<t.value.length&&t.value.charAt(e-1)!==n;)e++;(t.type?t.type.match(/^(text|search|password|tel|url)$/i):!t.type)&&t===document.activeElement&&(t.setSelectionRange(e,e),setTimeout((function(){t.setSelectionRange(e,e)}),0))}(t,s,i),this.dispatch("maska",t,n),t.value!==r&&this.dispatch("input",t,n)}beforeInput(t){t&&t.target&&t.target.type&&t.target.type.match(/^number$/i)&&t.data&&isNaN(t.target.value+t.data)&&t.preventDefault()}dispatch(t,e,n){e.dispatchEvent(function(t,e=null){const n=document.createEvent("Event");return n.initEvent(t,!0,!0),e&&(n.inputType=e),n}(t,n&&n.inputType||null))}}var u=(()=>{const t=new WeakMap;return(e,n)=>{n.value&&(t.has(e)&&!function(t){return!(i(t.value)&&t.value===t.oldValue||Array.isArray(t.value)&&JSON.stringify(t.value)===JSON.stringify(t.oldValue)||t.value&&t.value.mask&&t.oldValue&&t.oldValue.mask&&t.value.mask===t.oldValue.mask)}(n)||t.set(e,new o(e,function(t){const e={};return t.mask?(e.mask=Array.isArray(t.mask)?JSON.stringify(t.mask):t.mask,e.tokens=t.tokens?{...t.tokens}:{}):e.mask=Array.isArray(t)?JSON.stringify(t):t,e}(n.value))))}})();function l(t){t.directive("maska",u)}function p(t,e){return new o(t,e)}"undefined"!=typeof window&&window.Vue&&window.Vue.use&&window.Vue.use(l);export default l;export{p as create,l as install,e as mask,u as maska,t as tokens};
|
||||
var t={"#":{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 e(e,s,r=t,o=!0){return n(s).length>1?function(t){const e=n(t).sort(((t,e)=>t.length-e.length));return function(t,n,r,o=!0){const i=e.map((e=>a(t,e,r,!1))).pop();for(let n in e)if(s(i,e[n],r))return a(t,e[n],r,o);return""};function s(t,e,n){for(let t in n)n[t].escape&&(e=e.replace(new RegExp(t+".{1}","g"),""));return e.split("").filter((t=>n[t]&&n[t].pattern)).length>=t.length}}(s)(e,s,r,o):a(e,s,r,o)}function n(t){try{return JSON.parse(t)}catch{return[t]}}function a(t,e,n,a=!0){let r=0,o=0,i="",u="";for(;r<e.length&&o<t.length;){let u=e[r];const p=t[o],l=n[u];if(l&&l.pattern)l.pattern.test(p)&&(i+=s(p,l),r++,a&&e[r]&&(n[e[r]]?n[e[r]]&&n[e[r]].escape&&(i+=e[r+1],r+=2):(i+=e[r],r++))),o++;else if(l&&l.repeat){const t=n[e[r-1]];t&&!t.pattern.test(p)?r++:r--}else l&&l.escape&&(r++,u=e[r]),a&&(i+=u),p===u&&o++,r++}for(;a&&r<e.length;){const t=e[r];if(n[t]){u="";break}u+=t,r++}return i+u}function s(t,e){return e.transform&&(t=e.transform(t)),e.uppercase?t.toLocaleUpperCase():e.lowercase?t.toLocaleLowerCase():t}function r(t){return t instanceof HTMLInputElement?t:t.querySelector("input")||t}function o(t){return"[object String]"===Object.prototype.toString.call(t)}class i{constructor(e,n={}){if(!e)throw new Error("Maska: no element for mask");if(null!=n.preprocessor&&"function"!=typeof n.preprocessor)throw new Error("Maska: preprocessor must be a function");if(n.tokens)for(const t in n.tokens)n.tokens[t]={...n.tokens[t]},n.tokens[t].pattern&&o(n.tokens[t].pattern)&&(n.tokens[t].pattern=new RegExp(n.tokens[t].pattern));this._opts={mask:n.mask,tokens:{...t,...n.tokens},preprocessor:n.preprocessor},this._el=o(e)?document.querySelectorAll(e):e.length?e:[e],this.inputEvent=t=>this.updateValue(t.target,t),this.init()}init(){for(let t=0;t<this._el.length;t++){const e=r(this._el[t]);!this._opts.mask||e.dataset.mask&&e.dataset.mask===this._opts.mask||(e.dataset.mask=this._opts.mask),setTimeout((()=>this.updateValue(e)),0),e.dataset.maskInited||(e.dataset.maskInited=!0,e.addEventListener("input",this.inputEvent),e.addEventListener("beforeinput",this.beforeInput))}}destroy(){for(let t=0;t<this._el.length;t++){const e=r(this._el[t]);e.removeEventListener("input",this.inputEvent),e.removeEventListener("beforeinput",this.beforeInput),delete e.dataset.mask,delete e.dataset.maskInited}}updateValue(t,n){if(!t||!t.type)return;const a=t.type.match(/^number$/i)&&t.validity.badInput;if(!t.value&&!a||!t.dataset.mask)return t.dataset.maskRawValue="",void this.dispatch("maska",t,n);let s=t.selectionEnd;const r=t.value,o=r[s-1];t.dataset.maskRawValue=e(t.value,t.dataset.mask,this._opts.tokens,!1);let i=t.value;this._opts.preprocessor&&(i=this._opts.preprocessor(i)),t.value=e(i,t.dataset.mask,this._opts.tokens),n&&"insertText"===n.inputType&&s===r.length&&(s=t.value.length),function(t,e,n){for(;e&&e<t.value.length&&t.value.charAt(e-1)!==n;)e++;(t.type?t.type.match(/^(text|search|password|tel|url)$/i):!t.type)&&t===document.activeElement&&(t.setSelectionRange(e,e),setTimeout((function(){t.setSelectionRange(e,e)}),0))}(t,s,o),this.dispatch("maska",t,n),t.value!==r&&this.dispatch("input",t,n)}beforeInput(t){t&&t.target&&t.target.type&&t.target.type.match(/^number$/i)&&t.data&&isNaN(t.target.value+t.data)&&t.preventDefault()}dispatch(t,e,n){e.dispatchEvent(function(t,e=null){const n=document.createEvent("Event");return n.initEvent(t,!0,!0),e&&(n.inputType=e),n}(t,n&&n.inputType||null))}}var u=(()=>{const t=new WeakMap;return(e,n)=>{n.value&&(t.has(e)&&!function(t){return!(o(t.value)&&t.value===t.oldValue||Array.isArray(t.value)&&JSON.stringify(t.value)===JSON.stringify(t.oldValue)||t.value&&t.value.mask&&t.oldValue&&t.oldValue.mask&&t.value.mask===t.oldValue.mask)}(n)||t.set(e,new i(e,function(t){const e={};return t.mask?(e.mask=Array.isArray(t.mask)?JSON.stringify(t.mask):t.mask,e.tokens=t.tokens?{...t.tokens}:{},e.preprocessor=t.preprocessor):e.mask=Array.isArray(t)?JSON.stringify(t):t,e}(n.value))))}})();function p(t){t.directive("maska",u)}function l(t,e){return new i(t,e)}"undefined"!=typeof window&&window.Vue&&window.Vue.use&&window.Vue.use(p);export default p;export{l as create,p as install,e as mask,u as maska,t as tokens};
|
||||
|
||||
Vendored
+1
-1
@@ -3,4 +3,4 @@
|
||||
* (c) 2019-2021 Alexander Shabunevich
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Maska={})}(this,(function(t){"use strict";var e={"#":{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 n(t,n,r=e,i=!0){return a(n).length>1?function(t){const e=a(t).sort(((t,e)=>t.length-e.length));return function(t,a,r,i=!0){const o=e.map((e=>s(t,e,r,!1))).pop();for(let a in e)if(n(o,e[a],r))return s(t,e[a],r,i);return""};function n(t,e,n){for(let t in n)n[t].escape&&(e=e.replace(new RegExp(t+".{1}","g"),""));return e.split("").filter((t=>n[t]&&n[t].pattern)).length>=t.length}}(n)(t,n,r,i):s(t,n,r,i)}function a(t){try{return JSON.parse(t)}catch{return[t]}}function s(t,e,n,a=!0){let s=0,i=0,o="",u="";for(;s<e.length&&i<t.length;){let u=e[s];const l=t[i],p=n[u];if(p&&p.pattern)p.pattern.test(l)&&(o+=r(l,p),s++,a&&e[s]&&(n[e[s]]?n[e[s]]&&n[e[s]].escape&&(o+=e[s+1],s+=2):(o+=e[s],s++))),i++;else if(p&&p.repeat){const t=n[e[s-1]];t&&!t.pattern.test(l)?s++:s--}else p&&p.escape&&(s++,u=e[s]),a&&(o+=u),l===u&&i++,s++}for(;a&&s<e.length;){const t=e[s];if(n[t]){u="";break}u+=t,s++}return o+u}function r(t,e){return e.transform&&(t=e.transform(t)),e.uppercase?t.toLocaleUpperCase():e.lowercase?t.toLocaleLowerCase():t}function i(t){return t instanceof HTMLInputElement?t:t.querySelector("input")||t}function o(t){return"[object String]"===Object.prototype.toString.call(t)}class u{constructor(t,n={}){if(!t)throw new Error("Maska: no element for mask");if(n.tokens)for(const t in n.tokens)n.tokens[t]={...n.tokens[t]},n.tokens[t].pattern&&o(n.tokens[t].pattern)&&(n.tokens[t].pattern=new RegExp(n.tokens[t].pattern));this._opts={mask:n.mask,tokens:{...e,...n.tokens}},this._el=o(t)?document.querySelectorAll(t):t.length?t:[t],this.inputEvent=t=>this.updateValue(t.target,t),this.init()}init(){for(let t=0;t<this._el.length;t++){const e=i(this._el[t]);!this._opts.mask||e.dataset.mask&&e.dataset.mask===this._opts.mask||(e.dataset.mask=this._opts.mask),setTimeout((()=>this.updateValue(e)),0),e.dataset.maskInited||(e.dataset.maskInited=!0,e.addEventListener("input",this.inputEvent),e.addEventListener("beforeinput",this.beforeInput))}}destroy(){for(let t=0;t<this._el.length;t++){const e=i(this._el[t]);e.removeEventListener("input",this.inputEvent),e.removeEventListener("beforeinput",this.beforeInput),delete e.dataset.mask,delete e.dataset.maskInited}}updateValue(t,e){if(!t||!t.type)return;const a=t.type.match(/^number$/i)&&t.validity.badInput;if(!t.value&&!a||!t.dataset.mask)return t.dataset.maskRawValue="",void this.dispatch("maska",t,e);let s=t.selectionEnd;const r=t.value,i=r[s-1];t.dataset.maskRawValue=n(t.value,t.dataset.mask,this._opts.tokens,!1),t.value=n(t.value,t.dataset.mask,this._opts.tokens),e&&"insertText"===e.inputType&&s===r.length&&(s=t.value.length),function(t,e,n){for(;e&&e<t.value.length&&t.value.charAt(e-1)!==n;)e++;(t.type?t.type.match(/^(text|search|password|tel|url)$/i):!t.type)&&t===document.activeElement&&(t.setSelectionRange(e,e),setTimeout((function(){t.setSelectionRange(e,e)}),0))}(t,s,i),this.dispatch("maska",t,e),t.value!==r&&this.dispatch("input",t,e)}beforeInput(t){t&&t.target&&t.target.type&&t.target.type.match(/^number$/i)&&t.data&&isNaN(t.target.value+t.data)&&t.preventDefault()}dispatch(t,e,n){e.dispatchEvent(function(t,e=null){const n=document.createEvent("Event");return n.initEvent(t,!0,!0),e&&(n.inputType=e),n}(t,n&&n.inputType||null))}}var l=(()=>{const t=new WeakMap;return(e,n)=>{n.value&&(t.has(e)&&!function(t){return!(o(t.value)&&t.value===t.oldValue||Array.isArray(t.value)&&JSON.stringify(t.value)===JSON.stringify(t.oldValue)||t.value&&t.value.mask&&t.oldValue&&t.oldValue.mask&&t.value.mask===t.oldValue.mask)}(n)||t.set(e,new u(e,function(t){const e={};return t.mask?(e.mask=Array.isArray(t.mask)?JSON.stringify(t.mask):t.mask,e.tokens=t.tokens?{...t.tokens}:{}):e.mask=Array.isArray(t)?JSON.stringify(t):t,e}(n.value))))}})();function p(t){t.directive("maska",l)}"undefined"!=typeof window&&window.Vue&&window.Vue.use&&window.Vue.use(p),t.create=function(t,e){return new u(t,e)},t.default=p,t.install=p,t.mask=n,t.maska=l,t.tokens=e,Object.defineProperty(t,"__esModule",{value:!0})}));
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Maska={})}(this,(function(e){"use strict";var t={"#":{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 n(e,n,r=t,o=!0){return s(n).length>1?function(e){const t=s(e).sort(((e,t)=>e.length-t.length));return function(e,s,r,o=!0){const i=t.map((t=>a(e,t,r,!1))).pop();for(let s in t)if(n(i,t[s],r))return a(e,t[s],r,o);return""};function n(e,t,n){for(let e in n)n[e].escape&&(t=t.replace(new RegExp(e+".{1}","g"),""));return t.split("").filter((e=>n[e]&&n[e].pattern)).length>=e.length}}(n)(e,n,r,o):a(e,n,r,o)}function s(e){try{return JSON.parse(e)}catch{return[e]}}function a(e,t,n,s=!0){let a=0,o=0,i="",u="";for(;a<t.length&&o<e.length;){let u=t[a];const p=e[o],l=n[u];if(l&&l.pattern)l.pattern.test(p)&&(i+=r(p,l),a++,s&&t[a]&&(n[t[a]]?n[t[a]]&&n[t[a]].escape&&(i+=t[a+1],a+=2):(i+=t[a],a++))),o++;else if(l&&l.repeat){const e=n[t[a-1]];e&&!e.pattern.test(p)?a++:a--}else l&&l.escape&&(a++,u=t[a]),s&&(i+=u),p===u&&o++,a++}for(;s&&a<t.length;){const e=t[a];if(n[e]){u="";break}u+=e,a++}return i+u}function r(e,t){return t.transform&&(e=t.transform(e)),t.uppercase?e.toLocaleUpperCase():t.lowercase?e.toLocaleLowerCase():e}function o(e){return e instanceof HTMLInputElement?e:e.querySelector("input")||e}function i(e){return"[object String]"===Object.prototype.toString.call(e)}class u{constructor(e,n={}){if(!e)throw new Error("Maska: no element for mask");if(null!=n.preprocessor&&"function"!=typeof n.preprocessor)throw new Error("Maska: preprocessor must be a function");if(n.tokens)for(const e in n.tokens)n.tokens[e]={...n.tokens[e]},n.tokens[e].pattern&&i(n.tokens[e].pattern)&&(n.tokens[e].pattern=new RegExp(n.tokens[e].pattern));this._opts={mask:n.mask,tokens:{...t,...n.tokens},preprocessor:n.preprocessor},this._el=i(e)?document.querySelectorAll(e):e.length?e:[e],this.inputEvent=e=>this.updateValue(e.target,e),this.init()}init(){for(let e=0;e<this._el.length;e++){const t=o(this._el[e]);!this._opts.mask||t.dataset.mask&&t.dataset.mask===this._opts.mask||(t.dataset.mask=this._opts.mask),setTimeout((()=>this.updateValue(t)),0),t.dataset.maskInited||(t.dataset.maskInited=!0,t.addEventListener("input",this.inputEvent),t.addEventListener("beforeinput",this.beforeInput))}}destroy(){for(let e=0;e<this._el.length;e++){const t=o(this._el[e]);t.removeEventListener("input",this.inputEvent),t.removeEventListener("beforeinput",this.beforeInput),delete t.dataset.mask,delete t.dataset.maskInited}}updateValue(e,t){if(!e||!e.type)return;const s=e.type.match(/^number$/i)&&e.validity.badInput;if(!e.value&&!s||!e.dataset.mask)return e.dataset.maskRawValue="",void this.dispatch("maska",e,t);let a=e.selectionEnd;const r=e.value,o=r[a-1];e.dataset.maskRawValue=n(e.value,e.dataset.mask,this._opts.tokens,!1);let i=e.value;this._opts.preprocessor&&(i=this._opts.preprocessor(i)),e.value=n(i,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,o),this.dispatch("maska",e,t),e.value!==r&&this.dispatch("input",e,t)}beforeInput(e){e&&e.target&&e.target.type&&e.target.type.match(/^number$/i)&&e.data&&isNaN(e.target.value+e.data)&&e.preventDefault()}dispatch(e,t,n){t.dispatchEvent(function(e,t=null){const n=document.createEvent("Event");return n.initEvent(e,!0,!0),t&&(n.inputType=t),n}(e,n&&n.inputType||null))}}var p=(()=>{const e=new WeakMap;return(t,n)=>{n.value&&(e.has(t)&&!function(e){return!(i(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)||e.set(t,new u(t,function(e){const t={};return e.mask?(t.mask=Array.isArray(e.mask)?JSON.stringify(e.mask):e.mask,t.tokens=e.tokens?{...e.tokens}:{},t.preprocessor=e.preprocessor):t.mask=Array.isArray(e)?JSON.stringify(e):e,t}(n.value))))}})();function l(e){e.directive("maska",p)}"undefined"!=typeof window&&window.Vue&&window.Vue.use&&window.Vue.use(l),e.create=function(e,t){return new u(e,t)},e.default=l,e.install=l,e.mask=n,e.maska=p,e.tokens=t,Object.defineProperty(e,"__esModule",{value:!0})}));
|
||||
|
||||
Vendored
+1
-1
@@ -3,4 +3,4 @@
|
||||
* (c) 2019-2021 Alexander Shabunevich
|
||||
* Released under the MIT License.
|
||||
*/
|
||||
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Maska={})}(this,(function(t){"use strict";var e={"#":{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 n(t,n,r=e,i=!0){return a(n).length>1?function(t){const e=a(t).sort(((t,e)=>t.length-e.length));return function(t,a,r,i=!0){const o=e.map((e=>s(t,e,r,!1))).pop();for(let a in e)if(n(o,e[a],r))return s(t,e[a],r,i);return""};function n(t,e,n){for(let t in n)n[t].escape&&(e=e.replace(new RegExp(t+".{1}","g"),""));return e.split("").filter((t=>n[t]&&n[t].pattern)).length>=t.length}}(n)(t,n,r,i):s(t,n,r,i)}function a(t){try{return JSON.parse(t)}catch{return[t]}}function s(t,e,n,a=!0){let s=0,i=0,o="",u="";for(;s<e.length&&i<t.length;){let u=e[s];const l=t[i],p=n[u];if(p&&p.pattern)p.pattern.test(l)&&(o+=r(l,p),s++,a&&e[s]&&(n[e[s]]?n[e[s]]&&n[e[s]].escape&&(o+=e[s+1],s+=2):(o+=e[s],s++))),i++;else if(p&&p.repeat){const t=n[e[s-1]];t&&!t.pattern.test(l)?s++:s--}else p&&p.escape&&(s++,u=e[s]),a&&(o+=u),l===u&&i++,s++}for(;a&&s<e.length;){const t=e[s];if(n[t]){u="";break}u+=t,s++}return o+u}function r(t,e){return e.transform&&(t=e.transform(t)),e.uppercase?t.toLocaleUpperCase():e.lowercase?t.toLocaleLowerCase():t}function i(t){return t instanceof HTMLInputElement?t:t.querySelector("input")||t}function o(t){return"[object String]"===Object.prototype.toString.call(t)}class u{constructor(t,n={}){if(!t)throw new Error("Maska: no element for mask");if(n.tokens)for(const t in n.tokens)n.tokens[t]={...n.tokens[t]},n.tokens[t].pattern&&o(n.tokens[t].pattern)&&(n.tokens[t].pattern=new RegExp(n.tokens[t].pattern));this._opts={mask:n.mask,tokens:{...e,...n.tokens}},this._el=o(t)?document.querySelectorAll(t):t.length?t:[t],this.inputEvent=t=>this.updateValue(t.target,t),this.init()}init(){for(let t=0;t<this._el.length;t++){const e=i(this._el[t]);!this._opts.mask||e.dataset.mask&&e.dataset.mask===this._opts.mask||(e.dataset.mask=this._opts.mask),setTimeout((()=>this.updateValue(e)),0),e.dataset.maskInited||(e.dataset.maskInited=!0,e.addEventListener("input",this.inputEvent),e.addEventListener("beforeinput",this.beforeInput))}}destroy(){for(let t=0;t<this._el.length;t++){const e=i(this._el[t]);e.removeEventListener("input",this.inputEvent),e.removeEventListener("beforeinput",this.beforeInput),delete e.dataset.mask,delete e.dataset.maskInited}}updateValue(t,e){if(!t||!t.type)return;const a=t.type.match(/^number$/i)&&t.validity.badInput;if(!t.value&&!a||!t.dataset.mask)return t.dataset.maskRawValue="",void this.dispatch("maska",t,e);let s=t.selectionEnd;const r=t.value,i=r[s-1];t.dataset.maskRawValue=n(t.value,t.dataset.mask,this._opts.tokens,!1),t.value=n(t.value,t.dataset.mask,this._opts.tokens),e&&"insertText"===e.inputType&&s===r.length&&(s=t.value.length),function(t,e,n){for(;e&&e<t.value.length&&t.value.charAt(e-1)!==n;)e++;(t.type?t.type.match(/^(text|search|password|tel|url)$/i):!t.type)&&t===document.activeElement&&(t.setSelectionRange(e,e),setTimeout((function(){t.setSelectionRange(e,e)}),0))}(t,s,i),this.dispatch("maska",t,e),t.value!==r&&this.dispatch("input",t,e)}beforeInput(t){t&&t.target&&t.target.type&&t.target.type.match(/^number$/i)&&t.data&&isNaN(t.target.value+t.data)&&t.preventDefault()}dispatch(t,e,n){e.dispatchEvent(function(t,e=null){const n=document.createEvent("Event");return n.initEvent(t,!0,!0),e&&(n.inputType=e),n}(t,n&&n.inputType||null))}}var l=(()=>{const t=new WeakMap;return(e,n)=>{n.value&&(t.has(e)&&!function(t){return!(o(t.value)&&t.value===t.oldValue||Array.isArray(t.value)&&JSON.stringify(t.value)===JSON.stringify(t.oldValue)||t.value&&t.value.mask&&t.oldValue&&t.oldValue.mask&&t.value.mask===t.oldValue.mask)}(n)||t.set(e,new u(e,function(t){const e={};return t.mask?(e.mask=Array.isArray(t.mask)?JSON.stringify(t.mask):t.mask,e.tokens=t.tokens?{...t.tokens}:{}):e.mask=Array.isArray(t)?JSON.stringify(t):t,e}(n.value))))}})();function p(t){t.directive("maska",l)}"undefined"!=typeof window&&window.Vue&&window.Vue.use&&window.Vue.use(p),t.create=function(t,e){return new u(t,e)},t.default=p,t.install=p,t.mask=n,t.maska=l,t.tokens=e,Object.defineProperty(t,"__esModule",{value:!0})}));
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).Maska={})}(this,(function(e){"use strict";var t={"#":{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 n(e,n,r=t,o=!0){return s(n).length>1?function(e){const t=s(e).sort(((e,t)=>e.length-t.length));return function(e,s,r,o=!0){const i=t.map((t=>a(e,t,r,!1))).pop();for(let s in t)if(n(i,t[s],r))return a(e,t[s],r,o);return""};function n(e,t,n){for(let e in n)n[e].escape&&(t=t.replace(new RegExp(e+".{1}","g"),""));return t.split("").filter((e=>n[e]&&n[e].pattern)).length>=e.length}}(n)(e,n,r,o):a(e,n,r,o)}function s(e){try{return JSON.parse(e)}catch{return[e]}}function a(e,t,n,s=!0){let a=0,o=0,i="",u="";for(;a<t.length&&o<e.length;){let u=t[a];const p=e[o],l=n[u];if(l&&l.pattern)l.pattern.test(p)&&(i+=r(p,l),a++,s&&t[a]&&(n[t[a]]?n[t[a]]&&n[t[a]].escape&&(i+=t[a+1],a+=2):(i+=t[a],a++))),o++;else if(l&&l.repeat){const e=n[t[a-1]];e&&!e.pattern.test(p)?a++:a--}else l&&l.escape&&(a++,u=t[a]),s&&(i+=u),p===u&&o++,a++}for(;s&&a<t.length;){const e=t[a];if(n[e]){u="";break}u+=e,a++}return i+u}function r(e,t){return t.transform&&(e=t.transform(e)),t.uppercase?e.toLocaleUpperCase():t.lowercase?e.toLocaleLowerCase():e}function o(e){return e instanceof HTMLInputElement?e:e.querySelector("input")||e}function i(e){return"[object String]"===Object.prototype.toString.call(e)}class u{constructor(e,n={}){if(!e)throw new Error("Maska: no element for mask");if(null!=n.preprocessor&&"function"!=typeof n.preprocessor)throw new Error("Maska: preprocessor must be a function");if(n.tokens)for(const e in n.tokens)n.tokens[e]={...n.tokens[e]},n.tokens[e].pattern&&i(n.tokens[e].pattern)&&(n.tokens[e].pattern=new RegExp(n.tokens[e].pattern));this._opts={mask:n.mask,tokens:{...t,...n.tokens},preprocessor:n.preprocessor},this._el=i(e)?document.querySelectorAll(e):e.length?e:[e],this.inputEvent=e=>this.updateValue(e.target,e),this.init()}init(){for(let e=0;e<this._el.length;e++){const t=o(this._el[e]);!this._opts.mask||t.dataset.mask&&t.dataset.mask===this._opts.mask||(t.dataset.mask=this._opts.mask),setTimeout((()=>this.updateValue(t)),0),t.dataset.maskInited||(t.dataset.maskInited=!0,t.addEventListener("input",this.inputEvent),t.addEventListener("beforeinput",this.beforeInput))}}destroy(){for(let e=0;e<this._el.length;e++){const t=o(this._el[e]);t.removeEventListener("input",this.inputEvent),t.removeEventListener("beforeinput",this.beforeInput),delete t.dataset.mask,delete t.dataset.maskInited}}updateValue(e,t){if(!e||!e.type)return;const s=e.type.match(/^number$/i)&&e.validity.badInput;if(!e.value&&!s||!e.dataset.mask)return e.dataset.maskRawValue="",void this.dispatch("maska",e,t);let a=e.selectionEnd;const r=e.value,o=r[a-1];e.dataset.maskRawValue=n(e.value,e.dataset.mask,this._opts.tokens,!1);let i=e.value;this._opts.preprocessor&&(i=this._opts.preprocessor(i)),e.value=n(i,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,o),this.dispatch("maska",e,t),e.value!==r&&this.dispatch("input",e,t)}beforeInput(e){e&&e.target&&e.target.type&&e.target.type.match(/^number$/i)&&e.data&&isNaN(e.target.value+e.data)&&e.preventDefault()}dispatch(e,t,n){t.dispatchEvent(function(e,t=null){const n=document.createEvent("Event");return n.initEvent(e,!0,!0),t&&(n.inputType=t),n}(e,n&&n.inputType||null))}}var p=(()=>{const e=new WeakMap;return(t,n)=>{n.value&&(e.has(t)&&!function(e){return!(i(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)||e.set(t,new u(t,function(e){const t={};return e.mask?(t.mask=Array.isArray(e.mask)?JSON.stringify(e.mask):e.mask,t.tokens=e.tokens?{...e.tokens}:{},t.preprocessor=e.preprocessor):t.mask=Array.isArray(e)?JSON.stringify(e):e,t}(n.value))))}})();function l(e){e.directive("maska",p)}"undefined"!=typeof window&&window.Vue&&window.Vue.use&&window.Vue.use(l),e.create=function(e,t){return new u(e,t)},e.default=l,e.install=l,e.mask=n,e.maska=p,e.tokens=t,Object.defineProperty(e,"__esModule",{value:!0})}));
|
||||
|
||||
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
Vendored
+1
-1
File diff suppressed because one or more lines are too long
+2
-1
@@ -7,6 +7,7 @@ function getOpts (mask) {
|
||||
if (mask.mask) {
|
||||
opts.mask = Array.isArray(mask.mask) ? JSON.stringify(mask.mask) : mask.mask
|
||||
opts.tokens = mask.tokens ? { ...mask.tokens } : {}
|
||||
opts.preprocessor = mask.preprocessor;
|
||||
} else {
|
||||
opts.mask = Array.isArray(mask) ? JSON.stringify(mask) : mask
|
||||
}
|
||||
@@ -31,7 +32,7 @@ const directive = () => {
|
||||
if (state.has(el) && !needUpdate(mask)) {
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
state.set(el, new Maska(el, getOpts(mask.value)))
|
||||
}
|
||||
}
|
||||
|
||||
+14
-2
@@ -6,6 +6,10 @@ export default class Maska {
|
||||
constructor (el, opts = {}) {
|
||||
if (!el) throw new Error('Maska: no element for mask')
|
||||
|
||||
if (opts.preprocessor != null && typeof opts.preprocessor != 'function') {
|
||||
throw new Error('Maska: preprocessor must be a function')
|
||||
}
|
||||
|
||||
if (opts.tokens) {
|
||||
for (const i in opts.tokens) {
|
||||
opts.tokens[i] = { ...opts.tokens[i] }
|
||||
@@ -15,9 +19,11 @@ export default class Maska {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this._opts = {
|
||||
mask: opts.mask,
|
||||
tokens: { ...tokens, ...opts.tokens }
|
||||
tokens: { ...tokens, ...opts.tokens },
|
||||
preprocessor: opts.preprocessor
|
||||
}
|
||||
this._el = isString(el) ? document.querySelectorAll(el) : !el.length ? [el] : el
|
||||
this.inputEvent = (e) => this.updateValue(e.target, e)
|
||||
@@ -65,7 +71,13 @@ export default class Maska {
|
||||
const digit = oldValue[position - 1]
|
||||
|
||||
el.dataset.maskRawValue = mask(el.value, el.dataset.mask, this._opts.tokens, false)
|
||||
el.value = mask(el.value, el.dataset.mask, this._opts.tokens)
|
||||
let elValue = el.value;
|
||||
|
||||
if (this._opts.preprocessor) {
|
||||
elValue = this._opts.preprocessor(elValue);
|
||||
}
|
||||
|
||||
el.value = mask(elValue, el.dataset.mask, this._opts.tokens)
|
||||
|
||||
if (evt && evt.inputType === 'insertText' && position === oldValue.length) {
|
||||
position = el.value.length
|
||||
|
||||
Vendored
+1
@@ -3,6 +3,7 @@ export default class Maska {
|
||||
_opts: {
|
||||
mask: any;
|
||||
tokens: any;
|
||||
preprocessor?: (value: string) => string;
|
||||
};
|
||||
_el: any;
|
||||
init(): void;
|
||||
|
||||
Reference in New Issue
Block a user