export default (function () {
  function t() {
    this.name = 'lineHeight' // 重写的参数 key
  }
  // 涉及修改元素样式， 添加一个 css 方法
  return (
    (t.prototype.css = function (t, e) {
      if (t && t.length) {
        if (e) return (t.css('line-height', e + 'pt'), 'line-height:' + e + 'pt')
        t[0].style.lineHeight = ''
      }
      return null
    }),
    // 创建 DOM：改成 input + datalist 可输入选择
    (t.prototype.createTarget = function (printElement, options, printElementType) {
      let list = [
        5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
        30
      ]
      // 生成下拉选项列表
      let optionList = ''
      list.forEach(function (e) {
        optionList += `<option value="${e}">${e}pt</option>`
      })

      // DOM 结构：input + datalist
      this.target = $(`
      <div class="hiprint-option-item hiprint-option-item-row">
        <div class="hiprint-option-item-label">字体行高</div>
        <div class="hiprint-option-item-field">
          <!-- 输入框 -->
          <div class="font-size-input-container" style="display: flex; align-items: center;">
            <input class="auto-submit font-size-input" type="number" step="1" list="list" placeholder="输入或选择">
            <span class="font-size-unit" style="margin-left: 5px;">pt</span>
          </div>
          <!-- 下拉选项列表 -->
          <datalist id="list">
            <option value="">默认</option>
            ${optionList}
          </datalist>
        </div>
      </div>
    `)
      return this.target
    }),
    // 获取值（兼容 input）
    (t.prototype.getValue = function () {
      var val = this.target.find('input').val()
      if (val) {
        const num = parseFloat(val.toString())
        return isNaN(num) ? '' : num
      }
      return ''
    }),
    // 设置值（兼容 input）
    (t.prototype.setValue = function (t) {
      if (t || t === 0) {
        this.target.find('input').val(t)
      }
    }),
    // 销毁 DOM
    (t.prototype.destroy = function () {
      this.target.remove()
    }),
    t
  )
})()