@1money/component-ui 0.0.27 → 0.0.28

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 (80) hide show
  1. package/es/components/Calendar/Calendar.js +2 -1
  2. package/es/components/Checkbox/Checkbox.js +2 -1
  3. package/es/components/Checkbox/CheckboxGroup.js +2 -1
  4. package/es/components/Checkbox/index.js +2 -1
  5. package/es/components/Input/Amount/Amount.d.ts +2 -2
  6. package/es/components/Input/Amount/Amount.js +5 -2
  7. package/es/components/Input/Input/Input.js +2 -1
  8. package/es/components/Input/Mask/Mask.d.ts +2 -2
  9. package/es/components/Input/Mask/Mask.js +5 -2
  10. package/es/components/Input/OTP/OTP.d.ts +2 -2
  11. package/es/components/Input/OTP/OTP.js +5 -2
  12. package/es/components/Input/Password/Password.d.ts +2 -2
  13. package/es/components/Input/Password/Password.js +5 -2
  14. package/es/components/Input/Search/Search.d.ts +2 -2
  15. package/es/components/Input/Search/Search.js +5 -2
  16. package/es/components/Input/TextArea/TextArea.d.ts +2 -2
  17. package/es/components/Input/TextArea/TextArea.js +5 -2
  18. package/es/components/Input/Trade/Trade.d.ts +2 -2
  19. package/es/components/Input/Trade/Trade.js +5 -2
  20. package/es/components/ProForm/ProForm.d.ts +2 -1
  21. package/es/components/ProForm/ProForm.js +120 -49
  22. package/es/components/ProForm/ProFormDependency.d.ts +2 -1
  23. package/es/components/ProForm/ProFormDependency.js +101 -8
  24. package/es/components/ProForm/Submitter.js +42 -3
  25. package/es/components/ProForm/core/constants.d.ts +1 -1
  26. package/es/components/ProForm/core/constants.js +3 -3
  27. package/es/components/ProForm/core/hooks/useForm.d.ts +2 -2
  28. package/es/components/ProForm/core/hooks/useForm.js +249 -113
  29. package/es/components/ProForm/core/hooks/useFormCore.js +3 -3
  30. package/es/components/ProForm/core/interface.d.ts +26 -0
  31. package/es/components/ProForm/core/useFormItem.d.ts +1 -0
  32. package/es/components/ProForm/core/useFormItem.js +56 -4
  33. package/es/components/ProForm/index.d.ts +3 -2
  34. package/es/components/ProForm/index.js +8 -2
  35. package/es/components/ProForm/interface.d.ts +11 -5
  36. package/es/components/Radio/RadioGroup.js +2 -1
  37. package/es/components/Slider/Slider.js +2 -1
  38. package/es/components/Switch/Switch.js +2 -1
  39. package/es/index.css +1 -1
  40. package/lib/components/Calendar/Calendar.js +2 -1
  41. package/lib/components/Checkbox/Checkbox.js +2 -1
  42. package/lib/components/Checkbox/CheckboxGroup.js +2 -1
  43. package/lib/components/Checkbox/index.js +2 -1
  44. package/lib/components/Input/Amount/Amount.d.ts +2 -2
  45. package/lib/components/Input/Amount/Amount.js +5 -2
  46. package/lib/components/Input/Input/Input.js +2 -1
  47. package/lib/components/Input/Mask/Mask.d.ts +2 -2
  48. package/lib/components/Input/Mask/Mask.js +5 -2
  49. package/lib/components/Input/OTP/OTP.d.ts +2 -2
  50. package/lib/components/Input/OTP/OTP.js +5 -2
  51. package/lib/components/Input/Password/Password.d.ts +2 -2
  52. package/lib/components/Input/Password/Password.js +5 -2
  53. package/lib/components/Input/Search/Search.d.ts +2 -2
  54. package/lib/components/Input/Search/Search.js +5 -2
  55. package/lib/components/Input/TextArea/TextArea.d.ts +2 -2
  56. package/lib/components/Input/TextArea/TextArea.js +5 -2
  57. package/lib/components/Input/Trade/Trade.d.ts +2 -2
  58. package/lib/components/Input/Trade/Trade.js +5 -2
  59. package/lib/components/ProForm/ProForm.d.ts +2 -1
  60. package/lib/components/ProForm/ProForm.js +121 -50
  61. package/lib/components/ProForm/ProFormDependency.d.ts +2 -1
  62. package/lib/components/ProForm/ProFormDependency.js +108 -11
  63. package/lib/components/ProForm/Submitter.js +44 -5
  64. package/lib/components/ProForm/core/constants.d.ts +1 -1
  65. package/lib/components/ProForm/core/constants.js +3 -3
  66. package/lib/components/ProForm/core/hooks/useForm.d.ts +2 -2
  67. package/lib/components/ProForm/core/hooks/useForm.js +247 -112
  68. package/lib/components/ProForm/core/hooks/useFormCore.js +3 -3
  69. package/lib/components/ProForm/core/interface.d.ts +26 -0
  70. package/lib/components/ProForm/core/useFormItem.d.ts +1 -0
  71. package/lib/components/ProForm/core/useFormItem.js +58 -6
  72. package/lib/components/ProForm/index.d.ts +3 -2
  73. package/lib/components/ProForm/index.js +8 -2
  74. package/lib/components/ProForm/interface.d.ts +11 -5
  75. package/lib/components/Radio/RadioGroup.js +2 -1
  76. package/lib/components/Slider/Slider.js +2 -1
  77. package/lib/components/Switch/Switch.js +2 -1
  78. package/lib/index.css +1 -1
  79. package/package.json +1 -1
  80. package/scripts/mcp-server/index.generated.json +1 -1
