@1money/react-ui 1.16.0 → 1.17.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 (268) hide show
  1. package/AGENTS.md +393 -0
  2. package/es/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  3. package/es/components/CheckboxGroup/CheckboxGroup.js +94 -91
  4. package/es/components/CheckboxGroup/interface.d.ts +21 -15
  5. package/es/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  6. package/es/components/Form/Form.d.ts +29 -0
  7. package/es/components/Form/Form.js +188 -0
  8. package/es/components/Form/FormItem.d.ts +4 -0
  9. package/es/components/Form/FormItem.js +165 -0
  10. package/es/components/Form/FormItemContent.d.ts +18 -0
  11. package/es/components/Form/FormItemContent.js +146 -0
  12. package/es/components/Form/constants.d.ts +46 -0
  13. package/es/components/Form/constants.js +65 -0
  14. package/es/components/Form/helper.d.ts +120 -0
  15. package/es/components/Form/helper.js +284 -0
  16. package/es/components/Form/index.d.ts +20 -0
  17. package/es/components/Form/index.js +21 -0
  18. package/es/components/Form/interface.d.ts +238 -0
  19. package/es/components/Form/interface.js +2 -0
  20. package/es/components/Form/style/Form.css +1 -0
  21. package/es/components/Form/style/Form.scss +167 -0
  22. package/es/components/Form/style/css.js +2 -0
  23. package/es/components/Form/style/index.d.ts +1 -0
  24. package/es/components/Form/style/index.js +2 -0
  25. package/es/components/Form/useFormItemContext.d.ts +32 -0
  26. package/es/components/Form/useFormItemContext.js +55 -0
  27. package/es/components/Form/useFormItemWatch.d.ts +51 -0
  28. package/es/components/Form/useFormItemWatch.js +69 -0
  29. package/es/components/Form/useValidationTrigger.d.ts +40 -0
  30. package/es/components/Form/useValidationTrigger.js +74 -0
  31. package/es/components/Input/Input.js +72 -74
  32. package/es/components/Input/interface.d.ts +9 -9
  33. package/es/components/InputAmount/InputAmount.js +228 -276
  34. package/es/components/InputAmount/helper.d.ts +46 -0
  35. package/es/components/InputAmount/helper.js +115 -0
  36. package/es/components/ProForm/ProForm.d.ts +33 -0
  37. package/es/components/ProForm/ProForm.js +208 -0
  38. package/es/components/ProForm/ProFormDependency.d.ts +12 -0
  39. package/es/components/ProForm/ProFormDependency.js +61 -0
  40. package/es/components/ProForm/ProFormList.d.ts +19 -0
  41. package/es/components/ProForm/ProFormList.js +348 -0
  42. package/es/components/ProForm/Submitter.d.ts +21 -0
  43. package/es/components/ProForm/Submitter.js +76 -0
  44. package/es/components/ProForm/constants.d.ts +34 -0
  45. package/es/components/ProForm/constants.js +40 -0
  46. package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  47. package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
  48. package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  49. package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
  50. package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  51. package/es/components/ProForm/fields/ProFormDigit.js +15 -0
  52. package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  53. package/es/components/ProForm/fields/ProFormMoney.js +10 -0
  54. package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  55. package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
  56. package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  57. package/es/components/ProForm/fields/ProFormPassword.js +16 -0
  58. package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  59. package/es/components/ProForm/fields/ProFormRadio.js +13 -0
  60. package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  61. package/es/components/ProForm/fields/ProFormSelect.js +13 -0
  62. package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  63. package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
  64. package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
  65. package/es/components/ProForm/fields/ProFormText.js +15 -0
  66. package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  67. package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
  68. package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
  69. package/es/components/ProForm/fields/createProFormField.js +200 -0
  70. package/es/components/ProForm/fields/index.d.ts +12 -0
  71. package/es/components/ProForm/fields/index.js +13 -0
  72. package/es/components/ProForm/index.d.ts +7 -0
  73. package/es/components/ProForm/index.js +7 -0
  74. package/es/components/ProForm/interface.d.ts +306 -0
  75. package/es/components/ProForm/interface.js +2 -0
  76. package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  77. package/es/components/ProForm/layouts/DrawerForm.js +79 -0
  78. package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
  79. package/es/components/ProForm/layouts/ModalForm.js +89 -0
  80. package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  81. package/es/components/ProForm/layouts/QueryFilter.js +132 -0
  82. package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
  83. package/es/components/ProForm/layouts/StepsForm.js +295 -0
  84. package/es/components/ProForm/layouts/index.d.ts +4 -0
  85. package/es/components/ProForm/layouts/index.js +5 -0
  86. package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  87. package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
  88. package/es/components/ProForm/style/ProForm.module.css +1 -0
  89. package/es/components/ProForm/style/ProForm.module.scss +59 -0
  90. package/es/components/ProForm/style/css.js +3 -0
  91. package/es/components/ProForm/style/index.d.ts +1 -0
  92. package/es/components/ProForm/style/index.js +3 -0
  93. package/es/components/ProForm/utils.d.ts +72 -0
  94. package/es/components/ProForm/utils.js +206 -0
  95. package/es/components/RadioGroup/RadioGroup.js +46 -23
  96. package/es/components/RadioGroup/interface.d.ts +3 -1
  97. package/es/components/Select/Select.d.ts +1 -1
  98. package/es/components/Select/Select.js +113 -106
  99. package/es/components/Select/constants.d.ts +18 -0
  100. package/es/components/Select/constants.js +19 -0
  101. package/es/components/Sidebar/Sidebar.js +21 -23
  102. package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
  103. package/es/components/Sidebar/SidebarLogo.js +33 -0
  104. package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
  105. package/es/components/Sidebar/SimplySidebar.js +18 -22
  106. package/es/components/Sidebar/Stepper.js +14 -14
  107. package/es/components/Sidebar/constants.d.ts +16 -0
  108. package/es/components/Sidebar/constants.js +17 -0
  109. package/es/components/Sidebar/style/Stepper.css +1 -1
  110. package/es/components/Sidebar/style/Stepper.scss +11 -1
  111. package/es/components/Switch/Switch.js +28 -25
  112. package/es/components/Switch/interface.d.ts +9 -4
  113. package/es/components/useControlledState/index.d.ts +14 -0
  114. package/es/components/useControlledState/index.js +32 -0
  115. package/es/components/useEventCallback/index.d.ts +11 -0
  116. package/es/components/useEventCallback/index.js +17 -0
  117. package/es/components/useLayoutEffect/index.d.ts +11 -0
  118. package/es/components/useLayoutEffect/index.js +17 -0
  119. package/es/components/useLayoutState/index.d.ts +13 -0
  120. package/es/components/useLayoutState/index.js +71 -0
  121. package/es/components/useMemoizedFn/index.d.ts +12 -0
  122. package/es/components/useMemoizedFn/index.js +27 -0
  123. package/es/components/usePrevious/index.d.ts +11 -0
  124. package/es/components/usePrevious/index.js +19 -0
  125. package/es/components/useSafeState/index.d.ts +12 -0
  126. package/es/components/useSafeState/index.js +24 -0
  127. package/es/components/useSyncState/index.d.ts +14 -0
  128. package/es/components/useSyncState/index.js +37 -0
  129. package/es/components/useUpdateEffect/index.d.ts +9 -0
  130. package/es/components/useUpdateEffect/index.js +19 -0
  131. package/es/index.css +1 -1
  132. package/es/index.d.ts +21 -2
  133. package/es/index.js +19 -1
  134. package/jest.setup.d.ts +1 -0
  135. package/jest.setup.ts +1 -0
  136. package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
  137. package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
  138. package/lib/components/CheckboxGroup/interface.d.ts +21 -15
  139. package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
  140. package/lib/components/Form/Form.d.ts +29 -0
  141. package/lib/components/Form/Form.js +199 -0
  142. package/lib/components/Form/FormItem.d.ts +4 -0
  143. package/lib/components/Form/FormItem.js +176 -0
  144. package/lib/components/Form/FormItemContent.d.ts +18 -0
  145. package/lib/components/Form/FormItemContent.js +156 -0
  146. package/lib/components/Form/constants.d.ts +46 -0
  147. package/lib/components/Form/constants.js +71 -0
  148. package/lib/components/Form/helper.d.ts +120 -0
  149. package/lib/components/Form/helper.js +290 -0
  150. package/lib/components/Form/index.d.ts +20 -0
  151. package/lib/components/Form/index.js +45 -0
  152. package/lib/components/Form/interface.d.ts +238 -0
  153. package/lib/components/Form/interface.js +6 -0
  154. package/lib/components/Form/style/Form.css +1 -0
  155. package/lib/components/Form/style/Form.scss +167 -0
  156. package/lib/components/Form/style/css.js +4 -0
  157. package/lib/components/Form/style/index.d.ts +1 -0
  158. package/lib/components/Form/style/index.js +4 -0
  159. package/lib/components/Form/useFormItemContext.d.ts +32 -0
  160. package/lib/components/Form/useFormItemContext.js +62 -0
  161. package/lib/components/Form/useFormItemWatch.d.ts +51 -0
  162. package/lib/components/Form/useFormItemWatch.js +76 -0
  163. package/lib/components/Form/useValidationTrigger.d.ts +40 -0
  164. package/lib/components/Form/useValidationTrigger.js +81 -0
  165. package/lib/components/Input/Input.js +71 -73
  166. package/lib/components/Input/interface.d.ts +9 -9
  167. package/lib/components/InputAmount/InputAmount.js +230 -278
  168. package/lib/components/InputAmount/helper.d.ts +46 -0
  169. package/lib/components/InputAmount/helper.js +122 -0
  170. package/lib/components/ProForm/ProForm.d.ts +33 -0
  171. package/lib/components/ProForm/ProForm.js +216 -0
  172. package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
  173. package/lib/components/ProForm/ProFormDependency.js +67 -0
  174. package/lib/components/ProForm/ProFormList.d.ts +19 -0
  175. package/lib/components/ProForm/ProFormList.js +355 -0
  176. package/lib/components/ProForm/Submitter.d.ts +21 -0
  177. package/lib/components/ProForm/Submitter.js +83 -0
  178. package/lib/components/ProForm/constants.d.ts +34 -0
  179. package/lib/components/ProForm/constants.js +46 -0
  180. package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
  181. package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
  182. package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
  183. package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
  184. package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
  185. package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
  186. package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
  187. package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
  188. package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
  189. package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
  190. package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
  191. package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
  192. package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
  193. package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
  194. package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
  195. package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
  196. package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
  197. package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
  198. package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
  199. package/lib/components/ProForm/fields/ProFormText.js +22 -0
  200. package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
  201. package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
  202. package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
  203. package/lib/components/ProForm/fields/createProFormField.js +208 -0
  204. package/lib/components/ProForm/fields/index.d.ts +12 -0
  205. package/lib/components/ProForm/fields/index.js +90 -0
  206. package/lib/components/ProForm/index.d.ts +7 -0
  207. package/lib/components/ProForm/index.js +73 -0
  208. package/lib/components/ProForm/interface.d.ts +306 -0
  209. package/lib/components/ProForm/interface.js +6 -0
  210. package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
  211. package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
  212. package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
  213. package/lib/components/ProForm/layouts/ModalForm.js +96 -0
  214. package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
  215. package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
  216. package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
  217. package/lib/components/ProForm/layouts/StepsForm.js +302 -0
  218. package/lib/components/ProForm/layouts/index.d.ts +4 -0
  219. package/lib/components/ProForm/layouts/index.js +40 -0
  220. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
  221. package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
  222. package/lib/components/ProForm/style/ProForm.module.css +1 -0
  223. package/lib/components/ProForm/style/ProForm.module.scss +59 -0
  224. package/lib/components/ProForm/style/css.js +4 -0
  225. package/lib/components/ProForm/style/index.d.ts +1 -0
  226. package/lib/components/ProForm/style/index.js +4 -0
  227. package/lib/components/ProForm/utils.d.ts +72 -0
  228. package/lib/components/ProForm/utils.js +213 -0
  229. package/lib/components/RadioGroup/RadioGroup.js +45 -22
  230. package/lib/components/RadioGroup/interface.d.ts +3 -1
  231. package/lib/components/Select/Select.d.ts +1 -1
  232. package/lib/components/Select/Select.js +114 -107
  233. package/lib/components/Select/constants.d.ts +18 -0
  234. package/lib/components/Select/constants.js +25 -0
  235. package/lib/components/Sidebar/Sidebar.js +21 -23
  236. package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
  237. package/lib/components/Sidebar/SidebarLogo.js +39 -0
  238. package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
  239. package/lib/components/Sidebar/SimplySidebar.js +17 -21
  240. package/lib/components/Sidebar/Stepper.js +14 -14
  241. package/lib/components/Sidebar/constants.d.ts +16 -0
  242. package/lib/components/Sidebar/constants.js +23 -0
  243. package/lib/components/Sidebar/style/Stepper.css +1 -1
  244. package/lib/components/Sidebar/style/Stepper.scss +11 -1
  245. package/lib/components/Switch/Switch.js +27 -24
  246. package/lib/components/Switch/interface.d.ts +9 -4
  247. package/lib/components/useControlledState/index.d.ts +14 -0
  248. package/lib/components/useControlledState/index.js +39 -0
  249. package/lib/components/useEventCallback/index.d.ts +11 -0
  250. package/lib/components/useEventCallback/index.js +24 -0
  251. package/lib/components/useLayoutEffect/index.d.ts +11 -0
  252. package/lib/components/useLayoutEffect/index.js +23 -0
  253. package/lib/components/useLayoutState/index.d.ts +13 -0
  254. package/lib/components/useLayoutState/index.js +79 -0
  255. package/lib/components/useMemoizedFn/index.d.ts +12 -0
  256. package/lib/components/useMemoizedFn/index.js +33 -0
  257. package/lib/components/usePrevious/index.d.ts +11 -0
  258. package/lib/components/usePrevious/index.js +25 -0
  259. package/lib/components/useSafeState/index.d.ts +12 -0
  260. package/lib/components/useSafeState/index.js +31 -0
  261. package/lib/components/useSyncState/index.d.ts +14 -0
  262. package/lib/components/useSyncState/index.js +44 -0
  263. package/lib/components/useUpdateEffect/index.d.ts +9 -0
  264. package/lib/components/useUpdateEffect/index.js +25 -0
  265. package/lib/index.css +1 -1
  266. package/lib/index.d.ts +21 -2
  267. package/lib/index.js +213 -1
  268. package/package.json +16 -1
