@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
JavaScript
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