"use strict";

var _interopRequireDefault = require("E:/T/git/\u5965\u666ETeam/opu-components-vue/node_modules/@babel/runtime/helpers/interopRequireDefault.js").default;

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = void 0;

var _babelHelperVueJsxMergeProps = _interopRequireDefault(require("@vue/babel-helper-vue-jsx-merge-props"));

var _objectSpread2 = _interopRequireDefault(require("E:/T/git/\u5965\u666ETeam/opu-components-vue/node_modules/@babel/runtime/helpers/esm/objectSpread2.js"));

var _typeof2 = _interopRequireDefault(require("E:/T/git/\u5965\u666ETeam/opu-components-vue/node_modules/@babel/runtime/helpers/esm/typeof.js"));

var _toConsumableArray2 = _interopRequireDefault(require("E:/T/git/\u5965\u666ETeam/opu-components-vue/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js"));

require("core-js/modules/es.regexp.exec.js");

require("core-js/modules/es.string.replace.js");

require("core-js/modules/es.array.slice.js");

require("core-js/modules/es.array.filter.js");

require("core-js/modules/es.object.to-string.js");

require("core-js/modules/es.function.name.js");

require("core-js/modules/es.array.includes.js");

require("core-js/modules/es.array.map.js");

require("core-js/modules/es.string.iterator.js");

require("core-js/modules/web.dom-collections.iterator.js");

require("core-js/modules/web.dom-collections.for-each.js");

require("core-js/modules/es.array.find-index.js");

require("core-js/modules/es.regexp.to-string.js");

require("core-js/modules/es.array.concat.js");

require("core-js/modules/es.string.search.js");

require("core-js/modules/es.array.find.js");

var _moment = _interopRequireDefault(require("moment"));

var _lodash = require("lodash");

var _utils = _interopRequireDefault(require("../../../utils"));

var _conf = _interopRequireDefault(require("../../conf"));

function handlefieldOptionsDataField(item, json) {
  var optionData = json;

  if (item) {
    var df = item.dataField != undefined ? item.dataField : _conf.default.getSelectOptions.dataField;
    optionData = _utils.default.getObjData(df, json);
  }

  return optionData;
} //编辑插槽 是否禁用


function editSlotPropInit(row, props, key, field) {
  var defaultKey = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;
  return !props[key] && props[key] != 0 ? defaultKey : typeof props[key] == "function" ? props[key](row, field) : props[key];
}

