raqam 0.3.2 → 0.4.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 (88) hide show
  1. package/README.md +25 -9
  2. package/dist/chunk-4GNLVHAM.js +2 -0
  3. package/dist/chunk-4GNLVHAM.js.map +1 -0
  4. package/dist/chunk-5LYK54TH.js +2 -0
  5. package/dist/chunk-5LYK54TH.js.map +1 -0
  6. package/dist/chunk-C5MK5U3F.js +2 -0
  7. package/dist/chunk-C5MK5U3F.js.map +1 -0
  8. package/dist/chunk-CAHEQQ5J.cjs +2 -0
  9. package/dist/chunk-CAHEQQ5J.cjs.map +1 -0
  10. package/dist/chunk-G7ACJUKH.js +2 -0
  11. package/dist/chunk-G7ACJUKH.js.map +1 -0
  12. package/dist/chunk-GAKIDRGS.cjs +2 -0
  13. package/dist/chunk-GAKIDRGS.cjs.map +1 -0
  14. package/dist/chunk-I3H3UMZD.cjs +2 -0
  15. package/dist/chunk-I3H3UMZD.cjs.map +1 -0
  16. package/dist/chunk-LD6OTXXT.js +2 -0
  17. package/dist/chunk-LD6OTXXT.js.map +1 -0
  18. package/dist/chunk-MNYIBO2M.cjs +2 -0
  19. package/dist/chunk-MNYIBO2M.cjs.map +1 -0
  20. package/dist/chunk-MOES3T6R.js +2 -0
  21. package/dist/chunk-MOES3T6R.js.map +1 -0
  22. package/dist/chunk-MUO4XNLX.cjs +2 -0
  23. package/dist/chunk-MUO4XNLX.cjs.map +1 -0
  24. package/dist/chunk-P6AWGQPY.js +2 -0
  25. package/dist/chunk-P6AWGQPY.js.map +1 -0
  26. package/dist/chunk-TFY7JMI6.js +2 -0
  27. package/dist/chunk-TFY7JMI6.js.map +1 -0
  28. package/dist/chunk-UYZYSVT5.cjs +2 -0
  29. package/dist/chunk-UYZYSVT5.cjs.map +1 -0
  30. package/dist/chunk-XJZHLJ2C.cjs +2 -0
  31. package/dist/chunk-XJZHLJ2C.cjs.map +1 -0
  32. package/dist/chunk-YUKLLK4G.cjs +2 -0
  33. package/dist/chunk-YUKLLK4G.cjs.map +1 -0
  34. package/dist/chunk-ZKLZ7UKZ.cjs +2 -0
  35. package/dist/chunk-ZKLZ7UKZ.cjs.map +1 -0
  36. package/dist/chunk-ZWDI6EPF.js +2 -0
  37. package/dist/chunk-ZWDI6EPF.js.map +1 -0
  38. package/dist/core.cjs +1 -1
  39. package/dist/core.cjs.map +1 -1
  40. package/dist/core.d.cts +68 -295
  41. package/dist/core.d.ts +68 -295
  42. package/dist/core.js +1 -1
  43. package/dist/core.js.map +1 -1
  44. package/dist/index.cjs +1 -1
  45. package/dist/index.cjs.map +1 -1
  46. package/dist/index.d.cts +12 -133
  47. package/dist/index.d.ts +12 -133
  48. package/dist/index.js +1 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/locales/ar.cjs +1 -35
  51. package/dist/locales/ar.cjs.map +1 -1
  52. package/dist/locales/ar.js +1 -3
  53. package/dist/locales/bn.cjs +1 -35
  54. package/dist/locales/bn.cjs.map +1 -1
  55. package/dist/locales/bn.js +1 -3
  56. package/dist/locales/fa.cjs +1 -37
  57. package/dist/locales/fa.cjs.map +1 -1
  58. package/dist/locales/fa.js +1 -3
  59. package/dist/locales/hi.cjs +1 -35
  60. package/dist/locales/hi.cjs.map +1 -1
  61. package/dist/locales/hi.js +1 -3
  62. package/dist/locales/index.cjs +1 -77
  63. package/dist/locales/index.cjs.map +1 -1
  64. package/dist/locales/index.js +1 -7
  65. package/dist/locales/th.cjs +1 -35
  66. package/dist/locales/th.cjs.map +1 -1
  67. package/dist/locales/th.js +1 -3
  68. package/dist/react.cjs +1 -1
  69. package/dist/react.cjs.map +1 -1
  70. package/dist/react.d.cts +117 -3
  71. package/dist/react.d.ts +117 -3
  72. package/dist/react.js +1 -1
  73. package/dist/react.js.map +1 -1
  74. package/dist/{index-BMFJwudG.d.cts → types-B2ZqkJI-.d.cts} +34 -107
  75. package/dist/{index-BMFJwudG.d.ts → types-B2ZqkJI-.d.ts} +34 -107
  76. package/package.json +28 -6
  77. package/dist/chunk-4AMLNJEK.js +0 -14
  78. package/dist/chunk-4AMLNJEK.js.map +0 -1
  79. package/dist/chunk-7IEJOMYT.js +0 -14
  80. package/dist/chunk-7IEJOMYT.js.map +0 -1
  81. package/dist/chunk-HPUEM7JB.js +0 -14
  82. package/dist/chunk-HPUEM7JB.js.map +0 -1
  83. package/dist/chunk-OLLREWX6.js +0 -16
  84. package/dist/chunk-OLLREWX6.js.map +0 -1
  85. package/dist/chunk-RP3DVBGJ.js +0 -14
  86. package/dist/chunk-RP3DVBGJ.js.map +0 -1
  87. package/dist/chunk-TISOJTKH.js +0 -25
  88. package/dist/chunk-TISOJTKH.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/normalizer.ts","../../src/locales/fa.ts"],"names":[],"mappings":";;;AAMA,IAAM,oBAAA,GAAqC;AAAA,EACzC,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM;AAAA;AACjB,CAAA;AAGA,IAAM,gBAAA,GAAiC,CAAC,GAAG,oBAAoB,CAAA;AAaxD,SAAS,eAAe,MAAA,EAA4B;AACzD,EAAA,IAAI,CAAC,OAAO,WAAA,EAAa;AACzB,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,WAAA,EAAa;AACtC,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA,KAAM,CAAA,KAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AAC7D,IAAA,IAAI,CAAC,OAAA,EAAS,gBAAA,CAAiB,IAAA,CAAK,KAAK,CAAA;AAAA,EAC3C;AACF;;;ACnBA,cAAA,CAAe;AAAA,EACb,WAAA,EAAa;AAAA,IACX,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,IACf,CAAC,MAAQ,IAAM;AAAA;AAAA;AAEnB,CAAC,CAAA;AAGM,IAAM,YAAA,GAAe,CAAC,IAAA,EAAM,OAAA,EAAS,OAAO","file":"fa.cjs","sourcesContent":["import type { DigitBlock } from \"./types.js\";\n\n// ── Built-in digit blocks ────────────────────────────────────────────────────\n// These cover the digit systems required by the spec.\n// Additional blocks can be registered via registerLocale().\n\nconst BUILTIN_DIGIT_BLOCKS: DigitBlock[] = [\n [0x0660, 0x0669], // Arabic-Indic (arab)\n [0x06f0, 0x06f9], // Extended Arabic-Indic / Persian (arabext)\n [0x0966, 0x096f], // Devanagari / Hindi (deva)\n [0x09e6, 0x09ef], // Bengali (beng)\n [0x0e50, 0x0e59], // Thai (thai)\n];\n\n// Mutable registry — locale plugins can add blocks here\nconst registeredBlocks: DigitBlock[] = [...BUILTIN_DIGIT_BLOCKS];\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\nexport interface LocaleConfig {\n /** Extra digit block ranges to register */\n digitBlocks?: DigitBlock[];\n}\n\n/**\n * Register additional digit blocks (called by locale plugins as a side effect).\n * Duplicate ranges are silently ignored.\n */\nexport function registerLocale(config: LocaleConfig): void {\n if (!config.digitBlocks) return;\n for (const block of config.digitBlocks) {\n const already = registeredBlocks.some(([s]) => s === block[0]);\n if (!already) registeredBlocks.push(block);\n }\n}\n\n/**\n * Normalise any Unicode decimal digit in `input` to its ASCII equivalent (0–9).\n * Non-digit characters pass through unchanged.\n */\nexport function normalizeDigits(input: string): string {\n // Fast path: if there are no non-ASCII chars, return as-is\n if (!/[^\\u0020-\\u007e]/.test(input)) return input;\n\n return input.replace(/\\p{Nd}/gu, (ch) => {\n const code = ch.codePointAt(0)!;\n for (const [start, end] of registeredBlocks) {\n if (code >= start && code <= end) {\n return String(code - start);\n }\n }\n // Fallback: let JS try to parse it as a decimal digit\n const digit = Number.parseInt(ch, 10);\n return Number.isNaN(digit) ? ch : String(digit);\n });\n}\n\n/**\n * Inverse of {@link normalizeDigits}: map ASCII digits 0–9 to the locale's\n * native digit block (identified by its \"zero\" character). No-op when the\n * locale already uses ASCII digits. Used to keep intermediate (still-typing)\n * display strings in the user's native script.\n */\nexport function localizeDigits(input: string, zero: string): string {\n if (!zero || zero === \"0\") return input;\n const base = zero.codePointAt(0);\n if (base === undefined) return input;\n return input.replace(/[0-9]/g, (d) => String.fromCodePoint(base + (d.charCodeAt(0) - 48)));\n}\n\n/**\n * Returns true if the character is a non-Latin Unicode decimal digit\n * (i.e. would need normalization).\n */\nexport function isNonLatinDigit(ch: string): boolean {\n const code = ch.codePointAt(0);\n if (code === undefined) return false;\n if (code >= 0x30 && code <= 0x39) return false; // ASCII 0-9\n for (const [start, end] of registeredBlocks) {\n if (code >= start && code <= end) return true;\n }\n return false;\n}\n","/**\n * Persian (fa-IR) locale plugin.\n *\n * Registers Extended Arabic-Indic digit block (U+06F0–U+06F9).\n * The ISIRI 9147 keyboard produces these codepoints when number keys are\n * pressed on a Persian layout. This side-effect import enables their\n * normalization to ASCII 0–9 before parsing.\n *\n * Also registers the Arabic-Indic block for mixed-input scenarios.\n *\n * Usage:\n * import 'raqam/locales/fa'\n */\nimport { registerLocale } from \"../core/normalizer.js\";\n\nregisterLocale({\n digitBlocks: [\n [0x06f0, 0x06f9], // Extended Arabic-Indic (Persian) ۰–۹\n [0x0660, 0x0669], // Arabic-Indic ٠–٩\n ],\n});\n\n/** BCP 47 locale tags that this plugin covers. */\nexport const LOCALE_CODES = [\"fa\", \"fa-IR\", \"fa-AF\"] as const;\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"fa.cjs"}
