react-numeric-component
Version:
react-component react currency input number number-format mask
2 lines (1 loc) • 16.2 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react");function t(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r,n=t(e),a=function(){return a=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var a in t=arguments[r])Object.prototype.hasOwnProperty.call(t,a)&&(e[a]=t[a]);return e},a.apply(this,arguments)};function o(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var a=0;for(n=Object.getOwnPropertySymbols(e);a<n.length;a++)t.indexOf(n[a])<0&&Object.prototype.propertyIsEnumerable.call(e,n[a])&&(r[n[a]]=e[n[a]])}return r}function u(){}function i(e){var t,r=void 0;return function(){for(var n=[],a=0;a<arguments.length;a++)n[a]=arguments[a];return t&&n.length===t.length&&n.every((function(e,r){return e===t[r]}))?r:(t=n,r=e.apply(void 0,n))}}function l(e){return!!(e||"").match(/\d/)}function c(e){return null==e}function s(e){return"number"==typeof e&&isNaN(e)}function f(e){return c(e)||s(e)||"number"==typeof e&&!isFinite(e)}function d(e){return e.replace(/[-[\]/{}()*+?.\\^$|]/g,"\\$&")}function v(e){switch(e){case"lakh":return/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/g;case"wan":return/(\d)(?=(\d{4})+(?!\d))/g;default:return/(\d)(?=(\d{3})+(?!\d))/g}}function p(e,t,r){var n=v(r),a=e.search(/[1-9]/);return a=-1===a?e.length:a,e.substring(0,a)+e.substring(a,e.length).replace(n,"$1"+t)}function g(t){var r=e.useRef(t);r.current=t;var n=e.useRef((function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];return r.current.apply(r,e)}));return n.current}function m(e,t){void 0===t&&(t=!0);var r="-"===e[0],n=r&&t,a=(e=e.replace("-","")).split(".");return{beforeDecimal:a[0],afterDecimal:a[1]||"",hasNegation:r,addNegation:n}}function h(e){if(!e)return e;var t="-"===e[0];t&&(e=e.substring(1,e.length));var r=e.split("."),n=r[0].replace(/^0+/,"")||"0",a=r[1]||"";return"".concat(t?"-":"").concat(n).concat(a?".".concat(a):"")}function x(e,t,r){for(var n="",a=r?"0":"",o=0;o<=t-1;o++)n+=e[o]||a;return n}function S(e,t){return Array(t+1).join(e)}function y(e){var t=e+"",r="-"===t[0]?"-":"";r&&(t=t.substring(1));var n=t.split(/[eE]/g),a=n[0],o=n[1];if(!(o=Number(o)))return r+a;var u=1+o,i=(a=a.replace(".","")).length;return u<0?a="0."+S("0",Math.abs(u))+a:u>=i?a+=S("0",u-i):a=(a.substring(0,u)||"0")+"."+a.substring(u),r+a}function V(e,t,r){if(-1!==["","-"].indexOf(e))return e;var n=(-1!==e.indexOf(".")||r)&&t,a=m(e),o=a.beforeDecimal,u=a.afterDecimal,i=a.hasNegation,l=parseFloat("0.".concat(u||"0")),c=(u.length<=t?"0.".concat(u):l.toFixed(t)).split("."),s=o;o&&Number(c[0])&&(s=o.split("").reverse().reduce((function(e,t,r){return e.length>r?(Number(e[0])+Number(t)).toString()+e.substring(1,e.length):t+e}),c[0]));var f=x(c[1]||"",t,r),d=n?".":"";return"".concat(i?"-":"").concat(s).concat(d).concat(f)}function b(e,t){if(e.value=e.value,null!==e){if(e.createTextRange){var r=e.createTextRange();return r.move("character",t),r.select(),!0}return e.selectionStart||0===e.selectionStart?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}"function"==typeof SuppressedError&&SuppressedError,function(e){e.event="event",e.props="prop"}(r||(r={}));var w=i((function(e,t){for(var r=0,n=0,a=e.length,o=t.length;e[r]===t[r]&&r<a;)r++;for(;e[a-1-n]===t[o-1-n]&&o-n>r&&a-n>r;)n++;return{from:{start:r,end:a-n},to:{start:r,end:o-n}}}));function N(e,t,r){return Math.min(Math.max(e,t),r)}function D(e){return Math.max(e.selectionStart,e.selectionEnd)}function C(){return"undefined"!=typeof navigator&&!(navigator.platform&&/iPhone|iPod/.test(navigator.platform))}function I(e){return{from:{start:0,end:0},to:{start:0,end:e.length},lastValue:""}}function T(e){var t=e.currentValue,r=e.formattedValue,n=e.currentValueIndex,a=e.formattedValueIndex;return t[n]===r[a]}function E(e,t,r,n,a,o,u){void 0===u&&(u=T);var i=a.findIndex((function(e){return e})),l=e.slice(0,i);t||r.startsWith(l)||(t=l,r=l+r,n+=l.length);for(var c=r.length,s=e.length,f={},d=new Array(c),v=0;v<c;v++){d[v]=-1;for(var p=0,g=s;p<g;p++){if(u({currentValue:r,lastValue:t,formattedValue:e,currentValueIndex:v,formattedValueIndex:p})&&!0!==f[p]){d[v]=p,f[p]=!0;break}}}for(var m=n;m<c&&(-1===d[m]||!o(r[m]));)m++;var h=m===c||-1===d[m]?s:d[m];for(m=n-1;m>0&&-1===d[m];)m--;var x=-1===m||-1===d[m]?0:d[m]+1;return x>h?h:n-x<h-n?x:h}function A(e,t,r,n){var a=e.length;if(t=N(t,0,a),"left"===n){for(;t>=0&&!r[t];)t--;-1===t&&(t=r.indexOf(!0))}else{for(;t<=a&&!r[t];)t++;t>a&&(t=r.lastIndexOf(!0))}return-1===t&&(t=a),t}function B(e){for(var t=Array.from({length:e.length+1}).map((function(){return!0})),r=0,n=t.length;r<n;r++)t[r]=Boolean(l(e[r])||l(e[r-1]));return t}function F(t,r,n,a,o,i){void 0===i&&(i=u);var l=g((function(e,t){var r,n;return f(e)?(n="",r=""):"number"==typeof e||t?(n="number"==typeof e?y(e):e,r=a(n)):(n=o(e,void 0),r=a(n)),{formattedValue:r,numAsString:n}})),s=e.useState((function(){return l(c(t)?r:t,n)})),d=s[0],v=s[1],p=t,m=n;c(t)&&(p=d.numAsString,m=!0);var h=l(p,m);return e.useMemo((function(){v(h)}),[h.formattedValue]),[d,function(e,t){e.formattedValue!==d.formattedValue&&v({formattedValue:e.formattedValue,numAsString:e.value}),i(e,t)}]}function O(e){return e.replace(/[^0-9]/g,"")}function R(e){return e}function M(t){var i=t.type,c=void 0===i?"text":i,s=t.displayType,f=void 0===s?"input":s,d=t.customInput,v=t.renderText,p=t.getInputRef,g=t.format,m=void 0===g?R:g,h=t.removeFormatting,x=void 0===h?O:h,S=t.defaultValue,y=t.valueIsNumericString,V=t.onValueChange,N=t.isAllowed,I=t.onChange,T=void 0===I?u:I,M=t.onKeyDown,P=void 0===M?u:M,k=t.onMouseUp,j=void 0===k?u:k,W=t.onFocus,L=void 0===W?u:W,K=t.onBlur,U=void 0===K?u:K,G=t.value,Z=t.getCaretBoundary,$=void 0===Z?B:Z,_=t.isValidInputCharacter,q=void 0===_?l:_,z=t.isCharacterSame,H=t.min,J=t.max,Q=t.placeholder,X=t.autoFocus,Y=o(t,["type","displayType","customInput","renderText","getInputRef","format","removeFormatting","defaultValue","valueIsNumericString","onValueChange","isAllowed","onChange","onKeyDown","onMouseUp","onFocus","onBlur","value","getCaretBoundary","isValidInputCharacter","isCharacterSame","min","max","placeholder","autoFocus"]),ee=F(G,S,Boolean(y),m,x,V),te=ee[0],re=te.formattedValue,ne=te.numAsString,ae=ee[1],oe=e.useRef({formattedValue:re,numAsString:ne}),ue=function(e,t){oe.current={formattedValue:e.formattedValue,numAsString:e.value},ae(e,t)},ie=e.useState(!1),le=ie[0],ce=ie[1],se=e.useRef(null),fe=e.useRef({setCaretTimeout:null,focusTimeout:null});e.useEffect((function(){return ce(!0),function(){clearTimeout(fe.current.setCaretTimeout),clearTimeout(fe.current.focusTimeout)}}),[]);var de=m,ve=function(e,t){var r=parseFloat(t);return{formattedValue:e,value:t,floatValue:isNaN(r)?void 0:r}},pe=function(e,t,r){0===e.selectionStart&&e.selectionEnd===e.value.length||(b(e,t),fe.current.setCaretTimeout=setTimeout((function(){e.value===r&&e.selectionStart!==t&&b(e,t)}),0))},ge=function(e,t,r){return A(e,t,$(e),r)},me=function(e,t,r){var n=$(t),a=E(t,re,e,r,n,q,z);return a=A(t,a,n)};e.useEffect((function(){var e=oe.current,t=e.formattedValue,n=e.numAsString;re===t||re===ne&&t===n||ue(ve(re,ne),{event:void 0,source:r.props})}),[re,ne]);var he=se.current?D(se.current):void 0;("undefined"!=typeof window?e.useLayoutEffect:e.useEffect)((function(){var e=se.current;if(re!==oe.current.formattedValue&&e){var t=me(oe.current.formattedValue,re,he);e.value=re,pe(e,t,re)}}),[re]);var xe=function(e,t,r){var n=w(re,e),o=a(a({},n),{lastValue:re}),u=x(e,o),i=de(u);if(u=x(i,void 0),N&&!N(ve(i,u))){var l=t.target,c=D(l),s=me(e,re,c);return l.value=re,pe(l,s,re),!1}return function(e){var t,r=e.formattedValue,n=void 0===r?"":r,a=e.input,o=e.source,u=e.event,i=e.numAsString;if(a){var l=e.inputValue||a.value,c=D(a);a.value=n,void 0!==(t=me(l,n,c))&&pe(a,t,n)}n!==re&&ue(ve(n,i),{event:u,source:o})}({formattedValue:i,numAsString:u,inputValue:e,event:t,source:r,input:t.target}),!0},Se=le&&C()?"numeric":void 0,ye=Object.assign({inputMode:Se},Y,{type:c,placeholder:Q,autoFocus:X,value:re,onChange:function(e){var t=e.target.value;xe(t,e,r.event)&&T(e)},onKeyDown:function(e){var t,r=e.target,n=e.key,a=r.selectionStart,o=r.selectionEnd,u=r.value,i=void 0===u?"":u;if("ArrowLeft"===n||"Backspace"===n?t=Math.max(a-1,0):"ArrowRight"===n?t=Math.min(a+1,i.length):"Delete"===n&&(t=a),void 0!==t&&a===o){var l=t;if("ArrowLeft"===n||"ArrowRight"===n)(l=ge(i,t,"ArrowLeft"===n?"left":"right"))!==t&&e.preventDefault();else"Delete"!==n||q(i[t])?"Backspace"!==n||q(i[t])||(l=ge(i,t,"left")):l=ge(i,t,"right");l!==t&&pe(r,l,i),e.isUnitTestRun&&pe(r,l,i),P(e)}else P(e)},onMouseUp:function(e){var t=e.target,r=t.selectionStart,n=t.selectionEnd,a=t.value,o=void 0===a?"":a;if(r===n){var u=ge(o,r);u!==r&&pe(t,u,o)}j(e)},onFocus:function(e){e.persist&&e.persist();var t=e.target,r=e.currentTarget;se.current=t,fe.current.focusTimeout=setTimeout((function(){var n=t.selectionStart,o=t.selectionEnd,u=t.value,i=void 0===u?"":u,l=ge(i,n);l===n||0===n&&o===i.length||pe(t,l,i),L(a(a({},e),{currentTarget:r}))}),0)},onBlur:function(e){se.current=null,clearTimeout(fe.current.focusTimeout),clearTimeout(fe.current.setCaretTimeout);var t=w(re,e.target.value),r=a(a({},t),{lastValue:re}),n=x(e.target.value,r);(H||0===H||J||0===J)&&""!==e.target.value?((H||0===H)&&Number(n)<=H&&(e.target.value=H.toString(),U(e)),(J||0===J)&&Number(n)>=J&&(e.target.value=J.toString(),U(e))):U(e)}});if("text"===f)return v?n.default.createElement(n.default.Fragment,null,v(re,Y)||null):n.default.createElement("span",a({},Y,{ref:p}),re);if(d){var Ve=d;return n.default.createElement(Ve,a({},ye,{ref:p}))}return n.default.createElement("input",a({},ye,{ref:p}))}function P(e,t){var r=t.decimalScale,n=t.fixedDecimalScale,a=t.prefix,o=void 0===a?"":a,u=t.suffix,i=void 0===u?"":u,l=t.allowNegative,c=t.thousandsGroupStyle,s=void 0===c?"thousand":c;if(""===e||"-"===e)return e;var f=k(t),d=f.thousandSeparator,v=f.decimalSeparator,g=0!==r&&-1!==e.indexOf(".")||r&&n,h=m(e,l),S=h.beforeDecimal,y=h.afterDecimal,V=h.addNegation;return void 0!==r&&(y=x(y,r,!!n)),d&&(S=p(S,d,s)),o&&(S=o+S),i&&(y+=i),V&&(S="-".concat(S)),e=S+(g&&v||"")+y}function k(e){var t=e.decimalSeparator,r=void 0===t?".":t,n=e.thousandSeparator,a=e.allowedDecimalSeparators;return!0===n&&(n=","),a||(a=[r,"."]),{decimalSeparator:r,thousandSeparator:n,allowedDecimalSeparators:a}}function j(e,t,r){void 0===t&&(t=I(e));var n=r.allowNegative,a=r.prefix,o=void 0===a?"":a,u=r.suffix,i=void 0===u?"":u,c=r.decimalScale,s=t.from,f=t.to,v=f.start,p=f.end,g=k(r),h=g.allowedDecimalSeparators,x=g.decimalSeparator,S=e[p]===x;if(l(e)&&(e===o||e===i)&&""===t.lastValue)return e;if(p-v==1&&-1!==h.indexOf(e[v])){var y=0===c?"":x;e=e.substring(0,v)+y+e.substring(v+1,e.length)}var V=function(e,t,r){var n=!1,a=!1;o.startsWith("-")?n=!1:e.startsWith("--")?(n=!1,a=!0):i.startsWith("-")&&e.length===i.length?n=!1:"-"===e[0]&&(n=!0);var u=n?1:0;return a&&(u=2),u&&(e=e.substring(u),t-=u,r-=u),{value:e,start:t,end:r,hasNegation:n}},b=V(e,v,p),w=b.hasNegation;e=b.value,v=b.start,p=b.end;var N=V(t.lastValue,s.start,s.end),D=N.start,C=N.end,T=N.value,E=e.substring(v,p);!(e.length&&T.length&&(D>T.length-i.length||C<o.length))||E&&i.startsWith(E)||(e=T);var A=0;e.startsWith(o)?A+=o.length:v<o.length&&(A=v),p-=A;var B=(e=e.substring(A)).length,F=e.length-i.length;e.endsWith(i)?B=F:(p>F||p>e.length-i.length)&&(B=p),e=e.substring(0,B),e=function(e,t){void 0===e&&(e="");var r=new RegExp("(-)"),n=new RegExp("(-)(.)*(-)"),a=r.test(e),o=n.test(e);return e=e.replace(/-/g,""),a&&!o&&t&&(e="-".concat(e)),e}(w?"-".concat(e):e,n),e=(e.match(function(e,t){return new RegExp("(^-)|[0-9]|".concat(d(e)),t?"g":void 0)}(x,!0))||[]).join("");var O=e.indexOf(x),R=m(e=e.replace(new RegExp(d(x),"g"),(function(e,t){return t===O?".":""})),n),M=R.beforeDecimal,P=R.afterDecimal,j=R.addNegation;return f.end-f.start<s.end-s.start&&""===M&&S&&!parseFloat(P)&&(e=j?"-":""),e}function W(e,t){var r=t.prefix,n=void 0===r?"":r,a=t.suffix,o=void 0===a?"":a,u=Array.from({length:e.length+1}).map((function(){return!0})),i="-"===e[0];u.fill(!1,0,n.length+(i?1:0));var l=e.length;return u.fill(!1,l-o.length+1,l+1),u}function L(e){e=function(e){var t=k(e),r=t.thousandSeparator,n=t.decimalSeparator,o=e.prefix,u=void 0===o?"":o,i=e.allowNegative,l=void 0===i||i;if(r===n)throw new Error("\n Decimal separator can't be same as thousand separator.\n thousandSeparator: ".concat(r,' (thousandSeparator = {true} is same as thousandSeparator = ",")\n decimalSeparator: ').concat(n," (default value for decimalSeparator is .)\n "));return u.startsWith("-")&&l&&(console.error("\n Prefix can't start with '-' when allowNegative is true.\n prefix: ".concat(u,"\n allowNegative: ").concat(l,"\n ")),l=!1),a(a({},e),{allowNegative:l})}(e),e.decimalSeparator,e.allowedDecimalSeparators,e.thousandsGroupStyle;var t=e.suffix,n=e.allowNegative,i=e.allowLeadingZeros,s=e.onKeyDown,d=void 0===s?u:s,v=e.onBlur,p=void 0===v?u:v,g=e.thousandSeparator,m=e.decimalScale,x=e.fixedDecimalScale,S=e.prefix,N=void 0===S?"":S,D=e.defaultValue,C=e.value,I=e.valueIsNumericString,T=e.onValueChange,E=o(e,["decimalSeparator","allowedDecimalSeparators","thousandsGroupStyle","suffix","allowNegative","allowLeadingZeros","onKeyDown","onBlur","thousandSeparator","decimalScale","fixedDecimalScale","prefix","defaultValue","value","valueIsNumericString","onValueChange"]),A=k(e),B=A.decimalSeparator,O=A.allowedDecimalSeparators,R=function(t){return P(t,e)},M=function(t,r){return j(t,r,e)},L=c(C)?D:C,K=null!=I?I:function(e,t,r){return""===e||!(null==t?void 0:t.match(/\d/))&&!(null==r?void 0:r.match(/\d/))&&"string"==typeof e&&!isNaN(Number(e))}(L,N,t);c(C)?c(D)||(K=K||"number"==typeof D):K=K||"number"==typeof C;var U=function(e){return f(e)?e:("number"==typeof e&&(e=y(e)),K&&"number"==typeof m?V(e,m,Boolean(x)):e)},G=F(U(C),U(D),Boolean(K),R,M,T),Z=G[0],$=Z.numAsString,_=Z.formattedValue,q=G[1];return a(a({},E),{value:_,valueIsNumericString:!1,isValidInputCharacter:function(e){return e===B||l(e)},isCharacterSame:function(e){var t=e.currentValue,r=e.lastValue,n=e.formattedValue,a=e.currentValueIndex,o=e.formattedValueIndex,u=t[a],i=n[o],l=w(r,t).to;return!!(a>=l.start&&a<l.end&&O&&O.includes(u)&&i===B)||u===i},onValueChange:q,format:R,removeFormatting:M,getCaretBoundary:function(t){return W(t,e)},onKeyDown:function(e){var t=e.target,r=e.key,a=t.selectionStart,o=t.selectionEnd,u=t.value,i=void 0===u?"":u;if(a===o){"Backspace"===r&&"-"===i[0]&&a===N.length+1&&n&&b(t,1),m&&x&&("Backspace"===r&&i[a-1]===B?(b(t,a-1),e.preventDefault()):"Delete"===r&&i[a]===B&&e.preventDefault()),(null==O?void 0:O.includes(r))&&i[a]===B&&b(t,a+1);var l=!0===g?",":g;"Backspace"===r&&i[a-1]===l&&b(t,a-1),"Delete"===r&&i[a]===l&&b(t,a+1),d(e)}else d(e)},onBlur:function(t){var n=$;if(n.match(/\d/g)||(n=""),i||(n=h(n)),x&&m&&(n=V(n,m,x)),n!==$){var a=P(n,e);q({formattedValue:a,value:n,floatValue:parseFloat(n)},{event:t,source:r.event})}p(t)}})}exports.NumberFormatBase=M,exports.NumericFormat=function(e){var t=L(e);return n.default.createElement(M,a({},t))},exports.addInputMode=C,exports.applyThousandSeparator=p,exports.caretUnknownFormatBoundary=B,exports.charIsNumber=l,exports.clamp=N,exports.escapeRegExp=d,exports.findChangeRange=w,exports.findChangedIndex=function(e,t){for(var r=0,n=0,a=e.length,o=t.length;e[r]===t[r]&&r<a;)r++;for(;e[a-1-n]===t[o-1-n]&&o-n>r&&a-n>r;)n++;return{start:r,end:a-n}},exports.fixLeadingZero=h,exports.geInputCaretPosition=D,exports.getCaretPosInBoundary=A,exports.getCaretPosition=E,exports.getDefaultChangeMeta=I,exports.getMaskAtIndex=function(e,t){return void 0===e&&(e=" "),"string"==typeof e?e:e[t]||" "},exports.getNumericCaretBoundary=W,exports.getThousandsGroupRegex=v,exports.isNanValue=s,exports.isNil=c,exports.isNotValidValue=f,exports.limitToScale=x,exports.memoizeOnce=i,exports.noop=u,exports.numericFormatter=P,exports.removeNumericFormat=j,exports.returnTrue=function(){return!0},exports.roundToPrecision=V,exports.setCaretPosition=b,exports.splitDecimal=m,exports.toNumericString=y,exports.useInternalValues=F,exports.useNumericFormat=L,exports.usePersistentCallback=g;