var editRender = {
  components: {},
  props: {
    onEditOptionsLoadBefore: {
      type: Function,
      default: null
    },
    editSize: {
      type: String,
      default: ""
    },
    onOptionsLoadAfter: {
      type: Function,
      default: null
    },
    onOptionsAllLoad: {
      type: Function,
      default: null
    }
  },
  data: function data() {
    return {
      editType: ["AInput", "AInputNumber", "ASelect", "AAutoComplete", "ADatePicker", "ATimePicker", "ASwitch", "ACheckbox"],
      editOptions: {},
      editApiList: [],
      editDefaultOption: {}
    };
  },
  computed: {
    editItemSize: function editItemSize() {
      var editSize = this.editSize;

      if (editSize === "") {
        editSize = _conf.default.editSize;
      }

      return editSize;
    }
  },
  methods: {
    // 下划线转换驼峰
    toHump: function toHump(name) {
      // eslint-disable-next-line no-useless-escape
      name = name.replace(/\-(\w)/g, function (all, letter) {
        return letter.toUpperCase();
      });
      return name.charAt(0).toUpperCase() + name.slice(1);
    },
    // 驼峰转换下划线
    toLine: function toLine(name) {
      return name.replace(/([A-Z])/g, "-$1").toLowerCase();
    },
    setEditOptions: function setEditOptions(data) {
      var editOptions = this.editOptions;

      for (var key in data) {
        var item = data[key];
        editOptions[key] = item;
      }

      this.editOptions = editOptions;
      this.$refs.dataGrid.updateData();
    },
    getEditOptions: function getEditOptions() {
      return this.editOptions;
    },
    getEditDefaultOption: function getEditDefaultOption() {
      return this.editDefaultOption;
    },
    editColumnsRender: function editColumnsRender(data, filterCallback) {
      var _this = this;

      var h = this.$createElement;
      var editType = this.editType,
          editOptions = this.editOptions,
          toHump = this.toHump,
          editDefaultOption = this.editDefaultOption;
      var apiList = [];
      var getSelectOptions = _conf.default.getSelectOptions;
      data = data.filter(function (p) {
        if (filterCallback && !filterCallback(p)) {
          return false;
        }

        if (p.itemRender) {
          var name = toHump(p.itemRender.name || editType[0]);

          if (editType.indexOf(toHump(p.itemRender.name || editType[0])) > -1) {
            if (!p.slots) p.slots = {};

            p.slots.default = function (_ref) {
              var row = _ref.row,
                  rowIndex = _ref.rowIndex,
                  columnIndex = _ref.columnIndex;
              return [h("div", {
                "style": "display:flex;align-items: center;"
              }, [p.itemRender.before && p.itemRender.before({
                row: row,
                rowIndex: rowIndex,
                columnIndex: columnIndex
              }), h("div", {
                "style": "flex:1"
              }, [_this.editSlotRender(name)({
                row: row,
                rowIndex: rowIndex,
                columnIndex: columnIndex
              })]), p.itemRender.after && p.itemRender.after({
                row: row,
                rowIndex: rowIndex,
                columnIndex: columnIndex
              })])];
            };

            if (name == "ASwitch" || name == "ACheckbox") p.align = "center";
            var props = p.itemRender.props || {};

            if (["ASelect", "AAutoComplete"].includes(name) && p.itemRender.props) {
              var valueField = props.valueField || getSelectOptions.valueField;
              var labelField = props.labelField || getSelectOptions.labelField;
              var childrenField = props.childrenField || getSelectOptions.childrenField;
              var dataField = props.dataField || getSelectOptions.dataField;
              var defaultField = props.defaultField || getSelectOptions.defaultField;

              if (p.itemRender.props.options) {
                editOptions[p.field] = (0, _lodash.cloneDeep)(p.itemRender.props.options).map(function (o) {
                  if (o.value && !o[_conf.default.originalValueKey]) {
                    o[_conf.default.originalValueKey] = o.value;
                  }

                  if (labelField != "label") {
                    o.label = o[labelField];
                  }

                  if (valueField != "value") {
                    o.value = o[valueField];
                  }

                  if (childrenField != "children") {
                    o.children = o[childrenField];
                  }

                  if (o[defaultField]) {
                    editDefaultOption[p.field] = p.value;
                  }

                  return o;
                });
              } else if (!p.itemRender.props.optionsField && !editOptions[p.field] && (props.api || props.dataField || props.param)) {
                apiList.push({
                  field: p.field,
                  api: props.api || getSelectOptions.api,
                  valueField: valueField,
                  labelField: labelField,
                  childrenField: childrenField,
                  dataField: dataField,
                  defaultField: defaultField,
                  param: props.param || {}
                });
              }
            }
          }
        }

        return true;
      });
      this.editDefaultOption = editDefaultOption;
      this.editOptions = editOptions;
      this.editApiList = apiList;
      this.fetchItemPropsOptionsApiList();
      return data;
    },
    fetchItemPropsOptionsApiList: function fetchItemPropsOptionsApiList() {
      var that = this;
      var onEditOptionsLoadBefore = that.onEditOptionsLoadBefore,
          list = that.editApiList;

      if (onEditOptionsLoadBefore) {
        var beforeRes = onEditOptionsLoadBefore(list);

        if (beforeRes === false) {
          return false;
        } else if (beforeRes) {
          list = beforeRes;
        }
      }

      var promises = list.map(function (p) {
        return p.api(p.param);
      });
      Promise.all(promises).then(function (res) {
        var editOptions = that.editOptions,
            editDefaultOption = that.editDefaultOption,
            onOptionsLoadAfter = that.onOptionsLoadAfter;
        list.forEach(function (item, index) {
          var valueField = item.valueField,
              labelField = item.labelField,
              childrenField = item.childrenField,
              defaultField = item.defaultField; // 字段单独配置api的可选数据的处理

          var optionsData = handlefieldOptionsDataField(item, res[index], that);
          editOptions[item.field] = optionsData.map(function (p) {
            if (p.value && !p[_conf.default.originalValueKey]) {
              p[_conf.default.originalValueKey] = p.value;
            }

            if (p[labelField] != "label") {
              p.label = p[labelField];
            }

            if (p[valueField] != "value") {
              p.value = p[valueField];
            }

            if (p[childrenField] != "children") {
              p.children = p[childrenField];
            }

            if (p[defaultField]) {
              editDefaultOption[item.field] = p.value;
            }

            return p;
          });
        });

        if (that.onOptionsAllLoad) {
          editOptions = that.onOptionsAllLoad(editOptions);
        }

        that.editOptions = editOptions;
        that.editDefaultOption = editDefaultOption;

        if (onOptionsLoadAfter) {
          onOptionsLoadAfter({
            editOptions: editOptions,
            editDefaultOption: editDefaultOption
          });
        }

        that.$refs.dataGrid.updateData();
      }).catch(function () {});
    },
    selectFilterRender: function selectFilterRender(props) {
      var getSelectOptions = _conf.default.getSelectOptions;
      var valueField = props.valueField || getSelectOptions.valueField;
      var labelField = props.labelField || getSelectOptions.labelField;
      var searchFields = props.searchFields || _conf.default.defaultProps.select.searchFields || [];

      if (props.showSearch && !props.filterOption) {
        var optionsData = props.options || [];

        props.filterOption = function (input, option) {
          var value = option.componentOptions.propsData.value;
          var objIndex = optionsData.findIndex(function (p) {
            return p[valueField].toString() === value;
          });
          var obj = optionsData[objIndex];
          var is = false;
          var searchFieldList = [labelField].concat((0, _toConsumableArray2.default)(searchFields)); // vF,

          for (var i = 0; i < searchFieldList.length; i++) {
            var key = searchFieldList[i];

            if (obj[key]) {
              if (obj[key].toString().toLowerCase().indexOf(input.toLowerCase()) >= 0) {
                is = true;
                break;
              }
            }
          }

          return is;
        };
      }

      return props;
    },
    autoCompleteFilterRender: function autoCompleteFilterRender(props, row) {
      var h = this.$createElement;
      var getSelectOptions = _conf.default.getSelectOptions;
      var value = props.value;
      var dataSource = props.dataSource;
      delete props.dataSource;
      var valueField = props.valueField || getSelectOptions.labelField;
      var labelField = props.labelField || getSelectOptions.labelField;

      if (props.search) {
        dataSource = props.search(value, dataSource, row);
      } else {
        var searchFields = props.searchFields || [];
        dataSource = dataSource.filter(function (p) {
          if (!value) return true;
          var is = false;

          if (Object.prototype.toString.call(p) === "[object Object]") {
            var searchFieldList = [labelField].concat((0, _toConsumableArray2.default)(searchFields)); // vF,

            for (var i = 0; i < searchFieldList.length; i++) {
              var key = searchFieldList[i];
              var optionValue = p[key] || p;

              if (value) {
                if (optionValue.toString().toLowerCase().indexOf(value.toLowerCase()) >= 0) {
                  is = true;
                  break;
                }
              }
            }
          } else if (p.toString().toLowerCase().indexOf(value.toLowerCase()) >= 0) {
            is = true;
          }

          return is;
        });
      }

      var selectOptions = dataSource.map(function (p) {
        return h("a-select-option", {
          "key": p[valueField] || p
        }, [p[labelField] || p]);
      });
      return {
        props: props,
        selectOptions: selectOptions,
        dataSource: dataSource,
        valueField: valueField,
        labelField: labelField
      };
    },
    findOptionRow: function findOptionRow(options, value, valueField) {
      return options.find(function (p) {
        return p[valueField] == value;
      }) || {};
    },
    //插槽class  style 等重写
    editSlotItemRender: function editSlotItemRender(name, e) {
      if (typeof name == "function") {
        return name(e);
      } else {
        return name;
      }
    },
    editSlotRender: function editSlotRender(name) {
      var _this2 = this;

      var h = this.$createElement;
      return function (event) {
        var columnIndex = event.columnIndex,
            row = event.row;
        var item = _this2.tableColumns[columnIndex];
        var itemRender = item.itemRender || {};
        var props = itemRender.props || {};
        var disabled = editSlotPropInit(row, props, "disabled", item.field);
        var element;

        if ((0, _typeof2.default)(disabled) == "object") {
          return [disabled];
        } else {
          event.field = item.field;
          props = (0, _objectSpread2.default)((0, _objectSpread2.default)({
            size: _this2.editItemSize
          }, props), {}, {
            value: row[item.field],
            disabled: disabled
          });
          var attr = {
            class: _this2.editSlotItemRender(itemRender.class, event),
            style: _this2.editSlotItemRender(itemRender.style, event)
          };
          var optionsField, value, options, trueValue, falseValue;
          var ons = {
            change: function change(e) {
              row[item.field] = e;
              row.ISEDIT = true;

              if (itemRender.on && itemRender.on.change) {
                itemRender.on.change(e, event);
              }
            },
            blur: function blur(e) {
              if (itemRender.on && itemRender.on.blur) {
                itemRender.on.blur(e, event);
              }
            }
          };

          switch (name) {
            case "AInput":
              element = h("a-input", (0, _babelHelperVueJsxMergeProps.default)([{}, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, attr), {}, {
                props: props,
                on: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, itemRender.on), ons), {}, {
                  change: function change(e) {
                    var value = e.target.value;
                    row[item.field] = value;
                    row.ISEDIT = true;

                    if (itemRender.on && itemRender.on.change) {
                      itemRender.on.change(e, event);
                    }
                  },
                  keydown: function keydown(e) {
                    if (itemRender.on && itemRender.on.keydown) {
                      itemRender.on.keydown(e, event);
                    }
                  }
                }),
                style: (0, _objectSpread2.default)({}, itemRender.style)
              })]));
              break;

            case "AInputNumber":
              element = h("a-input-number", (0, _babelHelperVueJsxMergeProps.default)([{}, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, attr), {}, {
                props: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
                  max: editSlotPropInit(row, props, "max", item.field, Infinity),
                  min: editSlotPropInit(row, props, "min", item.field, -Infinity)
                }),
                on: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, itemRender.on), ons), {}, {
                  change: function change(e) {
                    var value = e;
                    row[item.field] = value;
                    row.ISEDIT = true;

                    if (itemRender.on && itemRender.on.change) {
                      itemRender.on.change(value, event);
                    }
                  },
                  blur: function blur(e) {
                    if (itemRender.on && itemRender.on.blur) {
                      itemRender.on.blur(e, event);
                    }
                  }
                })
              })]));
              break;

            case "ASelect":
              optionsField = props && props.optionsField || "";
              value = row[item.field];
              options = optionsField ? row[optionsField] : _this2.editOptions[item.field];

              if (props.optionsFilter) {
                options = props.optionsFilter((0, _lodash.cloneDeep)(options), value);
              }

              props = _this2.selectFilterRender((0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), _conf.default.defaultProps.select), {}, {
                options: options
              }));
              element = h("a-select", (0, _babelHelperVueJsxMergeProps.default)([{}, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, attr), {}, {
                props: props,
                style: (0, _objectSpread2.default)({
                  width: "100%"
                }, attr.style),
                on: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, itemRender.on), ons), {}, {
                  change: function change(value, option) {
                    row[item.field] = value;
                    row.ISEDIT = true;

                    if (itemRender.on && itemRender.on.change) {
                      itemRender.on.change(value, option, event);
                    }
                  }
                })
              })]));
              break;

            case "AAutoComplete":
              optionsField = props && props.optionsField || "";
              options = optionsField ? row[optionsField] : _this2.editOptions[item.field];
              value = row[item.field];

              if (props.optionsFilter) {
                options = props.optionsFilter((0, _lodash.cloneDeep)(options), value);
              }

              var filterData = _this2.autoCompleteFilterRender((0, _objectSpread2.default)((0, _objectSpread2.default)({
                size: _this2.editItemSize
              }, itemRender.props), {}, {
                value: value,
                dataSource: options || [],
                disabled: disabled
              }), row);

              var selectOptions = filterData.selectOptions;
              var dataSource = filterData.dataSource;
              props = filterData.props;
              element = h("a-auto-complete", (0, _babelHelperVueJsxMergeProps.default)([{}, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, attr), {}, {
                props: props,
                style: (0, _objectSpread2.default)({
                  width: "100%"
                }, itemRender.style),
                on: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, itemRender.on), ons), {}, {
                  select: function select(value) {
                    var optionRow = _this2.findOptionRow(dataSource, value, filterData.valueField);

                    row[item.field] = optionRow[filterData.labelField] || value;
                    row.ISEDIT = true;

                    if (itemRender.on && itemRender.on.select) {
                      itemRender.on.select(value, optionRow, event);
                    }
                  }
                })
              })]), [h("template", (0, _babelHelperVueJsxMergeProps.default)([{}, {
                slot: "dataSource"
              }]), [selectOptions])]);
              break;

            case "ADatePicker":
              element = h("a-date-picker", (0, _babelHelperVueJsxMergeProps.default)([{}, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, attr), {}, {
                props: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
                  value: !row[item.field] ? null : row[item.field].format ? row[item.field] : (0, _moment.default)(row[item.field])
                }),
                on: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, itemRender.on), ons)
              })]));
              break;

            case "ATimePicker":
              element = h("a-time-picker", (0, _babelHelperVueJsxMergeProps.default)([{}, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, attr), {}, {
                props: (0, _objectSpread2.default)((0, _objectSpread2.default)({
                  clearIcon: true
                }, props), {}, {
                  value: row[item.field],
                  disabled: disabled
                }),
                on: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, item.on), ons)
              })]));
              break;

            case "ASwitch":
              trueValue = props.trueValue ? props.trueValue : true;
              falseValue = props.falseValue ? props.falseValue : false;
              if (editSlotPropInit(row, props, "hidden", item.field)) return "";
              element = h("a-switch", (0, _babelHelperVueJsxMergeProps.default)([{}, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, attr), {}, {
                props: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
                  checked: row[item.field] == trueValue
                }),
                on: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, itemRender.on), ons), {}, {
                  change: function change(e) {
                    var value = e ? trueValue : falseValue;
                    row[item.field] = value;
                    row.ISEDIT = true;

                    if (itemRender.on && itemRender.on.change) {
                      itemRender.on.change(e, event);
                    }
                  }
                })
              })]));
              break;

            case "ACheckbox":
              trueValue = props.trueValue ? props.trueValue : true;
              falseValue = props.falseValue ? props.falseValue : false;
              if (editSlotPropInit(row, props, "hidden", item.field)) return "";
              element = h("a-checkbox", (0, _babelHelperVueJsxMergeProps.default)([{}, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, attr), {}, {
                props: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, props), {}, {
                  checked: row[item.field] == trueValue
                }),
                on: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, itemRender.on), ons), {}, {
                  change: function change(e) {
                    var value = e.target.checked ? trueValue : falseValue;
                    row[item.field] = value;
                    row.ISEDIT = true;

                    if (itemRender.on && itemRender.on.change) {
                      itemRender.on.change(e, event);
                    }
                  }
                })
              })]));
              break;
          }
        }

        return [element];
      };
    } // editSlotRender1(name) {
    //   let slot;
    //   switch (name) {
    //     case "AInput":
    //       slot = event => {
    //         let { columnIndex, row } = event;
    //         let item = this.tableColumns[columnIndex];
    //         let itemRender = item.itemRender || {};
    //         let props = itemRender.props || {};
    //         let disabled = editSlotPropInit(row, props, "disabled", item.field);
    //         if (typeof disabled == "object") {
    //           return [disabled];
    //         } else {
    //           event.field = item.field;
    //           return [
    //             <a-input
    //               {...{
    //                 props: {
    //                   size: this.editItemSize,
    //                   ...props,
    //                   value: row[item.field],
    //                   disabled
    //                 },
    //                 on: {
    //                   ...itemRender.on,
    //                   change: e => {
    //                     let value = e.target.value;
    //                     row[item.field] = value;
    //                     row.ISEDIT = true;
    //                     if (itemRender.on && itemRender.on.change) {
    //                       itemRender.on.change(e, event);
    //                     }
    //                   },
    //                   blur: e => {
    //                     if (itemRender.on && itemRender.on.blur) {
    //                       itemRender.on.blur(e, event);
    //                     }
    //                   },
    //                   keydown: e => {
    //                     if (itemRender.on && itemRender.on.keydown) {
    //                       itemRender.on.keydown(e, event);
    //                     }
    //                   }
    //                 },
    //                 style: {
    //                   ...itemRender.style
    //                 }
    //               }}
    //             />
    //           ];
    //         }
    //       };
    //       break;
    //     case "AInputNumber":
    //       slot = event => {
    //         let { columnIndex, row } = event;
    //         let item = this.tableColumns[columnIndex];
    //         let itemRender = item.itemRender || {};
    //         let props = itemRender.props || {};
    //         let disabled = editSlotPropInit(row, props, "disabled", item.field);
    //         if (typeof disabled == "object") {
    //           return [disabled];
    //         } else {
    //           event.field = item.field;
    //           return [
    //             <a-input-number
    //               {...{
    //                 style: itemRender.style,
    //                 props: {
    //                   size: this.editItemSize,
    //                   ...props,
    //                   value: row[item.field],
    //                   disabled,
    //                   max: editSlotPropInit(
    //                     row,
    //                     props,
    //                     "max",
    //                     item.field,
    //                     Infinity
    //                   ),
    //                   min: editSlotPropInit(
    //                     row,
    //                     props,
    //                     "min",
    //                     item.field,
    //                     -Infinity
    //                   )
    //                 },
    //                 on: {
    //                   ...itemRender.on,
    //                   change: e => {
    //                     let value = e;
    //                     row[item.field] = value;
    //                     row.ISEDIT = true;
    //                     if (itemRender.on && itemRender.on.change) {
    //                       itemRender.on.change(value, event);
    //                     }
    //                   },
    //                   blur: e => {
    //                     if (itemRender.on && itemRender.on.blur) {
    //                       itemRender.on.blur(e, event);
    //                     }
    //                   }
    //                 },
    //                 class: this.editSlotItemRender(itemRender.class, event)
    //               }}
    //             />
    //           ];
    //         }
    //       };
    //       break;
    //     case "ASelect":
    //       slot = ({ row, rowIndex, columnIndex }) => {
    //         let item = this.tableColumns[columnIndex];
    //         let itemRender = item.itemRender || {};
    //         let props = itemRender.props || {};
    //         let disabled = editSlotPropInit(row, props, "disabled", item.field);
    //         if (typeof disabled == "object") {
    //           return [disabled];
    //         } else {
    //           let optionsField = (props && props.optionsField) || "";
    //           let value = row[item.field];
    //           let options = optionsField
    //             ? row[optionsField]
    //             : this.editOptions[item.field];
    //           if (props.optionsFilter) {
    //             options = props.optionsFilter(cloneDeep(options), value);
    //           }
    //           props = this.selectFilterRender({
    //             size: this.editItemSize,
    //             ...config.defaultProps.select,
    //             ...itemRender.props,
    //             value,
    //             options: options,
    //             disabled
    //           });
    //           return [
    //             <a-select
    //               {...{
    //                 props,
    //                 style: {
    //                   width: "100%",
    //                   ...itemRender.style
    //                 },
    //                 on: {
    //                   ...itemRender.on,
    //                   change: (value, option) => {
    //                     row[item.field] = value;
    //                     row.ISEDIT = true;
    //                     if (itemRender.on && itemRender.on.change) {
    //                       itemRender.on.change(value, option, {
    //                         row,
    //                         rowIndex,
    //                         options,
    //                         field: item.field
    //                       });
    //                     }
    //                   },
    //                   blur: e => {
    //                     if (itemRender.on && itemRender.on.blur) {
    //                       itemRender.on.blur(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   }
    //                 }
    //               }}
    //             />
    //           ];
    //         }
    //       };
    //       break;
    //     case "AAutoComplete":
    //       slot = ({ row, rowIndex, columnIndex }) => {
    //         let item = this.tableColumns[columnIndex];
    //         let itemRender = item.itemRender || {};
    //         let props = itemRender.props || {};
    //         let disabled = editSlotPropInit(row, props, "disabled", item.field);
    //         if (typeof disabled == "object") {
    //           return [disabled];
    //         } else {
    //           let optionsField = (props && props.optionsField) || "";
    //           let options = optionsField
    //             ? row[optionsField]
    //             : this.editOptions[item.field];
    //           let value = row[item.field];
    //           if (props.optionsFilter) {
    //             options = props.optionsFilter(cloneDeep(options), value);
    //           }
    //           let filterData = this.autoCompleteFilterRender(
    //             {
    //               size: this.editItemSize,
    //               ...itemRender.props,
    //               value,
    //               dataSource: options || [],
    //               disabled
    //             },
    //             row
    //           );
    //           let selectOptions = filterData.selectOptions;
    //           let dataSource = filterData.dataSource;
    //           props = filterData.props;
    //           return [
    //             <a-auto-complete
    //               {...{
    //                 props,
    //                 style: {
    //                   width: "100%",
    //                   ...itemRender.style
    //                 },
    //                 on: {
    //                   ...itemRender.on,
    //                   change: value => {
    //                     row[item.field] = value;
    //                     row.ISEDIT = true;
    //                     if (itemRender.on && itemRender.on.change) {
    //                       itemRender.on.change(value, row, item.field);
    //                     }
    //                   },
    //                   select: value => {
    //                     let optionRow = this.findOptionRow(
    //                       dataSource,
    //                       value,
    //                       filterData.valueField
    //                     );
    //                     row[item.field] =
    //                       optionRow[filterData.labelField] || value;
    //                     row.ISEDIT = true;
    //                     if (itemRender.on && itemRender.on.select) {
    //                       itemRender.on.select(value, optionRow, {
    //                         row,
    //                         rowIndex,
    //                         dataSource,
    //                         field: item.field
    //                       });
    //                     }
    //                   },
    //                   blur: e => {
    //                     if (itemRender.on && itemRender.on.blur) {
    //                       itemRender.on.blur(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   }
    //                 }
    //               }}
    //             >
    //               <template {...{ slot: "dataSource" }}>
    //                 {selectOptions}
    //               </template>
    //             </a-auto-complete>
    //           ];
    //         }
    //       };
    //       break;
    //     case "ADatePicker":
    //       slot = ({ row, rowIndex, columnIndex }) => {
    //         let item = this.tableColumns[columnIndex];
    //         let itemRender = item.itemRender || {};
    //         let props = itemRender.props || {};
    //         let disabled = editSlotPropInit(row, props, "disabled", item.field);
    //         if (typeof disabled == "object") {
    //           return [disabled];
    //         } else {
    //           return [
    //             <a-date-picker
    //               {...{
    //                 props: {
    //                   size: this.editItemSize,
    //                   ...itemRender.props,
    //                   value: !row[item.field]
    //                     ? null
    //                     : row[item.field].format
    //                     ? row[item.field]
    //                     : moment(row[item.field]),
    //                   disabled
    //                 },
    //                 on: {
    //                   ...itemRender.on,
    //                   change: e => {
    //                     let value = e;
    //                     row[item.field] = value;
    //                     row.ISEDIT = true;
    //                     if (itemRender.on && itemRender.on.change) {
    //                       itemRender.on.change(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   },
    //                   blur: e => {
    //                     if (itemRender.on && itemRender.on.blur) {
    //                       itemRender.on.blur(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   }
    //                 },
    //                 style: {
    //                   ...itemRender.style
    //                 }
    //               }}
    //             />
    //           ];
    //         }
    //       };
    //       break;
    //     case "ATimePicker":
    //       slot = ({ row, rowIndex, columnIndex }) => {
    //         let item = this.tableColumns[columnIndex];
    //         let itemRender = item.itemRender || {};
    //         let props = itemRender.props || {};
    //         let disabled = editSlotPropInit(row, props, "disabled", item.field);
    //         if (typeof disabled == "object") {
    //           return [disabled];
    //         } else {
    //           return [
    //             <a-time-picker
    //               {...{
    //                 props: {
    //                   size: this.editItemSize,
    //                   clearIcon: true,
    //                   ...itemRender.props,
    //                   value: row[item.field],
    //                   disabled
    //                 },
    //                 on: {
    //                   ...item.on,
    //                   change: e => {
    //                     let value = e;
    //                     row[item.field] = value;
    //                     row.ISEDIT = true;
    //                     if (itemRender.on && itemRender.on.change) {
    //                       itemRender.on.change(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   },
    //                   blur: e => {
    //                     if (itemRender.on && itemRender.on.blur) {
    //                       itemRender.on.blur(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   }
    //                 },
    //                 style: {
    //                   ...itemRender.style
    //                 }
    //               }}
    //             />
    //           ];
    //         }
    //       };
    //       break;
    //     case "ASwitch":
    //       slot = ({ row, rowIndex, columnIndex }) => {
    //         let item = this.tableColumns[columnIndex];
    //         let itemRender = item.itemRender || {};
    //         let props = itemRender.props || {};
    //         let trueValue = props.trueValue ? props.trueValue : true;
    //         let falseValue = props.falseValue ? props.falseValue : false;
    //         if (editSlotPropInit(row, props, "hidden", item.field)) return "";
    //         let disabled = editSlotPropInit(row, props, "disabled", item.field);
    //         if (typeof disabled == "object") {
    //           return [disabled];
    //         } else {
    //           return [
    //             <a-switch
    //               {...{
    //                 props: {
    //                   size: this.editItemSize,
    //                   ...itemRender.props,
    //                   checked: row[item.field] == trueValue,
    //                   disabled
    //                 },
    //                 on: {
    //                   ...item.on,
    //                   change: e => {
    //                     let value = e ? trueValue : falseValue;
    //                     row[item.field] = value;
    //                     row.ISEDIT = true;
    //                     if (itemRender.on && itemRender.on.change) {
    //                       itemRender.on.change(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   },
    //                   blur: e => {
    //                     if (itemRender.on && itemRender.on.blur) {
    //                       itemRender.on.blur(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   }
    //                 },
    //                 style: {
    //                   ...itemRender.style
    //                 }
    //               }}
    //             />
    //           ];
    //         }
    //       };
    //       break;
    //     case "ACheckbox":
    //       slot = ({ row, rowIndex, columnIndex }) => {
    //         let item = this.tableColumns[columnIndex];
    //         let itemRender = item.itemRender || {};
    //         let props = itemRender.props || {};
    //         let trueValue = props.trueValue ? props.trueValue : true;
    //         let falseValue = props.falseValue ? props.falseValue : false;
    //         if (editSlotPropInit(row, props, "hidden", item.field)) return "";
    //         let disabled = editSlotPropInit(row, props, "disabled", item.field);
    //         if (typeof disabled == "object") {
    //           return [disabled];
    //         } else {
    //           return [
    //             <a-checkbox
    //               {...{
    //                 props: {
    //                   size: this.editItemSize,
    //                   ...itemRender.props,
    //                   checked: row[item.field] == trueValue,
    //                   disabled
    //                 },
    //                 on: {
    //                   ...item.on,
    //                   change: e => {
    //                     let value = e.target.checked ? trueValue : falseValue;
    //                     row[item.field] = value;
    //                     row.ISEDIT = true;
    //                     if (itemRender.on && itemRender.on.change) {
    //                       itemRender.on.change(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   },
    //                   blur: e => {
    //                     if (itemRender.on && itemRender.on.blur) {
    //                       itemRender.on.blur(e, {
    //                         row,
    //                         rowIndex,
    //                         field: item.field
    //                       });
    //                     }
    //                   }
    //                 },
    //                 style: {
    //                   ...itemRender.style
    //                 }
    //               }}
    //             />
    //           ];
    //         }
    //       };
    //       break;
    //   }
    //   return slot;
    // }

  }
};
var _default = editRender;
exports.default = _default;