@@ -1,4 +1,2 @@
1
- export { LOCALE_CODES } from '../chunk-OLLREWX6.js';
2
- import '../chunk-TISOJTKH.js';
3
- //# sourceMappingURL=fa.js.map
1
+ export{a as LOCALE_CODES}from'../chunk-TFY7JMI6.js';import'../chunk-4GNLVHAM.js';//# sourceMappingURL=fa.js.map
4
2
  //# sourceMappingURL=fa.js.map
@@ -1,36 +1,2 @@
1
- 'use strict';
2
-
3
- // src/core/normalizer.ts
4
- var BUILTIN_DIGIT_BLOCKS = [
5
- [1632, 1641],
6
- // Arabic-Indic (arab)
7
- [1776, 1785],
8
- // Extended Arabic-Indic / Persian (arabext)
9
- [2406, 2415],
10
- // Devanagari / Hindi (deva)
11
- [2534, 2543],
12
- // Bengali (beng)
13
- [3664, 3673]
14
- // Thai (thai)
15
- ];
16
- var registeredBlocks = [...BUILTIN_DIGIT_BLOCKS];
17
- function registerLocale(config) {
18
- if (!config.digitBlocks) return;
19
- for (const block of config.digitBlocks) {
20
- const already = registeredBlocks.some(([s]) => s === block[0]);
21
- if (!already) registeredBlocks.push(block);
22
- }
23
- }
24
-
25
- // src/locales/hi.ts
26
- registerLocale({
27
- digitBlocks: [
28
- [2406, 2415]
29
- // Devanagari ०–९
30
- ]
31
- });
32
- var LOCALE_CODES = ["hi", "hi-IN", "mr", "mr-IN", "ne", "ne-NP"];
33
-
34
- exports.LOCALE_CODES = LOCALE_CODES;
35
- //# sourceMappingURL=hi.cjs.map
1
+ 'use strict';var chunkUYZYSVT5_cjs=require('../chunk-UYZYSVT5.cjs');require('../chunk-ZKLZ7UKZ.cjs');Object.defineProperty(exports,"LOCALE_CODES",{enumerable:true,get:function(){return chunkUYZYSVT5_cjs.a}});//# sourceMappingURL=hi.cjs.map
36
2
  //# sourceMappingURL=hi.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/normalizer.ts","../../src/locales/hi.ts"],"names":[],"mappings":";;;AAMA,IAAM,oBAAA,GAAqC;AAAA,EACzC,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM;AAAA;AACjB,CAAA;AAGA,IAAM,gBAAA,GAAiC,CAAC,GAAG,oBAAoB,CAAA;AAaxD,SAAS,eAAe,MAAA,EAA4B;AACzD,EAAA,IAAI,CAAC,OAAO,WAAA,EAAa;AACzB,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,WAAA,EAAa;AACtC,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA,KAAM,CAAA,KAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AAC7D,IAAA,IAAI,CAAC,OAAA,EAAS,gBAAA,CAAiB,IAAA,CAAK,KAAK,CAAA;AAAA,EAC3C;AACF;;;ACxBA,cAAA,CAAe;AAAA,EACb,WAAA,EAAa;AAAA,IACX,CAAC,MAAQ,IAAM;AAAA;AAAA;AAEnB,CAAC,CAAA;AAGM,IAAM,eAAe,CAAC,IAAA,EAAM,SAAS,IAAA,EAAM,OAAA,EAAS,MAAM,OAAO","file":"hi.cjs","sourcesContent":["import type { DigitBlock } from \"./types.js\";\n\n// ── Built-in digit blocks ────────────────────────────────────────────────────\n// These cover the digit systems required by the spec.\n// Additional blocks can be registered via registerLocale().\n\nconst BUILTIN_DIGIT_BLOCKS: DigitBlock[] = [\n [0x0660, 0x0669], // Arabic-Indic (arab)\n [0x06f0, 0x06f9], // Extended Arabic-Indic / Persian (arabext)\n [0x0966, 0x096f], // Devanagari / Hindi (deva)\n [0x09e6, 0x09ef], // Bengali (beng)\n [0x0e50, 0x0e59], // Thai (thai)\n];\n\n// Mutable registry — locale plugins can add blocks here\nconst registeredBlocks: DigitBlock[] = [...BUILTIN_DIGIT_BLOCKS];\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\nexport interface LocaleConfig {\n /** Extra digit block ranges to register */\n digitBlocks?: DigitBlock[];\n}\n\n/**\n * Register additional digit blocks (called by locale plugins as a side effect).\n * Duplicate ranges are silently ignored.\n */\nexport function registerLocale(config: LocaleConfig): void {\n if (!config.digitBlocks) return;\n for (const block of config.digitBlocks) {\n const already = registeredBlocks.some(([s]) => s === block[0]);\n if (!already) registeredBlocks.push(block);\n }\n}\n\n/**\n * Normalise any Unicode decimal digit in `input` to its ASCII equivalent (0–9).\n * Non-digit characters pass through unchanged.\n */\nexport function normalizeDigits(input: string): string {\n // Fast path: if there are no non-ASCII chars, return as-is\n if (!/[^\\u0020-\\u007e]/.test(input)) return input;\n\n return input.replace(/\\p{Nd}/gu, (ch) => {\n const code = ch.codePointAt(0)!;\n for (const [start, end] of registeredBlocks) {\n if (code >= start && code <= end) {\n return String(code - start);\n }\n }\n // Fallback: let JS try to parse it as a decimal digit\n const digit = Number.parseInt(ch, 10);\n return Number.isNaN(digit) ? ch : String(digit);\n });\n}\n\n/**\n * Inverse of {@link normalizeDigits}: map ASCII digits 0–9 to the locale's\n * native digit block (identified by its \"zero\" character). No-op when the\n * locale already uses ASCII digits. Used to keep intermediate (still-typing)\n * display strings in the user's native script.\n */\nexport function localizeDigits(input: string, zero: string): string {\n if (!zero || zero === \"0\") return input;\n const base = zero.codePointAt(0);\n if (base === undefined) return input;\n return input.replace(/[0-9]/g, (d) => String.fromCodePoint(base + (d.charCodeAt(0) - 48)));\n}\n\n/**\n * Returns true if the character is a non-Latin Unicode decimal digit\n * (i.e. would need normalization).\n */\nexport function isNonLatinDigit(ch: string): boolean {\n const code = ch.codePointAt(0);\n if (code === undefined) return false;\n if (code >= 0x30 && code <= 0x39) return false; // ASCII 0-9\n for (const [start, end] of registeredBlocks) {\n if (code >= start && code <= end) return true;\n }\n return false;\n}\n","/**\n * Hindi / Devanagari (hi-IN) locale plugin.\n *\n * Registers Devanagari digit block (U+0966–U+096F).\n *\n * Usage:\n * import 'raqam/locales/hi'\n */\nimport { registerLocale } from \"../core/normalizer.js\";\n\nregisterLocale({\n digitBlocks: [\n [0x0966, 0x096f], // Devanagari ०–९\n ],\n});\n\n/** BCP 47 locale tags that this plugin covers. */\nexport const LOCALE_CODES = [\"hi\", \"hi-IN\", \"mr\", \"mr-IN\", \"ne\", \"ne-NP\"] as const;\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"hi.cjs"}
@@ -1,4 +1,2 @@
1
- export { LOCALE_CODES } from '../chunk-RP3DVBGJ.js';
2
- import '../chunk-TISOJTKH.js';
3
- //# sourceMappingURL=hi.js.map
1
+ export{a as LOCALE_CODES}from'../chunk-5LYK54TH.js';import'../chunk-4GNLVHAM.js';//# sourceMappingURL=hi.js.map
4
2
  //# sourceMappingURL=hi.js.map
