@nexusui/components
Version:
These are custom components specially-developed for NexusUI applications. They will make your life easier by giving you out-of-the-box implementations for various high-level UI elements that you can drop directly into your application.
2 lines (1 loc) • 1.56 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var i=require("./NumberFormatter.context.js");const t=i=>/[1-9]+/.test(i)?i:i.replace(/^-0/,"0"),e=(i,e={})=>{const{notation:a="standard",decimalPlaces:r,showTrailingZeros:o}=e;let n=new Intl.NumberFormat(void 0,{maximumFractionDigits:20,minimumFractionDigits:0});if("auto"===a){const t=e,{scientificThresholds:a}=t,o=a?.above,s=a?.below,m=void 0!==o&&Math.abs(i)>=o||void 0!==s&&Math.abs(i)<=s;if("number"==typeof r)n=new Intl.NumberFormat(void 0,{minimumFractionDigits:Number.isNaN(r)?0:Math.max(r,0),maximumFractionDigits:Number.isNaN(r)?20:Math.min(r,20),notation:m?"scientific":"standard"});else if(void 0===r)return n=new Intl.NumberFormat(void 0,{minimumFractionDigits:0,maximumFractionDigits:20,notation:m?"scientific":"standard"}),n.format(i)}else n=new Intl.NumberFormat(void 0,{minimumFractionDigits:Number.isNaN(r??NaN)?0:Math.max(r,0),maximumFractionDigits:Number.isNaN(r??NaN)?20:Math.min(r,20),notation:a});const s=n.format(i);return o?t(s):(i=>{let e=i.replace(/(\d+\.\d*?)0*$/,((i,t)=>t)).replace(/(\d+\.\d*?)0*(E\d+)/,((i,t,e)=>`${t}${e}`));return e=e.replace(/\.$/,"").replace(/\.E/,"E"),t(e)})(s)};exports.default=t=>{const{children:a,...r}=t,o=parseFloat(a.toString()),{options:n}=i.useNumberFormatterContext(),{notation:s=n.notation,decimalPlaces:m=n.decimalPlaces,scientificThresholds:c=n.scientificThresholds,showTrailingZeros:l=n.showTrailingZeros,...u}=r;return e(o,{notation:s,decimalPlaces:m,scientificThresholds:c,showTrailingZeros:l,...u})},exports.formatNumber=e;