export default (function (settingOptions) {
  function t() {
    // json模板 options 对应键值 key
    this.name = "fontStyle";
  }
  // 涉及修改元素样式， 添加一个 css 方法
  // t: 元素对象， e 参数值
  return t.prototype.css = function (t, e) {
    if (t && t.length) {
      if (e) return t.css({
        fontStyle: e
      });
    }
    return null;
  },
  // 创建 DOM
  t.prototype.createTarget = function (printElement, options, printElementType) {
    const input = `<input type="number" class="auto-submit"/>`;
    const select = `<select class="auto-submit"></select>`;
    this.target = $(`
      <div class="hiprint-option-item hiprint-option-item-row">
        <div class="hiprint-option-item-label">字形</div>
        <div class="hiprint-option-item-field">
          ${ settingOptions.isInput ? input : select }
        </div>
      </div>
    `);
    if (!settingOptions.isInput) {
      let fontStyleList = '';
      settingOptions.fontStyleList.forEach(function(e) {
        fontStyleList += '<option value="' + e.fontStyle + '">' + e.fontStyleName + '</option>';
      });
      this.target.find('.auto-submit').append($(fontStyleList));
    }
    return  this.target;
  },
  // 获取值
  t.prototype.getValue = function () {
    var t = this.target.find("input").val();
    if (settingOptions.isInput) {
      t = this.target.find('input').val();
    } else {
      t = this.target.find('select').val();
    }
    if (t) return parseFloat(t.toString());
  },
  // 设置值
  t.prototype.setValue = function (t) { //  t: options 对应键的值
    if (settingOptions.isInput) {
      this.target.find('input').val(t);
    } else {
      t && (this.target.find('option[value="' + t + '"]').length || this.target.find('select').prepend('<option value="' + t + '" >' + t + '</option>'));
      this.target.find('select').val(t);
    }
  },
  // 销毁 DOM
  t.prototype.destroy = function () {
    this.target.remove();
  }, t;
}())