986322e79228f07e0695b2edf3511121.json 53.1 KB
{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport toChildrenArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport { toArray } from './utils/typeUtil';\nimport { validateRules } from './utils/validateUtil';\nimport { containsNamePath, defaultGetValueFromEvent, getNamePath, getValue } from './utils/valueUtil';\n\nfunction requireUpdate(shouldUpdate, prev, next, prevValue, nextValue, info) {\n  if (typeof shouldUpdate === 'function') {\n    return shouldUpdate(prev, next, 'source' in info ? {\n      source: info.source\n    } : {});\n  }\n\n  return prevValue !== nextValue;\n} // We use Class instead of Hooks here since it will cost much code by using Hooks.\n\n\nvar Field = /*#__PURE__*/function (_React$Component) {\n  _inherits(Field, _React$Component);\n\n  var _super = _createSuper(Field); // ============================== Subscriptions ==============================\n\n\n  function Field(props) {\n    var _this;\n\n    _classCallCheck(this, Field);\n\n    _this = _super.call(this, props);\n    _this.state = {\n      resetCount: 0\n    };\n    _this.cancelRegisterFunc = null;\n    _this.mounted = false;\n    /**\n     * Follow state should not management in State since it will async update by React.\n     * This makes first render of form can not get correct state value.\n     */\n\n    _this.touched = false;\n    /** Mark when touched & validated. Currently only used for `dependencies` */\n\n    _this.dirty = false;\n    _this.validatePromise = null;\n    _this.errors = [];\n\n    _this.cancelRegister = function () {\n      var _this$props = _this.props,\n          preserve = _this$props.preserve,\n          isListField = _this$props.isListField;\n\n      if (_this.cancelRegisterFunc) {\n        _this.cancelRegisterFunc(isListField, preserve);\n      }\n\n      _this.cancelRegisterFunc = null;\n    }; // ================================== Utils ==================================\n\n\n    _this.getNamePath = function () {\n      var _this$props2 = _this.props,\n          name = _this$props2.name,\n          fieldContext = _this$props2.fieldContext;\n      var _fieldContext$prefixN = fieldContext.prefixName,\n          prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;\n      return name !== undefined ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];\n    };\n\n    _this.getRules = function () {\n      var _this$props3 = _this.props,\n          _this$props3$rules = _this$props3.rules,\n          rules = _this$props3$rules === void 0 ? [] : _this$props3$rules,\n          fieldContext = _this$props3.fieldContext;\n      return rules.map(function (rule) {\n        if (typeof rule === 'function') {\n          return rule(fieldContext);\n        }\n\n        return rule;\n      });\n    };\n\n    _this.refresh = function () {\n      if (!_this.mounted) return;\n      /**\n       * Clean up current node.\n       */\n\n      _this.setState(function (_ref) {\n        var resetCount = _ref.resetCount;\n        return {\n          resetCount: resetCount + 1\n        };\n      });\n    }; // ========================= Field Entity Interfaces =========================\n    // Trigger by store update. Check if need update the component\n\n\n    _this.onStoreChange = function (prevStore, namePathList, info) {\n      var _this$props4 = _this.props,\n          shouldUpdate = _this$props4.shouldUpdate,\n          _this$props4$dependen = _this$props4.dependencies,\n          dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen,\n          onReset = _this$props4.onReset;\n      var store = info.store;\n\n      var namePath = _this.getNamePath();\n\n      var prevValue = _this.getValue(prevStore);\n\n      var curValue = _this.getValue(store);\n\n      var namePathMatch = namePathList && containsNamePath(namePathList, namePath); // `setFieldsValue` is a quick access to update related status\n\n      if (info.type === 'valueUpdate' && info.source === 'external' && prevValue !== curValue) {\n        _this.touched = true;\n        _this.dirty = true;\n        _this.validatePromise = null;\n        _this.errors = [];\n      }\n\n      switch (info.type) {\n        case 'reset':\n          if (!namePathList || namePathMatch) {\n            // Clean up state\n            _this.touched = false;\n            _this.dirty = false;\n            _this.validatePromise = null;\n            _this.errors = [];\n\n            if (onReset) {\n              onReset();\n            }\n\n            _this.refresh();\n\n            return;\n          }\n\n          break;\n\n        case 'setField':\n          {\n            if (namePathMatch) {\n              var data = info.data;\n\n              if ('touched' in data) {\n                _this.touched = data.touched;\n              }\n\n              if ('validating' in data && !('originRCField' in data)) {\n                _this.validatePromise = data.validating ? Promise.resolve([]) : null;\n              }\n\n              if ('errors' in data) {\n                _this.errors = data.errors || [];\n              }\n\n              _this.dirty = true;\n\n              _this.reRender();\n\n              return;\n            } // Handle update by `setField` with `shouldUpdate`\n\n\n            if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n              _this.reRender();\n\n              return;\n            }\n\n            break;\n          }\n\n        case 'dependenciesUpdate':\n          {\n            /**\n             * Trigger when marked `dependencies` updated. Related fields will all update\n             */\n            var dependencyList = dependencies.map(getNamePath); // No need for `namePathMath` check and `shouldUpdate` check, since `valueUpdate` will be\n            // emitted earlier and they will work there\n            // If set it may cause unnecessary twice rerendering\n\n            if (dependencyList.some(function (dependency) {\n              return containsNamePath(info.relatedFields, dependency);\n            })) {\n              _this.reRender();\n\n              return;\n            }\n\n            break;\n          }\n\n        default:\n          // 1. If `namePath` exists in `namePathList`, means it's related value and should update\n          //      For example <List name=\"list\"><Field name={['list', 0]}></List>\n          //      If `namePathList` is [['list']] (List value update), Field should be updated\n          //      If `namePathList` is [['list', 0]] (Field value update), List shouldn't be updated\n          // 2.\n          //   2.1 If `dependencies` is set, `name` is not set and `shouldUpdate` is not set,\n          //       don't use `shouldUpdate`. `dependencies` is view as a shortcut if `shouldUpdate`\n          //       is not provided\n          //   2.2 If `shouldUpdate` provided, use customize logic to update the field\n          //       else to check if value changed\n          if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n            _this.reRender();\n\n            return;\n          }\n\n          break;\n      }\n\n      if (shouldUpdate === true) {\n        _this.reRender();\n      }\n    };\n\n    _this.validateRules = function (options) {\n      // We should fixed namePath & value to avoid developer change then by form function\n      var namePath = _this.getNamePath();\n\n      var currentValue = _this.getValue(); // Force change to async to avoid rule OOD under renderProps field\n\n\n      var rootPromise = Promise.resolve().then(function () {\n        if (!_this.mounted) {\n          return [];\n        }\n\n        var _this$props5 = _this.props,\n            _this$props5$validate = _this$props5.validateFirst,\n            validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate,\n            messageVariables = _this$props5.messageVariables;\n\n        var _ref2 = options || {},\n            triggerName = _ref2.triggerName;\n\n        var filteredRules = _this.getRules();\n\n        if (triggerName) {\n          filteredRules = filteredRules.filter(function (rule) {\n            var validateTrigger = rule.validateTrigger;\n\n            if (!validateTrigger) {\n              return true;\n            }\n\n            var triggerList = toArray(validateTrigger);\n            return triggerList.includes(triggerName);\n          });\n        }\n\n        var promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);\n        promise.catch(function (e) {\n          return e;\n        }).then(function () {\n          var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n          if (_this.validatePromise === rootPromise) {\n            _this.validatePromise = null;\n            _this.errors = errors;\n\n            _this.reRender();\n          }\n        });\n        return promise;\n      });\n      _this.validatePromise = rootPromise;\n      _this.dirty = true;\n      _this.errors = []; // Force trigger re-render since we need sync renderProps with new meta\n\n      _this.reRender();\n\n      return rootPromise;\n    };\n\n    _this.isFieldValidating = function () {\n      return !!_this.validatePromise;\n    };\n\n    _this.isFieldTouched = function () {\n      return _this.touched;\n    };\n\n    _this.isFieldDirty = function () {\n      return _this.dirty;\n    };\n\n    _this.getErrors = function () {\n      return _this.errors;\n    };\n\n    _this.isListField = function () {\n      return _this.props.isListField;\n    };\n\n    _this.isList = function () {\n      return _this.props.isList;\n    }; // ============================= Child Component =============================\n\n\n    _this.getMeta = function () {\n      // Make error & validating in cache to save perf\n      _this.prevValidating = _this.isFieldValidating();\n      var meta = {\n        touched: _this.isFieldTouched(),\n        validating: _this.prevValidating,\n        errors: _this.errors,\n        name: _this.getNamePath()\n      };\n      return meta;\n    }; // Only return validate child node. If invalidate, will do nothing about field.\n\n\n    _this.getOnlyChild = function (children) {\n      // Support render props\n      if (typeof children === 'function') {\n        var meta = _this.getMeta();\n\n        return _objectSpread(_objectSpread({}, _this.getOnlyChild(children(_this.getControlled(), meta, _this.props.fieldContext))), {}, {\n          isFunction: true\n        });\n      } // Filed element only\n\n\n      var childList = toChildrenArray(children);\n\n      if (childList.length !== 1 || ! /*#__PURE__*/React.isValidElement(childList[0])) {\n        return {\n          child: childList,\n          isFunction: false\n        };\n      }\n\n      return {\n        child: childList[0],\n        isFunction: false\n      };\n    }; // ============================== Field Control ==============================\n\n\n    _this.getValue = function (store) {\n      var getFieldsValue = _this.props.fieldContext.getFieldsValue;\n\n      var namePath = _this.getNamePath();\n\n      return getValue(store || getFieldsValue(true), namePath);\n    };\n\n    _this.getControlled = function () {\n      var childProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var _this$props6 = _this.props,\n          trigger = _this$props6.trigger,\n          validateTrigger = _this$props6.validateTrigger,\n          getValueFromEvent = _this$props6.getValueFromEvent,\n          normalize = _this$props6.normalize,\n          valuePropName = _this$props6.valuePropName,\n          getValueProps = _this$props6.getValueProps,\n          fieldContext = _this$props6.fieldContext;\n      var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : fieldContext.validateTrigger;\n\n      var namePath = _this.getNamePath();\n\n      var getInternalHooks = fieldContext.getInternalHooks,\n          getFieldsValue = fieldContext.getFieldsValue;\n\n      var _getInternalHooks = getInternalHooks(HOOK_MARK),\n          dispatch = _getInternalHooks.dispatch;\n\n      var value = _this.getValue();\n\n      var mergedGetValueProps = getValueProps || function (val) {\n        return _defineProperty({}, valuePropName, val);\n      }; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n      var originTriggerFunc = childProps[trigger];\n\n      var control = _objectSpread(_objectSpread({}, childProps), mergedGetValueProps(value)); // Add trigger\n\n\n      control[trigger] = function () {\n        // Mark as touched\n        _this.touched = true;\n        _this.dirty = true;\n        var newValue;\n\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        if (getValueFromEvent) {\n          newValue = getValueFromEvent.apply(void 0, args);\n        } else {\n          newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));\n        }\n\n        if (normalize) {\n          newValue = normalize(newValue, value, getFieldsValue(true));\n        }\n\n        dispatch({\n          type: 'updateValue',\n          namePath: namePath,\n          value: newValue\n        });\n\n        if (originTriggerFunc) {\n          originTriggerFunc.apply(void 0, args);\n        }\n      }; // Add validateTrigger\n\n\n      var validateTriggerList = toArray(mergedValidateTrigger || []);\n      validateTriggerList.forEach(function (triggerName) {\n        // Wrap additional function of component, so that we can get latest value from store\n        var originTrigger = control[triggerName];\n\n        control[triggerName] = function () {\n          if (originTrigger) {\n            originTrigger.apply(void 0, arguments);\n          } // Always use latest rules\n\n\n          var rules = _this.props.rules;\n\n          if (rules && rules.length) {\n            // We dispatch validate to root,\n            // since it will update related data with other field with same name\n            dispatch({\n              type: 'validateField',\n              namePath: namePath,\n              triggerName: triggerName\n            });\n          }\n        };\n      });\n      return control;\n    }; // Register on init\n\n\n    if (props.fieldContext) {\n      var getInternalHooks = props.fieldContext.getInternalHooks;\n\n      var _getInternalHooks2 = getInternalHooks(HOOK_MARK),\n          initEntityValue = _getInternalHooks2.initEntityValue;\n\n      initEntityValue(_assertThisInitialized(_this));\n    }\n\n    return _this;\n  }\n\n  _createClass(Field, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props7 = this.props,\n          shouldUpdate = _this$props7.shouldUpdate,\n          fieldContext = _this$props7.fieldContext;\n      this.mounted = true; // Register on init\n\n      if (fieldContext) {\n        var getInternalHooks = fieldContext.getInternalHooks;\n\n        var _getInternalHooks3 = getInternalHooks(HOOK_MARK),\n            registerField = _getInternalHooks3.registerField;\n\n        this.cancelRegisterFunc = registerField(this);\n      } // One more render for component in case fields not ready\n\n\n      if (shouldUpdate === true) {\n        this.reRender();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.cancelRegister();\n      this.mounted = false;\n    }\n  }, {\n    key: \"reRender\",\n    value: function reRender() {\n      if (!this.mounted) return;\n      this.forceUpdate();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var resetCount = this.state.resetCount;\n      var children = this.props.children;\n\n      var _this$getOnlyChild = this.getOnlyChild(children),\n          child = _this$getOnlyChild.child,\n          isFunction = _this$getOnlyChild.isFunction; // Not need to `cloneElement` since user can handle this in render function self\n\n\n      var returnChildNode;\n\n      if (isFunction) {\n        returnChildNode = child;\n      } else if ( /*#__PURE__*/React.isValidElement(child)) {\n        returnChildNode = /*#__PURE__*/React.cloneElement(child, this.getControlled(child.props));\n      } else {\n        warning(!child, '`children` of Field is not validate ReactElement.');\n        returnChildNode = child;\n      }\n\n      return /*#__PURE__*/React.createElement(React.Fragment, {\n        key: resetCount\n      }, returnChildNode);\n    }\n  }]);\n\n  return Field;\n}(React.Component);\n\nField.contextType = FieldContext;\nField.defaultProps = {\n  trigger: 'onChange',\n  valuePropName: 'value'\n};\n\nfunction WrapperField(_ref4) {\n  var name = _ref4.name,\n      restProps = _objectWithoutProperties(_ref4, [\"name\"]);\n\n  var fieldContext = React.useContext(FieldContext);\n  var namePath = name !== undefined ? getNamePath(name) : undefined;\n  var key = 'keep';\n\n  if (!restProps.isListField) {\n    key = \"_\".concat((namePath || []).join('_'));\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    warning(restProps.preserve !== false || !restProps.isListField, '`preserve` should not apply on Form.List fields.');\n  }\n\n  return /*#__PURE__*/React.createElement(Field, _extends({\n    key: key,\n    name: namePath\n  }, restProps, {\n    fieldContext: fieldContext\n  }));\n}\n\nexport default WrapperField;","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/rc-field-form/es/Field.js"],"names":["_extends","_objectWithoutProperties","_defineProperty","_objectSpread","_toConsumableArray","_classCallCheck","_createClass","_assertThisInitialized","_inherits","_createSuper","toChildrenArray","warning","React","FieldContext","HOOK_MARK","toArray","validateRules","containsNamePath","defaultGetValueFromEvent","getNamePath","getValue","requireUpdate","shouldUpdate","prev","next","prevValue","nextValue","info","source","Field","_React$Component","_super","props","_this","call","state","resetCount","cancelRegisterFunc","mounted","touched","dirty","validatePromise","errors","cancelRegister","_this$props","preserve","isListField","_this$props2","name","fieldContext","_fieldContext$prefixN","prefixName","undefined","concat","getRules","_this$props3","_this$props3$rules","rules","map","rule","refresh","setState","_ref","onStoreChange","prevStore","namePathList","_this$props4","_this$props4$dependen","dependencies","onReset","store","namePath","curValue","namePathMatch","type","data","validating","Promise","resolve","reRender","length","dependencyList","some","dependency","relatedFields","options","currentValue","rootPromise","then","_this$props5","_this$props5$validate","validateFirst","messageVariables","_ref2","triggerName","filteredRules","filter","validateTrigger","triggerList","includes","promise","catch","e","arguments","isFieldValidating","isFieldTouched","isFieldDirty","getErrors","isList","getMeta","prevValidating","meta","getOnlyChild","children","getControlled","isFunction","childList","isValidElement","child","getFieldsValue","childProps","_this$props6","trigger","getValueFromEvent","normalize","valuePropName","getValueProps","mergedValidateTrigger","getInternalHooks","_getInternalHooks","dispatch","value","mergedGetValueProps","val","originTriggerFunc","control","newValue","_len","args","Array","_key","apply","validateTriggerList","forEach","originTrigger","_getInternalHooks2","initEntityValue","key","componentDidMount","_this$props7","_getInternalHooks3","registerField","componentWillUnmount","forceUpdate","render","_this$getOnlyChild","returnChildNode","cloneElement","createElement","Fragment","Component","contextType","defaultProps","WrapperField","_ref4","restProps","useContext","join","process","env","NODE_ENV"],"mappings":"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","sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport toChildrenArray from \"rc-util/es/Children/toArray\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport FieldContext, { HOOK_MARK } from './FieldContext';\nimport { toArray } from './utils/typeUtil';\nimport { validateRules } from './utils/validateUtil';\nimport { containsNamePath, defaultGetValueFromEvent, getNamePath, getValue } from './utils/valueUtil';\n\nfunction requireUpdate(shouldUpdate, prev, next, prevValue, nextValue, info) {\n  if (typeof shouldUpdate === 'function') {\n    return shouldUpdate(prev, next, 'source' in info ? {\n      source: info.source\n    } : {});\n  }\n\n  return prevValue !== nextValue;\n} // We use Class instead of Hooks here since it will cost much code by using Hooks.\n\n\nvar Field = /*#__PURE__*/function (_React$Component) {\n  _inherits(Field, _React$Component);\n\n  var _super = _createSuper(Field);\n\n  // ============================== Subscriptions ==============================\n  function Field(props) {\n    var _this;\n\n    _classCallCheck(this, Field);\n\n    _this = _super.call(this, props);\n    _this.state = {\n      resetCount: 0\n    };\n    _this.cancelRegisterFunc = null;\n    _this.mounted = false;\n    /**\n     * Follow state should not management in State since it will async update by React.\n     * This makes first render of form can not get correct state value.\n     */\n\n    _this.touched = false;\n    /** Mark when touched & validated. Currently only used for `dependencies` */\n\n    _this.dirty = false;\n    _this.validatePromise = null;\n    _this.errors = [];\n\n    _this.cancelRegister = function () {\n      var _this$props = _this.props,\n          preserve = _this$props.preserve,\n          isListField = _this$props.isListField;\n\n      if (_this.cancelRegisterFunc) {\n        _this.cancelRegisterFunc(isListField, preserve);\n      }\n\n      _this.cancelRegisterFunc = null;\n    }; // ================================== Utils ==================================\n\n\n    _this.getNamePath = function () {\n      var _this$props2 = _this.props,\n          name = _this$props2.name,\n          fieldContext = _this$props2.fieldContext;\n      var _fieldContext$prefixN = fieldContext.prefixName,\n          prefixName = _fieldContext$prefixN === void 0 ? [] : _fieldContext$prefixN;\n      return name !== undefined ? [].concat(_toConsumableArray(prefixName), _toConsumableArray(name)) : [];\n    };\n\n    _this.getRules = function () {\n      var _this$props3 = _this.props,\n          _this$props3$rules = _this$props3.rules,\n          rules = _this$props3$rules === void 0 ? [] : _this$props3$rules,\n          fieldContext = _this$props3.fieldContext;\n      return rules.map(function (rule) {\n        if (typeof rule === 'function') {\n          return rule(fieldContext);\n        }\n\n        return rule;\n      });\n    };\n\n    _this.refresh = function () {\n      if (!_this.mounted) return;\n      /**\n       * Clean up current node.\n       */\n\n      _this.setState(function (_ref) {\n        var resetCount = _ref.resetCount;\n        return {\n          resetCount: resetCount + 1\n        };\n      });\n    }; // ========================= Field Entity Interfaces =========================\n    // Trigger by store update. Check if need update the component\n\n\n    _this.onStoreChange = function (prevStore, namePathList, info) {\n      var _this$props4 = _this.props,\n          shouldUpdate = _this$props4.shouldUpdate,\n          _this$props4$dependen = _this$props4.dependencies,\n          dependencies = _this$props4$dependen === void 0 ? [] : _this$props4$dependen,\n          onReset = _this$props4.onReset;\n      var store = info.store;\n\n      var namePath = _this.getNamePath();\n\n      var prevValue = _this.getValue(prevStore);\n\n      var curValue = _this.getValue(store);\n\n      var namePathMatch = namePathList && containsNamePath(namePathList, namePath); // `setFieldsValue` is a quick access to update related status\n\n      if (info.type === 'valueUpdate' && info.source === 'external' && prevValue !== curValue) {\n        _this.touched = true;\n        _this.dirty = true;\n        _this.validatePromise = null;\n        _this.errors = [];\n      }\n\n      switch (info.type) {\n        case 'reset':\n          if (!namePathList || namePathMatch) {\n            // Clean up state\n            _this.touched = false;\n            _this.dirty = false;\n            _this.validatePromise = null;\n            _this.errors = [];\n\n            if (onReset) {\n              onReset();\n            }\n\n            _this.refresh();\n\n            return;\n          }\n\n          break;\n\n        case 'setField':\n          {\n            if (namePathMatch) {\n              var data = info.data;\n\n              if ('touched' in data) {\n                _this.touched = data.touched;\n              }\n\n              if ('validating' in data && !('originRCField' in data)) {\n                _this.validatePromise = data.validating ? Promise.resolve([]) : null;\n              }\n\n              if ('errors' in data) {\n                _this.errors = data.errors || [];\n              }\n\n              _this.dirty = true;\n\n              _this.reRender();\n\n              return;\n            } // Handle update by `setField` with `shouldUpdate`\n\n\n            if (shouldUpdate && !namePath.length && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n              _this.reRender();\n\n              return;\n            }\n\n            break;\n          }\n\n        case 'dependenciesUpdate':\n          {\n            /**\n             * Trigger when marked `dependencies` updated. Related fields will all update\n             */\n            var dependencyList = dependencies.map(getNamePath); // No need for `namePathMath` check and `shouldUpdate` check, since `valueUpdate` will be\n            // emitted earlier and they will work there\n            // If set it may cause unnecessary twice rerendering\n\n            if (dependencyList.some(function (dependency) {\n              return containsNamePath(info.relatedFields, dependency);\n            })) {\n              _this.reRender();\n\n              return;\n            }\n\n            break;\n          }\n\n        default:\n          // 1. If `namePath` exists in `namePathList`, means it's related value and should update\n          //      For example <List name=\"list\"><Field name={['list', 0]}></List>\n          //      If `namePathList` is [['list']] (List value update), Field should be updated\n          //      If `namePathList` is [['list', 0]] (Field value update), List shouldn't be updated\n          // 2.\n          //   2.1 If `dependencies` is set, `name` is not set and `shouldUpdate` is not set,\n          //       don't use `shouldUpdate`. `dependencies` is view as a shortcut if `shouldUpdate`\n          //       is not provided\n          //   2.2 If `shouldUpdate` provided, use customize logic to update the field\n          //       else to check if value changed\n          if (namePathMatch || (!dependencies.length || namePath.length || shouldUpdate) && requireUpdate(shouldUpdate, prevStore, store, prevValue, curValue, info)) {\n            _this.reRender();\n\n            return;\n          }\n\n          break;\n      }\n\n      if (shouldUpdate === true) {\n        _this.reRender();\n      }\n    };\n\n    _this.validateRules = function (options) {\n      // We should fixed namePath & value to avoid developer change then by form function\n      var namePath = _this.getNamePath();\n\n      var currentValue = _this.getValue(); // Force change to async to avoid rule OOD under renderProps field\n\n\n      var rootPromise = Promise.resolve().then(function () {\n        if (!_this.mounted) {\n          return [];\n        }\n\n        var _this$props5 = _this.props,\n            _this$props5$validate = _this$props5.validateFirst,\n            validateFirst = _this$props5$validate === void 0 ? false : _this$props5$validate,\n            messageVariables = _this$props5.messageVariables;\n\n        var _ref2 = options || {},\n            triggerName = _ref2.triggerName;\n\n        var filteredRules = _this.getRules();\n\n        if (triggerName) {\n          filteredRules = filteredRules.filter(function (rule) {\n            var validateTrigger = rule.validateTrigger;\n\n            if (!validateTrigger) {\n              return true;\n            }\n\n            var triggerList = toArray(validateTrigger);\n            return triggerList.includes(triggerName);\n          });\n        }\n\n        var promise = validateRules(namePath, currentValue, filteredRules, options, validateFirst, messageVariables);\n        promise.catch(function (e) {\n          return e;\n        }).then(function () {\n          var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n          if (_this.validatePromise === rootPromise) {\n            _this.validatePromise = null;\n            _this.errors = errors;\n\n            _this.reRender();\n          }\n        });\n        return promise;\n      });\n      _this.validatePromise = rootPromise;\n      _this.dirty = true;\n      _this.errors = []; // Force trigger re-render since we need sync renderProps with new meta\n\n      _this.reRender();\n\n      return rootPromise;\n    };\n\n    _this.isFieldValidating = function () {\n      return !!_this.validatePromise;\n    };\n\n    _this.isFieldTouched = function () {\n      return _this.touched;\n    };\n\n    _this.isFieldDirty = function () {\n      return _this.dirty;\n    };\n\n    _this.getErrors = function () {\n      return _this.errors;\n    };\n\n    _this.isListField = function () {\n      return _this.props.isListField;\n    };\n\n    _this.isList = function () {\n      return _this.props.isList;\n    }; // ============================= Child Component =============================\n\n\n    _this.getMeta = function () {\n      // Make error & validating in cache to save perf\n      _this.prevValidating = _this.isFieldValidating();\n      var meta = {\n        touched: _this.isFieldTouched(),\n        validating: _this.prevValidating,\n        errors: _this.errors,\n        name: _this.getNamePath()\n      };\n      return meta;\n    }; // Only return validate child node. If invalidate, will do nothing about field.\n\n\n    _this.getOnlyChild = function (children) {\n      // Support render props\n      if (typeof children === 'function') {\n        var meta = _this.getMeta();\n\n        return _objectSpread(_objectSpread({}, _this.getOnlyChild(children(_this.getControlled(), meta, _this.props.fieldContext))), {}, {\n          isFunction: true\n        });\n      } // Filed element only\n\n\n      var childList = toChildrenArray(children);\n\n      if (childList.length !== 1 || ! /*#__PURE__*/React.isValidElement(childList[0])) {\n        return {\n          child: childList,\n          isFunction: false\n        };\n      }\n\n      return {\n        child: childList[0],\n        isFunction: false\n      };\n    }; // ============================== Field Control ==============================\n\n\n    _this.getValue = function (store) {\n      var getFieldsValue = _this.props.fieldContext.getFieldsValue;\n\n      var namePath = _this.getNamePath();\n\n      return getValue(store || getFieldsValue(true), namePath);\n    };\n\n    _this.getControlled = function () {\n      var childProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var _this$props6 = _this.props,\n          trigger = _this$props6.trigger,\n          validateTrigger = _this$props6.validateTrigger,\n          getValueFromEvent = _this$props6.getValueFromEvent,\n          normalize = _this$props6.normalize,\n          valuePropName = _this$props6.valuePropName,\n          getValueProps = _this$props6.getValueProps,\n          fieldContext = _this$props6.fieldContext;\n      var mergedValidateTrigger = validateTrigger !== undefined ? validateTrigger : fieldContext.validateTrigger;\n\n      var namePath = _this.getNamePath();\n\n      var getInternalHooks = fieldContext.getInternalHooks,\n          getFieldsValue = fieldContext.getFieldsValue;\n\n      var _getInternalHooks = getInternalHooks(HOOK_MARK),\n          dispatch = _getInternalHooks.dispatch;\n\n      var value = _this.getValue();\n\n      var mergedGetValueProps = getValueProps || function (val) {\n        return _defineProperty({}, valuePropName, val);\n      }; // eslint-disable-next-line @typescript-eslint/no-explicit-any\n\n\n      var originTriggerFunc = childProps[trigger];\n\n      var control = _objectSpread(_objectSpread({}, childProps), mergedGetValueProps(value)); // Add trigger\n\n\n      control[trigger] = function () {\n        // Mark as touched\n        _this.touched = true;\n        _this.dirty = true;\n        var newValue;\n\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        if (getValueFromEvent) {\n          newValue = getValueFromEvent.apply(void 0, args);\n        } else {\n          newValue = defaultGetValueFromEvent.apply(void 0, [valuePropName].concat(args));\n        }\n\n        if (normalize) {\n          newValue = normalize(newValue, value, getFieldsValue(true));\n        }\n\n        dispatch({\n          type: 'updateValue',\n          namePath: namePath,\n          value: newValue\n        });\n\n        if (originTriggerFunc) {\n          originTriggerFunc.apply(void 0, args);\n        }\n      }; // Add validateTrigger\n\n\n      var validateTriggerList = toArray(mergedValidateTrigger || []);\n      validateTriggerList.forEach(function (triggerName) {\n        // Wrap additional function of component, so that we can get latest value from store\n        var originTrigger = control[triggerName];\n\n        control[triggerName] = function () {\n          if (originTrigger) {\n            originTrigger.apply(void 0, arguments);\n          } // Always use latest rules\n\n\n          var rules = _this.props.rules;\n\n          if (rules && rules.length) {\n            // We dispatch validate to root,\n            // since it will update related data with other field with same name\n            dispatch({\n              type: 'validateField',\n              namePath: namePath,\n              triggerName: triggerName\n            });\n          }\n        };\n      });\n      return control;\n    }; // Register on init\n\n\n    if (props.fieldContext) {\n      var getInternalHooks = props.fieldContext.getInternalHooks;\n\n      var _getInternalHooks2 = getInternalHooks(HOOK_MARK),\n          initEntityValue = _getInternalHooks2.initEntityValue;\n\n      initEntityValue(_assertThisInitialized(_this));\n    }\n\n    return _this;\n  }\n\n  _createClass(Field, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      var _this$props7 = this.props,\n          shouldUpdate = _this$props7.shouldUpdate,\n          fieldContext = _this$props7.fieldContext;\n      this.mounted = true; // Register on init\n\n      if (fieldContext) {\n        var getInternalHooks = fieldContext.getInternalHooks;\n\n        var _getInternalHooks3 = getInternalHooks(HOOK_MARK),\n            registerField = _getInternalHooks3.registerField;\n\n        this.cancelRegisterFunc = registerField(this);\n      } // One more render for component in case fields not ready\n\n\n      if (shouldUpdate === true) {\n        this.reRender();\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      this.cancelRegister();\n      this.mounted = false;\n    }\n  }, {\n    key: \"reRender\",\n    value: function reRender() {\n      if (!this.mounted) return;\n      this.forceUpdate();\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var resetCount = this.state.resetCount;\n      var children = this.props.children;\n\n      var _this$getOnlyChild = this.getOnlyChild(children),\n          child = _this$getOnlyChild.child,\n          isFunction = _this$getOnlyChild.isFunction; // Not need to `cloneElement` since user can handle this in render function self\n\n\n      var returnChildNode;\n\n      if (isFunction) {\n        returnChildNode = child;\n      } else if ( /*#__PURE__*/React.isValidElement(child)) {\n        returnChildNode = /*#__PURE__*/React.cloneElement(child, this.getControlled(child.props));\n      } else {\n        warning(!child, '`children` of Field is not validate ReactElement.');\n        returnChildNode = child;\n      }\n\n      return /*#__PURE__*/React.createElement(React.Fragment, {\n        key: resetCount\n      }, returnChildNode);\n    }\n  }]);\n\n  return Field;\n}(React.Component);\n\nField.contextType = FieldContext;\nField.defaultProps = {\n  trigger: 'onChange',\n  valuePropName: 'value'\n};\n\nfunction WrapperField(_ref4) {\n  var name = _ref4.name,\n      restProps = _objectWithoutProperties(_ref4, [\"name\"]);\n\n  var fieldContext = React.useContext(FieldContext);\n  var namePath = name !== undefined ? getNamePath(name) : undefined;\n  var key = 'keep';\n\n  if (!restProps.isListField) {\n    key = \"_\".concat((namePath || []).join('_'));\n  }\n\n  if (process.env.NODE_ENV !== 'production') {\n    warning(restProps.preserve !== false || !restProps.isListField, '`preserve` should not apply on Form.List fields.');\n  }\n\n  return /*#__PURE__*/React.createElement(Field, _extends({\n    key: key,\n    name: namePath\n  }, restProps, {\n    fieldContext: fieldContext\n  }));\n}\n\nexport default WrapperField;"]},"metadata":{},"sourceType":"module"}