UNPKG

@airplane/views

Version:

A React library for building Airplane views. Views components are optimized in style and functionality to produce internal apps that are easy to build and maintain.

60 lines (59 loc) 2.25 kB
import getSymbolFromCurrency from "currency-symbol-map"; const REVERSED_CURRENCIES = ["ARS", "BRL", "CHF", "DKK", "EUR", "ILS", "PLN"]; const currencyParser = (currency) => (value) => { const c = currency ?? "USD"; if (REVERSED_CURRENCIES.includes(c)) { return value == null ? void 0 : value.replace(/[^0-9,]/g, "").replace(/,/, "."); } return value == null ? void 0 : value.replace(/[^0-9.]/g, ""); }; const currencyFormatterStandard = (currency) => (value) => { const parts = value == null ? void 0 : value.split("."); const symbol = getSymbolFromCurrency(currency); if (!(parts == null ? void 0 : parts.length)) { return ""; } const left = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); return parts.length > 1 ? `${symbol} ${left}.${parts.slice(1).join("")}` : `${symbol} ${left}`; }; const currencyFormatterReversed = (currency) => (value) => { const parts = value == null ? void 0 : value.split("."); const symbol = getSymbolFromCurrency(currency); if (!(parts == null ? void 0 : parts.length)) { return ""; } const left = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, "."); return parts.length > 1 ? `${symbol} ${left},${parts.slice(1).join("")}` : `${symbol} ${left}`; }; const currencyFormatter = (currency) => { const c = currency ?? "USD"; if (REVERSED_CURRENCIES.includes(c)) { return currencyFormatterReversed(c); } return currencyFormatterStandard(c); }; const percentParser = (value) => { const percent = (value == null ? void 0 : value.replace("%", "")) ?? ""; const parts = percent.split("."); if (!parts.length) { return ""; } const padded = parts[0].padStart(2, "0"); return `${padded.slice(0, -2)}.${padded.slice(-2)}${parts.slice(1).join("")}`; }; const percentFormatter = (value) => { const parts = value == null ? void 0 : value.split("."); if (!(parts == null ? void 0 : parts.length)) { return ""; } const padded = parts.slice(1).join("").padEnd(2, "0"); const output = `${parts[0]}${padded.slice(0, 2)}.${padded.slice(2)}`; return `${output.replace(/^0+/, "").replace(/^\./, "0.").replace(/\.$/, "")}%`; }; export { currencyFormatter, currencyParser, percentFormatter, percentParser }; //# sourceMappingURL=numberUtils.js.map