persian-number-input 4.3.4 → 4.5.0

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.
Files changed (45) hide show
  1. package/README.fa.md +190 -240
  2. package/README.md +152 -230
  3. package/dist/components/PersianNumberInput.d.ts +1 -1
  4. package/dist/components/PersianNumberInput.d.ts.map +1 -1
  5. package/dist/components/PersianNumberInput.js +22 -17
  6. package/dist/components/PersianNumberInput.js.map +1 -1
  7. package/dist/components/PersianNumberInput.test.js +24 -6
  8. package/dist/components/PersianNumberInput.test.js.map +1 -1
  9. package/dist/hooks/useCursorManager.d.ts +4 -0
  10. package/dist/hooks/useCursorManager.d.ts.map +1 -0
  11. package/dist/hooks/useCursorManager.js +19 -0
  12. package/dist/hooks/useCursorManager.js.map +1 -0
  13. package/dist/hooks/useNumberFormatter.d.ts +18 -0
  14. package/dist/hooks/useNumberFormatter.d.ts.map +1 -0
  15. package/dist/hooks/useNumberFormatter.js +29 -0
  16. package/dist/hooks/useNumberFormatter.js.map +1 -0
  17. package/dist/hooks/useNumberValidation.d.ts +11 -0
  18. package/dist/hooks/useNumberValidation.d.ts.map +1 -0
  19. package/dist/hooks/useNumberValidation.js +22 -0
  20. package/dist/hooks/useNumberValidation.js.map +1 -0
  21. package/dist/hooks/useNumericInputEvents.d.ts +18 -0
  22. package/dist/hooks/useNumericInputEvents.d.ts.map +1 -0
  23. package/dist/hooks/useNumericInputEvents.js +39 -0
  24. package/dist/hooks/useNumericInputEvents.js.map +1 -0
  25. package/dist/hooks/usePersianNumberInput.d.ts +7 -2
  26. package/dist/hooks/usePersianNumberInput.d.ts.map +1 -1
  27. package/dist/hooks/usePersianNumberInput.js +66 -63
  28. package/dist/hooks/usePersianNumberInput.js.map +1 -1
  29. package/dist/test-utils.d.ts +7 -0
  30. package/dist/test-utils.d.ts.map +1 -0
  31. package/dist/test-utils.js +27 -0
  32. package/dist/test-utils.js.map +1 -0
  33. package/dist/utils/digitUtils.d.ts +4 -0
  34. package/dist/utils/digitUtils.d.ts.map +1 -1
  35. package/dist/utils/digitUtils.js +44 -17
  36. package/dist/utils/digitUtils.js.map +1 -1
  37. package/dist/utils/keyFilter.d.ts +16 -0
  38. package/dist/utils/keyFilter.d.ts.map +1 -0
  39. package/dist/utils/keyFilter.js +31 -0
  40. package/dist/utils/keyFilter.js.map +1 -0
  41. package/dist/utils/validation.d.ts +22 -0
  42. package/dist/utils/validation.d.ts.map +1 -0
  43. package/dist/utils/validation.js +85 -0
  44. package/dist/utils/validation.js.map +1 -0
  45. package/package.json +15 -4
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createChangeEvent = createChangeEvent;
4
+ exports.createFocusEvent = createFocusEvent;
5
+ function createChangeEvent(overrides = {}) {
6
+ const value = overrides.value ?? "";
7
+ const target = {
8
+ value,
9
+ selectionStart: overrides.selectionStart ?? value.length,
10
+ };
11
+ return {
12
+ target,
13
+ currentTarget: target,
14
+ bubbles: true,
15
+ cancelable: true,
16
+ };
17
+ }
18
+ function createFocusEvent() {
19
+ const target = {};
20
+ return {
21
+ target,
22
+ currentTarget: target,
23
+ bubbles: true,
24
+ cancelable: true,
25
+ };
26
+ }
27
+ //# sourceMappingURL=test-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":";;AAEA,8CAeC;AAED,4CAQC;AAzBD,SAAgB,iBAAiB,CAC/B,YAAyD,EAAE;IAE3D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG;QACb,KAAK;QACL,cAAc,EAAE,SAAS,CAAC,cAAc,IAAI,KAAK,CAAC,MAAM;KACrC,CAAC;IAEtB,OAAO;QACL,MAAM;QACN,aAAa,EAAE,MAAM;QACrB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;KAC2B,CAAC;AAChD,CAAC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,MAAM,GAAG,EAAsB,CAAC;IACtC,OAAO;QACL,MAAM;QACN,aAAa,EAAE,MAAM;QACrB,OAAO,EAAE,IAAI;QACb,UAAU,EAAE,IAAI;KAC0B,CAAC;AAC/C,CAAC"}
@@ -5,6 +5,10 @@ export declare const convertToEnglishDigits: (str: string, decimalChar?: string)
5
5
  export declare const toLocalizedDigits: (numStr: string, locale: string) => string;
