@1money/component-ui 0.0.71 → 0.0.74

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 (103) hide show
  1. package/es/components/ProForm/ProForm.d.ts +10 -2
  2. package/es/components/ProForm/ProForm.js +241 -55
  3. package/es/components/ProForm/ProFormDependency.d.ts +11 -2
  4. package/es/components/ProForm/ProFormDependency.js +29 -133
  5. package/es/components/ProForm/ProFormItem.js +146 -52
  6. package/es/components/ProForm/ProFormList.js +114 -62
  7. package/es/components/ProForm/SchemaForm.d.ts +7 -0
  8. package/es/components/ProForm/SchemaForm.js +103 -0
  9. package/es/components/ProForm/Submitter.js +26 -5
  10. package/es/components/ProForm/context.d.ts +30 -3
  11. package/es/components/ProForm/context.js +69 -10
  12. package/es/components/ProForm/core/constants.d.ts +12 -3
  13. package/es/components/ProForm/core/constants.js +18 -7
  14. package/es/components/ProForm/core/formStore.d.ts +24 -0
  15. package/es/components/ProForm/core/formStore.js +101 -0
  16. package/es/components/ProForm/core/hooks/useForm.d.ts +4 -1
  17. package/es/components/ProForm/core/hooks/useForm.js +336 -212
  18. package/es/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  19. package/es/components/ProForm/core/hooks/useFormCore.js +151 -93
  20. package/es/components/ProForm/core/interface.d.ts +33 -12
  21. package/es/components/ProForm/core/runRules.d.ts +20 -8
  22. package/es/components/ProForm/core/runRules.js +105 -50
  23. package/es/components/ProForm/core/useFormItem.d.ts +10 -1
  24. package/es/components/ProForm/core/useFormItem.js +141 -56
  25. package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
  26. package/es/components/ProForm/fields/ProFormFieldSet.js +20 -7
  27. package/es/components/ProForm/fields/createProFormField.js +61 -32
  28. package/es/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  29. package/es/components/ProForm/hooks/useFieldRequest.js +54 -9
  30. package/es/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  31. package/es/components/ProForm/hooks/useUrlSync.js +170 -0
  32. package/es/components/ProForm/index.d.ts +12 -5
  33. package/es/components/ProForm/index.js +7 -2
  34. package/es/components/ProForm/interface.d.ts +185 -28
  35. package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
  36. package/es/components/ProForm/layouts/DialogForm.js +18 -7
  37. package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  38. package/es/components/ProForm/layouts/DrawerForm.js +17 -7
  39. package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  40. package/es/components/ProForm/layouts/QueryFilter.js +47 -71
  41. package/es/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  42. package/es/components/ProForm/layouts/useOverlayForm.js +27 -8
  43. package/es/components/ProForm/style/ProForm.css +4 -4
  44. package/es/components/ProForm/utils.d.ts +12 -1
  45. package/es/components/ProForm/utils.js +101 -28
  46. package/es/components/ProTable/ProTable.js +3 -3
  47. package/es/components/Tooltip/style/Tooltip.css +1 -0
  48. package/es/index.css +1 -1
  49. package/es/index.d.ts +2 -2
  50. package/es/index.js +2 -2
  51. package/lib/components/ProForm/ProForm.d.ts +10 -2
  52. package/lib/components/ProForm/ProForm.js +239 -53
  53. package/lib/components/ProForm/ProFormDependency.d.ts +11 -2
  54. package/lib/components/ProForm/ProFormDependency.js +30 -135
  55. package/lib/components/ProForm/ProFormItem.js +143 -48
  56. package/lib/components/ProForm/ProFormList.js +112 -60
  57. package/lib/components/ProForm/SchemaForm.d.ts +7 -0
  58. package/lib/components/ProForm/SchemaForm.js +110 -0
  59. package/lib/components/ProForm/Submitter.js +26 -5
  60. package/lib/components/ProForm/context.d.ts +30 -3
  61. package/lib/components/ProForm/context.js +69 -10
  62. package/lib/components/ProForm/core/constants.d.ts +12 -3
  63. package/lib/components/ProForm/core/constants.js +19 -8
  64. package/lib/components/ProForm/core/formStore.d.ts +24 -0
  65. package/lib/components/ProForm/core/formStore.js +110 -0
  66. package/lib/components/ProForm/core/hooks/useForm.d.ts +4 -1
  67. package/lib/components/ProForm/core/hooks/useForm.js +336 -212
  68. package/lib/components/ProForm/core/hooks/useFormCore.d.ts +5 -1
  69. package/lib/components/ProForm/core/hooks/useFormCore.js +150 -92
  70. package/lib/components/ProForm/core/interface.d.ts +33 -12
  71. package/lib/components/ProForm/core/runRules.d.ts +20 -8
  72. package/lib/components/ProForm/core/runRules.js +106 -50
  73. package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
  74. package/lib/components/ProForm/core/useFormItem.js +138 -53
  75. package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
  76. package/lib/components/ProForm/fields/ProFormFieldSet.js +19 -6
  77. package/lib/components/ProForm/fields/createProFormField.js +61 -32
  78. package/lib/components/ProForm/hooks/useFieldRequest.d.ts +6 -1
  79. package/lib/components/ProForm/hooks/useFieldRequest.js +53 -8
  80. package/lib/components/ProForm/hooks/useUrlSync.d.ts +16 -0
  81. package/lib/components/ProForm/hooks/useUrlSync.js +178 -0
  82. package/lib/components/ProForm/index.d.ts +12 -5
  83. package/lib/components/ProForm/index.js +16 -1
  84. package/lib/components/ProForm/interface.d.ts +185 -28
  85. package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
  86. package/lib/components/ProForm/layouts/DialogForm.js +18 -7
  87. package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
  88. package/lib/components/ProForm/layouts/DrawerForm.js +17 -7
  89. package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
  90. package/lib/components/ProForm/layouts/QueryFilter.js +46 -70
  91. package/lib/components/ProForm/layouts/useOverlayForm.d.ts +2 -2
  92. package/lib/components/ProForm/layouts/useOverlayForm.js +30 -8
  93. package/lib/components/ProForm/style/ProForm.css +4 -4
  94. package/lib/components/ProForm/utils.d.ts +12 -1
  95. package/lib/components/ProForm/utils.js +104 -28
  96. package/lib/components/ProTable/ProTable.js +3 -3
  97. package/lib/components/Tooltip/style/Tooltip.css +1 -0
  98. package/lib/index.css +1 -1
  99. package/lib/index.d.ts +2 -2
  100. package/lib/index.js +13 -1
  101. package/package.json +1 -1
  102. package/scripts/mcp-server/examples.generated.json +90 -0
  103. package/scripts/mcp-server/index.generated.json +1866 -212
