primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 90+ 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) • 8.18 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("primereact/api"),n=require("primereact/hooks"),t=require("primereact/inputtext"),u=require("primereact/utils"),c=require("primereact/componentbase");function a(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 l=a(e);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var r=1;r<arguments.length;r++){var n=arguments[r];for(var t in n)({}).hasOwnProperty.call(n,t)&&(e[t]=n[t])}return e},i.apply(null,arguments)}var o=c.ComponentBase.extend({defaultProps:{__TYPE:"InputMask",autoClear:!0,autoFocus:!1,className:null,disabled:!1,id:null,mask:null,maxLength:null,invalid:!1,variant:null,name:null,onBlur:null,onChange:null,onComplete:null,onFocus:null,placeholder:null,readOnly:!1,required:!1,size:null,slotChar:"_",style:null,tabIndex:null,tooltip:null,tooltipOptions:null,type:"text",unmask:!1,value:null,children:void 0},css:{classes:{root:function(e){var r=e.props,n=e.context;return u.classNames("p-inputmask",{"p-filled":r.filled,"p-invalid":r.invalid,"p-variant-filled":r.variant?"filled"===r.variant:n&&"filled"===n.inputStyle})}}}}),s=l.memo(l.forwardRef((function(e,c){var a=l.useContext(r.PrimeReactContext),s=o.getProps(e,a),f=l.useRef(null),v=l.useRef(null),d=l.useRef(0),p=l.useRef([]),m=l.useRef([]),g=l.useRef(0),h=l.useRef(null),b=l.useRef(!1),y=l.useRef(null),C=l.useRef(null),k=l.useRef(null),R=l.useRef(null),O=l.useRef(null),E=l.useRef(!1),x={props:s},D=o.setMetaData(x).cx,j=function(e,r){var n,t,u,c=f.current;return c&&c.offsetParent&&c===document.activeElement?("number"==typeof e?(t=e,u="number"==typeof r?r:t,c.setSelectionRange?c.setSelectionRange(t,u):c.createTextRange&&((n=c.createTextRange()).collapse(!0),n.moveEnd("character",u),n.moveStart("character",t),n.select())):c.setSelectionRange?(t=c.selectionStart,u=c.selectionEnd):document.selection&&document.selection.createRange&&(u=(t=0-(n=document.selection.createRange()).duplicate().moveStart("character",-1e5))+n.text.length),{begin:t,end:u}):null},P=function(){for(var e=v.current;e<=d.current;e++)if(p.current[e]&&m.current[e]===I(e))return!1;return!0},I=l.useCallback((function(e){return s.slotChar.charAt(e<s.slotChar.length?e:0)}),[s.slotChar]),M=function(){return s.unmask?B():f.current&&f.current.value},q=function(e){for(;++e<g.current&&!p.current[e];);return e},H=function(e){for(;--e>=0&&!p.current[e];);return e},S=function(e,r){var n,t;if(!(e<0)){for(n=e,t=q(r);n<g.current;n++)if(p.current[n]){if(!(t<g.current&&p.current[n].test(m.current[t])))break;m.current[n]=m.current[t],m.current[t]=I(t),t=q(t)}F(),j(Math.max(v.current,e))}},T=function(e){var r,n,t,u;for(r=e,n=I(e);r<g.current;r++)if(p.current[r]){if(t=q(r),u=m.current[r],m.current[r]=n,!(t<g.current&&p.current[t].test(u)))break;n=u}},_=function(e){var r=f.current.value,n=j();if(n){if(h.current.length&&h.current.length>r.length){for(z(!0);n.begin>0&&!p.current[n.begin-1];)n.begin--;if(0===n.begin)for(;n.begin<v.current&&!p.current[n.begin];)n.begin++;j(n.begin,n.begin)}else{for(z(!0);n.begin<g.current&&!p.current[n.begin];)n.begin++;j(n.begin,n.begin)}s.onComplete&&P()&&s.onComplete({originalEvent:e,value:M()}),K(e)}},w=function(e){if(b.current=!1,z(),K(e),U(),s.onBlur&&s.onBlur(e),f.current.value!==y.current){var r=document.createEvent("HTMLEvents");r.initEvent("change",!0,!1),f.current.dispatchEvent(r)}},A=function(e,r){var n;for(n=e;n<r&&n<g.current;n++)p.current[n]&&(m.current[n]=I(n))},F=function(){f.current&&(f.current.value=m.current.join(""))},z=function(e){C.current=!0;var r,n,t,u=f.current&&f.current.value,c=-1;for(r=0,t=0;r<g.current;r++)if(p.current[r]){for(m.current[r]=I(r);t++<u.length;)if(n=u.charAt(t-1),p.current[r].test(n)){m.current[r]=n,c=r;break}if(t>u.length){A(r+1,g.current);break}}else m.current[r]===u.charAt(t)&&t++,r<k.current&&(c=r);return e?F():c+1<k.current?s.autoClear||m.current.join("")===R.current?(f.current&&f.current.value&&(f.current.value=""),A(0,g.current)):F():(F(),f.current&&(f.current.value=f.current.value.substring(0,c+1))),k.current?r:v.current},N=function(e){if(!s.readOnly){if(!(arguments.length>1&&void 0!==arguments[1]&&arguments[1])){var r=z(!0);j(r)}K(e),s.onComplete&&P()&&s.onComplete({originalEvent:e,value:M()})}},B=l.useCallback((function(){for(var e=[],r=0;r<m.current.length;r++){var n=m.current[r];p.current[r]&&n!==I(r)&&e.push(n)}return e.join("")}),[I]),K=function(e){if(s.onChange){var r=s.unmask?B():e&&e.target.value;s.onChange({originalEvent:e,value:R.current!==r?r:"",stopPropagation:function(){e.stopPropagation()},preventDefault:function(){e.preventDefault()},target:{name:s.name,id:s.id,value:R.current!==r?r:""}})}},U=function(){f.current&&f.current.value&&f.current.value.length>0?u.DomHandler.addClass(f.current,"p-filled"):u.DomHandler.removeClass(f.current,"p-filled")},L=function(e){var r;return f.current&&(u.ObjectUtils.isEmpty(s.value)?f.current.value="":(f.current.value=s.value,r=z(e),setTimeout((function(){if(f.current)return F(),z(e)}),10)),y.current=f.current.value),U(),r},Z=l.useCallback((function(){return s.unmask?s.value!==B():R.current!==f.current.value&&f.current.value!==s.value}),[s.unmask,s.value,B]),Y=function(){if(s.mask){p.current=[],k.current=s.mask.length,g.current=s.mask.length,v.current=null;var e={9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"};E.current=u.DomHandler.isChrome()&&u.DomHandler.isAndroid();for(var r=s.mask.split(""),n=0;n<r.length;n++){var t=r[n];"?"===t?(g.current--,k.current=n):e[t]?(p.current.push(new RegExp(e[t])),null===v.current&&(v.current=p.current.length-1),n<k.current&&(d.current=p.current.length-1)):p.current.push(null)}m.current=[];for(var c=0;c<r.length;c++){var a=r[c];"?"!==a&&m.current.push(e[a]?I(c):a)}R.current=m.current.join("")}};l.useImperativeHandle(c,(function(){return{props:s,focus:function(){return u.DomHandler.focus(f.current)},getElement:function(){return f.current}}})),l.useEffect((function(){u.ObjectUtils.combinedRefs(f,c)}),[f,c]),n.useMountEffect((function(){Y(),L()})),n.useUpdateEffect((function(){Y(),j(L(!0)),s.unmask&&K()}),[s.mask]),n.useUpdateEffect((function(){Z()&&L()}),[Z]),n.useUpdateEffect((function(){U()}),[s.disabled]);var G=o.getOtherProps(s),J=u.classNames(s.className,D("root",{context:a}));return l.createElement(t.InputText,i({ref:f,autoFocus:s.autoFocus,id:s.id,type:s.type,name:s.name,style:s.style,className:J},G,{placeholder:s.placeholder,size:s.size,maxLength:s.maxLength,tabIndex:s.tabIndex,disabled:s.disabled,invalid:s.invalid,readOnly:s.readOnly,onFocus:function(e){var r;s.readOnly||(b.current=!0,clearTimeout(O.current),y.current=f.current?f.current.value:"",r=z()||0,O.current=setTimeout((function(){f.current===document.activeElement&&(F(),r===s.mask.replace("?","").length?j(0,r):j(r),U())}),100),s.onFocus&&s.onFocus(e))},onBlur:w,onKeyDown:function(e){if(!s.readOnly){var r,n,t,c=e.which||e.keyCode;if(h.current=f.current.value,8===c||46===c||u.DomHandler.isIOS()&&127===c){if(!(r=j()))return;(t=r.end)-(n=r.begin)==0&&(n=46!==c?H(n):t=q(n-1),t=46===c?q(t):t),A(n,t),S(n,t-1),K(e),e.preventDefault()}else 13===c?(w(e),K(e)):27===c&&(f.current.value=y.current,j(0,z()),K(e),e.preventDefault())}},onKeyPress:function(e){if(!s.readOnly){var r=j();if(r){var n,t,c,a,l=e.which||e.keyCode;if(!(e.ctrlKey||e.altKey||e.metaKey||l<32)){if(l&&13!==l){if(r.end-r.begin!=0&&(A(r.begin,r.end),S(r.begin,r.end-1)),(n=q(r.begin-1))<g.current&&(t=String.fromCharCode(l),p.current[n].test(t))){if(T(n),m.current[n]=t,F(),c=q(n),u.DomHandler.isAndroid()){setTimeout((function(){j(c)}),0)}else j(c);r.begin<=d.current&&(a=P())}e.preventDefault()}K(e),s.onComplete&&a&&s.onComplete({originalEvent:e,value:M()})}}}},onInput:function(e){E.current?_(e):N(e)},onPaste:function(e){return N(e,!0)},required:s.required,tooltip:s.tooltip,tooltipOptions:s.tooltipOptions,pt:s.pt,unstyled:s.unstyled,__parentMetadata:{parent:x}}))})));s.displayName="InputMask",exports.InputMask=s;