6
6
  export declare const localizeDecimalSeparator: (numStr: string, locale: string, customDecimalChar?: string) => string;
7
7
  export declare const groupDigits: (numStr: string, separatorCount: number, separatorChar?: string) => string;
8
+ export declare const stripNonNumeric: (str: string) => string;
9
+ export declare const normalizeDecimals: (str: string) => string;
10
+ export declare const stripLeadingZeros: (str: string) => string;
11
+ export declare const applyDecimalPrecision: (str: string, maxDecimals?: number) => string;
8
12
  export declare const sanitizeNumericInput: (value: string | number | null | undefined, maxDecimals?: number, decimalChar?: string) => string;
9
13
  export declare const roundToDecimals: (value: string, maxDecimals?: number) => string;
10
14
  //# sourceMappingURL=digitUtils.d.ts.map
@@ -1 +1 @@
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,EAAE,cAAc,MAAM,KAAG,MAWnE,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAbE,MAAM,gBAAgB,MAAM,KAAG,MAaf,CAAC;AAEtD,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,MAIlE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,oBAAoB,MAAM,KACzB,MAIF,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,EACpB,cAAc,MAAM,KACnB,MA0BF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,OAAO,MAAM,EACb,cAAc,MAAM,KACnB,MAIF,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,EAAE,cAAc,MAAM,KAAG,MAWnE,CAAC;AAEF,eAAO,MAAM,sBAAsB,QAbE,MAAM,gBAAgB,MAAM,KAAG,MAaf,CAAC;AAEtD,eAAO,MAAM,iBAAiB,GAAI,QAAQ,MAAM,EAAE,QAAQ,MAAM,KAAG,MAIlE,CAAC;AAEF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,QAAQ,MAAM,EACd,oBAAoB,MAAM,KACzB,MAIF,CAAC;AAIF,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,EACd,gBAAgB,MAAM,EACtB,sBAAmB,KAClB,MASF,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,KAAK,MAAM,KAAG,MACjB,CAAC;AAE9B,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG,MAO/C,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,KAAG,MACV,CAAC;AAEvC,eAAO,MAAM,qBAAqB,GAChC,KAAK,MAAM,EACX,cAAc,MAAM,KACnB,MAMF,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,EACzC,cAAc,MAAM,EACpB,cAAc,MAAM,KACnB,MA2BF,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,OAAO,MAAM,EACb,cAAc,MAAM,KACnB,MAIF,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.roundToDecimals = exports.sanitizeNumericInput = exports.groupDigits = exports.localizeDecimalSeparator = exports.toLocalizedDigits = exports.convertToEnglishDigits = exports.toEnglishDigits = exports.decimalSeparatorMap = exports.digitsMap = void 0;
3
+ exports.roundToDecimals = exports.sanitizeNumericInput = exports.applyDecimalPrecision = exports.stripLeadingZeros = exports.normalizeDecimals = exports.stripNonNumeric = exports.groupDigits = exports.localizeDecimalSeparator = exports.toLocalizedDigits = exports.convertToEnglishDigits = exports.toEnglishDigits = exports.decimalSeparatorMap = exports.digitsMap = void 0;
4
4
  const LOCAL_DIGITS_MAP = {
5
5
  "۰": "0",
6
6
  "۱": "1",
@@ -36,7 +36,7 @@ exports.decimalSeparatorMap = {
36
36
  const toEnglishDigits = (str, decimalChar) => {
37
37
  let result = str.replace(/[۰-۹٠-٩٫\/]/g, (match) => LOCAL_DIGITS_MAP[match] || match);
38
38
  if (decimalChar && decimalChar !== "." && result.includes(decimalChar)) {
39
- result = result.split(decimalChar).join(".");
39
+ result = result.replaceAll(decimalChar, ".");
40
40
  }
41
41
  return result;
42
42
  };
@@ -55,32 +55,59 @@ const localizeDecimalSeparator = (numStr, locale, customDecimalChar) => {
55
55
  return numStr.replace(".", separator);
56
56
  };
57
57
  exports.localizeDecimalSeparator = localizeDecimalSeparator;
58
+ const groupDigitsRegexCache = new Map();
58
59
  const groupDigits = (numStr, separatorCount, separatorChar = ",") => {
59
60
  if (!numStr || separatorCount <= 0)
60
61
  return numStr;
61
- const regex = new RegExp(`\\B(?=(\\d{${separatorCount}})+(?!\\d))`, "g");
62
+ const cacheKey = `${separatorCount}:${separatorChar}`;
63
+ let regex = groupDigitsRegexCache.get(cacheKey);
64
+ if (!regex) {
65
+ regex = new RegExp(`\\B(?=(\\d{${separatorCount}})+(?!\\d))`, "g");
66
+ groupDigitsRegexCache.set(cacheKey, regex);
67
+ }
62
68
  return numStr.replace(regex, separatorChar);
63
69
  };
64
70
  exports.groupDigits = groupDigits;
71
+ const stripNonNumeric = (str) => str.replace(/[^0-9.]/g, "");
72
+ exports.stripNonNumeric = stripNonNumeric;
73
+ const normalizeDecimals = (str) => {
74
+ const firstDot = str.indexOf(".");
75
+ if (firstDot !== -1) {
76
+ const secondDot = str.indexOf(".", firstDot + 1);
77
+ if (secondDot !== -1)
78
+ str = str.slice(0, secondDot);
79
+ }
80
+ return str;
81
+ };
82
+ exports.normalizeDecimals = normalizeDecimals;
83
+ const stripLeadingZeros = (str) => str.replace(/^(-?)0+(?!$|\.)/, "$1");
84
+ exports.stripLeadingZeros = stripLeadingZeros;
85
+ const applyDecimalPrecision = (str, maxDecimals) => {
86
+ if (!str.includes(".") || maxDecimals === undefined)
87
+ return str;
88
+ const [intPart, fracPart] = str.split(".");
89
+ const truncatedFrac = maxDecimals > 0 ? fracPart.slice(0, maxDecimals) : "";
90
+ return truncatedFrac ? `${intPart}.${truncatedFrac}` : intPart;
91
+ };
92
+ exports.applyDecimalPrecision = applyDecimalPrecision;
65
93
  const sanitizeNumericInput = (value, maxDecimals, decimalChar) => {
66
94
  if (value === null || value === undefined)
67
95
  return "";
68
96
  let str = (0, exports.toEnglishDigits)(String(value), decimalChar);
69
- str = str.replace(/[^0-9.]/g, "");
70
- const parts = str.split(".");
71
- if (parts.length > 2) {
72
- str = parts[0] + "." + parts.slice(1).join("");
97
+ const isNegative = str.startsWith("-");
98
+ str = (0, exports.stripNonNumeric)(str);
99
+ str = (0, exports.normalizeDecimals)(str);
100
+ if (isNegative && str) {
101
+ str = "-" + str;
102
+ }
103
+ str = (0, exports.stripLeadingZeros)(str);
104
+ if (str.includes(".") && maxDecimals !== undefined) {
105
+ str = (0, exports.applyDecimalPrecision)(str, maxDecimals);
73
106
  }
74
- str = str.replace(/^0+(?!$|\.)/, "");
75
- if (str.includes(".")) {
76
- const [intPart, fracPart] = str.split(".");
77
- if (maxDecimals !== undefined) {
78
- const truncatedFrac = maxDecimals > 0 ? fracPart.slice(0, maxDecimals) : "";
79
- str = truncatedFrac ? `${intPart}.${truncatedFrac}` : intPart;
80
- if (maxDecimals > 0 && String(value).endsWith(decimalChar || ".")) {
81
- str = str.includes(".") ? str : `${str}.`;
82
- }
83
- }
107
+ if (maxDecimals !== undefined &&
108
+ maxDecimals > 0 &&
109
+ String(value).endsWith(decimalChar || ".")) {
110
+ str = str.includes(".") ? str : `${str}.`;
84
111
  }
85
112
  return str;
86
113
  };
@@ -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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"}
@@ -0,0 +1,16 @@
1
+ export interface KeyFilterEvent {
2
+ key: string;
3
+ ctrlKey: boolean;
4
+ metaKey: boolean;
5
+ altKey: boolean;
6
+ }
7
+ export interface KeyFilterRule {
8
+ pattern?: RegExp;
9
+ key?: string;
10
+ description?: string;
11
+ }
12
+ export type KeyFilter = (e: KeyFilterEvent) => boolean;
13
+ export declare const createKeyFilter: (rules: KeyFilterRule[]) => KeyFilter;
14
+ export declare const DEFAULT_NUMERIC_RULES: KeyFilterRule[];
15
+ export declare const createNumericKeyFilter: (extraRules?: KeyFilterRule[]) => KeyFilter;
16
+ //# sourceMappingURL=keyFilter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyFilter.d.ts","sourceRoot":"","sources":["../../src/utils/keyFilter.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,EAAE,cAAc,KAAK,OAAO,CAAC;AAEvD,eAAO,MAAM,eAAe,GAAI,OAAO,aAAa,EAAE,KAAG,SASxD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,aAAa,EAUhD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GACjC,aAAY,aAAa,EAAO,KAC/B,SACyD,CAAC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createNumericKeyFilter = exports.DEFAULT_NUMERIC_RULES = exports.createKeyFilter = void 0;
4
+ const createKeyFilter = (rules) => {
5
+ return (e) => {
6
+ if (e.ctrlKey || e.metaKey || e.altKey)
7
+ return true;
8
+ for (const rule of rules) {
9
+ if (rule.key && e.key === rule.key)
10
+ return true;
11
+ if (rule.pattern?.test(e.key))
12
+ return true;
13
+ }
14
+ return false;
15
+ };
16
+ };
17
+ exports.createKeyFilter = createKeyFilter;
18
+ exports.DEFAULT_NUMERIC_RULES = [
19
+ { key: "Backspace" },
20
+ { key: "Delete" },
21
+ { key: "Tab" },
22
+ { key: "Enter" },
23
+ { key: "Home" },
24
+ { key: "End" },
25
+ { pattern: /^Arrow/ },
26
+ { pattern: /^[0-9.\-]$/ },
27
+ { pattern: /^[\u0660-\u0669\u06F0-\u06F9]$/ },
28
+ ];
29
+ const createNumericKeyFilter = (extraRules = []) => (0, exports.createKeyFilter)([...exports.DEFAULT_NUMERIC_RULES, ...extraRules]);
30
+ exports.createNumericKeyFilter = createNumericKeyFilter;
31
+ //# sourceMappingURL=keyFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyFilter.js","sourceRoot":"","sources":["../../src/utils/keyFilter.ts"],"names":[],"mappings":";;;AAeO,MAAM,eAAe,GAAG,CAAC,KAAsB,EAAa,EAAE;IACnE,OAAO,CAAC,CAAC,EAAE,EAAE;QACX,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QACpD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YAChD,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,eAAe,mBAS1B;AAEW,QAAA,qBAAqB,GAAoB;IACpD,EAAE,GAAG,EAAE,WAAW,EAAE;IACpB,EAAE,GAAG,EAAE,QAAQ,EAAE;IACjB,EAAE,GAAG,EAAE,KAAK,EAAE;IACd,EAAE,GAAG,EAAE,OAAO,EAAE;IAChB,EAAE,GAAG,EAAE,MAAM,EAAE;IACf,EAAE,GAAG,EAAE,KAAK,EAAE;IACd,EAAE,OAAO,EAAE,QAAQ,EAAE;IACrB,EAAE,OAAO,EAAE,YAAY,EAAE;IACzB,EAAE,OAAO,EAAE,gCAAgC,EAAE;CAC9C,CAAC;AAEK,MAAM,sBAAsB,GAAG,CACpC,aAA8B,EAAE,EACrB,EAAE,CACb,IAAA,uBAAe,EAAC,CAAC,GAAG,6BAAqB,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AAHhD,QAAA,sBAAsB,0BAG0B"}
@@ -0,0 +1,22 @@
1
+ export declare enum ValidationTiming {
2
+ OnChange = "onChange",
3
+ OnBlur = "onBlur"
4
+ }
5
+ export interface ValidationContext {
6
+ min?: number;
7
+ max?: number;
8
+ }
9
+ export interface ValidationResult {
10
+ valid: boolean;
11
+ correctedValue?: string;
12
+ }
13
+ export interface ValidationRule {
14
+ timing: ValidationTiming;
15
+ validate: (rawValue: string, context: ValidationContext) => ValidationResult;
16
+ }
17
+ export declare const createMaxRule: (max?: number, timing?: ValidationTiming) => ValidationRule;
18
+ export declare const createMinRule: (min?: number) => ValidationRule;
19
+ export declare const createValidationEngine: (rules: ValidationRule[]) => {
20
+ validate: (timing: ValidationTiming, rawValue: string) => ValidationResult;
21
+ };
22
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA,oBAAY,gBAAgB;IAC1B,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,CACR,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,KACvB,gBAAgB,CAAC;CACvB;AAqCD,eAAO,MAAM,aAAa,GACxB,MAAM,MAAM,EACZ,SAAQ,gBAA4C,KACnD,cAeD,CAAC;AAEH,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,cAY3C,CAAC;AAEH,eAAO,MAAM,sBAAsB,GAAI,OAAO,cAAc,EAAE;uBACzC,gBAAgB,YAAY,MAAM,KAAG,gBAAgB;CASxE,CAAC"}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createValidationEngine = exports.createMinRule = exports.createMaxRule = exports.ValidationTiming = void 0;
4
+ var ValidationTiming;
5
+ (function (ValidationTiming) {
6
+ ValidationTiming["OnChange"] = "onChange";
7
+ ValidationTiming["OnBlur"] = "onBlur";
8
+ })(ValidationTiming || (exports.ValidationTiming = ValidationTiming = {}));
9
+ function compareNumericStrings(a, b) {
10
+ const aNeg = a.startsWith("-");
11
+ const bNeg = b.startsWith("-");
12
+ if (aNeg && !bNeg)
13
+ return -1;
14
+ if (!aNeg && bNeg)
15
+ return 1;
16
+ const absA = aNeg ? a.slice(1) : a;
17
+ const absB = bNeg ? b.slice(1) : b;
18
+ const [aInt = "0", aFrac = ""] = absA.split(".");
19
+ const [bInt = "0", bFrac = ""] = absB.split(".");
20
+ if (aInt.length !== bInt.length) {
21
+ const cmp = aInt.length < bInt.length ? -1 : 1;
22
+ return aNeg ? -cmp : cmp;
23
+ }
24
+ for (let i = 0; i < aInt.length; i++) {
25
+ if (aInt[i] < bInt[i])
26
+ return aNeg ? 1 : -1;
27
+ if (aInt[i] > bInt[i])
28
+ return aNeg ? -1 : 1;
29
+ }
30
+ const maxFracLen = Math.max(aFrac.length, bFrac.length);
31
+ const paddedA = aFrac.padEnd(maxFracLen, "0");
32
+ const paddedB = bFrac.padEnd(maxFracLen, "0");
33
+ for (let i = 0; i < maxFracLen; i++) {
34
+ if (paddedA[i] < paddedB[i])
35
+ return aNeg ? 1 : -1;
36
+ if (paddedA[i] > paddedB[i])
37
+ return aNeg ? -1 : 1;
38
+ }
39
+ return 0;
40
+ }
41
+ const createMaxRule = (max, timing = ValidationTiming.OnChange) => ({
42
+ timing,
43
+ validate: (rawValue) => {
44
+ if (rawValue === "" || rawValue === "." || max === undefined) {
45
+ return { valid: true };
46
+ }
47
+ const maxStr = String(max);
48
+ if (compareNumericStrings(rawValue, maxStr) > 0) {
49
+ if (timing === ValidationTiming.OnBlur) {
50
+ return { valid: false, correctedValue: maxStr };
51
+ }
52
+ return { valid: false };
53
+ }
54
+ return { valid: true };
55
+ },
56
+ });
57
+ exports.createMaxRule = createMaxRule;
58
+ const createMinRule = (min) => ({
59
+ timing: ValidationTiming.OnBlur,
60
+ validate: (rawValue) => {
61
+ if (!rawValue || rawValue === "." || min === undefined) {
62
+ return { valid: true };
63
+ }
64
+ const minStr = String(min);
65
+ if (compareNumericStrings(rawValue, minStr) < 0) {
66
+ return { valid: false, correctedValue: minStr };
67
+ }
68
+ return { valid: true };
69
+ },
70
+ });
71
+ exports.createMinRule = createMinRule;
72
+ const createValidationEngine = (rules) => ({
73
+ validate: (timing, rawValue) => {
74
+ for (const rule of rules) {
75
+ if (rule.timing === timing) {
76
+ const result = rule.validate(rawValue, {});
77
+ if (!result.valid)
78
+ return result;
79
+ }
80
+ }
81
+ return { valid: true };
82
+ },
83
+ });
84
+ exports.createValidationEngine = createValidationEngine;
85
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,11 +1,24 @@
1
1
  {
2
2
  "name": "persian-number-input",
3
- "version": "4.3.4",
3
+ "version": "4.5.0",
4
4
  "description": "React component for Persian, Indic, or English localized number input with customizable digit grouping",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "typings": "dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": {
12
+ "types": "./dist/index.d.ts",
13
+ "default": "./dist/index.js"
14
+ },
15
+ "require": {
16
+ "types": "./dist/index.d.ts",
17
+ "default": "./dist/index.js"
18
+ }
19
+ },
20
+ "./package.json": "./package.json"
21
+ },
9
22
  "sideEffects": false,
10
23
  "files": [
11
24
  "dist"
@@ -48,7 +61,5 @@
48
61
  "typescript": "^5.9.3",
49
62
  "vitest": "^4.1.6"
50
63
  },
51
- "dependencies": {
52
- "decimal.js": "^10.6.0"
53
- }
64
+ "dependencies": {}
54
65
  }