persian-number-input
Version:
React component for Persian, Indic, or English localized number input with customizable digit grouping
42 lines • 1.81 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformNumber = void 0;
const digitUtils_1 = require("./digitUtils");
const transformNumber = (rawValue, options) => {
const { separatorCount = 3, separatorChar = ",", decimalChar, suffix, locale = "fa", showZero = false, } = options || {};
if (rawValue === null || rawValue === undefined || rawValue === "") {
const zeroVal = showZero ? (0, digitUtils_1.toLocalizedDigits)("0", locale) : "";
if (zeroVal && suffix)
return `${zeroVal} ${suffix}`;
return zeroVal;
}
let [integerPart, fractionalPart] = rawValue.split(".");
const hasTrailingDot = rawValue.endsWith(".");
const absIntPart = integerPart || (hasTrailingDot || fractionalPart !== undefined ? "0" : "");
if (absIntPart === "" && !hasTrailingDot && fractionalPart === undefined) {
const zeroVal = showZero ? (0, digitUtils_1.toLocalizedDigits)("0", locale) : "";
if (zeroVal && suffix)
return `${zeroVal} ${suffix}`;
return zeroVal;
}
const groupedInt = (0, digitUtils_1.groupDigits)(absIntPart, separatorCount, separatorChar);
let finalStr = groupedInt;
if (fractionalPart !== undefined) {
finalStr = `${groupedInt}.${fractionalPart}`;
}
else if (hasTrailingDot) {
finalStr = `${groupedInt}.`;
}
if (decimalChar || locale !== "en") {
finalStr = (0, digitUtils_1.localizeDecimalSeparator)(finalStr, locale, decimalChar);
}
if (locale !== "en") {
finalStr = (0, digitUtils_1.toLocalizedDigits)(finalStr, locale);
}
if (suffix) {
finalStr = `${finalStr} ${suffix}`;
}
return finalStr;
};
exports.transformNumber = transformNumber;
//# sourceMappingURL=transformNumber.js.map