persian-number-input 4.0.7 → 4.0.9

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,20 +1,12 @@
1
- import React from 'react';
2
- import type { TransformNumberOptions } from '../utils/transformNumber';
3
- interface PersianNumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'value' | 'min' | 'max'>, // min/max از نوع input حذف شد چون خودمان هندل می‌کنیم
4
- Omit<TransformNumberOptions, 'maxDecimals'> {
5
- /** مقدار اولیه */
1
+ import React from "react";
2
+ import type { TransformNumberOptions } from "../utils/transformNumber";
3
+ interface PersianNumberInputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, "onChange" | "value" | "min" | "max">, Omit<TransformNumberOptions, "maxDecimals"> {
6
4
  initialValue?: number | string;
7
- /** تابعی که با تغییر مقدار خام (انگلیسی و بدون فرمت) فراخوانی می‌شود */
8
5
  onValueChange?: (value: string | undefined) => void;
9
- /** حداقل مقدار مجاز (اعشار پشتیبانی می‌شود) */
10
6
  min?: number;
11
- /** حداکثر مقدار مجاز (اعشار پشتیبانی می‌شود) */
12
7
  max?: number;
13
- /** حداکثر تعداد ارقام اعشار مجاز (undefined یعنی نامحدود) */
14
8
  maxDecimals?: number;
15
- /** کاراکتری که کاربر برای وارد کردن اعشار استفاده می‌کند (پیش‌فرض '.') */
16
- inputDecimalSeparator?: string;
17
9
  }
18
- declare const PersianNumberInput: React.FC<PersianNumberInputProps>;
10
+ declare const PersianNumberInput: React.ForwardRefExoticComponent<PersianNumberInputProps & React.RefAttributes<HTMLInputElement>>;
19
11
  export default PersianNumberInput;
20
12
  //# sourceMappingURL=PersianNumberInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PersianNumberInput.d.ts","sourceRoot":"","sources":["../../src/components/PersianNumberInput.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGvE,UAAU,uBACN,SAAQ,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,sDAAsD;AACvJ,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC;IAE3C,kBAAkB;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,wEAAwE;IACxE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,+CAA+C;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,QAAA,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAqDzD,CAAC;AAEF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"PersianNumberInput.d.ts","sourceRoot":"","sources":["../../src/components/PersianNumberInput.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAE/D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAEvE,UAAU,uBACR,SAAQ,IAAI,CACR,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAC3C,UAAU,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,CACrC,EACD,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC;IAC7C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,QAAA,MAAM,kBAAkB,kGA6CtB,CAAC;AAIH,eAAe,kBAAkB,CAAC"}
@@ -12,27 +12,11 @@ var __rest = (this && this.__rest) || function (s, e) {
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
14
  const jsx_runtime_1 = require("react/jsx-runtime");
15
+ const react_1 = require("react");
15
16
  const usePersianNumberInput_1 = require("../hooks/usePersianNumberInput");
16
- const PersianNumberInput = (_a) => {
17
- var {
18
- // جدا کردن آپشن های هوک و نمایش از بقیه پراپ های input
19
- initialValue, separatorCount, separatorChar, locale, showZero, onValueChange, min, max, maxDecimals, inputDecimalSeparator } = _a, // پراپ جدید
20
- // بقیه پراپ ها (مثل className, style, placeholder, id, disabled و ...) به input اصلی منتقل می شوند
21
- restInputProps = __rest(_a, ["initialValue", "separatorCount", "separatorChar", "locale", "showZero", "onValueChange", "min", "max", "maxDecimals", "inputDecimalSeparator"]);
22
- // اعتبارسنجی پراپ‌ها (اختیاری ولی خوب)
23
- if (maxDecimals !== undefined && maxDecimals < 0) {
24
- console.warn('maxDecimals باید غیرمنفی باشد');
25
- maxDecimals = 0;
26
- }
27
- if (min !== undefined && max !== undefined && min > max) {
28
- console.warn('min نباید بزرگ‌تر از max باشد');
29
- // شاید بهتر باشد یکی را نادیده گرفت یا خطا داد؟ فعلا فقط هشدار.
30
- }
31
- const { value: formattedValue, // مقدار فرمت شده برای نمایش
32
- onChange, // تابع onChange برای input
33
- // setValue, // اگر نیاز به تنظیم مقدار از بیرون دارید
34
- // rawValue, // مقدار خام انگلیسی بدون فرمت (اگر لازم دارید)
35
- } = (0, usePersianNumberInput_1.usePersianNumberInput)({
17
+ const PersianNumberInput = (0, react_1.forwardRef)((props, ref) => {
18
+ const { initialValue, separatorCount, separatorChar, locale, showZero, onValueChange, min, max, maxDecimals, onBlur: propsOnBlur } = props, rest = __rest(props, ["initialValue", "separatorCount", "separatorChar", "locale", "showZero", "onValueChange", "min", "max", "maxDecimals", "onBlur"]);
19
+ const { value, onChange, onBlur, inputRef } = (0, usePersianNumberInput_1.usePersianNumberInput)({
36
20
  initialValue,
37
21
  separatorCount,
38
22
  separatorChar,
@@ -42,12 +26,11 @@ const PersianNumberInput = (_a) => {
42
26
  min,
43
27
  max,
44
28
  maxDecimals,
45
- inputDecimalSeparator, // پاس دادن پراپ جدید به هوک
29
+ onBlur: propsOnBlur,
46
30
  });
47
- return ((0, jsx_runtime_1.jsx)("input", Object.assign({ type: "text" // استفاده از text به جای number برای کنترل کامل فرمت
48
- , inputMode: "decimal" // کیبورد مناسب در موبایل را نشان می‌دهد
49
- , dir: "ltr" // برای اعداد معمولا ltr بهتر است، حتی در متن فارسی
50
- }, restInputProps, { value: formattedValue, onChange: onChange })));
51
- };
31
+ (0, react_1.useImperativeHandle)(ref, () => inputRef.current);
32
+ return ((0, jsx_runtime_1.jsx)("input", Object.assign({}, rest, { ref: inputRef, type: "text", inputMode: "decimal", dir: "ltr", value: value, onChange: onChange, onBlur: onBlur })));
33
+ });
34
+ PersianNumberInput.displayName = "PersianNumberInput";
52
35
  exports.default = PersianNumberInput;
53
36
  //# sourceMappingURL=PersianNumberInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PersianNumberInput.js","sourceRoot":"","sources":["../../src/components/PersianNumberInput.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAEA,0EAAuE;AAuBvE,MAAM,kBAAkB,GAAsC,CAAC,EAc9D,EAAE,EAAE;QAd0D;IAC3D,uDAAuD;IACvD,YAAY,EACZ,cAAc,EACd,aAAa,EACb,MAAM,EACN,QAAQ,EACR,aAAa,EACb,GAAG,EACH,GAAG,EACH,WAAW,EACX,qBAAqB,OAGxB,EAH0B,YAAY;IACnC,mGAAmG;IAChG,cAAc,cAb0C,gJAc9D,CADoB;IAEjB,uCAAuC;IACvC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC9C,WAAW,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAC9C,gEAAgE;IACpE,CAAC;IAED,MAAM,EACF,KAAK,EAAE,cAAc,EAAE,4BAA4B;IACnD,QAAQ,EAAc,2BAA2B;IACjD,+DAA+D;IAC/D,qEAAqE;MACxE,GAAG,IAAA,6CAAqB,EAAC;QACtB,YAAY;QACZ,cAAc;QACd,aAAa;QACb,MAAM;QACN,QAAQ;QACR,aAAa;QACb,GAAG;QACH,GAAG;QACH,WAAW;QACX,qBAAqB,EAAE,4BAA4B;KACtD,CAAC,CAAC;IAEH,OAAO,CACH,gDACI,IAAI,EAAC,MAAM,CAAC,qDAAqD;UACjE,SAAS,EAAC,SAAS,CAAC,wCAAwC;UAC5D,GAAG,EAAC,KAAK,CAAC,mDAAmD;QACzD,cAAc,IAClB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,QAAQ,IACpB,CACL,CAAC;AACN,CAAC,CAAC;AAEF,kBAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"PersianNumberInput.js","sourceRoot":"","sources":["../../src/components/PersianNumberInput.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,iCAA+D;AAC/D,0EAAuE;AAgBvE,MAAM,kBAAkB,GAAG,IAAA,kBAAU,EAGnC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IACf,MAAM,EACJ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,MAAM,EACN,QAAQ,EACR,aAAa,EACb,GAAG,EACH,GAAG,EACH,WAAW,EACX,MAAM,EAAE,WAAW,KAEjB,KAAK,EADJ,IAAI,UACL,KAAK,EAZH,iIAYL,CAAQ,CAAC;IAEV,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,6CAAqB,EAAC;QAClE,YAAY;QACZ,cAAc;QACd,aAAa;QACb,MAAM;QACN,QAAQ;QACR,aAAa;QACb,GAAG;QACH,GAAG;QACH,WAAW;QACX,MAAM,EAAE,WAAW;KACpB,CAAC,CAAC;IAEH,IAAA,2BAAmB,EAAC,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAQ,CAAC,CAAC;IAElD,OAAO,CACL,kDACM,IAAI,IACR,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,SAAS,EAAC,SAAS,EACnB,GAAG,EAAC,KAAK,EACT,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,IACd,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,kBAAkB,CAAC,WAAW,GAAG,oBAAoB,CAAC;AAEtD,kBAAe,kBAAkB,CAAC"}
@@ -1,19 +1,20 @@
1
- import React from 'react';
2
- import { TransformNumberOptions } from '../utils/transformNumber';
3
- interface UsePersianNumberInputProps extends Omit<TransformNumberOptions, 'maxDecimals'> {
1
+ import React from "react";
2
+ import { TransformNumberOptions } from "../utils/transformNumber";
3
+ interface UsePersianNumberInputProps extends Omit<TransformNumberOptions, "maxDecimals"> {
4
4
  initialValue?: number | string;
5
5
  onValueChange?: (value: string | undefined) => void;
6
6
  min?: number;
7
7
  max?: number;
8
8
  maxDecimals?: number;
9
- inputDecimalSeparator?: string;
9
+ onBlur?: React.FocusEventHandler<HTMLInputElement>;
10
10
  }
11
- interface UsePersianNumberInputReturn {
11
+ export declare const usePersianNumberInput: (props?: UsePersianNumberInputProps) => {
12
12
  value: string;
13
13
  onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
14
- setValue: (newValue: number | string | undefined) => void;
14
+ onBlur: (event: React.FocusEvent<HTMLInputElement>) => void;
15
15
  rawValue: string | undefined;
16
- }
17
- export declare const usePersianNumberInput: ({ initialValue, separatorCount, separatorChar, locale, showZero, onValueChange, min, max, maxDecimals, inputDecimalSeparator, }?: UsePersianNumberInputProps) => UsePersianNumberInputReturn;
16
+ inputRef: React.RefObject<HTMLInputElement | null>;
17
+ setRawValue: (nextRaw: string) => void;
18
+ };
18
19
  export {};
19
20
  //# sourceMappingURL=usePersianNumberInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePersianNumberInput.d.ts","sourceRoot":"","sources":["../../src/hooks/usePersianNumberInput.ts"],"names":[],"mappings":"AACA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAEzE,OAAO,EAAmB,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGnF,UAAU,0BAA2B,SAAQ,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC;IACtF,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,UAAU,2BAA2B;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC/D,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1D,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B;AAED,eAAO,MAAM,qBAAqB,GAAI,kIAWnC,0BAA+B,KAAG,2BAoHpC,CAAC"}
1
+ {"version":3,"file":"usePersianNumberInput.d.ts","sourceRoot":"","sources":["../../src/hooks/usePersianNumberInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAyD,MAAM,OAAO,CAAC;AAE9E,OAAO,EAEL,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAGlC,UAAU,0BACR,SAAQ,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC;IACnD,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IACpD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;CACpD;AAED,eAAO,MAAM,qBAAqB,GAChC,QAAO,0BAA+B;;sBAoDb,KAAK,CAAC,WAAW,CAAC,gBAAgB,CAAC;oBA0BlD,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;;;2BA9ChC,MAAM;CAmFnB,CAAC"}
@@ -4,112 +4,90 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.usePersianNumberInput = void 0;
7
- // hooks/usePersianNumberInput.ts
8
7
  const react_1 = require("react");
9
8
  const decimal_js_1 = __importDefault(require("decimal.js"));
10
9
  const transformNumber_1 = require("../utils/transformNumber");
11
10
  const digitUtils_1 = require("../utils/digitUtils");
12
- const usePersianNumberInput = ({ initialValue, separatorCount = 3, separatorChar = ',', locale = 'fa', showZero = false, onValueChange, min, max, maxDecimals, inputDecimalSeparator = '.', } = {}) => {
13
- const getSanitizedAndRoundedValue = (0, react_1.useCallback)((val) => {
14
- if (val === null || val === undefined)
15
- return undefined;
16
- let sanitized = (0, digitUtils_1.sanitizeNumericInput)(String(val), inputDecimalSeparator);
17
- // مقادیر بینابینی '-', '.', '-.' را فعلا نگه دار
18
- if (sanitized === '-' || sanitized === '.' || sanitized === '-.') {
19
- // این مقادیر نباید به عنوان مقدار نهایی باقی بمانند اگر showZero=false
20
- // در انتها بررسی می‌شود
11
+ const usePersianNumberInput = (props = {}) => {
12
+ const { initialValue, separatorCount = 3, separatorChar = ",", locale = "fa", showZero = false, onValueChange, min, max, maxDecimals, onBlur: externalOnBlur, } = props;
13
+ const [rawValue, setRawValue] = (0, react_1.useState)(() => (0, digitUtils_1.sanitizeNumericInput)(initialValue, maxDecimals));
14
+ const inputRef = (0, react_1.useRef)(null);
15
+ const selectionRef = (0, react_1.useRef)(null);
16
+ (0, react_1.useLayoutEffect)(() => {
17
+ if (inputRef.current && selectionRef.current !== null) {
18
+ inputRef.current.setSelectionRange(selectionRef.current, selectionRef.current);
21
19
  }
22
- else if (sanitized) { // اگر رشته خالی یا فقط بینابینی نیست
20
+ });
21
+ const updateValue = (0, react_1.useCallback)((nextRaw) => {
22
+ if (nextRaw !== "" &&
23
+ nextRaw !== "-" &&
24
+ nextRaw !== "." &&
25
+ nextRaw !== "-.") {
23
26
  try {
24
- const numericValue = new decimal_js_1.default(sanitized);
25
- // ****** اصلاح مشکل ۲: Clamp کردن مقدار ******
26
- if (min !== undefined && numericValue.lt(min)) {
27
- console.warn(`Value ${sanitized} is less than min ${min}. Clamping to min.`);
28
- // مقدار را به min محدود کن: min را به رشته تبدیل، sanitize و round کن
29
- const minStr = (0, digitUtils_1.sanitizeNumericInput)(String(min), '.'); // min را با نقطه استاندارد sanitize کن
30
- sanitized = (0, digitUtils_1.roundToDecimals)(minStr, maxDecimals);
31
- }
32
- else if (max !== undefined && numericValue.gt(max)) {
33
- console.warn(`Value ${sanitized} exceeds max ${max}. Clamping to max.`);
34
- // مقدار را به max محدود کن: max را به رشته تبدیل، sanitize و round کن
35
- const maxStr = (0, digitUtils_1.sanitizeNumericInput)(String(max), '.'); // max را با نقطه استاندارد sanitize کن
36
- sanitized = (0, digitUtils_1.roundToDecimals)(maxStr, maxDecimals);
37
- }
38
- else {
39
- // اگر در محدوده بود، فقط مقدار اصلی sanitize شده را گرد کن
40
- sanitized = (0, digitUtils_1.roundToDecimals)(sanitized, maxDecimals);
41
- }
27
+ const num = new decimal_js_1.default(nextRaw);
28
+ if (max !== undefined && num.gt(max))
29
+ return;
42
30
  }
43
- catch (error) {
44
- // اگر در تبدیل به Decimal خطا رخ داد (مثلا برای مقادیر بینابینی نامعتبر)
45
- console.warn(`Error processing sanitized value: ${sanitized}`, error);
46
- return undefined; // مقدار نامعتبر است
31
+ catch (_a) {
32
+ return;
47
33
  }
48
34
  }
49
- else {
50
- // اگر sanitizeNumericInput رشته خالی برگرداند
51
- return undefined;
52
- }
53
- // مدیریت showZero برای مقدار نهایی (بعد از clamp و round)
54
- if (!showZero) {
55
- // اگر مقادیر بینابینی هستند، آنها را به undefined تبدیل کن
56
- if (sanitized === '-' || sanitized === '.' || sanitized === '-.') {
57
- return undefined;
58
- }
59
- // اگر مقدار عددی صفر است (و صرفا نقطه انتهایی ندارد)
35
+ setRawValue(nextRaw);
36
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(nextRaw);
37
+ }, [max, onValueChange]);
38
+ const onChange = (event) => {
39
+ const input = event.target;
40
+ const value = input.value;
41
+ const sanitized = (0, digitUtils_1.sanitizeNumericInput)(value, maxDecimals);
42
+ const prevFormatted = (0, transformNumber_1.transformNumber)(rawValue, {
43
+ separatorCount,
44
+ separatorChar,
45
+ locale,
46
+ showZero,
47
+ });
48
+ const nextFormatted = (0, transformNumber_1.transformNumber)(sanitized, {
49
+ separatorCount,
50
+ separatorChar,
51
+ locale,
52
+ showZero,
53
+ });
54
+ let cursor = input.selectionStart || 0;
55
+ const diff = nextFormatted.length - prevFormatted.length;
56
+ selectionRef.current = cursor + diff;
57
+ updateValue(sanitized);
58
+ };
59
+ const onBlur = (0, react_1.useCallback)((event) => {
60
+ if (rawValue &&
61
+ rawValue !== "-" &&
62
+ rawValue !== "." &&
63
+ rawValue !== "-.") {
60
64
  try {
61
- if (sanitized && new decimal_js_1.default(sanitized).isZero() && !sanitized.endsWith('.')) {
62
- return undefined;
65
+ const num = new decimal_js_1.default(rawValue);
66
+ if (min !== undefined && num.lt(min)) {
67
+ const minStr = String(min);
68
+ setRawValue(minStr);
69
+ onValueChange === null || onValueChange === void 0 ? void 0 : onValueChange(minStr);
63
70
  }
64
71
  }
65
- catch ( /* نادیده گرفتن خطا */_a) { /* نادیده گرفتن خطا */ }
66
- }
67
- // در نهایت، اگر رشته خالی شده، undefined برگردان
68
- return sanitized === '' ? undefined : sanitized;
69
- }, [inputDecimalSeparator, min, max, maxDecimals, showZero]);
70
- const [rawValue, setRawValue] = (0, react_1.useState)(() => getSanitizedAndRoundedValue(initialValue));
71
- (0, react_1.useEffect)(() => {
72
- // فقط اگر initialValue واقعا تغییر کرده، rawValue را آپدیت کن
73
- // این از بازنشانی ناخواسته جلوگیری می‌کند
74
- const newSanitized = getSanitizedAndRoundedValue(initialValue);
75
- // مقایسه دقیق لازم است
76
- if (newSanitized !== rawValue) {
77
- // setRawValue(newSanitized); // آیا این لازم است؟ شاید باعث رفتار ناخواسته شود
78
- }
79
- // TODO: بررسی دقیق رفتار useEffect با initialValue
80
- }, [initialValue]); // getSanitizedAndRoundedValue را از وابستگی حذف کردیم تا از لوپ جلوگیری شود
81
- const displayValue = (0, react_1.useMemo)(() => {
82
- const options = { separatorCount, separatorChar, locale, showZero, maxDecimals };
83
- // تابع transformNumber حالا باید بتواند rawValue های مختلف را به درستی نمایش دهد
84
- return (0, transformNumber_1.transformNumber)(rawValue, options);
85
- }, [rawValue, separatorCount, separatorChar, locale, showZero, maxDecimals]);
86
- const handleChange = (0, react_1.useCallback)((event) => {
87
- const inputValue = event.target.value;
88
- const newRawValue = getSanitizedAndRoundedValue(inputValue);
89
- // فقط اگر مقدار خام جدید با مقدار قبلی متفاوت است، آپدیت کن
90
- if (newRawValue !== rawValue) {
91
- setRawValue(newRawValue);
92
- if (onValueChange) {
93
- onValueChange(newRawValue);
94
- }
95
- }
96
- // نکته: اگر کاربر کاراکتری وارد کند که باعث clamp شدن شود (مثلا در max)،
97
- // newRawValue ممکن است با rawValue قبلی *متفاوت* باشد (برابر با max)،
98
- // ولی با چیزی که کاربر تایپ کرده متفاوت است. input باید آپدیت شود تا مقدار clamp شده را نشان دهد.
99
- // منطق فعلی این کار را انجام می‌دهد.
100
- }, [rawValue, getSanitizedAndRoundedValue, onValueChange] // getSanitizedAndRoundedValue اینجا لازم است
101
- );
102
- const handleSetValue = (0, react_1.useCallback)((newValue) => {
103
- const newRawValue = getSanitizedAndRoundedValue(newValue);
104
- if (newRawValue !== rawValue) {
105
- setRawValue(newRawValue);
106
- if (onValueChange) {
107
- onValueChange(newRawValue);
108
- }
72
+ catch (_a) { }
109
73
  }
110
- }, [rawValue, getSanitizedAndRoundedValue, onValueChange] // getSanitizedAndRoundedValue اینجا لازم است
111
- );
112
- return { value: displayValue, onChange: handleChange, setValue: handleSetValue, rawValue };
74
+ externalOnBlur === null || externalOnBlur === void 0 ? void 0 : externalOnBlur(event);
75
+ }, [rawValue, min, onValueChange, externalOnBlur]);
76
+ const displayValue = (0, transformNumber_1.transformNumber)(rawValue, {
77
+ separatorCount,
78
+ separatorChar,
79
+ locale,
80
+ showZero,
81
+ maxDecimals,
82
+ });
83
+ return {
84
+ value: displayValue,
85
+ onChange,
86
+ onBlur,
87
+ rawValue,
88
+ inputRef,
89
+ setRawValue: updateValue,
90
+ };
113
91
  };
114
92
  exports.usePersianNumberInput = usePersianNumberInput;
115
93
  //# sourceMappingURL=usePersianNumberInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"usePersianNumberInput.js","sourceRoot":"","sources":["../../src/hooks/usePersianNumberInput.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usePersianNumberInput.js","sourceRoot":"","sources":["../../src/hooks/usePersianNumberInput.ts"],"names":[],"mappings":"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"}
@@ -1,36 +1,10 @@
1
- /**
2
- * نقشه ارقام محلی برای زبان‌های مختلف.
3
- */
4
- export declare const digitsMap: {
5
- [key: string]: ReadonlyArray<string>;
6
- };
7
- /**
8
- * نقشه جداکننده اعشار برای زبان‌های مختلف (برای نمایش خروجی).
9
- */
10
- export declare const decimalSeparatorMap: {
11
- [key: string]: string;
12
- };
1
+ export declare const digitsMap: Record<string, string[]>;
2
+ export declare const decimalSeparatorMap: Record<string, string>;
3
+ export declare const toEnglishDigits: (str: string) => string;
13
4
  export declare const convertToEnglishDigits: (str: string) => string;
14
- export declare const toLocalizedDigits: (numStr: string, locale: keyof typeof digitsMap) => string;
15
- export declare const localizeDecimalSeparator: (numStr: string, locale: keyof typeof decimalSeparatorMap) => string;
5
+ export declare const toLocalizedDigits: (numStr: string, locale: string) => string;
6
+ export declare const localizeDecimalSeparator: (numStr: string, locale: string) => string;
16
7
  export declare const groupDigits: (numStr: string, separatorCount: number, separatorChar?: string) => string;
17
- /**
18
- * پاک‌سازی ورودی عددی.
19
- * ارقام محلی و جداکننده اعشار محلی (٫) و جداکننده دلخواه ورودی را به انگلیسی تبدیل می‌کند.
20
- * کاراکترهای غیرمجاز را حذف می‌کند.
21
- * فقط یک نقطه اعشار و یک علامت منفی در ابتدا را مجاز می‌داند.
22
- *
23
- * @param value رشته ورودی
24
- * @param inputDecimalSeparator کاراکتر جداکننده اعشار که کاربر در ورودی استفاده می‌کند (پیش‌فرض '.')
25
- * @returns رشته پاک‌شده با ارقام انگلیسی و نقطه استاندارد (.). می‌تواند شامل '-' یا '.' یا '-.' باشد.
26
- */
27
- export declare const sanitizeNumericInput: (value: string | number | null | undefined, inputDecimalSeparator?: string) => string;
28
- /**
29
- * گرد کردن یا محدود کردن تعداد ارقام اعشار یک رشته عددی (انگلیسی).
30
- * مهم: این تابع نقطه انتهایی را حفظ می‌کند اگر ورودی با نقطه تمام شود و maxDecimals صفر نباشد.
31
- * @param value رشته عددی با ارقام انگلیسی و نقطه استاندارد.
32
- * @param maxDecimals حداکثر تعداد اعشار مجاز (undefined یعنی بدون محدودیت).
33
- * @returns رشته گرد شده یا محدود شده.
34
- */
8
+ export declare const sanitizeNumericInput: (value: string | number | null | undefined, maxDecimals?: number) => string;
35
9
  export declare const roundToDecimals: (value: string, maxDecimals?: number) => string;
36
10
  //# sourceMappingURL=digitUtils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"digitUtils.d.ts","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;CAI7D,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAGxD,CAAC;AAYF,eAAO,MAAM,sBAAsB,GAAI,KAAK,MAAM,KAAG,MAGpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,OAAO,SAAS,KAAG,MAIlF,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,OAAO,mBAAmB,KAAG,MAInG,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,EACd,gBAAgB,MAAM,EACtB,sBAAmB,KAClB,MAOF,CAAC;AAGF;;;;;;;;;GASG;AACH,eAAO,MAAM,oBAAoB,GAC7B,OAAO,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,wBAAuB,MAAY,KACpC,MA2FF,CAAC;AAGF;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,EAAE,cAAc,MAAM,KAAG,MAkCrE,CAAC"}
1
+ {"version":3,"file":"digitUtils.d.ts","sourceRoot":"","sources":["../../src/utils/digitUtils.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAG9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAGtD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MAK7C,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAPE,MAAM,KAAG,MAOO,CAAC;AAEtD,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,MAIlE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,QAAQ,MAAM,KACb,MAKF,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,EACd,gBAAgB,MAAM,EACtB,sBAAmB,KAClB,MAIF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,cAAc,MAAM,KACnB,MA+BF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,OAAO,MAAM,EACb,cAAc,MAAM,KACnB,MAIF,CAAC"}