UNPKG

persian-number-input

Version:

React component for Persian, Indic, or English localized number input with customizable digit grouping

42 lines 1.81 kB
"use strict"; 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