@@ -0,0 +1,46 @@
1
+ export declare const MIN_INPUT_WIDTH = 33;
2
+ export declare const DECIMAL_POINT_OFFSET = 2;
3
+ export declare const SKELETON_LABEL_WIDTH = "72px";
4
+ export declare const SKELETON_LABEL_HEIGHT = "18px";
5
+ export declare const SPINNER_STROKE_WIDTH = "4";
6
+ export declare const CSS_VAR_INPUT_WIDTH = "--input-width";
7
+ export declare const DEFAULT_TYPE: "primary";
8
+ export declare const DEFAULT_SIZE: "large";
9
+ export declare const DEFAULT_PLACEHOLDER = "0";
10
+ export declare const DEFAULT_PREFIX_CLS = "input-amount";
11
+ export declare const CHAR_MINUS = "-";
12
+ export declare const CHAR_DOT = ".";
13
+ export declare const CHAR_COMMA = ",";
14
+ export declare const isNumericType: (val: unknown) => val is number | bigint;
15
+ export declare const normalizeNumberInput: (val: string) => string;
16
+ export declare const stripCommas: (val: string) => string;
17
+ export declare const stripMinus: (val: string) => string;
18
+ export declare const formatThousands: (val: string, allowNegative?: boolean) => string;
19
+ export declare const calcValueInRange: (val: string, min?: number | bigint, max?: number | bigint) => string;
20
+ /**
21
+ * Normalize a raw numeric value string:
22
+ * - Strips leading zeros via BigNumber
23
+ * - Preserves negative-zero representation when applicable
24
+ * - Appends trailing decimal point if present in input
25
+ */
26
+ export declare const normalizeValue: (val: string, hasDecimalPoint: boolean, negative?: boolean) => string;
27
+ export declare const truncateFractionDigits: (val: string, maxDecimals: number) => {
28
+ int: string;
29
+ truncated: string;
30
+ overflow: boolean;
31
+ };
32
+ export declare const calcGapWidth: (hasPrefix: boolean, hasSuffix: boolean, hasCurrency: boolean) => 0 | 8 | 16 | 24;
33
+ export interface ParsedInput {
34
+ val: string;
35
+ hasDecimalPoint: boolean;
36
+ isStandaloneMinus: boolean;
37
+ }
38
+ /**
39
+ * Parse and sanitize a raw string input value.
40
+ * Returns `null` if the value is invalid and should be rejected.
41
+ */
42
+ export declare const parseRawInput: (raw: string, negative?: boolean) => ParsedInput | null;
43
+ /**
44
+ * Ensure a numeric value is non-negative when `negative` is not allowed.
45
+ */
46
+ export declare const absValue: (val: number | bigint) => number | bigint;
@@ -0,0 +1,115 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
2
+ import BigNumber from 'bignumber.js';
3
+ import { numericFormatter } from 'react-number-format';
4
+ export var MIN_INPUT_WIDTH = 33;
5
+ export var DECIMAL_POINT_OFFSET = 2;
6
+ export var SKELETON_LABEL_WIDTH = '72px';
7
+ export var SKELETON_LABEL_HEIGHT = '18px';
8
+ export var SPINNER_STROKE_WIDTH = '4';
9
+ export var CSS_VAR_INPUT_WIDTH = '--input-width';
10
+ export var DEFAULT_TYPE = 'primary';
11
+ export var DEFAULT_SIZE = 'large';
12
+ export var DEFAULT_PLACEHOLDER = '0';
13
+ export var DEFAULT_PREFIX_CLS = 'input-amount';
14
+ export var CHAR_MINUS = '-';
15
+ export var CHAR_DOT = '.';
16
+ export var CHAR_COMMA = ',';
17
+ var GAP_SINGLE = 8;
18
+ var GAP_DOUBLE = 16;
19
+ var GAP_TRIPLE = 24;
20
+ /** Fullwidth decimal/period → ASCII dot, fullwidth comma → ASCII comma */
21
+ var FULLWIDTH_DOT_RE = /[\u3002\uff0e\uff61]/g;
22
+ var FULLWIDTH_COMMA_RE = /[\uFF0C]/g;
23
+ var MINUS_RE = /-/g;
24
+ var TRAILING_DECIMALS_RE = /\.(\d+)$/;
25
+ export var isNumericType = function isNumericType(val) {
26
+ return typeof val === 'number' || typeof val === 'bigint';
27
+ };
28
+ export var normalizeNumberInput = function normalizeNumberInput(val) {
29
+ return val.replace(FULLWIDTH_DOT_RE, CHAR_DOT).replace(FULLWIDTH_COMMA_RE, CHAR_COMMA);
30
+ };
31
+ export var stripCommas = function stripCommas(val) {
32
+ return val.split(CHAR_COMMA).join('');
33
+ };
34
+ export var stripMinus = function stripMinus(val) {
35
+ return val.replace(MINUS_RE, '');
36
+ };
37
+ export var formatThousands = function formatThousands(val, allowNegative) {
38
+ return numericFormatter(val, {
39
+ thousandSeparator: true,
40
+ allowNegative: allowNegative
41
+ });
42
+ };
43
+ export var calcValueInRange = function calcValueInRange(val, min, max) {
44
+ if (val === '' || val === CHAR_MINUS || isNaN(+val)) return val;
45
+ var bnVal = BigNumber(val);
46
+ if (isNumericType(min) && bnVal.lt(BigNumber(min))) return "".concat(min);
47
+ if (isNumericType(max) && bnVal.gt(BigNumber(max))) return "".concat(max);
48
+ return val;
49
+ };
50
+ /**
51
+ * Normalize a raw numeric value string:
52
+ * - Strips leading zeros via BigNumber
53
+ * - Preserves negative-zero representation when applicable
54
+ * - Appends trailing decimal point if present in input
55
+ */
56
+ export var normalizeValue = function normalizeValue(val, hasDecimalPoint, negative) {
57
+ var _a, _b, _c;
58
+ var decimals = (_c = (_b = (_a = val.match(TRAILING_DECIMALS_RE)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
59
+ var bn = BigNumber(val);
60
+ var normalized = bn.toFixed(decimals);
61
+ if (negative && val.trim().startsWith(CHAR_MINUS) && bn.isZero()) {
62
+ normalized = normalized.startsWith(CHAR_MINUS) ? normalized : "".concat(CHAR_MINUS).concat(normalized);
63
+ }
64
+ return "".concat(normalized).concat(hasDecimalPoint ? CHAR_DOT : '').trim();
65
+ };
66
+ export var truncateFractionDigits = function truncateFractionDigits(val, maxDecimals) {
67
+ var _val$split = val.split(CHAR_DOT),
68
+ _val$split2 = _slicedToArray(_val$split, 2),
69
+ _int = _val$split2[0],
70
+ decimal = _val$split2[1];
71
+ if (decimal != null && decimal.length > maxDecimals) {
72
+ return {
73
+ "int": _int,
74
+ truncated: "".concat(_int).concat(CHAR_DOT).concat(decimal.slice(0, maxDecimals)),
75
+ overflow: true
76
+ };
77
+ }
78
+ return {
79
+ "int": _int,
80
+ truncated: val,
81
+ overflow: false
82
+ };
83
+ };
84
+ export var calcGapWidth = function calcGapWidth(hasPrefix, hasSuffix, hasCurrency) {
85
+ var count = +hasPrefix + +hasSuffix + +hasCurrency;
86
+ if (count >= 3) return GAP_TRIPLE;
87
+ if (count === 2) return GAP_DOUBLE;
88
+ if (count === 1) return GAP_SINGLE;
89
+ return 0;
90
+ };
91
+ /**
92
+ * Parse and sanitize a raw string input value.
93
+ * Returns `null` if the value is invalid and should be rejected.
94
+ */
95
+ export var parseRawInput = function parseRawInput(raw, negative) {
96
+ var val = stripCommas(normalizeNumberInput(raw));
97
+ var hasDecimalPoint = val.endsWith(CHAR_DOT);
98
+ if (hasDecimalPoint) val = val.slice(0, -1);
99
+ if (!negative && val.includes(CHAR_MINUS)) return null;
100
+ var isStandaloneMinus = !!negative && val === CHAR_MINUS;
101
+ if (!isStandaloneMinus && isNaN(+val)) return null;
102
+ return {
103
+ val: val,
104
+ hasDecimalPoint: hasDecimalPoint,
105
+ isStandaloneMinus: isStandaloneMinus
106
+ };
107
+ };
108
+ /**
109
+ * Ensure a numeric value is non-negative when `negative` is not allowed.
110
+ */
111
+ export var absValue = function absValue(val) {
112
+ if (typeof val === 'number') return Math.abs(val);
113
+ return val < BigInt(0) ? -val : val;
114
+ };
115
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvSW5wdXRBbW91bnQvaGVscGVyLnRzIiwiY29tcG9uZW50cy9JbnB1dEFtb3VudC9oZWxwZXIuanMiXSwibmFtZXMiOlsiQmlnTnVtYmVyIiwibnVtZXJpY0Zvcm1hdHRlciIsIk1JTl9JTlBVVF9XSURUSCIsIkRFQ0lNQUxfUE9JTlRfT0ZGU0VUIiwiU0tFTEVUT05fTEFCRUxfV0lEVEgiLCJTS0VMRVRPTl9MQUJFTF9IRUlHSFQiLCJTUElOTkVSX1NUUk9LRV9XSURUSCIsIkNTU19WQVJfSU5QVVRfV0lEVEgiLCJERUZBVUxUX1RZUEUiLCJERUZBVUxUX1NJWkUiLCJERUZBVUxUX1BMQUNFSE9MREVSIiwiREVGQVVMVF9QUkVGSVhfQ0xTIiwiQ0hBUl9NSU5VUyIsIkNIQVJfRE9UIiwiQ0hBUl9DT01NQSIsIkdBUF9TSU5HTEUiLCJHQVBfRE9VQkxFIiwiR0FQX1RSSVBMRSIsIkZVTExXSURUSF9ET1RfUkUiLCJGVUxMV0lEVEhfQ09NTUFfUkUiLCJNSU5VU19SRSIsIlRSQUlMSU5HX0RFQ0lNQUxTX1JFIiwiaXNOdW1lcmljVHlwZSIsInZhbCIsIm5vcm1hbGl6ZU51bWJlcklucHV0IiwicmVwbGFjZSIsInN0cmlwQ29tbWFzIiwic3BsaXQiLCJqb2luIiwic3RyaXBNaW51cyIsImZvcm1hdFRob3VzYW5kcyIsImFsbG93TmVnYXRpdmUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImNhbGNWYWx1ZUluUmFuZ2UiLCJtaW4iLCJtYXgiLCJpc05hTiIsImJuVmFsIiwibHQiLCJjb25jYXQiLCJndCIsIm5vcm1hbGl6ZVZhbHVlIiwiaGFzRGVjaW1hbFBvaW50IiwibmVnYXRpdmUiLCJfYSIsIl9iIiwiX2MiLCJkZWNpbWFscyIsIm1hdGNoIiwibGVuZ3RoIiwiYm4iLCJub3JtYWxpemVkIiwidG9GaXhlZCIsInRyaW0iLCJzdGFydHNXaXRoIiwiaXNaZXJvIiwidHJ1bmNhdGVGcmFjdGlvbkRpZ2l0cyIsIm1heERlY2ltYWxzIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJpbnQiLCJkZWNpbWFsIiwidHJ1bmNhdGVkIiwic2xpY2UiLCJvdmVyZmxvdyIsImNhbGNHYXBXaWR0aCIsImhhc1ByZWZpeCIsImhhc1N1ZmZpeCIsImhhc0N1cnJlbmN5IiwiY291bnQiLCJwYXJzZVJhd0lucHV0IiwicmF3IiwiZW5kc1dpdGgiLCJpbmNsdWRlcyIsImlzU3RhbmRhbG9uZU1pbnVzIiwiYWJzVmFsdWUiLCJNYXRoIiwiYWJzIiwiQmlnSW50Il0sIm1hcHBpbmdzIjoiO0FBQUEsT0FBT0EsU0FBUyxNQUFNLGNBQWM7QUFDcEMsU0FBU0MsZ0JBQWdCLFFBQVEscUJBQXFCO0FBRXRELE9BQU8sSUFBTUMsZUFBZSxHQUFHLEVBQUU7QUFDakMsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRyxDQUFDO0FBQ3JDLE9BQU8sSUFBTUMsb0JBQW9CLEdBQUcsTUFBTTtBQUMxQyxPQUFPLElBQU1DLHFCQUFxQixHQUFHLE1BQU07QUFDM0MsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRyxHQUFHO0FBQ3ZDLE9BQU8sSUFBTUMsbUJBQW1CLEdBQUcsZUFBZTtBQUVsRCxPQUFPLElBQU1DLFlBQVksR0FBRyxTQUFrQjtBQUM5QyxPQUFPLElBQU1DLFlBQVksR0FBRyxPQUFnQjtBQUM1QyxPQUFPLElBQU1DLG1CQUFtQixHQUFHLEdBQUc7QUFDdEMsT0FBTyxJQUFNQyxrQkFBa0IsR0FBRyxjQUFjO0FBRWhELE9BQU8sSUFBTUMsVUFBVSxHQUFHLEdBQUc7QUFDN0IsT0FBTyxJQUFNQyxRQUFRLEdBQUcsR0FBRztBQUMzQixPQUFPLElBQU1DLFVBQVUsR0FBRyxHQUFHO0FBRTdCLElBQU1DLFVBQVUsR0FBRyxDQUFDO0FBQ3BCLElBQU1DLFVBQVUsR0FBRyxFQUFFO0FBQ3JCLElBQU1DLFVBQVUsR0FBRyxFQUFFO0FBRXJCO0FBQ0EsSUFBTUMsZ0JBQWdCLEdBQUcsdUJBQXVCO0FBQ2hELElBQU1DLGtCQUFrQixHQUFH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RUQ7QUM5QkE7QUFDQTtBRGdDQSxPQUFPLElBQU1DLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFJckQsR0FBb0IsRUFBcUI7RUFDaEUsSUFBSSxPQUFPQSxHQUFHLEtBQUssUUFBUSxFQUFFLE9BQU9zRCxJQUFJLENBQUNDLEdBQUcsQ0FBQ3ZELEdBQUcsQ0FBQztFQUNqRCxPQUFPQSxHQUFHLEdBQUd3RCxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQ3hELEdBQUcsR0FBR0EsR0FBRztBQUNyQyxDQUFDIiwiZmlsZSI6ImNvbXBvbmVudHMvSW5wdXRBbW91bnQvaGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5leHBvcnQgY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5leHBvcnQgY29uc3QgREVDSU1BTF9QT0lOVF9PRkZTRVQgPSAyO1xuZXhwb3J0IGNvbnN0IFNLRUxFVE9OX0xBQkVMX1dJRFRIID0gJzcycHgnO1xuZXhwb3J0IGNvbnN0IFNLRUxFVE9OX0xBQkVMX0hFSUdIVCA9ICcxOHB4JztcbmV4cG9ydCBjb25zdCBTUElOTkVSX1NUUk9LRV9XSURUSCA9ICc0JztcbmV4cG9ydCBjb25zdCBDU1NfVkFSX0lOUFVUX1dJRFRIID0gJy0taW5wdXQtd2lkdGgnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfVFlQRSA9ICdwcmltYXJ5JztcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NJWkUgPSAnbGFyZ2UnO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExBQ0VIT0xERVIgPSAnMCc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9QUkVGSVhfQ0xTID0gJ2lucHV0LWFtb3VudCc7XG5leHBvcnQgY29uc3QgQ0hBUl9NSU5VUyA9ICctJztcbmV4cG9ydCBjb25zdCBDSEFSX0RPVCA9ICcuJztcbmV4cG9ydCBjb25zdCBDSEFSX0NPTU1BID0gJywnO1xuY29uc3QgR0FQX1NJTkdMRSA9IDg7XG5jb25zdCBHQVBfRE9VQkxFID0gMTY7XG5jb25zdCBHQVBfVFJJUExFID0gMjQ7XG4vKiogRnVsbHdpZHRoIGRlY2ltYWwvcGVyaW9kIOKGkiBBU0NJSSBkb3QsIGZ1bGx3aWR0aCBjb21tYSDihpIgQVNDSUkgY29tbWEgKi9cbmNvbnN0IEZVTExXSURUSF9ET1RfUkUgPSAvW1xcdTMwMDJcXHVmZjBlXFx1ZmY2MV0vZztcbmNvbnN0IEZVTExXSURUSF9DT01NQV9SRSA9IC9bXFx1RkYwQ10vZztcbmNvbnN0IE1JTlVTX1JFID0gLy0vZztcbmNvbnN0IFRSQUlMSU5HX0RFQ0lNQUxTX1JFID0gL1xcLihcXGQrKSQvO1xuZXhwb3J0IGNvbnN0IGlzTnVtZXJpY1R5cGUgPSAodmFsKSA9PiB0eXBlb2YgdmFsID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsID09PSAnYmlnaW50JztcbmV4cG9ydCBjb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKEZVTExXSURUSF9ET1RfUkUsIENIQVJfRE9UKVxuICAgIC5yZXBsYWNlKEZVTExXSURUSF9DT01NQV9SRSwgQ0hBUl9DT01NQSk7XG5leHBvcnQgY29uc3Qgc3RyaXBDb21tYXMgPSAodmFsKSA9PiB2YWwuc3BsaXQoQ0hBUl9DT01NQSkuam9pbignJyk7XG5leHBvcnQgY29uc3Qgc3RyaXBNaW51cyA9ICh2YWwpID0+IHZhbC5yZXBsYWNlKE1JTlVTX1JFLCAnJyk7XG5leHBvcnQgY29uc3QgZm9ybWF0VGhvdXNhbmRzID0gKHZhbCwgYWxsb3dOZWdhdGl2ZSkgPT4gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHsgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsIGFsbG93TmVnYXRpdmUgfSk7XG5leHBvcnQgY29uc3QgY2FsY1ZhbHVlSW5SYW5nZSA9ICh2YWwsIG1pbiwgbWF4KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09PSBDSEFSX01JTlVTIHx8IGlzTmFOKCt2YWwpKVxuICAgICAgICByZXR1cm4gdmFsO1xuICAgIGNvbnN0IGJuVmFsID0gQmlnTnVtYmVyKHZhbCk7XG4gICAgaWYgKGlzTnVtZXJpY1R5cGUobWluKSAmJiBiblZhbC5sdChCaWdOdW1iZXIobWluKSkpXG4gICAgICAgIHJldHVybiBgJHttaW59YDtcbiAgICBpZiAoaXNOdW1lcmljVHlwZShtYXgpICYmIGJuVmFsLmd0KEJpZ051bWJlcihtYXgpKSlcbiAgICAgICAgcmV0dXJuIGAke21heH1gO1xuICAgIHJldHVybiB2YWw7XG59O1xuLyoqXG4gKiBOb3JtYWxpemUgYSByYXcgbnVtZXJpYyB2YWx1ZSBzdHJpbmc6XG4gKiAtIFN0cmlwcyBsZWFkaW5nIHplcm9zIHZpYSBCaWdOdW1iZXJcbiAqIC0gUHJlc2VydmVzIG5lZ2F0aXZlLXplcm8gcmVwcmVzZW50YXRpb24gd2hlbiBhcHBsaWNhYmxlXG4gKiAtIEFwcGVuZHMgdHJhaWxpbmcgZGVjaW1hbCBwb2ludCBpZiBwcmVzZW50IGluIGlucHV0XG4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVWYWx1ZSA9ICh2YWwsIGhhc0RlY2ltYWxQb2ludCwgbmVnYXRpdmUpID0+IHtcbiAgICB2YXIgX2EsIF9iLCBfYztcbiAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHZhbC5tYXRjaChUUkFJTElOR19ERUNJTUFMU19SRSkpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVsxXSkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmxlbmd0aCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICBjb25zdCBibiA9IEJpZ051bWJlcih2YWwpO1xuICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgaWYgKG5lZ2F0aXZlICYmIHZhbC50cmltKCkuc3RhcnRzV2l0aChDSEFSX01JTlVTKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKENIQVJfTUlOVVMpID8gbm9ybWFsaXplZCA6IGAke0NIQVJfTUlOVVN9JHtub3JtYWxpemVkfWA7XG4gICAgfVxuICAgIHJldHVybiBgJHtub3JtYWxpemVkfSR7aGFzRGVjaW1hbFBvaW50ID8gQ0hBUl9ET1QgOiAnJ31gLnRyaW0oKTtcbn07XG5leHBvcnQgY29uc3QgdHJ1bmNhdGVGcmFjdGlvbkRpZ2l0cyA9ICh2YWwsIG1heERlY2ltYWxzKSA9PiB7XG4gICAgY29uc3QgW2ludCwgZGVjaW1hbF0gPSB2YWwuc3BsaXQoQ0hBUl9ET1QpO1xuICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBtYXhEZWNpbWFscykge1xuICAgICAgICByZXR1cm4geyBpbnQsIHRydW5jYXRlZDogYCR7aW50fSR7Q0hBUl9ET1R9JHtkZWNpbWFsLnNsaWNlKDAsIG1heERlY2ltYWxzKX1gLCBvdmVyZmxvdzogdHJ1ZSB9O1xuICAgIH1cbiAgICByZXR1cm4geyBpbnQsIHRydW5jYXRlZDogdmFsLCBvdmVyZmxvdzogZmFsc2UgfTtcbn07XG5leHBvcnQgY29uc3QgY2FsY0dhcFdpZHRoID0gKGhhc1ByZWZpeCwgaGFzU3VmZml4LCBoYXNDdXJyZW5jeSkgPT4ge1xuICAgIGNvbnN0IGNvdW50ID0gK2hhc1ByZWZpeCArICtoYXNTdWZmaXggKyAraGFzQ3VycmVuY3k7XG4gICAgaWYgKGNvdW50ID49IDMpXG4gICAgICAgIHJldHVybiBHQVBfVFJJUExFO1xuICAgIGlmIChjb3VudCA9PT0gMilcbiAgICAgICAgcmV0dXJuIEdBUF9ET1VCTEU7XG4gICAgaWYgKGNvdW50ID09PSAxKVxuICAgICAgICByZXR1cm4gR0FQX1NJTkdMRTtcbiAgICByZXR1cm4gMDtcbn07XG4vKipcbiAqIFBhcnNlIGFuZCBzYW5pdGl6ZSBhIHJhdyBzdHJpbmcgaW5wdXQgdmFsdWUuXG4gKiBSZXR1cm5zIGBudWxsYCBpZiB0aGUgdmFsdWUgaXMgaW52YWxpZCBhbmQgc2hvdWxkIGJlIHJlamVjdGVkLlxuICovXG5leHBvcnQgY29uc3QgcGFyc2VSYXdJbnB1dCA9IChyYXcsIG5lZ2F0aXZlKSA9PiB7XG4gICAgbGV0IHZhbCA9IHN0cmlwQ29tbWFzKG5vcm1hbGl6ZU51bWJlcklucHV0KHJhdykpO1xuICAgIGNvbnN0IGhhc0RlY2ltYWxQb2ludCA9IHZhbC5lbmRzV2l0aChDSEFSX0RPVCk7XG4gICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICBpZiAoIW5lZ2F0aXZlICYmIHZhbC5pbmNsdWRlcyhDSEFSX01JTlVTKSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgaXNTdGFuZGFsb25lTWludXMgPSAhIW5lZ2F0aXZlICYmIHZhbCA9PT0gQ0hBUl9NSU5VUztcbiAgICBpZiAoIWlzU3RhbmRhbG9uZU1pbnVzICYmIGlzTmFOKCt2YWwpKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4geyB2YWwsIGhhc0RlY2ltYWxQb2ludCwgaXNTdGFuZGFsb25lTWludXMgfTtcbn07XG4vKipcbiAqIEVuc3VyZSBhIG51bWVyaWMgdmFsdWUgaXMgbm9uLW5lZ2F0aXZlIHdoZW4gYG5lZ2F0aXZlYCBpcyBub3QgYWxsb3dlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IGFic1ZhbHVlID0gKHZhbCkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJylcbiAgICAgICAgcmV0dXJuIE1hdGguYWJzKHZhbCk7XG4gICAgcmV0dXJuIHZhbCA8IEJpZ0ludCgwKSA/IC12YWwgOiB2YWw7XG59OyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,33 @@
1
+ import type { FieldValues } from 'react-hook-form';
2
+ import type { ProFormProps } from './interface';
3
+ /** Context value providing ProForm-level configuration to descendant field components. */
4
+ export interface ProFormContextValue {
5
+ /** Whether all fields should render in readonly mode. */
6
+ readonly?: boolean;
7
+ /** Whether grid layout is enabled. */
8
+ grid?: boolean;
9
+ /** Default column props for grid fields. */
10
+ colProps?: {
11
+ span?: number;
12
+ };
13
+ }
14
+ /**
15
+ * React context that propagates ProForm configuration (readonly, grid, colProps)
16
+ * to nested field components created via {@link createProFormField}.
17
+ */
18
+ export declare const ProFormContext: import("react").Context<ProFormContextValue>;
19
+ /**
20
+ * Enhanced form component with built-in submit/reset buttons, grid layout,
21
+ * readonly mode, and async remote data loading via `request`.
22
+ *
23
+ * @typeParam TFieldValues - The form values type.
24
+ *
25
+ * @example
26
+ * ```tsx
27
+ * <ProForm onFinish={async (values) => { await save(values); }}>
28
+ * <ProFormText name="username" label="Username" />
29
+ * </ProForm>
30
+ * ```
31
+ */
32
+ export declare function ProForm<TFieldValues extends FieldValues = FieldValues>(props: ProFormProps<TFieldValues>): import("react/jsx-runtime").JSX.Element;
33
+ export default ProForm;
@@ -0,0 +1,208 @@
1
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
2
+ var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) {
4
+ return value instanceof P ? value : new P(function (resolve) {
5
+ resolve(value);
6
+ });
7
+ }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) {
10
+ try {
11
+ step(generator.next(value));
12
+ } catch (e) {
13
+ reject(e);
14
+ }
15
+ }
16
+ function rejected(value) {
17
+ try {
18
+ step(generator["throw"](value));
19
+ } catch (e) {
20
+ reject(e);
21
+ }
22
+ }
23
+ function step(result) {
24
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
25
+ }
26
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
27
+ });
28
+ };
29
+ var __rest = this && this.__rest || function (s, e) {
30
+ var t = {};
31
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
32
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
33
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
34
+ }
35
+ return t;
36
+ };
37
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
38
+ import { createContext, useEffect, useMemo, useRef } from 'react';
39
+ import useLatest from '../useLatest';
40
+ import useMemoizedFn from '../useMemoizedFn';
41
+ import { useForm } from 'react-hook-form';
42
+ import { Row } from '../Grid';
43
+ import { Form } from '../Form';
44
+ import Submitter from './Submitter';
45
+ import { DEFAULT_COL_SPAN } from './constants';
46
+ import { isSubmitterEnabled, stableSerialize } from './utils';
47
+ /**
48
+ * React context that propagates ProForm configuration (readonly, grid, colProps)
49
+ * to nested field components created via {@link createProFormField}.
50
+ */
51
+ export var ProFormContext = /*#__PURE__*/createContext({
52
+ readonly: false,
53
+ grid: false,
54
+ colProps: {
55
+ span: DEFAULT_COL_SPAN
56
+ }
57
+ });
58
+ /**
59
+ * Enhanced form component with built-in submit/reset buttons, grid layout,
60
+ * readonly mode, and async remote data loading via `request`.
61
+ *
62
+ * @typeParam TFieldValues - The form values type.
63
+ *
64
+ * @example
65
+ * ```tsx
66
+ * <ProForm onFinish={async (values) => { await save(values); }}>
67
+ * <ProFormText name="username" label="Username" />
68
+ * </ProForm>
69
+ * ```
70
+ */
71
+ export function ProForm(props) {
72
+ var _this = this;
73
+ var _a, _b, _c, _d, _e, _f, _g;
74
+ var submitter = props.submitter,
75
+ _props$readonly = props.readonly,
76
+ readonly = _props$readonly === void 0 ? false : _props$readonly,
77
+ _props$grid = props.grid,
78
+ grid = _props$grid === void 0 ? false : _props$grid,
79
+ colProps = props.colProps,
80
+ rowProps = props.rowProps,
81
+ externalForm = props.form,
82
+ request = props.request,
83
+ params = props.params,
84
+ _props$loading = props.loading,
85
+ loading = _props$loading === void 0 ? false : _props$loading,
86
+ children = props.children,
87
+ onFinish = props.onFinish,
88
+ defaultValues = props.defaultValues,
89
+ rest = __rest(props, ["submitter", "readonly", "grid", "colProps", "rowProps", "form", "request", "params", "loading", "children", "onFinish", "defaultValues"]);
90
+ // Always create an internal form to keep hook ordering stable.
91
+ // When `externalForm` is provided, this instance is unused. We pass
92
+ // `shouldUnregister: true` to minimize overhead of the unused form.
93
+ var internalForm = useForm({
94
+ defaultValues: defaultValues,
95
+ shouldUnregister: true
96
+ });
97
+ var form = externalForm !== null && externalForm !== void 0 ? externalForm : internalForm;
98
+ var paramsKey = useMemo(function () {
99
+ return stableSerialize(params);
100
+ }, [params]);
101
+ var stableParams = useMemo(function () {
102
+ return params;
103
+ }, [paramsKey]);
104
+ var stableColProps = useMemo(function () {
105
+ return colProps !== null && colProps !== void 0 ? colProps : {
106
+ span: DEFAULT_COL_SPAN
107
+ };
108
+ }, [colProps === null || colProps === void 0 ? void 0 : colProps.span]);
109
+ var latestRequestRef = useLatest(request);
110
+ var latestResetValuesRef = useRef(defaultValues);
111
+ var formRest = rest;
112
+ var onFinishFailed = formRest.onFinishFailed,
113
+ forwardedFormProps = __rest(formRest, ["onFinishFailed"]);
114
+ useEffect(function () {
115
+ latestResetValuesRef.current = defaultValues;
116
+ }, [defaultValues]);
117
+ useEffect(function () {
118
+ var cancelled = false;
119
+ var currentRequest = latestRequestRef.current;
120
+ if (!currentRequest) return;
121
+ currentRequest(stableParams).then(function (values) {
122
+ if (cancelled || !values) return;
123
+ form.reset(values);
124
+ latestResetValuesRef.current = values;
125
+ })["catch"](function () {
126
+ // Silently ignore — consumers should handle request errors
127
+ // via their own error boundaries or by wrapping the `request` function.
128
+ });
129
+ return function () {
130
+ cancelled = true;
131
+ };
132
+ }, [stableParams, form]);
133
+ var ctx = useMemo(function () {
134
+ return {
135
+ readonly: readonly,
136
+ grid: grid,
137
+ colProps: stableColProps
138
+ };
139
+ }, [readonly, grid, stableColProps]);
140
+ var handleFinish = useMemoizedFn(function (values) {
141
+ return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
142
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
143
+ while (1) switch (_context.prev = _context.next) {
144
+ case 0:
145
+ _context.next = 2;
146
+ return onFinish === null || onFinish === void 0 ? void 0 : onFinish(values);
147
+ case 2:
148
+ case "end":
149
+ return _context.stop();
150
+ }
151
+ }, _callee);
152
+ }));
153
+ });
154
+ var handleReset = useMemoizedFn(function () {
155
+ var _a;
156
+ form.reset(latestResetValuesRef.current);
157
+ if (isSubmitterEnabled(submitter)) {
158
+ (_a = submitter.onReset) === null || _a === void 0 ? void 0 : _a.call(submitter);
159
+ }
160
+ });
161
+ var triggerSubmitterOnSubmit = useMemoizedFn(function () {
162
+ var _a;
163
+ if (isSubmitterEnabled(submitter)) {
164
+ (_a = submitter.onSubmit) === null || _a === void 0 ? void 0 : _a.call(submitter);
165
+ }
166
+ });
167
+ var handleSubmitFromRender = useMemoizedFn(function () {
168
+ triggerSubmitterOnSubmit();
169
+ try {
170
+ var submitPromise = form.handleSubmit(handleFinish, onFinishFailed)(undefined);
171
+ submitPromise["catch"](function (error) {
172
+ console.error('[ProForm] handleSubmitFromRender rejected after triggerSubmitterOnSubmit via form.handleSubmit(handleFinish, onFinishFailed).', error);
173
+ });
174
+ } catch (error) {
175
+ console.error('[ProForm] handleSubmitFromRender threw after triggerSubmitterOnSubmit via form.handleSubmit(handleFinish, onFinishFailed).', error);
176
+ }
177
+ });
178
+ var mergedDisabled = (_a = rest.disabled) !== null && _a !== void 0 ? _a : loading;
179
+ var content = !grid ? children : _jsx(Row, {
180
+ gutter: rowProps === null || rowProps === void 0 ? void 0 : rowProps.gutter,
181
+ children: children
182
+ });
183
+ return _jsx(ProFormContext.Provider, {
184
+ value: ctx,
185
+ children: _jsxs(Form, Object.assign({}, forwardedFormProps, {
186
+ form: form,
187
+ disabled: mergedDisabled,
188
+ defaultValues: defaultValues,
189
+ onFinish: handleFinish,
190
+ onFinishFailed: onFinishFailed,
191
+ children: [content, submitter !== false && _jsx(Submitter, Object.assign({}, submitter || {}, {
192
+ form: form,
193
+ submitButtonProps: Object.assign(Object.assign({}, (submitter === null || submitter === void 0 ? void 0 : submitter.submitButtonProps) || {}), {
194
+ loading: (_c = (_b = submitter === null || submitter === void 0 ? void 0 : submitter.submitButtonProps) === null || _b === void 0 ? void 0 : _b.loading) !== null && _c !== void 0 ? _c : loading,
195
+ disabled: (_e = (_d = submitter === null || submitter === void 0 ? void 0 : submitter.submitButtonProps) === null || _d === void 0 ? void 0 : _d.disabled) !== null && _e !== void 0 ? _e : loading
196
+ }),
197
+ resetButtonProps: Object.assign(Object.assign({}, (submitter === null || submitter === void 0 ? void 0 : submitter.resetButtonProps) || {}), {
198
+ disabled: (_g = (_f = submitter === null || submitter === void 0 ? void 0 : submitter.resetButtonProps) === null || _f === void 0 ? void 0 : _f.disabled) !== null && _g !== void 0 ? _g : loading
199
+ }),
200
+ onSubmit: triggerSubmitterOnSubmit,
201
+ onSubmitForm: handleSubmitFromRender,
202
+ onReset: handleReset
203
+ }))]
204
+ }))
205
+ });
206
+ }
207
+ export default ProForm;
208
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtLmpzIiwiY29tcG9uZW50cy9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0udHN4Il0sIm5hbWVzIjpbIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwidmFsdWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwiZSIsInJlamVjdGVkIiwicmVzdWx0IiwiZG9uZSIsInRoZW4iLCJhcHBseSIsIl9fcmVzdCIsInMiLCJ0IiwicCIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJpIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiY3JlYXRlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VMYXRlc3QiLCJ1c2VNZW1vaXplZEZuIiwidXNlRm9ybSIsIlJvdyIsIkZvcm0iLCJTdWJtaXR0ZXIiLCJERUZBVUxUX0NPTF9TUEFOIiwiaXNTdWJtaXR0ZXJFbmFibGVkIiwic3RhYmxlU2VyaWFsaXplIiwiUHJvRm9ybUNvbnRleHQiLCJyZWFkb25seSIsImdyaWQiLCJjb2xQcm9wcyIsInNwYW4iLCJQcm9Gb3JtIiwicHJvcHMiLCJfdGhpcyIsIl9hIiwiX2IiLCJfYyIsIl9kIiwiX2UiLCJfZiIsIl9nIiwic3VibWl0dGVyIiwiX3Byb3BzJHJlYWRvbmx5IiwiX3Byb3BzJGdyaWQiLCJyb3dQcm9wcyIsImV4dGVybmFsRm9ybSIsImZvcm0iLCJyZXF1ZXN0IiwicGFyYW1zIiwiX3Byb3BzJGxvYWRpbmciLCJsb2FkaW5nIiwiY2hpbGRyZW4iLCJvbkZpbmlzaCIsImRlZmF1bHRWYWx1ZXMiLCJyZXN0IiwiaW50ZXJuYWxGb3JtIiwic2hvdWxkVW5yZWdpc3RlciIsInBhcmFtc0tleSIsInN0YWJsZVBhcmFtcyIsInN0YWJsZUNvbFByb3BzIiwibGF0ZXN0UmVxdWVzdFJlZiIsImxhdGVzdFJlc2V0VmFsdWVzUmVmIiwiZm9ybVJlc3QiLCJvbkZpbmlzaEZhaWxlZCIsImZvcndhcmRlZEZvcm1Qcm9wcyIsImN1cnJlbnQiLCJjYW5jZWxsZWQiLCJjdXJyZW50UmVxdWVzdCIsInZhbHVlcyIsInJlc2V0IiwiY3R4IiwiaGFuZGxlRmluaXNoIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2Iiwic3RvcCIsImhhbmRsZVJlc2V0Iiwib25SZXNldCIsInRyaWdnZXJTdWJtaXR0ZXJPblN1Ym1pdCIsIm9uU3VibWl0IiwiaGFuZGxlU3VibWl0RnJvbVJlbmRlciIsInN1Ym1pdFByb21pc2UiLCJoYW5kbGVTdWJtaXQiLCJ1bmRlZmluZWQiLCJlcnJvciIsImNvbnNvbGUiLCJtZXJnZWREaXNhYmxlZCIsImRpc2FibGVkIiwiY29udGVudCIsImd1dHRlciIsIlByb3ZpZGVyIiwiYXNzaWduIiwic3VibWl0QnV0dG9uUHJvcHMiLCJyZXNldEJ1dHRvblByb3BzIiwib25TdWJtaXRGb3JtIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBSUEsU0FBUyxHQUFJLElBQUksSUFBSSxJQUFJLENBQUNBLFNBQVMsSUFBSyxVQUFVQyxPQUFPLEVBQUVDLFVBQVUsRUFBRUMsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7RUFDckYsU0FBU0MsS0FBS0EsQ0FBQ0MsS0FBSyxFQUFFO0lBQUUsT0FBT0EsS0FBSyxZQUFZSCxDQUFDLEdBQUdHLEtBQUssR0FBRyxJQUFJSCxDQUFDLENBQUMsVUFBVUksT0FBTyxFQUFFO01BQUVBLE9BQU8sQ0FBQ0QsS0FBSyxDQUFDO0lBQUUsQ0FBQyxDQUFDO0VBQUU7RUFDM0csT0FBTyxLQUFLSCxDQUFDLEtBQUtBLENBQUMsR0FB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R0FBQSxLQUFBLENBQUEsR0FBVEEsU0FBUyxDQUFFdUQsaUJBQWlCLE1BQUEsSUFBQSxJQUFBM0QsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLENBQUVzRCxRQUFRLE1BQUEsSUFBQSxJQUFBckQsRUFBQSxLQUFBLEtBQUEsQ0FBQSxHQUFBQSxFQUFBLEdBQUlZO1FBQU8sQ0FBQSxDQUFBO1FBRTdEK0MsZ0JBQWdCLEVBQUFqRyxNQUFBLENBQUErRixNQUFBLENBQUEvRixNQUFBLENBQUErRixNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQ1YsQ0FBQXRELFNBQVMsS0FBQSxJQUFBLElBQVRBLFNBQVMsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVEEsU0FBUyxDQUFFd0QsZ0JBQWdCLEtBQUksQ0FBQSxDQUFHLENBQUEsRUFBQTtVQUN0Q04sUUFBUSxFQUFFLENBQUFuRCxFQUFBLEdBQUEsQ0FBQUQsRUFBQSxHQUFBRSxTQUFTLEtBQUEsSUFBQSxJQUFUQSxTQUFTLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVRBLFNBQVMsQ0FBRXdELGdCQUFnQixNQUFBLElBQUEsSUFBQTFELEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxDQUFFb0QsUUFBUSxNQUFBLElBQUEsSUFBQW5ELEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUFJVTtRQUFPLENBQUEsQ0FBQTtRQUU1RGlDLFFBQVEsRUFBRUQsd0JBQXdCO1FBQ2xDZ0IsWUFBWSxFQUFFZCxzQkFBc0I7UUFDcENILE9BQU8sRUFBRUQ7TUFBVyxDQUFBLENBQUEsQ0FFdkI7SUFBQSxDQUFBLENBQUE7RUFDSSxDQUFBLENBQ2lCO0FBRTlCO0FBRUEsZUFBZWpELE9BQU8iLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm0uanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdXNlTGF0ZXN0IGZyb20gJy4uL3VzZUxhdGVzdCc7XG5pbXBvcnQgdXNlTWVtb2l6ZWRGbiBmcm9tICcuLi91c2VNZW1vaXplZEZuJztcbmltcG9ydCB7IHVzZUZvcm0gfSBmcm9tICdyZWFjdC1ob29rLWZvcm0nO1xuaW1wb3J0IHsgUm93IH0gZnJvbSAnLi4vR3JpZCc7XG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vRm9ybSc7XG5pbXBvcnQgU3VibWl0dGVyIGZyb20gJy4vU3VibWl0dGVyJztcbmltcG9ydCB7IERFRkFVTFRfQ09MX1NQQU4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBpc1N1Ym1pdHRlckVuYWJsZWQsIHN0YWJsZVNlcmlhbGl6ZSB9IGZyb20gJy4vdXRpbHMnO1xuLyoqXG4gKiBSZWFjdCBjb250ZXh0IHRoYXQgcHJvcGFnYXRlcyBQcm9Gb3JtIGNvbmZpZ3VyYXRpb24gKHJlYWRvbmx5LCBncmlkLCBjb2xQcm9wcylcbiAqIHRvIG5lc3RlZCBmaWVsZCBjb21wb25lbnRzIGNyZWF0ZWQgdmlhIHtAbGluayBjcmVhdGVQcm9Gb3JtRmllbGR9LlxuICovXG5leHBvcnQgY29uc3QgUHJvRm9ybUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KHtcbiAgICByZWFkb25seTogZmFsc2UsXG4gICAgZ3JpZDogZmFsc2UsXG4gICAgY29sUHJvcHM6IHsgc3BhbjogREVGQVVMVF9DT0xfU1BBTiB9LFxufSk7XG4vKipcbiAqIEVuaGFuY2VkIGZvcm0gY29tcG9uZW50IHdpdGggYnVpbHQtaW4gc3VibWl0L3Jlc2V0IGJ1dHRvbnMsIGdyaWQgbGF5b3V0LFxuICogcmVhZG9ubHkgbW9kZSwgYW5kIGFzeW5jIHJlbW90ZSBkYXRhIGxvYWRpbmcgdmlhIGByZXF1ZXN0YC5cbiAqXG4gKiBAdHlwZVBhcmFtIFRGaWVsZFZhbHVlcyAtIFRoZSBmb3JtIHZhbHVlcyB0eXBlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIDxQcm9Gb3JtIG9uRmluaXNoPXthc3luYyAodmFsdWVzKSA9PiB7IGF3YWl0IHNhdmUodmFsdWVzKTsgfX0+XG4gKiAgIDxQcm9Gb3JtVGV4dCBuYW1lPVwidXNlcm5hbWVcIiBsYWJlbD1cIlVzZXJuYW1lXCIgLz5cbiAqIDwvUHJvRm9ybT5cbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gUHJvRm9ybShwcm9wcykge1xuICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZztcbiAgICBjb25zdCB7IHN1Ym1pdHRlciwgcmVhZG9ubHkgPSBmYWxzZSwgZ3JpZCA9IGZhbHNlLCBjb2xQcm9wcywgcm93UHJvcHMsIGZvcm06IGV4dGVybmFsRm9ybSwgcmVxdWVzdCwgcGFyYW1zLCBsb2FkaW5nID0gZmFsc2UsIGNoaWxkcmVuLCBvbkZpbmlzaCwgZGVmYXVsdFZhbHVlcyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInN1Ym1pdHRlclwiLCBcInJlYWRvbmx5XCIsIFwiZ3JpZFwiLCBcImNvbFByb3BzXCIsIFwicm93UHJvcHNcIiwgXCJmb3JtXCIsIFwicmVxdWVzdFwiLCBcInBhcmFtc1wiLCBcImxvYWRpbmdcIiwgXCJjaGlsZHJlblwiLCBcIm9uRmluaXNoXCIsIFwiZGVmYXVsdFZhbHVlc1wiXSk7XG4gICAgLy8gQWx3YXlzIGNyZWF0ZSBhbiBpbnRlcm5hbCBmb3JtIHRvIGtlZXAgaG9vayBvcmRlcmluZyBzdGFibGUuXG4gICAgLy8gV2hlbiBgZXh0ZXJuYWxGb3JtYCBpcyBwcm92aWRlZCwgdGhpcyBpbnN0YW5jZSBpcyB1bnVzZWQuIFdlIHBhc3NcbiAgICAvLyBgc2hvdWxkVW5yZWdpc3RlcjogdHJ1ZWAgdG8gbWluaW1pemUgb3ZlcmhlYWQgb2YgdGhlIHVudXNlZCBmb3JtLlxuICAgIGNvbnN0IGludGVybmFsRm9ybSA9IHVzZUZvcm0oeyBkZWZhdWx0VmFsdWVzLCBzaG91bGRVbnJlZ2lzdGVyOiB0cnVlIH0pO1xuICAgIGNvbnN0IGZvcm0gPSBleHRlcm5hbEZvcm0gIT09IG51bGwgJiYgZXh0ZXJuYWxGb3JtICE9PSB2b2lkIDAgPyBleHRlcm5hbEZvcm0gOiBpbnRlcm5hbEZvcm07XG4gICAgY29uc3QgcGFyYW1zS2V5ID0gdXNlTWVtbygoKSA9PiBzdGFibGVTZXJpYWxpemUocGFyYW1zKSwgW3BhcmFtc10pO1xuICAgIGNvbnN0IHN0YWJsZVBhcmFtcyA9IHVzZU1lbW8oKCkgPT4gcGFyYW1zLCBbcGFyYW1zS2V5XSk7XG4gICAgY29uc3Qgc3RhYmxlQ29sUHJvcHMgPSB1c2VNZW1vKCgpID0+IGNvbFByb3BzICE9PSBudWxsICYmIGNvbFByb3BzICE9PSB2b2lkIDAgPyBjb2xQcm9wcyA6IHsgc3BhbjogREVGQVVMVF9DT0xfU1BBTiB9LCBbY29sUHJvcHMgPT09IG51bGwgfHwgY29sUHJvcHMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbFByb3BzLnNwYW5dKTtcbiAgICBjb25zdCBsYXRlc3RSZXF1ZXN0UmVmID0gdXNlTGF0ZXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IGxhdGVzdFJlc2V0VmFsdWVzUmVmID0gdXNlUmVmKGRlZmF1bHRWYWx1ZXMpO1xuICAgIGNvbnN0IGZvcm1SZXN0ID0gcmVzdDtcbiAgICBjb25zdCB7IG9uRmluaXNoRmFpbGVkIH0gPSBmb3JtUmVzdCwgZm9yd2FyZGVkRm9ybVByb3BzID0gX19yZXN0KGZvcm1SZXN0LCBbXCJvbkZpbmlzaEZhaWxlZFwiXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgbGF0ZXN0UmVzZXRWYWx1ZXNSZWYuY3VycmVudCA9IGRlZmF1bHRWYWx1ZXM7XG4gICAgfSwgW2RlZmF1bHRWYWx1ZXNdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZXF1ZXN0ID0gbGF0ZXN0UmVxdWVzdFJlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjdXJyZW50UmVxdWVzdChzdGFibGVQYXJhbXMpXG4gICAgICAgICAgICAudGhlbih2YWx1ZXMgPT4ge1xuICAgICAgICAgICAgaWYgKGNhbmNlbGxlZCB8fCAhdmFsdWVzKVxuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIGZvcm0ucmVzZXQodmFsdWVzKTtcbiAgICAgICAgICAgIGxhdGVzdFJlc2V0VmFsdWVzUmVmLmN1cnJlbnQgPSB2YWx1ZXM7XG4gICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gU2lsZW50bHkgaWdub3JlIOKAlCBjb25zdW1lcnMgc2hvdWxkIGhhbmRsZSByZXF1ZXN0IGVycm9yc1xuICAgICAgICAgICAgLy8gdmlhIHRoZWlyIG93biBlcnJvciBib3VuZGFyaWVzIG9yIGJ5IHdyYXBwaW5nIHRoZSBgcmVxdWVzdGAgZnVuY3Rpb24uXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICAgICAgfTtcbiAgICB9LCBbc3RhYmxlUGFyYW1zLCBmb3JtXSk7XG4gICAgY29uc3QgY3R4ID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICByZWFkb25seSxcbiAgICAgICAgZ3JpZCxcbiAgICAgICAgY29sUHJvcHM6IHN0YWJsZUNvbFByb3BzLFxuICAgIH0pLCBbcmVhZG9ubHksIGdyaWQsIHN0YWJsZUNvbFByb3BzXSk7XG4gICAgY29uc3QgaGFuZGxlRmluaXNoID0gdXNlTWVtb2l6ZWRGbigodmFsdWVzKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIHlpZWxkIChvbkZpbmlzaCA9PT0gbnVsbCB8fCBvbkZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2godmFsdWVzKSk7XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZVJlc2V0ID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgZm9ybS5yZXNldChsYXRlc3RSZXNldFZhbHVlc1JlZi5jdXJyZW50KTtcbiAgICAgICAgaWYgKGlzU3VibWl0dGVyRW5hYmxlZChzdWJtaXR0ZXIpKSB7XG4gICAgICAgICAgICAoX2EgPSBzdWJtaXR0ZXIub25SZXNldCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoc3VibWl0dGVyKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHRyaWdnZXJTdWJtaXR0ZXJPblN1Ym1pdCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpc1N1Ym1pdHRlckVuYWJsZWQoc3VibWl0dGVyKSkge1xuICAgICAgICAgICAgKF9hID0gc3VibWl0dGVyLm9uU3VibWl0KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChzdWJtaXR0ZXIpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU3VibWl0RnJvbVJlbmRlciA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICB0cmlnZ2VyU3VibWl0dGVyT25TdWJtaXQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHN1Ym1pdFByb21pc2UgPSBmb3JtLmhhbmRsZVN1Ym1pdChoYW5kbGVGaW5pc2gsIG9uRmluaXNoRmFpbGVkKSh1bmRlZmluZWQpO1xuICAgICAgICAgICAgc3VibWl0UHJvbWlzZS5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdbUHJvRm9ybV0gaGFuZGxlU3VibWl0RnJvbVJlbmRlciByZWplY3RlZCBhZnRlciB0cmlnZ2VyU3VibWl0dGVyT25TdWJtaXQgdmlhIGZvcm0uaGFuZGxlU3VibWl0KGhhbmRsZUZpbmlzaCwgb25GaW5pc2hGYWlsZWQpLicsIGVycm9yKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignW1Byb0Zvcm1dIGhhbmRsZVN1Ym1pdEZyb21SZW5kZXIgdGhyZXcgYWZ0ZXIgdHJpZ2dlclN1Ym1pdHRlck9uU3VibWl0IHZpYSBmb3JtLmhhbmRsZVN1Ym1pdChoYW5kbGVGaW5pc2gsIG9uRmluaXNoRmFpbGVkKS4nLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBtZXJnZWREaXNhYmxlZCA9IChfYSA9IHJlc3QuZGlzYWJsZWQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGxvYWRpbmc7XG4gICAgY29uc3QgY29udGVudCA9ICFncmlkXG4gICAgICAgID8gY2hpbGRyZW5cbiAgICAgICAgOiAoX2pzeChSb3csIHsgZ3V0dGVyOiByb3dQcm9wcyA9PT0gbnVsbCB8fCByb3dQcm9wcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogcm93UHJvcHMuZ3V0dGVyLCBjaGlsZHJlbjogY2hpbGRyZW4gfSkpO1xuICAgIHJldHVybiAoX2pzeChQcm9Gb3JtQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogY3R4LCBjaGlsZHJlbjogX2pzeHMoRm9ybSwgT2JqZWN0LmFzc2lnbih7fSwgZm9yd2FyZGVkRm9ybVByb3BzLCB7IGZvcm06IGZvcm0sIGRpc2FibGVkOiBtZXJnZWREaXNhYmxlZCwgZGVmYXVsdFZhbHVlczogZGVmYXVsdFZhbHVlcywgb25GaW5pc2g6IGhhbmRsZUZpbmlzaCwgb25GaW5pc2hGYWlsZWQ6IG9uRmluaXNoRmFpbGVkLCBjaGlsZHJlbjogW2NvbnRlbnQsIHN1Ym1pdHRlciAhPT0gZmFsc2UgJiYgKF9qc3goU3VibWl0dGVyLCBPYmplY3QuYXNzaWduKHt9LCAoc3VibWl0dGVyIHx8IHt9KSwgeyBmb3JtOiBmb3JtLCBzdWJtaXRCdXR0b25Qcm9wczogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCAoKHN1Ym1pdHRlciA9PT0gbnVsbCB8fCBzdWJtaXR0ZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN1Ym1pdHRlci5zdWJtaXRCdXR0b25Qcm9wcykgfHwge30pKSwgeyBsb2FkaW5nOiAoX2MgPSAoX2IgPSBzdWJtaXR0ZXIgPT09IG51bGwgfHwgc3VibWl0dGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdWJtaXR0ZXIuc3VibWl0QnV0dG9uUHJvcHMpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sb2FkaW5nKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBsb2FkaW5nLCBkaXNhYmxlZDogKF9lID0gKF9kID0gc3VibWl0dGVyID09PSBudWxsIHx8IHN1Ym1pdHRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3VibWl0dGVyLnN1Ym1pdEJ1dHRvblByb3BzKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2QuZGlzYWJsZWQpICE9PSBudWxsICYmIF9lICE9PSB2b2lkIDAgPyBfZSA6IGxvYWRpbmcgfSksIHJlc2V0QnV0dG9uUHJvcHM6IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgKChzdWJtaXR0ZXIgPT09IG51bGwgfHwgc3VibWl0dGVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBzdWJtaXR0ZXIucmVzZXRCdXR0b25Qcm9wcykgfHwge30pKSwgeyBkaXNhYmxlZDogKF9nID0gKF9mID0gc3VibWl0dGVyID09PSBudWxsIHx8IHN1Ym1pdHRlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3VibWl0dGVyLnJlc2V0QnV0dG9uUHJvcHMpID09PSBudWxsIHx8IF9mID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZi5kaXNhYmxlZCkgIT09IG51bGwgJiYgX2cgIT09IHZvaWQgMCA/IF9nIDogbG9hZGluZyB9KSwgb25TdWJtaXQ6IHRyaWdnZXJTdWJtaXR0ZXJPblN1Ym1pdCwgb25TdWJtaXRGb3JtOiBoYW5kbGVTdWJtaXRGcm9tUmVuZGVyLCBvblJlc2V0OiBoYW5kbGVSZXNldCB9KSkpXSB9KSkgfSkpO1xufVxuZXhwb3J0IGRlZmF1bHQgUHJvRm9ybTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -0,0 +1,12 @@
1
+ import type { ReactNode } from 'react';
2
+ /**
3
+ * Props for {@link ProFormDependency}.
4
+ */
5
+ export interface ProFormDependencyProps {
6
+ /** Field names to watch for changes. */
7
+ name: string[];
8
+ /** Render function that receives the watched field values as a keyed object. */
9
+ children: (values: Record<string, unknown>) => ReactNode;
10
+ }
11
+ export declare const ProFormDependency: import("react").NamedExoticComponent<ProFormDependencyProps>;
12
+ export default ProFormDependency;
@@ -0,0 +1,61 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo, useContext, useMemo } from 'react';
3
+ import { useWatch } from 'react-hook-form';
4
+ import { FormContext } from '../Form/Form';
5
+ import { FallbackFormProvider, useFormItemContext } from '../Form/useFormItemContext';
6
+ var __DEV__ = function () {
7
+ var _a, _b;
8
+ var maybeProcess = globalThis;
9
+ return ((_b = (_a = maybeProcess.process) === null || _a === void 0 ? void 0 : _a.env) === null || _b === void 0 ? void 0 : _b.NODE_ENV) !== 'production';
10
+ }();
11
+ var hasWarnedIsolatedDependency = false;
12
+ /**
13
+ * Watches one or more form fields and re-renders its children whenever
14
+ * the watched values change. Useful for conditional field visibility or
15
+ * cross-field derived content.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * <ProFormDependency name={['country']}>
20
+ * {({ country }) => country === 'US' && <ProFormText name="state" label="State" />}
21
+ * </ProFormDependency>
22
+ * ```
23
+ */
24
+ var ProFormDependencyInner = function ProFormDependencyInner(props) {
25
+ var name = props.name,
26
+ children = props.children;
27
+ var _useFormItemContext = useFormItemContext(),
28
+ methods = _useFormItemContext.methods;
29
+ var watchedValues = useWatch({
30
+ control: methods.control,
31
+ name: name
32
+ });
33
+ var values = useMemo(function () {
34
+ var names = name;
35
+ var list = watchedValues;
36
+ return names.reduce(function (acc, key, index) {
37
+ acc[key] = list[index];
38
+ return acc;
39
+ }, {});
40
+ }, [name, watchedValues]);
41
+ return _jsx(_Fragment, {
42
+ children: children(values)
43
+ });
44
+ };
45
+ var ProFormDependencyBase = function ProFormDependencyBase(props) {
46
+ var ctx = useContext(FormContext);
47
+ if (!(ctx === null || ctx === void 0 ? void 0 : ctx.methods)) {
48
+ if (__DEV__ && !hasWarnedIsolatedDependency) {
49
+ hasWarnedIsolatedDependency = true;
50
+ console.warn('[ProFormDependencyBase] Missing FormContext methods. Rendering with FallbackFormProvider. ' + 'ProFormDependencyInner will use an isolated form instance, and useWatch may return undefined ' + 'for watched fields when ProFormDependency is used outside a Form.');
51
+ }
52
+ return _jsx(FallbackFormProvider, {
53
+ children: _jsx(ProFormDependencyInner, Object.assign({}, props))
54
+ });
55
+ }
56
+ return _jsx(ProFormDependencyInner, Object.assign({}, props));
57
+ };
58
+ ProFormDependencyBase.displayName = 'ProFormDependency';
59
+ export var ProFormDependency = /*#__PURE__*/memo(ProFormDependencyBase);
60
+ export default ProFormDependency;
61
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9Qcm9Gb3JtRGVwZW5kZW5jeS50c3giXSwibmFtZXMiOlsiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJqc3giLCJfanN4IiwibWVtbyIsInVzZUNvbnRleHQiLCJ1c2VNZW1vIiwidXNlV2F0Y2giLCJGb3JtQ29udGV4dCIsIkZhbGxiYWNrRm9ybVByb3ZpZGVyIiwidXNlRm9ybUl0ZW1Db250ZXh0IiwiX19ERVZfXyIsIl9hIiwiX2IiLCJtYXliZVByb2Nlc3MiLCJnbG9iYWxUaGlzIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiaGFzV2FybmVkSXNvbGF0ZWREZXBlbmRlbmN5IiwiUHJvRm9ybURlcGVuZGVuY3lJbm5lciIsInByb3BzIiwibmFtZSIsImNoaWxkcmVuIiwiX3VzZUZvcm1JdGVtQ29udGV4dCIsIm1ldGhvZHMiLCJ3YXRjaGVkVmFsdWVzIiwiY29udHJvbCIsInZhbHVlcyIsIm5hbWVzIiwibGlzdCIsInJlZHVjZSIsImFjYyIsImtleSIsImluZGV4IiwiUHJvRm9ybURlcGVuZGVuY3lCYXNlIiwiY3R4IiwiY29uc29sZSIsIndhcm4iLCJPYmplY3QiLCJhc3NpZ24iLCJkaXNwbGF5TmFtZSIsIlByb0Zvcm1EZXBlbmRlbmN5Il0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxRQUFRLElBQUlDLFNBQVMsRUFBRUMsR0FBRyxJQUFJQyxJQUFJLFFBQVEsbUJBQW1CO0FDQXRFLFNBQVNDLElBQUksRUFBRUMsVUFBVSxFQUFFQyxPQUFPLFFBQVEsT0FBTztBQUNqRCxTQUFTQyxRQUFRLFFBQVEsaUJBQWlCO0FBRzFDLFNBQVNDLFdBQVcsUUFBUSxjQUFjO0FBQzFDLFNBQVNDLG9CQUFvQixFQUFFQyxrQkFBa0IsUUFBUSw0QkFBNEI7QUFFckYsSUFBTUMsT0FBTyxHQUFJLFlBQUs7RUREbEIsSUFBSUMsRUFB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aWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL1Byb0Zvcm1EZXBlbmRlbmN5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgbWVtbywgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVdhdGNoIH0gZnJvbSAncmVhY3QtaG9vay1mb3JtJztcbmltcG9ydCB7IEZvcm1Db250ZXh0IH0gZnJvbSAnLi4vRm9ybS9Gb3JtJztcbmltcG9ydCB7IEZhbGxiYWNrRm9ybVByb3ZpZGVyLCB1c2VGb3JtSXRlbUNvbnRleHQgfSBmcm9tICcuLi9Gb3JtL3VzZUZvcm1JdGVtQ29udGV4dCc7XG5jb25zdCBfX0RFVl9fID0gKCgpID0+IHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIGNvbnN0IG1heWJlUHJvY2VzcyA9IGdsb2JhbFRoaXM7XG4gICAgcmV0dXJuICgoX2IgPSAoX2EgPSBtYXliZVByb2Nlc3MucHJvY2VzcykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmVudikgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLk5PREVfRU5WKSAhPT0gJ3Byb2R1Y3Rpb24nO1xufSkoKTtcbmxldCBoYXNXYXJuZWRJc29sYXRlZERlcGVuZGVuY3kgPSBmYWxzZTtcbi8qKlxuICogV2F0Y2hlcyBvbmUgb3IgbW9yZSBmb3JtIGZpZWxkcyBhbmQgcmUtcmVuZGVycyBpdHMgY2hpbGRyZW4gd2hlbmV2ZXJcbiAqIHRoZSB3YXRjaGVkIHZhbHVlcyBjaGFuZ2UuIFVzZWZ1bCBmb3IgY29uZGl0aW9uYWwgZmllbGQgdmlzaWJpbGl0eSBvclxuICogY3Jvc3MtZmllbGQgZGVyaXZlZCBjb250ZW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIDxQcm9Gb3JtRGVwZW5kZW5jeSBuYW1lPXtbJ2NvdW50cnknXX0+XG4gKiAgIHsoeyBjb3VudHJ5IH0pID0+IGNvdW50cnkgPT09ICdVUycgJiYgPFByb0Zvcm1UZXh0IG5hbWU9XCJzdGF0ZVwiIGxhYmVsPVwiU3RhdGVcIiAvPn1cbiAqIDwvUHJvRm9ybURlcGVuZGVuY3k+XG4gKiBgYGBcbiAqL1xuY29uc3QgUHJvRm9ybURlcGVuZGVuY3lJbm5lciA9IChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgbmFtZSwgY2hpbGRyZW4gfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgbWV0aG9kcyB9ID0gdXNlRm9ybUl0ZW1Db250ZXh0KCk7XG4gICAgY29uc3Qgd2F0Y2hlZFZhbHVlcyA9IHVzZVdhdGNoKHsgY29udHJvbDogbWV0aG9kcy5jb250cm9sLCBuYW1lIH0pO1xuICAgIGNvbnN0IHZhbHVlcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBjb25zdCBuYW1lcyA9IG5hbWU7XG4gICAgICAgIGNvbnN0IGxpc3QgPSB3YXRjaGVkVmFsdWVzO1xuICAgICAgICByZXR1cm4gbmFtZXMucmVkdWNlKChhY2MsIGtleSwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgIGFjY1trZXldID0gbGlzdFtpbmRleF07XG4gICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSk7XG4gICAgfSwgW25hbWUsIHdhdGNoZWRWYWx1ZXNdKTtcbiAgICByZXR1cm4gX2pzeChfRnJhZ21lbnQsIHsgY2hpbGRyZW46IGNoaWxkcmVuKHZhbHVlcykgfSk7XG59O1xuY29uc3QgUHJvRm9ybURlcGVuZGVuY3lCYXNlID0gKHByb3BzKSA9PiB7XG4gICAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChGb3JtQ29udGV4dCk7XG4gICAgaWYgKCEoY3R4ID09PSBudWxsIHx8IGN0eCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3R4Lm1ldGhvZHMpKSB7XG4gICAgICAgIGlmIChfX0RFVl9fICYmICFoYXNXYXJuZWRJc29sYXRlZERlcGVuZGVuY3kpIHtcbiAgICAgICAgICAgIGhhc1dhcm5lZElzb2xhdGVkRGVwZW5kZW5jeSA9IHRydWU7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oJ1tQcm9Gb3JtRGVwZW5kZW5jeUJhc2VdIE1pc3NpbmcgRm9ybUNvbnRleHQgbWV0aG9kcy4gUmVuZGVyaW5nIHdpdGggRmFsbGJhY2tGb3JtUHJvdmlkZXIuICcgK1xuICAgICAgICAgICAgICAgICdQcm9Gb3JtRGVwZW5kZW5jeUlubmVyIHdpbGwgdXNlIGFuIGlzb2xhdGVkIGZvcm0gaW5zdGFuY2UsIGFuZCB1c2VXYXRjaCBtYXkgcmV0dXJuIHVuZGVmaW5lZCAnICtcbiAgICAgICAgICAgICAgICAnZm9yIHdhdGNoZWQgZmllbGRzIHdoZW4gUHJvRm9ybURlcGVuZGVuY3kgaXMgdXNlZCBvdXRzaWRlIGEgRm9ybS4nKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKF9qc3goRmFsbGJhY2tGb3JtUHJvdmlkZXIsIHsgY2hpbGRyZW46IF9qc3goUHJvRm9ybURlcGVuZGVuY3lJbm5lciwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMpKSB9KSk7XG4gICAgfVxuICAgIHJldHVybiBfanN4KFByb0Zvcm1EZXBlbmRlbmN5SW5uZXIsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzKSk7XG59O1xuUHJvRm9ybURlcGVuZGVuY3lCYXNlLmRpc3BsYXlOYW1lID0gJ1Byb0Zvcm1EZXBlbmRlbmN5JztcbmV4cG9ydCBjb25zdCBQcm9Gb3JtRGVwZW5kZW5jeSA9IG1lbW8oUHJvRm9ybURlcGVuZGVuY3lCYXNlKTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm1EZXBlbmRlbmN5OyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -0,0 +1,19 @@
1
+ import type { DragEndEvent } from '@dnd-kit/core';
2
+ import type { FieldValues } from 'react-hook-form';
3
+ import type { ProFormListProps } from './interface';
4
+ /**
5
+ * Creates a `DndContext` `onDragEnd` handler that translates drag events
6
+ * into field array `move` calls.
7
+ *
8
+ * @param options.move - The `move` function from `useFieldArray`.
9
+ * @param options.fields - The current field array entries.
10
+ * @returns A drag-end event handler.
11
+ */
12
+ export declare const buildOnDragEnd: ({ move, fields, }: {
13
+ move: (from: number, to: number) => void;
14
+ fields: Array<{
15
+ id: string;
16
+ }>;
17
+ }) => ({ active, over }: DragEndEvent) => void;
18
+ export declare const ProFormList: import("react").NamedExoticComponent<ProFormListProps<FieldValues>>;
19
+ export default ProFormList;