UNPKG

maskfy

Version:

A Javascript library without a dependency of jQuery, Zepto, and etc ... Very simple to install and use. With only 1kb (gzip) code, it's also well accepted on mobile devices

1 lines 1.65 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Maskfy",[],t):"object"==typeof exports?exports.Maskfy=t():e.Maskfy=t()}(this,(()=>(()=>{"use strict";var e={d:(t,n)=>{for(var s in n)e.o(n,s)&&!e.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:n[s]})},o:(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r:e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}},t={};e.r(t),e.d(t,{MaskfyDefault:()=>n,maskfy:()=>r,maskfySettings:()=>s});const n={Mask:"999.999.999.999",Reverse:!1,Keybind:{A:/[A-Za-z]/,9:/\d/,"?":/./},Prefix:"",Suffix:""},s=(e={})=>({mask:n.Mask,reverse:n.Reverse,prefix:n.Prefix,suffix:n.Suffix,...e,keybind:{...n.Keybind,...e.keybind}}),r=(e,t={})=>{const n=s(t),{mask:o,reverse:i,prefix:f,suffix:l,keybind:g}=n,p=String(e),a=f&&p.startsWith(f)?p.replace(new RegExp(`^${f}`),""):p,u=l&&new RegExp(`(${l})(.?)$`).test(l)?a.replace(new RegExp(`(${l})(.?)$`),"$2"):a,h=u.replace(/\s/g,"").split(""),y=o.split(""),d=[...y],c=[...h],b=[];i&&(d.reverse(),c.reverse());let x=0,k=0;if(d.forEach(((e,t)=>{const n=d[t-x],s=c[t+k],r=g[n];s&&(r?.test(n)?r?.test(s)?b.push(s):x++:(b.push(n),s!==n&&k--))})),x&&h.length>=b.length+x&&y.length===h.length&&!f&&!l){const e=u.substring(u.length-x,u.length),t=o.substring(o.length-x,o.length),n=r(e,{mask:t});b.push(n)}if(i&&b.reverse(),f&&b.length&&b.unshift(f),l&&b.length&&b.push(l),c.length+x>d.length&&i){const e=y.length-h.length;return h.join("").substring(0,h.length-e)}return b.join("")};return t})()));