@@ -1,78 +1,2 @@
1
- 'use strict';
2
-
3
- // src/core/normalizer.ts
4
- var BUILTIN_DIGIT_BLOCKS = [
5
- [1632, 1641],
6
- // Arabic-Indic (arab)
7
- [1776, 1785],
8
- // Extended Arabic-Indic / Persian (arabext)
9
- [2406, 2415],
10
- // Devanagari / Hindi (deva)
11
- [2534, 2543],
12
- // Bengali (beng)
13
- [3664, 3673]
14
- // Thai (thai)
15
- ];
16
- var registeredBlocks = [...BUILTIN_DIGIT_BLOCKS];
17
- function registerLocale(config) {
18
- if (!config.digitBlocks) return;
19
- for (const block of config.digitBlocks) {
20
- const already = registeredBlocks.some(([s]) => s === block[0]);
21
- if (!already) registeredBlocks.push(block);
22
- }
23
- }
24
-
25
- // src/locales/fa.ts
26
- registerLocale({
27
- digitBlocks: [
28
- [1776, 1785],
29
- // Extended Arabic-Indic (Persian) ۰–۹
30
- [1632, 1641]
31
- // Arabic-Indic ٠–٩
32
- ]
33
- });
34
- var LOCALE_CODES = ["fa", "fa-IR", "fa-AF"];
35
-
36
- // src/locales/ar.ts
37
- registerLocale({
38
- digitBlocks: [
39
- [1632, 1641]
40
- // Arabic-Indic ٠–٩
41
- ]
42
- });
43
- var LOCALE_CODES2 = ["ar", "ar-EG", "ar-SA", "ar-MA", "ar-DZ", "ar-TN"];
44
-
45
- // src/locales/bn.ts
46
- registerLocale({
47
- digitBlocks: [
48
- [2534, 2543]
49
- // Bengali ০–৯
50
- ]
51
- });
52
- var LOCALE_CODES3 = ["bn", "bn-BD", "bn-IN"];
53
-
54
- // src/locales/hi.ts
55
- registerLocale({
56
- digitBlocks: [
57
- [2406, 2415]
58
- // Devanagari ०–९
59
- ]
60
- });
61
- var LOCALE_CODES4 = ["hi", "hi-IN", "mr", "mr-IN", "ne", "ne-NP"];
62
-
63
- // src/locales/th.ts
64
- registerLocale({
65
- digitBlocks: [
66
- [3664, 3673]
67
- // Thai ๐–๙
68
- ]
69
- });
70
- var LOCALE_CODES5 = ["th", "th-TH"];
71
-
72
- exports.AR_LOCALE_CODES = LOCALE_CODES2;
73
- exports.BN_LOCALE_CODES = LOCALE_CODES3;
74
- exports.FA_LOCALE_CODES = LOCALE_CODES;
75
- exports.HI_LOCALE_CODES = LOCALE_CODES4;
76
- exports.TH_LOCALE_CODES = LOCALE_CODES5;
77
- //# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkMUO4XNLX_cjs=require('../chunk-MUO4XNLX.cjs'),chunkMNYIBO2M_cjs=require('../chunk-MNYIBO2M.cjs'),chunkI3H3UMZD_cjs=require('../chunk-I3H3UMZD.cjs'),chunkUYZYSVT5_cjs=require('../chunk-UYZYSVT5.cjs'),chunkCAHEQQ5J_cjs=require('../chunk-CAHEQQ5J.cjs');require('../chunk-ZKLZ7UKZ.cjs');Object.defineProperty(exports,"FA_LOCALE_CODES",{enumerable:true,get:function(){return chunkMUO4XNLX_cjs.a}});Object.defineProperty(exports,"AR_LOCALE_CODES",{enumerable:true,get:function(){return chunkMNYIBO2M_cjs.a}});Object.defineProperty(exports,"BN_LOCALE_CODES",{enumerable:true,get:function(){return chunkI3H3UMZD_cjs.a}});Object.defineProperty(exports,"HI_LOCALE_CODES",{enumerable:true,get:function(){return chunkUYZYSVT5_cjs.a}});Object.defineProperty(exports,"TH_LOCALE_CODES",{enumerable:true,get:function(){return chunkCAHEQQ5J_cjs.a}});//# sourceMappingURL=index.cjs.map
78
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/normalizer.ts","../../src/locales/fa.ts","../../src/locales/ar.ts","../../src/locales/bn.ts","../../src/locales/hi.ts","../../src/locales/th.ts"],"names":["LOCALE_CODES"],"mappings":";;;AAMA,IAAM,oBAAA,GAAqC;AAAA,EACzC,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM;AAAA;AACjB,CAAA;AAGA,IAAM,gBAAA,GAAiC,CAAC,GAAG,oBAAoB,CAAA;AAaxD,SAAS,eAAe,MAAA,EAA4B;AACzD,EAAA,IAAI,CAAC,OAAO,WAAA,EAAa;AACzB,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,WAAA,EAAa;AACtC,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA,KAAM,CAAA,KAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AAC7D,IAAA,IAAI,CAAC,OAAA,EAAS,gBAAA,CAAiB,IAAA,CAAK,KAAK,CAAA;AAAA,EAC3C;AACF;;;ACnBA,cAAA,CAAe;AAAA,EACb,WAAA,EAAa;AAAA,IACX,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,IACf,CAAC,MAAQ,IAAM;AAAA;AAAA;AAEnB,CAAC,CAAA;AAGM,IAAM,YAAA,GAAe,CAAC,IAAA,EAAM,OAAA,EAAS,OAAO;;;ACbnD,cAAA,CAAe;AAAA,EACb,WAAA,EAAa;AAAA,IACX,CAAC,MAAQ,IAAM;AAAA;AAAA;AAEnB,CAAC,CAAA;AAGM,IAAMA,gBAAe,CAAC,IAAA,EAAM,SAAS,OAAA,EAAS,OAAA,EAAS,SAAS,OAAO;;;ACP9E,cAAA,CAAe;AAAA,EACb,WAAA,EAAa;AAAA,IACX,CAAC,MAAQ,IAAM;AAAA;AAAA;AAEnB,CAAC,CAAA;AAGM,IAAMA,aAAAA,GAAe,CAAC,IAAA,EAAM,OAAA,EAAS,OAAO;;;ACPnD,cAAA,CAAe;AAAA,EACb,WAAA,EAAa;AAAA,IACX,CAAC,MAAQ,IAAM;AAAA;AAAA;AAEnB,CAAC,CAAA;AAGM,IAAMA,gBAAe,CAAC,IAAA,EAAM,SAAS,IAAA,EAAM,OAAA,EAAS,MAAM,OAAO;;;ACPxE,cAAA,CAAe;AAAA,EACb,WAAA,EAAa;AAAA,IACX,CAAC,MAAQ,IAAM;AAAA;AAAA;AAEnB,CAAC,CAAA;AAGM,IAAMA,aAAAA,GAAe,CAAC,IAAA,EAAM,OAAO","file":"index.cjs","sourcesContent":["import type { DigitBlock } from \"./types.js\";\n\n// ── Built-in digit blocks ────────────────────────────────────────────────────\n// These cover the digit systems required by the spec.\n// Additional blocks can be registered via registerLocale().\n\nconst BUILTIN_DIGIT_BLOCKS: DigitBlock[] = [\n [0x0660, 0x0669], // Arabic-Indic (arab)\n [0x06f0, 0x06f9], // Extended Arabic-Indic / Persian (arabext)\n [0x0966, 0x096f], // Devanagari / Hindi (deva)\n [0x09e6, 0x09ef], // Bengali (beng)\n [0x0e50, 0x0e59], // Thai (thai)\n];\n\n// Mutable registry — locale plugins can add blocks here\nconst registeredBlocks: DigitBlock[] = [...BUILTIN_DIGIT_BLOCKS];\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\nexport interface LocaleConfig {\n /** Extra digit block ranges to register */\n digitBlocks?: DigitBlock[];\n}\n\n/**\n * Register additional digit blocks (called by locale plugins as a side effect).\n * Duplicate ranges are silently ignored.\n */\nexport function registerLocale(config: LocaleConfig): void {\n if (!config.digitBlocks) return;\n for (const block of config.digitBlocks) {\n const already = registeredBlocks.some(([s]) => s === block[0]);\n if (!already) registeredBlocks.push(block);\n }\n}\n\n/**\n * Normalise any Unicode decimal digit in `input` to its ASCII equivalent (0–9).\n * Non-digit characters pass through unchanged.\n */\nexport function normalizeDigits(input: string): string {\n // Fast path: if there are no non-ASCII chars, return as-is\n if (!/[^\\u0020-\\u007e]/.test(input)) return input;\n\n return input.replace(/\\p{Nd}/gu, (ch) => {\n const code = ch.codePointAt(0)!;\n for (const [start, end] of registeredBlocks) {\n if (code >= start && code <= end) {\n return String(code - start);\n }\n }\n // Fallback: let JS try to parse it as a decimal digit\n const digit = Number.parseInt(ch, 10);\n return Number.isNaN(digit) ? ch : String(digit);\n });\n}\n\n/**\n * Inverse of {@link normalizeDigits}: map ASCII digits 0–9 to the locale's\n * native digit block (identified by its \"zero\" character). No-op when the\n * locale already uses ASCII digits. Used to keep intermediate (still-typing)\n * display strings in the user's native script.\n */\nexport function localizeDigits(input: string, zero: string): string {\n if (!zero || zero === \"0\") return input;\n const base = zero.codePointAt(0);\n if (base === undefined) return input;\n return input.replace(/[0-9]/g, (d) => String.fromCodePoint(base + (d.charCodeAt(0) - 48)));\n}\n\n/**\n * Returns true if the character is a non-Latin Unicode decimal digit\n * (i.e. would need normalization).\n */\nexport function isNonLatinDigit(ch: string): boolean {\n const code = ch.codePointAt(0);\n if (code === undefined) return false;\n if (code >= 0x30 && code <= 0x39) return false; // ASCII 0-9\n for (const [start, end] of registeredBlocks) {\n if (code >= start && code <= end) return true;\n }\n return false;\n}\n","/**\n * Persian (fa-IR) locale plugin.\n *\n * Registers Extended Arabic-Indic digit block (U+06F0–U+06F9).\n * The ISIRI 9147 keyboard produces these codepoints when number keys are\n * pressed on a Persian layout. This side-effect import enables their\n * normalization to ASCII 0–9 before parsing.\n *\n * Also registers the Arabic-Indic block for mixed-input scenarios.\n *\n * Usage:\n * import 'raqam/locales/fa'\n */\nimport { registerLocale } from \"../core/normalizer.js\";\n\nregisterLocale({\n digitBlocks: [\n [0x06f0, 0x06f9], // Extended Arabic-Indic (Persian) ۰–۹\n [0x0660, 0x0669], // Arabic-Indic ٠–٩\n ],\n});\n\n/** BCP 47 locale tags that this plugin covers. */\nexport const LOCALE_CODES = [\"fa\", \"fa-IR\", \"fa-AF\"] as const;\n","/**\n * Arabic (ar) locale plugin.\n *\n * Registers Arabic-Indic digit block (U+0660–U+0669).\n *\n * Usage:\n * import 'raqam/locales/ar'\n */\nimport { registerLocale } from \"../core/normalizer.js\";\n\nregisterLocale({\n digitBlocks: [\n [0x0660, 0x0669], // Arabic-Indic ٠–٩\n ],\n});\n\n/** BCP 47 locale tags that this plugin covers. */\nexport const LOCALE_CODES = [\"ar\", \"ar-EG\", \"ar-SA\", \"ar-MA\", \"ar-DZ\", \"ar-TN\"] as const;\n","/**\n * Bengali (bn-BD / bn-IN) locale plugin.\n *\n * Registers Bengali digit block (U+09E6–U+09EF).\n *\n * Usage:\n * import 'raqam/locales/bn'\n */\nimport { registerLocale } from \"../core/normalizer.js\";\n\nregisterLocale({\n digitBlocks: [\n [0x09e6, 0x09ef], // Bengali ০–৯\n ],\n});\n\n/** BCP 47 locale tags that this plugin covers. */\nexport const LOCALE_CODES = [\"bn\", \"bn-BD\", \"bn-IN\"] as const;\n","/**\n * Hindi / Devanagari (hi-IN) locale plugin.\n *\n * Registers Devanagari digit block (U+0966–U+096F).\n *\n * Usage:\n * import 'raqam/locales/hi'\n */\nimport { registerLocale } from \"../core/normalizer.js\";\n\nregisterLocale({\n digitBlocks: [\n [0x0966, 0x096f], // Devanagari ०–९\n ],\n});\n\n/** BCP 47 locale tags that this plugin covers. */\nexport const LOCALE_CODES = [\"hi\", \"hi-IN\", \"mr\", \"mr-IN\", \"ne\", \"ne-NP\"] as const;\n","/**\n * Thai (th-TH) locale plugin.\n *\n * Registers Thai digit block (U+0E50–U+0E59).\n *\n * Usage:\n * import 'raqam/locales/th'\n */\nimport { registerLocale } from \"../core/normalizer.js\";\n\nregisterLocale({\n digitBlocks: [\n [0x0e50, 0x0e59], // Thai ๐–๙\n ],\n});\n\n/** BCP 47 locale tags that this plugin covers. */\nexport const LOCALE_CODES = [\"th\", \"th-TH\"] as const;\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -1,8 +1,2 @@
1
- export { LOCALE_CODES as FA_LOCALE_CODES } from '../chunk-OLLREWX6.js';
2
- export { LOCALE_CODES as AR_LOCALE_CODES } from '../chunk-4AMLNJEK.js';
3
- export { LOCALE_CODES as BN_LOCALE_CODES } from '../chunk-7IEJOMYT.js';
4
- export { LOCALE_CODES as HI_LOCALE_CODES } from '../chunk-RP3DVBGJ.js';
5
- export { LOCALE_CODES as TH_LOCALE_CODES } from '../chunk-HPUEM7JB.js';
6
- import '../chunk-TISOJTKH.js';
7
- //# sourceMappingURL=index.js.map
1
+ export{a as FA_LOCALE_CODES}from'../chunk-TFY7JMI6.js';export{a as AR_LOCALE_CODES}from'../chunk-MOES3T6R.js';export{a as BN_LOCALE_CODES}from'../chunk-C5MK5U3F.js';export{a as HI_LOCALE_CODES}from'../chunk-5LYK54TH.js';export{a as TH_LOCALE_CODES}from'../chunk-LD6OTXXT.js';import'../chunk-4GNLVHAM.js';//# sourceMappingURL=index.js.map
8
2
  //# sourceMappingURL=index.js.map
