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) • 7.53 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),r=require("primereact/hooks"),n=require("primereact/inputtext"),t=require("primereact/utils");function u(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 c=u(e);function a(){return a=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},a.apply(this,arguments)}var l={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,children:void 0},getProps:function(e){return t.ObjectUtils.getMergedProps(e,l.defaultProps)},getOtherProps:function(e){return t.ObjectUtils.getDiffProps(e,l.defaultProps)}},o=c.memo(c.forwardRef((function(e,u){var o=l.getProps(e),i=c.useRef(u),s=c.useRef(null),f=c.useRef(0),v=c.useRef([]),d=c.useRef([]),p=c.useRef(0),g=c.useRef(null),m=c.useRef(!1),h=c.useRef(null),b=c.useRef(null),y=c.useRef(null),k=c.useRef(null),O=c.useRef(null),C=c.useRef(!1),R=function(e,r){var n,t,u,c=i.current;if(c&&c.offsetParent&&c===document.activeElement)return"number"!=typeof e?(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}):(t=e,u="number"==typeof r?r:t,void(c.setSelectionRange?c.setSelectionRange(t,u):c.createTextRange&&((n=c.createTextRange()).collapse(!0),n.moveEnd("character",u),n.moveStart("character",t),n.select())))},E=function(){for(var e=s.current;e<=f.current;e++)if(v.current[e]&&d.current[e]===P(e))return!1;return!0},P=c.useCallback((function(e){return o.slotChar.charAt(e<o.slotChar.length?e:0)}),[o.slotChar]),j=function(){return o.unmask?_():i.current&&i.current.value},x=function(e){for(;++e<p.current&&!v.current[e];);return e},D=function(e){for(;--e>=0&&!v.current[e];);return e},I=function(e,r){var n,t;if(!(e<0)){for(n=e,t=x(r);n<p.current;n++)if(v.current[n]){if(!(t<p.current&&v.current[n].test(d.current[t])))break;d.current[n]=d.current[t],d.current[t]=P(t),t=x(t)}q(),R(Math.max(s.current,e))}},H=function(e){var r,n,t,u;for(r=e,n=P(e);r<p.current;r++)if(v.current[r]){if(t=x(r),u=d.current[r],d.current[r]=n,!(t<p.current&&v.current[t].test(u)))break;n=u}},M=function(e){var r=i.current.value,n=R();if(g.current.length&&g.current.length>r.length){for(w(!0);n.begin>0&&!v.current[n.begin-1];)n.begin--;if(0===n.begin)for(;n.begin<s.current&&!v.current[n.begin];)n.begin++;R(n.begin,n.begin)}else{for(w(!0);n.begin<p.current&&!v.current[n.begin];)n.begin++;R(n.begin,n.begin)}o.onComplete&&E()&&o.onComplete({originalEvent:e,value:j()}),z(e)},T=function(e){if(m.current=!1,w(),z(e),K(),o.onBlur&&o.onBlur(e),i.current.value!==h.current){var r=document.createEvent("HTMLEvents");r.initEvent("change",!0,!1),i.current.dispatchEvent(r)}},S=function(e,r){var n;for(n=e;n<r&&n<p.current;n++)v.current[n]&&(d.current[n]=P(n))},q=function(){i.current.value=d.current.join("")},w=function(e){b.current=!0;var r,n,t,u=i.current.value,c=-1;for(r=0,t=0;r<p.current;r++)if(v.current[r]){for(d.current[r]=P(r);t++<u.length;)if(n=u.charAt(t-1),v.current[r].test(n)){d.current[r]=n,c=r;break}if(t>u.length){S(r+1,p.current);break}}else d.current[r]===u.charAt(t)&&t++,r<y.current&&(c=r);return e?q():c+1<y.current?o.autoClear||d.current.join("")===k.current?(i.current.value&&(i.current.value=""),S(0,p.current)):q():(q(),i.current.value=i.current.value.substring(0,c+1)),y.current?r:s.current},A=function(e){if(!o.readOnly){var r=w(!0);R(r),z(e),o.onComplete&&E()&&o.onComplete({originalEvent:e,value:j()})}},_=c.useCallback((function(){for(var e=[],r=0;r<d.current.length;r++){var n=d.current[r];v.current[r]&&n!==P(r)&&e.push(n)}return e.join("")}),[P]),z=function(e){if(o.onChange){var r=o.unmask?_():e&&e.target.value;o.onChange({originalEvent:e,value:k.current!==r?r:"",stopPropagation:function(){},preventDefault:function(){},target:{name:o.name,id:o.id,value:k.current!==r?r:""}})}},K=function(){i.current&&i.current.value&&i.current.value.length>0?t.DomHandler.addClass(i.current,"p-filled"):t.DomHandler.removeClass(i.current,"p-filled")},N=function(e){var r;return i.current&&(null==o.value?i.current.value="":(i.current.value=o.value,r=w(e),setTimeout((function(){if(i.current)return q(),w(e)}),10)),h.current=i.current.value),K(),r},U=c.useCallback((function(){return o.unmask?o.value!==_():k.current!==i.current.value&&i.current.value!==o.value}),[o.unmask,o.value,_]),B=function(){if(o.mask){v.current=[],y.current=o.mask.length,p.current=o.mask.length,s.current=null;var e={9:"[0-9]",a:"[A-Za-z]","*":"[A-Za-z0-9]"};C.current=t.DomHandler.isChrome()&&t.DomHandler.isAndroid();for(var r=o.mask.split(""),n=0;n<r.length;n++){var u=r[n];"?"===u?(p.current--,y.current=n):e[u]?(v.current.push(new RegExp(e[u])),null===s.current&&(s.current=v.current.length-1),n<y.current&&(f.current=v.current.length-1)):v.current.push(null)}d.current=[];for(var c=0;c<r.length;c++){var a=r[c];"?"!==a&&d.current.push(e[a]?P(c):a)}k.current=d.current.join("")}};c.useImperativeHandle(u,(function(){return{props:o,focus:function(){return t.DomHandler.focus(i.current)},getElement:function(){return i.current}}})),c.useEffect((function(){t.ObjectUtils.combinedRefs(i,u)}),[i,u]),r.useMountEffect((function(){B(),N()})),r.useUpdateEffect((function(){B(),R(N(!0)),o.unmask&&z()}),[o.mask]),r.useUpdateEffect((function(){U()&&N()}),[U]);var F=l.getOtherProps(o),L=t.classNames("p-inputmask",o.className);return c.createElement(n.InputText,a({ref:i,id:o.id,type:o.type,name:o.name,style:o.style,className:L},F,{placeholder:o.placeholder,size:o.size,maxLength:o.maxLength,tabIndex:o.tabIndex,disabled:o.disabled,readOnly:o.readOnly,onFocus:function(e){var r;o.readOnly||(m.current=!0,clearTimeout(O.current),h.current=i.current.value,r=w(),O.current=setTimeout((function(){i.current===document.activeElement&&(q(),r===o.mask.replace("?","").length?R(0,r):R(r),K())}),10),o.onFocus&&o.onFocus(e))},onBlur:T,onKeyDown:function(e){if(!o.readOnly){var r,n,u,c=e.which||e.keyCode;g.current=i.current.value,8===c||46===c||t.DomHandler.isIOS()&&127===c?((u=(r=R()).end)-(n=r.begin)==0&&(n=46!==c?D(n):u=x(n-1),u=46===c?x(u):u),S(n,u),I(n,u-1),z(e),e.preventDefault()):13===c?(T(e),z(e)):27===c&&(i.current.value=h.current,R(0,w()),z(e),e.preventDefault())}},onKeyPress:function(e){if(!o.readOnly){var r,n,u,c,a=e.which||e.keyCode,l=R();if(!(e.ctrlKey||e.altKey||e.metaKey||a<32)){if(a&&13!==a){if(l.end-l.begin!=0&&(S(l.begin,l.end),I(l.begin,l.end-1)),(r=x(l.begin-1))<p.current&&(n=String.fromCharCode(a),v.current[r].test(n))){if(H(r),d.current[r]=n,q(),u=x(r),t.DomHandler.isAndroid()){setTimeout((function(){R(u)}),0)}else R(u);l.begin<=f.current&&(c=E())}e.preventDefault()}z(e),o.onComplete&&c&&o.onComplete({originalEvent:e,value:j()})}}},onInput:function(e){C.current?M(e):A(e)},onPaste:A,required:o.required,tooltip:o.tooltip,tooltipOptions:o.tooltipOptions}))})));o.displayName="InputMask",exports.InputMask=o;