primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime
2 lines (1 loc) • 7.41 kB
JavaScript
this.primereact=this.primereact||{},this.primereact.inputmask=function(e,r,n,t,u){"use strict";function c(e){if(e&&e.__esModule)return e;var r=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var t=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(r,n,t.get?t:{enumerable:!0,get:function(){return e[n]}})}})),r.default=e,Object.freeze(r)}var a=c(r);function l(){return l=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)Object.prototype.hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e},l.apply(this,arguments)}var i=a.memo(a.forwardRef((function(e,r){var c=a.useRef(r),o=a.useRef(null),s=a.useRef(0),f=a.useRef([]),v=a.useRef([]),d=a.useRef(0),m=a.useRef(null),p=a.useRef(!1),g=a.useRef(null),h=a.useRef(null),b=a.useRef(null),y=a.useRef(null),k=a.useRef(null),C=a.useRef(!1),R=function(e,r){var n,t,u,a=c.current;if(a&&a.offsetParent&&a===document.activeElement)return"number"!=typeof e?(a.setSelectionRange?(t=a.selectionStart,u=a.selectionEnd):document.selection&&document.selection.createRange&&(u=(t=0-(n=document.selection.createRange()).duplicate().moveStart("character",-1e5))+n.text.length),{begin:t,end:u}):(t=e,u="number"==typeof r?r:t,void(a.setSelectionRange?a.setSelectionRange(t,u):a.createTextRange&&((n=a.createTextRange()).collapse(!0),n.moveEnd("character",u),n.moveStart("character",t),n.select())))},O=function(){for(var e=o.current;e<=s.current;e++)if(f.current[e]&&v.current[e]===E(e))return!1;return!0},E=a.useCallback((function(r){return e.slotChar.charAt(r<e.slotChar.length?r:0)}),[e.slotChar]),j=function(){return e.unmask?U():c.current&&c.current.value},x=function(e){for(;++e<d.current&&!f.current[e];);return e},D=function(e){for(;--e>=0&&!f.current[e];);return e},P=function(e,r){var n,t;if(!(e<0)){for(n=e,t=x(r);n<d.current;n++)if(f.current[n]){if(!(t<d.current&&f.current[n].test(v.current[t])))break;v.current[n]=v.current[t],v.current[t]=E(t),t=x(t)}w(),R(Math.max(o.current,e))}},I=function(e){var r,n,t,u;for(r=e,n=E(e);r<d.current;r++)if(f.current[r]){if(t=x(r),u=v.current[r],v.current[r]=n,!(t<d.current&&f.current[t].test(u)))break;n=u}},T=function(r){var n=c.current.value,t=R();if(m.current.length&&m.current.length>n.length){for(H(!0);t.begin>0&&!f.current[t.begin-1];)t.begin--;if(0===t.begin)for(;t.begin<o.current&&!f.current[t.begin];)t.begin++;R(t.begin,t.begin)}else{for(H(!0);t.begin<d.current&&!f.current[t.begin];)t.begin++;R(t.begin,t.begin)}e.onComplete&&O()&&e.onComplete({originalEvent:r,value:j()}),_(r)},A=function(r){if(p.current=!1,H(),_(r),z(),e.onBlur&&e.onBlur(r),c.current.value!==g.current){var n=document.createEvent("HTMLEvents");n.initEvent("change",!0,!1),c.current.dispatchEvent(n)}},M=function(e,r){var n;for(n=e;n<r&&n<d.current;n++)f.current[n]&&(v.current[n]=E(n))},w=function(){c.current.value=v.current.join("")},H=function(r){h.current=!0;var n,t,u,a=c.current.value,l=-1;for(n=0,u=0;n<d.current;n++)if(f.current[n]){for(v.current[n]=E(n);u++<a.length;)if(t=a.charAt(u-1),f.current[n].test(t)){v.current[n]=t,l=n;break}if(u>a.length){M(n+1,d.current);break}}else v.current[n]===a.charAt(u)&&u++,n<b.current&&(l=n);return r?w():l+1<b.current?e.autoClear||v.current.join("")===y.current?(c.current.value&&(c.current.value=""),M(0,d.current)):w():(w(),c.current.value=c.current.value.substring(0,l+1)),b.current?n:o.current},S=function(r){if(!e.readOnly){var n=H(!0);R(n),_(r),e.onComplete&&O()&&e.onComplete({originalEvent:r,value:j()})}},U=a.useCallback((function(){for(var e=[],r=0;r<v.current.length;r++){var n=v.current[r];f.current[r]&&n!==E(r)&&e.push(n)}return e.join("")}),[E]),_=function(r){if(e.onChange){var n=e.unmask?U():r&&r.target.value;e.onChange({originalEvent:r,value:y.current!==n?n:"",stopPropagation:function(){},preventDefault:function(){},target:{name:e.name,id:e.id,value:y.current!==n?n:""}})}},z=function(){c.current&&c.current.value&&c.current.value.length>0?u.DomHandler.addClass(c.current,"p-filled"):u.DomHandler.removeClass(c.current,"p-filled")},K=function(r){var n;return c.current&&(null==e.value?c.current.value="":(c.current.value=e.value,n=H(r),setTimeout((function(){if(c.current)return w(),H(r)}),10)),g.current=c.current.value),z(),n},N=a.useCallback((function(){return e.unmask?e.value!==U():y.current!==c.current.value&&c.current.value!==e.value}),[e.unmask,e.value,U]),B=function(){if(e.mask){f.current=[],b.current=e.mask.length,d.current=e.mask.length,o.current=null;var r={9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"},n=u.DomHandler.getUserAgent();C.current=/chrome/i.test(n)&&/android/i.test(n);for(var t=e.mask.split(""),c=0;c<t.length;c++){var a=t[c];"?"===a?(d.current--,b.current=c):r[a]?(f.current.push(new RegExp(r[a])),null===o.current&&(o.current=f.current.length-1),c<b.current&&(s.current=f.current.length-1)):f.current.push(null)}v.current=[];for(var l=0;l<t.length;l++){var i=t[l];"?"!==i&&v.current.push(r[i]?E(l):i)}y.current=v.current.join("")}};a.useImperativeHandle(r,(function(){return{props:e,getElement:function(){return c.current}}})),a.useEffect((function(){u.ObjectUtils.combinedRefs(c,r)}),[c,r]),n.useMountEffect((function(){B(),K()})),n.useUpdateEffect((function(){B(),R(K(!0)),e.unmask&&_()}),[e.mask]),n.useUpdateEffect((function(){N()&&K()}),[N]);var F=u.ObjectUtils.findDiffKeys(e,i.defaultProps),L=u.classNames("p-inputmask",e.className);return a.createElement(t.InputText,l({ref:c,id:e.id,type:e.type,name:e.name,style:e.style,className:L},F,{placeholder:e.placeholder,size:e.size,maxLength:e.maxLength,tabIndex:e.tabIndex,disabled:e.disabled,readOnly:e.readOnly,onFocus:function(r){var n;e.readOnly||(p.current=!0,clearTimeout(k.current),g.current=c.current.value,n=H(),k.current=setTimeout((function(){c.current===document.activeElement&&(w(),n===e.mask.replace("?","").length?R(0,n):R(n),z())}),10),e.onFocus&&e.onFocus(r))},onBlur:A,onKeyDown:function(r){if(!e.readOnly){var n,t,a,l=r.which||r.keyCode,i=/iphone/i.test(u.DomHandler.getUserAgent());m.current=c.current.value,8===l||46===l||i&&127===l?((a=(n=R()).end)-(t=n.begin)==0&&(t=46!==l?D(t):a=x(t-1),a=46===l?x(a):a),M(t,a),P(t,a-1),_(r),r.preventDefault()):13===l?(A(r),_(r)):27===l&&(c.current.value=g.current,R(0,H()),_(r),r.preventDefault())}},onKeyPress:function(r){if(!e.readOnly){var n,t,c,a,l=r.which||r.keyCode,i=R();if(!(r.ctrlKey||r.altKey||r.metaKey||l<32)){if(l&&13!==l){if(i.end-i.begin!=0&&(M(i.begin,i.end),P(i.begin,i.end-1)),(n=x(i.begin-1))<d.current&&(t=String.fromCharCode(l),f.current[n].test(t))){if(I(n),v.current[n]=t,w(),c=x(n),/android/i.test(u.DomHandler.getUserAgent())){setTimeout((function(){R(c)}),0)}else R(c);i.begin<=s.current&&(a=O())}r.preventDefault()}_(r),e.onComplete&&a&&e.onComplete({originalEvent:r,value:j()})}}},onInput:function(e){C.current?T(e):S(e)},onPaste:S,required:e.required,tooltip:e.tooltip,tooltipOptions:e.tooltipOptions}))})));return i.displayName="InputMask",i.defaultProps={__TYPE:"InputMask",id:null,value:null,type:"text",mask:null,slotChar:"_",autoClear:!0,unmask:!1,style:null,className:null,placeholder:null,size:null,maxLength:null,tabIndex:null,disabled:!1,readOnly:!1,name:null,required:!1,tooltip:null,tooltipOptions:null,onComplete:null,onChange:null,onFocus:null,onBlur:null},e.InputMask=i,Object.defineProperty(e,"__esModule",{value:!0}),e}({},React,primereact.hooks,primereact.inputtext,primereact.utils);