persian-number-input 4.0.8 → 4.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,195 +1,92 @@
1
1
  "use strict";
2
- // utils/digitUtils.ts
3
2
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.roundToDecimals = exports.sanitizeNumericInput = exports.groupDigits = exports.localizeDecimalSeparator = exports.toLocalizedDigits = exports.convertToEnglishDigits = exports.decimalSeparatorMap = exports.digitsMap = void 0;
5
- /**
6
- * نقشه ارقام محلی برای زبان‌های مختلف.
7
- */
3
+ exports.roundToDecimals = exports.sanitizeNumericInput = exports.groupDigits = exports.localizeDecimalSeparator = exports.toLocalizedDigits = exports.convertToEnglishDigits = exports.toEnglishDigits = exports.decimalSeparatorMap = exports.digitsMap = void 0;
4
+ const LOCAL_DIGITS_MAP = {
5
+ "۰": "0",
6
+ "۱": "1",
7
+ "۲": "2",
8
+ "۳": "3",
9
+ "۴": "4",
10
+ "۵": "5",
11
+ "۶": "6",
12
+ "۷": "7",
13
+ "۸": "8",
14
+ "۹": "9",
15
+ "٠": "0",
16
+ "١": "1",
17
+ "٢": "2",
18
+ "٣": "3",
19
+ "٤": "4",
20
+ "٥": "5",
21
+ "٦": "6",
22
+ "٧": "7",
23
+ "٨": "8",
24
+ "٩": "9",
25
+ "٫": ".",
26
+ "/": ".",
27
+ };
8
28
  exports.digitsMap = {
9
29
  fa: ["۰", "۱", "۲", "۳", "۴", "۵", "۶", "۷", "۸", "۹"],
10
- // می‌توانید زبان‌های دیگر را اضافه کنید
11
- // ar: ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"],
30
+ ar: ["٠", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"],
12
31
  };
13
- /**
14
- * نقشه جداکننده اعشار برای زبان‌های مختلف (برای نمایش خروجی).
15
- */
16
32
  exports.decimalSeparatorMap = {
17
33
  fa: "٫",
18
- // en: ".", // انگلیسی معمولا نقطه است
34
+ ar: "٫",
19
35
  };
20
- // --- توابع کمکی برای تبدیل ارقام ---
21
- const allLocalizedDigits = Object.values(exports.digitsMap).flat().join("");
22
- const conversionMap = {};
23
- for (const locale in exports.digitsMap) {
24
- exports.digitsMap[locale].forEach((digit, index) => {
25
- conversionMap[digit] = index.toString();
26
- });
27
- }
28
- const localizedDigitsRegex = new RegExp(`[${allLocalizedDigits}]`, 'g');
29
- const convertToEnglishDigits = (str) => {
30
- if (!str)
31
- return "";
32
- return str.replace(localizedDigitsRegex, (char) => conversionMap[char] || char);
36
+ const toEnglishDigits = (str) => {
37
+ return str.replace(/[۰-۹٠-٩٫\/]/g, (match) => LOCAL_DIGITS_MAP[match] || match);
33
38
  };
34
- exports.convertToEnglishDigits = convertToEnglishDigits;
39
+ exports.toEnglishDigits = toEnglishDigits;
40
+ exports.convertToEnglishDigits = exports.toEnglishDigits;
35
41
  const toLocalizedDigits = (numStr, locale) => {
36
- if (!numStr || !exports.digitsMap[locale])
37
- return numStr;
38
- const localeDigits = exports.digitsMap[locale];
42
+ const targetLocale = exports.digitsMap[locale] ? locale : "fa";
43
+ const localeDigits = exports.digitsMap[targetLocale];
39
44
  return numStr.replace(/\d/g, (digit) => localeDigits[parseInt(digit, 10)]);
40
45
  };
41
46
  exports.toLocalizedDigits = toLocalizedDigits;
42
47
  const localizeDecimalSeparator = (numStr, locale) => {
43
- const separator = exports.decimalSeparatorMap[locale];
44
- if (!separator || !numStr.includes('.'))
45
- return numStr; // فقط اگر نقطه انگلیسی وجود داشت جایگزین کن
46
- return numStr.replace('.', separator);
48
+ const targetLocale = exports.decimalSeparatorMap[locale] ? locale : "fa";
49
+ const separator = exports.decimalSeparatorMap[targetLocale];
50
+ if (!separator || !numStr.includes("."))
51
+ return numStr;
52
+ return numStr.replace(".", separator);
47
53
  };
48
54
  exports.localizeDecimalSeparator = localizeDecimalSeparator;
49
- const groupDigits = (numStr, separatorCount, separatorChar = ',') => {
50
- if (!numStr || separatorCount <= 0) {
55
+ const groupDigits = (numStr, separatorCount, separatorChar = ",") => {
56
+ if (!numStr || separatorCount <= 0)
51
57
  return numStr;
52
- }
53
- // فقط روی قسمت صحیح اعمال شود (اگر فقط قسمت صحیح داده شده)
54
- const regex = new RegExp(`\\B(?=(\\d{${separatorCount}})+(?!\\d))`, 'g');
58
+ const regex = new RegExp(`\\B(?=(\\d{${separatorCount}})+(?!\\d))`, "g");
55
59
  return numStr.replace(regex, separatorChar);
56
60
  };
57
61
  exports.groupDigits = groupDigits;
58
- /**
59
- * پاک‌سازی ورودی عددی.
60
- * ارقام محلی و جداکننده اعشار محلی (٫) و جداکننده دلخواه ورودی را به انگلیسی تبدیل می‌کند.
61
- * کاراکترهای غیرمجاز را حذف می‌کند.
62
- * فقط یک نقطه اعشار و یک علامت منفی در ابتدا را مجاز می‌داند.
63
- *
64
- * @param value رشته ورودی
65
- * @param inputDecimalSeparator کاراکتر جداکننده اعشار که کاربر در ورودی استفاده می‌کند (پیش‌فرض '.')
66
- * @returns رشته پاک‌شده با ارقام انگلیسی و نقطه استاندارد (.). می‌تواند شامل '-' یا '.' یا '-.' باشد.
67
- */
68
- const sanitizeNumericInput = (value, inputDecimalSeparator = '.') => {
62
+ const sanitizeNumericInput = (value, maxDecimals) => {
69
63
  if (value === null || value === undefined)
70
- return '';
71
- let str = String(value);
72
- // 1. تبدیل ارقام محلی به انگلیسی
73
- str = (0, exports.convertToEnglishDigits)(str);
74
- // 2. تبدیل جداکننده اعشار فارسی (٫) به نقطه استاندارد (.)
75
- str = str.replace(/٫/g, '.');
76
- // 3. تبدیل جداکننده اعشار ورودی دلخواه (اگر با نقطه استاندارد فرق دارد) به نقطه استاندارد
77
- const standardSeparator = '.';
78
- if (inputDecimalSeparator && inputDecimalSeparator !== standardSeparator) {
79
- // برای جلوگیری از خطای regex با کاراکترهای خاص، آن را escape می‌کنیم
80
- const escapedSeparator = inputDecimalSeparator.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
81
- const sepRegex = new RegExp(escapedSeparator, 'g');
82
- str = str.replace(sepRegex, standardSeparator);
83
- }
84
- // 4. مدیریت علامت منفی: فقط یک منفی در ابتدا مجاز است
85
- const negative = str.startsWith('-');
86
- // تمام کاراکترهای غیر از عدد و نقطه استاندارد را حذف کن (منفی را جداگانه بررسی کردیم)
87
- str = str.replace(/[^0-9.]/g, '');
88
- // 5. مدیریت نقطه اعشار: فقط اولین نقطه مجاز است
89
- const firstDotIndex = str.indexOf(standardSeparator);
90
- if (firstDotIndex !== -1) {
91
- const integerPart = str.substring(0, firstDotIndex);
92
- // قسمت اعشاری شامل همه چیز بعد از نقطه اول است، و نقاط اضافی در آن حذف می‌شود
93
- const fractionalPart = str.substring(firstDotIndex + 1).replace(/\./g, '');
94
- str = `${integerPart}${standardSeparator}${fractionalPart}`;
95
- }
96
- // 6. بازگرداندن علامت منفی در صورت لزوم
97
- // فقط اگر رشته خالی نباشد و فقط نقطه نباشد، منفی را اضافه کن
98
- if (negative && str !== '' && str !== standardSeparator) {
99
- str = `-${str}`;
100
- }
101
- // 7. مدیریت صفرهای پیشرو در قسمت صحیح (بعد از پردازش منفی و نقطه)
102
- // مثال: "-005.1" -> "-5.1", "005" -> "5", "0.5" -> "0.5"
103
- let sign = '';
104
- let numericPart = str;
105
- if (str.startsWith('-')) {
106
- sign = '-';
107
- numericPart = str.substring(1);
108
- }
109
- let [intPart, fracPart] = numericPart.split(standardSeparator);
110
- if (intPart && intPart.length > 1 && intPart.startsWith('0')) {
111
- intPart = intPart.replace(/^0+/, '');
112
- if (intPart === '')
113
- intPart = '0'; // اگر فقط صفر بود، 0 بماند (مثل 0.5)
114
- }
115
- else if (intPart === '') {
116
- // اگر رشته با نقطه شروع شود (مثلا ".5")
117
- if (fracPart !== undefined) {
118
- intPart = '0';
119
- }
120
- }
121
- // بازسازی رشته نهایی
122
- if (fracPart !== undefined) {
123
- str = `${sign}${intPart}${standardSeparator}${fracPart}`;
124
- }
125
- else if (intPart !== undefined) {
126
- str = `${sign}${intPart}`;
127
- // اگر ورودی اصلی فقط جداکننده بود، خروجی باید '.' باشد
128
- if (value === inputDecimalSeparator && sign === '') {
129
- str = '.';
130
- }
131
- // اگر ورودی اصلی فقط '-' بود
132
- if (value === '-' && sign === '-' && intPart === undefined) {
133
- str = '-';
64
+ return "";
65
+ let str = (0, exports.toEnglishDigits)(String(value));
66
+ str = str.replace(/[^0-9.]/g, "");
67
+ const parts = str.split(".");
68
+ if (parts.length > 2) {
69
+ str = parts[0] + "." + parts.slice(1).join("");
70
+ }
71
+ str = str.replace(/^0+(?!$|\.)/, "");
72
+ if (str.includes(".")) {
73
+ const [intPart, fracPart] = str.split(".");
74
+ if (maxDecimals !== undefined) {
75
+ const truncatedFrac = maxDecimals > 0 ? fracPart.slice(0, maxDecimals) : "";
76
+ str = truncatedFrac ? `${intPart}.${truncatedFrac}` : intPart;
77
+ if (maxDecimals > 0 && String(value).endsWith(".")) {
78
+ str = str.includes(".") ? str : `${str}.`;
79
+ }
134
80
  }
135
81
  }
136
- else if (sign === '-' && value === '-') {
137
- // اگر ورودی فقط '-' بود و پردازش‌ها آن را حذف کردند
138
- str = '-';
139
- }
140
- else {
141
- // موارد دیگر که ممکن است خالی شوند
142
- str = '';
143
- }
144
- // اجازه دادن به حالت‌های بینابینی در تایپ
145
- if (value === '-')
146
- return '-';
147
- if (String(value).endsWith(inputDecimalSeparator) && str === `${sign}${intPart}`) {
148
- // اگر کاربر جداکننده را تایپ کرده ولی هنوز عددی بعدش نیامده
149
- return `${str}${standardSeparator}`;
150
- }
151
82
  return str;
152
83
  };
153
84
  exports.sanitizeNumericInput = sanitizeNumericInput;
154
- /**
155
- * گرد کردن یا محدود کردن تعداد ارقام اعشار یک رشته عددی (انگلیسی).
156
- * مهم: این تابع نقطه انتهایی را حفظ می‌کند اگر ورودی با نقطه تمام شود و maxDecimals صفر نباشد.
157
- * @param value رشته عددی با ارقام انگلیسی و نقطه استاندارد.
158
- * @param maxDecimals حداکثر تعداد اعشار مجاز (undefined یعنی بدون محدودیت).
159
- * @returns رشته گرد شده یا محدود شده.
160
- */
161
85
  const roundToDecimals = (value, maxDecimals) => {
162
- // اگر مقدار نامعتبر، بدون نقطه یا بدون نیاز به گرد کردن است، همان را برگردان
163
- if (maxDecimals === undefined || !value || !value.includes('.')) {
86
+ if (maxDecimals === undefined || !value || !value.includes("."))
164
87
  return value;
165
- }
166
- const standardSeparator = '.';
167
- const endsWithSeparator = value.endsWith(standardSeparator);
168
- let [integerPart, fractionalPart = ''] = value.split(standardSeparator);
169
- // اگر maxDecimals صفر است، قسمت صحیح را برگردان
170
- if (maxDecimals <= 0) {
171
- // اگر قسمت صحیح خالی بود (مثلا در حالت '-.')، صفر را برگردان
172
- return integerPart === '' && value.startsWith('-') ? "-0" : (integerPart || "0");
173
- // بازگشت بهتر: فقط قسمت صحیح
174
- return integerPart || "0";
175
- }
176
- // قسمت اعشار را به تعداد مجاز کوتاه کن
177
- const trimmedFractional = fractionalPart.slice(0, maxDecimals);
178
- // بازسازی رشته
179
- if (trimmedFractional) {
180
- return `${integerPart}${standardSeparator}${trimmedFractional}`;
181
- }
182
- else {
183
- // اگر قسمت اعشاری بعد از کوتاه کردن خالی شد
184
- // اگر ورودی اصلی با نقطه تمام شده بود، نقطه را حفظ کن
185
- if (endsWithSeparator) {
186
- return `${integerPart}${standardSeparator}`;
187
- }
188
- else {
189
- // در غیر این صورت فقط قسمت صحیح را برگردان
190
- return integerPart;
191
- }
192
- }
88
+ const [int, frac] = value.split(".");
89
+ return maxDecimals > 0 ? `${int}.${frac.slice(0, maxDecimals)}` : int;
193
90
  };
194
91
  exports.roundToDecimals = roundToDecimals;
195
92
  //# sourceMappingURL=digitUtils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"digitUtils.js","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"digitUtils.js","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,9 @@
1
1
  export interface TransformNumberOptions {
2
2
  separatorCount?: number;
3
3
  separatorChar?: string;
4
- locale?: 'fa' | 'en' | string;
4
+ locale?: "fa" | "en" | "ar" | string;
5
5
  maxDecimals?: number;
6
6
  showZero?: boolean;
7
7
  }
8
- /**
9
- * رشته عددی خام (انگلیسی، با نقطه استاندارد) را به فرمت نمایشی تبدیل می‌کند.
10
- * فرض می‌شود ورودی از rawValue هوک آمده و قبلا sanitize و round شده است.
11
- *
12
- * @param rawValue رشته عددی خام (مثلا "1234.5", "15.", "-0.1", "-", ".") یا undefined.
13
- * @param options تنظیمات قالب بندی.
14
- * @returns رشته قالب بندی شده برای نمایش.
15
- */
16
- export declare const transformNumber: (rawValue: string | undefined, // تغییر ورودی به string | undefined برای وضوح
17
- options?: TransformNumberOptions) => string;
8
+ export declare const transformNumber: (rawValue: string | undefined, options?: TransformNumberOptions) => string;
18
9
  //# sourceMappingURL=transformNumber.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transformNumber.d.ts","sourceRoot":"","sources":["../../src/utils/transformNumber.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,GAAG,SAAS,EAAE,8CAA8C;AAC5E,UAAU,sBAAsB,KAC/B,MA8FF,CAAC"}
1
+ {"version":3,"file":"transformNumber.d.ts","sourceRoot":"","sources":["../../src/utils/transformNumber.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,GAAG,SAAS,EAC5B,UAAU,sBAAsB,KAC/B,MAqCF,CAAC"}
@@ -1,97 +1,28 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.transformNumber = void 0;
7
- // utils/transformNumber.ts
8
4
  const digitUtils_1 = require("./digitUtils");
9
- const decimal_js_1 = __importDefault(require("decimal.js")); // برای بررسی دقیق صفر
10
- /**
11
- * رشته عددی خام (انگلیسی، با نقطه استاندارد) را به فرمت نمایشی تبدیل می‌کند.
12
- * فرض می‌شود ورودی از rawValue هوک آمده و قبلا sanitize و round شده است.
13
- *
14
- * @param rawValue رشته عددی خام (مثلا "1234.5", "15.", "-0.1", "-", ".") یا undefined.
15
- * @param options تنظیمات قالب بندی.
16
- * @returns رشته قالب بندی شده برای نمایش.
17
- */
18
- const transformNumber = (rawValue, // تغییر ورودی به string | undefined برای وضوح
19
- options) => {
20
- const { separatorCount = 3, separatorChar = ',', locale = 'fa', maxDecimals, // ممکن است برای نمایش لازم باشد (اگرچه round در هوک انجام شده)
21
- showZero = false, } = options || {};
22
- // 1. مدیریت ورودی‌های null/undefined/empty
5
+ const transformNumber = (rawValue, options) => {
6
+ const { separatorCount = 3, separatorChar = ",", locale = "fa", showZero = false, } = options || {};
23
7
  if (rawValue === null || rawValue === undefined || rawValue === "") {
24
- // نکته: تبدیل صفر به لوکال '۰' در صورت نیاز
25
8
  return showZero ? (0, digitUtils_1.toLocalizedDigits)("0", locale) : "";
26
9
  }
27
- // 2. مدیریت حالت‌های خاص که ممکن است rawValue باشند
28
- if (rawValue === "-") {
29
- // اگر فقط منفی است، و showZero فعال است، شاید بهتر باشد "-0" نمایش دهیم؟
30
- // فعلا خود "-" را برمی‌گردانیم یا اگر showZero=false خالی؟ سازگاری مهم است.
31
- // اجازه دهید نمایش "-" را بدهیم.
32
- return "-"; // یا بر اساس showZero تصمیم بگیرید
33
- }
34
- if (rawValue === ".") {
35
- // نمایش "۰٫" یا فقط "٫" ؟ نمایش "۰٫" خواناتر است.
36
- const display = showZero ? "0." : ".";
37
- const localizedDisplay = (0, digitUtils_1.localizeDecimalSeparator)(display, locale);
38
- return (0, digitUtils_1.toLocalizedDigits)(localizedDisplay, locale);
39
- }
40
- if (rawValue === "-.") {
41
- const display = showZero ? "-0." : "-.";
42
- const localizedDisplay = (0, digitUtils_1.localizeDecimalSeparator)(display, locale);
43
- return (0, digitUtils_1.toLocalizedDigits)(localizedDisplay, locale);
44
- }
45
- // 3. اطمینان از معتبر بودن فرمت (اختیاری، چون rawValue باید معتبر باشد)
46
- // این regex نقطه انتهایی را هم قبول می‌کند
47
- if (!/^-?\d*(\.\d*)?$/.test(rawValue)) {
48
- console.warn(`Invalid rawValue passed to transformNumber: "${rawValue}"`);
10
+ let [integerPart, fractionalPart] = rawValue.split(".");
11
+ const hasTrailingDot = rawValue.endsWith(".");
12
+ const absIntPart = integerPart || (hasTrailingDot || fractionalPart !== undefined ? "0" : "");
13
+ if (absIntPart === "" && !hasTrailingDot && fractionalPart === undefined) {
49
14
  return showZero ? (0, digitUtils_1.toLocalizedDigits)("0", locale) : "";
50
15
  }
51
- // 4. بررسی صفر بودن مقدار (با دقت Decimal.js)
52
- let isEffectivelyZero = false;
53
- try {
54
- if (rawValue !== '-' && rawValue !== '.' && rawValue !== '-.') { // از Decimal با این مقادیر جلوگیری کن
55
- isEffectivelyZero = new decimal_js_1.default(rawValue).isZero();
56
- }
57
- }
58
- catch ( /* خطا در تبدیل به Decimal نادیده گرفته شود */_a) { /* خطا در تبدیل به Decimal نادیده گرفته شود */ }
59
- if (isEffectivelyZero && !showZero) {
60
- // اگر مقدار صفر است و نباید نمایش داده شود
61
- // مگر اینکه کاربر در حال تایپ نقطه بعد از صفر باشد (مثل '0.')
62
- if (!rawValue.endsWith('.')) {
63
- return "";
64
- }
65
- }
66
- // 5. جدا کردن قسمت صحیح و اعشاری
67
- // rawValue باید از قبل round شده باشد، پس نیازی به roundToDecimals مجدد نیست.
68
- let [integerPart, fractionalPart] = rawValue.split('.');
69
- // بررسی وجود نقطه انتهایی (وقتی fractionalPart بعد از split کردن undefined است ولی نقطه در رشته بود)
70
- const hasTrailingDot = rawValue.endsWith('.') && fractionalPart === undefined;
71
- // رسیدگی به حالت‌هایی مثل ".5" که integerPart خالی است
72
- if (integerPart === "" || integerPart === "-") {
73
- // اگر فقط "-" بود یا خالی، با صفر جایگزین کن (اگر قرار است چیزی نمایش داده شود)
74
- integerPart = rawValue.startsWith('-') ? "-0" : "0";
75
- }
76
- // 6. گروه‌بندی ارقام قسمت صحیح
77
- const sign = integerPart.startsWith('-') ? '-' : '';
78
- const absIntPart = integerPart.startsWith('-') ? integerPart.substring(1) : integerPart;
79
- const groupedAbsInt = (0, digitUtils_1.groupDigits)(absIntPart, separatorCount, separatorChar);
80
- const groupedInt = sign + groupedAbsInt;
81
- // 7. بازسازی رشته نهایی (با در نظر گرفتن نقطه انتهایی)
16
+ const groupedInt = (0, digitUtils_1.groupDigits)(absIntPart, separatorCount, separatorChar);
82
17
  let finalStr = groupedInt;
83
- if (fractionalPart !== undefined) { // اگر قسمت اعشاری وجود دارد
18
+ if (fractionalPart !== undefined) {
84
19
  finalStr = `${groupedInt}.${fractionalPart}`;
85
20
  }
86
- else if (hasTrailingDot) { // ****** این قسمت اصلاح شده ******
87
- // اگر قسمت اعشاری وجود ندارد ولی رشته اصلی با نقطه تمام شده بود
21
+ else if (hasTrailingDot) {
88
22
  finalStr = `${groupedInt}.`;
89
23
  }
90
- // 8. محلی سازی (ارقام و جداکننده اعشار)
91
- if (locale && locale !== 'en') {
92
- // اول جداکننده نقطه را به محلی تبدیل کن
24
+ if (locale !== "en") {
93
25
  finalStr = (0, digitUtils_1.localizeDecimalSeparator)(finalStr, locale);
94
- // سپس ارقام انگلیسی را به محلی تبدیل کن
95
26
  finalStr = (0, digitUtils_1.toLocalizedDigits)(finalStr, locale);
96
27
  }
97
28
  return finalStr;
@@ -1 +1 @@
1
- {"version":3,"file":"transformNumber.js","sourceRoot":"","sources":["../../src/utils/transformNumber.ts"],"names":[],"mappings":";;;;;;AAAA,2BAA2B;AAC3B,6CAQsB;AACtB,4DAAiC,CAAC,sBAAsB;AAUxD;;;;;;;GAOG;AACI,MAAM,eAAe,GAAG,CAC7B,QAA4B,EAAE,8CAA8C;AAC5E,OAAgC,EACxB,EAAE;IACV,MAAM,EACJ,cAAc,GAAG,CAAC,EAClB,aAAa,GAAG,GAAG,EACnB,MAAM,GAAG,IAAI,EACb,WAAW,EAAE,+DAA+D;IAC5E,QAAQ,GAAG,KAAK,GACjB,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,2CAA2C;IAC3C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACnE,4CAA4C;QAC5C,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,8BAAiB,EAAC,GAAG,EAAE,MAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,oDAAoD;IACpD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACnB,yEAAyE;QACzE,4EAA4E;QAC5E,iCAAiC;QACjC,OAAO,GAAG,CAAC,CAAC,mCAAmC;IACnD,CAAC;IACD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACnB,kDAAkD;QAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;QACtC,MAAM,gBAAgB,GAAG,IAAA,qCAAwB,EAAC,OAAO,EAAE,MAAa,CAAC,CAAC;QAC1E,OAAO,IAAA,8BAAiB,EAAC,gBAAgB,EAAE,MAAa,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACxC,MAAM,gBAAgB,GAAG,IAAA,qCAAwB,EAAC,OAAO,EAAE,MAAa,CAAC,CAAC;QAC1E,OAAO,IAAA,8BAAiB,EAAC,gBAAgB,EAAE,MAAa,CAAC,CAAC;IAC/D,CAAC;IAGD,wEAAwE;IACxE,8CAA8C;IAC9C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,gDAAgD,QAAQ,GAAG,CAAC,CAAC;QAC1E,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,8BAAiB,EAAC,GAAG,EAAE,MAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAED,8CAA8C;IAC7C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,CAAC;QACD,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC,sCAAsC;YACnG,iBAAiB,GAAG,IAAI,oBAAO,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACvD,CAAC;IACL,CAAC;IAAC,QAAQ,8CAA8C,IAAhD,CAAC,CAAC,8CAA8C,CAAC,CAAC;IAE1D,IAAI,iBAAiB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjC,2CAA2C;QAC3C,8DAA8D;QAC9D,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IAEF,iCAAiC;IACjC,iFAAiF;IACjF,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,qGAAqG;IACrG,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,cAAc,KAAK,SAAS,CAAC;IAE9E,uDAAuD;IACvD,IAAI,WAAW,KAAK,EAAE,IAAI,WAAW,KAAK,GAAG,EAAE,CAAC;QAC5C,gFAAgF;QAChF,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,CAAC;IAED,+BAA+B;IAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpD,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;IACxF,MAAM,aAAa,GAAG,IAAA,wBAAW,EAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,aAAa,CAAC;IAExC,uDAAuD;IACvD,IAAI,QAAQ,GAAG,UAAU,CAAC;IAC1B,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC,CAAC,4BAA4B;QAC9D,QAAQ,GAAG,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;IAC/C,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC,CAAO,mCAAmC;QACpE,gEAAgE;QAChE,QAAQ,GAAG,GAAG,UAAU,GAAG,CAAC;IAC9B,CAAC;IAED,wCAAwC;IACxC,IAAI,MAAM,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC9B,wCAAwC;QACxC,QAAQ,GAAG,IAAA,qCAAwB,EAAC,QAAQ,EAAE,MAAa,CAAC,CAAC;QAC7D,wCAAwC;QACxC,QAAQ,GAAG,IAAA,8BAAiB,EAAC,QAAQ,EAAE,MAAa,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAjGW,QAAA,eAAe,mBAiG1B"}
1
+ {"version":3,"file":"transformNumber.js","sourceRoot":"","sources":["../../src/utils/transformNumber.ts"],"names":[],"mappings":";;;AAAA,6CAIsB;AAUf,MAAM,eAAe,GAAG,CAC7B,QAA4B,EAC5B,OAAgC,EACxB,EAAE;IACV,MAAM,EACJ,cAAc,GAAG,CAAC,EAClB,aAAa,GAAG,GAAG,EACnB,MAAM,GAAG,IAAI,EACb,QAAQ,GAAG,KAAK,GACjB,GAAG,OAAO,IAAI,EAAE,CAAC;IAElB,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACnE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,8BAAiB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IAE9C,MAAM,UAAU,GACd,WAAW,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAE7E,IAAI,UAAU,KAAK,EAAE,IAAI,CAAC,cAAc,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACzE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAA,8BAAiB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,CAAC;IAED,MAAM,UAAU,GAAG,IAAA,wBAAW,EAAC,UAAU,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;IAE1E,IAAI,QAAQ,GAAG,UAAU,CAAC;IAC1B,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,QAAQ,GAAG,GAAG,UAAU,IAAI,cAAc,EAAE,CAAC;IAC/C,CAAC;SAAM,IAAI,cAAc,EAAE,CAAC;QAC1B,QAAQ,GAAG,GAAG,UAAU,GAAG,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,QAAQ,GAAG,IAAA,qCAAwB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtD,QAAQ,GAAG,IAAA,8BAAiB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAxCW,QAAA,eAAe,mBAwC1B"}
package/package.json CHANGED
@@ -1,52 +1,48 @@
1
- {
2
- "name": "persian-number-input",
3
- "version": "4.0.8",
4
- "description": "React component for Persian, Indic, or English localized number input with customizable digit grouping",
5
- "main": "dist/index.js",
6
- "module": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "typings": "dist/index.d.ts",
9
- "sideEffects": false,
10
- "files": [
11
- "dist"
12
- ],
13
- "scripts": {
14
- "build": "tsc",
15
- "prepublishOnly": "npm run build",
16
- "test": "jest"
17
- },
18
- "keywords": [
19
- "react",
20
- "persian",
21
- "indic",
22
- "number",
23
- "input",
24
- "localization",
25
- "digit-grouping"
26
- ],
27
- "author": "Your Name",
28
- "license": "MIT",
29
- "repository": {
30
- "type": "git",
31
- "url": "https://github.com/javadSharifi/persian-number-input"
32
- },
33
- "bugs": {
34
- "url": "https://github.com/javadSharifi/persian-number-input/issues"
35
- },
36
- "homepage": "https://github.com/javadSharifi/persian-number-input#readme",
37
- "peerDependencies": {
38
- "react": "^16.8 || ^17 || ^18 || ^19"
39
- },
40
- "devDependencies": {
41
- "@types/jest": "^29.5.14",
42
- "@types/prop-types": "^15.7.14",
43
- "@types/react": "^19.1.2",
44
- "@types/react-dom": "^19.1.2",
45
- "jest": "^29.7.0",
46
- "ts-jest": "^29.3.2",
47
- "typescript": "^5.8.3"
48
- },
49
- "dependencies": {
50
- "decimal.js": "^10.5.0"
51
- }
52
- }
1
+ {
2
+ "name": "persian-number-input",
3
+ "version": "4.0.10",
4
+ "description": "React component for Persian, Indic, or English localized number input with customizable digit grouping",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "typings": "dist/index.d.ts",
9
+ "sideEffects": false,
10
+ "files": [
11
+ "dist"
12
+ ],
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "prepublishOnly": "npm run build"
16
+ },
17
+ "keywords": [
18
+ "react",
19
+ "persian",
20
+ "indic",
21
+ "number",
22
+ "input",
23
+ "localization",
24
+ "digit-grouping"
25
+ ],
26
+ "author": "Your Name",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "https://github.com/javadSharifi/persian-number-input"
31
+ },
32
+ "bugs": {
33
+ "url": "https://github.com/javadSharifi/persian-number-input/issues"
34
+ },
35
+ "homepage": "https://github.com/javadSharifi/persian-number-input#readme",
36
+ "peerDependencies": {
37
+ "react": "^16.8 || ^17 || ^18 || ^19"
38
+ },
39
+ "devDependencies": {
40
+ "@types/prop-types": "^15.7.15",
41
+ "@types/react": "^19.2.7",
42
+ "@types/react-dom": "^19.2.3",
43
+ "typescript": "^5.9.3"
44
+ },
45
+ "dependencies": {
46
+ "decimal.js": "^10.6.0"
47
+ }
48
+ }