@@ -169,7 +169,7 @@ var useFormCore = exports.useFormCore = function useFormCore() {
169
169
  if (rule.validator && typeof rule.validator === 'function') {
170
170
  try {
171
171
  var result = rule.validator(value, values);
172
- if (result !== true && (0, _typeof2["default"])(result) !== 'object') {
172
+ if (result !== true) {
173
173
  setFieldError(name, typeof result === 'string' ? result : 'Validation failed');
174
174
  return false;
175
175
  }
@@ -235,7 +235,7 @@ var useFormCore = exports.useFormCore = function useFormCore() {
235
235
  if (rule.validator && typeof rule.validator === 'function') {
236
236
  try {
237
237
  var result = rule.validator(value, values);
238
- if (result !== true && (0, _typeof2["default"])(result) !== 'object') {
238
+ if (result !== true) {
239
239
  newErrors[fieldName] = typeof result === 'string' ? result : 'Validation failed';
240
240
  hasErrors = true;
241
241
  break;
@@ -351,4 +351,4 @@ var useFormCore = exports.useFormCore = function useFormCore() {
351
351
  };
352
352
  };
353
353
  var _default = exports["default"] = useFormCore;
354
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJfaG9va3MiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsImdldE5lc3RlZFZhbHVlIiwib2JqIiwicGF0aCIsImtleXMiLCJzcGxpdCIsImN1cnJlbnQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImtleSIsInVuZGVmaW5lZCIsIl90eXBlb2YyIiwiZXJyIiwic2V0TmVzdGVkVmFsdWUiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkyIiwicmVzdWx0IiwiaSIsIm5leHRLZXkiLCJpc05leHRBcnJheSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZXNvbHZlVmFsdWUiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsInVzZUZvcm1Db3JlIiwiZXhwb3J0cyIsImNvbmZpZyIsImFyZ3VtZW50cyIsIl9jb25maWckaW5pdGlhbFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0IiwiX2NvbmZpZyRzaXplIiwic2l6ZSIsIl9jb25maWckbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfY29uZmlnJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfY29uZmlnJGNvbG9uIiwiY29sb24iLCJfY29uZmlnJHJlcXVpcmVkTWFyayIsInJlcXVpcmVkTWFyayIsIl9jb25maWckdmFsaWRhdGVUcmlnZyIsInZhbGlkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldFZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3JzIiwic2V0RXJyb3JzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b3VjaGVkIiwic2V0VG91Y2hlZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiZmllbGRSdWxlcyIsInNldEZpZWxkUnVsZXMiLCJzZXRGaWVsZFZhbHVlIiwidXNlTWVtb2l6ZWRGbiIsInByZXYiLCJuZXdWYWx1ZXMiLCJuZXdFcnJvcnMiLCJzZXRGaWVsZEVycm9yIiwiZXJyb3IiLCJyZWdpc3RlckZpZWxkIiwicnVsZXMiLCJnZXRGaWVsZFJ1bGVzIiwidW5yZWdpc3RlckZpZWxkIiwibmV3UnVsZXMiLCJ2YWxpZGF0ZUZpZWxkIiwicHJvdmlkZWRWYWx1ZSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJydWxlIiwicmVxdWlyZWQiLCJtZXNzYWdlIiwiY29uY2F0IiwibWluIiwibWF4IiwicGF0dGVybiIsInZhbGlkYXRvciIsIkVycm9yIiwidmFsaWRhdGVGaWVsZHMiLCJmaWVsZHNSdWxlc1RvVmFsaWRhdGUiLCJpc1ZhbGlkIiwiZm9yRWFjaCIsImhhbmRsZVN1Ym1pdEludGVybmFsIiwiaGFzRXJyb3JzIiwiZmllbGROYW1lIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInN1Y2Nlc3MiLCJoYW5kbGVTdWJtaXQiLCJ1c2VFdmVudENhbGxiYWNrIiwicHJldmVudERlZmF1bHQiLCJyZXNldEZpZWxkcyIsImhhbmRsZVJlc2V0IiwiZ2V0RmllbGRWYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwic2V0RmllbGRzVmFsdWUiLCJ1cGRhdGVkVmFsdWVzIiwiZm9ybUluc3RhbmNlIiwidXNlTWVtbyIsInN1Ym1pdCIsImNvcmVDb250ZXh0U2hhcGUiLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFBZ0UsU0FBQUUsMkJBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLHlCQUFBQyxNQUFBLElBQUFILENBQUEsQ0FBQUcsTUFBQSxDQUFBQyxRQUFBLEtBQUFKLENBQUEscUJBQUFFLENBQUEsUUFBQUcsS0FBQSxDQUFBQyxPQUFBLENBQUFOLENBQUEsTUFBQUUsQ0FBQSxHQUFBSywyQkFBQSxDQUFBUCxDQUFBLE1BQUFDLENBQUEsSUFBQUQsQ0FBQSx1QkFBQUEsQ0FBQSxDQUFBUSxNQUFBLElBQUFOLENBQUEsS0FBQUYsQ0FBQSxHQUFBRSxDQUFBLE9BQUFPLEVBQUEsTUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUFDLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFBLEVBQUEsV0FBQUgsRUFBQSxJQUFBVCxDQUFBLENBQUFRLE1BQUEsS0FBQUssSUFBQSxXQUFBQSxJQUFBLE1BQUFDLEtBQUEsRUFBQWQsQ0FBQSxDQUFBUyxFQUFBLFVBQUFSLENBQUEsV0FBQUEsRUFBQUQsQ0FBQSxVQUFBQSxDQUFBLEtBQUFlLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU0sU0FBQSxpSkFBQUMsQ0FBQSxFQUFBQyxDQUFBLE9BQUFDLENBQUEsZ0JBQUFSLENBQUEsV0FBQUEsRUFBQSxJQUFBVCxDQUFBLEdBQUFBLENBQUEsQ0FBQWtCLElBQUEsQ0FBQXBCLENBQUEsTUFBQVksQ0FBQSxXQUFBQSxFQUFBLFFBQUFaLENBQUEsR0FBQUUsQ0FBQSxDQUFBbUIsSUFBQSxXQUFBSCxDQUFBLEdBQUFsQixDQUFBLENBQUFhLElBQUEsRUFBQWIsQ0FBQSxLQUFBQyxDQUFBLFdBQUFBLEVBQUFELENBQUEs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Q1pJLFdBQVcsRUFBWEEsV0FBVztJQUNYRCxXQUFXLEVBQVhBLFdBQVc7SUFDWE0sWUFBWSxFQUFaQSxZQUFZO0lBQ1pHLGdCQUFnQixFQUFoQkE7RUM1RUEsQ0Q2RUQ7QUFDSCxDQUFDO0FBQUMsSUFBQUMsUUFBQSxHQUFBdEYsT0FBQSxjQUVhRCxXQUFXIiwiZmlsZSI6ImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyB1c2VTdGF0ZSwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUV2ZW50Q2FsbGJhY2ssIHVzZU1lbW9pemVkRm4gfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTmVzdGVkIHBhdGggaGVscGVycyAoZG90LW5vdGF0aW9uIHN1cHBvcnQsIGUuZy4gXCJpdGVtcy4wLnRpdGxlXCIpXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGdldE5lc3RlZFZhbHVlKG9iaiwgcGF0aCkge1xuICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgbGV0IGN1cnJlbnQgPSBvYmo7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICBpZiAoY3VycmVudCA9PT0gbnVsbCB8fCBjdXJyZW50ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGN1cnJlbnQgIT09ICdvYmplY3QnKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG59XG5mdW5jdGlvbiBzZXROZXN0ZWRWYWx1ZShvYmosIHBhdGgsIHZhbHVlKSB7XG4gICAgY29uc3Qga2V5cyA9IHBhdGguc3BsaXQoJy4nKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDEpXG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG9iaiksIHsgW3BhdGhdOiB2YWx1ZSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuYXNzaWduKHt9LCBvYmopO1xuICAgIGxldCBjdXJyZW50ID0gcmVzdWx0O1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGggLSAxOyBpKyspIHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgICAgY29uc3QgbmV4dEtleSA9IGtleXNbaSArIDFdO1xuICAgICAgICBjb25zdCBpc05leHRBcnJheSA9IC9eXFxkKyQvLnRlc3QobmV4dEtleSk7XG4gICAgICAgIGlmIChjdXJyZW50W2tleV0gPT09IHVuZGVmaW5lZCB8fCBjdXJyZW50W2tleV0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIGN1cnJlbnRba2V5XSA9IGlzTmV4dEFycmF5ID8gW10gOiB7fTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50W2tleV0pKSB7XG4gICAgICAgICAgICBjdXJyZW50W2tleV0gPSBbLi4uY3VycmVudFtrZXldXTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRba2V5XSA9IE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnRba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICB9XG4gICAgY3VycmVudFtrZXlzW2tleXMubGVuZ3RoIC0gMV1dID0gdmFsdWU7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpIHtcbiAgICByZXR1cm4gbmFtZS5pbmNsdWRlcygnLicpID8gZ2V0TmVzdGVkVmFsdWUodmFsdWVzLCBuYW1lKSA6IHZhbHVlc1tuYW1lXTtcbn1cbmV4cG9ydCBjb25zdCB1c2VGb3JtQ29yZSA9IChjb25maWcgPSB7fSkgPT4ge1xuICAgIGNvbnN0IHsgaW5pdGlhbFZhbHVlcyA9IHt9LCBvbkZpbmlzaCwgb25GaW5pc2hGYWlsZWQsIG9uVmFsdWVzQ2hhbmdlLCBvblJlc2V0LCBzaXplID0gJ21pZGRsZScsIGxhYmVsQWxpZ24gPSAnbGVmdCcsIGRpc2FibGVkID0gZmFsc2UsIGNvbG9uID0gdHJ1ZSwgcmVxdWlyZWRNYXJrID0gdHJ1ZSwgdmFsaWRhdGVUcmlnZ2VyID0gJ29uQ2hhbmdlJywgfSA9IGNvbmZpZztcbiAgICBjb25zdCBbdmFsdWVzLCBzZXRWYWx1ZXNdID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlcyk7XG4gICAgY29uc3QgW2Vycm9ycywgc2V0RXJyb3JzXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBbdG91Y2hlZCwgc2V0VG91Y2hlZF0gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW2ZpZWxkUnVsZXMsIHNldEZpZWxkUnVsZXNdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IHNldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lLCB2YWx1ZSkgPT4ge1xuICAgICAgICBzZXRWYWx1ZXMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IG5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgICAgID8gc2V0TmVzdGVkVmFsdWUocHJldiwgbmFtZSwgdmFsdWUpXG4gICAgICAgICAgICAgICAgOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogdmFsdWUgfSk7XG4gICAgICAgICAgICBvblZhbHVlc0NoYW5nZSA9PT0gbnVsbCB8fCBvblZhbHVlc0NoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25WYWx1ZXNDaGFuZ2UoeyBbbmFtZV06IHZhbHVlIH0sIG5ld1ZhbHVlcyk7XG4gICAgICAgICAgICByZXR1cm4gbmV3VmFsdWVzO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSAnJyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBzZXRFcnJvcnMoKHByZXYpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXByZXZbbmFtZV0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcmV2O1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IE9iamVjdC5hc3NpZ24oe30sIHByZXYpO1xuICAgICAgICAgICAgICAgIGRlbGV0ZSBuZXdFcnJvcnNbbmFtZV07XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ld0Vycm9ycztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRFcnJvciA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIGVycm9yKSA9PiB7XG4gICAgICAgIHNldEVycm9ycygocHJldikgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2W25hbWVdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2KTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdFcnJvcnM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IGVycm9yIH0pO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCByZWdpc3RlckZpZWxkID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgcnVsZXMpID0+IHtcbiAgICAgICAgc2V0RmllbGRSdWxlcygocHJldikgPT4gKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiBydWxlcyB9KSkpO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkUnVsZXMgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiBmaWVsZFJ1bGVzW25hbWVdO1xuICAgIH0pO1xuICAgIGNvbnN0IHVucmVnaXN0ZXJGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgc2V0RmllbGRSdWxlcygocHJldikgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3UnVsZXMgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2KTtcbiAgICAgICAgICAgIGRlbGV0ZSBuZXdSdWxlc1tuYW1lXTtcbiAgICAgICAgICAgIHJldHVybiBuZXdSdWxlcztcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHJ1bGVzID0gW10sIHByb3ZpZGVkVmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwcm92aWRlZFZhbHVlICE9PSB1bmRlZmluZWQgPyBwcm92aWRlZFZhbHVlIDogcmVzb2x2ZVZhbHVlKHZhbHVlcywgbmFtZSk7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBydWxlcykge1xuICAgICAgICAgICAgaWYgKHJ1bGUucmVxdWlyZWQgJiZcbiAgICAgICAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgO1xuICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLm1pbiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke3J1bGUubWlufSBjaGFyYWN0ZXJzYDtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5tYXggJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiBydWxlLm1heCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgbm8gbW9yZSB0aGFuICR7cnVsZS5tYXh9IGNoYXJhY3RlcnNgO1xuICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLnBhdHRlcm4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiAhcnVsZS5wYXR0ZXJuLnRlc3QodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gZm9ybWF0IGlzIGludmFsaWRgO1xuICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgZXJyb3IpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLnZhbGlkYXRvciAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBydWxlLnZhbGlkYXRvcih2YWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiB0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6ICdWYWxpZGF0aW9uIGZhaWxlZCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnVmFsaWRhdGlvbiBlcnJvcic7XG4gICAgICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgbWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yc1tuYW1lXSkge1xuICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgICBjb25zdCB2YWxpZGF0ZUZpZWxkcyA9IHVzZU1lbW9pemVkRm4oKGZpZWxkc1J1bGVzVG9WYWxpZGF0ZSA9IGZpZWxkUnVsZXMpID0+IHtcbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZHNSdWxlc1RvVmFsaWRhdGUpLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZmllbGRzUnVsZXNUb1ZhbGlkYXRlW25hbWVdO1xuICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZUZpZWxkKG5hbWUsIHJ1bGVzKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZVN1Ym1pdEludGVybmFsID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIGxldCBoYXNFcnJvcnMgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgbmV3RXJyb3JzID0ge307XG4gICAgICAgIE9iamVjdC5rZXlzKGZpZWxkUnVsZXMpLmZvckVhY2goKGZpZWxkTmFtZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcnVsZXMgPSBmaWVsZFJ1bGVzW2ZpZWxkTmFtZV07XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHJlc29sdmVWYWx1ZSh2YWx1ZXMsIGZpZWxkTmFtZSk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgICAgICBpZiAocnVsZS5yZXF1aXJlZCAmJlxuICAgICAgICAgICAgICAgICAgICAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID0gcnVsZS5tZXNzYWdlIHx8IGAke2ZpZWxkTmFtZX0gaXMgcmVxdWlyZWRgO1xuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUubWluICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoIDwgcnVsZS5taW4pIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JzW2ZpZWxkTmFtZV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5tZXNzYWdlIHx8IGAke2ZpZWxkTmFtZX0gbXVzdCBiZSBhdCBsZWFzdCAke3J1bGUubWlufSBjaGFyYWN0ZXJzYDtcbiAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlLm1heCAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA+IHJ1bGUubWF4KSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUubWVzc2FnZSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2ZpZWxkTmFtZX0gbXVzdCBiZSBubyBtb3JlIHRoYW4gJHtydWxlLm1heH0gY2hhcmFjdGVyc2A7XG4gICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS5wYXR0ZXJuICYmXG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgICAgICAgICAgIXJ1bGUucGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9IHJ1bGUubWVzc2FnZSB8fCBgJHtmaWVsZE5hbWV9IGZvcm1hdCBpcyBpbnZhbGlkYDtcbiAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlLnZhbGlkYXRvciAmJiB0eXBlb2YgcnVsZS52YWxpZGF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJ1bGUudmFsaWRhdG9yKHZhbHVlLCB2YWx1ZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiB0eXBlb2YgcmVzdWx0ICE9PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiAnVmFsaWRhdGlvbiBmYWlsZWQnO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JzW2ZpZWxkTmFtZV0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyLm1lc3NhZ2UgOiAnVmFsaWRhdGlvbiBlcnJvcic7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRFcnJvcnMobmV3RXJyb3JzKTtcbiAgICAgICAgaWYgKCFoYXNFcnJvcnMpIHtcbiAgICAgICAgICAgIG9uRmluaXNoID09PSBudWxsIHx8IG9uRmluaXNoID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZpbmlzaCh2YWx1ZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSwgdmFsdWVzIH07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBvbkZpbmlzaEZhaWxlZCA9PT0gbnVsbCB8fCBvbkZpbmlzaEZhaWxlZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2hGYWlsZWQoeyB2YWx1ZXMsIGVycm9yczogbmV3RXJyb3JzIH0pO1xuICAgICAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogZmFsc2UsIGVycm9yczogbmV3RXJyb3JzIH07XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gaGFuZGxlU3VibWl0SW50ZXJuYWwoKTtcbiAgICB9KTtcbiAgICBjb25zdCByZXNldEZpZWxkcyA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBzZXRWYWx1ZXMoaW5pdGlhbFZhbHVlcyk7XG4gICAgICAgIHNldEVycm9ycyh7fSk7XG4gICAgICAgIHNldFRvdWNoZWQoe30pO1xuICAgICAgICBvblJlc2V0ID09PSBudWxsIHx8IG9uUmVzZXQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uUmVzZXQoKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVSZXNldCA9IHVzZUV2ZW50Q2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgZSA9PT0gbnVsbCB8fCBlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJlc2V0RmllbGRzKCk7XG4gICAgfSk7XG4gICAgY29uc3QgZ2V0RmllbGRWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKG5hbWUpID0+IHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkc1ZhbHVlID0gdXNlTWVtb2l6ZWRGbigoKSA9PiB7XG4gICAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfSk7XG4gICAgY29uc3Qgc2V0RmllbGRzVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuZXdWYWx1ZXMpID0+IHtcbiAgICAgICAgc2V0VmFsdWVzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB1cGRhdGVkVmFsdWVzID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgbmV3VmFsdWVzKTtcbiAgICAgICAgICAgIG9uVmFsdWVzQ2hhbmdlID09PSBudWxsIHx8IG9uVmFsdWVzQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblZhbHVlc0NoYW5nZShuZXdWYWx1ZXMsIHVwZGF0ZWRWYWx1ZXMpO1xuICAgICAgICAgICAgcmV0dXJuIHVwZGF0ZWRWYWx1ZXM7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IGZvcm1JbnN0YW5jZSA9IHVzZU1lbW8oKCkgPT4gKHtcbiAgICAgICAgc3VibWl0OiBoYW5kbGVTdWJtaXRJbnRlcm5hbCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGdldEZpZWxkVmFsdWUsXG4gICAgICAgIGdldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHMsXG4gICAgfSksIFtcbiAgICAgICAgaGFuZGxlU3VibWl0SW50ZXJuYWwsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgIF0pO1xuICAgIGNvbnN0IGNvcmVDb250ZXh0U2hhcGUgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB0b3VjaGVkLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHZhbGlkYXRlRmllbGQsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbGFiZWxBbGlnbixcbiAgICAgICAgZGlzYWJsZWQsXG4gICAgICAgIGNvbG9uLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIHZhbGlkYXRlVHJpZ2dlcixcbiAgICB9KSwgW1xuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdG91Y2hlZCxcbiAgICAgICAgZm9ybUluc3RhbmNlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgXSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHRvdWNoZWQsXG4gICAgICAgIGZpZWxkUnVsZXMsXG4gICAgICAgIGdldEZpZWxkUnVsZXMsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHNldEZpZWxkRXJyb3IsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgdmFsaWRhdGVGaWVsZHMsXG4gICAgICAgIHJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHVucmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgaGFuZGxlU3VibWl0LFxuICAgICAgICBoYW5kbGVSZXNldCxcbiAgICAgICAgcmVzZXRGaWVsZHMsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgY29yZUNvbnRleHRTaGFwZSxcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IHVzZUZvcm1Db3JlOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
354
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL2hvb2tzL3VzZUZvcm1Db3JlLmpzIl0sIm5hbWVzIjpbIl9yZWFjdCIsInJlcXVpcmUiLCJfaG9va3MiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsInIiLCJlIiwidCIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwibGVuZ3RoIiwiX24iLCJGIiwicyIsIm4iLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsImEiLCJ1IiwiY2FsbCIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsImdldE5lc3RlZFZhbHVlIiwib2JqIiwicGF0aCIsImtleXMiLCJzcGxpdCIsImN1cnJlbnQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImtleSIsInVuZGVmaW5lZCIsIl90eXBlb2YyIiwiZXJyIiwic2V0TmVzdGVkVmFsdWUiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkyIiwicmVzdWx0IiwiaSIsIm5leHRLZXkiLCJpc05leHRBcnJheSIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJyZXNvbHZlVmFsdWUiLCJ2YWx1ZXMiLCJpbmNsdWRlcyIsInVzZUZvcm1Db3JlIiwiZXhwb3J0cyIsImNvbmZpZyIsImFyZ3VtZW50cyIsIl9jb25maWckaW5pdGlhbFZhbHVlcyIsImluaXRpYWxWYWx1ZXMiLCJvbkZpbmlzaCIsIm9uRmluaXNoRmFpbGVkIiwib25WYWx1ZXNDaGFuZ2UiLCJvblJlc2V0IiwiX2NvbmZpZyRzaXplIiwic2l6ZSIsIl9jb25maWckbGFiZWxBbGlnbiIsImxhYmVsQWxpZ24iLCJfY29uZmlnJGRpc2FibGVkIiwiZGlzYWJsZWQiLCJfY29uZmlnJGNvbG9uIiwiY29sb24iLCJfY29uZmlnJHJlcXVpcmVkTWFyayIsInJlcXVpcmVkTWFyayIsIl9jb25maWckdmFsaWRhdGVUcmlnZyIsInZhbGlkYXRlVHJpZ2dlciIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsInNldFZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3JzIiwic2V0RXJyb3JzIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b3VjaGVkIiwic2V0VG91Y2hlZCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiZmllbGRSdWxlcyIsInNldEZpZWxkUnVsZXMiLCJzZXRGaWVsZFZhbHVlIiwidXNlTWVtb2l6ZWRGbiIsInByZXYiLCJuZXdWYWx1ZXMiLCJuZXdFcnJvcnMiLCJzZXRGaWVsZEVycm9yIiwiZXJyb3IiLCJyZWdpc3RlckZpZWxkIiwicnVsZXMiLCJnZXRGaWVsZFJ1bGVzIiwidW5yZWdpc3RlckZpZWxkIiwibmV3UnVsZXMiLCJ2YWxpZGF0ZUZpZWxkIiwicHJvdmlkZWRWYWx1ZSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJydWxlIiwicmVxdWlyZWQiLCJtZXNzYWdlIiwiY29uY2F0IiwibWluIiwibWF4IiwicGF0dGVybiIsInZhbGlkYXRvciIsIkVycm9yIiwidmFsaWRhdGVGaWVsZHMiLCJmaWVsZHNSdWxlc1RvVmFsaWRhdGUiLCJpc1ZhbGlkIiwiZm9yRWFjaCIsImhhbmRsZVN1Ym1pdEludGVybmFsIiwiaGFzRXJyb3JzIiwiZmllbGROYW1lIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsInN1Y2Nlc3MiLCJoYW5kbGVTdWJtaXQiLCJ1c2VFdmVudENhbGxiYWNrIiwicHJldmVudERlZmF1bHQiLCJyZXNldEZpZWxkcyIsImhhbmRsZVJlc2V0IiwiZ2V0RmllbGRWYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwic2V0RmllbGRzVmFsdWUiLCJ1cGRhdGVkVmFsdWVzIiwiZm9ybUluc3RhbmNlIiwidXNlTWVtbyIsInN1Ym1pdCIsImNvcmVDb250ZXh0U2hhcGUiLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFBZ0UsU0FBQUUsMkJBQUFDLENBQUEsRUFBQUMsQ0FBQSxRQUFBQyxDQUFBLHlCQUFBQyxNQUFBLElBQUFILENBQUEsQ0FBQUcsTUFBQSxDQUFBQyxRQUFBLEtBQUFKLENBQUEscUJBQUFFLENBQUEsUUFBQUcsS0FBQSxDQUFBQyxPQUFBLENBQUFOLENBQUEsTUFBQUUsQ0FBQSxHQUFBSywyQkFBQSxDQUFBUCxDQUFBLE1BQUFDLENBQUEsSUFBQUQsQ0FBQSx1QkFBQUEsQ0FBQSxDQUFBUSxNQUFBLElBQUFOLENBQUEsS0FBQUYsQ0FBQSxHQUFBRSxDQUFBLE9BQUFPLEVBQUEsTUFBQUMsQ0FBQSxZQUFBQSxFQUFBLGVBQUFDLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLFdBQUFBLEVBQUEsV0FBQUgsRUFBQSxJQUFBVCxDQUFBLENBQUFRLE1BQUEsS0FBQUssSUFBQSxXQUFBQSxJQUFBLE1BQUFDLEtBQUEsRUFBQWQsQ0FBQSxDQUFBUyxFQUFBLFVBQUFSLENBQUEsV0FBQUEsRUFBQUQsQ0FBQSxVQUFBQSxDQUFBLEtBQUFlLENBQUEsRUFBQUwsQ0FBQSxnQkFBQU0sU0FBQSxpSkFBQUMsQ0FBQSxFQUFBQyxDQUFBLE9BQUFDLENBQUEsZ0JBQUFSLENBQUEsV0FBQUEsRUFBQSxJQUFBVCxDQUFBLEdBQUFBLENBQUEsQ0FBQWtCLElBQUEsQ0FBQXBCLENBQUEsTUFBQVksQ0FBQSxXQUFBQSxFQUFBLFFBQUFaLENBQUEsR0FBQUUsQ0FBQSxDQUFBbUIsSUFBQSxXQUFBSCxDQUFBLEdBQUFsQixDQUFBLENBQUFhLElBQUEsRUFBQWIsQ0FBQSxLQUFBQyxDQUFBLFdBQUFBLEVBQUFELENBQUEs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Z0IsRUFBaEJBO0VDNUVBLENENkVEO0FBQ0gsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FBQXRGLE9BQUEsY0FFYUQsV0FBVyIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ob29rcy91c2VGb3JtQ29yZS5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFdmVudENhbGxiYWNrLCB1c2VNZW1vaXplZEZuIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIE5lc3RlZCBwYXRoIGhlbHBlcnMgKGRvdC1ub3RhdGlvbiBzdXBwb3J0LCBlLmcuIFwiaXRlbXMuMC50aXRsZVwiKVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBnZXROZXN0ZWRWYWx1ZShvYmosIHBhdGgpIHtcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGxldCBjdXJyZW50ID0gb2JqO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IG51bGwgfHwgY3VycmVudCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBjdXJyZW50ICE9PSAnb2JqZWN0JylcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xufVxuZnVuY3Rpb24gc2V0TmVzdGVkVmFsdWUob2JqLCBwYXRoLCB2YWx1ZSkge1xuICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAxKVxuICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBvYmopLCB7IFtwYXRoXTogdmFsdWUgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7fSwgb2JqKTtcbiAgICBsZXQgY3VycmVudCA9IHJlc3VsdDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGtleXMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleXNbaV07XG4gICAgICAgIGNvbnN0IG5leHRLZXkgPSBrZXlzW2kgKyAxXTtcbiAgICAgICAgY29uc3QgaXNOZXh0QXJyYXkgPSAvXlxcZCskLy50ZXN0KG5leHRLZXkpO1xuICAgICAgICBpZiAoY3VycmVudFtrZXldID09PSB1bmRlZmluZWQgfHwgY3VycmVudFtrZXldID09PSBudWxsKSB7XG4gICAgICAgICAgICBjdXJyZW50W2tleV0gPSBpc05leHRBcnJheSA/IFtdIDoge307XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudFtrZXldKSkge1xuICAgICAgICAgICAgY3VycmVudFtrZXldID0gWy4uLmN1cnJlbnRba2V5XV07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjdXJyZW50W2tleV0gPSBPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50W2tleV0pO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgfVxuICAgIGN1cnJlbnRba2V5c1trZXlzLmxlbmd0aCAtIDFdXSA9IHZhbHVlO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKSB7XG4gICAgcmV0dXJuIG5hbWUuaW5jbHVkZXMoJy4nKSA/IGdldE5lc3RlZFZhbHVlKHZhbHVlcywgbmFtZSkgOiB2YWx1ZXNbbmFtZV07XG59XG5leHBvcnQgY29uc3QgdXNlRm9ybUNvcmUgPSAoY29uZmlnID0ge30pID0+IHtcbiAgICBjb25zdCB7IGluaXRpYWxWYWx1ZXMgPSB7fSwgb25GaW5pc2gsIG9uRmluaXNoRmFpbGVkLCBvblZhbHVlc0NoYW5nZSwgb25SZXNldCwgc2l6ZSA9ICdtaWRkbGUnLCBsYWJlbEFsaWduID0gJ2xlZnQnLCBkaXNhYmxlZCA9IGZhbHNlLCBjb2xvbiA9IHRydWUsIHJlcXVpcmVkTWFyayA9IHRydWUsIHZhbGlkYXRlVHJpZ2dlciA9ICdvbkNoYW5nZScsIH0gPSBjb25maWc7XG4gICAgY29uc3QgW3ZhbHVlcywgc2V0VmFsdWVzXSA9IHVzZVN0YXRlKGluaXRpYWxWYWx1ZXMpO1xuICAgIGNvbnN0IFtlcnJvcnMsIHNldEVycm9yc10gPSB1c2VTdGF0ZSh7fSk7XG4gICAgY29uc3QgW3RvdWNoZWQsIHNldFRvdWNoZWRdID0gdXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFtmaWVsZFJ1bGVzLCBzZXRGaWVsZFJ1bGVzXSA9IHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBzZXRGaWVsZFZhbHVlID0gdXNlTWVtb2l6ZWRGbigobmFtZSwgdmFsdWUpID0+IHtcbiAgICAgICAgc2V0VmFsdWVzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWx1ZXMgPSBuYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgICAgICA/IHNldE5lc3RlZFZhbHVlKHByZXYsIG5hbWUsIHZhbHVlKVxuICAgICAgICAgICAgICAgIDogT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBwcmV2KSwgeyBbbmFtZV06IHZhbHVlIH0pO1xuICAgICAgICAgICAgb25WYWx1ZXNDaGFuZ2UgPT09IG51bGwgfHwgb25WYWx1ZXNDaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uVmFsdWVzQ2hhbmdlKHsgW25hbWVdOiB2YWx1ZSB9LCBuZXdWYWx1ZXMpO1xuICAgICAgICAgICAgcmV0dXJuIG5ld1ZhbHVlcztcbiAgICAgICAgfSk7XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gJycgJiYgdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc2V0RXJyb3JzKChwcmV2KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFwcmV2W25hbWVdKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdFcnJvcnMgPSBPYmplY3QuYXNzaWduKHt9LCBwcmV2KTtcbiAgICAgICAgICAgICAgICBkZWxldGUgbmV3RXJyb3JzW25hbWVdO1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdFcnJvcnM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkRXJyb3IgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBlcnJvcikgPT4ge1xuICAgICAgICBzZXRFcnJvcnMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvciA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGlmICghcHJldltuYW1lXSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHByZXY7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RXJyb3JzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG5ld0Vycm9yc1tuYW1lXTtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3RXJyb3JzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIHsgW25hbWVdOiBlcnJvciB9KTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVnaXN0ZXJGaWVsZCA9IHVzZU1lbW9pemVkRm4oKG5hbWUsIHJ1bGVzKSA9PiB7XG4gICAgICAgIHNldEZpZWxkUnVsZXMoKHByZXYpID0+IChPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIHByZXYpLCB7IFtuYW1lXTogcnVsZXMgfSkpKTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRGaWVsZFJ1bGVzID0gdXNlTWVtb2l6ZWRGbigobmFtZSkgPT4ge1xuICAgICAgICByZXR1cm4gZmllbGRSdWxlc1tuYW1lXTtcbiAgICB9KTtcbiAgICBjb25zdCB1bnJlZ2lzdGVyRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHNldEZpZWxkUnVsZXMoKHByZXYpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld1J1bGVzID0gT2JqZWN0LmFzc2lnbih7fSwgcHJldik7XG4gICAgICAgICAgICBkZWxldGUgbmV3UnVsZXNbbmFtZV07XG4gICAgICAgICAgICByZXR1cm4gbmV3UnVsZXM7XG4gICAgICAgIH0pO1xuICAgIH0pO1xuICAgIGNvbnN0IHZhbGlkYXRlRmllbGQgPSB1c2VNZW1vaXplZEZuKChuYW1lLCBydWxlcyA9IFtdLCBwcm92aWRlZFZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gcHJvdmlkZWRWYWx1ZSAhPT0gdW5kZWZpbmVkID8gcHJvdmlkZWRWYWx1ZSA6IHJlc29sdmVWYWx1ZSh2YWx1ZXMsIG5hbWUpO1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgIGlmIChydWxlLnJlcXVpcmVkICYmXG4gICAgICAgICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGlzIHJlcXVpcmVkYDtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5taW4gJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPCBydWxlLm1pbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0gY2hhcmFjdGVyc2A7XG4gICAgICAgICAgICAgICAgc2V0RmllbGRFcnJvcihuYW1lLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJ1bGUubWF4ICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUubGVuZ3RoID4gcnVsZS5tYXgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlcnJvciA9IHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG5vIG1vcmUgdGhhbiAke3J1bGUubWF4fSBjaGFyYWN0ZXJzYDtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS5wYXR0ZXJuICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIXJ1bGUucGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IGZvcm1hdCBpcyBpbnZhbGlkYDtcbiAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIGVycm9yKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocnVsZS52YWxpZGF0b3IgJiYgdHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gcnVsZS52YWxpZGF0b3IodmFsdWUsIHZhbHVlcyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgdHlwZW9mIHJlc3VsdCA9PT0gJ3N0cmluZycgPyByZXN1bHQgOiAnVmFsaWRhdGlvbiBmYWlsZWQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgICAgICAgICBzZXRGaWVsZEVycm9yKG5hbWUsIG1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvcnNbbmFtZV0pIHtcbiAgICAgICAgICAgIHNldEZpZWxkRXJyb3IobmFtZSwgbnVsbCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgdmFsaWRhdGVGaWVsZHMgPSB1c2VNZW1vaXplZEZuKChmaWVsZHNSdWxlc1RvVmFsaWRhdGUgPSBmaWVsZFJ1bGVzKSA9PiB7XG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgT2JqZWN0LmtleXMoZmllbGRzUnVsZXNUb1ZhbGlkYXRlKS5mb3JFYWNoKChuYW1lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBydWxlcyA9IGZpZWxkc1J1bGVzVG9WYWxpZGF0ZVtuYW1lXTtcbiAgICAgICAgICAgIGlmICghdmFsaWRhdGVGaWVsZChuYW1lLCBydWxlcykpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVTdWJtaXRJbnRlcm5hbCA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICBsZXQgaGFzRXJyb3JzID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0Vycm9ycyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyhmaWVsZFJ1bGVzKS5mb3JFYWNoKChmaWVsZE5hbWUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJ1bGVzID0gZmllbGRSdWxlc1tmaWVsZE5hbWVdO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSByZXNvbHZlVmFsdWUodmFsdWVzLCBmaWVsZE5hbWUpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUucmVxdWlyZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9IHJ1bGUubWVzc2FnZSB8fCBgJHtmaWVsZE5hbWV9IGlzIHJlcXVpcmVkYDtcbiAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChydWxlLm1pbiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmIHZhbHVlLmxlbmd0aCA8IHJ1bGUubWluKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUubWVzc2FnZSB8fCBgJHtmaWVsZE5hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0gY2hhcmFjdGVyc2A7XG4gICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS5tYXggJiYgdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPiBydWxlLm1heCkge1xuICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBydWxlLm1lc3NhZ2UgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtmaWVsZE5hbWV9IG11c3QgYmUgbm8gbW9yZSB0aGFuICR7cnVsZS5tYXh9IGNoYXJhY3RlcnNgO1xuICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUucGF0dGVybiAmJlxuICAgICAgICAgICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICAgICAgICAgICFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3RXJyb3JzW2ZpZWxkTmFtZV0gPSBydWxlLm1lc3NhZ2UgfHwgYCR7ZmllbGROYW1lfSBmb3JtYXQgaXMgaW52YWxpZGA7XG4gICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAocnVsZS52YWxpZGF0b3IgJiYgdHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBydWxlLnZhbGlkYXRvcih2YWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFcnJvcnNbZmllbGROYW1lXSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNFcnJvcnMgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0Vycm9yc1tmaWVsZE5hbWVdID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0RXJyb3JzKG5ld0Vycm9ycyk7XG4gICAgICAgIGlmICghaGFzRXJyb3JzKSB7XG4gICAgICAgICAgICBvbkZpbmlzaCA9PT0gbnVsbCB8fCBvbkZpbmlzaCA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25GaW5pc2godmFsdWVzKTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIHZhbHVlcyB9O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgb25GaW5pc2hGYWlsZWQgPT09IG51bGwgfHwgb25GaW5pc2hGYWlsZWQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRmluaXNoRmFpbGVkKHsgdmFsdWVzLCBlcnJvcnM6IG5ld0Vycm9ycyB9KTtcbiAgICAgICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IGZhbHNlLCBlcnJvcnM6IG5ld0Vycm9ycyB9O1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlU3VibWl0ID0gdXNlRXZlbnRDYWxsYmFjaygoZSkgPT4ge1xuICAgICAgICBlID09PSBudWxsIHx8IGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgcmV0dXJuIGhhbmRsZVN1Ym1pdEludGVybmFsKCk7XG4gICAgfSk7XG4gICAgY29uc3QgcmVzZXRGaWVsZHMgPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgc2V0VmFsdWVzKGluaXRpYWxWYWx1ZXMpO1xuICAgICAgICBzZXRFcnJvcnMoe30pO1xuICAgICAgICBzZXRUb3VjaGVkKHt9KTtcbiAgICAgICAgb25SZXNldCA9PT0gbnVsbCB8fCBvblJlc2V0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvblJlc2V0KCk7XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlUmVzZXQgPSB1c2VFdmVudENhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIGUgPT09IG51bGwgfHwgZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXNldEZpZWxkcygpO1xuICAgIH0pO1xuICAgIGNvbnN0IGdldEZpZWxkVmFsdWUgPSB1c2VNZW1vaXplZEZuKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiByZXNvbHZlVmFsdWUodmFsdWVzLCBuYW1lKTtcbiAgICB9KTtcbiAgICBjb25zdCBnZXRGaWVsZHNWYWx1ZSA9IHVzZU1lbW9pemVkRm4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdmFsdWVzO1xuICAgIH0pO1xuICAgIGNvbnN0IHNldEZpZWxkc1ZhbHVlID0gdXNlTWVtb2l6ZWRGbigobmV3VmFsdWVzKSA9PiB7XG4gICAgICAgIHNldFZhbHVlcygocHJldikgPT4ge1xuICAgICAgICAgICAgY29uc3QgdXBkYXRlZFZhbHVlcyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgcHJldiksIG5ld1ZhbHVlcyk7XG4gICAgICAgICAgICBvblZhbHVlc0NoYW5nZSA9PT0gbnVsbCB8fCBvblZhbHVlc0NoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25WYWx1ZXNDaGFuZ2UobmV3VmFsdWVzLCB1cGRhdGVkVmFsdWVzKTtcbiAgICAgICAgICAgIHJldHVybiB1cGRhdGVkVmFsdWVzO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zdCBmb3JtSW5zdGFuY2UgPSB1c2VNZW1vKCgpID0+ICh7XG4gICAgICAgIHN1Ym1pdDogaGFuZGxlU3VibWl0SW50ZXJuYWwsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBnZXRGaWVsZFZhbHVlLFxuICAgICAgICBnZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgIH0pLCBbXG4gICAgICAgIGhhbmRsZVN1Ym1pdEludGVybmFsLFxuICAgICAgICByZXNldEZpZWxkcyxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHNldEZpZWxkc1ZhbHVlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkcyxcbiAgICBdKTtcbiAgICBjb25zdCBjb3JlQ29udGV4dFNoYXBlID0gdXNlTWVtbygoKSA9PiAoe1xuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGVycm9ycyxcbiAgICAgICAgdG91Y2hlZCxcbiAgICAgICAgZm9ybUluc3RhbmNlLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yLFxuICAgICAgICB2YWxpZGF0ZUZpZWxkLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIGRpc2FibGVkLFxuICAgICAgICBjb2xvbixcbiAgICAgICAgcmVxdWlyZWRNYXJrLFxuICAgICAgICB2YWxpZGF0ZVRyaWdnZXIsXG4gICAgfSksIFtcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICBlcnJvcnMsXG4gICAgICAgIHRvdWNoZWQsXG4gICAgICAgIGZvcm1JbnN0YW5jZSxcbiAgICAgICAgc2V0RmllbGRWYWx1ZSxcbiAgICAgICAgc2V0RmllbGRFcnJvcixcbiAgICAgICAgdmFsaWRhdGVGaWVsZCxcbiAgICAgICAgcmVnaXN0ZXJGaWVsZCxcbiAgICAgICAgdW5yZWdpc3RlckZpZWxkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICBkaXNhYmxlZCxcbiAgICAgICAgY29sb24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgdmFsaWRhdGVUcmlnZ2VyLFxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZXJyb3JzLFxuICAgICAgICB0b3VjaGVkLFxuICAgICAgICBmaWVsZFJ1bGVzLFxuICAgICAgICBnZXRGaWVsZFJ1bGVzLFxuICAgICAgICBzZXRGaWVsZFZhbHVlLFxuICAgICAgICBzZXRGaWVsZEVycm9yLFxuICAgICAgICBzZXRGaWVsZHNWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRWYWx1ZSxcbiAgICAgICAgZ2V0RmllbGRzVmFsdWUsXG4gICAgICAgIHZhbGlkYXRlRmllbGQsXG4gICAgICAgIHZhbGlkYXRlRmllbGRzLFxuICAgICAgICByZWdpc3RlckZpZWxkLFxuICAgICAgICB1bnJlZ2lzdGVyRmllbGQsXG4gICAgICAgIGhhbmRsZVN1Ym1pdCxcbiAgICAgICAgaGFuZGxlUmVzZXQsXG4gICAgICAgIHJlc2V0RmllbGRzLFxuICAgICAgICBmb3JtSW5zdGFuY2UsXG4gICAgICAgIGNvcmVDb250ZXh0U2hhcGUsXG4gICAgfTtcbn07XG5leHBvcnQgZGVmYXVsdCB1c2VGb3JtQ29yZTsiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
@@ -104,6 +104,32 @@ export interface FormCoreContextShape {
104
104
  requiredMark: boolean;
105
105
  validateTrigger: ValidateTrigger;
106
106
  }
107
+ /** Config for useForm — accepts all UseFormCoreConfig fields */
108
+ export type UseFormConfig = UseFormCoreConfig;
109
+ /** Internal state exposed by useForm for ProForm integration */
110
+ export interface UseFormInternals {
111
+ values: Record<string, unknown>;
112
+ errors: Record<string, string>;
113
+ touched: Record<string, boolean>;
114
+ validating: Record<string, boolean>;
115
+ fieldRules: Record<string, Rule[]>;
116
+ setFieldValue: (name: string, value: unknown) => void;
117
+ setFieldError: (name: string, error: string | null) => void;
118
+ validateField: (name: string, rules: Rule[], providedValue?: unknown) => boolean;
119
+ validateFieldAsync: (name: string, value: unknown, rules: Rule[]) => Promise<{
120
+ isValid: boolean;
121
+ error: string | null;
122
+ }>;
123
+ registerField: (name: string, rules: Rule[]) => void;
124
+ unregisterField: (name: string) => void;
125
+ handleSubmit: (e?: React.FormEvent) => void;
126
+ handleReset: (e?: React.FormEvent) => void;
127
+ }
128
+ /** Return type for useForm */
129
+ export interface UseFormReturn {
130
+ formInstance: FormInstance;
131
+ internals: UseFormInternals;
132
+ }
107
133
  export interface UseFormCoreReturn {
108
134
  values: Record<string, unknown>;
109
135
  errors: Record<string, string>;
@@ -9,6 +9,7 @@ export interface UseFormItemOptions {
9
9
  export interface UseFormItemReturn {
10
10
  fieldValue: unknown;
11
11
  fieldError: string | undefined;
12
+ fieldValidating: boolean;
12
13
  validateStatus: ValidateStatus | undefined;
13
14
  isRequired: boolean;
14
15
  size: FormSize;
@@ -6,16 +6,44 @@ Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
8
  exports.useFormItem = useFormItem;
9
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
10
  var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
10
11
  var _react = _interopRequireWildcard(require("react"));
11
12
  var _hooks = require("@1money/hooks");
12
- var _context = require("../context");
13
+ var _context2 = require("../context");
13
14
  var _constants = require("./constants");
14
15
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
15
16
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof3(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
16
17
  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; } } }; }
17
18
  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; } }
18
19
  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; }
20
+ var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
21
+ function adopt(value) {
22
+ return value instanceof P ? value : new P(function (resolve) {
23
+ resolve(value);
24
+ });
25
+ }
26
+ return new (P || (P = Promise))(function (resolve, reject) {
27
+ function fulfilled(value) {
28
+ try {
29
+ step(generator.next(value));
30
+ } catch (e) {
31
+ reject(e);
32
+ }
33
+ }
34
+ function rejected(value) {
35
+ try {
36
+ step(generator["throw"](value));
37
+ } catch (e) {
38
+ reject(e);
39
+ }
40
+ }
41
+ function step(result) {
42
+ result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
43
+ }
44
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
45
+ });
46
+ };
19
47
  function getNestedValue(obj, path) {
20
48
  var keys = path.split('.');
21
49
  var current = obj;
@@ -35,16 +63,19 @@ function getNestedValue(obj, path) {
35
63
  return current;
36
64
  }
37
65
  function useFormItem(options) {
66
+ var _this = this;
38
67
  var name = options.name,
39
68
  _options$rules = options.rules,
40
69
  rules = _options$rules === void 0 ? [] : _options$rules,
41
70
  required = options.required,
42
71
  validateStatus = options.validateStatus;
43
- var ctx = (0, _context.useProFormContext)();
72
+ var ctx = (0, _context2.useProFormContext)();
44
73
  var values = ctx.values,
45
74
  errors = ctx.errors,
75
+ validating = ctx.validating,
46
76
  setFieldValue = ctx.setFieldValue,
47
77
  validateField = ctx.validateField,
78
+ validateFieldAsync = ctx.validateFieldAsync,
48
79
  registerField = ctx.registerField,
49
80
  unregisterField = ctx.unregisterField,
50
81
  size = ctx.size,
@@ -56,11 +87,30 @@ function useFormItem(options) {
56
87
  }));
57
88
  var fieldValue = name ? name.includes('.') ? getNestedValue(values, name) : values[name] : undefined;
58
89
  var fieldError = name ? name.includes('.') ? getNestedValue(errors, name) : errors[name] : undefined;
90
+ var fieldValidating = name ? validating[name] || false : false;
59
91
  var finalStatus = validateStatus || (fieldError ? 'error' : undefined);
60
92
  var runValidate = (0, _hooks.useEventCallback)(function (value) {
61
93
  if (name && rules.length > 0) return validateField(name, rules, value);
62
94
  return true;
63
95
  });
96
+ var runValidateAsync = (0, _hooks.useEventCallback)(function (value) {
97
+ return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
98
+ return _regenerator["default"].wrap(function _callee$(_context) {
99
+ while (1) switch (_context.prev = _context.next) {
100
+ case 0:
101
+ if (!(name && rules.length > 0)) {
102
+ _context.next = 3;
103
+ break;
104
+ }
105
+ _context.next = 3;
106
+ return validateFieldAsync(name, value, rules);
107
+ case 3:
108
+ case "end":
109
+ return _context.stop();
110
+ }
111
+ }, _callee);
112
+ }));
113
+ });
64
114
  var handleChange = (0, _hooks.useEventCallback)(function (value) {
65
115
  if (name) {
66
116
  setFieldValue(name, value);
@@ -68,7 +118,7 @@ function useFormItem(options) {
68
118
  }
69
119
  });
70
120
  var handleBlur = (0, _hooks.useEventCallback)(function () {
71
- if (validateTrigger === 'onBlur') runValidate(fieldValue);
121
+ if (validateTrigger === 'onBlur') runValidateAsync(fieldValue);
72
122
  });
73
123
  (0, _react.useEffect)(function () {
74
124
  if (name && registerField) registerField(name, rules);
@@ -83,14 +133,15 @@ function useFormItem(options) {
83
133
  var displayName = (_a = child.type) === null || _a === void 0 ? void 0 : _a.displayName;
84
134
  var isFormComponent = _constants.FORM_COMPONENT_NAMES.includes(displayName) || childProps.placeholder !== undefined || childProps.value !== undefined;
85
135
  if (!isFormComponent) return child;
136
+ var TEXT_LIKE_NAMES = ['Input', 'InputPassword', 'InputTextArea', 'InputSearch', 'InputOTP', 'InputTrade', 'InputAmount', 'InputMask', 'TextArea', 'InputNumber'];
86
137
  var safeValue = fieldValue;
87
138
  if (safeValue === null || safeValue === undefined) {
88
- if (['Input', 'TextArea', 'InputNumber'].includes(displayName || '') || childProps.placeholder !== undefined) {
139
+ if (TEXT_LIKE_NAMES.includes(displayName || '') || childProps.placeholder !== undefined) {
89
140
  safeValue = '';
90
141
  } else if (['Checkbox', 'Switch'].includes(displayName || '')) {
91
142
  safeValue = false;
92
143
  }
93
- } else if (['Input', 'TextArea'].includes(displayName || '') && typeof safeValue !== 'string' && typeof safeValue !== 'number') {
144
+ } else if (TEXT_LIKE_NAMES.includes(displayName || '') && typeof safeValue !== 'string' && typeof safeValue !== 'number') {
94
145
  safeValue = '';
95
146
  }
96
147
  var injectedProps = Object.assign({
@@ -120,6 +171,7 @@ function useFormItem(options) {
120
171
  return {
121
172
  fieldValue: fieldValue,
122
173
  fieldError: fieldError,
174
+ fieldValidating: fieldValidating,
123
175
  validateStatus: finalStatus,
124
176
  isRequired: isRequired,
125
177
  size: size,
@@ -128,4 +180,4 @@ function useFormItem(options) {
128
180
  injectField: injectField
129
181
  };
130
182
  }
131
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvdXNlRm9ybUl0ZW0udHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS91c2VGb3JtSXRlbS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaG9va3MiLCJfY29udGV4dCIsIl9jb25zdGFudHMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJlIiwiV2Vha01hcCIsInIiLCJ0IiwiX19lc01vZHVsZSIsIl90eXBlb2YzIiwiaGFzIiwiZ2V0IiwibiIsIl9fcHJvdG9fXyIsImEiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsInUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJpIiwic2V0IiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJTeW1ib2wiLCJpdGVyYXRvciIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsImxlbmd0aCIsIl9uIiwiRiIsInMiLCJkb25lIiwidmFsdWUiLCJmIiwiVHlwZUVycm9yIiwibyIsIm5leHQiLCJfYXJyYXlMaWtlVG9BcnJheSIsInRvU3RyaW5nIiwic2xpY2UiLCJjb25zdHJ1Y3RvciIsIm5hbWUiLCJmcm9tIiwidGVzdCIsImdldE5lc3RlZFZhbHVlIiwib2JqIiwicGF0aCIsImtleXMiLCJzcGxpdCIsImN1cnJlbnQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImtleSIsInVuZGVmaW5lZCIsIl90eXBlb2YyIiwiZXJyIiwidXNlRm9ybUl0ZW0iLCJvcHRpb25zIiwiX29wdGlvbnMkcnVsZXMiLCJydWxlcyIsInJlcXVpcmVkIiwidmFsaWRhdGVTdGF0dXMiLCJjdHgiLCJ1c2VQcm9Gb3JtQ29udGV4dCIsInZhbHVlcyIsImVycm9ycyIsInNldEZpZWxkVmFsdWUiLCJ2YWxpZGF0ZUZpZWxkIiwicmVnaXN0ZXJGaWVsZCIsInVucmVnaXN0ZXJGaWVsZCIsInNpemUiLCJsYWJlbEFsaWduIiwicmVxdWlyZWRNYXJrIiwidmFsaWRhdGVUcmlnZ2VyIiwiaXNSZXF1aXJlZCIsIkJvb2xlYW4iLCJzb21lIiwicnVsZSIsImZpZWxkVmFsdWUiLCJpbmNsdWRlcyIsImZpZWxkRXJyb3IiLCJmaW5hbFN0YXR1cyIsInJ1blZhbGlkYXRlIiwidXNlRXZlbnRDYWxsYmFjayIsImhhbmRsZUNoYW5nZSIsImhhbmRsZUJsdXIiLCJ1c2VFZmZlY3QiLCJpbmplY3RGaWVsZCIsImNoaWxkIiwiX2EiLCJSZWFjdCIsImlzVmFsaWRFbGVtZW50IiwiY2hpbGRQcm9wcyIsInByb3BzIiwiZGlzcGxheU5hbWUiLCJ0eXBlIiwiaXNGb3JtQ29tcG9uZW50IiwiRk9STV9DT01QT05FTlRfTkFNRVMiLCJwbGFjZWhvbGRlciIsInNhZmVWYWx1ZSIsImluamVjdGVkUHJvcHMiLCJhc3NpZ24iLCJvbkNoYW5nZSIsImFjdHVhbFZhbHVlIiwidGFyZ2V0IiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiYXBwbHkiLCJjb25jYXQiLCJvbkJsdXIiLCJzdGF0dXMiLCJjbG9uZUVsZW1lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsdUJBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLFFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFVBQUEsR0FBQUgsT0FBQTtBQUFtRCxTQUFBSSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQU4sd0JBQUFNLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxD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bkIsVUFBVSxDQUFDbUIsTUFBb0MsQ0FBQUYsS0FBQSxDQUEvQ2pCLFVBQVUsRUFBQWMsU0FBNkMsQ0FBQztRQUMzRDtNQUNGLENBQUM7TUFDRHBDLElBQUksRUFBRXNCLFVBQVUsQ0FBQ3RCLElBQUksSUFBSUE7SUFBSSxDQUFBLEVBQ3pCVyxXQUFXLEtBQUssT0FBTyxJQUFJO01BQUUrQixNQUFNLEVBQUU7SUFBTyxDQUFHLENBQ3BEO0lBRUQsb0JBQU90QixpQkFBSyxDQUFDdUIsWUFBWSxDQUFDekIsS0FBSyxFQUFFWSxhQUFhLENBQUM7RUFDakQsQ0FBQztFQUVELE9BQU87SUFDTHRCLFVBQVUsRUFBVkEsVUFBVTtJQUNWRSxVQUFVLEVBQVZBLFVBQVU7SUFDVm5CLGNBQWMsRUFBRW9CLFdBQVc7SUFDM0JQLFVBQVUsRUFBVkEsVUFBVTtJQUNWSixJQUFJLEVBQUpBLElBQUk7SUFDSkMsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZDLFlBQVksRUFBWkEsWUFBWTtJQUNaZSxXQUFXLEVBQVhBO0VDL0NBLENEZ0REO0FBQ0giLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvdXNlRm9ybUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VFdmVudENhbGxiYWNrIH0gZnJvbSAnQDFtb25leS9ob29rcyc7XG5pbXBvcnQgeyB1c2VQcm9Gb3JtQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgRk9STV9DT01QT05FTlRfTkFNRVMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5mdW5jdGlvbiBnZXROZXN0ZWRWYWx1ZShvYmosIHBhdGgpIHtcbiAgICBjb25zdCBrZXlzID0gcGF0aC5zcGxpdCgnLicpO1xuICAgIGxldCBjdXJyZW50ID0gb2JqO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnQgPT09IG51bGwgfHwgY3VycmVudCA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiBjdXJyZW50ICE9PSAnb2JqZWN0JylcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50W2tleV07XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHVzZUZvcm1JdGVtKG9wdGlvbnMpIHtcbiAgICBjb25zdCB7IG5hbWUsIHJ1bGVzID0gW10sIHJlcXVpcmVkLCB2YWxpZGF0ZVN0YXR1cyB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBjdHggPSB1c2VQcm9Gb3JtQ29udGV4dCgpO1xuICAgIGNvbnN0IHsgdmFsdWVzLCBlcnJvcnMsIHNldEZpZWxkVmFsdWUsIHZhbGlkYXRlRmllbGQsIHJlZ2lzdGVyRmllbGQsIHVucmVnaXN0ZXJGaWVsZCwgc2l6ZSwgbGFiZWxBbGlnbiwgcmVxdWlyZWRNYXJrLCB2YWxpZGF0ZVRyaWdnZXIsIH0gPSBjdHg7XG4gICAgY29uc3QgaXNSZXF1aXJlZCA9IEJvb2xlYW4ocmVxdWlyZWQgfHwgcnVsZXMuc29tZSgocnVsZSkgPT4gcnVsZS5yZXF1aXJlZCkpO1xuICAgIGNvbnN0IGZpZWxkVmFsdWUgPSBuYW1lXG4gICAgICAgID8gKG5hbWUuaW5jbHVkZXMoJy4nKSA/IGdldE5lc3RlZFZhbHVlKHZhbHVlcywgbmFtZSkgOiB2YWx1ZXNbbmFtZV0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZpZWxkRXJyb3IgPSBuYW1lXG4gICAgICAgID8gKG5hbWUuaW5jbHVkZXMoJy4nKVxuICAgICAgICAgICAgPyBnZXROZXN0ZWRWYWx1ZShlcnJvcnMsIG5hbWUpXG4gICAgICAgICAgICA6IGVycm9yc1tuYW1lXSlcbiAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgZmluYWxTdGF0dXMgPSB2YWxpZGF0ZVN0YXR1cyB8fCAoZmllbGRFcnJvciA/ICdlcnJvcicgOiB1bmRlZmluZWQpO1xuICAgIGNvbnN0IHJ1blZhbGlkYXRlID0gdXNlRXZlbnRDYWxsYmFjaygodmFsdWUpID0+IHtcbiAgICAgICAgaWYgKG5hbWUgJiYgcnVsZXMubGVuZ3RoID4gMClcbiAgICAgICAgICAgIHJldHVybiB2YWxpZGF0ZUZpZWxkKG5hbWUsIHJ1bGVzLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZVRyaWdnZXIgPT09ICdvbkNoYW5nZScpXG4gICAgICAgICAgICAgICAgcnVuVmFsaWRhdGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAodmFsaWRhdGVUcmlnZ2VyID09PSAnb25CbHVyJylcbiAgICAgICAgICAgIHJ1blZhbGlkYXRlKGZpZWxkVmFsdWUpO1xuICAgIH0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChuYW1lICYmIHJlZ2lzdGVyRmllbGQpXG4gICAgICAgICAgICByZWdpc3RlckZpZWxkKG5hbWUsIHJ1bGVzKTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmIChuYW1lICYmIHVucmVnaXN0ZXJGaWVsZClcbiAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyRmllbGQobmFtZSk7XG4gICAgICAgIH07XG4gICAgfSwgW25hbWVdKTtcbiAgICBjb25zdCBpbmplY3RGaWVsZCA9IChjaGlsZCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmICghbmFtZSB8fCAhUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGQpKVxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICBjb25zdCBjaGlsZFByb3BzID0gY2hpbGQucHJvcHM7XG4gICAgICAgIGNvbnN0IGRpc3BsYXlOYW1lID0gKF9hID0gY2hpbGQudHlwZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmRpc3BsYXlOYW1lO1xuICAgICAgICBjb25zdCBpc0Zvcm1Db21wb25lbnQgPSBGT1JNX0NPTVBPTkVOVF9OQU1FUy5pbmNsdWRlcyhkaXNwbGF5TmFtZSkgfHxcbiAgICAgICAgICAgIGNoaWxkUHJvcHMucGxhY2Vob2xkZXIgIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgY2hpbGRQcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoIWlzRm9ybUNvbXBvbmVudClcbiAgICAgICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgICAgbGV0IHNhZmVWYWx1ZSA9IGZpZWxkVmFsdWU7XG4gICAgICAgIGlmIChzYWZlVmFsdWUgPT09IG51bGwgfHwgc2FmZVZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChbJ0lucHV0JywgJ1RleHRBcmVhJywgJ0lucHV0TnVtYmVyJ10uaW5jbHVkZXMoZGlzcGxheU5hbWUgfHwgJycpIHx8XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5wbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgc2FmZVZhbHVlID0gJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChbJ0NoZWNrYm94JywgJ1N3aXRjaCddLmluY2x1ZGVzKGRpc3BsYXlOYW1lIHx8ICcnKSkge1xuICAgICAgICAgICAgICAgIHNhZmVWYWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKFsnSW5wdXQnLCAnVGV4dEFyZWEnXS5pbmNsdWRlcyhkaXNwbGF5TmFtZSB8fCAnJykgJiZcbiAgICAgICAgICAgIHR5cGVvZiBzYWZlVmFsdWUgIT09ICdzdHJpbmcnICYmXG4gICAgICAgICAgICB0eXBlb2Ygc2FmZVZhbHVlICE9PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgc2FmZVZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5qZWN0ZWRQcm9wcyA9IE9iamVjdC5hc3NpZ24oeyB2YWx1ZTogc2FmZVZhbHVlLCBvbkNoYW5nZTogKGUsIC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBhY3R1YWxWYWx1ZSA9IGUgJiYgdHlwZW9mIGUgPT09ICdvYmplY3QnICYmICd0YXJnZXQnIGluIGVcbiAgICAgICAgICAgICAgICAgICAgPyBlLnRhcmdldC52YWx1ZVxuICAgICAgICAgICAgICAgICAgICA6IGU7XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKGFjdHVhbFZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNoaWxkUHJvcHMub25DaGFuZ2UgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5vbkNoYW5nZShlLCAuLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBvbkJsdXI6ICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlQmx1cigpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRQcm9wcy5vbkJsdXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRQcm9wcy5vbkJsdXIoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgc2l6ZTogY2hpbGRQcm9wcy5zaXplIHx8IHNpemUgfSwgKGZpbmFsU3RhdHVzID09PSAnZXJyb3InICYmIHsgc3RhdHVzOiAnZXJyb3InIH0pKTtcbiAgICAgICAgcmV0dXJuIFJlYWN0LmNsb25lRWxlbWVudChjaGlsZCwgaW5qZWN0ZWRQcm9wcyk7XG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICBmaWVsZFZhbHVlLFxuICAgICAgICBmaWVsZEVycm9yLFxuICAgICAgICB2YWxpZGF0ZVN0YXR1czogZmluYWxTdGF0dXMsXG4gICAgICAgIGlzUmVxdWlyZWQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIGxhYmVsQWxpZ24sXG4gICAgICAgIHJlcXVpcmVkTWFyayxcbiAgICAgICAgaW5qZWN0RmllbGQsXG4gICAgfTtcbn0iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
183
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvdXNlRm9ybUl0ZW0udHMiLCJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS91c2VGb3JtSXRlbS5qcyJdLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsInJlcXVpcmUiLCJfaG9va3MiLCJfY29udGV4dDIiLCJfY29uc3RhbnRzIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMyIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJBcnJheSIsImlzQXJyYXkiLCJfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkiLCJsZW5ndGgiLCJfbiIsIkYiLCJzIiwiZG9uZSIsInZhbHVlIiwiZiIsIlR5cGVFcnJvciIsIm8iLCJuZXh0IiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsInNsaWNlIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiZnJvbSIsInRlc3QiLCJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInJlc29sdmUiLCJQcm9taXNlIiwicmVqZWN0IiwiZnVsZmlsbGVkIiwic3RlcCIsInJlamVjdGVkIiwicmVzdWx0IiwidGhlbiIsImFwcGx5IiwiZ2V0TmVzdGVkVmFsdWUiLCJvYmoiLCJwYXRoIiwia2V5cyIsInNwbGl0IiwiY3VycmVudCIsIl9pdGVyYXRvciIsIl9zdGVwIiwia2V5IiwidW5kZWZpbmVkIiwiX3R5cGVvZjIiLCJlcnIiLCJ1c2VGb3JtSXRlbSIsIm9wdGlvbnMiLCJfdGhpcyIsIl9vcHRpb25zJHJ1bGVzIiwicnVsZXMiLCJyZXF1aXJlZCIsInZhbGlkYXRlU3RhdHVzIiwiY3R4IiwidXNlUHJvRm9ybUNvbnRleHQiLCJ2YWx1ZXMiLCJlcnJvcnMiLCJ2YWxpZGF0aW5nIiwic2V0RmllbGRWYWx1ZSIsInZhbGlkYXRlRmllbGQiLCJ2YWxpZGF0ZUZpZWxkQXN5bmMiLCJyZWdpc3RlckZpZWxkIiwidW5yZWdpc3RlckZpZWxkIiwic2l6ZSIsImxhYmVsQWxpZ24iLCJyZXF1aXJlZE1hcmsiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJpc1JlcXVpcmVkIiwiQm9vbGVhbiIsInNvbWUiLCJydWxlIiwiZmllbGRWYWx1ZSIsImluY2x1ZGVzIiwiZmllbGRFcnJvciIsImZpZWxkVmFsaWRhdGluZyIsImZpbmFsU3RhdHVzIiwicnVuVmFsaWRhdGUiLCJ1c2VFdmVudENhbGxiYWNrIiwicnVuVmFsaWRhdGVBc3luYyIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJwcmV2Iiwic3RvcCIsImhhbmRsZUNoYW5nZSIsImhhbmRsZUJsdXIiLCJ1c2VFZmZlY3QiLCJpbmplY3RGaWVsZCIsImNoaWxkIiwiX2EiLCJSZWFjdCIsImlzVmFsaWRFbGVtZW50IiwiY2hpbGRQcm9wcyIsInByb3BzIiwiZGlzcGxheU5hbWUiLCJ0eXBlIiwiaXNGb3JtQ29tcG9uZW50IiwiRk9STV9DT01QT05FTlRfTkFNRVMiLCJwbGFjZWhvbGRlciIsIlRFWFRfTElLRV9OQU1FUyIsInNhZmVWYWx1ZSIsImluamVjdGVkUHJvcHMiLCJhc3NpZ24iLCJvbkNoYW5nZSIsImFjdHVhbFZhbHVlIiwidGFyZ2V0IiwiX2xlbiIsImFyZ3VtZW50cyIsImFyZ3MiLCJfa2V5IiwiY29uY2F0Iiwib25CbHVyIiwic3RhdHVzIiwiY2xvbmVFbGVtZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFB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QTtZQUFmRCxJQUFlLENBQUFDLElBQUEsUUFBQUYsU0FBQSxDQUFBRSxJQUFBO1VBQUE7VUFPcENqQixVQUFVLENBQUNXLFFBQXNDLENBQUF6RSxLQUFBLENBQWpEOEQsVUFBVSxHQUF3Q3RILENBQUMsRUFBQXdJLE1BQUEsQ0FBS0YsSUFBSSxFQUFDO1FBQ2hFO01BQ0YsQ0FBQztNQUNERyxNQUFNLEVBQUUsU0FBUkEsTUFBTUEsQ0FBQSxFQUF5QjtRQUM3QjFCLFVBQVUsQ0FBQSxDQUFFO1FBQ1osSUFBSSxPQUFPTyxVQUFVLENBQUNtQixNQUFNLEtBQUssVUFBVSxFQUFFO1VBQzFDbkIsVUFBVSxDQUFDbUIsTUFBb0MsQ0FBQWpGLEtBQUEsQ0FBL0M4RCxVQUFVLEVBQUFlLFNBQTZDLENBQUM7UUFDM0Q7TUFDRixDQUFDO01BQ0QvQyxJQUFJLEVBQUVnQyxVQUFVLENBQUNoQyxJQUFJLElBQUlBO0lBQUksQ0FBQSxFQUN6QlksV0FBVyxLQUFLLE9BQU8sSUFBSTtNQUFFd0MsTUFBTSxFQUFFO0lBQU8sQ0FBRyxDQUNwRDtJQUVELG9CQUFPdEIsaUJBQUssQ0FBQ3VCLFlBQVksQ0FBQ3pCLEtBQUssRUFBRWEsYUFBYSxDQUFDO0VBQ2pELENBQUM7RUFFRCxPQUFPO0lBQ0xqQyxVQUFVLEVBQVZBLFVBQVU7SUFDVkUsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZDLGVBQWUsRUFBZkEsZUFBZTtJQUNmdEIsY0FBYyxFQUFFdUIsV0FBVztJQUMzQlIsVUFBVSxFQUFWQSxVQUFVO0lBQ1ZKLElBQUksRUFBSkEsSUFBSTtJQUNKQyxVQUFVLEVBQVZBLFVBQVU7SUFDVkMsWUFBWSxFQUFaQSxZQUFZO0lBQ1p5QixXQUFXLEVBQVhBO0VDM0NBLENENENEO0FBQ0giLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvdXNlRm9ybUl0ZW0uanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsInZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tICdAMW1vbmV5L2hvb2tzJztcbmltcG9ydCB7IHVzZVByb0Zvcm1Db250ZXh0IH0gZnJvbSAnLi4vY29udGV4dCc7XG5pbXBvcnQgeyBGT1JNX0NPTVBPTkVOVF9OQU1FUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmZ1bmN0aW9uIGdldE5lc3RlZFZhbHVlKG9iaiwgcGF0aCkge1xuICAgIGNvbnN0IGtleXMgPSBwYXRoLnNwbGl0KCcuJyk7XG4gICAgbGV0IGN1cnJlbnQgPSBvYmo7XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICBpZiAoY3VycmVudCA9PT0gbnVsbCB8fCBjdXJyZW50ID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIGN1cnJlbnQgIT09ICdvYmplY3QnKVxuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnRba2V5XTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG59XG5leHBvcnQgZnVuY3Rpb24gdXNlRm9ybUl0ZW0ob3B0aW9ucykge1xuICAgIGNvbnN0IHsgbmFtZSwgcnVsZXMgPSBbXSwgcmVxdWlyZWQsIHZhbGlkYXRlU3RhdHVzIH0gPSBvcHRpb25zO1xuICAgIGNvbnN0IGN0eCA9IHVzZVByb0Zvcm1Db250ZXh0KCk7XG4gICAgY29uc3QgeyB2YWx1ZXMsIGVycm9ycywgdmFsaWRhdGluZywgc2V0RmllbGRWYWx1ZSwgdmFsaWRhdGVGaWVsZCwgdmFsaWRhdGVGaWVsZEFzeW5jLCByZWdpc3RlckZpZWxkLCB1bnJlZ2lzdGVyRmllbGQsIHNpemUsIGxhYmVsQWxpZ24sIHJlcXVpcmVkTWFyaywgdmFsaWRhdGVUcmlnZ2VyLCB9ID0gY3R4O1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBCb29sZWFuKHJlcXVpcmVkIHx8IHJ1bGVzLnNvbWUoKHJ1bGUpID0+IHJ1bGUucmVxdWlyZWQpKTtcbiAgICBjb25zdCBmaWVsZFZhbHVlID0gbmFtZVxuICAgICAgICA/IChuYW1lLmluY2x1ZGVzKCcuJykgPyBnZXROZXN0ZWRWYWx1ZSh2YWx1ZXMsIG5hbWUpIDogdmFsdWVzW25hbWVdKVxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBmaWVsZEVycm9yID0gbmFtZVxuICAgICAgICA/IChuYW1lLmluY2x1ZGVzKCcuJylcbiAgICAgICAgICAgID8gZ2V0TmVzdGVkVmFsdWUoZXJyb3JzLCBuYW1lKVxuICAgICAgICAgICAgOiBlcnJvcnNbbmFtZV0pXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IGZpZWxkVmFsaWRhdGluZyA9IG5hbWUgPyAodmFsaWRhdGluZ1tuYW1lXSB8fCBmYWxzZSkgOiBmYWxzZTtcbiAgICBjb25zdCBmaW5hbFN0YXR1cyA9IHZhbGlkYXRlU3RhdHVzIHx8IChmaWVsZEVycm9yID8gJ2Vycm9yJyA6IHVuZGVmaW5lZCk7XG4gICAgY29uc3QgcnVuVmFsaWRhdGUgPSB1c2VFdmVudENhbGxiYWNrKCh2YWx1ZSkgPT4ge1xuICAgICAgICBpZiAobmFtZSAmJiBydWxlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgcmV0dXJuIHZhbGlkYXRlRmllbGQobmFtZSwgcnVsZXMsIHZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gICAgY29uc3QgcnVuVmFsaWRhdGVBc3luYyA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlKSA9PiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uKiAoKSB7XG4gICAgICAgIGlmIChuYW1lICYmIHJ1bGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHlpZWxkIHZhbGlkYXRlRmllbGRBc3luYyhuYW1lLCB2YWx1ZSwgcnVsZXMpO1xuICAgICAgICB9XG4gICAgfSkpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUV2ZW50Q2FsbGJhY2soKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZVRyaWdnZXIgPT09ICdvbkNoYW5nZScpXG4gICAgICAgICAgICAgICAgcnVuVmFsaWRhdGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZUV2ZW50Q2FsbGJhY2soKCkgPT4ge1xuICAgICAgICBpZiAodmFsaWRhdGVUcmlnZ2VyID09PSAnb25CbHVyJylcbiAgICAgICAgICAgIHJ1blZhbGlkYXRlQXN5bmMoZmllbGRWYWx1ZSk7XG4gICAgfSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKG5hbWUgJiYgcmVnaXN0ZXJGaWVsZClcbiAgICAgICAgICAgIHJlZ2lzdGVyRmllbGQobmFtZSwgcnVsZXMpO1xuICAgICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKG5hbWUgJiYgdW5yZWdpc3RlckZpZWxkKVxuICAgICAgICAgICAgICAgIHVucmVnaXN0ZXJGaWVsZChuYW1lKTtcbiAgICAgICAgfTtcbiAgICB9LCBbbmFtZV0pO1xuICAgIGNvbnN0IGluamVjdEZpZWxkID0gKGNoaWxkKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCFuYW1lIHx8ICFSZWFjdC5pc1ZhbGlkRWxlbWVudChjaGlsZCkpXG4gICAgICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICAgIGNvbnN0IGNoaWxkUHJvcHMgPSBjaGlsZC5wcm9wcztcbiAgICAgICAgY29uc3QgZGlzcGxheU5hbWUgPSAoX2EgPSBjaGlsZC50eXBlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZGlzcGxheU5hbWU7XG4gICAgICAgIGNvbnN0IGlzRm9ybUNvbXBvbmVudCA9IEZPUk1fQ09NUE9ORU5UX05BTUVTLmluY2x1ZGVzKGRpc3BsYXlOYW1lKSB8fFxuICAgICAgICAgICAgY2hpbGRQcm9wcy5wbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkIHx8XG4gICAgICAgICAgICBjaGlsZFByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGlmICghaXNGb3JtQ29tcG9uZW50KVxuICAgICAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgICBjb25zdCBURVhUX0xJS0VfTkFNRVMgPSBbXG4gICAgICAgICAgICAnSW5wdXQnLCAnSW5wdXRQYXNzd29yZCcsICdJbnB1dFRleHRBcmVhJywgJ0lucHV0U2VhcmNoJyxcbiAgICAgICAgICAgICdJbnB1dE9UUCcsICdJbnB1dFRyYWRlJywgJ0lucHV0QW1vdW50JywgJ0lucHV0TWFzaycsXG4gICAgICAgICAgICAnVGV4dEFyZWEnLCAnSW5wdXROdW1iZXInLFxuICAgICAgICBdO1xuICAgICAgICBsZXQgc2FmZVZhbHVlID0gZmllbGRWYWx1ZTtcbiAgICAgICAgaWYgKHNhZmVWYWx1ZSA9PT0gbnVsbCB8fCBzYWZlVmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgaWYgKFRFWFRfTElLRV9OQU1FUy5pbmNsdWRlcyhkaXNwbGF5TmFtZSB8fCAnJykgfHxcbiAgICAgICAgICAgICAgICBjaGlsZFByb3BzLnBsYWNlaG9sZGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICBzYWZlVmFsdWUgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKFsnQ2hlY2tib3gnLCAnU3dpdGNoJ10uaW5jbHVkZXMoZGlzcGxheU5hbWUgfHwgJycpKSB7XG4gICAgICAgICAgICAgICAgc2FmZVZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoVEVYVF9MSUtFX05BTUVTLmluY2x1ZGVzKGRpc3BsYXlOYW1lIHx8ICcnKSAmJlxuICAgICAgICAgICAgdHlwZW9mIHNhZmVWYWx1ZSAhPT0gJ3N0cmluZycgJiZcbiAgICAgICAgICAgIHR5cGVvZiBzYWZlVmFsdWUgIT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBzYWZlVmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmplY3RlZFByb3BzID0gT2JqZWN0LmFzc2lnbih7IHZhbHVlOiBzYWZlVmFsdWUsIG9uQ2hhbmdlOiAoZSwgLi4uYXJncykgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gZSAmJiB0eXBlb2YgZSA9PT0gJ29iamVjdCcgJiYgJ3RhcmdldCcgaW4gZVxuICAgICAgICAgICAgICAgICAgICA/IGUudGFyZ2V0LnZhbHVlXG4gICAgICAgICAgICAgICAgICAgIDogZTtcbiAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2UoYWN0dWFsVmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgY2hpbGRQcm9wcy5vbkNoYW5nZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZFByb3BzLm9uQ2hhbmdlKGUsIC4uLmFyZ3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIG9uQmx1cjogKC4uLmFyZ3MpID0+IHtcbiAgICAgICAgICAgICAgICBoYW5kbGVCbHVyKCk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjaGlsZFByb3BzLm9uQmx1ciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICBjaGlsZFByb3BzLm9uQmx1ciguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCBzaXplOiBjaGlsZFByb3BzLnNpemUgfHwgc2l6ZSB9LCAoZmluYWxTdGF0dXMgPT09ICdlcnJvcicgJiYgeyBzdGF0dXM6ICdlcnJvcicgfSkpO1xuICAgICAgICByZXR1cm4gUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkLCBpbmplY3RlZFByb3BzKTtcbiAgICB9O1xuICAgIHJldHVybiB7XG4gICAgICAgIGZpZWxkVmFsdWUsXG4gICAgICAgIGZpZWxkRXJyb3IsXG4gICAgICAgIGZpZWxkVmFsaWRhdGluZyxcbiAgICAgICAgdmFsaWRhdGVTdGF0dXM6IGZpbmFsU3RhdHVzLFxuICAgICAgICBpc1JlcXVpcmVkLFxuICAgICAgICBzaXplLFxuICAgICAgICBsYWJlbEFsaWduLFxuICAgICAgICByZXF1aXJlZE1hcmssXG4gICAgICAgIGluamVjdEZpZWxkLFxuICAgIH07XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
@@ -1,8 +1,9 @@
1
1
  import { ProFormItem } from './ProFormItem';
2
+ import type { FormInstance, UseFormConfig } from './core/interface';
2
3
  import './style';
3
4
  declare const ProForm: import("react").NamedExoticComponent<import("./interface").ProFormProps> & {
4
5
  Item: import("react").NamedExoticComponent<import("./interface").ProFormItemProps>;
5
- useForm: (initialValues?: Record<string, unknown>, options?: import("./core/interface").UseFormOptions) => [import("./core/interface").FormInstance];
6
+ useForm: (config?: UseFormConfig) => [FormInstance];
6
7
  useInstance: () => import("./interface").ProFormFormInstance;
7
8
  useContext: () => import("./interface").ProFormContextValue;
8
9
  Dependency: import("react").NamedExoticComponent<import("./interface").ProFormDependencyProps>;
@@ -34,4 +35,4 @@ export { QueryFilter } from './layouts/QueryFilter';
34
35
  export type { ProFormProps, ProFormItemProps, ProFormFieldProps, ProFormContextValue, ProFormFormInstance, ProFormFieldTransformFn, ProFormFieldConvertValueFn, ProFormValueEnumObj, ProFormRequestOption, ProFormValueType, FormListContextValue, ProFormColProps, ProFormFieldSetProps, ProFormGroupProps, SubmitterProps, ProFormDependencyProps, ProFormListProps, ProFormListAction, DrawerFormProps, DialogFormProps, QueryFilterProps, CreateProFormFieldConfig, } from './interface';
35
36
  export { CSS_PREFIX, WIDTH_SIZE_MAP, DEFAULT_COL_SPAN, DEFAULT_TEXT, PROFORM_MODES } from './constants';
36
37
  export type { ProFormMode } from './constants';
37
- export type { FormInstance, FormCoreInstance, Rule, ValidateTrigger, ValidateStatus, FormLayout, FormSize, LabelAlign, } from './core/interface';
38
+ export type { FormInstance, FormCoreInstance, Rule, ValidateTrigger, ValidateStatus, FormLayout, FormSize, LabelAlign, UseFormConfig, UseFormReturn, UseFormInternals, } from './core/interface';
@@ -169,11 +169,17 @@ var _DrawerForm = require("./layouts/DrawerForm");
169
169
  var _DialogForm = require("./layouts/DialogForm");
170
170
  var _QueryFilter = require("./layouts/QueryFilter");
171
171
  var _constants = require("./constants");
172
+ /** Public hook — returns [FormInstance] for backward compatibility */
173
+ var useForm = function useForm(config) {
174
+ var _useFormInternal = (0, _useForm.useForm)(config),
175
+ formInstance = _useFormInternal.formInstance;
176
+ return [formInstance];
177
+ };
172
178
  // Compose ProForm with static sub-components and hooks
173
179
  var ProForm = exports.ProForm = Object.assign(_ProForm.ProForm, {
174
180
  // Item + core hooks
175
181
  Item: _ProFormItem.ProFormItem,
176
- useForm: _useForm.useForm,
182
+ useForm: useForm,
177
183
  useInstance: _context.useFormInstance,
178
184
  useContext: _context.useProFormContext,
179
185
  // Composition
@@ -197,4 +203,4 @@ var ProForm = exports.ProForm = Object.assign(_ProForm.ProForm, {
197
203
  });
198
204
  var _default = exports["default"] = ProForm; // Named exports for fields
199
205
  // Composition + layouts
200
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9pbmRleC50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9pbmRleC5qcyJdLCJuYW1lcyI6WyJfUHJvRm9ybSIsInJlcXVpcmUiLCJfUHJvRm9ybUl0ZW0iLCJfUHJvRm9ybURlcGVuZGVuY3kiLCJfUHJvRm9ybUxpc3QiLCJfUHJvRm9ybUdyb3VwIiwiX1N1Ym1pdHRlciIsIl9maWVsZHMiLCJfdXNlRm9ybSIsIl9jb250ZXh0IiwiX0RyYXdlckZvcm0iLCJfRGlhbG9nRm9ybSIsIl9RdWVyeUZpbHRlciIsIl9jb25zdGFudHMiLCJQcm9Gb3JtIiwiZXhwb3J0cyIsIk9iamVjdCIsImFzc2lnbiIsIlByb0Zvcm1CYXNlIiwiSXRlbSIsIlByb0Zvcm1JdGVtIiwidXNlRm9ybSIsInVzZUluc3RhbmNlIiwidXNlRm9ybUluc3RhbmNlIiwidXNlQ29udGV4dCIsInVzZVByb0Zvcm1Db250ZXh0IiwiRGVwZW5kZW5jeSIsIlByb0Zvcm1EZXBlbmRlbmN5IiwiTGlzdCIsIlByb0Zvcm1MaXN0IiwiR3JvdXAiLCJQcm9Gb3JtR3JvdXAiLCJGaWVsZFNldCIsIlByb0Zvcm1GaWVsZFNldCIsIlN1Ym1pdHRlciIsIlRleHQiLCJQcm9Gb3JtVGV4dCIsIlBhc3N3b3JkIiwiUHJvRm9ybVBhc3N3b3JkIiwiVGV4dEFyZWEiLCJQcm9Gb3JtVGV4dEFyZWEiLCJDaGVja2JveCIsIlByb0Zvcm1DaGVja2JveCIsIkNoZWNrYm94R3JvdXAiLCJQcm9Gb3JtQ2hlY2tib3hHcm91cCIsIlN3aXRjaCIsIlByb0Zvcm1Td2l0Y2giLCJTZWxlY3QiLCJQcm9Gb3JtU2VsZWN0IiwiUmFkaW9Hcm91cCIsIlByb0Zvcm1SYWRpb0dyb3VwIiwiU2xpZGVyIiwiUHJvRm9ybVNsaWRlciIsIkRhdGVQaWNrZXIiLCJQcm9Gb3JtRGF0ZVBpY2tlciIsIlVwbG9hZCIsIlByb0Zvcm1VcGxvYWQiLCJfZGVmYXVsdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTtBQUNBLElBQUFDLFlBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGtCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxPQUFBLEdBQUFOLE9BQUE7QUFjQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQUEsT0FBQTtBQXFEQSxJQUFBUyxXQUFBLEdBQUFULE9BQUE7QUFDQSxJQUFBVSxXQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxZQUFBLEdBQUFYLE9BQUE7QUE0QkEsSUFBQVksVUFBQSxHQUFBWixPQUFBO0FBakZBO0FBQ0EsSUFBTWEsT0FBTyxHQUFBQyxPQUFBLENBQUFELE9BQUEsR0FBR0UsTUFBTSxDQUFDQyxNQUFNLENBQUNDLGdCQUFXLEVBQUU7RUFDekM7RUFDQUMsSUFBSSxFQUFFQyx3QkFBVztFQUNqQkMsT0FBTyxFQUFQQSxnQkFBTztFQUNQQyxXQUFXLEVBQUVDLHdCQUFlO0VBQzVCQyxVQUFVLEVBQUVDLDBCQUFpQjtFQUM3QjtFQUNBQyxVQUFVLEVBQUVDLG9DQUFpQjtFQUM3QkMsSUFBSSxFQUFFQyx3QkFBVztFQUNqQkMsS0FBSyxFQUFFQywwQkFBWTtFQUNuQkMsUUFBUSxFQUFFQyx1QkFBZTtFQUN6QkMsU0FBUyxFQUFUQSxvQkFBUztFQUNUO0VBQ0FDLElBQUksRUFBRUMsbUJBQVc7RUFDakJDLFFBQVEsRUFBRUMsdUJBQWU7RUFDekJDLFFBQVEsRUFBRUMsdUJBQWU7RUFDekJDLFFBQVEsRUFBRUMsdUJBQWU7RUFDekJDLGFBQWEsRUFBRUMsNEJBQW9CO0VBQ25DQyxNQUFNLEVBQUVDLHFCQUFhO0VBQ3JCQyxNQUFNLEVBQUVDLHFCQUFhO0VBQ3JCQyxVQUFVLEVBQUVDLHlCQUFpQjtFQUM3QkMsTUFBTSxFQUFFQyxxQkFBYTtFQUNyQkMsVUFBVSxFQUFFQyx5QkFBaUI7RUFDN0JDLE1BQU0sRUFBRUM7QUNiVixDRGNDLENBQUM7QUFBQyxJQUFBQyxRQUFBLEdBQUExQyxPQUFBLGNBR1lELE9BQU8sRUFFdEI7QUFpQkEiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsLCJpbXBvcnQgeyBQcm9Gb3JtIGFzIFByb0Zvcm1CYXNlIH0gZnJvbSAnLi9Qcm9Gb3JtJztcbmltcG9ydCB7IFByb0Zvcm1JdGVtIH0gZnJvbSAnLi9Qcm9Gb3JtSXRlbSc7XG5pbXBvcnQgeyBQcm9Gb3JtRGVwZW5kZW5jeSB9IGZyb20gJy4vUHJvRm9ybURlcGVuZGVuY3knO1xuaW1wb3J0IHsgUHJvRm9ybUxpc3QgfSBmcm9tICcuL1Byb0Zvcm1MaXN0JztcbmltcG9ydCB7IFByb0Zvcm1Hcm91cCB9IGZyb20gJy4vUHJvRm9ybUdyb3VwJztcbmltcG9ydCB7IFN1Ym1pdHRlciB9IGZyb20gJy4vU3VibWl0dGVyJztcbmltcG9ydCB7IFByb0Zvcm1UZXh0LCBQcm9Gb3JtUGFzc3dvcmQsIFByb0Zvcm1UZXh0QXJlYSwgUHJvRm9ybUNoZWNrYm94LCBQcm9Gb3JtQ2hlY2tib3hHcm91cCwgUHJvRm9ybVN3aXRjaCwgUHJvRm9ybVNlbGVjdCwgUHJvRm9ybVJhZGlvR3JvdXAsIFByb0Zvcm1TbGlkZXIsIFByb0Zvcm1EYXRlUGlja2VyLCBQcm9Gb3JtVXBsb2FkLCBQcm9Gb3JtRmllbGRTZXQsIH0gZnJvbSAnLi9maWVsZHMnO1xuaW1wb3J0IHsgdXNlRm9ybSB9IGZyb20gJy4vY29yZS9ob29rcy91c2VGb3JtJztcbmltcG9ydCB7IHVzZVByb0Zvcm1Db250ZXh0LCB1c2VGb3JtSW5zdGFuY2UgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0ICcuL3N0eWxlJztcbi8vIENvbXBvc2UgUHJvRm9ybSB3aXRoIHN0YXRpYyBzdWItY29tcG9uZW50cyBhbmQgaG9va3NcbmNvbnN0IFByb0Zvcm0gPSBPYmplY3QuYXNzaWduKFByb0Zvcm1CYXNlLCB7XG4gICAgLy8gSXRlbSArIGNvcmUgaG9va3NcbiAgICBJdGVtOiBQcm9Gb3JtSXRlbSxcbiAgICB1c2VGb3JtLFxuICAgIHVzZUluc3RhbmNlOiB1c2VGb3JtSW5zdGFuY2UsXG4gICAgdXNlQ29udGV4dDogdXNlUHJvRm9ybUNvbnRleHQsXG4gICAgLy8gQ29tcG9zaXRpb25cbiAgICBEZXBlbmRlbmN5OiBQcm9Gb3JtRGVwZW5kZW5jeSxcbiAgICBMaXN0OiBQcm9Gb3JtTGlzdCxcbiAgICBHcm91cDogUHJvRm9ybUdyb3VwLFxuICAgIEZpZWxkU2V0OiBQcm9Gb3JtRmllbGRTZXQsXG4gICAgU3VibWl0dGVyLFxuICAgIC8vIEZpZWxkc1xuICAgIFRleHQ6IFByb0Zvcm1UZXh0LFxuICAgIFBhc3N3b3JkOiBQcm9Gb3JtUGFzc3dvcmQsXG4gICAgVGV4dEFyZWE6IFByb0Zvcm1UZXh0QXJlYSxcbiAgICBDaGVja2JveDogUHJvRm9ybUNoZWNrYm94LFxuICAgIENoZWNrYm94R3JvdXA6IFByb0Zvcm1DaGVja2JveEdyb3VwLFxuICAgIFN3aXRjaDogUHJvRm9ybVN3aXRjaCxcbiAgICBTZWxlY3Q6IFByb0Zvcm1TZWxlY3QsXG4gICAgUmFkaW9Hcm91cDogUHJvRm9ybVJhZGlvR3JvdXAsXG4gICAgU2xpZGVyOiBQcm9Gb3JtU2xpZGVyLFxuICAgIERhdGVQaWNrZXI6IFByb0Zvcm1EYXRlUGlja2VyLFxuICAgIFVwbG9hZDogUHJvRm9ybVVwbG9hZCxcbn0pO1xuZXhwb3J0IHsgUHJvRm9ybSwgUHJvRm9ybUl0ZW0gfTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm07XG4vLyBOYW1lZCBleHBvcnRzIGZvciBmaWVsZHNcbmV4cG9ydCB7IGNyZWF0ZVByb0Zvcm1GaWVsZCwgUHJvRm9ybVRleHQsIFByb0Zvcm1QYXNzd29yZCwgUHJvRm9ybVRleHRBcmVhLCBQcm9Gb3JtQ2hlY2tib3gsIFByb0Zvcm1DaGVja2JveEdyb3VwLCBQcm9Gb3JtU3dpdGNoLCBQcm9Gb3JtU2VsZWN0LCBQcm9Gb3JtUmFkaW9Hcm91cCwgUHJvRm9ybVNsaWRlciwgUHJvRm9ybURhdGVQaWNrZXIsIFByb0Zvcm1VcGxvYWQsIFByb0Zvcm1GaWVsZFNldCwgfSBmcm9tICcuL2ZpZWxkcyc7XG4vLyBDb21wb3NpdGlvbiArIGxheW91dHNcbmV4cG9ydCB7IFByb0Zvcm1EZXBlbmRlbmN5IH0gZnJvbSAnLi9Qcm9Gb3JtRGVwZW5kZW5jeSc7XG5leHBvcnQgeyBQcm9Gb3JtTGlzdCB9IGZyb20gJy4vUHJvRm9ybUxpc3QnO1xuZXhwb3J0IHsgUHJvRm9ybUdyb3VwIH0gZnJvbSAnLi9Qcm9Gb3JtR3JvdXAnO1xuZXhwb3J0IHsgRHJhd2VyRm9ybSB9IGZyb20gJy4vbGF5b3V0cy9EcmF3ZXJGb3JtJztcbmV4cG9ydCB7IERpYWxvZ0Zvcm0gfSBmcm9tICcuL2xheW91dHMvRGlhbG9nRm9ybSc7XG5leHBvcnQgeyBRdWVyeUZpbHRlciB9IGZyb20gJy4vbGF5b3V0cy9RdWVyeUZpbHRlcic7XG5leHBvcnQgeyBDU1NfUFJFRklYLCBXSURUSF9TSVpFX01BUCwgREVGQVVMVF9DT0xfU1BBTiwgREVGQVVMVF9URVhULCBQUk9GT1JNX01PREVTIH0gZnJvbSAnLi9jb25zdGFudHMnOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
206
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvUHJvRm9ybS9pbmRleC50cyIsImNvbXBvbmVudHMvUHJvRm9ybS9pbmRleC5qcyJdLCJuYW1lcyI6WyJfUHJvRm9ybSIsInJlcXVpcmUiLCJfUHJvRm9ybUl0ZW0iLCJfUHJvRm9ybURlcGVuZGVuY3kiLCJfUHJvRm9ybUxpc3QiLCJfUHJvRm9ybUdyb3VwIiwiX1N1Ym1pdHRlciIsIl9maWVsZHMiLCJfdXNlRm9ybSIsIl9jb250ZXh0IiwiX0RyYXdlckZvcm0iLCJfRGlhbG9nRm9ybSIsIl9RdWVyeUZpbHRlciIsIl9jb25zdGFudHMiLCJ1c2VGb3JtIiwiY29uZmlnIiwiX3VzZUZvcm1JbnRlcm5hbCIsInVzZUZvcm1JbnRlcm5hbCIsImZvcm1JbnN0YW5jZSIsIlByb0Zvcm0iLCJleHBvcnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiUHJvRm9ybUJhc2UiLCJJdGVtIiwiUHJvRm9ybUl0ZW0iLCJ1c2VJbnN0YW5jZSIsInVzZUZvcm1JbnN0YW5jZSIsInVzZUNvbnRleHQiLCJ1c2VQcm9Gb3JtQ29udGV4dCIsIkRlcGVuZGVuY3kiLCJQcm9Gb3JtRGVwZW5kZW5jeSIsIkxpc3QiLCJQcm9Gb3JtTGlzdCIsIkdyb3VwIiwiUHJvRm9ybUdyb3VwIiwiRmllbGRTZXQiLCJQcm9Gb3JtRmllbGRTZXQiLCJTdWJtaXR0ZXIiLCJUZXh0IiwiUHJvRm9ybVRleHQiLCJQYXNzd29yZCIsIlByb0Zvcm1QYXNzd29yZCIsIlRleHRBcmVhIiwiUHJvRm9ybVRleHRBcmVhIiwiQ2hlY2tib3giLCJQcm9Gb3JtQ2hlY2tib3giLCJDaGVja2JveEdyb3VwIiwiUHJvRm9ybUNoZWNrYm94R3JvdXAiLCJTd2l0Y2giLCJQcm9Gb3JtU3dpdGNoIiwiU2VsZWN0IiwiUHJvRm9ybVNlbGVjdCIsIlJhZGlvR3JvdXAiLCJQcm9Gb3JtUmFkaW9Hcm91cCIsIlNsaWRlciIsIlByb0Zvcm1TbGlkZXIiLCJEYXRlUGlja2VyIiwiUHJvRm9ybURhdGVQaWNrZXIiLCJVcGxvYWQiLCJQcm9Gb3JtVXBsb2FkIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxZQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxrQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksYUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sT0FBQSxHQUFBTixPQUFBO0FBY0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBRUEsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQ0FBLE9BQUE7QUEyREEsSUFBQVMsV0FBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsV0FBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsWUFBQSxHQUFBWCxPQUFBO0FBNEJBLElBQUFZLFVBQUEsR0FBQVosT0FBQTtBQXZGQTtBQUNBLElBQU1hLE9BQU8sR0FBRyxTQUFWQSxPQUFPQSxDQUFJQyxNQUFzQixFQUFvQjtFQUN6RCxJQUFBQyxnQkFBQSxHQUF5QixJQUFBQyxnQkFBZSxFQUFDRixNQUFNLENBQUM7SUFBeENHLFlBQVksR0FBQUYsZ0JBQUEsQ0FBWkUsWUFBWTtFQUNwQixPQUFPLENBQUNBLFlBQVksQ0FBQztBQUN2QixDQUFDO0FBRUQ7QUFDQSxJQUFNQyxPQUFPLEdBQUFDLE9BQUEsQ0FBQUQsT0FBQSxHQUFHRSxNQUFNLENBQUNDLE1BQU0sQ0FBQ0MsZ0JBQVcsRUFBRTtFQUN6QztFQUNBQyxJQUFJLEVBQUVDLHdCQUFXO0VBQ2pCWCxPQUFPLEVBQVBBLE9BQU87RUFDUFksV0FBVyxFQUFFQyx3QkFBZTtFQUM1QkMsVUFBVSxFQUFFQywwQkFBaUI7RUFDN0I7RUFDQUMsVUFBVSxFQUFFQyxvQ0FBaUI7RUFDN0JDLElBQUksRUFBRUMsd0JBQVc7RUFDakJDLEtBQUssRUFBRUMsMEJBQVk7RUFDbkJDLFFBQVEsRUFBRUMsdUJBQWU7RUFDekJDLFNBQVMsRUFBVEEsb0JBQVM7RUFDVDtFQUNBQyxJQUFJLEVBQUVDLG1CQUFXO0VBQ2pCQyxRQUFRLEVBQUVDLHVCQUFlO0VBQ3pCQyxRQUFRLEVBQUVDLHVCQUFlO0VBQ3pCQyxRQUFRLEVBQUVDLHVCQUFlO0VBQ3pCQyxhQUFhLEVBQUVDLDRCQUFvQjtFQUNuQ0MsTUFBTSxFQUFFQyxxQkFBYTtFQUNyQkMsTUFBTSxFQUFFQyxxQkFBYTtFQUNyQkMsVUFBVSxFQUFFQyx5QkFBaUI7RUFDN0JDLE1BQU0sRUFBRUMscUJBQWE7RUFDckJDLFVBQVUsRUFBRUMseUJBQWlCO0VBQzdCQyxNQUFNLEVBQUVDO0FDZlYsQ0RnQkMsQ0FBQztBQUFDLElBQUFDLFFBQUEsR0FBQXpDLE9BQUEsY0FHWUQsT0FBTyxFQUV0QjtBQWlCQSIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IFByb0Zvcm0gYXMgUHJvRm9ybUJhc2UgfSBmcm9tICcuL1Byb0Zvcm0nO1xuaW1wb3J0IHsgUHJvRm9ybUl0ZW0gfSBmcm9tICcuL1Byb0Zvcm1JdGVtJztcbmltcG9ydCB7IFByb0Zvcm1EZXBlbmRlbmN5IH0gZnJvbSAnLi9Qcm9Gb3JtRGVwZW5kZW5jeSc7XG5pbXBvcnQgeyBQcm9Gb3JtTGlzdCB9IGZyb20gJy4vUHJvRm9ybUxpc3QnO1xuaW1wb3J0IHsgUHJvRm9ybUdyb3VwIH0gZnJvbSAnLi9Qcm9Gb3JtR3JvdXAnO1xuaW1wb3J0IHsgU3VibWl0dGVyIH0gZnJvbSAnLi9TdWJtaXR0ZXInO1xuaW1wb3J0IHsgUHJvRm9ybVRleHQsIFByb0Zvcm1QYXNzd29yZCwgUHJvRm9ybVRleHRBcmVhLCBQcm9Gb3JtQ2hlY2tib3gsIFByb0Zvcm1DaGVja2JveEdyb3VwLCBQcm9Gb3JtU3dpdGNoLCBQcm9Gb3JtU2VsZWN0LCBQcm9Gb3JtUmFkaW9Hcm91cCwgUHJvRm9ybVNsaWRlciwgUHJvRm9ybURhdGVQaWNrZXIsIFByb0Zvcm1VcGxvYWQsIFByb0Zvcm1GaWVsZFNldCwgfSBmcm9tICcuL2ZpZWxkcyc7XG5pbXBvcnQgeyB1c2VGb3JtIGFzIHVzZUZvcm1JbnRlcm5hbCB9IGZyb20gJy4vY29yZS9ob29rcy91c2VGb3JtJztcbmltcG9ydCB7IHVzZVByb0Zvcm1Db250ZXh0LCB1c2VGb3JtSW5zdGFuY2UgfSBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0ICcuL3N0eWxlJztcbi8qKiBQdWJsaWMgaG9vayDigJQgcmV0dXJucyBbRm9ybUluc3RhbmNlXSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuY29uc3QgdXNlRm9ybSA9IChjb25maWcpID0+IHtcbiAgICBjb25zdCB7IGZvcm1JbnN0YW5jZSB9ID0gdXNlRm9ybUludGVybmFsKGNvbmZpZyk7XG4gICAgcmV0dXJuIFtmb3JtSW5zdGFuY2VdO1xufTtcbi8vIENvbXBvc2UgUHJvRm9ybSB3aXRoIHN0YXRpYyBzdWItY29tcG9uZW50cyBhbmQgaG9va3NcbmNvbnN0IFByb0Zvcm0gPSBPYmplY3QuYXNzaWduKFByb0Zvcm1CYXNlLCB7XG4gICAgLy8gSXRlbSArIGNvcmUgaG9va3NcbiAgICBJdGVtOiBQcm9Gb3JtSXRlbSxcbiAgICB1c2VGb3JtLFxuICAgIHVzZUluc3RhbmNlOiB1c2VGb3JtSW5zdGFuY2UsXG4gICAgdXNlQ29udGV4dDogdXNlUHJvRm9ybUNvbnRleHQsXG4gICAgLy8gQ29tcG9zaXRpb25cbiAgICBEZXBlbmRlbmN5OiBQcm9Gb3JtRGVwZW5kZW5jeSxcbiAgICBMaXN0OiBQcm9Gb3JtTGlzdCxcbiAgICBHcm91cDogUHJvRm9ybUdyb3VwLFxuICAgIEZpZWxkU2V0OiBQcm9Gb3JtRmllbGRTZXQsXG4gICAgU3VibWl0dGVyLFxuICAgIC8vIEZpZWxkc1xuICAgIFRleHQ6IFByb0Zvcm1UZXh0LFxuICAgIFBhc3N3b3JkOiBQcm9Gb3JtUGFzc3dvcmQsXG4gICAgVGV4dEFyZWE6IFByb0Zvcm1UZXh0QXJlYSxcbiAgICBDaGVja2JveDogUHJvRm9ybUNoZWNrYm94LFxuICAgIENoZWNrYm94R3JvdXA6IFByb0Zvcm1DaGVja2JveEdyb3VwLFxuICAgIFN3aXRjaDogUHJvRm9ybVN3aXRjaCxcbiAgICBTZWxlY3Q6IFByb0Zvcm1TZWxlY3QsXG4gICAgUmFkaW9Hcm91cDogUHJvRm9ybVJhZGlvR3JvdXAsXG4gICAgU2xpZGVyOiBQcm9Gb3JtU2xpZGVyLFxuICAgIERhdGVQaWNrZXI6IFByb0Zvcm1EYXRlUGlja2VyLFxuICAgIFVwbG9hZDogUHJvRm9ybVVwbG9hZCxcbn0pO1xuZXhwb3J0IHsgUHJvRm9ybSwgUHJvRm9ybUl0ZW0gfTtcbmV4cG9ydCBkZWZhdWx0IFByb0Zvcm07XG4vLyBOYW1lZCBleHBvcnRzIGZvciBmaWVsZHNcbmV4cG9ydCB7IGNyZWF0ZVByb0Zvcm1GaWVsZCwgUHJvRm9ybVRleHQsIFByb0Zvcm1QYXNzd29yZCwgUHJvRm9ybVRleHRBcmVhLCBQcm9Gb3JtQ2hlY2tib3gsIFByb0Zvcm1DaGVja2JveEdyb3VwLCBQcm9Gb3JtU3dpdGNoLCBQcm9Gb3JtU2VsZWN0LCBQcm9Gb3JtUmFkaW9Hcm91cCwgUHJvRm9ybVNsaWRlciwgUHJvRm9ybURhdGVQaWNrZXIsIFByb0Zvcm1VcGxvYWQsIFByb0Zvcm1GaWVsZFNldCwgfSBmcm9tICcuL2ZpZWxkcyc7XG4vLyBDb21wb3NpdGlvbiArIGxheW91dHNcbmV4cG9ydCB7IFByb0Zvcm1EZXBlbmRlbmN5IH0gZnJvbSAnLi9Qcm9Gb3JtRGVwZW5kZW5jeSc7XG5leHBvcnQgeyBQcm9Gb3JtTGlzdCB9IGZyb20gJy4vUHJvRm9ybUxpc3QnO1xuZXhwb3J0IHsgUHJvRm9ybUdyb3VwIH0gZnJvbSAnLi9Qcm9Gb3JtR3JvdXAnO1xuZXhwb3J0IHsgRHJhd2VyRm9ybSB9IGZyb20gJy4vbGF5b3V0cy9EcmF3ZXJGb3JtJztcbmV4cG9ydCB7IERpYWxvZ0Zvcm0gfSBmcm9tICcuL2xheW91dHMvRGlhbG9nRm9ybSc7XG5leHBvcnQgeyBRdWVyeUZpbHRlciB9IGZyb20gJy4vbGF5b3V0cy9RdWVyeUZpbHRlcic7XG5leHBvcnQgeyBDU1NfUFJFRklYLCBXSURUSF9TSVpFX01BUCwgREVGQVVMVF9DT0xfU1BBTiwgREVGQVVMVF9URVhULCBQUk9GT1JNX01PREVTIH0gZnJvbSAnLi9jb25zdGFudHMnOyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode, FC, ReactElement, MutableRefObject, CSSProperties, FormHTMLAttributes } from 'react';
2
- import type { FormCoreInstance, FormSize, LabelAlign, ValidateStatus, ValidateTrigger, Rule } from './core/interface';
2
+ import type { FormInstance, FormSize, LabelAlign, ValidateStatus, ValidateTrigger, Rule } from './core/interface';
3
3
  import type { ButtonProps } from "../Button";
4
4
  import type { DrawerProps, DrawerPlacement } from "../Drawer";
5
5
  import type { GridRowProps, GridColSize } from "../Grid";
@@ -22,22 +22,28 @@ export interface ProFormRequestOption {
22
22
  value: unknown;
23
23
  disabled?: boolean;
24
24
  }
25
- export interface ProFormFormInstance extends FormCoreInstance {
25
+ export interface ProFormFormInstance extends FormInstance {
26
26
  getFieldsFormatValue: () => Record<string, unknown>;
27
- validateFieldsReturnFormatValue: () => {
27
+ validateFieldsReturnFormatValue: () => Promise<{
28
28
  success: boolean;
29
29
  values?: Record<string, unknown>;
30
30
  errors?: Record<string, string>;
31
- };
31
+ }>;
32
+ submitForm: () => Promise<void>;
32
33
  }
33
34
  export interface ProFormContextValue {
34
35
  values: Record<string, unknown>;
35
36
  errors: Record<string, string>;
36
37
  touched: Record<string, boolean>;
38
+ validating: Record<string, boolean>;
37
39
  formInstance: ProFormFormInstance;
38
40
  setFieldValue: (name: string, value: unknown) => void;
39
41
  setFieldError: (name: string, error: string | null) => void;
40
42
  validateField: (name: string, rules: Rule[], providedValue?: unknown) => boolean;
43
+ validateFieldAsync: (name: string, value: unknown, rules: Rule[]) => Promise<{
44
+ isValid: boolean;
45
+ error: string | null;
46
+ }>;
41
47
  registerField: (name: string, rules: Rule[]) => void;
42
48
  unregisterField: (name: string) => void;
43
49
  size: FormSize;
@@ -124,7 +130,7 @@ export interface SubmitterProps {
124
130
  submitText?: ReactNode;
125
131
  resetText?: ReactNode;
126
132
  render?: (props: {
127
- form: FormCoreInstance;
133
+ form: ProFormFormInstance;
128
134
  submit: () => void;
129
135
  reset: () => void;
130
136
  }, dom: ReactElement[]) => ReactNode;