openstack-uicore-foundation
Version:
ui reactjs components for openstack marketing site
2 lines • 2.37 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("openstack-uicore-foundation",[],t):"object"==typeof exports?exports["openstack-uicore-foundation"]=t():e["openstack-uicore-foundation"]=t()}(this,(()=>(()=>{"use strict";var e={};(()=>{e.d=(t,r)=>{for(var n in r)e.o(r,n)&&!e.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:r[n]})}})(),(()=>{e.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})(),(()=>{e.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})}})();var t={};e.r(t),e.d(t,{amountFromCents:()=>a,amountToCents:()=>c,currencyAmountFromCents:()=>f,parsePrice:()=>l});const r=100n,n=2,o=3,i=1n,s=0,u={USD:"$",EUR:"€",GBP:"£",CAD:"C$",AUD:"A$",NZD:"NZ$",CHF:"CHF",ARS:"AR$",BRL:"R$",MXN:"MX$"};function c(e){if(null==e)throw new Error("amount is required");let t=String(e).trim();if(t.includes(",")&&t.includes(".")?t=t.replace(/,/g,""):t.includes(",")&&!t.includes(".")&&(t=t.replace(",",".")),!/^\d+(\.\d+)?$/.test(t))throw new Error(`Invalid money format: "${e}"`);const[n,s=""]=t.split("."),u=`${s}000`,c=u[0]??"0",a=u[1]??"0",f=u[2]??"0",l=s.length>o?s.slice(o):"",d=/[1-9]/.test(l);let m=BigInt(n)*r+BigInt(c+a);return(f>"5"||"5"===f||"5"===f&&d)&&(m+=i),Number(m)}function a(e){let t;if("bigint"==typeof e)t=e;else if("number"==typeof e){if(!Number.isSafeInteger(e))throw new Error("cents must be a safe integer Number (or pass BigInt/string).");t=BigInt(e)}else{if("string"!=typeof e)throw new Error("cents must be a bigint, number, or numeric string.");{const r=e.trim();if(!/^\d+$/.test(r))throw new Error("cents string must contain digits only (e.g., '1234').");t=BigInt(r)}}if(t<s)throw new Error("cents must be non-negative.");const o=t%r;return`${(t/r).toString()}.${o.toString().padStart(n,"0")}`}function f(e,t="USD"){if("number"!=typeof e||!Number.isInteger(e))throw new Error("cents must be an integer number");const r=a(e);return`${u[t]??"$"}${r}`}const l=e=>{if(null==e)throw new Error("priceString is required");let t=String(e).trim();if(t.includes("-"))throw new Error("Negative amounts are not allowed");if(t=t.replace(/[^\d.,]/g,""),!t)throw new Error(`Invalid price: "${e}"`);return c(t)};return t})()));
//# sourceMappingURL=money.js.map