@@ -1,36 +1,2 @@
1
- 'use strict';
2
-
3
- // src/core/normalizer.ts
4
- var BUILTIN_DIGIT_BLOCKS = [
5
- [1632, 1641],
6
- // Arabic-Indic (arab)
7
- [1776, 1785],
8
- // Extended Arabic-Indic / Persian (arabext)
9
- [2406, 2415],
10
- // Devanagari / Hindi (deva)
11
- [2534, 2543],
12
- // Bengali (beng)
13
- [3664, 3673]
14
- // Thai (thai)
15
- ];
16
- var registeredBlocks = [...BUILTIN_DIGIT_BLOCKS];
17
- function registerLocale(config) {
18
- if (!config.digitBlocks) return;
19
- for (const block of config.digitBlocks) {
20
- const already = registeredBlocks.some(([s]) => s === block[0]);
21
- if (!already) registeredBlocks.push(block);
22
- }
23
- }
24
-
25
- // src/locales/th.ts
26
- registerLocale({
27
- digitBlocks: [
28
- [3664, 3673]
29
- // Thai ๐–๙
30
- ]
31
- });
32
- var LOCALE_CODES = ["th", "th-TH"];
33
-
34
- exports.LOCALE_CODES = LOCALE_CODES;
35
- //# sourceMappingURL=th.cjs.map
1
+ 'use strict';var chunkCAHEQQ5J_cjs=require('../chunk-CAHEQQ5J.cjs');require('../chunk-ZKLZ7UKZ.cjs');Object.defineProperty(exports,"LOCALE_CODES",{enumerable:true,get:function(){return chunkCAHEQQ5J_cjs.a}});//# sourceMappingURL=th.cjs.map
36
2
  //# sourceMappingURL=th.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/core/normalizer.ts","../../src/locales/th.ts"],"names":[],"mappings":";;;AAMA,IAAM,oBAAA,GAAqC;AAAA,EACzC,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM,CAAA;AAAA;AAAA,EACf,CAAC,MAAQ,IAAM;AAAA;AACjB,CAAA;AAGA,IAAM,gBAAA,GAAiC,CAAC,GAAG,oBAAoB,CAAA;AAaxD,SAAS,eAAe,MAAA,EAA4B;AACzD,EAAA,IAAI,CAAC,OAAO,WAAA,EAAa;AACzB,EAAA,KAAA,MAAW,KAAA,IAAS,OAAO,WAAA,EAAa;AACtC,IAAA,MAAM,OAAA,GAAU,gBAAA,CAAiB,IAAA,CAAK,CAAC,CAAC,CAAC,CAAA,KAAM,CAAA,KAAM,KAAA,CAAM,CAAC,CAAC,CAAA;AAC7D,IAAA,IAAI,CAAC,OAAA,EAAS,gBAAA,CAAiB,IAAA,CAAK,KAAK,CAAA;AAAA,EAC3C;AACF;;;ACxBA,cAAA,CAAe;AAAA,EACb,WAAA,EAAa;AAAA,IACX,CAAC,MAAQ,IAAM;AAAA;AAAA;AAEnB,CAAC,CAAA;AAGM,IAAM,YAAA,GAAe,CAAC,IAAA,EAAM,OAAO","file":"th.cjs","sourcesContent":["import type { DigitBlock } from \"./types.js\";\n\n// ── Built-in digit blocks ────────────────────────────────────────────────────\n// These cover the digit systems required by the spec.\n// Additional blocks can be registered via registerLocale().\n\nconst BUILTIN_DIGIT_BLOCKS: DigitBlock[] = [\n [0x0660, 0x0669], // Arabic-Indic (arab)\n [0x06f0, 0x06f9], // Extended Arabic-Indic / Persian (arabext)\n [0x0966, 0x096f], // Devanagari / Hindi (deva)\n [0x09e6, 0x09ef], // Bengali (beng)\n [0x0e50, 0x0e59], // Thai (thai)\n];\n\n// Mutable registry — locale plugins can add blocks here\nconst registeredBlocks: DigitBlock[] = [...BUILTIN_DIGIT_BLOCKS];\n\n// ── Public API ────────────────────────────────────────────────────────────────\n\nexport interface LocaleConfig {\n /** Extra digit block ranges to register */\n digitBlocks?: DigitBlock[];\n}\n\n/**\n * Register additional digit blocks (called by locale plugins as a side effect).\n * Duplicate ranges are silently ignored.\n */\nexport function registerLocale(config: LocaleConfig): void {\n if (!config.digitBlocks) return;\n for (const block of config.digitBlocks) {\n const already = registeredBlocks.some(([s]) => s === block[0]);\n if (!already) registeredBlocks.push(block);\n }\n}\n\n/**\n * Normalise any Unicode decimal digit in `input` to its ASCII equivalent (0–9).\n * Non-digit characters pass through unchanged.\n */\nexport function normalizeDigits(input: string): string {\n // Fast path: if there are no non-ASCII chars, return as-is\n if (!/[^\\u0020-\\u007e]/.test(input)) return input;\n\n return input.replace(/\\p{Nd}/gu, (ch) => {\n const code = ch.codePointAt(0)!;\n for (const [start, end] of registeredBlocks) {\n if (code >= start && code <= end) {\n return String(code - start);\n }\n }\n // Fallback: let JS try to parse it as a decimal digit\n const digit = Number.parseInt(ch, 10);\n return Number.isNaN(digit) ? ch : String(digit);\n });\n}\n\n/**\n * Inverse of {@link normalizeDigits}: map ASCII digits 0–9 to the locale's\n * native digit block (identified by its \"zero\" character). No-op when the\n * locale already uses ASCII digits. Used to keep intermediate (still-typing)\n * display strings in the user's native script.\n */\nexport function localizeDigits(input: string, zero: string): string {\n if (!zero || zero === \"0\") return input;\n const base = zero.codePointAt(0);\n if (base === undefined) return input;\n return input.replace(/[0-9]/g, (d) => String.fromCodePoint(base + (d.charCodeAt(0) - 48)));\n}\n\n/**\n * Returns true if the character is a non-Latin Unicode decimal digit\n * (i.e. would need normalization).\n */\nexport function isNonLatinDigit(ch: string): boolean {\n const code = ch.codePointAt(0);\n if (code === undefined) return false;\n if (code >= 0x30 && code <= 0x39) return false; // ASCII 0-9\n for (const [start, end] of registeredBlocks) {\n if (code >= start && code <= end) return true;\n }\n return false;\n}\n","/**\n * Thai (th-TH) locale plugin.\n *\n * Registers Thai digit block (U+0E50–U+0E59).\n *\n * Usage:\n * import 'raqam/locales/th'\n */\nimport { registerLocale } from \"../core/normalizer.js\";\n\nregisterLocale({\n digitBlocks: [\n [0x0e50, 0x0e59], // Thai ๐–๙\n ],\n});\n\n/** BCP 47 locale tags that this plugin covers. */\nexport const LOCALE_CODES = [\"th\", \"th-TH\"] as const;\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"th.cjs"}
