import { isVNode as _isVNode, createVNode as _createVNode, resolveComponent as _resolveComponent } from "vue";
import { translate } from '@jdlinker/utils';
function _isSlot(s) {
  return typeof s === 'function' || Object.prototype.toString.call(s) === '[object Object]' && !_isVNode(s);
}
export const createInputTextEditor = function (propName, propLabelKey) {
  return {
    props: {
      optionModel: Object
    },
    render() {
      return _createVNode(_resolveComponent("el-form-item"), {
        "label": translate(propLabelKey)
      }, {
        default: () => [_createVNode(_resolveComponent("el-input"), {
          "type": "text",
          "modelValue": this.optionModel[propName],
          "onUpdate:modelValue": $event => this.optionModel[propName] = $event
        }, null)]
      });
    }
  };
};
export const createInputNumberEditor = function (propName, propLabelKey) {
  return {
    props: {
      optionModel: Object
    },
    methods: {
      updateValue(newValue) {
        if (newValue === undefined || newValue === null || isNaN(newValue)) {
          this.optionModel[propName] = null;
        } else {
          this.optionModel[propName] = Number(newValue);
        }
      }
    },
    render() {
      return _createVNode(_resolveComponent("el-form-item"), {
        "label": translate(propLabelKey)
      }, {
        default: () => [_createVNode(_resolveComponent("el-input-number"), {
          "type": "text",
          "modelValue": this.optionModel[propName],
          "onUpdate:modelValue": $event => this.optionModel[propName] = $event,
          "onChange": this.updateValue,
          "style": "width: 100%"
        }, null)]
      });
    }
  };
};
export const createBooleanEditor = function (propName, propLabelKey) {
  return {
    props: {
      optionModel: Object
    },
    render() {
      return _createVNode(_resolveComponent("el-form-item"), {
        "label": translate(propLabelKey)
      }, {
        default: () => [_createVNode(_resolveComponent("el-switch"), {
          "modelValue": this.optionModel[propName],
          "onUpdate:modelValue": $event => this.optionModel[propName] = $event
        }, null)]
      });
    }
  };
};
export const createCheckboxGroupEditor = function (propName, propLabelKey, configs) {
  return {
    props: {
      optionModel: Object
    },
    render() {
      let _slot;
      return _createVNode(_resolveComponent("el-form-item"), {
        "label": translate(propLabelKey)
      }, {
        default: () => [_createVNode(_resolveComponent("el-checkbox-group"), {
          "modelValue": this.optionModel[propName],
          "onUpdate:modelValue": $event => this.optionModel[propName] = $event
        }, _isSlot(_slot = configs.optionItems.map(item => {
          return _createVNode(_resolveComponent("el-checkbox"), {
            "label": item.value
          }, {
            default: () => [item.label]
          });
        })) ? _slot : {
          default: () => [_slot]
        })]
      });
    }
  };
};
export const createRadioGroupEditor = function (propName, propLabelKey, configs) {
  return {
    props: {
      optionModel: Object
    },
    render() {
      let _slot2;
      return _createVNode(_resolveComponent("el-form-item"), {
        "label": translate(propLabelKey)
      }, {
        default: () => [_createVNode(_resolveComponent("el-radio-group"), {
          "modelValue": this.optionModel[propName],
          "onUpdate:modelValue": $event => this.optionModel[propName] = $event
        }, _isSlot(_slot2 = configs.optionItems.map(item => {
          return _createVNode(_resolveComponent("el-radio"), {
            "label": item.value
          }, {
            default: () => [item.label]
          });
        })) ? _slot2 : {
          default: () => [_slot2]
        })]
      });
    }
  };
};
export const createRadioButtonGroupEditor = function (propName, propLabelKey, configs) {
  return {
    props: {
      optionModel: Object
    },
    render() {
      let _slot3;
      return _createVNode(_resolveComponent("el-form-item"), {
        "label": translate(propLabelKey)
      }, {
        default: () => [_createVNode(_resolveComponent("el-radio-group"), {
          "modelValue": this.optionModel[propName],
          "onUpdate:modelValue": $event => this.optionModel[propName] = $event
        }, _isSlot(_slot3 = configs.optionItems.map(item => {
          return _createVNode(_resolveComponent("el-radio-button"), {
            "label": item.value
          }, {
            default: () => [item.label]
          });
        })) ? _slot3 : {
          default: () => [_slot3]
        })]
      });
    }
  };
};
export const createSelectEditor = function (propName, propLabelKey, configs) {
  return {
    props: {
      optionModel: Object
    },
    render() {
      let _slot4;
      return _createVNode(_resolveComponent("el-form-item"), {
        "label": translate(propLabelKey)
      }, {
        default: () => [_createVNode(_resolveComponent("el-select"), {
          "modelValue": this.optionModel[propName],
          "onUpdate:modelValue": $event => this.optionModel[propName] = $event
        }, _isSlot(_slot4 = configs.optionItems.map(item => {
          return _createVNode(_resolveComponent("el-option"), {
            "label": item.label,
            "value": item.value
          }, null);
        })) ? _slot4 : {
          default: () => [_slot4]
        })]
      });
    }
  };
};
export const createEventHandlerEditor = function (eventPropName, eventParams) {
  return {
    props: {
      optionModel: Object
    },
    methods: {
      editEventHandler() {
        this.dispatch('SettingPanel', 'editEventHandler', [eventPropName, [...eventParams]]);
      }
    },
    render() {
      let _slot5;
      return _createVNode(_resolveComponent("el-form-item"), {
        "label": eventPropName,
        "label-width": "150px"
      }, {
        default: () => [_createVNode(_resolveComponent("el-button"), {
          "type": "info",
          "icon": "el-icon-edit",
          "plain": true,
          "round": true,
          "onClick": this.editEventHandler
        }, _isSlot(_slot5 = translate('designer.setting.addEventHandler')) ? _slot5 : {
          default: () => [_slot5]
        })]
      });
    }
  };
};
export const createEmptyEditor = function () {
  return {
    render() {
      return _createVNode("div", {
        "style": "display: none"
      }, null);
    }
  };
};