@@ -4,9 +4,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
+ exports.filterRulesByTrigger = filterRulesByTrigger;
7
8
  exports.runRulesAsync = runRulesAsync;
8
9
  exports.runRulesSync = runRulesSync;
9
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
12
  function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
11
13
  function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
12
14
  function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
@@ -37,29 +39,55 @@ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P
37
39
  step((generator = generator.apply(thisArg, _arguments || [])).next());
38
40
  });
39
41
  };
40
- // ---------------------------------------------------------------------------
41
- // Shared validation engine.
42
- //
43
- // The same required/min/max/pattern/enum/type rule checks were previously
44
- // implemented three times (useFormCore.validateField, useFormCore.handleSubmit,
45
- // useForm.validateFieldAsync). They are consolidated here as pure functions that
46
- // return the first error message (or null) — callers own the setFieldError side
47
- // effect. The only difference between the sync and async wrappers is how custom
48
- // `validator` functions are handled (awaited vs. not).
49
- // ---------------------------------------------------------------------------
42
+ function isThenable(value) {
43
+ return value !== null && (0, _typeof2["default"])(value) === 'object' && typeof value.then === 'function';
44
+ }
45
+ /** Empty for `required`: undefined / null / '' / empty array. */
46
+ function isEmptyValue(value) {
47
+ return value === undefined || value === null || value === '' || Array.isArray(value) && value.length === 0;
48
+ }
49
+ /**
50
+ * Filter rules applicable to an interactive trigger. A rule WITHOUT an
51
+ * explicit `validateTrigger` follows the form-level trigger; a rule WITH one
52
+ * runs on exactly those trigger(s), regardless of the form-level setting.
53
+ * Submit-time validation bypasses this filter and runs every rule.
54
+ */
55
+ function filterRulesByTrigger(rules, trigger, formTrigger) {
56
+ return rules.filter(function (rule) {
57
+ var ruleTrigger = rule.validateTrigger;
58
+ if (!ruleTrigger) return formTrigger === trigger;
59
+ return Array.isArray(ruleTrigger) ? ruleTrigger.includes(trigger) : ruleTrigger === trigger;
60
+ });
61
+ }
50
62
  /**
51
63
  * Evaluate every built-in (non-`validator`) rule kind for a single rule.
52
64
  * Returns the error message for the first failing check, or null.
53
65
  */
