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.46 kB
JavaScript
(()=>{"use strict";var e={d:(t,n)=>{for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:n[r]})},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:()=>s,maskfySettings:()=>r});const n={Mask:"999.999.999.999",Reverse:!1,Keybind:{A:/[A-Za-z]/,9:/\d/,"?":/./},Prefix:"",Suffix:""},r=(e={})=>({mask:n.Mask,reverse:n.Reverse,prefix:n.Prefix,suffix:n.Suffix,...e,keybind:{...n.Keybind,...e.keybind}}),s=(e,t={})=>{const n=r(t),{mask:i,reverse:l,prefix:g,suffix:o,keybind:f}=n,a=String(e),h=g&&a.startsWith(g)?a.replace(new RegExp(`^${g}`),""):a,u=o&&new RegExp(`(${o})(.?)$`).test(o)?h.replace(new RegExp(`(${o})(.?)$`),"$2"):h,p=u.replace(/\s/g,"").split(""),y=i.split(""),b=[...y],d=[...p],c=[];l&&(b.reverse(),d.reverse());let k=0,x=0;if(b.forEach(((e,t)=>{const n=b[t-k],r=d[t+x],s=f[n];r&&(s?.test(n)?s?.test(r)?c.push(r):k++:(c.push(n),r!==n&&x--))})),k&&p.length>=c.length+k&&y.length===p.length&&!g&&!o){const e=u.substring(u.length-k,u.length),t=i.substring(i.length-k,i.length),n=s(e,{mask:t});c.push(n)}if(l&&c.reverse(),g&&c.length&&c.unshift(g),o&&c.length&&c.push(o),d.length+k>b.length&&l){const e=y.length-p.length;return p.join("").substring(0,p.length-e)}return c.join("")};module.exports.Maskfy=t})();