@@ -1,4 +1,2 @@
1
- export { LOCALE_CODES } from '../chunk-HPUEM7JB.js';
2
- import '../chunk-TISOJTKH.js';
3
- //# sourceMappingURL=th.js.map
1
+ export{a as LOCALE_CODES}from'../chunk-LD6OTXXT.js';import'../chunk-4GNLVHAM.js';//# sourceMappingURL=th.js.map
4
2
  //# sourceMappingURL=th.js.map
package/dist/react.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use client";
2
- 'use strict';var nt=require('react'),jsxRuntime=require('react/jsx-runtime');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var nt__default=/*#__PURE__*/_interopDefault(nt);function qe({value:t,defaultValue:e,onChange:r}){let n=t!==void 0,i=nt.useRef(n);typeof window<"u"&&window.__DEV__!==false&&i.current!==n&&console.warn(`[raqam] Component is changing from ${i.current?"controlled":"uncontrolled"} to ${n?"controlled":"uncontrolled"}. Decide between using a controlled or uncontrolled component and don't switch.`);let[o,l]=nt.useState(e),p=nt.useCallback(c=>{let m=typeof c=="function"?c(n?t:o):c;n||l(m),r?.(m);},[n,t,o,r]);return [n?t:o,p]}var it=new Map;function We(t,e){let r=`${t??""}::${JSON.stringify(e??{})}`,n=it.get(r);return n||(n=new Intl.NumberFormat(t,e),it.set(r,n)),n}function yt(t,e){let r=We(t,e),n=We(t,{minimumFractionDigits:1,maximumFractionDigits:1,numberingSystem:e?.numberingSystem}),i=n.formatToParts(-12345.6),o=".",l=",",p="-",c="0";for(let a of i)a.type==="decimal"&&(o=a.value),a.type==="group"&&(l=a.value),a.type==="minusSign"&&(p=a.value);for(let a of n.formatToParts(0))if(a.type==="integer"){c=a.value;break}let m=/^(ar|he|fa|ur|syc|nqo|ug|yi)/i,b=r.resolvedOptions().locale,u=m.test(b);return {decimalSeparator:o,groupingSeparator:l,minusSign:p,zero:c,isRTL:u}}function ne(t){let e={...t.formatOptions};t.minimumFractionDigits!==void 0&&(e.minimumFractionDigits=t.minimumFractionDigits),t.maximumFractionDigits!==void 0&&(e.maximumFractionDigits=t.maximumFractionDigits),t.fixedDecimalScale&&t.maximumFractionDigits!==void 0&&(e.minimumFractionDigits=t.maximumFractionDigits,e.maximumFractionDigits=t.maximumFractionDigits);let r=We(t.locale,e),n=null;function i(){return n||(n=yt(t.locale,e)),n}function o(c){let m=r.formatToParts(c);if(!t.prefix&&!t.suffix)return m;let b=[];return t.prefix&&b.push({type:"literal",value:t.prefix}),b.push(...m),t.suffix&&b.push({type:"literal",value:t.suffix}),b}function l(c){if(!Number.isFinite(c))return "";let m=r.format(c);return (t.prefix??"")+m+(t.suffix??"")}function p(c){let m=o(c);return {formatted:m.map(u=>u.value).join(""),parts:m}}return {format:l,formatToParts:o,getLocaleInfo:i,formatResult:p}}var Lt=[[1632,1641],[1776,1785],[2406,2415],[2534,2543],[3664,3673]],It=[...Lt];function U(t){return /[^\u0020-\u007e]/.test(t)?t.replace(/\p{Nd}/gu,e=>{let r=e.codePointAt(0);for(let[i,o]of It)if(r>=i&&r<=o)return String(r-i);let n=Number.parseInt(e,10);return Number.isNaN(n)?e:String(n)}):t}function Je(t,e){if(!e||e==="0")return t;let r=e.codePointAt(0);return r===void 0?t:t.replace(/[0-9]/g,n=>String.fromCodePoint(r+(n.charCodeAt(0)-48)))}function Pt(t,e){return e?!!(/^-0+$/.test(t)||/\.$/.test(t)||/\.\d*0$/.test(t)||/^-?\.\d+$/.test(t)):false}function He(t={}){let e=t.allowNegative??true,r=t.allowDecimal??true,n=t.formatOptions?.style==="percent",i=ne({locale:t.locale,formatOptions:t.formatOptions,prefix:t.prefix,suffix:t.suffix}),o="";if(t.formatOptions?.style==="currency")try{o=i.formatToParts(1).filter(b=>b.type==="currency").map(b=>b.value).join("");}catch{o="";}function l(){return i.getLocaleInfo()}function p(b){let u=l(),a=U(b);o&&(a=a.split(o).join(""));let L=a.match(/^\((.+)\)$/);if(L&&(a=`-${L[1]}`),t.prefix&&a.startsWith(t.prefix)&&(a=a.slice(t.prefix.length)),t.suffix&&a.endsWith(t.suffix)&&(a=a.slice(0,-t.suffix.length)),u.groupingSeparator&&(a=a.split(u.groupingSeparator).join("")),u.decimalSeparator!=="."&&(a=a.split(u.decimalSeparator).join(".")),u.minusSign!=="-"&&(a=a.split(u.minusSign).join("-")),a.includes("\u2212")&&(a=a.split("\u2212").join("-")),a=a.replace(/[^\d.\-]/g,"").trim(),a.includes("-")){let S=a.startsWith("-");a=a.replace(/-/g,""),S&&(a=`-${a}`);}return a}function c(b){if(!b||b.trim()==="")return {value:null,isValid:false,isIntermediate:false};let u=p(b);if(u==="")return {value:null,isValid:false,isIntermediate:false};if(u==="-")return {value:null,isValid:false,isIntermediate:e};if(u==="."||u==="-.")return {value:null,isValid:false,isIntermediate:r&&(u==="."||e)};if(!e&&u.startsWith("-"))return {value:null,isValid:false,isIntermediate:false};if(!r&&u.includes("."))return {value:null,isValid:false,isIntermediate:false};if(!/^-?(?:\d+\.?\d*|\.\d+)$/.test(u))return {value:null,isValid:false,isIntermediate:false};let a=Number.parseFloat(u);return Number.isFinite(a)?(Object.is(a,-0)&&(a=0),n&&a!==0&&(a=Number((a/100).toPrecision(15))),{value:a,isValid:true,isIntermediate:Pt(u,r)}):{value:null,isValid:false,isIntermediate:false}}function m(b){return c(b).isIntermediate}return {parse:c,isIntermediate:m,getLocaleInfo:l}}function Ge(t,e,r){let n=t;return e!==void 0&&(n=Math.max(n,e)),r!==void 0&&(n=Math.min(n,r)),n}function ot(t,e){let n=10**Math.max(at(t),at(e));return Math.round(t*n+e*n)/n}function at(t){if(!Number.isFinite(t))return 0;let e=String(t),r=e.indexOf("e");if(r!==-1){let i=Number(e.slice(r+1)),o=e.indexOf("."),l=o===-1?0:r-o-1;return Math.max(0,l-i)}let n=e.indexOf(".");return n===-1?0:e.length-n-1}function Xe(t){let{locale:e,formatOptions:r,minValue:n,maxValue:i,step:o=1,largeStep:l,smallStep:p,allowNegative:c=true,allowDecimal:m=true,maximumFractionDigits:b,minimumFractionDigits:u,fixedDecimalScale:a,clampBehavior:L="blur",prefix:S,suffix:C,allowOutOfRange:P=false,validate:J,onRawChange:G,formatValue:re}=t,se=m?u:0,y=m?b:0,O=m?a:false,ae=nt.useMemo(()=>ne({locale:e,formatOptions:r,prefix:S,suffix:C,minimumFractionDigits:se,maximumFractionDigits:y,fixedDecimalScale:O}),[e,JSON.stringify(r),S,C,se,y,O]),X=nt.useMemo(()=>He({locale:e,formatOptions:r,allowNegative:c,allowDecimal:m,prefix:S,suffix:C}),[e,JSON.stringify(r),c,m,S,C]),[v,M]=qe({value:t.value,defaultValue:t.defaultValue??null,onChange:t.onChange}),Q=nt.useRef(t.value??t.defaultValue??null),k=nt.useCallback(d=>re?re(Object.is(d,-0)?0:d):ae.format(Object.is(d,-0)?0:d),[ae,re]),ce=nt.useMemo(()=>t.defaultValue!=null?k(t.defaultValue):t.value!=null?k(t.value):"",[]),[xe,B]=nt.useState(ce),Z=nt.useRef(ce),[Be,ee]=nt.useState(t.defaultValue!=null?String(t.defaultValue):null),be=nt.useCallback(d=>{if(!J)return {validationState:"valid",validationError:null};let D=J(d);return D===false?{validationState:"invalid",validationError:null}:typeof D=="string"?{validationState:"invalid",validationError:D}:{validationState:"valid",validationError:null}},[J]),Ne=nt.useMemo(()=>{let d=t.defaultValue??t.value??null;return be(d??null)},[]),[Ee,Te]=nt.useState(Ne.validationState),[me,De]=nt.useState(Ne.validationError),[T,_e]=nt.useState(false),[Se,te]=nt.useState(false),A=nt.useRef("input"),fe=nt.useCallback(d=>{A.current=d;},[]),V=nt.useCallback(()=>A.current,[]),z=t.value,Ce=nt.useRef(z);if(!Object.is(Ce.current,z)&&(Ce.current=z,!Object.is(z,Q.current))){Q.current=z;let d=Object.is(z,-0)?0:z,D=d!=null&&Number.isFinite(d),N=D?k(d):"";Z.current=N,B(N),ee(D?String(d):null);}let Fe=`${e??""}|${JSON.stringify(r??{})}|${S??""}|${C??""}|${se??""}|${y??""}|${O??""}`,Me=nt.useRef(Fe);if(Me.current!==Fe&&(Me.current=Fe,v!=null&&Number.isFinite(v)&&!Se)){let d=k(v);d!==xe&&(B(d),Z.current=d);}let le=nt.useCallback(d=>{let{validationState:D,validationError:N}=be(d);Te(D),De(N);},[be]),je=nt.useCallback((d,D)=>{let N=D!==void 0?D:X.parse(d).value;L==="strict"&&!P&&N!==null&&(n!==void 0&&N<n||i!==void 0&&N>i)||(B(d),Q.current=N,M(N),ee(N!==null?d:null),G?.(N!==null?d:null),le(N));},[X,L,P,n,i,M,G,le]),Y=nt.useCallback(d=>{if(Q.current=d,M(d),d!=null){let D=k(d);B(D),Z.current=D;let N=String(d);ee(N),G?.(N);}else B(""),Z.current="",ee(null),G?.(null);le(d);},[k,M,G,le]),$e=nt.useCallback(()=>{if(v==null)return B(""),Z.current="",null;let d=v;L==="blur"&&!P&&(d=Ge(v,n,i)),Object.is(d,-0)&&(d=0);let D=k(d);B(D),Z.current=D;let N=d;if(!re){let _=X.parse(D).value;_!==null&&Number.isFinite(_)&&k(_)===D&&(N=_);}return N!==v&&(Q.current=N,M(N)),le(N),N},[v,L,P,n,i,X,k,re,M,le]),ie=v!=null&&Number.isFinite(v)?v:null,Ue=l??o*10,Ke=p??o*.1,ze=!t.disabled&&!t.readOnly&&(P||i===void 0||(ie??Number.NEGATIVE_INFINITY)<i),Ye=!t.disabled&&!t.readOnly&&(P||n===void 0||(ie??Number.POSITIVE_INFINITY)>n),Ve=nt.useCallback(d=>{let _=ot(ie??0,d??o),Le=P?_:Ge(_,n,i);Y(Le);},[ie,o,n,i,P,Y]),rt=nt.useCallback(d=>{let _=ot(ie??0,-(d??o)),Le=P?_:Ge(_,n,i);Y(Le);},[ie,o,n,i,P,Y]),ye=nt.useCallback(()=>{i!==void 0&&Y(i);},[i,Y]),ge=nt.useCallback(()=>{n!==void 0&&Y(n);},[n,Y]);return {inputValue:xe,numberValue:ie,rawValue:Be,canIncrement:ze,canDecrement:Ye,isScrubbing:T,setIsScrubbing:_e,isFocused:Se,setIsFocused:te,validationState:Ee,validationError:me,_setLastChangeReason:fe,_getLastChangeReason:V,setInputValue:je,setNumberValue:Y,commit:$e,increment:Ve,decrement:rt,incrementToMax:ye,decrementToMin:ge,options:{...t,step:o,largeStep:Ue,smallStep:Ke}}}function lt(t,e){return t>="0"&&t<="9"||t===e.decimalSeparator||t===e.minusSign||t==="-"||t==="."&&e.decimalSeparator!=="."&&e.groupingSeparator!=="."}function ht(t,e,r){let n=U(t),i=0;for(let o=0;o<e&&o<n.length;o++)lt(n[o],r)&&i++;return i}function Nt(t,e){let r=t.length,n=new Array(r+1).fill(true);for(let i=0;i<r;i++)t[i]===e.groupingSeparator&&(n[i+1]=false);return n[0]=true,n[r]=true,n}function Pe(t,e,r,n,i){let o=U(t),l=ht(o,e,n),p=t.slice(0,e),c=p.includes("-")||p.includes(n.minusSign),m=r.includes("-")||r.includes(n.minusSign);c&&!m&&(l=Math.max(0,l-1)),i==="deleteContentBackward"&&e>0&&t[e-1]===n.groupingSeparator&&(l=Math.max(0,l-1));let b=Nt(r,n),u=U(r),a=0,L=0;for(let S=0;S<u.length;S++){if(a===l){L=S;break}lt(u[S],n)&&a++,L=S+1;}return l>0&&a<l&&(L=r.length),L=Et(L,b),L}function Et(t,e){if(e[t])return t;for(let r=t+1;r<e.length;r++)if(e[r])return r;for(let r=t-1;r>=0;r--)if(e[r])return r;return 0}function Qe(t,e={}){let{delay:r=400,interval:n=200,disabled:i=false}=e,o=nt.useRef(t);nt.useEffect(()=>{o.current=t;});let l=nt.useRef(r);nt.useEffect(()=>{l.current=r;});let p=nt.useRef(n);nt.useEffect(()=>{p.current=n;});let c=nt.useRef(null),m=nt.useRef(null),b=nt.useRef(false),u=nt.useCallback(()=>{b.current=false,c.current!==null&&(clearTimeout(c.current),c.current=null),m.current!==null&&(clearTimeout(m.current),m.current=null);},[]),a=nt.useCallback(P=>{if(!b.current)return;o.current();let J=Math.max(50,Math.floor(P/2));m.current=setTimeout(()=>{a(J);},P);},[]),L=nt.useCallback(P=>{i||P.button!==0&&P.pointerType==="mouse"||(o.current(),b.current=true,c.current=setTimeout(()=>{a(p.current);},l.current));},[i,a]),S=nt.useCallback(P=>{P.preventDefault(),u();},[u]),C=nt.useCallback(P=>{u();},[u]);return nt.useEffect(()=>u,[u]),{onPointerDown:L,onPointerUp:S,onPointerLeave:C}}function ut(t){return t.replace(/[.*+?^${}()|[\]\\\-]/g,"\\$&")}function Vt(t){let e=t.replace(/\s+/g,"");if(/^[+-]?(?:\d+\.?\d*|\.\d+)[eE][+-]?\d+$/.test(e)){let n=Number(e);return Number.isFinite(n)?n:null}let r=e.match(/^([+-]?(?:\d+\.?\d*|\.\d+))(k|m|b|t|thousand|million|billion|trillion)$/i);if(r){let n={k:1e3,thousand:1e3,m:1e6,million:1e6,b:1e9,billion:1e9,t:1e12,trillion:1e12},i=Number(r[1])*n[r[2].toLowerCase()];return Number.isFinite(i)?i:null}return null}function et(t,e,r){let{locale:n,formatOptions:i,minValue:o,maxValue:l,allowNegative:p=true,allowDecimal:c=true,allowMouseWheel:m=false,liveFormat:b=true,prefix:u,suffix:a,name:L,disabled:S,readOnly:C,required:P,onFocus:J,onBlur:G,maximumFractionDigits:re,minimumFractionDigits:se,fixedDecimalScale:y,copyBehavior:O="formatted",stepHoldDelay:ae=400,stepHoldInterval:X=200,formatValue:v,parseValue:M,onValueCommitted:Q}=t,k=i?.notation,ce=b&&k!=="compact"&&k!=="scientific"&&k!=="engineering",{step:xe=1,largeStep:B=xe*10,smallStep:Z=xe*.1}=e.options,Be=nt.useId(),ee=t.id??`raqam-${Be}`,be=`${ee}-label`,Ne=`${ee}-description`,Ee=`${ee}-error`,Te=c?se:0,me=c?re:0,De=c?y:false,T=nt.useMemo(()=>ne({locale:n,formatOptions:i,prefix:u,suffix:a,minimumFractionDigits:Te,maximumFractionDigits:me,fixedDecimalScale:De}),[n,JSON.stringify(i),u,a,Te,me,De]),_e=i?.style==="percent",Se=c?_e?20:me:0,te=nt.useMemo(()=>ne({locale:n,formatOptions:i,prefix:u,suffix:a,minimumFractionDigits:0,maximumFractionDigits:Se,fixedDecimalScale:false}),[n,JSON.stringify(i),u,a,Se]),A=nt.useMemo(()=>He({locale:n,formatOptions:i,allowNegative:p,allowDecimal:c,prefix:u,suffix:a}),[n,JSON.stringify(i),p,c,u,a]),fe=nt.useCallback((f,R)=>{let I=T.getLocaleInfo(),g=R.lastIndexOf(I.decimalSeparator);if(g===-1&&I.decimalSeparator!=="."&&I.groupingSeparator!=="."&&(g=R.lastIndexOf(".")),g===-1||!/\d/.test(U(R.slice(0,g))))return null;let F=U(R.slice(g+1)).match(/^\d+/);if(!F)return null;let s=Math.min(F[0].length,me??20,20);return s===0?null:ne({locale:n,formatOptions:i,prefix:u,suffix:a,minimumFractionDigits:s,maximumFractionDigits:s}).format(f)},[T,n,JSON.stringify(i),u,a,me]),V=nt.useRef(null);nt.useLayoutEffect(()=>{V.current!==null&&r.current&&document.activeElement===r.current&&(r.current.setSelectionRange(V.current,V.current),V.current=null);},[e.inputValue,r]),nt.useEffect(()=>{let f=r.current;if(!f||!m)return;let R=I=>{S||C||document.activeElement===f&&(I.preventDefault(),e._setLastChangeReason("wheel"),I.deltaY<0?e.increment():e.decrement());};return f.addEventListener("wheel",R,{passive:false}),()=>f.removeEventListener("wheel",R)},[m,S,C,e,r]);let z=nt.useRef(false),Ce=nt.useCallback(()=>{z.current=true;},[]),Fe=nt.useCallback(f=>{z.current=false;let R=f.currentTarget.value,I=T.getLocaleInfo(),g=U(R),F;if(M){let s=M(g);s.isIntermediate?F=g:s.value!==null&&v?F=v(s.value):s.value!==null?F=T.format(s.value):F=g,V.current=F.length;}else if(ce){let s=A.parse(g);s.isIntermediate?F=Je(g,I.zero):s.value!==null?F=v?v(s.value):te.format(s.value):F=g===""?"":g,V.current=Pe(R,R.length,F,I,"insertCompositionText");}else F=g,V.current=g.length;e._setLastChangeReason("input"),e.setInputValue(F);},[T,te,A,ce,e,v,M]),Me=nt.useCallback(f=>{let R=f.target.value,I=f.target.selectionStart??R.length,g=f.nativeEvent.inputType,F=T.getLocaleInfo();if(z.current){e.setInputValue(R);return}let s=U(R);p||(s=s.split("-").join("").split(F.minusSign).join("")),c?F.decimalSeparator!=="."&&F.groupingSeparator!=="."&&(s=s.replace(/\./g,(H,x,h)=>/\d/.test(h[x-1]??"")||/\d/.test(h[x+1]??"")?F.decimalSeparator:".")):s=s.split(".").join("").split(F.decimalSeparator).join("");let E,de;if(M){let H=M(s);H.isIntermediate?E=s:H.value!==null?E=v?v(H.value):T.format(H.value):s===""?E="":E=s,V.current=E.length;}else if(ce){let H=A.parse(s);if(H.isIntermediate)E=(!v&&H.value!==null?fe(H.value,s):null)??Je(s,F.zero);else if(H.value!==null)if(v)E=v(H.value);else {E=te.format(H.value);let x=A.parse(E).value;de=x!==null&&Number.isFinite(x)&&te.format(x)===E?x:H.value;}else s===""||!/\d/.test(s)?E="":E=s;v?V.current=E.length:V.current=Pe(R,I,E,F,g);}else E=s,V.current=I;e._setLastChangeReason(E===""?"clear":"input"),e.setInputValue(E,de);},[T,te,A,ce,e,v,M,fe]),le=nt.useCallback(f=>{f.preventDefault();let R=f.clipboardData.getData("text/plain");if(!R)return;let I=R.replace(/[€$£¥₹₺₽﷼฿₩¢₦₨₪₫₱]/g,"").trim(),g=U(I);if(!p){let h=T.getLocaleInfo();g=g.split("-").join("").split(h.minusSign).join("");}if(!c){let h=T.getLocaleInfo();g=g.split(".").join("").split(h.decimalSeparator).join("");}if(e._setLastChangeReason("paste"),M){let h=M(g);if(h.value!==null){let w=v?v(h.value):T.format(h.value);e.setInputValue(w,h.value),V.current=w.length;}return}let F=Vt(g);if(F!==null){let w=i?.style==="percent"?F/100:F,pe=v?v(w):T.format(w);e.setInputValue(pe,w),V.current=pe.length;return}let s=A.parse(g);if(s.value!==null){let h=T.format(s.value);e.setInputValue(h,s.value),V.current=h.length;return}let E=T.getLocaleInfo(),de=new RegExp(`[^0-9${ut(E.decimalSeparator)}${ut(E.minusSign)}-]`,"g"),H=g.replace(de,""),x=A.parse(H);if(x.value!==null){let h=T.format(x.value);e.setInputValue(h,x.value),V.current=h.length;}},[A,T,e,v,M]),je=nt.useCallback(f=>{if(O==="formatted")return;f.preventDefault();let R=String(e.numberValue??"");f.clipboardData.setData("text/plain",R);},[O,e.numberValue]),Y=nt.useCallback(f=>{if(O==="formatted")return;f.preventDefault();let R=String(e.numberValue??"");f.clipboardData.setData("text/plain",R),e._setLastChangeReason("clear"),e.setInputValue("");},[O,e]),$e=nt.useCallback(f=>{if(S||C)return;let R=f.key;if(!f.metaKey&&!f.ctrlKey&&!f.altKey&&c){let I=T.getLocaleInfo();if(R===I.decimalSeparator||R==="."&&I.decimalSeparator!=="."&&I.groupingSeparator!=="."){let F=r.current;if(F){let s=F.value.indexOf(I.decimalSeparator);if(s!==-1){f.preventDefault(),F.setSelectionRange(s+1,s+1);return}}}}if(R==="Backspace"&&!f.shiftKey&&!f.altKey&&!f.metaKey&&!f.ctrlKey){let I=r.current;if(I){let g=I.selectionStart??0,F=I.selectionEnd??g,s=I.value,E=T.getLocaleInfo();if(g===F&&g>=2&&s[g-1]===E.groupingSeparator){f.preventDefault();let x=s.slice(0,g-2)+s.slice(g),h=A.parse(x);e._setLastChangeReason("input");let w;h.value!==null?(w=fe(h.value,x)??te.format(h.value),e.setInputValue(w,h.value)):(w=x,x===""&&e._setLastChangeReason("clear"),e.setInputValue(x)),V.current=Pe(x,g-2,w,E,"deleteContentBackward");return}let de=x=>x!==void 0&&/\p{Nd}/u.test(x),H=x=>x!==void 0&&!de(x)&&x!==E.decimalSeparator&&x!==E.minusSign&&x!=="-";if(g===F&&g===s.length&&g>=1&&H(s[g-1])){let x=g;for(;x>0&&H(s[x-1]);)x--;if(x>0&&de(s[x-1])){f.preventDefault();let h=s.slice(0,x-1)+s.slice(x),w=A.parse(h);e._setLastChangeReason("input");let pe;w.value!==null&&/\p{Nd}/u.test(h)?(pe=fe(w.value,h)??te.format(w.value),e.setInputValue(pe,w.value)):(pe="",e._setLastChangeReason("clear"),e.setInputValue("")),V.current=Pe(h,x-1,pe,E,"deleteContentBackward");return}}}}if(R==="ArrowUp"||R==="ArrowDown"){f.preventDefault();let I=R==="ArrowUp"?1:-1;e._setLastChangeReason("keyboard"),f.shiftKey?I>0?e.increment(B):e.decrement(B):f.metaKey||f.ctrlKey?I>0?e.increment(Z):e.decrement(Z):I>0?e.increment():e.decrement();return}if(R==="PageUp"){f.preventDefault(),e._setLastChangeReason("keyboard"),e.increment(B);return}if(R==="PageDown"){f.preventDefault(),e._setLastChangeReason("keyboard"),e.decrement(B);return}if(R==="Home"){o!==void 0&&(f.preventDefault(),e._setLastChangeReason("keyboard"),e.decrementToMin());return}if(R==="End"){l!==void 0&&(f.preventDefault(),e._setLastChangeReason("keyboard"),e.incrementToMax());return}if(R==="Enter"){e._setLastChangeReason("blur");let I=e.commit();Q?.(I,{reason:"keyboard"});return}},[S,C,e,B,Z,o,l,T,te,A,r,c,fe,Q]),ie=nt.useCallback(f=>{e.setIsFocused(false),e._setLastChangeReason("blur");let R=e.commit();Q?.(R,{reason:"blur"}),G?.(f);},[e,G,Q]),Ue=nt.useCallback(f=>{e.setIsFocused(true),J?.(f);},[e,J]),Ke=Qe(()=>{e._setLastChangeReason("increment"),e.increment();},{delay:ae,interval:X,disabled:S||!e.canIncrement}),ze=Qe(()=>{e._setLastChangeReason("decrement"),e.decrement();},{delay:ae,interval:X,disabled:S||!e.canDecrement}),Ye=nt.useMemo(()=>{if(e.numberValue!=null)return v?v(e.numberValue):T.format(e.numberValue)},[e.numberValue,T,v]),Ve=T.getLocaleInfo(),ye=e.numberValue!==null&&(o!==void 0&&e.numberValue<o||l!==void 0&&e.numberValue>l)||e.validationState==="invalid",ge=nt.useRef(0),[d,D]=nt.useState(false),N=nt.useCallback(f=>{f?(ge.current+=1,D(true)):ge.current>0&&(ge.current-=1,ge.current===0&&D(false));},[]),_=t["aria-labelledby"]??(t["aria-label"]?void 0:d?be:void 0),Le={id:be,htmlFor:ee,ref:N},pt={role:"group","aria-labelledby":_},bt={id:ee,type:"text",inputMode:"decimal",role:"spinbutton",autoComplete:"off",autoCorrect:"off",spellCheck:false,"aria-label":t["aria-label"],"aria-labelledby":_,"aria-describedby":t["aria-describedby"],"aria-valuenow":e.numberValue??void 0,"aria-valuemin":o,"aria-valuemax":l,"aria-valuetext":Ye,"aria-disabled":S||void 0,"aria-readonly":C||void 0,"aria-required":P||void 0,"aria-invalid":ye?true:void 0,"aria-errormessage":ye&&e.validationError?Ee:void 0,disabled:S,readOnly:C,required:P,value:e.inputValue,onChange:Me,onKeyDown:$e,onBlur:ie,onFocus:Ue,onPaste:le,onCopy:O!=="formatted"?je:void 0,onCut:O!=="formatted"?Y:void 0,onCompositionStart:Ce,onCompositionEnd:Fe,style:Ve.isRTL?{direction:"ltr",textAlign:"right",unicodeBidi:"embed"}:void 0,"data-disabled":S?"":void 0,"data-readonly":C?"":void 0,"data-required":P?"":void 0,"data-invalid":ye?"":void 0,"data-rtl":Ve.isRTL?"":void 0},gt=L?{type:"hidden",name:L,value:e.numberValue??"","aria-hidden":true}:null,vt={type:"button",tabIndex:-1,"aria-label":"Increase",disabled:S||!e.canIncrement,...Ke,"data-disabled":S||!e.canIncrement?"":void 0},Rt={type:"button",tabIndex:-1,"aria-label":"Decrease",disabled:S||!e.canDecrement,...ze,"data-disabled":S||!e.canDecrement?"":void 0};return {labelProps:Le,groupProps:pt,inputProps:bt,hiddenInputProps:gt,incrementButtonProps:vt,decrementButtonProps:Rt,descriptionProps:{id:Ne},errorMessageProps:{id:Ee,role:"alert","aria-live":"polite"}}}function Ht(t,e={}){let{locale:r,formatOptions:n,prefix:i,suffix:o,minimumFractionDigits:l,maximumFractionDigits:p,fixedDecimalScale:c}=e,m=nt.useMemo(()=>ne({locale:r,formatOptions:n,prefix:i,suffix:o,minimumFractionDigits:l,maximumFractionDigits:p,fixedDecimalScale:c}),[r,JSON.stringify(n),i,o,l,p,c]);return nt.useMemo(()=>t==null?"":m.format(t),[t,m])}var ke=nt.createContext(null);function j(){let t=nt.useContext(ke);if(!t)throw new Error("[raqam] NumberField sub-components must be used inside <NumberField.Root>.");return t}function ft(t,e={}){let{direction:r="horizontal",pixelSensitivity:n=4}=e,[i,o]=nt.useState(false),l=nt.useRef(t);l.current=t;let p=nt.useRef(r);p.current=r;let c=nt.useRef(n);c.current=n;let m=nt.useRef(false),b=nt.useRef(0),u=nt.useRef(null),a=nt.useRef({x:0,y:0}),[L,S]=nt.useState({x:0,y:0}),C=nt.useRef(y=>{if(!m.current)return;let O=a.current.x+y.movementX,ae=a.current.y+y.movementY;a.current={x:O,y:ae},S({x:O,y:ae});let X=p.current,v=0;X==="horizontal"?v=y.movementX:X==="vertical"?v=-y.movementY:v=Math.abs(y.movementX)>=Math.abs(y.movementY)?y.movementX:-y.movementY,b.current+=v;let M=c.current;for(;b.current>=M;)l.current.increment(),b.current-=M;for(;b.current<=-M;)l.current.decrement(),b.current+=M;}),P=nt.useRef(()=>{document.pointerLockElement===u.current?(m.current=true,b.current=0,o(true),l.current.setIsScrubbing(true),document.addEventListener("mousemove",C.current)):(m.current=false,b.current=0,document.removeEventListener("mousemove",C.current),o(false),l.current.setIsScrubbing(false));});nt.useEffect(()=>{let y=P.current;return document.addEventListener("pointerlockchange",y),()=>{document.removeEventListener("pointerlockchange",y),document.removeEventListener("mousemove",C.current);}},[]);let J=nt.useCallback(y=>{if(l.current.options.disabled||l.current.options.readOnly||y.button!==0)return;let O=y.currentTarget;u.current=O,a.current={x:y.clientX,y:y.clientY},S({x:y.clientX,y:y.clientY}),O.requestPointerLock();},[]),G=nt.useCallback(y=>{l.current.options.disabled||l.current.options.readOnly||(y.key==="ArrowRight"||y.key==="ArrowUp"?(y.preventDefault(),l.current.increment()):(y.key==="ArrowLeft"||y.key==="ArrowDown")&&(y.preventDefault(),l.current.decrement()));},[]),re=r==="horizontal"?"ew-resize":r==="vertical"?"ns-resize":"move",se={role:"slider",tabIndex:t.options.disabled?-1:0,style:{cursor:t.options.disabled?void 0:re,userSelect:"none",WebkitUserSelect:"none"},"aria-label":"Scrub to change value","data-scrubbing":i?"":void 0,onPointerDown:J,onKeyDown:G};return {isScrubbing:i,scrubAreaProps:se,virtualCursor:L}}function ue(t,e,r,n){if(!e)return t;let i={...t.props};if(n!=null&&(i.ref=n),typeof e=="function")return e(i,r);let o=Object.assign({},i,e.props);return n!=null&&(o.ref=n),nt__default.default.cloneElement(e,o)}var dt=Number.parseInt(nt__default.default.version,10)>=19,Bt=dt;function _t(t){return dt?t.props.ref:t.ref}function jt(...t){let e=n=>{let i=[];for(let o of t)if(o!=null)if(typeof o=="function"){let l=o(n);i.push(typeof l=="function"?l:()=>o(null));}else o.current=n,i.push(()=>{o.current=null;});return i};if(Bt)return n=>{let i=e(n);return ()=>{for(let o of i)o();}};let r=[];return n=>{for(let i of r)i();r=n==null?[]:e(n);}}function $t(t,e){let{options:r}=t;return {"data-disabled":r.disabled?"":void 0,"data-readonly":r.readOnly?"":void 0,"data-required":r.required?"":void 0,"data-scrubbing":t.isScrubbing?"":void 0,"data-focused":t.isFocused?"":void 0,"data-invalid":e?"":void 0}}var Ut=new Set(["className","style","id","tabIndex","title","role","aria-label","data-testid","onClick","onMouseEnter","onMouseLeave"]);function Kt(t){let e={},r={};for(let[n,i]of Object.entries(t))Ut.has(n)||n.startsWith("data-")||n.startsWith("aria-")?r[n]=i:e[n]=i;return {fieldProps:e,divProps:r}}var zt=nt.forwardRef(function({children:e,onValueChange:r,onValueCommitted:n,...i},o){let l=nt.useRef(null),{fieldProps:p,divProps:c}=Kt(i),m=p,b=nt.useRef(r);b.current=r;let u=nt.useRef(null),a={...m,onValueCommitted:n,onChange:P=>{m.onChange?.(P),b.current&&u.current&&b.current(P,{reason:u.current._getLastChangeReason(),formattedValue:u.current.inputValue});}},L=Xe(a);u.current=L;let S=et(a,L,l),C=L.validationState==="invalid"||L.numberValue!==null&&(m.minValue!==void 0&&L.numberValue<m.minValue||m.maxValue!==void 0&&L.numberValue>m.maxValue);return jsxRuntime.jsx(ke.Provider,{value:{state:L,aria:S,inputRef:l,props:a},children:jsxRuntime.jsx("div",{ref:o,...c,...$t(L,C),children:e})})}),Yt=nt.forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:l}=j(),{ref:p,...c}=o.labelProps,m=nt__default.default.isValidElement(e)?_t(e):void 0,b=nt.useMemo(()=>jt(i,p,m),[i,p,m]),u=jsxRuntime.jsx("label",{ref:b,...c,...n,children:r});return ue(u,e,l,b)}),qt=nt.forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:l}=j(),p=jsxRuntime.jsx("div",{ref:i,...o.groupProps,...n,children:r});return ue(p,e,l)}),Wt=nt.forwardRef(function({render:e,...r},n){let{aria:i,state:o,inputRef:l}=j(),p=jsxRuntime.jsx("input",{ref:l,...i.inputProps,...r});return ue(p,e,o)}),Jt=nt.forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:l}=j(),p=jsxRuntime.jsx("button",{ref:i,...o.incrementButtonProps,...n,children:r??"+"});return ue(p,e,l)}),Gt=nt.forwardRef(function({render:e,children:r,...n},i){let{aria:o,state:l}=j(),p=jsxRuntime.jsx("button",{ref:i,...o.decrementButtonProps,...n,children:r??"\u2212"});return ue(p,e,l)}),Xt=function(){let{aria:e}=j();return e.hiddenInputProps?jsxRuntime.jsx("input",{...e.hiddenInputProps}):null},Qt=nt.forwardRef(function({render:e,children:r,direction:n="horizontal",pixelSensitivity:i=4,...o},l){let{state:p}=j(),{scrubAreaProps:c}=ft(p,{direction:n,pixelSensitivity:i}),m=jsxRuntime.jsx("span",{ref:l,...c,...o,children:r});return ue(m,e,p)}),Zt=nt.forwardRef(function({render:e,children:r,style:n,...i},o){let{state:l}=j();if(!l.isScrubbing)return null;let p=jsxRuntime.jsx("span",{ref:o,style:{position:"fixed",pointerEvents:"none",zIndex:9999,...n},...i,children:r});return ue(p,e,l)}),en=nt.forwardRef(function({children:e,...r},n){let{aria:i}=j();return jsxRuntime.jsx("p",{ref:n,...i.descriptionProps,...r,children:e})}),tn=nt.forwardRef(function({children:e,...r},n){let{aria:i,state:o}=j(),l=e??o.validationError??null;return l?jsxRuntime.jsx("p",{ref:n,...i.errorMessageProps,...r,children:l}):null}),nn=nt.forwardRef(function({render:e,...r},n){let{state:i}=j(),o=jsxRuntime.jsx("span",{ref:n,"aria-hidden":"true",...r,children:i.inputValue});return ue(o,e,i)}),rn={Root:zt,Label:Yt,Group:qt,Input:Wt,Increment:Jt,Decrement:Gt,HiddenInput:Xt,ScrubArea:Qt,ScrubAreaCursor:Zt,Description:en,ErrorMessage:tn,Formatted:nn};exports.NumberField=rn;exports.NumberFieldContext=ke;exports.useControllableState=qe;exports.useNumberField=et;exports.useNumberFieldContext=j;exports.useNumberFieldFormat=Ht;exports.useNumberFieldState=Xe;//# sourceMappingURL=react.cjs.map
2
+ 'use strict';var chunkGAKIDRGS_cjs=require('./chunk-GAKIDRGS.cjs');require('./chunk-YUKLLK4G.cjs'),require('./chunk-ZKLZ7UKZ.cjs');Object.defineProperty(exports,"NumberField",{enumerable:true,get:function(){return chunkGAKIDRGS_cjs.i}});Object.defineProperty(exports,"NumberFieldContext",{enumerable:true,get:function(){return chunkGAKIDRGS_cjs.g}});Object.defineProperty(exports,"useControllableState",{enumerable:true,get:function(){return chunkGAKIDRGS_cjs.a}});Object.defineProperty(exports,"useNumberField",{enumerable:true,get:function(){return chunkGAKIDRGS_cjs.d}});Object.defineProperty(exports,"useNumberFieldContext",{enumerable:true,get:function(){return chunkGAKIDRGS_cjs.h}});Object.defineProperty(exports,"useNumberFieldFormat",{enumerable:true,get:function(){return chunkGAKIDRGS_cjs.e}});Object.defineProperty(exports,"useNumberFieldState",{enumerable:true,get:function(){return chunkGAKIDRGS_cjs.b}});//# sourceMappingURL=react.cjs.map
3
3
  //# sourceMappingURL=react.cjs.map