54
66
  function checkBuiltinRules(rule, value, name) {
55
- if (rule.required && (value === undefined || value === null || value === '')) {
67
+ if (rule.required && isEmptyValue(value)) {
56
68
  return rule.message || "".concat(name, " is required");
57
69
  }
58
- if (rule.min && typeof value === 'string' && value.length < rule.min) {
59
- return rule.message || "".concat(name, " must be at least ").concat(rule.min, " characters");
60
- }
61
- if (rule.max && typeof value === 'string' && value.length > rule.max) {
62
- return rule.message || "".concat(name, " must be no more than ").concat(rule.max, " characters");
70
+ // min/max: string length, array item count, number numeric value
71
+ if (rule.min !== undefined || rule.max !== undefined) {
72
+ var measured = null;
73
+ var unit = '';
74
+ if (typeof value === 'string') {
75
+ measured = value.length;
76
+ unit = ' characters';
77
+ } else if (Array.isArray(value)) {
78
+ measured = value.length;
79
+ unit = ' items';
80
+ } else if (typeof value === 'number' && !Number.isNaN(value)) {
81
+ measured = value;
82
+ }
83
+ if (measured !== null) {
84
+ if (rule.min !== undefined && measured < rule.min) {
85
+ return rule.message || "".concat(name, " must be at least ").concat(rule.min).concat(unit);
86
+ }
87
+ if (rule.max !== undefined && measured > rule.max) {
88
+ return rule.message || "".concat(name, " must be no more than ").concat(rule.max).concat(unit);
89
+ }
90
+ }
63
91
  }
64
92
  if (rule.pattern && typeof value === 'string' && !rule.pattern.test(value)) {
65
93
  return rule.message || "".concat(name, " format is invalid");
@@ -90,26 +118,40 @@ function checkBuiltinRules(rule, value, name) {
90
118
  return null;
91
119
  }
92
120
  /**
93
- * Synchronous rule run. Custom validators are invoked but NOT awaited — a
94
- * promise-returning validator is treated as failing (matches the legacy sync
95
- * `validateField` behaviour). Returns the first error message, or null.
121
+ * Synchronous rule run. A Promise-returning validator CANNOT be evaluated
122
+ * here it is deferred (treated as passing for this run; its rejection is
123
+ * swallowed) and left to the async runs (blur/submit), which always await it.
124
+ * Failing it instead would mis-report "Validation failed" on every keystroke
125
+ * for perfectly valid input.
96
126
  */
97
127
  function runRulesSync(name, value, values, rules) {
128
+ var warning = null;
98
129
  var _iterator = _createForOfIteratorHelper(rules),
99
130
  _step;
100
131
  try {
101
132
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
102
133
  var rule = _step.value;
103
- var builtinError = checkBuiltinRules(rule, value, name);
104
- if (builtinError !== null) return builtinError;
105
- if (typeof rule.validator === 'function') {
134
+ var failure = checkBuiltinRules(rule, value, name);
135
+ if (failure === null && typeof rule.validator === 'function') {
106
136
  try {
107
137
  var result = rule.validator(value, values);
108
- if (result !== true) {
109
- return typeof result === 'string' ? result : 'Validation failed';
138
+ if (isThenable(result)) {
139
+ result.then(undefined, function () {});
140
+ } else if (result !== true) {
141
+ failure = typeof result === 'string' ? result : 'Validation failed';
110
142
  }
111
143
  } catch (err) {
112
- return err instanceof Error ? err.message : 'Validation error';
144
+ failure = err instanceof Error ? err.message : 'Validation error';
145
+ }
146
+ }
147
+ if (failure !== null) {
148
+ if (rule.warningOnly) {
149
+ warning = warning !== null && warning !== void 0 ? warning : failure;
150
+ } else {
151
+ return {
152
+ error: failure,
153
+ warning: warning
154
+ };
113
155
  }
114
156
  }
115
157
  }
@@ -118,19 +160,22 @@ function runRulesSync(name, value, values, rules) {
118
160
  } finally {
119
161
  _iterator.f();
120
162
  }
121
- return null;
163
+ return {
164
+ error: null,
165
+ warning: warning
166
+ };
122
167
  }
123
168
  /**
124
169
  * Asynchronous rule run. Custom validators are awaited (sync or async). A
125
- * validator returning `undefined` is treated as passing. Returns the first
126
- * error message, or null.
170
+ * validator returning `undefined` is treated as passing.
127
171
  */
128
172
  function runRulesAsync(name, value, values, rules) {
129
173
  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
130
- var _iterator2, _step2, rule, builtinError, result, _t, _t2;
174
+ var warning, _iterator2, _step2, rule, failure, result, _t, _t2;
131
175
  return _regenerator["default"].wrap(function (_context) {
132
176
  while (1) switch (_context.prev = _context.next) {
133
177
  case 0:
178
+ warning = null;
134
179
  _iterator2 = _createForOfIteratorHelper(rules);
135
180
  _context.prev = 1;
136
181
  _iterator2.s();
@@ -140,34 +185,42 @@ function runRulesAsync(name, value, values, rules) {
140
185
  break;
141
186
  }
142
187
  rule = _step2.value;
143
- builtinError = checkBuiltinRules(rule, value, name);
144
- if (!(builtinError !== null)) {
145
- _context.next = 3;
188
+ failure = checkBuiltinRules(rule, value, name);
189
+ if (!(failure === null && typeof rule.validator === 'function')) {
190
+ _context.next = 6;
146
191
  break;
147
192
  }
148
- return _context.abrupt("return", builtinError);
149
- case 3:
150
- if (!(typeof rule.validator === 'function')) {
193
+ _context.prev = 3;
194
+ _context.next = 4;
195
+ return Promise.resolve(rule.validator(value, values));
196
+ case 4:
197
+ result = _context.sent;
198
+ if (result !== true && result !== undefined) {
199
+ failure = typeof result === 'string' ? result : 'Validation failed';
200
+ }
201
+ _context.next = 6;
202
+ break;
203
+ case 5:
204
+ _context.prev = 5;
205
+ _t = _context["catch"](3);
206
+ failure = _t instanceof Error ? _t.message : 'Validation error';
207
+ case 6:
208
+ if (!(failure !== null)) {
151
209
  _context.next = 8;
152
210
  break;
153
211
  }
154
- _context.prev = 4;
155
- _context.next = 5;
156
- return Promise.resolve(rule.validator(value, values));
157
- case 5:
158
- result = _context.sent;
159
- if (!(result !== true && result !== undefined)) {
160
- _context.next = 6;
212
+ if (!rule.warningOnly) {
213
+ _context.next = 7;
161
214
  break;
162
215
  }
163
- return _context.abrupt("return", typeof result === 'string' ? result : 'Validation failed');
164
- case 6:
216
+ warning = warning !== null && warning !== void 0 ? warning : failure;
165
217
  _context.next = 8;
166
218
  break;
167
219
  case 7:
168
- _context.prev = 7;
169
- _t = _context["catch"](4);
170
- return _context.abrupt("return", _t instanceof Error ? _t.message : 'Validation error');
220
+ return _context.abrupt("return", {
221
+ error: failure,
222
+ warning: warning
223
+ });
171
224
  case 8:
172
225
  _context.next = 2;
173
226
  break;
@@ -183,12 +236,15 @@ function runRulesAsync(name, value, values, rules) {
183
236
  _iterator2.f();
184
237
  return _context.finish(11);
185
238
  case 12:
186
- return _context.abrupt("return", null);
239
+ return _context.abrupt("return", {
240
+ error: null,
241
+ warning: warning
242
+ });
187
243
  case 13:
188
244
  case "end":
189
245
  return _context.stop();
190
246
  }
191
- }, _callee, null, [[1, 10, 11, 12], [4, 7]]);
247
+ }, _callee, null, [[1, 10, 11, 12], [3, 5]]);
192
248
  }));
193
249
  }
194
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJjaGVja0J1aWx0aW5SdWxlcyIsInJ1bGUiLCJuYW1lIiwicmVxdWlyZWQiLCJ1bmRlZmluZWQiLCJtZXNzYWdlIiwiY29uY2F0IiwibWluIiwibGVuZ3RoIiwibWF4IiwicGF0dGVybiIsInRlc3QiLCJBcnJheSIsImlzQXJyYXkiLCJpbmNsdWRlcyIsImpvaW4iLCJ0eXBlIiwiaXNOYU4iLCJlbWFpbFBhdHRlcm4iLCJTdHJpbmciLCJVUkwiLCJfYSIsInJ1blJ1bGVzU3luYyIsInZhbHVlcyIsInJ1bGVzIiwiX2l0ZXJhdG9yIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJfc3RlcCIsInMiLCJuIiwiYnVpbHRpbkVycm9yIiwidmFsaWRhdG9yIiwiZXJyIiwiRXJyb3IiLCJmIiwicnVuUnVsZXNBc3luYyIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl90IiwiX3QyIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsImFicnVwdCIsInNlbnQiLCJmaW5pc2giLCJzdG9wIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxJQUFJQSxTQUFTLEdBQUksVUFBUSxTQUFLQSxTQUFTLElBQUssVUFBVUMsT0FBTyxFQUFFQyxVQUFVLEVBQUVDLENBQUMsRUFBRUMsU0FBUyxFQUFFO0VBQ3JGLFNBQVND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N0QzQixNQUFNLEdBQUFnRCxRQUFBLENBQUFHLElBQUE7VUFBQSxNQUNSbkQsTUFBTSxLQUFLLElBQUksSUFBSUEsTUFBTSxLQUFLUSxTQUFTO1lBQUF3QyxRQUFBLENBQUFuRCxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUFtRCxRQUFBLENBQUFFLE1BQUEsV0FDbEMsT0FBT2xELE1BQU0sS0FBSyxRQUFRLEdBQUdBLE1BQU0sR0FBRyxtQkFBbUI7UUFBQTtVQUFBZ0QsUUFBQSxDQUFBbkQsSUFBQTtVQUFBO1FBQUE7VUFBQW1ELFFBQUEsQ0FBQUMsSUFBQTtVQUFBSixFQUFBLEdBQUFHLFFBQUE7VUFBQSxPQUFBQSxRQUFBLENBQUFFLE1BQUEsV0FHM0RMLEVBQUEsWUFBZVIsS0FBSyxHQUFHUSxFQUFBLENBQUlwQyxPQUFPLEdBQUcsa0JBQWtCO1FBQUE7VUFBQXVDLFFBQUEsQ0FBQW5ELElBQUE7VUFBQTtRQUFBO1VBQUFtRCxRQUFBLENBQUFuRCxJQUFBO1VBQUE7UUFBQTtVQUFBbUQsUUFBQSxDQUFBQyxJQUFBO1VBQUFILEdBQUEsR0FBQUUsUUFBQTtVQUFBTCxVQUFBLENBQUE3QyxDQUFBLENBQUFnRCxHQUFBO1FBQUE7VUFBQUUsUUFBQSxDQUFBQyxJQUFBO1VBQUFOLFVBQUEsQ0FBQUwsQ0FBQTtVQUFBLE9BQUFVLFFBQUEsQ0FBQUksTUFBQTtRQUFBO1VBQUEsT0FBQUosUUFBQSxDQUFBRSxNQUFBLFdBSTdELElBQUk7UUFBQTtRQUFBO1VBQUEsT0FBQUYsUUFBQSxDQUFBSyxJQUFBO01BQUE7SUFBQSxHQUFBWCxPQUFBO0VBQUEsQ0FDWixFQUFBO0FEREQiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvcnVuUnVsZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU2hhcmVkIHZhbGlkYXRpb24gZW5naW5lLlxuLy9cbi8vIFRoZSBzYW1lIHJlcXVpcmVkL21pbi9tYXgvcGF0dGVybi9lbnVtL3R5cGUgcnVsZSBjaGVja3Mgd2VyZSBwcmV2aW91c2x5XG4vLyBpbXBsZW1lbnRlZCB0aHJlZSB0aW1lcyAodXNlRm9ybUNvcmUudmFsaWRhdGVGaWVsZCwgdXNlRm9ybUNvcmUuaGFuZGxlU3VibWl0LFxuLy8gdXNlRm9ybS52YWxpZGF0ZUZpZWxkQXN5bmMpLiBUaGV5IGFyZSBjb25zb2xpZGF0ZWQgaGVyZSBhcyBwdXJlIGZ1bmN0aW9ucyB0aGF0XG4vLyByZXR1cm4gdGhlIGZpcnN0IGVycm9yIG1lc3NhZ2UgKG9yIG51bGwpIOKAlCBjYWxsZXJzIG93biB0aGUgc2V0RmllbGRFcnJvciBzaWRlXG4vLyBlZmZlY3QuIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgc3luYyBhbmQgYXN5bmMgd3JhcHBlcnMgaXMgaG93IGN1c3RvbVxuLy8gYHZhbGlkYXRvcmAgZnVuY3Rpb25zIGFyZSBoYW5kbGVkIChhd2FpdGVkIHZzLiBub3QpLlxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vKipcbiAqIEV2YWx1YXRlIGV2ZXJ5IGJ1aWx0LWluIChub24tYHZhbGlkYXRvcmApIHJ1bGUga2luZCBmb3IgYSBzaW5nbGUgcnVsZS5cbiAqIFJldHVybnMgdGhlIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBmaXJzdCBmYWlsaW5nIGNoZWNrLCBvciBudWxsLlxuICovXG5mdW5jdGlvbiBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSkge1xuICAgIGlmIChydWxlLnJlcXVpcmVkICYmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBpcyByZXF1aXJlZGA7XG4gICAgfVxuICAgIGlmIChydWxlLm1pbiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA8IHJ1bGUubWluKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke3J1bGUubWlufSBjaGFyYWN0ZXJzYDtcbiAgICB9XG4gICAgaWYgKHJ1bGUubWF4ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gcnVsZS5tYXgpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSBjaGFyYWN0ZXJzYDtcbiAgICB9XG4gICAgaWYgKHJ1bGUucGF0dGVybiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBmb3JtYXQgaXMgaW52YWxpZGA7XG4gICAgfVxuICAgIGlmIChydWxlLmVudW0gJiYgQXJyYXkuaXNBcnJheShydWxlLmVudW0pICYmIHZhbHVlKSB7XG4gICAgICAgIGlmICghcnVsZS5lbnVtLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG9uZSBvZiAke3J1bGUuZW51bS5qb2luKCcsICcpfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUudHlwZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYSBudW1iZXJgO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnR5cGUgPT09ICdlbWFpbCcgJiYgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgZW1haWxQYXR0ZXJuID0gL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC87XG4gICAgICAgIGlmICghZW1haWxQYXR0ZXJuLnRlc3QoU3RyaW5nKHZhbHVlKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIGVtYWlsYDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS50eXBlID09PSAndXJsJyAmJiB2YWx1ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFVSTChTdHJpbmcodmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIFVSTGA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIFN5bmNocm9ub3VzIHJ1bGUgcnVuLiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgaW52b2tlZCBidXQgTk9UIGF3YWl0ZWQg4oCUIGFcbiAqIHByb21pc2UtcmV0dXJuaW5nIHZhbGlkYXRvciBpcyB0cmVhdGVkIGFzIGZhaWxpbmcgKG1hdGNoZXMgdGhlIGxlZ2FjeSBzeW5jXG4gKiBgdmFsaWRhdGVGaWVsZGAgYmVoYXZpb3VyKS4gUmV0dXJucyB0aGUgZmlyc3QgZXJyb3IgbWVzc2FnZSwgb3IgbnVsbC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blJ1bGVzU3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzLCBydWxlcykge1xuICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgICBjb25zdCBidWlsdGluRXJyb3IgPSBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgIGlmIChidWlsdGluRXJyb3IgIT09IG51bGwpXG4gICAgICAgICAgICByZXR1cm4gYnVpbHRpbkVycm9yO1xuICAgICAgICBpZiAodHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJ1bGUudmFsaWRhdG9yKHZhbHVlLCB2YWx1ZXMpO1xuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnVmFsaWRhdGlvbiBlcnJvcic7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIEFzeW5jaHJvbm91cyBydWxlIHJ1bi4gQ3VzdG9tIHZhbGlkYXRvcnMgYXJlIGF3YWl0ZWQgKHN5bmMgb3IgYXN5bmMpLiBBXG4gKiB2YWxpZGF0b3IgcmV0dXJuaW5nIGB1bmRlZmluZWRgIGlzIHRyZWF0ZWQgYXMgcGFzc2luZy4gUmV0dXJucyB0aGUgZmlyc3RcbiAqIGVycm9yIG1lc3NhZ2UsIG9yIG51bGwuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SdWxlc0FzeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJ1bGVzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICAgICAgICBjb25zdCBidWlsdGluRXJyb3IgPSBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgICAgICBpZiAoYnVpbHRpbkVycm9yICE9PSBudWxsKVxuICAgICAgICAgICAgICAgIHJldHVybiBidWlsdGluRXJyb3I7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgUHJvbWlzZS5yZXNvbHZlKHJ1bGUudmFsaWRhdG9yKHZhbHVlLCB2YWx1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbn0iLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
250
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJpc1RoZW5hYmxlIiwiX3R5cGVvZjIiLCJpc0VtcHR5VmFsdWUiLCJ1bmRlZmluZWQiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsInJ1bGVzIiwidHJpZ2dlciIsImZvcm1UcmlnZ2VyIiwiZmlsdGVyIiwicnVsZSIsInJ1bGVUcmlnZ2VyIiwidmFsaWRhdGVUcmlnZ2VyIiwiaW5jbHVkZXMiLCJjaGVja0J1aWx0aW5SdWxlcyIsIm5hbWUiLCJyZXF1aXJlZCIsIm1lc3NhZ2UiLCJjb25jYXQiLCJtaW4iLCJtYXgiLCJtZWFzdXJlZCIsInVuaXQiLCJOdW1iZXIiLCJpc05hTiIsInBhdHRlcm4iLCJ0ZXN0Iiwiam9pbiIsInR5cGUiLCJlbWFpbFBhdHRlcm4iLCJTdHJpbmciLCJVUkwiLCJfYSIsInJ1blJ1bGVzU3luYyIsInZhbHVlcyIsIndhcm5pbmciLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJmYWlsdXJlIiwidmFsaWRhdG9yIiwiZXJyIiwiRXJyb3IiLCJ3YXJuaW5nT25seSIsImVycm9yIiwiZiIsInJ1blJ1bGVzQXN5bmMiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfdCIsIl90MiIsIndy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QUEsQ0FDaEMsRUFBQTtBRGxDRCIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuZnVuY3Rpb24gaXNUaGVuYWJsZSh2YWx1ZSkge1xuICAgIHJldHVybiAodmFsdWUgIT09IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgICAgICB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJyk7XG59XG4vKiogRW1wdHkgZm9yIGByZXF1aXJlZGA6IHVuZGVmaW5lZCAvIG51bGwgLyAnJyAvIGVtcHR5IGFycmF5LiAqL1xuZnVuY3Rpb24gaXNFbXB0eVZhbHVlKHZhbHVlKSB7XG4gICAgcmV0dXJuICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG4gICAgICAgIHZhbHVlID09PSBudWxsIHx8XG4gICAgICAgIHZhbHVlID09PSAnJyB8fFxuICAgICAgICAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWUubGVuZ3RoID09PSAwKSk7XG59XG4vKipcbiAqIEZpbHRlciBydWxlcyBhcHBsaWNhYmxlIHRvIGFuIGludGVyYWN0aXZlIHRyaWdnZXIuIEEgcnVsZSBXSVRIT1VUIGFuXG4gKiBleHBsaWNpdCBgdmFsaWRhdGVUcmlnZ2VyYCBmb2xsb3dzIHRoZSBmb3JtLWxldmVsIHRyaWdnZXI7IGEgcnVsZSBXSVRIIG9uZVxuICogcnVucyBvbiBleGFjdGx5IHRob3NlIHRyaWdnZXIocyksIHJlZ2FyZGxlc3Mgb2YgdGhlIGZvcm0tbGV2ZWwgc2V0dGluZy5cbiAqIFN1Ym1pdC10aW1lIHZhbGlkYXRpb24gYnlwYXNzZXMgdGhpcyBmaWx0ZXIgYW5kIHJ1bnMgZXZlcnkgcnVsZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlclJ1bGVzQnlUcmlnZ2VyKHJ1bGVzLCB0cmlnZ2VyLCBmb3JtVHJpZ2dlcikge1xuICAgIHJldHVybiBydWxlcy5maWx0ZXIoKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3QgcnVsZVRyaWdnZXIgPSBydWxlLnZhbGlkYXRlVHJpZ2dlcjtcbiAgICAgICAgaWYgKCFydWxlVHJpZ2dlcilcbiAgICAgICAgICAgIHJldHVybiBmb3JtVHJpZ2dlciA9PT0gdHJpZ2dlcjtcbiAgICAgICAgcmV0dXJuIEFycmF5LmlzQXJyYXkocnVsZVRyaWdnZXIpXG4gICAgICAgICAgICA/IHJ1bGVUcmlnZ2VyLmluY2x1ZGVzKHRyaWdnZXIpXG4gICAgICAgICAgICA6IHJ1bGVUcmlnZ2VyID09PSB0cmlnZ2VyO1xuICAgIH0pO1xufVxuLyoqXG4gKiBFdmFsdWF0ZSBldmVyeSBidWlsdC1pbiAobm9uLWB2YWxpZGF0b3JgKSBydWxlIGtpbmQgZm9yIGEgc2luZ2xlIHJ1bGUuXG4gKiBSZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aGUgZmlyc3QgZmFpbGluZyBjaGVjaywgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpIHtcbiAgICBpZiAocnVsZS5yZXF1aXJlZCAmJiBpc0VtcHR5VmFsdWUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgO1xuICAgIH1cbiAgICAvLyBtaW4vbWF4OiBzdHJpbmcg4oaSIGxlbmd0aCwgYXJyYXkg4oaSIGl0ZW0gY291bnQsIG51bWJlciDihpIgbnVtZXJpYyB2YWx1ZVxuICAgIGlmIChydWxlLm1pbiAhPT0gdW5kZWZpbmVkIHx8IHJ1bGUubWF4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IG1lYXN1cmVkID0gbnVsbDtcbiAgICAgICAgbGV0IHVuaXQgPSAnJztcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIG1lYXN1cmVkID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgdW5pdCA9ICcgY2hhcmFjdGVycyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIG1lYXN1cmVkID0gdmFsdWUubGVuZ3RoO1xuICAgICAgICAgICAgdW5pdCA9ICcgaXRlbXMnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgIU51bWJlci5pc05hTih2YWx1ZSkpIHtcbiAgICAgICAgICAgIG1lYXN1cmVkID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG1lYXN1cmVkICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocnVsZS5taW4gIT09IHVuZGVmaW5lZCAmJiBtZWFzdXJlZCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGF0IGxlYXN0ICR7cnVsZS5taW59JHt1bml0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5tYXggIT09IHVuZGVmaW5lZCAmJiBtZWFzdXJlZCA+IHJ1bGUubWF4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSR7dW5pdH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnBhdHRlcm4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgIH1cbiAgICBpZiAocnVsZS5lbnVtICYmIEFycmF5LmlzQXJyYXkocnVsZS5lbnVtKSAmJiB2YWx1ZSkge1xuICAgICAgICBpZiAoIXJ1bGUuZW51bS5pbmNsdWRlcyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBvbmUgb2YgJHtydWxlLmVudW0uam9pbignLCAnKX1gO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnR5cGUgPT09ICdudW1iZXInICYmIHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09ICcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICdudW1iZXInIHx8IGlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIGEgbnVtYmVyYDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS50eXBlID09PSAnZW1haWwnICYmIHZhbHVlKSB7XG4gICAgICAgIGNvbnN0IGVtYWlsUGF0dGVybiA9IC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvO1xuICAgICAgICBpZiAoIWVtYWlsUGF0dGVybi50ZXN0KFN0cmluZyh2YWx1ZSkpKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBlbWFpbGA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUudHlwZSA9PT0gJ3VybCcgJiYgdmFsdWUpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIG5ldyBVUkwoU3RyaW5nKHZhbHVlKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2F0Y2ggKF9hKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYSB2YWxpZCBVUkxgO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xufVxuLyoqXG4gKiBTeW5jaHJvbm91cyBydWxlIHJ1bi4gQSBQcm9taXNlLXJldHVybmluZyB2YWxpZGF0b3IgQ0FOTk9UIGJlIGV2YWx1YXRlZFxuICogaGVyZSDigJQgaXQgaXMgZGVmZXJyZWQgKHRyZWF0ZWQgYXMgcGFzc2luZyBmb3IgdGhpcyBydW47IGl0cyByZWplY3Rpb24gaXNcbiAqIHN3YWxsb3dlZCkgYW5kIGxlZnQgdG8gdGhlIGFzeW5jIHJ1bnMgKGJsdXIvc3VibWl0KSwgd2hpY2ggYWx3YXlzIGF3YWl0IGl0LlxuICogRmFpbGluZyBpdCBpbnN0ZWFkIHdvdWxkIG1pcy1yZXBvcnQgXCJWYWxpZGF0aW9uIGZhaWxlZFwiIG9uIGV2ZXJ5IGtleXN0cm9rZVxuICogZm9yIHBlcmZlY3RseSB2YWxpZCBpbnB1dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blJ1bGVzU3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzLCBydWxlcykge1xuICAgIGxldCB3YXJuaW5nID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgbGV0IGZhaWx1cmUgPSBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgIGlmIChmYWlsdXJlID09PSBudWxsICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBydWxlLnZhbGlkYXRvcih2YWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNUaGVuYWJsZShyZXN1bHQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC50aGVuKHVuZGVmaW5lZCwgKCkgPT4geyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgPSB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGZhaWx1cmUgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmYWlsdXJlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocnVsZS53YXJuaW5nT25seSkge1xuICAgICAgICAgICAgICAgIHdhcm5pbmcgPSB3YXJuaW5nICE9PSBudWxsICYmIHdhcm5pbmcgIT09IHZvaWQgMCA/IHdhcm5pbmcgOiBmYWlsdXJlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGZhaWx1cmUsIHdhcm5pbmcgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBlcnJvcjogbnVsbCwgd2FybmluZyB9O1xufVxuLyoqXG4gKiBBc3luY2hyb25vdXMgcnVsZSBydW4uIEN1c3RvbSB2YWxpZGF0b3JzIGFyZSBhd2FpdGVkIChzeW5jIG9yIGFzeW5jKS4gQVxuICogdmFsaWRhdG9yIHJldHVybmluZyBgdW5kZWZpbmVkYCBpcyB0cmVhdGVkIGFzIHBhc3NpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SdWxlc0FzeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJ1bGVzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHdhcm5pbmcgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgIGxldCBmYWlsdXJlID0gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICAgICAgaWYgKGZhaWx1cmUgPT09IG51bGwgJiYgdHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgUHJvbWlzZS5yZXNvbHZlKHJ1bGUudmFsaWRhdG9yKHZhbHVlLCB2YWx1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSA9IHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmYWlsdXJlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUud2FybmluZ09ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IHdhcm5pbmcgIT09IG51bGwgJiYgd2FybmluZyAhPT0gdm9pZCAwID8gd2FybmluZyA6IGZhaWx1cmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBlcnJvcjogZmFpbHVyZSwgd2FybmluZyB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBlcnJvcjogbnVsbCwgd2FybmluZyB9O1xuICAgIH0pO1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -5,17 +5,26 @@ export interface UseFormItemOptions {
5
5
  rules?: Rule[];
6
6
  required?: boolean;
7
7
  validateStatus?: ValidateStatus;
8
+ /** Prop name the controlled value is injected under (e.g. `checked` for Switch/Checkbox). */
9
+ valuePropName?: string;
10
+ /** Debounce (ms) applied to onChange-triggered validation. */
11
+ validateDebounce?: number;
8
12
  }
9
13
  export interface UseFormItemReturn {
10
14
  fieldValue: unknown;
11
15
  fieldError: string | undefined;
16
+ fieldWarning: string | undefined;
12
17
  fieldValidating: boolean;
13
18
  validateStatus: ValidateStatus | undefined;
14
19
  isRequired: boolean;
15
20
  size: FormSize;
16
21
  labelAlign: LabelAlign;
17
22
  requiredMark: boolean;
18
- /** Clone a form-component child injecting value/onChange/onBlur/status/size. Non-form children pass through unchanged. */
23
+ /**
24
+ * Clone a form-component child injecting value/onChange/onBlur/status.
25
+ * Form `size` cascades into size-aware controls as a default — an explicit
26
+ * field-level `size` wins. Non-form children pass through unchanged.
27
+ */
19
28
  injectField: (child: ReactNode) => ReactNode;
20
29
  }
21
30
  export declare function useFormItem(options: UseFormItemOptions): UseFormItemReturn;