@react-input/number-format
Version:
React input component for formatted number input with locale-specific.
2 lines (1 loc) • 5.97 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("./helpers-Dt25zMDL.cjs"),i=require("@react-input/core");var a,t=["locales"],c=["locales"];function n(i,a){var t={minusSign:"-",decimal:".",digits:"\\d",signBackwards:!1},c=e.exec(i,a),n=e.exec(i.replace(",","."),t),l=c||n,r=c?a:t;return i=e.filter(l,r),i=e.normalize(i,a)}var l=function(a){function l(){var a,r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e._classCallCheck(this,l),(a=e._callSuper(this,l,[{init:function(i){var a=i.initialValue,c=i.controlled,l=r.locales,o=e._objectWithoutProperties(r,t);if(!c&&a.length>0){var s=e.localizeValues(l),d=e.resolveOptions(l,o),u=n(a,s);(u=u.replace(/(.+)(-)$/,"$2$1")).length>0&&(a=e.format$1(u,{locales:l,options:o,localizedValues:s,resolvedOptions:d}))}return{value:a,options:{locales:l,options:o}}},tracking:function(a){var t=a.inputType,l=a.previousValue,o=a.previousOptions,s=a.addedValue,d=a.changeStart,u=a.changeEnd,g=r.locales,v=e._objectWithoutProperties(r,c),p=e.localizeValues(o.locales),m=e.localizeValues(g),f=e.resolveOptions(g,v),h=RegExp("^[".concat(m.minusSign,"]$")),x=RegExp("^[,".concat(m.decimal,"]$"));if(s=h.test(s)?s.replace(h,"-"):x.test(s)?s.replace(x,"."):n(s,m),"insert"===t&&!s)throw new i.SyntheticChangeError("The added value does not contain allowed characters.");var E=l.slice(0,d);E=e.exec(E,p),E=e.filter(E,p),E=e.normalize(E,p);var S=l.slice(u);S=e.exec(S,p),S=e.filter(S,p);var $=E+s+(S=e.normalize(S,p));if($=$.replace(/[.](?=.*[.])/g,""),m.signBackwards)$=$.replace(/[-](?=.*[-.\d])/g,"");else{var R=$.search(/[-.\d]/);$=$.replace(/[-]/g,(function(e,i){return-1!==R&&i>R?"":e}))}$=$.replace(/(.+)(-)$/,"$2$1");var V="-"===s&&d===u,O=l.includes(p.minusSign),w=$.includes("-");if(V&&O&&w&&($=$.replace("-","")),!V||O||w||($="-".concat($)),/\..*0$/.test($)){var b="([".concat(p.digits,"])([").concat(p.decimal,"])([").concat(p.digits,"]+)"),z=RegExp(b).exec(l);if(null!==z){var y,_=z[3],k=Number(z[5])+z[1].length+z[2].length,F=null!==(y=e.resolveOptions(o.locales,o.options).minimumFractionDigits)&&void 0!==y?y:0;d>=k&&u<k+(F||1)&&_.length<=(F||1)&&($=$.replace(/0+$/g,""))}}var T="deleteBackward"===t||"deleteForward"===t;if(T&&l.includes(p.decimal)&&!$.includes(".")){var B,D="[".concat(p.digits[0],"]*[^").concat(p.decimal).concat(p.digits,"]*$"),j="[^".concat(p.digits[0],"]"),C=null===(B=RegExp(D).exec(l))||void 0===B?void 0:B[0].replace(RegExp(j,"g"),"").length;void 0!==C&&void 0!==f.minimumFractionDigits&&(C>f.minimumFractionDigits&&(C=f.minimumFractionDigits),$=$.replace(RegExp("0{0,".concat(C,"}$")),""))}var I="",P=""===$||"-"===$||/^-?(\.0*)?$/.test($);T&&P||(I=e.format$1($,{locales:g,options:v,localizedValues:m,resolvedOptions:f}));var A=function(i){var a=i.localizedValues,t=i.previousLocalizedValues,c=i.resolvedOptions,n=i.inputType,l=i.value,r=i.previousValue,o=i.addedValue,s=i.changeStart,d=i.changeEnd;if(r.includes(a.decimal)&&"."===o){var u=l.indexOf(a.decimal);if(-1!==u){var g=u+1;return{start:g,end:g}}}if(r.includes(a.minusSign)&&"-"===o){var v=l.indexOf(a.minusSign);if(-1!==v){var p=v+(a.signBackwards?0:1);return{start:p,end:p}}}if("deleteBackward"===n||"deleteForward"===n){var m=r.split(t.decimal),f=e._slicedToArray(m,1)[0];if(d<=f.length&&!RegExp("[".concat(t.digits.slice(1),"]")).test(f)){var h=f.indexOf(t.digits[0]),x=f.lastIndexOf(t.digits[0]);if(-1!==h&&-1!==x){var E=x+1;if((s!==h||d!==E)&&d>h&&d<=E)return{start:h,end:E}}}}for(var S=void 0!==c.maximumIntegerDigits?Number(c.maximumIntegerDigits):void 0,$=l.length,R=0,V=0,O=!1;V<s;V++){var w=t.digits.includes(r[V]),b=r[V]===t.decimal;!O&&(b||w&&r[V]!==t.digits[0])&&(O=!0),O&&(b||w)&&(R+=1)}if("insert"===n){var z=r.slice(0,s),y=r.indexOf(t.decimal),_=z.replace(RegExp("[^".concat(t.decimal).concat(t.digits,"]"),"g"),"").replace(RegExp("^".concat(t.digits[0],"+"),"g"),"").split(t.decimal),k=e._slicedToArray(_,2),F=k[0],T=k[1],B=void 0===T?"":T,D=-1!==y&&d<=y?"\\.":"\\.(?=.*\\.)",j=o.replace(RegExp("-|".concat(D),"g"),""),C=j.includes("."),I=j.split("."),P=e._slicedToArray(I,2),A=P[0],N=P[1],q=void 0===N?"":N;if(-1!==y&&s>y)if(C){R-=1;var L=F+B;void 0!==S&&L.length>S&&(R=S,F=L.slice(0,S))}else q=A,A="";var W="[".concat(t.decimal).concat(t.digits.slice(1),"]");RegExp(W).test(z)||(A=A.replace(/^0+/g,""));var M=void 0!==S?S-F.length:void 0;R+=(A.slice(0,M)+(C?".":"")+q).replace(RegExp("[^\\.".concat(a.decimal,"\\d").concat(a.digits,"]+"),"g"),"").length}for(var G=0,H=!1,J=0;G<l.length;G++){var K=a.digits.includes(l[G]),Q=l[G]===a.decimal;if(!H&&(Q||K&&l[G]!==a.digits[0])&&(H=!0),H&&J>=R){$=G;break}H&&(Q||K)&&(J+=1)}if("deleteForward"===n){var U,X="\\".concat(a.minusSign),Y="^.{".concat($,"}[^").concat(a.decimal).concat(a.digits,"]*[").concat(X).concat(a.decimal).concat(a.digits,"]"),Z=null===(U=RegExp(Y).exec(l))||void 0===U?void 0:U[0].length;void 0!==Z&&($=Z-1)}else{var ee,ie="deleteBackward"===n?"\\".concat(a.minusSign):"",ae="[".concat(ie).concat(a.decimal).concat(a.digits,"][^").concat(a.decimal).concat(a.digits,"]*.{").concat(l.length-$,"}$"),te=null===(ee=RegExp(ae).exec(l))||void 0===ee?void 0:ee.index;void 0!==te&&($=te+1)}var ce="[\\".concat(a.minusSign).concat(a.decimal).concat(a.digits.slice(1),"]"),ne="[\\".concat(a.minusSign).concat(a.decimal).concat(a.digits,"][^").concat(a.decimal).concat(a.digits,"]*$"),le=l.search(RegExp(ce)),re=l.search(RegExp(ne));return-1!==le&&$<le?$=le:-1!==re&&$>re+1&&($=re+1),{start:$,end:$}}({localizedValues:m,previousLocalizedValues:p,resolvedOptions:f,inputType:t,value:I,previousValue:l,addedValue:s,changeStart:d,changeEnd:u});return{value:I,selectionStart:A.start,selectionEnd:A.end,options:{locales:g,options:v}}}}])).format=function(i){return e.format(i,r)},a.unformat=function(i){return e.unformat(i,r.locales)},a}return e._inherits(l,a),e._createClass(l)}(i.Input);a=l,Object.defineProperty(a.prototype,Symbol.toStringTag,{writable:!1,enumerable:!1,configurable:!0,value:"NumberFormat"}),exports.default=l;