{"version":3,"sources":["jsdelivr-header.js","/npm/@opentiny/vue-grid@3.29.0/lib/index.js"],"names":[],"mappings":"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","file":"/npm/@opentiny/vue-grid@3.29.0/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@opentiny/vue-grid@3.29.0/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { t } from '@opentiny/vue-locale';\nimport '@opentiny/vue-theme/grid/index.css';\nimport { Interceptor, StoreMap } from '@opentiny/vue-renderless/grid/core';\nimport { debounce, PopupManager, PopperJS, extend, browserInfo, isObject, isEmptyObject, isServer, throttle, addClass, removeClass, getDataset, random, isNull, getActualTarget, fastdom, toDecimal, logger, tryToCurrency, tryToDecimal, tryToInt, toFileSize, truncate, toRate, isNumber as isNumber$1, toBoolValue, toDate, getDateWithNewTimezone, isDate, formatDateByPattern, toDateStr, on, Validator as Validator$1, getObj, getStyle, preventDefault, off, callInterceptor, hasClass } from '@opentiny/utils';\nimport { iconError, iconSortTriangleDescending, iconSortTriangleAscending, iconSortTriangle, iconUnfilter, iconEdit, iconConmentRefresh, iconMinscreen, iconFullscreen, iconSetting, iconChevronRight, iconChevronDown, iconGridNoData, iconRadio, iconRadioselected, iconSearch, iconCheckedSur, iconCheck, iconHalfselect, iconArrowBottom, IconEllipsis, iconClose, iconYes, iconExpand, iconPutAway, iconEllipsis, iconMarkOn } from '@opentiny/vue-icon';\nimport { $prefix, hooks, defineComponent, h, $install, isVue2, isVnode, $props, mergeClass, resolveTheme, useInstanceSlots, useRelation, emitter, resolveMode, useBreakpoint, setup as setup$1 } from '@opentiny/vue-common';\nimport { uniqueId, toNumber as toNumber$1, isBoolean, each, isObject as isObject$1, isFunction, isArray, findIndexOf, get, set, clone, clear, destructuring, mapTree, eachTree, has, isUndefined, isEqual, find as find$1, filterTree, arrayEach, isNumber, findTree as findTree$1, sum, template, assign, objectMap, sortBy, isString, remove, toStringJSON, toArray, arrayIndexOf } from '@opentiny/vue-renderless/grid/static/';\nimport { getFuncText, getDomNode, getRowid, getEventTargetNode, isScale, emitEvent, hasChildrenList, getListeners, getOffsetPos, getFilters, getColumnConfig, formatText, getRowkey, getRowUniqueId, setCellValue, getColumnList, repairFixed, rowToVisible, colToVisible, getCell, assemColumn, GlobalEvent, getCellValue, updateCellTitle, isPx, getClass, getRowNodes, getCellNodeIndex } from '@opentiny/vue-renderless/grid/utils';\nimport Tooltip$1 from '@opentiny/vue-tooltip';\nimport { createVNode, mergeProps, isVNode, createTextVNode, resolveComponent, openBlock, createElementBlock, normalizeClass, createBlock, createCommentVNode, normalizeStyle, Fragment, renderList } from 'vue';\nimport { toNumber, findTree, find, isEqual as isEqual$1, arrayEach as arrayEach$1 } from '@opentiny/vue-renderless/grid/static';\nimport { AutoTip } from '@opentiny/vue-directive';\nimport Button from '@opentiny/vue-button';\nimport Loading$1 from '@opentiny/vue-loading';\nimport Dropdown from '@opentiny/vue-dropdown';\nimport DropdownMenu from '@opentiny/vue-dropdown-menu';\nimport DropdownItem from '@opentiny/vue-dropdown-item';\nimport Exception from '@opentiny/vue-exception';\nimport Tag from '@opentiny/vue-tag';\nimport Methods$g from '@opentiny/vue-renderless/grid/plugins/export';\nimport Resize$1 from '@opentiny/vue-renderless/grid/plugins/resize';\nimport Modal from '@opentiny/vue-modal';\nimport Pager$1 from '@opentiny/vue-pager';\n\nfunction _createForOfIteratorHelperLoose$1(r, e) {\n  var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (t) return (t = t.call(r)).next.bind(t);\n  if (Array.isArray(r) || (t = _unsupportedIterableToArray$1(r)) || e && r && \"number\" == typeof r.length) {\n    t && (r = t);\n    var o = 0;\n    return function() {\n      return o >= r.length ? { done: true } : { done: false, value: r[o++] };\n    };\n  }\n  throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray$1(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return _arrayLikeToArray$1(r, a);\n    var t = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray$1(r, a) : void 0;\n  }\n}\nfunction _arrayLikeToArray$1(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nvar _export_sfc = function _export_sfc2(sfc, props) {\n  var target = sfc.__vccOpts || sfc;\n  for (var _iterator = _createForOfIteratorHelperLoose$1(props), _step; !(_step = _iterator()).done; ) {\n    var _step$value = _step.value, key = _step$value[0], val = _step$value[1];\n    target[key] = val;\n  }\n  return target;\n};\n\nvar _excluded = [\"input\", \"change\"], _excluded2 = [\"field\"];\nfunction _defineProperties(e, r) {\n  for (var t2 = 0; t2 < r.length; t2++) {\n    var o = r[t2];\n    o.enumerable = o.enumerable || false, o.configurable = true, \"value\" in o && (o.writable = true), Object.defineProperty(e, _toPropertyKey(o.key), o);\n  }\n}\nfunction _createClass(e, r, t2) {\n  return r && _defineProperties(e.prototype, r), t2 && _defineProperties(e, t2), Object.defineProperty(e, \"prototype\", { writable: false }), e;\n}\nfunction _toPropertyKey(t2) {\n  var i = _toPrimitive(t2, \"string\");\n  return \"symbol\" == typeof i ? i : i + \"\";\n}\nfunction _toPrimitive(t2, r) {\n  if (\"object\" != typeof t2 || !t2) return t2;\n  var e = t2[Symbol.toPrimitive];\n  if (void 0 !== e) {\n    var i = e.call(t2, r || \"default\");\n    if (\"object\" != typeof i) return i;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (\"string\" === r ? String : Number)(t2);\n}\nfunction _regenerator() {\n  /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */\n  var e, t2, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\";\n  function i(r2, n2, o2, i2) {\n    var c2 = n2 && n2.prototype instanceof Generator ? n2 : Generator, u2 = Object.create(c2.prototype);\n    return _regeneratorDefine2(u2, \"_invoke\", (function(r3, n3, o3) {\n      var i3, c3, u3, f2 = 0, p = o3 || [], y = false, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d2(t3, r4) {\n        return i3 = t3, c3 = 0, u3 = e, G.n = r4, a;\n      } };\n      function d(r4, n4) {\n        for (c3 = r4, u3 = n4, t2 = 0; !y && f2 && !o4 && t2 < p.length; t2++) {\n          var o4, i4 = p[t2], d2 = G.p, l = i4[2];\n          r4 > 3 ? (o4 = l === n4) && (u3 = i4[(c3 = i4[4]) ? 5 : (c3 = 3, 3)], i4[4] = i4[5] = e) : i4[0] <= d2 && ((o4 = r4 < 2 && d2 < i4[1]) ? (c3 = 0, G.v = n4, G.n = i4[1]) : d2 < l && (o4 = r4 < 3 || i4[0] > n4 || n4 > l) && (i4[4] = r4, i4[5] = n4, G.n = l, c3 = 0));\n        }\n        if (o4 || r4 > 1) return a;\n        throw y = true, n4;\n      }\n      return function(o4, p2, l) {\n        if (f2 > 1) throw TypeError(\"Generator is already running\");\n        for (y && 1 === p2 && d(p2, l), c3 = p2, u3 = l; (t2 = c3 < 2 ? e : u3) || !y; ) {\n          i3 || (c3 ? c3 < 3 ? (c3 > 1 && (G.n = -1), d(c3, u3)) : G.n = u3 : G.v = u3);\n          try {\n            if (f2 = 2, i3) {\n              if (c3 || (o4 = \"next\"), t2 = i3[o4]) {\n                if (!(t2 = t2.call(i3, u3))) throw TypeError(\"iterator result is not an object\");\n                if (!t2.done) return t2;\n                u3 = t2.value, c3 < 2 && (c3 = 0);\n              } else 1 === c3 && (t2 = i3.return) && t2.call(i3), c3 < 2 && (u3 = TypeError(\"The iterator does not provide a '\" + o4 + \"' method\"), c3 = 1);\n              i3 = e;\n            } else if ((t2 = (y = G.n < 0) ? u3 : r3.call(n3, G)) !== a) break;\n          } catch (t3) {\n            i3 = e, c3 = 1, u3 = t3;\n          } finally {\n            f2 = 1;\n          }\n        }\n        return { value: t2, done: y };\n      };\n    })(r2, o2, i2), true), u2;\n  }\n  var a = {};\n  function Generator() {\n  }\n  function GeneratorFunction() {\n  }\n  function GeneratorFunctionPrototype() {\n  }\n  t2 = Object.getPrototypeOf;\n  var c = [][n] ? t2(t2([][n]())) : (_regeneratorDefine2(t2 = {}, n, function() {\n    return this;\n  }), t2), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c);\n  function f(e2) {\n    return Object.setPrototypeOf ? Object.setPrototypeOf(e2, GeneratorFunctionPrototype) : (e2.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e2, o, \"GeneratorFunction\")), e2.prototype = Object.create(u), e2;\n  }\n  return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function() {\n    return this;\n  }), _regeneratorDefine2(u, \"toString\", function() {\n    return \"[object Generator]\";\n  }), (_regenerator = function _regenerator2() {\n    return { w: i, m: f };\n  })();\n}\nfunction _regeneratorDefine2(e, r, n, t2) {\n  var i = Object.defineProperty;\n  try {\n    i({}, \"\", {});\n  } catch (e2) {\n    i = 0;\n  }\n  _regeneratorDefine2 = function _regeneratorDefine(e2, r2, n2, t3) {\n    function o(r3, n3) {\n      _regeneratorDefine2(e2, r3, function(e3) {\n        return this._invoke(r3, n3, e3);\n      });\n    }\n    r2 ? i ? i(e2, r2, { value: n2, enumerable: !t3, configurable: !t3, writable: !t3 }) : e2[r2] = n2 : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2));\n  }, _regeneratorDefine2(e, r, n, t2);\n}\nfunction asyncGeneratorStep(n, t2, e, r, o, a, c) {\n  try {\n    var i = n[a](c), u = i.value;\n  } catch (n2) {\n    return void e(n2);\n  }\n  i.done ? t2(u) : Promise.resolve(u).then(r, o);\n}\nfunction _asyncToGenerator(n) {\n  return function() {\n    var t2 = this, e = arguments;\n    return new Promise(function(r, o) {\n      var a = n.apply(t2, e);\n      function _next(n2) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n2);\n      }\n      function _throw(n2) {\n        asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n2);\n      }\n      _next(void 0);\n    });\n  };\n}\nfunction _createForOfIteratorHelperLoose(r, e) {\n  var t2 = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"];\n  if (t2) return (t2 = t2.call(r)).next.bind(t2);\n  if (Array.isArray(r) || (t2 = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) {\n    t2 && (r = t2);\n    var o = 0;\n    return function() {\n      return o >= r.length ? { done: true } : { done: false, value: r[o++] };\n    };\n  }\n  throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _unsupportedIterableToArray(r, a) {\n  if (r) {\n    if (\"string\" == typeof r) return _arrayLikeToArray(r, a);\n    var t2 = {}.toString.call(r).slice(8, -1);\n    return \"Object\" === t2 && r.constructor && (t2 = r.constructor.name), \"Map\" === t2 || \"Set\" === t2 ? Array.from(r) : \"Arguments\" === t2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t2) ? _arrayLikeToArray(r, a) : void 0;\n  }\n}\nfunction _arrayLikeToArray(r, a) {\n  (null == a || a > r.length) && (a = r.length);\n  for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];\n  return n;\n}\nfunction _objectWithoutPropertiesLoose(r, e) {\n  if (null == r) return {};\n  var t2 = {};\n  for (var n in r) if ({}.hasOwnProperty.call(r, n)) {\n    if (-1 !== e.indexOf(n)) continue;\n    t2[n] = r[n];\n  }\n  return t2;\n}\nfunction _extends() {\n  return _extends = Object.assign ? Object.assign.bind() : function(n) {\n    for (var e = 1; e < arguments.length; e++) {\n      var t2 = arguments[e];\n      for (var r in t2) ({}).hasOwnProperty.call(t2, r) && (n[r] = t2[r]);\n    }\n    return n;\n  }, _extends.apply(null, arguments);\n}\nvar GlobalConfig$1 = {\n  validConfig: {\n    message: \"tooltip\",\n    highlightError: false,\n    icon: iconError()\n  },\n  editConfig: {\n    trigger: \"click\",\n    mode: \"cell\",\n    showStatus: true,\n    validateOnActive: true\n  },\n  // 默认开启点击头部单元格触发排序\n  sortConfig: {\n    multipleColumnSort: false\n  },\n  // 默认不开启隔行换色和行高亮，不暴露此配置\n  stripe: false,\n  // saas下默认不开启隔行换色和行高亮\n  stripeSaas: false,\n  // saas下默认开启下划线\n  borderSaas: true,\n  // saas下通过borderVertical开启边框竖线\n  borderVertical: false,\n  // 鼠标移入表格行是否高亮显示\n  highlightHoverRow: true,\n  resizable: true,\n  // 操作列（type为index或radio或selection的列）默认不可拖动列宽\n  operationColumnResizable: false,\n  fit: true,\n  showHeader: true,\n  defaultTreeIndent: 16,\n  defaultTreeSpacing: 30,\n  rowId: \"_RID\",\n  // 行数据的唯一主键字段名\n  $rowIndex: Symbol(\"$rowIndex\"),\n  // 虚拟滚动处理后的行索引\n  version: 0,\n  // 版本号，对于某些带数据缓存的功能有用到，上升版本号可以用于重置数据\n  optimization: {\n    animat: true,\n    delayHover: 250,\n    scrollDelay: 60,\n    scrollX: {\n      gt: 100\n    },\n    scrollY: {\n      gt: 500\n    }\n  },\n  icon: {\n    sortAsc: iconSortTriangleDescending(),\n    sortDesc: iconSortTriangleAscending(),\n    sortDefault: iconSortTriangle(),\n    required: \"tiny-grid-required-icon\",\n    filter: iconUnfilter(),\n    edit: iconEdit(),\n    tree: \"tiny-grid-icon__caret-right\",\n    refresh: iconConmentRefresh(),\n    minscreen: iconMinscreen(),\n    fullscreen: iconFullscreen(),\n    custom: iconSetting(),\n    jumpPrev: \"tiny-grid-icon__d-arrow-left\",\n    jumpNext: \"tiny-grid-icon__d-arrow-right\",\n    prevPage: \"tiny-grid-icon__arrow-left\",\n    nextPage: \"tiny-grid-icon__arrow-right\",\n    zoomIn: \"tiny-grid-icon__zoomin\",\n    zoomOut: \"tiny-grid-icon__zoomout\",\n    modalClose: \"tiny-grid-icon__close\",\n    modalInfo: \"tiny-grid-icon__info\",\n    modalSuccess: \"tiny-grid-icon__success\",\n    modalWarning: \"tiny-grid-icon__warning\",\n    modalError: \"tiny-grid-icon__error\",\n    modalQuestion: \"tiny-grid-icon__question\",\n    modalLoading: \"tiny-grid-icon__refresh roll\",\n    caretBottom: \"tiny-grid-icon__caret-bottom\",\n    dropdownBottom: \"tiny-grid-icon__arrow-bottom\",\n    btnLoading: \"tiny-grid-icon__refresh roll\"\n  },\n  grid: {},\n  menu: {},\n  tooltip: {\n    trigger: \"hover\",\n    effect: \"light\"\n  },\n  pager: {},\n  toolbar: {\n    resizable: {\n      storage: false\n    },\n    buttons: []\n  },\n  modal: {\n    zIndex: 2e3,\n    minWidth: 340,\n    minHeight: 200,\n    lockView: true,\n    mask: true,\n    duration: 3e3,\n    marginSize: 10,\n    animat: true\n  },\n  i18n: function i18n(key) {\n    return key;\n  },\n  constant: {\n    insertedField: \"_$inserted\",\n    deletedField: \"_$deleted\",\n    asyncPrefix: \"_$async_\"\n  },\n  TINY_TABLE_CUSTOM_COLUMN_WIDTH: \"TINY_TABLE_CUSTOM_COLUMN_WIDTH\",\n  TINY_TABLE_CUSTOM_SETTING: \"TINY_TABLE_CUSTOM_SETTING\",\n  viewConfig: {\n    // 视图类型\n    DEFAULT: \"default\",\n    MF: \"mf\",\n    CARD: \"card\",\n    LIST: \"list\",\n    GANTT: \"gantt\",\n    CUSTOM: \"custom\",\n    // 移动优先视图下展示类型\n    MF_SHOW_LIST: \"list\",\n    MF_SHOW_CARD: \"card\",\n    // 在不同视图下表格模块的显示\n    toolbar: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden sm:block\"\n    },\n    pager: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden sm:block\"\n    },\n    columnAnchor: {\n      default: \"flex\",\n      mf: \"hidden sm:flex\",\n      card: \"hidden\"\n    },\n    hiddenColumn: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    tableHeader: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    emptyData: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    tableBody: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    tableFooter: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    fixedColumn: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    borderLine: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    resizeBar: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    gridLoading: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    tableWrapper: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    selectToolbar: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    mfTable: {\n      default: \"hidden\",\n      mf: \"block sm:hidden\",\n      card: \"block\"\n    },\n    footerBorder: {\n      default: \"block\",\n      mf: \"hidden sm:block\",\n      card: \"hidden\"\n    },\n    operButton: {\n      default: \"inline-block\",\n      mf: \"hidden sm:inline-block\",\n      card: \"hidden\"\n    }\n  },\n  themes: {\n    TINY: \"tiny\",\n    SAAS: \"saas\"\n  },\n  rowHeight: {\n    tiny: {\n      mini: 32,\n      small: 40,\n      default: 48,\n      medium: 52\n    },\n    saas: {\n      mini: 32,\n      small: 36,\n      default: 36,\n      medium: 40\n    }\n  },\n  headerRowHeight: {\n    tiny: {\n      mini: 28,\n      small: 32,\n      default: 40,\n      medium: 40\n    },\n    saas: {\n      mini: 32,\n      small: 36,\n      default: 36,\n      medium: 40\n    }\n  },\n  // 空数据最小表格高度\n  emptyMinHeight: 200,\n  columnLevelKey: \"ColumnLevelProvideKey\",\n  defaultColumnName: $prefix + \"GridColumn\"\n};\nfunction addListConfig() {\n  var viewConfig2 = GlobalConfig$1.viewConfig;\n  for (var _i = 0, _Object$keys = Object.keys(viewConfig2); _i < _Object$keys.length; _i++) {\n    var key = _Object$keys[_i];\n    if (typeof viewConfig2[key] === \"object\") {\n      viewConfig2[key].list = viewConfig2[key].card;\n      viewConfig2[key].gantt = viewConfig2[key].card;\n      viewConfig2[key].custom = viewConfig2[key].card;\n    }\n  }\n}\naddListConfig();\nvar setup = function setup2(options) {\n  if (options === void 0) {\n    options = {};\n  }\n  var icon = GlobalConfig$1.icon, menu = GlobalConfig$1.menu;\n  if (options.menu) {\n    menu = extend(true, {}, menu, options.menu);\n  }\n  if (options.icon) {\n    icon = extend(true, {}, icon, options.icon);\n  }\n  extend(true, GlobalConfig$1, options, {\n    icon,\n    menu\n  });\n};\nfunction getAttrs(_ref, params) {\n  var name = _ref.name, attrs = _ref.attrs;\n  var props = attrs;\n  if (typeof attrs === \"function\") {\n    props = attrs(params);\n  }\n  if (name === \"input\") {\n    props = _extends({\n      type: \"text\"\n    }, props);\n  }\n  return props;\n}\nvar isSyncCell = function isSyncCell2(renderOpts, params, context) {\n  return renderOpts.type === \"visible\" || context.$type === \"cell\";\n};\nfunction autoRefresh(renderOpts, params) {\n  var _renderOpts$refresh = renderOpts.refresh, refresh = _renderOpts$refresh === void 0 ? false : _renderOpts$refresh;\n  var $table = params.$table, row2 = params.row;\n  var _$table$editConfig = $table.editConfig, editConfig = _$table$editConfig === void 0 ? {} : _$table$editConfig;\n  return $table.isTemporaryRow(row2) || !editConfig.showStatus || typeof refresh === \"boolean\" && refresh || typeof refresh === \"function\" && refresh(params);\n}\nfunction getEvents(renderOpts, params, context) {\n  var _on;\n  var _renderOpts$component = renderOpts.component, component = _renderOpts$component === void 0 ? {} : _renderOpts$component, _renderOpts$events = renderOpts.events, events = _renderOpts$events === void 0 ? {} : _renderOpts$events;\n  var native = typeof component === \"string\";\n  var editorModel = component.model || {};\n  var type = component === \"select\" ? \"change\" : native ? \"input\" : editorModel.event || \"update:modelValue\";\n  var input = events.input, change = events.change, other = _objectWithoutPropertiesLoose(events, _excluded);\n  var $table = params.$table, column = params.column, row2 = params.row;\n  var model = column.model;\n  var on2 = (_on = {}, _on[type] = function(event) {\n    var cellValue = native ? event.target.value : event;\n    if (!isSyncCell(renderOpts, params, context)) {\n      model.update = true;\n      model.value = cellValue;\n    }\n    setCellValue(row2, column, cellValue);\n    Promise.resolve().then(function() {\n      $table.updateStatus(params, cellValue, renderOpts);\n    });\n    if (native) {\n      input && input.apply(null, [params].concat.apply(params, arguments));\n      change && change.apply(null, [params].concat.apply(params, arguments));\n    }\n    if (autoRefresh(renderOpts, params)) {\n      $table.editStore.editorAutoRefreshKey++;\n    }\n  }, _on);\n  var evts = native ? other : events;\n  var mapHandler = function mapHandler2(cb) {\n    return function() {\n      cb.apply(null, [params].concat.apply(params, arguments));\n    };\n  };\n  assign(on2, objectMap(evts, mapHandler));\n  return on2;\n}\nfunction renderOptions(h2, options, renderOpts, params, context) {\n  var _renderOpts$optionPro = renderOpts.optionProps, optionProps = _renderOpts$optionPro === void 0 ? {} : _renderOpts$optionPro;\n  var labelProp = optionProps.label || \"label\";\n  var valueProp = optionProps.value || \"value\";\n  var column = params.column, row2 = params.row;\n  var formatConfig = column.own.formatConfig;\n  var cellValue = isSyncCell(renderOpts, params, context) ? getCellValue(row2, column) : column.model.value;\n  if (!options && formatConfig && formatConfig.data) {\n    options = formatConfig.data;\n  }\n  var hasSelected = false;\n  var optionsList = options.map(function(item, index2) {\n    var selected = item.value === cellValue;\n    if (selected) {\n      hasSelected = true;\n    }\n    var attrs = {\n      domProps: {\n        value: item[valueProp],\n        selected\n      },\n      key: index2\n    };\n    return h2(\"option\", attrs, item[labelProp]);\n  });\n  if (options.length && !hasSelected) {\n    optionsList.unshift(h2(\"option\", {\n      style: \"display:none\",\n      selected: true\n    }, \"\"));\n  }\n  return optionsList;\n}\nfunction renderOptgroups(h2, options, params, context) {\n  var optionGroups = options.optionGroups, _options$optionGroupP = options.optionGroupProps, optionGroupProps = _options$optionGroupP === void 0 ? {} : _options$optionGroupP;\n  var groupLabel = optionGroupProps.label || \"label\";\n  var groupOptions = optionGroupProps.options || \"options\";\n  return optionGroups.map(function(group, key) {\n    var attrs = {\n      domProps: {\n        label: group[groupLabel]\n      },\n      key\n    };\n    var children = renderOptions(h2, group[groupOptions], options, params, context);\n    return h2(\"optgroup\", attrs, children);\n  });\n}\nfunction handleConfirmFilter(context, column, checked, item) {\n  var key = column.filterMultiple ? \"changeMultipleOption\" : \"changeRadioOption\";\n  var method = context[key];\n  method({}, checked, item);\n}\nfunction getFilterEvents(item, renderOpts, params, context) {\n  var _on2;\n  var events = renderOpts.events, name = renderOpts.name;\n  var column = params.column;\n  var type = name === \"select\" ? \"change\" : \"input\";\n  var on2 = (_on2 = {}, _on2[type] = function(event) {\n    item.data = event.target.value;\n    handleConfirmFilter(context, column, !!item.data, item);\n  }, _on2);\n  if (events) {\n    var mapHandler = function mapHandler2(cb) {\n      return function() {\n        cb.apply(null, [params].concat.apply(params, arguments));\n      };\n    };\n    assign(on2, objectMap(events, mapHandler));\n  }\n  return on2;\n}\nfunction defaultFilterRender(h2, renderOpts, params, context) {\n  var name = renderOpts.name;\n  var column = params.column;\n  var attrs = getAttrs(renderOpts, params);\n  return column.filters.map(function(item) {\n    var props = {\n      class: \"tiny-grid-default-\" + name,\n      attrs,\n      domProps: {\n        value: item.data\n      },\n      on: getFilterEvents(item, renderOpts, params, context)\n    };\n    return h2(name, props);\n  });\n}\nfunction defaultFilterMethod(_ref2) {\n  var option = _ref2.option, row2 = _ref2.row, column = _ref2.column;\n  var cellValue = get(row2, column.property);\n  var data7 = option.data;\n  return cellValue == data7;\n}\nfunction renderSelectEdit(h2, renderOpts, params, context) {\n  var column = params.column, $table = params.$table, row2 = params.row;\n  var editorKey = \"editor-\" + getRowid($table, row2) + \"-\" + column.id;\n  var props = {\n    ref: editorKey,\n    class: \"tiny-grid-default-select\",\n    on: getEvents(renderOpts, params, context)\n  };\n  var children = renderOpts.optionGroups ? renderOptgroups(h2, renderOpts, params, context) : renderOptions(h2, renderOpts.options, renderOpts, params, context);\n  return [h2(\"select\", props, children)];\n}\nfunction defaultEditRender(h2, renderOpts, params, context) {\n  var _extends2;\n  var $table = params.$table, column = params.column, row2 = params.row;\n  var _column$formatValue = column.formatValue, formatValue = _column$formatValue === void 0 ? function(_ref3) {\n    var cellValue2 = _ref3.cellValue;\n    return cellValue2;\n  } : _column$formatValue, own = column.own;\n  var formatOpt = own.formatConfig || {};\n  var children = renderOpts.children, _renderOpts$component2 = renderOpts.component, component = _renderOpts$component2 === void 0 ? {} : _renderOpts$component2;\n  var attrs = getAttrs(renderOpts, params);\n  var value = isSyncCell(renderOpts, params, context) ? getCellValue(row2, column) : column.model.value;\n  var cellValue = formatValue(_extends({\n    cellValue: value\n  }, params));\n  var isTag = ~[\"input\", \"textarea\", \"select\"].indexOf(component);\n  var editorModel = component.model || {};\n  var modelProps = typeof component === \"string\" ? \"value\" : editorModel.prop || \"modelValue\";\n  var editorKey = \"editor-\" + getRowid($table, row2) + \"-\" + column.id;\n  var key = row2[$table.rowId];\n  var options = {\n    ref: editorKey,\n    key,\n    class: isTag ? \"tiny-grid-default-\" + component : \"\",\n    attrs: _extends({\n      formatOpt,\n      options: formatOpt.data\n    }, attrs, (_extends2 = {}, _extends2[modelProps] = cellValue, _extends2)),\n    on: getEvents(renderOpts, params, context)\n  };\n  if (autoRefresh(renderOpts, params)) {\n    options.attrs.editorAutoRefreshKey = $table.editStore.editorAutoRefreshKey;\n  }\n  var slot = children ? children(_extends({\n    props: options\n  }, params), h2) : null;\n  var cell = [h2(hooks.toRaw(component), options, slot)];\n  return isTag ? cell : [h2(\"div\", {\n    class: \"tiny-grid-editor\"\n  }, cell)];\n}\nvar buildRenderMap = function buildRenderMap2() {\n  var renderMapInput = [[\"autofocus\", \"input\"], [\"renderEdit\", defaultEditRender], [\"renderDefault\", defaultEditRender], [\"renderFilter\", defaultFilterRender], [\"filterMethod\", defaultFilterMethod]];\n  var mapHandler = function mapHandler2(mapArr) {\n    var obj = {};\n    mapArr.forEach(function(item) {\n      return obj[item[0]] = item[1];\n    });\n    return obj;\n  };\n  var renderMap2 = {};\n  renderMap2.input = mapHandler(renderMapInput);\n  renderMapInput[0][1] = \"textarea\";\n  renderMap2.textarea = mapHandler(renderMapInput);\n  renderMapInput.splice(0, 1);\n  renderMapInput[0][1] = renderMapInput[1][1] = renderSelectEdit;\n  renderMapInput[2][1] = function(h2, renderOpts, params, context) {\n    var attrs = renderOpts.attrs;\n    var column = params.column;\n    return column.filters.map(function(item) {\n      var props = {\n        attrs,\n        class: \"tiny-grid-default-select\",\n        on: getFilterEvents(item, renderOpts, params, context)\n      };\n      var children = renderOpts.optionGroups ? renderOptgroups(h2, renderOpts, params) : renderOptions(h2, renderOpts.options, renderOpts, params);\n      return h2(\"select\", props, children);\n    });\n  };\n  renderMap2.select = mapHandler(renderMapInput);\n  return renderMap2;\n};\nvar renderMap = buildRenderMap();\nvar buildRenderer = function buildRenderer2() {\n  var Renderer2 = {};\n  Renderer2.mixin = function(map) {\n    each(map, function(options, name) {\n      return Renderer2.add(name, options);\n    });\n    return Renderer2;\n  };\n  Renderer2.get = function(name) {\n    return isObject$1(name) || isFunction(name) ? renderMap.input : renderMap[name] || null;\n  };\n  Renderer2.add = function(name, options) {\n    var renders;\n    var flag = name && options;\n    if (!flag) {\n      return Renderer2;\n    }\n    renders = renderMap[name];\n    if (renders) {\n      Object.assign(renders, options);\n    } else {\n      renderMap[name] = options;\n    }\n    return Renderer2;\n  };\n  Renderer2.delete = function(name) {\n    delete renderMap[name];\n    return Renderer2;\n  };\n  return Renderer2;\n};\nvar Renderer = buildRenderer();\nvar installedPlugins = [];\nvar Buttons = StoreMap;\nvar Menus = StoreMap;\nvar Grid$1 = {\n  use: function use(Plugin, options) {\n    if (Plugin && Plugin.install) {\n      if (!installedPlugins.includes(Plugin)) {\n        Plugin.install(this, options);\n        installedPlugins.push(Plugin);\n      }\n    }\n    return this;\n  },\n  setup,\n  interceptor: Interceptor,\n  renderer: Renderer,\n  buttons: Buttons,\n  menus: Menus,\n  _tooltip: true\n};\nvar handleClearEvent = function handleClearEvent2(params, event) {\n  if (params && params.$table) {\n    var getTarget = params.$table.getEventTargetNode;\n    var bodyEl = document.body;\n    if (getTarget(event, bodyEl, \"tiny-autocomplete-suggestion\").flag || getTarget(event, bodyEl, \"tiny-select-dropdown\").flag || getTarget(event, bodyEl, \"tiny-cascader__dropdown\").flag || getTarget(event, bodyEl, \"tiny-cascader-menus\").flag || getTarget(event, bodyEl, \"tiny-picker-panel\").flag || getTarget(event, bodyEl, \"tiny-popper\").flag || getTarget(event, bodyEl, \"tiny-dialog-box\").flag) {\n      return false;\n    }\n  }\n};\nGrid$1.interceptor.add(\"event.clear_actived\", handleClearEvent);\nGrid$1.interceptor.add(\"event.clear_filter\", handleClearEvent);\nvar outLog = function outLog2(type) {\n  return function(message, detail) {\n    var msg = \"[tiny-grid] \" + (GlobalConfig$1.i18n(message) || message);\n    if (detail) {\n      msg += \": \" + detail;\n    }\n    logger[type](msg);\n    return msg;\n  };\n};\nvar warn = outLog(\"warn\");\nvar error = outLog(\"error\");\nvar DateFormat = {\n  LONGDATETIME: \"yyyy-MM-dd hh:mm:ss\",\n  DATETIME: \"yyyy-MM-dd hh:mm\",\n  DATE: \"yyyy-MM-dd\",\n  LONGTIME: \"hh:mm:ss\",\n  TIME: \"hh:mm\",\n  YEARMONTH: \"yyyy-MM\"\n};\nvar dateFormat = function dateFormat2(value, formatString) {\n  var userFormat = _extends({\n    dateFormat: formatString\n  }, this.own.formatConfig);\n  if (value) {\n    if (typeof value === \"string\") {\n      if (userFormat.valueFormat) {\n        value = toDate(value, userFormat.valueFormat);\n      } else {\n        warn(\"ui.grid.error.missingValueFormat\");\n        if (isNaN(Date.parse(value))) {\n          return value;\n        }\n      }\n    } else if (typeof value === \"number\") {\n      value = new Date(value);\n    }\n  }\n  if (userFormat.isutc8) {\n    if (!value) {\n      return value;\n    }\n    var currentTimezone = 0 - (/* @__PURE__ */ new Date()).getTimezoneOffset() / 60;\n    var newDate = getDateWithNewTimezone(isDate(value) ? value : new Date(toDate(value)), currentTimezone, userFormat.timezone || 8);\n    return formatDateByPattern(newDate, userFormat.dateFormat);\n  }\n  return toDateStr(value, userFormat.dateFormat, userFormat.timezone);\n};\nvar Formatter = {\n  money: function money(value) {\n    var prefix = \"$\";\n    var format2 = _extends({\n      fraction: 2,\n      flag: prefix + \"{0}\"\n    }, this.own.formatConfig);\n    return tryToCurrency(value, format2.fraction, format2.flag, \"\");\n  },\n  enum: function _enum(value) {\n    var format2 = _extends({\n      label: \"label\",\n      value: \"value\"\n    }, this.own.formatConfig);\n    var data7 = Array.isArray(format2.data) && find$1(format2.data, function(item) {\n      return item[format2.value] === value;\n    });\n    return data7 ? data7[format2.label] : \"\";\n  },\n  select: function select(cellValue) {\n    var _this$editor = this.editor, options = _this$editor.options, optionGroups = _this$editor.optionGroups, _this$editor$optionPr = _this$editor.optionProps, optionProps = _this$editor$optionPr === void 0 ? {} : _this$editor$optionPr, _this$editor$optionGr = _this$editor.optionGroupProps, optionGroupProps = _this$editor$optionGr === void 0 ? {} : _this$editor$optionGr;\n    var format2 = this.own.formatConfig;\n    if (isNull(cellValue) || cellValue === \"\") {\n      return \"\";\n    }\n    var selectItem;\n    var labelProp = optionProps.label || \"label\";\n    var valueProp = optionProps.value || \"value\";\n    if (optionGroups) {\n      var groupOptions = optionGroupProps.options || \"options\";\n      for (var _index = 0; _index < optionGroups.length; _index++) {\n        selectItem = find$1(optionGroups[_index][groupOptions], function(item) {\n          return item[valueProp] === cellValue;\n        });\n        if (selectItem) {\n          break;\n        }\n      }\n      return selectItem ? selectItem[labelProp] : null;\n    } else {\n      if (!options && format2 && format2.async && format2.data) {\n        options = format2.data;\n      }\n      selectItem = find$1(options, function(item) {\n        return item[valueProp] === cellValue;\n      });\n      return selectItem ? selectItem[labelProp] : null;\n    }\n  },\n  number: function number(value) {\n    var format2 = _extends({\n      fraction: 2\n    }, this.own.formatConfig);\n    return tryToDecimal(value, format2.fraction, false, \"\");\n  },\n  integer: function integer(value) {\n    return tryToInt(value, \"\");\n  },\n  filesize: function filesize(value) {\n    var format2 = _extends({}, this.own.formatConfig);\n    return toFileSize(value, format2.unit, format2.currUnit);\n  },\n  date: function date(value) {\n    return dateFormat.call(this, value, DateFormat.DATE);\n  },\n  dateTime: function dateTime(value) {\n    return dateFormat.call(this, value, DateFormat.DATETIME);\n  },\n  longDateTime: function longDateTime(value) {\n    return dateFormat.call(this, value, DateFormat.LONGDATETIME);\n  },\n  time: function time(value) {\n    return dateFormat.call(this, value, DateFormat.TIME);\n  },\n  longTime: function longTime(value) {\n    return dateFormat.call(this, value, DateFormat.LONGTIME);\n  },\n  yearMonth: function yearMonth(value) {\n    return dateFormat.call(this, value, DateFormat.YEARMONTH);\n  },\n  ellipsis: function ellipsis(value) {\n    var format2 = _extends({}, this.own.formatConfig);\n    return function(h2) {\n      return h2(\"div\", {\n        class: \"data-ellipsis\"\n      }, [h2(\"span\", {\n        domProps: {\n          title: value\n        }\n      }, truncate(value, format2.len))]);\n    };\n  },\n  /**\n   * rate 渲染器的计算规则：\n   * 如果配置了 max，就按照 value / max 计算样式百分比，按照 value / 1 计算显示百分比；\n   * 如果未配置 max，就按照 value / total 计算样式百分比和显示百分比；\n   * @param {Number} value\n   * @returns Function\n   */\n  rate: function rate(value) {\n    var format2 = _extends({\n      fraction: 2,\n      total: 1,\n      section: [30, 60, 90]\n    }, this.own.formatConfig);\n    var rateMethod = format2.rateMethod;\n    var rate2;\n    var formatTotal = format2.total;\n    var getLengthRate = function getLengthRate2(value2, config2) {\n      var lengthRate2;\n      if (config2.max && typeof config2.max === \"number\" && typeof value2 === \"number\") {\n        formatTotal = 1;\n        lengthRate2 = toRate(value2 / config2.max, formatTotal, format2.fraction);\n      }\n      return lengthRate2;\n    };\n    var lengthRate = getLengthRate(value, format2);\n    if (typeof rateMethod === \"function\") {\n      rate2 = rateMethod.call(this, value, Object.assign({\n        formatTotal\n      }, format2));\n    } else {\n      rate2 = toRate(value, formatTotal, format2.fraction);\n    }\n    lengthRate = lengthRate || rate2;\n    var section = format2.section;\n    var css = \"\";\n    if (section) {\n      var rateValue = parseInt(lengthRate, 10);\n      if (!isNumber$1(rateValue)) {\n        return rate2;\n      }\n      if (rateValue === 100) {\n        css = \" tiny-grid__chart-completed\";\n      } else {\n        var cssMap = {\n          0: \" tiny-grid__chart-danger\",\n          1: \" tiny-grid__chart-warning\",\n          2: \" tiny-grid__chart-normal\"\n        };\n        Array.isArray(section) || (section = section.split(\",\"));\n        for (var i = 0; i < section.length; i++) {\n          if (rateValue < section[i]) {\n            css = cssMap[i];\n            break;\n          }\n        }\n      }\n    }\n    return function(h2) {\n      return h2(\"div\", {\n        class: \"tiny-grid__data-rate\"\n      }, [h2(\"div\", {\n        class: \"tiny-grid__rate-chart\" + css,\n        style: {\n          width: lengthRate\n        }\n      }), h2(\"span\", {\n        class: \"tiny-grid__rate-text\"\n      }, rate2)]);\n    };\n  },\n  boole: function boole(value) {\n    var defaultFormat = {\n      trueValue: true,\n      falseValue: false,\n      htmlView: true,\n      noFork: false\n    };\n    var format2 = Object.assign(defaultFormat, this.own.formatConfig);\n    var cellValue = !isNull(format2.trueValue) ? value === format2.trueValue : toBoolValue(value);\n    if (!format2.htmlView) {\n      return cellValue;\n    }\n    if (format2.noFork && !value) {\n      return \"\";\n    }\n    var icon = !cellValue ? iconClose() : iconYes();\n    return function(h2) {\n      return h2(\"div\", {\n        class: \"tiny-grid__data-boole\"\n      }, [h2(icon, {\n        class: [\"tiny-svg-size\", !cellValue ? \"icon-close\" : \"icon-yes\"]\n      })]);\n    };\n  }\n};\nfunction getRenderType(_ref4) {\n  var editor = _ref4.editor, formatConfig = _ref4.formatConfig, formatText2 = _ref4.formatText;\n  var renderType = formatText2 || formatConfig.type;\n  if (!renderType && editor && editor.component === \"select\") {\n    renderType = \"select\";\n  }\n  return renderType;\n}\nfunction getFormatData(_ref5) {\n  var $table = _ref5.$table, cacheFormat = _ref5.cacheFormat, row2 = _ref5.row;\n  var rest, formatData;\n  if (cacheFormat) {\n    rest = $table.fullDataRowMap.get(hooks.toRaw(row2));\n    formatData = rest.formatData;\n    if (!formatData) {\n      formatData = $table.fullDataRowMap.get(hooks.toRaw(row2)).formatData = {};\n    }\n  }\n  return {\n    rest,\n    formatData\n  };\n}\nfunction hasCacheValue(_ref6) {\n  var async = _ref6.async, cellValue = _ref6.cellValue, colid = _ref6.colid, formatData = _ref6.formatData, rest = _ref6.rest;\n  return rest && formatData[colid] && formatData[colid].value === cellValue && (!async || formatData[colid].label);\n}\nfunction notHasCacheVal(_ref7) {\n  var cellLabel = _ref7.cellLabel, cellValue = _ref7.cellValue, column = _ref7.column, formatText2 = _ref7.formatText, hasCacheVal = _ref7.hasCacheVal, params = _ref7.params, renderType = _ref7.renderType, row2 = _ref7.row;\n  if (!hasCacheVal) {\n    var cellText = row2[GlobalConfig$1.constant.insertedField + column.property];\n    var formatParams = {\n      cellValue\n    };\n    if (cellText) {\n      formatParams.cellLabel = cellText;\n    }\n    cellLabel = isString(renderType) ? Formatter[renderType].call(column, cellValue) : formatText2(Object.assign(formatParams, params));\n  }\n  return cellLabel;\n}\nfunction setFormatData(_ref8) {\n  var cellLabel = _ref8.cellLabel, cellValue = _ref8.cellValue, colid = _ref8.colid, formatData = _ref8.formatData;\n  if (formatData) {\n    formatData[colid] = {\n      value: cellValue,\n      label: cellLabel\n    };\n  }\n}\nvar getCellLabel = function getCellLabel2(row2, column, params) {\n  var formatText2 = column.formatText, editor = column.editor;\n  var _column$own$formatCon = column.own.formatConfig, formatConfig = _column$own$formatCon === void 0 ? {} : _column$own$formatCon;\n  var cellValue = getCellValue(row2, column);\n  var cellLabel = cellValue;\n  var renderType = getRenderType({\n    editor,\n    formatConfig,\n    formatText: formatText2\n  });\n  if (params && renderType) {\n    var $table = params.$table;\n    var colid = column.id;\n    var _column$own$formatCon2 = column.own.formatConfig, formatConfig2 = _column$own$formatCon2 === void 0 ? {} : _column$own$formatCon2;\n    var async = formatConfig2.async === true;\n    var cacheFormat = $table == null ? void 0 : $table.fullDataRowMap.has(hooks.toRaw(row2));\n    var _getFormatData = getFormatData({\n      $table,\n      cacheFormat,\n      row: row2\n    }), rest = _getFormatData.rest, formatData = _getFormatData.formatData;\n    var hasCacheVal = hasCacheValue({\n      async,\n      cellValue,\n      colid,\n      formatData,\n      rest\n    });\n    if (hasCacheVal) {\n      return formatData[colid].label;\n    }\n    cellLabel = notHasCacheVal({\n      cellLabel,\n      cellValue,\n      column,\n      formatText: formatText2,\n      hasCacheVal,\n      params,\n      renderType,\n      row: row2\n    });\n    setFormatData({\n      cellLabel,\n      cellValue,\n      colid,\n      formatData\n    });\n  }\n  return cellLabel;\n};\nvar index = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n  __proto__: null,\n  Formatter,\n  error,\n  getCellLabel,\n  warn\n}, Symbol.toStringTag, {\n  value: \"Module\"\n}));\nvar initDrag = function initDrag2(dndProxyElement, dndElements, config2) {\n  if (config2 === void 0) {\n    config2 = {};\n  }\n  if (dndElements instanceof NodeList) {\n    dndElements = Array.from(dndElements);\n  }\n  var onDragStart = function onDragStart2(e) {\n    if (canDrag(e)) {\n      e.dataTransfer.effectAllowed = \"move\";\n      startDrag(e, config2.dragStart);\n    }\n  };\n  var onDragOver = function onDragOver2(e) {\n    return preventDefault(e);\n  };\n  var onDragEnter = function onDragEnter2(e) {\n    if (canDrop(e)) {\n      addDropClass(e);\n    }\n  };\n  var onDragEnd = function onDragEnd2() {\n    removeDropClass();\n  };\n  var onDrop = function onDrop2(e) {\n    if (canDrop(e)) {\n      startDrop(e, config2.drop);\n    }\n  };\n  var groupNames = [];\n  var elGroups = [];\n  var elNodes = [];\n  var parentMap = /* @__PURE__ */ new WeakMap();\n  var childrenMap = /* @__PURE__ */ new WeakMap();\n  if (dndProxyElement) {\n    if (Array.isArray(dndElements) && dndElements.length > 0) {\n      dndElements.forEach(function(el) {\n        if (dndProxyElement.contains(el)) {\n          var draggable = el.getAttribute(\"draggable\") === \"true\";\n          var groupName = el.dataset && el.dataset[config2.groupKey || \"dndGroup\"] || \"\";\n          var dndId = el.dataset && el.dataset[config2.idKey || \"dndId\"];\n          var dndPid = el.dataset && el.dataset[config2.pidKey || \"dndPid\"];\n          if (draggable) {\n            var _index2 = groupNames.indexOf(groupName);\n            if (_index2 === -1) {\n              groupNames.push(groupName);\n              elGroups.push([el]);\n            } else {\n              elGroups[_index2].push(el);\n            }\n            elNodes.push({\n              dndId,\n              dndPid,\n              el\n            });\n            childrenMap.set(el, []);\n          }\n        }\n      });\n      elNodes.forEach(function(_ref9) {\n        _ref9.dndId; var dndPid = _ref9.dndPid, el = _ref9.el;\n        if (dndPid) {\n          var parent = elNodes.find(function(elNode) {\n            return elNode.dndId === dndPid;\n          }).el;\n          parentMap.set(el, parent);\n          childrenMap.get(parent).push(el);\n        } else {\n          parentMap.set(el, null);\n        }\n      });\n      elNodes.splice(0, elNodes.length);\n    }\n    on(dndProxyElement, \"dragstart\", onDragStart);\n    on(dndProxyElement, \"dragover\", onDragOver);\n    on(dndProxyElement, \"dragenter\", onDragEnter);\n    on(dndProxyElement, \"dragend\", onDragEnd);\n    on(dndProxyElement, \"drop\", onDrop);\n  }\n  var dragTarget;\n  var dndGroup2;\n  var dropTarget;\n  var isParent = function isParent2(el1, el2) {\n    var parents = [];\n    var p = parentMap.get(el2);\n    if (p) {\n      parents.push(p);\n      while (true) {\n        p = parentMap.get(p);\n        if (p) {\n          parents.push(p);\n        } else {\n          break;\n        }\n      }\n    }\n    return parents.includes(el1);\n  };\n  var isChild = function isChild2(el1, el2) {\n    return isParent(el2, el1);\n  };\n  var isSibling = function isSibling2(el1, el2) {\n    var p1 = parentMap.get(el1);\n    var p2 = parentMap.get(el2);\n    return !p1 && !p2 || p1 && p2 && p1 === p2;\n  };\n  var isOther = function isOther2(el1, el2) {\n    return !isParent(el1, el2) && !isChild(el1, el2) && !isSibling(el1, el2);\n  };\n  var getClosestEl = function getClosestEl2(el) {\n    for (var i = 0; i < elGroups.length; i++) {\n      for (var j = 0; j < elGroups[i].length; j++) {\n        var target = elGroups[i][j];\n        if (target === el || target.contains(el)) {\n          return target;\n        }\n      }\n    }\n    return el;\n  };\n  var canDrag = function canDrag2(e) {\n    var found = false;\n    var dragTarget2 = getClosestEl(e.target);\n    for (var i = 0; i < elGroups.length; i++) {\n      if (elGroups[i].includes(dragTarget2)) {\n        found = true;\n        break;\n      }\n    }\n    return found;\n  };\n  var startDrag = function startDrag2(e, callback) {\n    dragTarget = getClosestEl(e.target);\n    for (var i = 0; i < elGroups.length; i++) {\n      if (elGroups[i].includes(dragTarget)) {\n        dndGroup2 = elGroups[i];\n        break;\n      }\n    }\n    if (typeof callback === \"function\") {\n      callback(dragTarget, dndGroup2, e);\n    }\n  };\n  var canDrop = function canDrop2(e) {\n    if (!dragTarget || !dndGroup2) {\n      return false;\n    }\n    var dropTarget2 = getClosestEl(e.target);\n    return dragTarget && dropTarget2 && dragTarget !== dropTarget2 && // 必须在同一个组内\n    dndGroup2.includes(dropTarget2) && // 不允许从父级向子级拖拽\n    !isParent(dragTarget, dropTarget2);\n  };\n  var startDrop = function startDrop2(e, callback) {\n    dropTarget = getClosestEl(e.target);\n    if (typeof callback === \"function\") {\n      var type = \"\";\n      if (isChild(dragTarget, dropTarget)) {\n        type = \"child\";\n      } else if (isSibling(dragTarget, dropTarget)) {\n        type = \"sibling\";\n      } else if (isOther(dragTarget, dropTarget)) {\n        type = \"other\";\n      }\n      callback(type, dragTarget, dropTarget, e);\n    }\n    dragTarget = dropTarget = dndGroup2 = null;\n  };\n  var enterTarget;\n  var addDropClass = function addDropClass2(e) {\n    if (!config2.dropClass) return;\n    removeDropClass();\n    enterTarget = getClosestEl(e.target);\n    if (enterTarget) {\n      enterTarget.classList.add(config2.dropClass);\n    }\n  };\n  var removeDropClass = function removeDropClass2() {\n    if (!config2.dropClass) return;\n    if (enterTarget) {\n      enterTarget.classList.remove(config2.dropClass);\n      enterTarget = null;\n    }\n  };\n  var destroy = function destroy2() {\n    if (dndProxyElement) {\n      off(dndProxyElement, \"dragstart\", onDragStart);\n      off(dndProxyElement, \"dragover\", onDragOver);\n      off(dndProxyElement, \"dragenter\", onDragEnter);\n      off(dndProxyElement, \"dragend\", onDragEnd);\n      off(dndProxyElement, \"drop\", onDrop);\n    }\n    removeDropClass();\n    dndProxyElement = dndElements = null;\n    groupNames = elGroups = null;\n    parentMap = childrenMap = null;\n  };\n  return {\n    destroy\n  };\n};\nvar headerTh = \"th.tiny-grid-header__column:not(.col__gutter):not(.fixed__hidden)\";\nvar groupKey = \"dndGroup\";\nvar idKey = \"colid\";\nvar pidKey = \"pColid\";\nvar timer = null;\nvar time2 = 2e3;\nvar dndGroup = 0;\nvar setDndAttribute = function setDndAttribute2(ths, colidMap, isColumnGroupLevel) {\n  var pColidArr = [];\n  var groupArr = [];\n  ths.forEach(function(th) {\n    var pColid = colidMap.get(th.dataset.colid).pColid || \"\";\n    th.setAttribute(\"draggable\", true);\n    th.setAttribute(\"data-p-colid\", pColid);\n    var index2 = pColidArr.indexOf(pColid);\n    if (index2 === -1) {\n      pColidArr.push(pColid);\n      groupArr.push([th]);\n    } else {\n      groupArr[index2].push(th);\n    }\n  });\n  var groupId;\n  if (!isColumnGroupLevel) {\n    groupId = ++dndGroup;\n  }\n  groupArr.forEach(function(group) {\n    if (isColumnGroupLevel) {\n      groupId = ++dndGroup;\n    }\n    group.forEach(function(th) {\n      return th.setAttribute(\"data-dnd-group\", groupId);\n    });\n  });\n};\nvar getColidMap = function getColidMap2(treeArray) {\n  var result = /* @__PURE__ */ new Map();\n  var parentMap = /* @__PURE__ */ new WeakMap();\n  var colidMap = /* @__PURE__ */ new Map();\n  var _traverse = function traverse(children, parent) {\n    if (Array.isArray(children) && children.length > 0) {\n      children.forEach(function(child) {\n        parentMap.set(child, parent);\n        colidMap.set(child.id, child);\n        _traverse(child.children, child);\n      });\n    }\n  };\n  _traverse(treeArray, null);\n  for (var _iterator = _createForOfIteratorHelperLoose(colidMap), _step; !(_step = _iterator()).done; ) {\n    var _step$value = _step.value, colid = _step$value[0], column = _step$value[1];\n    var pCol = parentMap.get(column);\n    var pColid = pCol ? pCol.id : \"\";\n    result.set(colid, {\n      pColid,\n      pCol,\n      column\n    });\n  }\n  return result;\n};\nvar createDragHander = function createDragHander2(state, $table) {\n  var dropConfig = state.dropConfig;\n  var dropable = (dropConfig == null ? void 0 : dropConfig.column) && (dropConfig == null ? void 0 : dropConfig.scheme) === \"v2\";\n  var dragStart = function dragStart2(dragTarget) {\n    var dragColid = dragTarget.dataset.colid;\n    var dragParentColumn = state.colidMap.get(dragColid).pCol;\n    var dragParentChildren = dragParentColumn ? dragParentColumn.children : state.collectColumn;\n    var dragColumn = state.colidMap.get(dragColid).column;\n    var dragIndex = dragParentChildren.indexOf(dragColumn);\n    $table.$emit(\"column-drag-start\", {\n      dragParentChildren,\n      dragColumn,\n      dragIndex\n    });\n    clearTimeout(timer);\n  };\n  var drop = function drop2(_, dragTarget, dropTarget) {\n    var _state$dropConfig;\n    var dragColid = dragTarget.dataset.colid;\n    var dropColid = dropTarget.dataset.colid;\n    var dragParentColumn = state.colidMap.get(dragColid).pCol;\n    var dragParentChildren = dragParentColumn ? dragParentColumn.children : state.collectColumn;\n    var dragColumn = state.colidMap.get(dragColid).column;\n    var dragIndex = dragParentChildren.indexOf(dragColumn);\n    var dropParentColumn = state.colidMap.get(dropColid).pCol;\n    var dropParentChildren = dropParentColumn ? dropParentColumn.children : state.collectColumn;\n    var dropColumn = state.colidMap.get(dropColid).column;\n    var dropIndex = dropParentChildren.indexOf(dropColumn);\n    var args = {\n      dragParentChildren,\n      dragColumn,\n      dragIndex,\n      dropParentChildren,\n      dropColumn,\n      dropIndex\n    };\n    callInterceptor((_state$dropConfig = state.dropConfig) == null ? void 0 : _state$dropConfig.columnBeforeDrop, {\n      args: [args],\n      done: function done() {\n        dragParentChildren.splice(dragIndex, 1);\n        dropParentChildren.splice(dropIndex, 0, dragColumn);\n        var lastScrollLeft = $table.lastScrollLeft, lastScrollTop = $table.lastScrollTop, scrollXLoad = $table.scrollXLoad, scrollYLoad = $table.scrollYLoad;\n        $table.loadColumn(state.collectColumn);\n        $table.$emit(\"column-drop\", args);\n        setTimeout(function() {\n          if (lastScrollLeft || lastScrollTop) {\n            $table.scrollTo(lastScrollLeft, lastScrollTop);\n            scrollXLoad && $table.triggerScrollXEvent();\n            scrollYLoad && $table.triggerScrollYEvent({\n              target: {\n                scrollTop: lastScrollTop\n              }\n            });\n          }\n        });\n        if ($table.getVm(\"toolbar\") && dropable) {\n          timer = setTimeout(function() {\n            $table.getVm(\"toolbar\").$refs.custom.saveSettings(\"drag\");\n          }, time2);\n        }\n      }\n    });\n  };\n  return {\n    dragStart,\n    drop\n  };\n};\nvar createTableColumnWatch = function createTableColumnWatch2($table, state, isColumnGroupLevel, stopHandlerMap) {\n  return debounce(100, function() {\n    var dndProxy = $table.$el.querySelector(\"thead\");\n    if (dndProxy) {\n      var _state$dropConfig2;\n      var dndThs = dndProxy.querySelectorAll(headerTh);\n      if (dndThs.length > 0) {\n        dndThs = Array.from(dndThs);\n      }\n      setDndAttribute(dndThs, state.colidMap, isColumnGroupLevel);\n      if (stopHandlerMap.has(dndProxy)) {\n        stopHandlerMap.get(dndProxy).destroy();\n        stopHandlerMap.delete(dndProxy);\n      }\n      var _createDragHander = createDragHander(state, $table), dragStart = _createDragHander.dragStart, drop = _createDragHander.drop;\n      var dropClass = ((_state$dropConfig2 = state.dropConfig) == null ? void 0 : _state$dropConfig2.columnDropClass) || \"\";\n      stopHandlerMap.set(dndProxy, initDrag(dndProxy, dndThs, {\n        dragStart,\n        drop,\n        dropClass,\n        groupKey,\n        idKey,\n        pidKey\n      }));\n    }\n  });\n};\nvar useDrag = function useDrag2(_ref0) {\n  var _state$dropConfig3, _hooks$getCurrentInst, _state$dropConfig4;\n  var props = _ref0.props, collectColumn2 = _ref0.collectColumn, tableColumn2 = _ref0.tableColumn;\n  var state = hooks.reactive({\n    dropConfig: hooks.toRef(props, \"dropConfig\"),\n    collectColumn: collectColumn2,\n    tableColumn: tableColumn2,\n    colidMap: null\n  });\n  if (!state.dropConfig || ((_state$dropConfig3 = state.dropConfig) == null ? void 0 : _state$dropConfig3.scheme) !== \"v2\") return;\n  var $table = (_hooks$getCurrentInst = hooks.getCurrentInstance()) == null ? void 0 : _hooks$getCurrentInst.proxy;\n  if ((_state$dropConfig4 = state.dropConfig) != null && _state$dropConfig4.column) {\n    var _state$dropConfig5, _state$dropConfig6;\n    var isColumnGroupLevel = !((_state$dropConfig5 = state.dropConfig) != null && _state$dropConfig5.columnGroup) || ((_state$dropConfig6 = state.dropConfig) == null ? void 0 : _state$dropConfig6.columnGroup) === \"level\";\n    var stopHandlerMap = /* @__PURE__ */ new Map();\n    var tableColumnWatch = createTableColumnWatch($table, state, isColumnGroupLevel, stopHandlerMap);\n    hooks.watch(collectColumn2, function() {\n      state.colidMap = getColidMap(state.collectColumn);\n    });\n    hooks.watch(tableColumn2, function() {\n      return tableColumnWatch();\n    });\n    hooks.onBeforeUnmount(function() {\n      if (stopHandlerMap.size > 0) {\n        var dndProxyList = [];\n        for (var _iterator2 = _createForOfIteratorHelperLoose(stopHandlerMap), _step2; !(_step2 = _iterator2()).done; ) {\n          var _step2$value = _step2.value, dndProxy = _step2$value[0], stopHander = _step2$value[1];\n          dndProxyList.push(dndProxy);\n          stopHander.destroy();\n        }\n        dndProxyList.forEach(function(dndProxy2) {\n          return stopHandlerMap.delete(dndProxy2);\n        });\n      }\n    });\n  }\n};\nvar useRowGroup = function useRowGroup2(_ref1) {\n  var _hooks$getCurrentInst2;\n  var props = _ref1.props, visibleColumn = _ref1.visibleColumn, tableFullColumn = _ref1.tableFullColumn, tableColumn2 = _ref1.tableColumn, columnStore = _ref1.columnStore;\n  var state = hooks.reactive({\n    rowGroup: hooks.toRef(props, \"rowGroup\"),\n    visibleColumn,\n    tableFullColumn,\n    tableColumn: tableColumn2,\n    columnStore\n  });\n  if (!state.rowGroup) return;\n  var $table = (_hooks$getCurrentInst2 = hooks.getCurrentInstance()) == null ? void 0 : _hooks$getCurrentInst2.proxy;\n  hooks.watch([visibleColumn, tableColumn2], function() {\n    var targetColumn = find(state.visibleColumn, function(col) {\n      return col.property === state.rowGroup.field;\n    });\n    if (!targetColumn) {\n      targetColumn = find(state.visibleColumn, function(col) {\n        return !!col.property;\n      });\n    }\n    if (targetColumn) {\n      $table._rowGroupTargetColumn = targetColumn;\n      var _index3 = state.tableColumn.indexOf(targetColumn);\n      var length = state.tableColumn.length;\n      var targetColumnColspan = state.rowGroup.colspan || 1;\n      targetColumnColspan = Math.max(targetColumnColspan, 1);\n      if (targetColumnColspan > 1) {\n        var leftIndex = -1;\n        var rightIndex = -1;\n        if ((leftIndex = state.columnStore.leftList.length) > 0) {\n          leftIndex = leftIndex - 1;\n        }\n        if (state.columnStore.rightList.length > 0) {\n          rightIndex = state.tableColumn.indexOf(state.columnStore.rightList[0]) - 1;\n        }\n        var max;\n        if (leftIndex > -1 && _index3 <= leftIndex) {\n          max = leftIndex - _index3 + 1;\n        } else if (rightIndex > -1 && _index3 <= rightIndex) {\n          max = rightIndex - _index3 + 1;\n        } else {\n          max = length - _index3;\n        }\n        targetColumnColspan = Math.min(targetColumnColspan, max);\n      }\n      for (var i = 0; i < length; i++) {\n        var vCol = state.tableColumn[i];\n        if (vCol === targetColumn) {\n          vCol._rowGroupColspan = targetColumnColspan;\n          vCol._stickyClass = \"fixed-left-last__column\";\n        } else {\n          vCol._rowGroupColspan = i > _index3 && i < _index3 + targetColumnColspan ? 0 : 1;\n        }\n      }\n    }\n  });\n  hooks.onBeforeUnmount(function() {\n    delete $table._rowGroupTargetColumn;\n    state.tableFullColumn.forEach(function(column) {\n      delete column._rowGroupColspan;\n      delete column._stickyClass;\n    });\n  });\n};\nvar isCellDirty = function isCellDirty2($table, row2, column) {\n  var editConfig = $table.editConfig;\n  var _ref10 = editConfig || {}, _ref10$showStatus = _ref10.showStatus, showStatus = _ref10$showStatus === void 0 ? false : _ref10$showStatus, _ref10$relationFields = _ref10.relationFields, relationFields = _ref10$relationFields === void 0 ? true : _ref10$relationFields;\n  var canChange = relationFields === true || Array.isArray(relationFields) && relationFields.includes(column.property);\n  var isDirty;\n  if (editConfig && showStatus && column.property && (column.editor || relationFields && canChange)) {\n    isDirty = $table.hasRowChange(row2, column.property);\n  }\n  return isDirty;\n};\nvar getCellKey = function getCellKey2($table, row2, column) {\n  var rowid2 = getRowid($table, row2);\n  return rowid2 + \"-\" + column.id;\n};\nvar updateCellStatus = function updateCellStatus2($table, row2, column) {\n  var cellKey = getCellKey($table, row2, column);\n  var isDirty = isCellDirty($table, row2, column);\n  var map = $table.cellStatus;\n  if (map.has(cellKey)) {\n    map.get(cellKey).isDirty = isDirty;\n  } else {\n    map.set(cellKey, {\n      isDirty\n    });\n  }\n};\nvar _updateRowStatus = function updateRowStatus($table, row2) {\n  $table.tableFullColumn.forEach(function(column) {\n    return updateCellStatus($table, row2, column);\n  });\n};\nvar _getCellStatus = function getCellStatus($table, row2, column) {\n  var cellKey = getCellKey($table, row2, column);\n  var map = $table.cellStatus;\n  if (map.has(cellKey)) {\n    return map.get(cellKey);\n  } else {\n    return {\n      isDirty: false\n    };\n  }\n};\nvar isContented = function isContented2(array) {\n  return Array.isArray(array) && array.length > 0;\n};\nvar nid = 0;\nvar _structure = function structure(_ref11) {\n  var array = _ref11.array, stack = _ref11.stack, tiled = _ref11.tiled, map = _ref11.map, customMappings = _ref11.customMappings, getID = _ref11.getID, childrenKey = _ref11.childrenKey, sizeKey = _ref11.sizeKey;\n  if (!Array.isArray(array)) {\n    return;\n  }\n  var level = stack.length;\n  var nodes = [];\n  for (var i = 0; i < array.length; i++) {\n    var item = array[i];\n    var node = {\n      id: getID(item) || ++nid,\n      payload: item,\n      path: [].concat(stack, [item]),\n      level,\n      parentNode: level > 0 ? map.get(stack[stack.length - 1]) : void 0,\n      childNodes: void 0,\n      space: {\n        originDistance: 0,\n        size: item[sizeKey] || 36\n      },\n      mappings: customMappings ? Object.assign({}, customMappings({\n        payload: item,\n        viewIndex: tiled.length\n      })) : {}\n    };\n    tiled.push(node);\n    map.set(item, node);\n    nodes.push(node);\n    if (childrenKey) {\n      stack.push(item);\n      node.childNodes = _structure({\n        array: item[childrenKey],\n        stack,\n        tiled,\n        map,\n        customMappings,\n        getID,\n        childrenKey,\n        sizeKey\n      });\n      stack.pop();\n    }\n  }\n  return nodes;\n};\nvar makeTile = function makeTile2(_ref12) {\n  var list = _ref12.list, getID = _ref12.getID, childrenKey = _ref12.childrenKey, sizeKey = _ref12.sizeKey, customMappings = _ref12.customMappings;\n  var tiled = [];\n  var map = /* @__PURE__ */ new WeakMap();\n  if (isContented(list)) {\n    _structure({\n      array: list,\n      stack: [],\n      tiled,\n      map,\n      customMappings,\n      getID,\n      childrenKey,\n      sizeKey\n    });\n  }\n  return {\n    tiled,\n    map\n  };\n};\nvar getAncestors = function getAncestors2(node, map) {\n  return node.parentNode ? node.path.slice(0, node.path.length - 1).map(function(row2) {\n    return map.get(row2);\n  }) : [];\n};\nvar isExpand = function isExpand2(node, isRowExpand) {\n  return isRowExpand(node.payload);\n};\nvar isParentExpand = function isParentExpand2(node, isRowExpand, map) {\n  return getAncestors(node, map).every(function(p) {\n    return isExpand(p, isRowExpand);\n  });\n};\nvar makeGraph = function makeGraph2(_ref13) {\n  var isRowExpand = _ref13.isRowExpand, tileInfo = _ref13.tileInfo;\n  var tiled = tileInfo.tiled, map = tileInfo.map;\n  var graphed = [];\n  var scrollSize = 0;\n  for (var i = 0; i < tiled.length; i++) {\n    var node = tiled[i];\n    if (!node.parentNode || isParentExpand(node, isRowExpand, map)) {\n      node.space.originDistance = scrollSize;\n      scrollSize += node.space.size;\n      graphed.push(node);\n    }\n  }\n  return {\n    graphed,\n    scrollSize\n  };\n};\nvar buildRenderGraph = function buildRenderGraph2($table) {\n  tileFullData($table);\n  graphFullData($table);\n};\nvar tileFullData = function tileFullData2($table) {\n  var treeConfig = $table.treeConfig, rowGroup = $table.rowGroup, groupFullData = $table.groupFullData, afterFullData = $table.afterFullData;\n  var tileInfo = makeTile({\n    list: !treeConfig && rowGroup != null && rowGroup.field ? groupFullData : afterFullData,\n    getID: function getID(row2) {\n      return getRowid($table, row2);\n    },\n    childrenKey: treeConfig ? treeConfig.children : void 0\n  });\n  $table._tileInfo = tileInfo;\n};\nvar graphFullData = function graphFullData2($table) {\n  var treeConfig = $table.treeConfig, treeExpandeds = $table.treeExpandeds, _tileInfo = $table._tileInfo;\n  if (_tileInfo) {\n    var graphInfo = makeGraph({\n      isRowExpand: function isRowExpand(row2) {\n        return treeConfig ? treeExpandeds.includes(row2) : true;\n      },\n      tileInfo: $table._tileInfo\n    });\n    $table._graphInfo = graphInfo;\n  }\n};\nvar _getTreeLength = function getTreeLength(tree, childrenKey) {\n  if (childrenKey === void 0) {\n    childrenKey = \"children\";\n  }\n  var length = tree.length;\n  for (var _iterator3 = _createForOfIteratorHelperLoose(tree), _step3; !(_step3 = _iterator3()).done; ) {\n    var node = _step3.value;\n    var children = node[childrenKey];\n    if (children && children.length > 0) {\n      length += _getTreeLength(children, childrenKey);\n    }\n  }\n  return length;\n};\nvar getTiledLength = function getTiledLength2(props) {\n  var data7 = props.data || [];\n  var _ref14 = props.treeConfig || {}, childrenKey = _ref14.children;\n  return props.treeConfig ? _getTreeLength(data7, childrenKey) : data7.length;\n};\nvar useData = function useData2(props) {\n  var _hooks$getCurrentInst3;\n  var $table = (_hooks$getCurrentInst3 = hooks.getCurrentInstance()) == null ? void 0 : _hooks$getCurrentInst3.proxy;\n  var tiledLength = hooks.ref(0);\n  hooks.watch([function() {\n    return props.data;\n  }, function() {\n    return getTiledLength(props);\n  }], function(_ref15) {\n    _ref15[0]; var length = _ref15[1];\n    tiledLength.value = length;\n    $table.updateRawData(props.data);\n  });\n  return {\n    tiledLength\n  };\n};\nvar calcHeader = function calcHeader2(collectColumn2) {\n  var maxLevel = 0;\n  var leafColumns = [];\n  var parentMap = /* @__PURE__ */ new WeakMap();\n  var levelMap = /* @__PURE__ */ new WeakMap();\n  var _traverseTree = function traverseTree(tree, level, parent) {\n    if (Array.isArray(tree) && tree.length > 0) {\n      if (level > maxLevel) {\n        maxLevel = level;\n      }\n      tree.forEach(function(item) {\n        if (parent) {\n          parentMap.set(item, parent);\n        }\n        levelMap.set(item, level);\n        _traverseTree(item.children, level + 1, item);\n      });\n    } else if (parent) {\n      leafColumns.push(parent);\n    }\n  };\n  _traverseTree(collectColumn2, 0, null);\n  var headerTable = [];\n  var rowspanMap = /* @__PURE__ */ new WeakMap();\n  for (var i = 0; i <= maxLevel; i++) {\n    headerTable[i] = new Array(leafColumns.length).fill(0);\n  }\n  leafColumns.forEach(function(column, index2) {\n    var level = levelMap.get(column);\n    rowspanMap.set(column, maxLevel - level + 1);\n    headerTable[level][index2] = column;\n    for (var l = level - 1; l >= 0; l--) {\n      column = headerTable[l][index2] = parentMap.get(column);\n    }\n  });\n  return {\n    leafColumns,\n    headerTable,\n    rowspanMap,\n    maxLevel\n  };\n};\nvar calcSpan = function calcSpan2(tableColumn2, header, headerRowHeight) {\n  var indices = tableColumn2.map(function(c) {\n    return header.leafColumns.indexOf(c);\n  });\n  var subTable = [];\n  header.headerTable.forEach(function(cols, i) {\n    var countMap = /* @__PURE__ */ new WeakMap();\n    subTable[i] = indices.map(function(j) {\n      return cols[j];\n    }).reduce(function(p, col) {\n      if (col) {\n        if (!p.includes(col)) {\n          p.push(col);\n        }\n        if (countMap.has(col)) {\n          countMap.set(col, countMap.get(col) + 1);\n        } else {\n          countMap.set(col, 1);\n        }\n      }\n      return p;\n    }, []).map(function(column) {\n      var rowspan = header.rowspanMap.get(column) || 1;\n      return {\n        id: column.id,\n        column,\n        colspan: countMap.get(column),\n        rowspan,\n        height: rowspan * headerRowHeight,\n        top: i * headerRowHeight\n      };\n    });\n  });\n  return subTable;\n};\nvar useHeader = function useHeader2(props, bodyVm, headerRowHeight) {\n  var headerTable = hooks.ref([]);\n  var $table = bodyVm.$parent;\n  var showHeader = $table.showHeader;\n  var header = hooks.ref();\n  hooks.watch(function() {\n    return props.collectColumn;\n  }, function() {\n    var head = header.value = calcHeader(props.collectColumn);\n    if (showHeader) {\n      $table.headerHeight = (head.maxLevel + 1) * headerRowHeight.value;\n    }\n  });\n  hooks.watch([function() {\n    return props.tableColumn;\n  }, header], function() {\n    var head = header.value;\n    if (showHeader && head) {\n      headerTable.value = calcSpan(props.tableColumn, head, headerRowHeight.value);\n    }\n  });\n  return {\n    headerTable\n  };\n};\nvar getEventSource = function getEventSource2(e, $table) {\n  var _tableEl$dataset, _$table$getColumnNode, _rowEl$dataset, _rowid;\n  var target = e.target;\n  var tableEl = target.closest(\".tiny-grid__body\");\n  if (((_tableEl$dataset = tableEl.dataset) == null ? void 0 : _tableEl$dataset.tableid) !== String($table.id)) return;\n  var cellEl = target.closest(\".tiny-grid-header__column\");\n  var rowEl, part, rowType, row2, column, rowid2;\n  if (cellEl) {\n    rowEl = cellEl.parentNode;\n    part = \"header\";\n  } else if (cellEl = target.closest(\".tiny-grid-body__column\")) {\n    rowEl = cellEl.parentNode;\n    part = \"body\";\n  } else if (cellEl = target.closest(\".tiny-grid-footer__column\")) {\n    rowEl = cellEl.parentNode;\n    part = \"footer\";\n  }\n  if (!part || !cellEl || !rowEl) return;\n  column = (_$table$getColumnNode = $table.getColumnNode(cellEl)) == null ? void 0 : _$table$getColumnNode.item;\n  rowid2 = (_rowEl$dataset = rowEl.dataset) == null ? void 0 : _rowEl$dataset.rowid;\n  if ((_rowid = rowid2) != null && _rowid.startsWith(\"row_g_\")) {\n    rowType = \"virtual\";\n  } else if (part === \"body\") {\n    rowType = \"normal\";\n    if ($table.editStore.insertMap.has(rowid2)) {\n      row2 = $table.editStore.insertMap.get(rowid2);\n    } else {\n      var _$table$getRowNode;\n      row2 = (_$table$getRowNode = $table.getRowNode(rowEl)) == null ? void 0 : _$table$getRowNode.item;\n    }\n  }\n  return {\n    part,\n    rowType,\n    row: row2,\n    column,\n    cell: cellEl,\n    tr: rowEl\n  };\n};\nvar parseNumber = function parseNumber2(numStr) {\n  return isUndefined(numStr) ? numStr : parseInt(numStr, 10);\n};\nvar normalOverflow = function normalOverflow2(overflow, _overflow) {\n  overflow = isNull(overflow) ? _overflow : overflow;\n  var overflowTitle = overflow === \"title\";\n  var overflowTooltip = overflow === true || overflow === \"tooltip\";\n  var overflowEllipsis = overflow === \"ellipsis\";\n  var overflowHint = overflowTitle || overflowTooltip || overflowEllipsis;\n  return {\n    overflow,\n    overflowTitle,\n    overflowTooltip,\n    overflowEllipsis,\n    overflowHint\n  };\n};\nvar getConfigOverflow = function getConfigOverflow2(column, $table) {\n  var _cellOverflow = $table.showOverflow, _headerOverflow = $table.showHeaderOverflow;\n  var _ref16 = column || {}, showTip = _ref16.showTip, showOverflow = _ref16.showOverflow, showHeaderTip = _ref16.showHeaderTip, showHeaderOverflow = _ref16.showHeaderOverflow;\n  var _normalOverflow = normalOverflow(showOverflow, _cellOverflow), cellOverflowTitle = _normalOverflow.overflowTitle, cellOverflowTooltip = _normalOverflow.overflowTooltip, cellOverflowEllipsis = _normalOverflow.overflowEllipsis, cellOverflowHint = _normalOverflow.overflowHint;\n  var _normalOverflow2 = normalOverflow(showHeaderOverflow, _headerOverflow), headerOverflowTitle = _normalOverflow2.overflowTitle, headerOverflowTooltip = _normalOverflow2.overflowTooltip, headerOverflowEllipsis = _normalOverflow2.overflowEllipsis, headerOverflowHint = _normalOverflow2.overflowHint;\n  return {\n    cellTip: showTip,\n    cellOverflowTitle,\n    cellOverflowTooltip,\n    cellOverflowEllipsis,\n    cellOverflowHint,\n    headerTip: showHeaderTip,\n    headerOverflowTitle,\n    headerOverflowTooltip,\n    headerOverflowEllipsis,\n    headerOverflowHint\n  };\n};\nvar getEventParams = function getEventParams2(_ref17, $table) {\n  var row2 = _ref17.row, column = _ref17.column, cell = _ref17.cell, tr = _ref17.tr;\n  var _ref18 = column || {}, showTip = _ref18.showTip, showHeaderTip = _ref18.showHeaderTip;\n  var rowIndex = $table.getRowIndex(row2);\n  var columnIndex = $table.getColumnIndex(column);\n  var _ref19 = (cell == null ? void 0 : cell.dataset) || {}, seq = _ref19.seq, colindex = _ref19.colindex;\n  var _ref20 = (tr == null ? void 0 : tr.dataset) || {}, rowindex = _ref20.rowindex, rowlevel = _ref20.rowlevel;\n  return {\n    $table,\n    row: row2,\n    column,\n    cell,\n    rowIndex,\n    columnIndex,\n    showTip,\n    showHeaderTip,\n    seq: parseNumber(seq),\n    $rowIndex: parseNumber(rowindex),\n    $columnIndex: parseNumber(colindex),\n    level: parseNumber(rowlevel)\n  };\n};\nvar isOperateMouse = function isOperateMouse2($table) {\n  return $table._isResize || $table.lastScrollTime && Date.now() < $table.lastScrollTime + $table.optimizeOpts.delayHover;\n};\nvar hideAlignLines = function hideAlignLines2($table, cell) {\n  var _$table$mouseConfig;\n  if (!((_$table$mouseConfig = $table.mouseConfig) != null && _$table$mouseConfig.hover) || cell) {\n    return;\n  }\n  var xBar = $table.elemStore[\"main-body-alignXBar\"];\n  var yBar = $table.elemStore[\"main-body-alignYBar\"];\n  if (xBar) {\n    xBar.style.display = \"none\";\n  }\n  if (yBar) {\n    yBar.style.display = \"none\";\n  }\n};\nvar showAlignLines = function showAlignLines2($table, cell) {\n  var _$table$mouseConfig2;\n  if (!((_$table$mouseConfig2 = $table.mouseConfig) != null && _$table$mouseConfig2.hover)) {\n    return;\n  }\n  var xBar = $table.elemStore[\"main-body-alignXBar\"];\n  var yBar = $table.elemStore[\"main-body-alignYBar\"];\n  if (xBar) {\n    xBar.style.display = \"block\";\n    xBar.style.top = cell.offsetTop - 1 + \"px\";\n    xBar.style.setProperty(\"--after-top-offset\", cell.offsetHeight + \"px\");\n  }\n  if (yBar) {\n    yBar.style.display = \"block\";\n    yBar.style.left = cell.offsetLeft - 1 + \"px\";\n    yBar.style.setProperty(\"--after-left-offset\", cell.offsetWidth + \"px\");\n  }\n};\nvar useCellEvent = function useCellEvent2(_ref21) {\n  var table = _ref21.table, $table = _ref21.$table;\n  var isBound = false;\n  var hoverCell = hooks.shallowRef();\n  var hoverCellContext = hooks.shallowRef();\n  var hoverRow = hooks.shallowRef();\n  var hoverText = hooks.shallowRef();\n  var textContent;\n  var handleMouseEnter = function handleMouseEnter2(e) {\n    if (isOperateMouse($table)) return;\n    var source = getEventSource(e, $table);\n    if (source) {\n      var params = getEventParams(source, $table);\n      if (hoverCell.value !== source.cell) {\n        hoverCell.value = source.cell;\n        hoverCellContext.value = {\n          params,\n          source,\n          e\n        };\n        textContent = hoverCell.value.querySelector(\".tiny-grid-cell-text\") || hoverCell.value.querySelector(\".tiny-grid-cell\");\n      }\n      if (e.target === textContent) {\n        hoverText.value = textContent;\n      }\n      if (source.part !== \"body\") {\n        hoverRow.value = null;\n      } else if (hoverRow.value !== source.row) {\n        hoverRow.value = source.row;\n      }\n    }\n  };\n  var handleMouseLeave = function handleMouseLeave2(e) {\n    var _target$dataset;\n    if (isOperateMouse($table)) return;\n    var target = e.target;\n    if (target === hoverText.value) {\n      hoverText.value = null;\n    }\n    if (target.localName === \"table\" && ((_target$dataset = target.dataset) == null ? void 0 : _target$dataset.tableid) === String($table.id)) {\n      hoverRow.value = hoverCell.value = hoverCellContext.value = null;\n    }\n  };\n  var handleMouseDown = function handleMouseDown2(e) {\n    var source = getEventSource(e, $table);\n    if (source) {\n      var params = getEventParams(source, $table);\n      var _$table$mouseConfig3 = $table.mouseConfig, mouseConfig = _$table$mouseConfig3 === void 0 ? {} : _$table$mouseConfig3;\n      if (source.part === \"header\" && mouseConfig.checked) {\n        $table.triggerHeaderCellMousedownEvent(e, params);\n      }\n      if (source.part === \"body\" && (mouseConfig.checked || mouseConfig.selected)) {\n        $table.triggerCellMousedownEvent(e, params);\n      }\n    }\n  };\n  var handleClick2 = function handleClick3(e) {\n    var source = getEventSource(e, $table);\n    if (source) {\n      var params = getEventParams(source, $table);\n      var column = source.column || {};\n      var editor = column.editor;\n      var satisfy = function satisfy2(equal, trigger2) {\n        return trigger2 === \"row\" || equal(column) && trigger2 === \"cell\";\n      };\n      var editConfig = $table.editConfig, _$table$expandConfig = $table.expandConfig, expandConfig = _$table$expandConfig === void 0 ? {} : _$table$expandConfig, highlightCurrentColumn = $table.highlightCurrentColumn, highlightCurrentRow = $table.highlightCurrentRow, _$table$mouseConfig4 = $table.mouseConfig, mouseConfig = _$table$mouseConfig4 === void 0 ? {} : _$table$mouseConfig4, _$table$radioConfig = $table.radioConfig, radioConfig = _$table$radioConfig === void 0 ? {} : _$table$radioConfig, _$table$selectConfig = $table.selectConfig, selectConfig = _$table$selectConfig === void 0 ? {} : _$table$selectConfig, sortOpts2 = $table.sortOpts, tableListeners = $table.tableListeners, _$table$treeConfig = $table.treeConfig, treeConfig = _$table$treeConfig === void 0 ? {} : _$table$treeConfig;\n      if (source.part === \"header\" && (highlightCurrentColumn || tableListeners[\"header-cell-click\"] || mouseConfig.checked || sortOpts2.trigger === \"cell\")) {\n        $table.triggerHeaderCellClickEvent(e, params);\n      }\n      if (source.part === \"body\" && (highlightCurrentRow || tableListeners[\"cell-click\"] || mouseConfig.checked || editor && editConfig || satisfy(function() {\n        return true;\n      }, expandConfig.trigger) || satisfy(function(_ref22) {\n        var type = _ref22.type;\n        return type === \"radio\";\n      }, radioConfig.trigger) || satisfy(function(_ref23) {\n        var type = _ref23.type;\n        return type === \"selection\";\n      }, selectConfig.trigger) || satisfy(function(_ref24) {\n        var treeNode = _ref24.treeNode;\n        return treeNode;\n      }, treeConfig.trigger))) {\n        var bubbling = treeConfig.bubbling, trigger = treeConfig.trigger;\n        var isTreeNodeStopPropagation = !bubbling && (!trigger || trigger === \"default\") && $table.getEventTargetNode(e, hoverCell.value, \"tiny-grid-tree__node-btn\").flag;\n        if (!isTreeNodeStopPropagation) {\n          fastdom.mutate(function() {\n            $table.triggerCellClickEvent(e, params);\n          });\n        }\n      }\n      if (source.part === \"footer\" && tableListeners[\"footer-cell-click\"]) {\n        emitEvent($table, \"footer-cell-click\", [params, e]);\n      }\n    }\n  };\n  var handleDoubleClick = function handleDoubleClick2(e) {\n    var source = getEventSource(e, $table);\n    if (source) {\n      var params = getEventParams(source, $table);\n      var column = source.column || {};\n      var editor = column.editor;\n      var editConfig = $table.editConfig, tableListeners = $table.tableListeners;\n      var triggerDblclick = editor && editConfig && editConfig.trigger === \"dblclick\";\n      if (source.part === \"header\" && tableListeners[\"header-cell-dblclick\"]) {\n        emitEvent($table, \"header-cell-dblclick\", [params, e]);\n      }\n      if (source.part === \"body\" && (triggerDblclick || tableListeners[\"cell-dblclick\"])) {\n        $table.triggerCellDBLClickEvent(e, params);\n      }\n      if (source.part === \"footer\" && tableListeners[\"footer-cell-dblclick\"]) {\n        emitEvent($table, \"footer-cell-dblclick\", [params, e]);\n      }\n    }\n  };\n  var bindMouseEvents = function bindMouseEvents2(target) {\n    on(target, \"mouseenter\", handleMouseEnter, true);\n    on(target, \"mouseleave\", handleMouseLeave, true);\n    on(target, \"mousedown\", handleMouseDown, true);\n    on(target, \"click\", handleClick2, true);\n    on(target, \"dblclick\", handleDoubleClick, true);\n  };\n  var unbindMouseEvents = function unbindMouseEvents2(target) {\n    off(target, \"mouseenter\", handleMouseEnter, true);\n    off(target, \"mouseleave\", handleMouseLeave, true);\n    off(target, \"mousedown\", handleMouseDown, true);\n    off(target, \"click\", handleClick2, true);\n    off(target, \"dblclick\", handleDoubleClick, true);\n  };\n  hooks.onBeforeUnmount(function() {\n    if (isBound && table.value) {\n      unbindMouseEvents(table.value);\n      isBound = false;\n      hoverRow.value = hoverCell.value = hoverCellContext.value = null;\n      $table.hoverCell = null;\n    }\n  });\n  hooks.watch(table, function(table2, old) {\n    if (isBound && old) {\n      unbindMouseEvents(old);\n      isBound = false;\n    }\n    if (!isBound && table2) {\n      bindMouseEvents(table2);\n      isBound = true;\n    }\n  });\n  hooks.watch(hoverText, function(curText, preText) {\n    var _hoverCellContext$val = hoverCellContext.value, params = _hoverCellContext$val.params, source = _hoverCellContext$val.source, e = _hoverCellContext$val.e;\n    var column = source.column || {};\n    var _getConfigOverflow = getConfigOverflow(column, $table), headerOverflowTitle = _getConfigOverflow.headerOverflowTitle, headerOverflowTooltip = _getConfigOverflow.headerOverflowTooltip, headerTip = _getConfigOverflow.headerTip, cellOverflowTitle = _getConfigOverflow.cellOverflowTitle, cellOverflowTooltip = _getConfigOverflow.cellOverflowTooltip, cellTip = _getConfigOverflow.cellTip;\n    $table.hoverText = curText;\n    if (preText) {\n      if (source.part === \"header\") {\n        if (headerTip || headerOverflowTooltip) {\n          $table.clostTooltip();\n        }\n      } else if (source.part === \"body\") {\n        if (cellTip || cellOverflowTooltip) {\n          $table.clostTooltip();\n        }\n      } else if (source.part === \"footer\") {\n        if (cellOverflowTooltip) {\n          $table.clostTooltip();\n        }\n      }\n    }\n    if (curText) {\n      if (source.part === \"header\") {\n        if (headerOverflowTitle) {\n          updateCellTitle(e, source.cell);\n        } else if (headerTip || headerOverflowTooltip) {\n          $table.triggerHeaderTooltipEvent(e, params);\n        }\n      } else if (source.part === \"body\") {\n        if (cellOverflowTitle) {\n          updateCellTitle(e, source.cell);\n        } else if (cellTip || cellOverflowTooltip) {\n          $table.triggerTooltipEvent(e, params);\n        }\n      } else if (source.part === \"footer\") {\n        if (cellOverflowTitle) {\n          updateCellTitle(e, source.cell);\n        } else if (cellOverflowTooltip) {\n          $table.triggerFooterTooltipEvent(e, params);\n        }\n      }\n    }\n  });\n  hooks.watch([hoverCell, hoverCellContext], function(_ref25, _ref26) {\n    var curCell = _ref25[0], curCtx = _ref25[1];\n    var preCell = _ref26[0], preCtx = _ref26[1];\n    var tableListeners = $table.tableListeners;\n    if (preCell) {\n      var params = preCtx.params, source = preCtx.source, e = preCtx.e;\n      if (source.part === \"body\") {\n        if (tableListeners[\"cell-mouseleave\"]) {\n          emitEvent($table, \"cell-mouseleave\", [params, e]);\n        }\n        hideAlignLines($table, curCell);\n      }\n    }\n    if (curCell) {\n      var _params = curCtx.params, _source = curCtx.source, _e = curCtx.e;\n      $table.hoverCell = curCell;\n      if (_source.part === \"body\") {\n        if (tableListeners[\"cell-mouseenter\"]) {\n          emitEvent($table, \"cell-mouseenter\", [_params, _e]);\n        }\n        showAlignLines($table, curCell);\n      }\n    }\n  });\n};\nvar useCellSpan = function useCellSpan2(bodyVm, bodyProps) {\n  var $table = bodyVm.$parent;\n  var normalRows = hooks.shallowRef({});\n  var footerRows = hooks.shallowRef({});\n  hooks.watch([function() {\n    return $table.visibleColumn;\n  }, function() {\n    return bodyProps.tableData;\n  }, function() {\n    return $table.isColumnWidthAssigned;\n  }, function() {\n    return $table.columnStore.resizeList;\n  }], function(_ref27) {\n    var visibleColumn = _ref27[0], tableData = _ref27[1], isColumnWidthAssigned = _ref27[2];\n    if (!Array.isArray(tableData) || !isColumnWidthAssigned) {\n      return;\n    }\n    var tableNode = bodyProps.tableNode;\n    var hasVirtualRow = $table.hasVirtualRow, treeConfig = $table.treeConfig, treeOrdered = $table.treeOrdered, scrollYLoad = $table.scrollYLoad, scrollYStore = $table.scrollYStore, afterFullData = $table.afterFullData, columnStore = $table.columnStore;\n    var _ref28 = treeConfig || {}, hideMethod = _ref28.hideMethod;\n    var isOrdered = treeConfig ? !!treeOrdered : false;\n    var seqCount = {\n      value: 0\n    };\n    var startIndex = scrollYStore.startIndex;\n    var leftList = columnStore.leftList, rightList = columnStore.rightList;\n    var normalState = {};\n    var normalTable = [];\n    for (var _index4 = 0; _index4 < tableData.length; _index4++) {\n      var row2 = tableData[_index4];\n      var rowLevel = tableNode[_index4].level;\n      var rowIndex = $table.getRowIndex(row2);\n      var virtualRow = false;\n      if (hasVirtualRow) {\n        virtualRow = isVirtualRow(row2);\n      }\n      var isSkipRowRender = hideMethod && hideMethod(row2, rowLevel) || virtualRow;\n      if (!isSkipRowRender) {\n        seqCount.value = seqCount.value + 1;\n      }\n      var seq = isOrdered ? seqCount.value : _index4 + 1;\n      if (scrollYLoad) {\n        seq += startIndex;\n      }\n      if (hasVirtualRow) {\n        if (virtualRow) {\n          continue;\n        } else {\n          seq = afterFullData.indexOf(row2) + 1;\n        }\n      }\n      var params = {\n        $table,\n        data: tableData,\n        row: row2,\n        $rowIndex: row2[GlobalConfig$1.$rowIndex],\n        rowIndex,\n        level: rowLevel,\n        $seq: \"\",\n        seq\n      };\n      stateNormalCell(normalState, normalTable, params, $table);\n    }\n    if (leftList.length > 0) {\n      adjustColspan(normalTable, leftList.length - 1, true);\n    }\n    if (rightList.length > 0) {\n      adjustColspan(normalTable, visibleColumn.indexOf(rightList[0]) - 1, false);\n    }\n    normalRows.value = normalState;\n  });\n  hooks.watch([function() {\n    return $table.visibleColumn;\n  }, function() {\n    return bodyProps.footerData;\n  }, function() {\n    return $table.isColumnWidthAssigned;\n  }, function() {\n    return $table.columnStore.resizeList;\n  }], function(_ref29) {\n    var visibleColumn = _ref29[0], footerData = _ref29[1], isColumnWidthAssigned = _ref29[2];\n    if (!Array.isArray(footerData) || !isColumnWidthAssigned) {\n      return;\n    }\n    var columnStore = $table.columnStore;\n    var leftList = columnStore.leftList, rightList = columnStore.rightList;\n    var footerState = {};\n    var footerTable = [];\n    for (var $rowIndex = 0; $rowIndex < footerData.length; $rowIndex++) {\n      var params = {\n        $table,\n        $rowIndex,\n        data: footerData\n      };\n      stateFooterCell(footerState, footerTable, params, $table);\n    }\n    if (leftList.length > 0) {\n      adjustColspan(footerTable, leftList.length - 1, true);\n    }\n    if (rightList.length > 0) {\n      adjustColspan(footerTable, visibleColumn.indexOf(rightList[0]) - 1, false);\n    }\n    footerRows.value = footerState;\n  });\n  return {\n    normalRows,\n    footerRows\n  };\n};\nvar stateNormalCell = function stateNormalCell2(state, table, params, $table) {\n  var rowSpan = $table.rowSpan, spanMethod = $table.spanMethod, visibleColumn = $table.visibleColumn;\n  var rowId = getRowid($table, params.row);\n  var rowState = {};\n  var rowAttrs = [];\n  for (var $columnIndex = 0; $columnIndex < visibleColumn.length; $columnIndex++) {\n    var column = visibleColumn[$columnIndex];\n    var columnIndex = $table.getColumnIndex(column);\n    var attrs = {\n      rowspan: 1,\n      colspan: 1,\n      visible: true,\n      _stickyClass: \"\",\n      _stickyStyle: null\n    };\n    params = _extends({}, params, {\n      column,\n      $columnIndex,\n      columnIndex\n    });\n    if (spanMethod || rowSpan) {\n      doSpan({\n        attrs,\n        params,\n        rowSpan,\n        spanMethod\n      });\n    }\n    rowState[column.id] = {\n      attrs,\n      params\n    };\n    rowAttrs.push({\n      attrs,\n      params\n    });\n  }\n  state[rowId] = rowState;\n  table.push(rowAttrs);\n};\nvar stateFooterCell = function stateFooterCell2(state, table, params, $table) {\n  var footerSpanMethod = $table.footerSpanMethod, visibleColumn = $table.visibleColumn;\n  var rowState = {};\n  var rowAttrs = [];\n  for (var $columnIndex = 0; $columnIndex < visibleColumn.length; $columnIndex++) {\n    var column = visibleColumn[$columnIndex];\n    var columnIndex = $table.getColumnIndex(column);\n    var attrs = {\n      rowspan: 1,\n      colspan: 1,\n      visible: true\n    };\n    params = _extends({}, params, {\n      column,\n      $columnIndex,\n      columnIndex\n    });\n    if (footerSpanMethod) {\n      var _ref30 = footerSpanMethod(params) || {}, _ref30$rowspan = _ref30.rowspan, rowspan = _ref30$rowspan === void 0 ? 1 : _ref30$rowspan, _ref30$colspan = _ref30.colspan, colspan = _ref30$colspan === void 0 ? 1 : _ref30$colspan;\n      attrs.rowspan = rowspan;\n      attrs.colspan = colspan;\n      attrs.visible = rowspan > 0 && colspan > 0;\n    }\n    rowState[column.id] = {\n      attrs,\n      params\n    };\n    rowAttrs.push({\n      attrs,\n      params\n    });\n  }\n  state[params.$rowIndex] = rowState;\n  table.push(rowAttrs);\n};\nvar doSpan = function doSpan2(_ref31) {\n  var attrs = _ref31.attrs, params = _ref31.params, rowSpan = _ref31.rowSpan, spanMethod = _ref31.spanMethod;\n  var _ref32 = (spanMethod ? spanMethod(params) : rowSpanMethod(rowSpan, params)) || {}, _ref32$rowspan = _ref32.rowspan, rowspan = _ref32$rowspan === void 0 ? 1 : _ref32$rowspan, _ref32$colspan = _ref32.colspan, colspan = _ref32$colspan === void 0 ? 1 : _ref32$colspan;\n  attrs.rowspan = rowspan;\n  attrs.colspan = colspan;\n  attrs.visible = rowspan > 0 && colspan > 0;\n};\nvar rowSpanMethod = function rowSpanMethod2(rowSpan, _ref33) {\n  var row2 = _ref33.row, $rowIndex = _ref33.$rowIndex, column = _ref33.column, data7 = _ref33.data;\n  var fields = [];\n  if (column.visible && rowSpan) {\n    rowSpan.forEach(function(item) {\n      return fields.push(item.field);\n    });\n    var cellVal = row2[column.property];\n    if (cellVal && fields.includes(column.property)) {\n      var prevSiblingRow = data7[$rowIndex - 1];\n      var nextSiblingRow = data7[$rowIndex + 1];\n      if ((prevSiblingRow == null ? void 0 : prevSiblingRow[column.property]) === cellVal) {\n        return {\n          rowspan: 0,\n          colspan: 0\n        };\n      } else {\n        var rowspanCount = 1;\n        while (((_nextSiblingRow = nextSiblingRow) == null ? void 0 : _nextSiblingRow[column.property]) === cellVal) {\n          var _nextSiblingRow;\n          nextSiblingRow = data7[++rowspanCount + $rowIndex];\n        }\n        if (rowspanCount > 1) {\n          return {\n            rowspan: rowspanCount,\n            colspan: 1\n          };\n        }\n      }\n    }\n  }\n};\nvar adjustColspan = function adjustColspan2(table, pos, isLeft) {\n  if (pos < 0) {\n    return;\n  }\n  for (var i = 0; i < table.length; i++) {\n    var row2 = table[i];\n    for (var j = 0; j <= pos && j < row2.length; j++) {\n      var attrs = row2[j].attrs;\n      var oldColspan = attrs.colspan;\n      var k = void 0, posCol = void 0;\n      var shouldAdjustColspan = oldColspan > 1 && (k = j + oldColspan - 1) > pos;\n      if (shouldAdjustColspan) {\n        attrs.colspan = pos - j + 1;\n        if (isLeft) {\n          attrs._stickyClass = \"fixed-left-last__column\";\n        }\n        posCol = row2[pos + 1];\n        if (posCol) {\n          posCol.attrs.colspan = k - pos;\n          if (posCol.attrs.rowspan < 1) {\n            posCol.attrs.rowspan = attrs.rowspan;\n          }\n          posCol.attrs.visible = true;\n        }\n      }\n    }\n    if (!isLeft) {\n      var rightCols = row2.slice(pos + 1).reverse();\n      var right = 0;\n      for (var _j = 0; _j < rightCols.length; _j++) {\n        var _rightCols$_j = rightCols[_j], _attrs = _rightCols$_j.attrs, params = _rightCols$_j.params;\n        if (_attrs.visible) {\n          _attrs._stickyStyle = {\n            right: right + \"px\"\n          };\n          right += params.column.renderWidth;\n        }\n      }\n    }\n  }\n};\nvar useNormalData = function useNormalData2(_ref34) {\n  var _hooks$getCurrentInst4;\n  var props = _ref34.props, tableFullColumn = _ref34.tableFullColumn;\n  var $table = (_hooks$getCurrentInst4 = hooks.getCurrentInstance()) == null ? void 0 : _hooks$getCurrentInst4.proxy;\n  var rawData = hooks.ref([]);\n  var rawDataVersion = hooks.ref(0);\n  var editorColumns = hooks.ref([]);\n  var editorColumnKey = hooks.ref(\"\");\n  hooks.watch(tableFullColumn, function(_tableFullColumn) {\n    var columns2 = [];\n    var columnKeys = [];\n    for (var i = 0; i < _tableFullColumn.length; i++) {\n      var column = _tableFullColumn[i];\n      if (column.property && column.editor) {\n        columns2.push(column);\n        columnKeys.push(column.propety);\n      }\n    }\n    var keyString = columnKeys.sort().join();\n    if (editorColumnKey.value !== keyString) {\n      editorColumnKey.value = keyString;\n      editorColumns.value = columns2;\n    }\n  });\n  hooks.watch(editorColumns, function(_editorColumns) {\n    if (props.editConfig && _editorColumns.length > 0) {\n      var _insertData = $table.editStore.insertList || [];\n      var _rawData = rawData.value || [];\n      var _data = [].concat(_insertData, _rawData);\n      if (Array.isArray(_data)) {\n        _data.forEach(function(row2) {\n          return $table.defineField(row2, false, _editorColumns, true);\n        });\n      }\n    }\n  });\n  hooks.watch(rawData, function(_rawData) {\n    var _editorColumns = editorColumns.value;\n    if (props.editConfig && _editorColumns.length > 0) {\n      var _data = _rawData || [];\n      if (Array.isArray(_data)) {\n        _data.forEach(function(row2) {\n          return $table.defineField(row2, false, _editorColumns);\n        });\n      }\n    }\n    rawDataVersion.value += 1;\n  });\n  hooks.watch(rawDataVersion, function() {\n    var optimizeOpts = $table.optimizeOpts;\n    var scrollY = optimizeOpts.scrollY;\n    var _rawData = rawData.value || [];\n    var tableFullData = Array.isArray(_rawData) ? _rawData.slice(0) : [];\n    $table.tableFullData = tableFullData;\n    $table.scrollYLoad = scrollY && scrollY.gt > 0 && scrollY.gt <= tableFullData.length;\n    $table.updateCache(true, props.saveSource === \"deep\");\n    $table.handleDataChange();\n  });\n  return {\n    rawData,\n    rawDataVersion\n  };\n};\nvar toRaw = hooks.toRaw;\nvar VIRTUAL_ROW_KEY = \"_$virtual_\";\nvar difference$1 = function difference$12(arr, other) {\n  return arr.filter(function(i) {\n    return other.findIndex(function(j) {\n      return i.id === j.id;\n    }) === -1;\n  });\n};\nvar sliceVisibleColumn = function sliceVisibleColumn2(args) {\n  var lastStartIndex = args.lastStartIndex, renderSize = args.renderSize, scrollXLoad = args.scrollXLoad, startIndex = args.startIndex, tableColumn2 = args.tableColumn, columnStore = args.columnStore;\n  var treeConfig = args.treeConfig, visibleColumn = args.visibleColumn, visibleColumnChanged = args.visibleColumnChanged;\n  var leftList = columnStore.leftList, rightList = columnStore.rightList;\n  var changeFrom = tableColumn2.reduce(function(p, c) {\n    return p + c.id;\n  }, \"\");\n  var tableColumn22 = tableColumn2;\n  var lastStartIndex2 = lastStartIndex;\n  var visibleColumnChanged2 = visibleColumnChanged;\n  var sliced = false;\n  var addedColumn = [];\n  if (scrollXLoad && treeConfig) {\n    if (visibleColumnChanged || !~lastStartIndex || lastStartIndex !== startIndex) {\n      tableColumn22 = visibleColumn.slice(startIndex, startIndex + renderSize);\n      lastStartIndex2 = startIndex;\n      visibleColumnChanged2 = false;\n      sliced = true;\n    }\n  } else {\n    tableColumn22 = visibleColumn.slice(startIndex, startIndex + renderSize);\n    sliced = true;\n  }\n  tableColumn22 = Array.from(/* @__PURE__ */ new Set([].concat(leftList, tableColumn22, rightList)));\n  var changeTo = tableColumn22.reduce(function(p, c) {\n    return p + c.id;\n  }, \"\");\n  if (changeFrom === changeTo) {\n    tableColumn22 = tableColumn2;\n    sliced = false;\n  } else {\n    addedColumn = difference$1(tableColumn22, tableColumn2);\n  }\n  return {\n    tableColumn: tableColumn22,\n    lastStartIndex: lastStartIndex2,\n    visibleColumnChanged: visibleColumnChanged2,\n    sliced,\n    addedColumn\n  };\n};\nvar isVirtualRow = function isVirtualRow2(row2) {\n  return row2 && row2[VIRTUAL_ROW_KEY];\n};\nvar orderingGroupBy = function orderingGroupBy2(arr, key, equals, active, rowKey) {\n  var result = [];\n  var virtualItems = [];\n  var virtualRowId = 0;\n  var createVirtualItem = function createVirtualItem2(vItem) {\n    var _vItem;\n    vItem = (_vItem = {}, _vItem[VIRTUAL_ROW_KEY] = true, _vItem[rowKey] = \"row_g_\" + ++virtualRowId, _vItem.value = null, _vItem.children = [], _vItem.fold = false, _vItem.hover = false, _vItem);\n    result.push(vItem);\n    virtualItems.push(vItem);\n    return vItem;\n  };\n  var virtualItem = createVirtualItem();\n  var prevSibling, equalsParam;\n  arrayEach$1(arr, function(item, i) {\n    if (i > 0) {\n      prevSibling = arr[i - 1];\n      equalsParam = {\n        prevRow: prevSibling,\n        row: item\n      };\n    }\n    if (i > 0 && !equals(prevSibling[key], item[key], equalsParam)) {\n      virtualItem = createVirtualItem();\n    }\n    virtualItem.children.push(item);\n    result.push(item);\n  });\n  arrayEach$1(virtualItems, function(vItem) {\n    vItem.value = vItem.children[0][key];\n    if (typeof active === \"function\") {\n      var expand = active(vItem);\n      vItem.fold = typeof expand === \"boolean\" ? !expand : false;\n    }\n  });\n  var rawResult = result.map(toRaw);\n  arrayEach$1(virtualItems.slice().reverse(), function(vItem) {\n    if (!vItem.fold) return;\n    var index2 = rawResult.indexOf(toRaw(vItem.children[0]));\n    if (index2 > -1) {\n      result.splice(index2, vItem.children.length);\n    }\n  });\n  return result;\n};\nvar buildRowGroupFullData = function buildRowGroupFullData2(fullData, _vm) {\n  var treeConfig = _vm.treeConfig, rowGroup = _vm.rowGroup;\n  var _ref35 = rowGroup || {}, field = _ref35.field, equals = _ref35.equals, activeMethod = _ref35.activeMethod;\n  _vm.hasVirtualRow = !treeConfig && rowGroup && field && fullData.length > 0;\n  if (_vm.hasVirtualRow) {\n    _vm.groupFullData = orderingGroupBy(fullData, field, equals || isEqual$1, activeMethod, getRowkey(_vm));\n  }\n};\nvar handleRowGroupFold = function handleRowGroupFold2(row2, _vm) {\n  var hasVirtualRow = _vm.hasVirtualRow, groupFullData = _vm.groupFullData, _vm$rowGroup = _vm.rowGroup, rowGroup = _vm$rowGroup === void 0 ? {} : _vm$rowGroup;\n  var _rowGroup$closeable = rowGroup.closeable, closeable = _rowGroup$closeable === void 0 ? true : _rowGroup$closeable;\n  if (!hasVirtualRow || !closeable || !isVirtualRow(row2)) return;\n  row2.fold = !row2.fold;\n  var copy = groupFullData.slice(0).map(toRaw);\n  var index2 = copy.indexOf(toRaw(row2.children[0]));\n  if (row2.fold) {\n    if (index2 > -1) {\n      copy.splice(index2, row2.children.length);\n    }\n  } else if (index2 === -1) {\n    copy.splice.apply(copy, [copy.indexOf(toRaw(row2)) + 1, 0].concat(row2.children));\n  }\n  _vm.groupFullData = copy;\n  buildRenderGraph(_vm);\n  _vm.handleTableData().then(_vm.recalculate);\n};\nvar getFixedStyle = function getFixedStyle2(_ref36, _ref37) {\n  var fixedDetails = _ref36.fixedDetails;\n  var overflowX = _ref37.overflowX;\n  return fixedDetails && overflowX ? fixedDetails.getStyle() : {};\n};\nvar getFixedClass = function getFixedClass2(_ref38, _ref39) {\n  var fixedDetails = _ref38.fixedDetails;\n  var overflowX = _ref39.overflowX;\n  return _extends({\n    \"fixed__column\": fixedDetails && overflowX\n  }, fixedDetails && overflowX ? fixedDetails.getClass() : {});\n};\nvar difference = function difference2(arr, other) {\n  return arr.filter(function(i) {\n    return other.findIndex(function(j) {\n      return i.id === j.id;\n    }) === -1;\n  });\n};\nvar uid = 0;\nvar createPool = function createPool2(array) {\n  if (!Array.isArray(array)) {\n    return;\n  }\n  var context = {\n    pool: [],\n    idViewMap: /* @__PURE__ */ new Map(),\n    unusedViews: [],\n    array\n  };\n  array.forEach(function(item) {\n    var view = {\n      id: ++uid,\n      used: true,\n      item\n    };\n    context.pool.push(view);\n    context.idViewMap.set(item.id, view);\n  });\n  return context;\n};\nvar updatePool = function updatePool2(array, context) {\n  if (!Array.isArray(array)) {\n    return;\n  }\n  var expires = difference(context.array, array);\n  var indices = /* @__PURE__ */ new WeakMap();\n  expires.forEach(function(item) {\n    var view = context.idViewMap.get(item.id);\n    if (view) {\n      view.used = false;\n      context.idViewMap.delete(item.id);\n      context.unusedViews.push(view);\n    }\n  });\n  array.forEach(function(item, i) {\n    indices.set(item, i);\n    var view = context.idViewMap.get(item.id);\n    if (!view) {\n      if (context.unusedViews.length > 0) {\n        view = context.unusedViews.shift();\n      } else {\n        view = {\n          id: ++uid,\n          used: true,\n          item\n        };\n        context.pool.push(view);\n      }\n      context.idViewMap.set(item.id, view);\n    }\n    view.used = true;\n    view.item = item;\n  });\n  context.array = array;\n  context.pool.sort(function(a, b) {\n    return a.used ? b.used ? indices.get(a.item) - indices.get(b.item) : -1 : b.used ? 1 : 0;\n  });\n  return context;\n};\nfunction addTableDataRowIndex(rowPool) {\n  var treeTableData = [];\n  var $rowIndex = GlobalConfig$1.$rowIndex;\n  var tempChildren = Symbol(\"tempChildren\");\n  rowPool.forEach(function(rowPoolItem) {\n    var _rowPoolItem$item = rowPoolItem.item, row2 = _rowPoolItem$item.payload, level = _rowPoolItem$item.level, parentNode = _rowPoolItem$item.parentNode, used = rowPoolItem.used;\n    if (!used) {\n      return;\n    }\n    if (level === 0) {\n      treeTableData.push(row2);\n      row2[$rowIndex] = treeTableData.length - 1;\n      return;\n    }\n    var parent = parentNode == null ? void 0 : parentNode.payload;\n    if (!parent) {\n      return;\n    }\n    if (!parent[tempChildren]) {\n      parent[tempChildren] = [];\n    }\n    parent[tempChildren].push(row2);\n    row2[$rowIndex] = parent[tempChildren].length - 1;\n  });\n  rowPool.forEach(function(rowPoolItem) {\n    delete rowPoolItem.item.payload[tempChildren];\n  });\n}\nvar usePool = function usePool2(props) {\n  var columnPool = hooks.ref([]);\n  var rowPool = hooks.ref([]);\n  var isNoData = hooks.ref(true);\n  var columnContext;\n  hooks.watch(function() {\n    return props.tableColumn;\n  }, function() {\n    if (columnContext) {\n      updatePool(props.tableColumn, columnContext);\n    } else {\n      columnContext = createPool(props.tableColumn);\n    }\n    columnPool.value = columnContext.pool;\n  });\n  var rowContext;\n  hooks.watch(function() {\n    return props.tableNode;\n  }, function() {\n    var _rowContext, _props$tableNode;\n    if (rowContext) {\n      updatePool(props.tableNode, rowContext);\n    } else {\n      rowContext = createPool(props.tableNode);\n    }\n    rowPool.value = ((_rowContext = rowContext) == null ? void 0 : _rowContext.pool) || rowPool.value;\n    addTableDataRowIndex(rowPool.value);\n    isNoData.value = !(((_props$tableNode = props.tableNode) == null ? void 0 : _props$tableNode.length) > 0);\n  });\n  return {\n    columnPool,\n    rowPool,\n    isNoData\n  };\n};\nvar ChevronRight = iconChevronRight();\nvar ChevronDown = iconChevronDown();\nvar GridNoData = iconGridNoData();\nvar renderRowFlag = true;\nvar renderBorder = function renderBorder2(type) {\n  return createVNode(\"div\", {\n    \"ref\": type + \"Borders\",\n    \"class\": \"tiny-grid-\" + type + \"ed-borders\"\n  }, [createVNode(\"span\", {\n    \"ref\": type + \"Top\",\n    \"class\": \"tiny-grid-border-top\"\n  }, null), createVNode(\"span\", {\n    \"ref\": type + \"Right\",\n    \"class\": \"tiny-grid-border-right\"\n  }, null), createVNode(\"span\", {\n    \"ref\": type + \"Bottom\",\n    \"class\": \"tiny-grid-border-bottom\"\n  }, null), createVNode(\"span\", {\n    \"ref\": type + \"Left\",\n    \"class\": \"tiny-grid-border-left\"\n  }, null)]);\n};\nfunction renderColumn(_ref40) {\n  var _normalRows$rowid, _ref42;\n  var $columnIndex = _ref40.$columnIndex, $table = _ref40.$table, _vm = _ref40._vm, column = _ref40.column, id3 = _ref40.id, row2 = _ref40.row, rowid2 = _ref40.rowid, seq = _ref40.seq, used = _ref40.used;\n  var allAlign = $table.align, cellClassName = $table.cellClassName, _$table$dropConfig = $table.dropConfig, dropConfig = _$table$dropConfig === void 0 ? {} : _$table$dropConfig, editConfig = $table.editConfig, editRules = $table.editRules, editStore = $table.editStore;\n  var height2 = $table.height, rowId = $table.rowId, scrollXLoad = $table.scrollXLoad, scrollYLoad = $table.scrollYLoad, validOpts2 = $table.validOpts, validStore = $table.validStore, validatedMap = $table.validatedMap;\n  var normalRows = _vm.normalRows;\n  var _ref41 = ((_normalRows$rowid = normalRows[rowid2]) == null ? void 0 : _normalRows$rowid[column.id]) || {}, _ref41$attrs = _ref41.attrs, attrs = _ref41$attrs === void 0 ? {\n    rowspan: 1,\n    colspan: 1,\n    visible: true\n  } : _ref41$attrs, _ref41$params = _ref41.params, params = _ref41$params === void 0 ? {\n    $table,\n    row: row2,\n    column\n  } : _ref41$params;\n  var isMessageDefault = validOpts2.isMessageDefault, isMessageInline = validOpts2.isMessageInline, highlightError = validOpts2.highlightError;\n  var actived = editStore.actived;\n  var validated = validatedMap[column.id + \"-\" + row2[rowId]];\n  var validError = validStore.row === row2 && validStore.column === column;\n  var hasDefaultTip = editRules && (isMessageDefault ? height2 || !_vm.isNoData : isMessageInline);\n  var align = column.align, className = column.className, editor = column.editor;\n  var cellAlign = align || allAlign;\n  if ([\"radio\", \"selection\", \"index\"].includes(column.type)) {\n    cellAlign = cellAlign || \"center\";\n  }\n  var _getConfigOverflow2 = getConfigOverflow(column, $table), cellTip = _getConfigOverflow2.cellTip, cellOverflowTitle = _getConfigOverflow2.cellOverflowTitle, cellOverflowTooltip = _getConfigOverflow2.cellOverflowTooltip, cellOverflowEllipsis = _getConfigOverflow2.cellOverflowEllipsis, cellOverflowHint = _getConfigOverflow2.cellOverflowHint;\n  if ((scrollXLoad || scrollYLoad) && !cellOverflowHint) {\n    cellOverflowEllipsis = true;\n  }\n  var columnActived = editConfig && editor && actived.row === row2 && (actived.column === column || editConfig.mode === \"row\");\n  var isDirty = $table.getCellStatus(row2, column).isDirty;\n  params.$columnIndex = $columnIndex;\n  return createVNode(\"td\", {\n    \"key\": id3,\n    \"style\": [getFixedStyle(column, $table), attrs._stickyStyle, {\n      display: used && attrs.visible ? void 0 : \"none\"\n    }],\n    \"data-colid\": column.id,\n    \"data-seq\": seq,\n    \"data-colindex\": $columnIndex,\n    \"rowspan\": attrs.rowspan > 1 ? attrs.rowspan : void 0,\n    \"colspan\": attrs.colspan > 1 ? attrs.colspan : void 0,\n    \"class\": [\"tiny-grid-body__column\", column.id, (_ref42 = {}, _ref42[\"col__\" + cellAlign] = cellAlign, _ref42[\"col__edit\"] = editor, _ref42[\"col__index\"] = column.type === \"index\", _ref42[\"col__radio\"] = column.type === \"radio\", _ref42[\"col__selection\"] = column.type === \"selection\", _ref42[\"col__ellipsis\"] = cellOverflowHint, _ref42[\"edit__visible\"] = editor && editor.type === \"visible\", _ref42[\"col__dirty\"] = isDirty, _ref42[\"col__actived\"] = columnActived, _ref42[\"col__highlight-error\"] = highlightError && validated, _ref42[\"col__valid-error\"] = validError && validated, _ref42[\"col__valid-success\"] = columnActived ? !validError && !validated : isDirty && !validated, _ref42[\"col__treenode\"] = column.treeNode, _ref42), getClass(className, params), getClass(cellClassName, params), getFixedClass(column, $table), attrs._stickyClass || \"\"]\n  }, [[\n    // 行拖拽手柄\n    dropConfig.rowHandle === \"index\" && column.type === \"index\" ? createVNode(\"div\", {\n      \"class\": \"row__drop-handle\"\n    }, null) : null,\n    // 单元格主内容\n    // 如果不是表格形态，就只保留表格结构（到tiny-grid-cell），不渲染具体的内容\n    createVNode(\"div\", {\n      \"class\": {\n        \"tiny-grid-cell\": true,\n        \"tiny-grid-cell__title\": cellOverflowTitle,\n        \"tiny-grid-cell__tooltip\": cellOverflowTooltip || cellTip,\n        \"tiny-grid-cell__ellipsis\": cellOverflowEllipsis\n      },\n      \"title\": cellOverflowTitle ? getCellLabel(row2, column, params) : null\n    }, [$table.isShapeTable ? column.renderCell(h, params) : null]),\n    // 行内校验\n    hasDefaultTip && validError ? createVNode(\"div\", {\n      \"class\": \"tiny-grid-cell__valid\",\n      \"style\": validStore.rule && validStore.rule.width ? {\n        width: validStore.rule.width + \"px\"\n      } : null\n    }, [createVNode(\"span\", {\n      \"class\": \"tiny-grid-cell__valid-msg\",\n      \"title\": validStore.content\n    }, [validStore.content])]) : null\n  ]]);\n}\nfunction renderHeaderRows(_vm) {\n  var $table = _vm.$parent, headerTable = _vm.headerTable;\n  var headerCellClassName = $table.headerCellClassName, headerRowClassName = $table.headerRowClassName, headerSuffixIconAbsolute = $table.headerSuffixIconAbsolute;\n  var allAlign = $table.align, border = $table.border, allHeaderAlign = $table.headerAlign, resizable = $table.resizable;\n  var editConfig = $table.editConfig, operationColumnResizable = $table.operationColumnResizable, _$table$mouseConfig5 = $table.mouseConfig, mouseConfig = _$table$mouseConfig5 === void 0 ? {} : _$table$mouseConfig5, _$table$dropConfig2 = $table.dropConfig, dropConfig = _$table$dropConfig2 === void 0 ? {} : _$table$dropConfig2;\n  return headerTable.map(function(cols, $rowIndex) {\n    return createVNode(\"tr\", {\n      \"data-rowindex\": $rowIndex,\n      \"class\": [\"tiny-grid-header__row\", headerRowClassName ? isFunction(headerRowClassName) ? headerRowClassName({\n        $table,\n        $rowIndex\n      }) : headerRowClassName : \"\"]\n    }, [cols.map(function(_ref43, $columnIndex) {\n      var _column$children, _ref44;\n      var id3 = _ref43.id, column = _ref43.column, colspan = _ref43.colspan, rowspan = _ref43.rowspan, height2 = _ref43.height, top = _ref43.top;\n      var isColGroup = (_column$children = column.children) == null ? void 0 : _column$children.length;\n      var headerAlign = column.headerAlign, align = column.align, headerClassName = column.headerClassName;\n      var _getConfigOverflow3 = getConfigOverflow(column, $table), headerTip = _getConfigOverflow3.headerTip, headerOverflowTitle = _getConfigOverflow3.headerOverflowTitle, headerOverflowTooltip = _getConfigOverflow3.headerOverflowTooltip, headerOverflowEllipsis = _getConfigOverflow3.headerOverflowEllipsis, headerOverflowHint = _getConfigOverflow3.headerOverflowHint;\n      var columnIndex = $table.getColumnIndex(column);\n      var params = {\n        $table,\n        $rowIndex,\n        column,\n        columnIndex,\n        $columnIndex,\n        isHidden: false\n      };\n      var isColResize = [\"index\", \"radio\", \"selection\"].includes(column.type) ? operationColumnResizable : true;\n      var headAlign = headerAlign || align || allHeaderAlign || allAlign;\n      if ([\"radio\", \"selection\", \"index\"].includes(column.type)) {\n        headAlign = headAlign || \"center\";\n      }\n      return createVNode(\"th\", {\n        \"key\": id3,\n        \"data-colid\": column.id,\n        \"data-colindex\": $columnIndex,\n        \"colspan\": colspan > 1 ? colspan : void 0,\n        \"rowspan\": rowspan > 1 ? rowspan : void 0,\n        \"style\": [getFixedStyle(column, $table), {\n          height: rowspan > 1 ? height2 + \"px\" : void 0,\n          top: top + \"px\",\n          zIndex: column.fixed ? 20 : 10\n        }],\n        \"class\": [\"tiny-grid-header__column\", column.id, (_ref44 = {}, _ref44[\"col__\" + headAlign] = headAlign, _ref44[\"col__fixed\"] = column.fixed, _ref44[\"col__index\"] = column.type === \"index\", _ref44[\"col__radio\"] = column.type === \"radio\", _ref44[\"col__selection\"] = column.type === \"selection\", _ref44[\"col__group\"] = isColGroup, _ref44[\"col__ellipsis\"] = headerOverflowHint, _ref44[\"is__sortable\"] = ![\"index\", \"radio\", \"selection\"].includes(column.type) && column.sortable, _ref44[\"is__editable\"] = column.editor, _ref44[\"is__filter\"] = isObject(column.filter), _ref44[\"filter__active\"] = column.filter && column.filter.hasFilter, _ref44[\"is__multilevel\"] = rowspan > 1, _ref44), getClass(headerClassName, params), getClass(headerCellClassName, params), getFixedClass(column, $table)]\n      }, [[\n        !isColGroup && !(isBoolean(column.resizable) ? column.resizable : resizable) && column.type !== \"index\" ? createVNode(\"div\", {\n          \"class\": {\n            \"tiny-grid-thead-partition\": true,\n            \"is__line\": !border\n          }\n        }, null) : null,\n        // 如果不是表格形态，就只保留表格结构（到tiny-grid-cell），不渲染具体的内容\n        createVNode(\"div\", {\n          \"class\": {\n            \"tiny-grid-cell\": true,\n            \"tiny-grid-cell__title\": headerOverflowTitle,\n            \"tiny-grid-cell__tooltip\": headerTip || headerOverflowTooltip,\n            \"tiny-grid-cell__ellipsis\": headerOverflowEllipsis,\n            \"tiny-grid-cell__header-suffix\": headerSuffixIconAbsolute,\n            \"tiny-grid-cell__header-no-icon\": editConfig && !editConfig.showIcon && !column.showIcon\n          }\n        }, [$table.isShapeTable ? column.renderHeader(h, params) : null]),\n        mouseConfig.checked && dropConfig.column && !column.type && !column.fixed ? createVNode(\"div\", {\n          \"class\": \"tiny-grid-cell__drag-bar\",\n          \"onMousedown\": function onMousedown(event) {\n            return event.stopPropagation();\n          }\n        }, null) : null,\n        !isColGroup && isColResize && (isBoolean(column.resizable) ? column.resizable : resizable) ? createVNode(\"div\", {\n          \"class\": {\n            \"tiny-grid-resizable\": true,\n            \"is__line\": !border\n          },\n          \"onMousedown\": function onMousedown(event) {\n            return _vm.resizeMousedown(event, params);\n          }\n        }, null) : null\n      ]]);\n    })]);\n  });\n}\nfunction renderFooterRows(_vm) {\n  var $table = _vm.$parent, footerData = _vm.footerData, columnPool = _vm.columnPool, rowHeight = _vm.rowHeight, footerRows = _vm.footerRows;\n  var allAlign = $table.align, allFooterAlign = $table.footerAlign, footerCellClassName = $table.footerCellClassName, footerRowClassName = $table.footerRowClassName;\n  var footerDataLength = footerData.length;\n  return footerData.map(function(list, $rowIndex) {\n    var trBottom = (footerDataLength - 1 - $rowIndex) * rowHeight;\n    return createVNode(\"tr\", {\n      \"data-rowindex\": $rowIndex,\n      \"class\": [\"tiny-grid-footer__row\", footerRowClassName ? isFunction(footerRowClassName) ? footerRowClassName({\n        $table,\n        $rowIndex\n      }) : footerRowClassName : \"\"]\n    }, [columnPool.map(function(_ref45, $columnIndex) {\n      var _footerRows$$rowIndex, _ref47;\n      var id3 = _ref45.id, column = _ref45.item, used = _ref45.used;\n      var footerAlign = column.footerAlign, align = column.align, footerClassName = column.footerClassName;\n      var ftAlign = footerAlign || align || allFooterAlign || allAlign;\n      var _getConfigOverflow4 = getConfigOverflow(column, $table), cellOverflowHint = _getConfigOverflow4.cellOverflowHint;\n      var _ref46 = ((_footerRows$$rowIndex = footerRows[$rowIndex]) == null ? void 0 : _footerRows$$rowIndex[column.id]) || {}, _ref46$attrs = _ref46.attrs, attrs = _ref46$attrs === void 0 ? {\n        rowspan: 1,\n        colspan: 1,\n        visible: true\n      } : _ref46$attrs, _ref46$params = _ref46.params, params = _ref46$params === void 0 ? {\n        $table,\n        column\n      } : _ref46$params;\n      var rowspan = (attrs == null ? void 0 : attrs.rowspan) || 1;\n      var tdBottom = trBottom - (rowspan > 1 ? (rowspan - 1) * rowHeight : 0);\n      params.$columnIndex = $columnIndex;\n      return createVNode(\"td\", {\n        \"key\": id3,\n        \"data-colid\": column.id,\n        \"data-colindex\": $columnIndex,\n        \"rowspan\": attrs.rowspan > 1 ? attrs.rowspan : void 0,\n        \"colspan\": attrs.colspan > 1 ? attrs.colspan : void 0,\n        \"style\": [getFixedStyle(column, $table), attrs._stickyStyle, {\n          bottom: tdBottom + \"px\",\n          zIndex: column.fixed ? 20 : 10,\n          display: used && attrs.visible ? void 0 : \"none\"\n        }],\n        \"class\": [\"tiny-grid-footer__column\", column.id, (_ref47 = {}, _ref47[\"col__\" + ftAlign] = ftAlign, _ref47[\"col__ellipsis\"] = cellOverflowHint, _ref47[\"filter__active\"] = column.filter && column.filter.hasFilter, _ref47), getClass(footerClassName, params), getClass(footerCellClassName, params), getFixedClass(column, $table), attrs._stickyClass || \"\"]\n      }, [createVNode(\"div\", {\n        \"class\": {\n          \"tiny-grid-cell\": true,\n          \"cell__summary\": $table.summaryConfig\n        }\n      }, [$table.isShapeTable ? formatText(list[$columnIndex]) : null])]);\n    })]);\n  });\n}\nfunction renderRows(_vm) {\n  var $table = _vm.$parent, tableColumn2 = _vm.tableColumn, rowPool = _vm.rowPool;\n  var afterFullData = $table.afterFullData, editConfig = $table.editConfig, editStore = $table.editStore, _$table$expandConfig2 = $table.expandConfig, expandConfig = _$table$expandConfig2 === void 0 ? {} : _$table$expandConfig2, expandeds = $table.expandeds, hasVirtualRow = $table.hasVirtualRow;\n  var rowClassName = $table.rowClassName, rowGroup = $table.rowGroup, scrollYLoad = $table.scrollYLoad, scrollYStore = $table.scrollYStore, selection = $table.selection, treeConfig = $table.treeConfig, treeOrdered = $table.treeOrdered, selectRow = $table.selectRow;\n  var expandMethod = expandConfig.activeMethod;\n  var startIndex = scrollYStore.startIndex;\n  var isOrdered = treeConfig ? !!treeOrdered : false;\n  var _ref48 = treeConfig || {}, hideMethod = _ref48.hideMethod;\n  var actived = editStore.actived;\n  var rows = [];\n  var seqCount = {\n    value: 0\n  };\n  var $seq = \"\";\n  rowPool.forEach(function(_ref49) {\n    var id3 = _ref49.id, _ref49$item = _ref49.item, row2 = _ref49$item.payload, rowLevel = _ref49$item.level, used = _ref49.used;\n    var rowActived = editConfig && actived.row === row2;\n    var virtualRow = isVirtualRow(row2);\n    var isSkipRowRender = hideMethod && hideMethod(row2, rowLevel) || virtualRow;\n    var rowid2 = getRowid($table, row2);\n    var rowIndex = $table.getRowIndex(row2);\n    var $rowIndex = row2[GlobalConfig$1.$rowIndex];\n    if (!isSkipRowRender) {\n      seqCount.value = seqCount.value + 1;\n    }\n    var seq = isOrdered ? seqCount.value : $rowIndex + 1;\n    if (scrollYLoad) {\n      seq += startIndex;\n    }\n    if (hasVirtualRow && !virtualRow) {\n      seq = afterFullData.indexOf(row2) + 1;\n    }\n    renderRowGroupData({\n      $table,\n      _vm,\n      id: id3,\n      row: row2,\n      rowGroup,\n      rowid: rowid2,\n      rows,\n      used,\n      virtualRow\n    });\n    var args = {\n      $rowIndex,\n      $seq,\n      $table,\n      _vm,\n      editStore,\n      id: id3,\n      isSkipRowRender,\n      row: row2,\n      rowActived,\n      rowClassName\n    };\n    Object.assign(args, {\n      rowIndex,\n      rowLevel,\n      rowid: rowid2,\n      rows,\n      selection,\n      seq,\n      treeConfig,\n      used,\n      selectRow,\n      scrollYLoad\n    });\n    renderRow(args);\n    renderRowAfter({\n      $table,\n      _vm,\n      id: id3,\n      row: row2,\n      rowIndex,\n      rows,\n      used\n    });\n    args = {\n      $table,\n      expandMethod,\n      expandeds,\n      id: id3,\n      row: row2,\n      rowIndex,\n      rowLevel,\n      rows,\n      seq,\n      tableColumn: tableColumn2,\n      treeConfig,\n      used\n    };\n    renderRowExpanded(args);\n  });\n  renderRowFlag = !renderRowFlag;\n  return rows;\n}\nfunction renderRowExpanded(args) {\n  var $table = args.$table, expandMethod = args.expandMethod, expandeds = args.expandeds, id3 = args.id, row2 = args.row, rowIndex = args.rowIndex;\n  var rowLevel = args.rowLevel, rows = args.rows, seq = args.seq, tableColumn2 = args.tableColumn, treeConfig = args.treeConfig, used = args.used;\n  if (expandeds.length && expandeds.includes(row2) && (typeof expandMethod === \"function\" ? expandMethod(row2, rowLevel) : true)) {\n    var column = find$1(tableColumn2, function(column2) {\n      return column2.type === \"expand\";\n    });\n    var columnIndex = $table.getColumnIndex(column);\n    var cellStyle;\n    if (treeConfig) {\n      cellStyle = {\n        paddingLeft: rowLevel * (treeConfig.indent || 16) + 30 + \"px\"\n      };\n    }\n    if (column) {\n      var options = {\n        $table,\n        seq,\n        row: row2,\n        rowIndex,\n        column,\n        columnIndex,\n        level: rowLevel\n      };\n      rows.push(createVNode(\"tr\", {\n        \"key\": \"expand_\" + id3,\n        \"style\": {\n          display: used ? void 0 : \"none\"\n        },\n        \"class\": \"tiny-grid-body__expanded-row\"\n      }, [createVNode(\"td\", {\n        \"colspan\": tableColumn2.length,\n        \"class\": \"tiny-grid-body__expanded-column\"\n      }, [createVNode(\"div\", {\n        \"style\": cellStyle,\n        \"class\": \"tiny-grid-body__expanded-cell\"\n      }, [column.renderData(h, options)])])]));\n    }\n  }\n}\nfunction renderRowAfter(_ref50) {\n  var $table = _ref50.$table, _vm = _ref50._vm, row2 = _ref50.row, rowIndex = _ref50.rowIndex, rows = _ref50.rows, id3 = _ref50.id, used = _ref50.used;\n  typeof $table.renderRowAfter === \"function\" && $table.renderRowAfter({\n    rows,\n    row: row2,\n    data: _vm.tableData,\n    rowIndex,\n    renderColumn,\n    id: id3,\n    used\n  }, h);\n}\nfunction renderRow(args) {\n  var $rowIndex = args.$rowIndex, $seq = args.$seq, $table = args.$table, _vm = args._vm, editStore = args.editStore, id3 = args.id, isSkipRowRender = args.isSkipRowRender, row2 = args.row, rowActived = args.rowActived, rowClassName = args.rowClassName;\n  var rowIndex = args.rowIndex, rowLevel = args.rowLevel, rowid2 = args.rowid, rows = args.rows, selection = args.selection, selectRow = args.selectRow, seq = args.seq, treeConfig = args.treeConfig, used = args.used, scrollYLoad = args.scrollYLoad;\n  if (isSkipRowRender) {\n    return;\n  }\n  var key = id3;\n  if (row2._isDraging) {\n    _vm.$nextTick(function() {\n      delete row2._isDraging;\n    });\n    if (renderRowFlag) {\n      key = \"drag_\" + key;\n    }\n  }\n  var columnPool = _vm.columnPool;\n  if (used || scrollYLoad) {\n    var _ref51;\n    rows.push(createVNode(\"tr\", {\n      \"key\": key,\n      \"data-rowid\": rowid2,\n      \"data-rowindex\": $rowIndex,\n      \"data-rowlevel\": rowLevel,\n      \"style\": {\n        display: used ? void 0 : \"none\"\n      },\n      \"class\": [\"tiny-grid-body__row\", (_ref51 = {}, _ref51[\"row__level-\" + rowLevel] = treeConfig, _ref51[\"row__new\"] = editStore.insertList.includes(row2), _ref51[\"row__selected\"] = selection.includes(row2), _ref51[\"row__radio\"] = selectRow === row2, _ref51[\"row__actived\"] = rowActived, _ref51), rowClassName ? isFunction(rowClassName) ? rowClassName({\n        $table,\n        $seq,\n        seq,\n        fixedType: void 0,\n        rowLevel,\n        row: row2,\n        rowIndex,\n        $rowIndex\n      }) : rowClassName : \"\"]\n    }, [columnPool.map(function(_ref52, $columnIndex) {\n      var id4 = _ref52.id, column = _ref52.item, used2 = _ref52.used;\n      return renderColumn({\n        $columnIndex,\n        $table,\n        _vm,\n        column,\n        id: id4,\n        row: row2,\n        rowid: rowid2,\n        seq,\n        used: used2\n      });\n    })]));\n  }\n}\nfunction renderRowGroupTds(_ref53) {\n  var $table = _ref53.$table, closeable = _ref53.closeable, render17 = _ref53.render, renderGroupCell = _ref53.renderGroupCell, row2 = _ref53.row, tds = _ref53.tds, title = _ref53.title, _vm = _ref53._vm;\n  var targetColumn = $table._rowGroupTargetColumn;\n  var value = row2.value || \"\";\n  var columnPool = _vm.columnPool;\n  for (var _iterator4 = _createForOfIteratorHelperLoose(columnPool), _step4; !(_step4 = _iterator4()).done; ) {\n    var _step4$value = _step4.value, id3 = _step4$value.id, column = _step4$value.item, used = _step4$value.used;\n    var columnIndex = $table.getColumnIndex(column);\n    var header = title || formatText(getFuncText(column.title), 1) || value;\n    var params = {\n      value,\n      header,\n      children: row2.children,\n      expand: !row2.fold,\n      row: row2,\n      column,\n      columnIndex\n    };\n    var isTarget = column === targetColumn;\n    tds.push(createVNode(\"td\", {\n      \"key\": id3,\n      \"style\": [getFixedStyle(column, $table), {\n        display: used && column._rowGroupColspan > 0 ? void 0 : \"none\"\n      }],\n      \"class\": [\"tiny-grid-body__column\", isTarget ? \"td-group\" : \"td-placeholder\", column.id, getFixedClass(column, $table), column._stickyClass || \"\"],\n      \"colspan\": column._rowGroupColspan,\n      \"data-colid\": column.id\n    }, [createVNode(\"div\", {\n      \"class\": \"tiny-grid-cell-group\"\n    }, [isTarget ? [closeable ? row2.fold ? createVNode(ChevronRight, {\n      \"class\": \"tiny-svg-size\"\n    }, null) : createVNode(ChevronDown, {\n      \"class\": \"tiny-svg-size\"\n    }, null) : null].concat(render17 ? render17(h, params) : [createVNode(\"span\", {\n      \"class\": \"row-group-title\"\n    }, [header]), \":\" + value, createVNode(\"span\", {\n      \"class\": \"tiny-badge\"\n    }, [row2.children.length])]) : renderGroupCell ? renderGroupCell(h, params) : null])]));\n  }\n}\nfunction renderRowGroupData(_ref54) {\n  var $table = _ref54.$table, _vm = _ref54._vm, id3 = _ref54.id, row2 = _ref54.row, rowGroup = _ref54.rowGroup, rowid2 = _ref54.rowid, rows = _ref54.rows, used = _ref54.used, virtualRow = _ref54.virtualRow;\n  if (!virtualRow) return;\n  var title = rowGroup.title, _rowGroup$closeable2 = rowGroup.closeable, closeable = _rowGroup$closeable2 === void 0 ? true : _rowGroup$closeable2, render17 = rowGroup.render, renderGroupCell = rowGroup.renderGroupCell, className = rowGroup.className;\n  var tds = [];\n  renderRowGroupTds({\n    $table,\n    closeable,\n    render: render17,\n    renderGroupCell,\n    row: row2,\n    tds,\n    title,\n    _vm\n  });\n  var onClick = function onClick2(event) {\n    handleRowGroupFold(row2, $table);\n    if ($table.tableListeners[\"toggle-group-change\"]) {\n      emitEvent($table, \"toggle-group-change\", [{\n        $table,\n        row: row2\n      }, event]);\n    }\n  };\n  rows.push(createVNode(\"tr\", {\n    \"key\": id3,\n    \"class\": [\"tiny-grid-body__row\", \"group\", className, {\n      hover: row2.hover\n    }],\n    \"style\": {\n      display: used ? void 0 : \"none\"\n    },\n    \"data-rowid\": rowid2,\n    \"onMouseout\": function onMouseout() {\n      return row2.hover = false;\n    },\n    \"onMouseover\": function onMouseover() {\n      return row2.hover = true;\n    },\n    \"onClick\": onClick\n  }, [tds]));\n}\nfunction renderTable(_ref55) {\n  var $table = _ref55.$table, _vm = _ref55._vm;\n  var tableLayout = $table.tableLayout, scrollXLoad = $table.scrollXLoad, scrollYLoad = $table.scrollYLoad, bodyTableWidth = $table.bodyTableWidth, isColumnWidthAssigned = $table.isColumnWidthAssigned;\n  var columnPool = _vm.columnPool, isNoData = _vm.isNoData;\n  if (!isColumnWidthAssigned) {\n    return;\n  }\n  var tableVnode = createVNode(\"table\", {\n    \"ref\": \"table\",\n    \"class\": \"tiny-grid__body\",\n    \"style\": {\n      tableLayout,\n      width: bodyTableWidth ? bodyTableWidth + \"px\" : void 0\n    },\n    \"cellspacing\": 0,\n    \"cellpadding\": 0,\n    \"border\": 0,\n    \"data-tableid\": $table.id\n  }, [[\n    // 列分组（用于指定列宽）\n    createVNode(\"colgroup\", {\n      \"ref\": \"colgroup\"\n    }, [columnPool.map(function(_ref56) {\n      var id3 = _ref56.id, column = _ref56.item, used = _ref56.used;\n      return createVNode(\"col\", {\n        \"key\": id3,\n        \"name\": column.id,\n        \"width\": String(column.renderWidth),\n        \"style\": {\n          display: used ? void 0 : \"none\"\n        }\n      }, null);\n    })]),\n    // 表头\n    $table.showHeader ? createVNode(\"thead\", {\n      \"ref\": \"thead\"\n    }, [renderHeaderRows(_vm)]) : null,\n    // 表体内容\n    createVNode(\"tbody\", {\n      \"ref\": \"tbody\"\n    }, [renderRows(_vm)]),\n    // 表尾\n    $table.showFooter && !isNoData && typeof $table.renderFooter !== \"function\" ? createVNode(\"tfoot\", {\n      \"ref\": \"tfoot\"\n    }, [renderFooterRows(_vm)]) : null\n  ]]);\n  return scrollXLoad || scrollYLoad ? createVNode(\"div\", {\n    \"ref\": \"stickyWrapper\",\n    \"class\": \"sticky-wrapper\"\n  }, [tableVnode]) : tableVnode;\n}\nvar calcScrollLeft = function calcScrollLeft2($table, wrapperScrollLeft) {\n  var visibleColumn = $table.visibleColumn, tableColumn2 = $table.tableColumn;\n  var start, end, total, offset, column;\n  start = end = total = offset = 0;\n  for (var _iterator5 = _createForOfIteratorHelperLoose(visibleColumn), _step5; !(_step5 = _iterator5()).done; ) {\n    var col = _step5.value;\n    start = end;\n    end = start + col.renderWidth;\n    if (wrapperScrollLeft >= start && wrapperScrollLeft < end) {\n      offset = wrapperScrollLeft - total;\n      column = col;\n      break;\n    }\n    total += col.renderWidth;\n  }\n  total = 0;\n  for (var _iterator6 = _createForOfIteratorHelperLoose(tableColumn2), _step6; !(_step6 = _iterator6()).done; ) {\n    var _col = _step6.value;\n    if (_col === column) {\n      total += offset;\n      break;\n    }\n    total += _col.renderWidth;\n  }\n  return total;\n};\nvar calcScrollTop = function calcScrollTop2($table, wrapperScrollTop) {\n  var _graphInfo = $table._graphInfo, tableData = $table.tableData, headerHeight = $table.headerHeight, rowHeight = $table.rowHeight;\n  var graphed = _graphInfo.graphed;\n  var rows = graphed.map(function(node) {\n    return node.payload;\n  });\n  var start, end, total, offset, row2;\n  start = end = total = offset = 0;\n  if (wrapperScrollTop < headerHeight) {\n    total = wrapperScrollTop;\n  } else {\n    start = end = total = offset = headerHeight;\n    for (var _iterator7 = _createForOfIteratorHelperLoose(rows), _step7; !(_step7 = _iterator7()).done; ) {\n      var r = _step7.value;\n      start = end;\n      end = start + rowHeight;\n      if (wrapperScrollTop >= start && wrapperScrollTop < end) {\n        offset = wrapperScrollTop - total;\n        row2 = r;\n        break;\n      }\n      total += rowHeight;\n    }\n    total = headerHeight;\n    for (var _iterator8 = _createForOfIteratorHelperLoose(tableData), _step8; !(_step8 = _iterator8()).done; ) {\n      var _r = _step8.value;\n      if (hooks.toRaw(_r) === hooks.toRaw(row2)) {\n        total += offset;\n        break;\n      }\n      total += rowHeight;\n    }\n  }\n  return total;\n};\nvar Body = /* @__PURE__ */ defineComponent({\n  name: $prefix + \"GridBody\",\n  props: {\n    collectColumn: Array,\n    tableColumn: Array,\n    tableNode: Array,\n    tableData: Array,\n    footerData: Array\n  },\n  setup: function setup3(props, _ref57) {\n    var _hooks$getCurrentInst5;\n    var slots = _ref57.slots;\n    var vm = (_hooks$getCurrentInst5 = hooks.getCurrentInstance()) == null ? void 0 : _hooks$getCurrentInst5.proxy;\n    var $table = vm == null ? void 0 : vm.$parent;\n    var rowHeight = hooks.computed(function() {\n      return $table.rowHeight;\n    });\n    var headerRowHeight = hooks.computed(function() {\n      return $table.headerRowHeight;\n    });\n    var _useHeader = useHeader(props, vm, headerRowHeight), headerTable = _useHeader.headerTable;\n    var _usePool = usePool(props), columnPool = _usePool.columnPool, rowPool = _usePool.rowPool, isNoData = _usePool.isNoData;\n    var wrapperScrollLeft = hooks.ref(0);\n    var wrapperScrollTop = hooks.ref(0);\n    var stickyWrapper = hooks.ref();\n    var table = hooks.ref();\n    var body = hooks.ref();\n    var customFooter = hooks.ref();\n    var colgroup = hooks.ref();\n    var thead = hooks.ref();\n    var tbody = hooks.ref();\n    var ySpace = hooks.ref();\n    var alignXBar = hooks.ref();\n    var alignYBar = hooks.ref();\n    hooks.watch(wrapperScrollLeft, function(wrapperScrollLeft2) {\n      var el = stickyWrapper.value;\n      if (!el) return;\n      hooks.nextTick(function() {\n        return el.scrollLeft = calcScrollLeft($table, wrapperScrollLeft2);\n      });\n    });\n    hooks.watch(wrapperScrollTop, function(wrapperScrollTop2) {\n      var el = stickyWrapper.value;\n      if (!el) return;\n      hooks.nextTick(function() {\n        return el.scrollTop = calcScrollTop($table, wrapperScrollTop2);\n      });\n    });\n    var resetStickyWrapperScrollPos = function resetStickyWrapperScrollPos2() {\n      var el = stickyWrapper.value;\n      if (!el) return;\n      el.scrollLeft = calcScrollLeft($table, wrapperScrollLeft.value);\n      el.scrollTop = calcScrollTop($table, wrapperScrollTop.value);\n    };\n    useCellEvent({\n      table,\n      $table\n    });\n    var _useCellSpan = useCellSpan(vm, props), normalRows = _useCellSpan.normalRows, footerRows = _useCellSpan.footerRows;\n    hooks.watch([body, table, thead, tbody, ySpace, alignXBar, alignYBar], function() {\n      var elemStore = $table.elemStore;\n      elemStore[\"main-body-wrapper\"] = body.value;\n      elemStore[\"main-body-table\"] = table.value;\n      elemStore[\"main-body-headerList\"] = thead.value;\n      elemStore[\"main-body-list\"] = tbody.value;\n      elemStore[\"main-body-ySpace\"] = ySpace.value;\n      elemStore[\"main-body-alignXBar\"] = alignXBar.value;\n      elemStore[\"main-body-alignYBar\"] = alignYBar.value;\n    });\n    var bodyClientWidth = hooks.ref(0);\n    var resizeObserver = new ResizeObserver(function(entries) {\n      for (var _iterator9 = _createForOfIteratorHelperLoose(entries), _step9; !(_step9 = _iterator9()).done; ) {\n        var entry = _step9.value;\n        var target = entry.target;\n        switch (target) {\n          case body.value:\n            bodyClientWidth.value = target.clientWidth;\n            break;\n          case customFooter.value:\n            $table.footerHeight = target.offsetHeight;\n        }\n      }\n    });\n    hooks.watch(body, function(body2) {\n      return body2 && resizeObserver.observe(body2);\n    });\n    hooks.watch(tbody, function(tbody2) {\n      if (tbody2 && $table.dropConfig) {\n        var _vm$rowSortable, _vm$columnSortable;\n        (_vm$rowSortable = vm.rowSortable) == null ? void 0 : _vm$rowSortable.destroy();\n        (_vm$columnSortable = vm.columnSortable) == null ? void 0 : _vm$columnSortable.destroy();\n        var _$table$dropConfig3 = $table.dropConfig, plugin = _$table$dropConfig3.plugin, _$table$dropConfig3$r = _$table$dropConfig3.row, row2 = _$table$dropConfig3$r === void 0 ? true : _$table$dropConfig3$r, _$table$dropConfig3$c = _$table$dropConfig3.column, column = _$table$dropConfig3$c === void 0 ? true : _$table$dropConfig3$c, scheme = _$table$dropConfig3.scheme;\n        plugin && row2 && (vm.rowSortable = $table.rowDrop(body.value));\n        if (scheme !== \"v2\") {\n          plugin && column && (vm.columnSortable = $table.columnDrop(body.value));\n        }\n      }\n    });\n    hooks.watch(customFooter, function(customFooter2) {\n      return customFooter2 && resizeObserver.observe(customFooter2);\n    });\n    hooks.watchEffect(function() {\n      if ($table.isColumnWidthAssigned) {\n        var columns2 = $table.scrollXLoad ? $table.visibleColumn : $table.tableColumn;\n        var scrollWidth = columns2.reduce(function(total, col) {\n          return total += col.renderWidth;\n        }, 0);\n        var clientWidth = bodyClientWidth.value;\n        $table.horizonScroll.max = scrollWidth > clientWidth ? scrollWidth - clientWidth : 0;\n      }\n    });\n    hooks.onMounted(function() {\n      var _body$value;\n      vm._throttleScrollHandler = throttle($table.optimizeOpts.scrollDelay, vm.handleScroll);\n      (_body$value = body.value) == null ? void 0 : _body$value.addEventListener(\"scroll\", vm._throttleScrollHandler);\n    });\n    hooks.onBeforeUnmount(function() {\n      var _body$value2;\n      var rowSortable = vm.rowSortable, columnSortable = vm.columnSortable;\n      (_body$value2 = body.value) == null ? void 0 : _body$value2.removeEventListener(\"scroll\", vm._throttleScrollHandler);\n      vm._throttleScrollHandler = null;\n      rowSortable == null ? void 0 : rowSortable.destroy();\n      columnSortable == null ? void 0 : columnSortable.destroy();\n      resizeObserver.disconnect();\n    });\n    return {\n      slots,\n      rowHeight,\n      headerTable,\n      columnPool,\n      rowPool,\n      isNoData,\n      wrapperScrollLeft,\n      wrapperScrollTop,\n      stickyWrapper,\n      table,\n      body,\n      customFooter,\n      colgroup,\n      thead,\n      tbody,\n      ySpace,\n      alignXBar,\n      alignYBar,\n      normalRows,\n      footerRows,\n      resetStickyWrapperScrollPos\n    };\n  },\n  render: function render() {\n    var $table = this.$parent, isNoData = this.isNoData, tableColumn2 = this.tableColumn, footerData = this.footerData;\n    var $grid = $table.$grid, keyboardConfig = $table.keyboardConfig, mouseConfig = $table.mouseConfig, scrollLoad = $table.scrollLoad, showFooter = $table.showFooter, renderFooter = $table.renderFooter;\n    var containerScrollWidth = $table.containerScrollWidth, containerScrollHeight = $table.containerScrollHeight, scrollLoadScrollHeight = $table.scrollLoadScrollHeight;\n    var bodyWrapperHeight = $table.bodyWrapperHeight, bodyWrapperMinHeight = $table.bodyWrapperMinHeight, bodyWrapperMaxHeight = $table.bodyWrapperMaxHeight;\n    var $slots = $grid.slots;\n    var _vm = this;\n    return createVNode(\"div\", {\n      \"ref\": \"body\",\n      \"class\": {\n        \"tiny-grid__body-wrapper body__wrapper\": true,\n        \"is__scrollload\": scrollLoad,\n        \"no-data\": isNoData && $table.isShapeTable\n      },\n      \"style\": {\n        height: bodyWrapperHeight ? bodyWrapperHeight + \"px\" : void 0,\n        minHeight: bodyWrapperMinHeight ? bodyWrapperMinHeight + \"px\" : void 0,\n        maxHeight: bodyWrapperMaxHeight ? bodyWrapperMaxHeight + \"px\" : void 0\n      }\n    }, [[\n      mouseConfig != null && mouseConfig.hover ? [createVNode(\"div\", {\n        \"ref\": \"alignYBar\",\n        \"class\": \"tiny-grid-body__hover-align-y-bar\",\n        \"style\": {\n          height: containerScrollHeight + \"px\"\n        }\n      }, null), createVNode(\"div\", {\n        \"ref\": \"alignXBar\",\n        \"class\": \"tiny-grid-body__hover-align-x-bar\",\n        \"style\": {\n          width: containerScrollWidth + \"px\"\n        }\n      }, null)] : null,\n      createVNode(\"div\", {\n        \"class\": \"tiny-grid-body__x-space\",\n        \"style\": {\n          width: containerScrollWidth + \"px\"\n        }\n      }, null),\n      createVNode(\"div\", {\n        \"ref\": \"ySpace\",\n        \"class\": \"tiny-grid-body__y-space visual\",\n        \"style\": {\n          height: containerScrollHeight + \"px\"\n        },\n        \"onScroll\": this.handleScrollLoad\n      }, [scrollLoad ? createVNode(\"div\", {\n        \"class\": \"tiny-grid-body__y-scrollbar\",\n        \"style\": {\n          height: scrollLoadScrollHeight ? scrollLoadScrollHeight + \"px\" : void 0\n        }\n      }, null) : null]),\n      // 内容表格\n      renderTable({\n        $table,\n        _vm\n      }),\n      // 渲染自定义表尾\n      showFooter && !isNoData && typeof renderFooter === \"function\" ? createVNode(\"div\", {\n        \"ref\": \"customFooter\",\n        \"class\": \"tiny-grid-custom-footer\"\n      }, [renderFooter({\n        $table,\n        columns: tableColumn2,\n        footerData\n      }, h)]) : null,\n      // 选中边框线\n      mouseConfig.checked || keyboardConfig.isCut ? createVNode(\"div\", {\n        \"class\": \"tiny-grid__borders\"\n      }, [[mouseConfig.checked ? renderBorder(\"check\") : null, keyboardConfig.isCut ? renderBorder(\"copy\") : null]]) : null,\n      // 空数据\n      isNoData ? createVNode(\"div\", {\n        \"ref\": \"emptyBlock\",\n        \"class\": \"tiny-grid__empty-block\"\n      }, [$slots.empty ? $slots.empty({\n        $table\n      }, h) : $table.renderEmpty ? [$table.renderEmpty(h, $table)] : [createVNode(GridNoData, {\n        \"class\": \"tiny-grid__empty-img\"\n      }, null), createVNode(\"span\", {\n        \"class\": \"tiny-grid__empty-text\"\n      }, [GlobalConfig$1.i18n(\"ui.grid.emptyText\")])]]) : null\n    ]]);\n  },\n  methods: {\n    handleScroll: function handleScroll(event) {\n      var $table = this.$parent, $el = this.$el;\n      var lastScrollLeft = $table.lastScrollLeft, lastScrollTop = $table.lastScrollTop, scrollXLoad = $table.scrollXLoad, scrollYLoad = $table.scrollYLoad, horizonScroll = $table.horizonScroll;\n      var max = horizonScroll.max, threshold = horizonScroll.threshold;\n      var scrollLeft = $el.scrollLeft, scrollTop = $el.scrollTop;\n      var isX = scrollLeft !== lastScrollLeft;\n      var isY = scrollTop !== lastScrollTop;\n      this.wrapperScrollLeft = scrollLeft;\n      this.wrapperScrollTop = scrollTop;\n      $table.lastScrollTime = Date.now();\n      $table.lastScrollLeft = scrollLeft;\n      $table.lastScrollTop = scrollTop;\n      $table.scrollDirection = isX ? \"X\" : \"Y\";\n      $table.horizonScroll.isLeft = scrollLeft < threshold;\n      $table.horizonScroll.isRight = scrollLeft > max - threshold;\n      if (isX && scrollXLoad) {\n        $table.triggerScrollXEvent(event);\n      }\n      if (isY && scrollYLoad) {\n        $table.triggerScrollYEvent(event);\n      }\n      emitEvent($table, \"scroll\", [{\n        type: \"body\",\n        scrollTop,\n        scrollLeft,\n        isX,\n        isY,\n        $table\n      }, event]);\n    },\n    resizeMousedown: function resizeMousedown(event, params) {\n      var $el = this.$el, $table = this.$parent;\n      var dragClientX = event.clientX, dragBtnElem = event.target;\n      var column = params.column;\n      var _ref58 = {}, _ref58$dragLeft = _ref58.dragLeft, dragLeft = _ref58$dragLeft === void 0 ? 0 : _ref58$dragLeft, _ref58$minInterval = _ref58.minInterval, minInterval = _ref58$minInterval === void 0 ? 40 : _ref58$minInterval;\n      var _$table$$refs = $table.$refs, resizeBarElem = _$table$$refs.resizeBar, tableBody = _$table$$refs.tableBody;\n      var _ref59 = {}, _ref59$cell = _ref59.cell, cell = _ref59$cell === void 0 ? dragBtnElem.parentNode : _ref59$cell, _ref59$dragBtnWidth = _ref59.dragBtnWidth, dragBtnWidth = _ref59$dragBtnWidth === void 0 ? dragBtnElem.clientWidth : _ref59$dragBtnWidth;\n      var _ref60 = {}, _ref60$pos = _ref60.pos, pos = _ref60$pos === void 0 ? getOffsetPos(dragBtnElem, $el) : _ref60$pos, _ref60$tableBodyElem = _ref60.tableBodyElem, tableBodyElem = _ref60$tableBodyElem === void 0 ? tableBody.$el : _ref60$tableBodyElem;\n      var dragMinLeft = pos.left - cell.clientWidth + dragBtnWidth + minInterval;\n      var dragPosLeft = pos.left + Math.floor(dragBtnWidth);\n      var _ref61 = {}, _ref61$oldMousemove = _ref61.oldMousemove, oldMousemove = _ref61$oldMousemove === void 0 ? document.onmousemove : _ref61$oldMousemove, _ref61$oldMouseup = _ref61.oldMouseup, oldMouseup = _ref61$oldMouseup === void 0 ? document.onmouseup : _ref61$oldMouseup;\n      var handleMousemoveEvent = function handleMousemoveEvent2(event2) {\n        var _$table$resizableConf;\n        event2.stopPropagation();\n        event2.preventDefault();\n        var _ref62 = {}, _ref62$offsetX = _ref62.offsetX, offsetX = _ref62$offsetX === void 0 ? event2.clientX - dragClientX : _ref62$offsetX, _ref62$left = _ref62.left, left = _ref62$left === void 0 ? offsetX + dragPosLeft : _ref62$left;\n        var scrollLeft = tableBodyElem.scrollLeft;\n        dragLeft = Math.max(left, dragMinLeft);\n        if ((_$table$resizableConf = $table.resizableConfig) != null && _$table$resizableConf.limit) {\n          var _$table$resizableConf2;\n          var limitWidth = (_$table$resizableConf2 = $table.resizableConfig) == null ? void 0 : _$table$resizableConf2.limit({\n            field: column.own.field,\n            width: column.renderWidth + (dragLeft - dragPosLeft)\n          });\n          dragLeft = dragMinLeft - minInterval + limitWidth;\n        }\n        resizeBarElem.style.left = dragLeft - scrollLeft + \"px\";\n      };\n      resizeBarElem.style.display = \"block\";\n      addClass($table.$el, \"tiny-grid-cell__resize\");\n      $table._isResize = true;\n      document.onmousemove = handleMousemoveEvent;\n      document.onmouseup = function() {\n        document.onmousemove = oldMousemove;\n        document.onmouseup = oldMouseup;\n        var resizeWidth = column.renderWidth + (dragLeft - dragPosLeft);\n        resizeWidth = typeof resizeWidth === \"number\" ? resizeWidth : parseInt(resizeWidth, 10) || 40;\n        column.resizeWidth = resizeWidth < 40 ? 40 : resizeWidth;\n        resizeBarElem.style.display = \"none\";\n        removeClass($table.$el, \"tiny-grid-cell__resize\");\n        Object.assign($table, {\n          _isResize: false,\n          _lastResizeTime: Date.now()\n        });\n        $table.analyColumnWidth();\n        $table.recalculate();\n        var toolbarVm = $table.getVm(\"toolbar\");\n        if (toolbarVm) {\n          toolbarVm.updateResizable();\n        }\n        emitEvent($table, \"resizable-change\", [params]);\n        if ($table.horizonScroll.fixed) {\n          setTimeout(function() {\n            var _$table$$refs$tableBo = $table.$refs.tableBody.$el, scrollWidth = _$table$$refs$tableBo.scrollWidth, clientWidth = _$table$$refs$tableBo.clientWidth, scrollLeft = _$table$$refs$tableBo.scrollLeft;\n            $table.horizonScroll.max = scrollWidth > clientWidth ? scrollWidth - clientWidth : 0;\n            $table.horizonScroll.isRight = scrollLeft > $table.horizonScroll.max - $table.horizonScroll.threshold;\n          }, 50);\n        }\n      };\n      handleMousemoveEvent(event);\n    },\n    handleScrollLoad: function handleScrollLoad(e) {\n      var $table = this.$parent;\n      if ($table.scrollLoad) {\n        $table.debounceScrollLoad(e);\n      }\n    }\n  }\n});\nBody.install = function(Vue) {\n  Vue.component(Body.name, Body);\n};\nvar Radio = defineComponent({\n  name: $prefix + \"GridRadio\",\n  emits: [\"update:modelValue\", \"change\"],\n  props: {\n    modelValue: [String, Number],\n    label: [String, Number],\n    disabled: Boolean,\n    name: String,\n    size: String\n  },\n  directives: {\n    AutoTip\n  },\n  computed: {\n    vSize: function vSize() {\n      return this.size || this.$parent.size || this.$parent.vSize;\n    }\n  },\n  setup: function setup4(props, _ref63) {\n    var slots = _ref63.slots;\n    return {\n      slots\n    };\n  },\n  render: function render2() {\n    var _ref64, _this2 = this;\n    var disabled = this.disabled, vSize3 = this.vSize, modelValue = this.modelValue, label = this.label, name = this.name;\n    var $slots = this.slots;\n    var disableClass = \"disabled\";\n    var labelContent = function labelContent2() {\n      var content = h(\"span\", {\n        class: \"tiny-grid-radio__label\",\n        directives: isVue2 ? [{\n          name: \"AutoTip\"\n        }] : null\n      }, $slots.default());\n      if (!isVue2) {\n        hooks.withDirectives(content, [[AutoTip]]);\n      }\n      return content;\n    };\n    return h(\"label\", {\n      class: [\"tiny-grid-radio\", (_ref64 = {}, _ref64[\"size__\" + vSize3] = vSize3, _ref64[\"is__\" + disableClass] = disabled, _ref64)]\n    }, [h(\"input\", {\n      attrs: {\n        type: \"radio\",\n        name,\n        disabled\n      },\n      domProps: {\n        checked: modelValue === label\n      },\n      on: {\n        change: function change(event) {\n          if (!disabled) {\n            _this2.$emit(\"update:modelValue\", label);\n            _this2.$emit(\"change\", label, event);\n          }\n        }\n      }\n    }), h(\"span\", {\n      class: \"tiny-grid-radio__icon\"\n    }, [h(iconRadio(), {\n      class: [\"tiny-svg-size\", \"icon-radio\"]\n    }), h(iconRadioselected(), {\n      class: [\"tiny-svg-size\", \"icon-radio-selected\"]\n    })]), $slots.default ? labelContent() : null]);\n  }\n});\nRadio.model = {\n  prop: \"modelValue\",\n  event: \"update:modelValue\"\n};\n$install(Radio);\nfunction _isSlot(s) {\n  return typeof s === \"function\" || Object.prototype.toString.call(s) === \"[object Object]\" && !isVNode(s);\n}\nvar renderInputArgs = function renderInputArgs2(_ref65) {\n  var _vm = _ref65._vm, inputFilter = _ref65.inputFilter;\n  var isAddbyProgram = false;\n  if (typeof inputFilter.relations_addby !== \"undefined\") {\n    isAddbyProgram = inputFilter.relations_addby === \"program\";\n  }\n  var inputRelations;\n  if (isAddbyProgram) {\n    inputRelations = inputFilter.relations_backup;\n  } else {\n    inputRelations = inputFilter.relations;\n  }\n  if (!inputRelations) {\n    inputRelations = [{\n      label: _vm.i18n(\"ui.grid.filter.prefix\"),\n      value: \"startwith\"\n    }, {\n      label: _vm.i18n(\"ui.grid.filter.equal\"),\n      value: \"equals\"\n    }, {\n      label: _vm.i18n(\"ui.grid.filter.include\"),\n      value: \"contains\"\n    }];\n  }\n  return {\n    isAddbyProgram,\n    inputRelations\n  };\n};\nvar renderInputProps = function renderInputProps2(_ref66) {\n  var _on3;\n  var InputComponent = _ref66.InputComponent, condition2 = _ref66.condition, event = _ref66.event, inputFilter = _ref66.inputFilter, isNativeInput = _ref66.isNativeInput, prop = _ref66.prop;\n  var inputProps = {\n    style: \"width:100%\",\n    on: (_on3 = {}, _on3[event] = function(value) {\n      condition2.input = value && value.target ? value.target.value : value;\n    }, _on3),\n    ref: \"filterInputComponent\"\n  };\n  if (isNativeInput) {\n    var _domProps;\n    inputProps = Object.assign(inputProps, {\n      domProps: (_domProps = {}, _domProps[prop] = condition2.input, _domProps),\n      attrs: _extends({}, inputFilter.attrs)\n    });\n  } else {\n    var _extends3;\n    InputComponent = hooks.toRaw(InputComponent);\n    inputProps = Object.assign(inputProps, {\n      props: _extends({}, inputFilter.attrs, (_extends3 = {}, _extends3[prop] = condition2.input, _extends3))\n    });\n  }\n  return {\n    inputProps,\n    InputComponent\n  };\n};\nvar iconRender = function iconRender2(checked, index2, halfChecked) {\n  var CheckedSur = iconCheckedSur();\n  var Check = iconCheck();\n  var HalfCheck = iconHalfselect();\n  var props = {\n    class: \"tiny-svg-size\",\n    tabindex: index2\n  };\n  if (typeof halfChecked === \"undefined\") {\n    return checked ? createVNode(CheckedSur, mergeProps(props, {\n      \"class\": \"is-checked\"\n    }), null) : createVNode(Check, props, null);\n  } else {\n    return checked ? createVNode(CheckedSur, mergeProps(props, {\n      \"class\": \"is-checked\"\n    }), null) : halfChecked ? createVNode(HalfCheck, mergeProps(props, {\n      \"class\": \"is-checked\"\n    }), null) : createVNode(Check, props, null);\n  }\n};\nvar renderEnumableOptions = function renderEnumableOptions2(_ref67) {\n  var iconRender3 = _ref67.iconRender, _vm = _ref67._vm, filterStore = _ref67.filterStore, selectAll = _ref67.selectAll, searchable = _ref67.searchable;\n  var resultList = filterStore.options.filter(function(value) {\n    var _value$label;\n    return (_value$label = value.label) == null ? void 0 : _value$label.toString().includes(filterStore.searchValue);\n  });\n  if (resultList.length) {\n    var filterList = resultList.map(function(item, index2) {\n      return createVNode(\"li\", {\n        \"class\": [\"tiny-grid__filter-option\", {\n          selected: item.checked\n        }],\n        \"onClick\": function onClick() {\n          if (!filterStore.multi) {\n            filterStore.options.forEach(function(option) {\n              option.checked = option === item;\n            });\n            _vm.filterEnum();\n          } else {\n            item.checked = !item.checked;\n          }\n        }\n      }, [filterStore.multi ? iconRender3(item.checked, index2 + 1) : null, createVNode(\"a\", {\n        \"title\": item.label\n      }, [createTextVNode(\" \"), item.label, createTextVNode(\" \")])]);\n    });\n    var isShowAllSelect = selectAll && (!filterStore.multi || !searchable && filterStore.multi);\n    return isShowAllSelect ? [createVNode(\"li\", {\n      \"class\": \"tiny-grid__filter-option\",\n      \"onClick\": function onClick() {\n        var isAllSelected = filterStore.options.every(function(item) {\n          return item.checked;\n        });\n        filterStore.options.forEach(function(option) {\n          option.checked = !isAllSelected;\n        });\n        if (!filterStore.multi) {\n          _vm.filterEnum();\n        }\n      }\n    }, [filterStore.multi ? iconRender3(filterStore.options.every(function(item) {\n      return item.checked;\n    }), 0, filterStore.options.some(function(item) {\n      return item.checked;\n    })) : null, createVNode(\"a\", {\n      \"title\": _vm.i18n(\"ui.grid.filter.allSelect\")\n    }, [createTextVNode(\" \"), _vm.i18n(\"ui.grid.filter.allSelect\")])])].concat(filterList) : filterList;\n  } else {\n    return [createVNode(\"li\", {\n      \"class\": \"tiny-grid__filter-empty\"\n    }, [_vm.i18n(\"ui.grid.emptyText\")])];\n  }\n};\nvar Panel$1 = /* @__PURE__ */ defineComponent({\n  name: $prefix + \"GridFilter\",\n  props: {\n    filterStore: Object,\n    optimizeOpts: Object\n  },\n  inject: {\n    $grid: {\n      default: null\n    }\n  },\n  watch: {\n    id: function id() {\n      this.updatePanel();\n    },\n    visible: function visible() {\n      this.showAdvance = false;\n      this.updatePanel();\n    }\n  },\n  data: function data() {\n    return {\n      popperJS: null,\n      showAdvance: false,\n      showAdvItems: false,\n      listPopper: null\n    };\n  },\n  render: function render3() {\n    var _this3 = this, _ref68;\n    var filterStore = this.filterStore, $grid = this.$grid, $table = this.$parent, optimizeOpts = this.optimizeOpts, renderInput2 = this.renderInput, renderEnumable2 = this.renderEnumable, renderDefault2 = this.renderDefault, renderExtends2 = this.renderExtends, renderBase2 = this.renderBase, renderSimple2 = this.renderSimple;\n    var args = filterStore.args, column = filterStore.column, options = filterStore.options, _filterStore$layout = filterStore.layout, layout2 = _filterStore$layout === void 0 ? \"input,enum,default,extends,base\" : _filterStore$layout;\n    var layoutMap = {\n      input: renderInput2,\n      enum: renderEnumable2,\n      default: renderDefault2,\n      extends: renderExtends2,\n      base: renderBase2,\n      simple: renderSimple2\n    };\n    var quickFilter = layout2.split(\",\").map(function(item) {\n      return layoutMap[item] && layoutMap[item].call(_this3);\n    });\n    var map = {\n      filterActive: \"filter__active\"\n    };\n    var wrapperAttrs = isVue2 ? {\n      attrs: filterStore.attrs\n    } : filterStore.attrs;\n    return createVNode(\"div\", mergeProps(wrapperAttrs, {\n      \"class\": [\"tiny-grid__wrapper\", \"tiny-grid__filter-wrapper\", \"filter__prevent-default\", (_ref68 = {\n        \"tiny-grid__animat\": optimizeOpts.animat\n      }, _ref68[map.filterActive] = filterStore.visible, _ref68[\"tiny-grid__filter-simple\"] = layout2.includes(\"simple\"), _ref68[\"filter-wrapper-saas\"] = $table.isThemeSaas, _ref68)],\n      \"style\": filterStore.style\n    }), [filterStore.visible ? createVNode(\"div\", {\n      \"class\": [\"tiny-grid__filter-body\", {\n        \"show-addvance\": this.showAdvance\n      }]\n    }, [column.slots && column.slots.filter ? column.slots.filter({\n      $grid,\n      values: options,\n      args,\n      context: this\n    }) : quickFilter]) : null]);\n  },\n  computed: {\n    condition: function condition() {\n      return this.filterStore.condition;\n    },\n    visible: function visible2() {\n      return this.filterStore.visible;\n    },\n    id: function id2() {\n      return this.filterStore.id;\n    },\n    i18n: function i18n2() {\n      return t || this.$t;\n    }\n  },\n  methods: {\n    updatePanel: debounce(20, function() {\n      var _this4 = this;\n      this.correctRelations();\n      var inputFilter = this.filterStore.inputFilter;\n      if (inputFilter) {\n        var relations = inputFilter.relations;\n        if (inputFilter !== true && !relations.filter(function(r) {\n          return r.value === _this4.condition.relation;\n        }).length) {\n          this.resetInput();\n        }\n      }\n      if (this.popperJS) {\n        this.popperJS.destroy();\n        this.popperJS = null;\n      }\n      if (this.visible) {\n        setTimeout(function() {\n          var _this4$$grid;\n          var _this4$filterStore = _this4.filterStore, targetElemParentTr = _this4$filterStore.targetElemParentTr, id3 = _this4$filterStore.id;\n          var reference = targetElemParentTr && targetElemParentTr.querySelector(\"svg.tiny-grid-filter__btn.\" + id3);\n          var popper = _this4.$el;\n          popper.style.zIndex = PopupManager.nextZIndex();\n          _this4.popperJS = new PopperJS(reference, popper, _extends({\n            placement: \"bottom-end\",\n            gpuAcceleration: false,\n            bubbling: true\n          }, ((_this4$$grid = _this4.$grid) == null ? void 0 : _this4$$grid.filterPopperOptions) || {}));\n          popper.style.display = \"block\";\n        });\n      }\n    }),\n    // 基础清除选项\n    renderBase: function renderBase() {\n      return createVNode(\"ul\", {\n        \"class\": \"tiny-grid__filter-panel filter-panel__clear\"\n      }, [createVNode(\"li\", {\n        \"class\": \"tiny-grid__filter-option\",\n        \"onClick\": this.resetFilter\n      }, [createVNode(\"a\", {\n        \"class\": \"item-content\"\n      }, [this.i18n(\"ui.grid.filter.clear\")])]), createVNode(\"li\", {\n        \"class\": \"tiny-grid__filter-option\",\n        \"onClick\": this.clearFilter\n      }, [createVNode(\"a\", {\n        \"class\": \"item-content\"\n      }, [this.i18n(\"ui.grid.filter.clearAll\")])])]);\n    },\n    // 设置筛选条件为空和不为空\n    renderDefault: function renderDefault() {\n      var _this5 = this;\n      var condition2 = this.condition, filterStore = this.filterStore;\n      if (!filterStore.defaultFilter) {\n        return null;\n      }\n      return createVNode(\"ul\", {\n        \"class\": \"tiny-grid__filter-panel filter-panel__default\"\n      }, [createVNode(\"li\", {\n        \"class\": [\"tiny-grid__filter-option\", {\n          active: condition2.empty === true\n        }],\n        \"onClick\": function onClick() {\n          _this5.filterNull(true);\n        }\n      }, [createVNode(\"a\", {\n        \"class\": \"item-content\"\n      }, [this.i18n(\"ui.grid.filter.empty\")])]), createVNode(\"li\", {\n        \"class\": [\"tiny-grid__filter-option\", {\n          active: condition2.empty === false\n        }],\n        \"onClick\": function onClick() {\n          _this5.filterNull(false);\n        }\n      }, [createVNode(\"a\", {\n        \"class\": \"item-content\"\n      }, [this.i18n(\"ui.grid.filter.unempty\")])])]);\n    },\n    // 筛选扩展项\n    renderExtends: function renderExtends() {\n      var _this6 = this;\n      var filterStore = this.filterStore, condition2 = this.condition;\n      if (!filterStore.extends) {\n        return null;\n      }\n      return createVNode(\"ul\", {\n        \"class\": \"tiny-grid__filter-panel filter-panel__clear\"\n      }, [filterStore.extends.map(function(item) {\n        return createVNode(\"li\", {\n          \"class\": [\"tiny-grid__filter-option\", {\n            active: condition2.value === (item.value || item.label)\n          }],\n          \"onClick\": function onClick() {\n            _this6.filterExtends(item);\n          }\n        }, [createVNode(\"a\", {\n          \"class\": \"item-content\"\n        }, [item.label])]);\n      })]);\n    },\n    // 输入筛选项\n    renderInput: function renderInput() {\n      var _slot, _slot2, _slot3;\n      this.correctRelations();\n      var condition2 = this.condition, filterStore = this.filterStore;\n      var inputFilter = filterStore.inputFilter;\n      if (!inputFilter) return null;\n      var _renderInputArgs = renderInputArgs({\n        _vm: this,\n        inputFilter\n      }), isAddbyProgram = _renderInputArgs.isAddbyProgram, inputRelations = _renderInputArgs.inputRelations;\n      var InputComponent = inputFilter.component || \"input\";\n      var isNativeInput = InputComponent === \"input\";\n      var model = InputComponent.model || {};\n      var prop = isNativeInput ? \"value\" : model.prop || \"modelValue\";\n      var event = isNativeInput ? \"input\" : model.event || \"update:modelValue\";\n      var ret = renderInputProps({\n        InputComponent,\n        condition: condition2,\n        event,\n        inputFilter,\n        isNativeInput,\n        prop\n      });\n      var inputProps = ret.inputProps;\n      InputComponent = ret.InputComponent;\n      return createVNode(\"ul\", {\n        \"class\": \"tiny-grid__filter-panel\"\n      }, [isAddbyProgram ? null : createVNode(\"li\", {\n        \"class\": \"tiny-grid__filter-option filter-option__radios\"\n      }, [inputRelations.map(function(_ref69) {\n        var label = _ref69.label, value = _ref69.value, method = _ref69.method;\n        return createVNode(Radio, {\n          \"modelValue\": condition2.relation,\n          \"label\": value,\n          \"onChange\": function onChange(value2) {\n            condition2.relation = value2;\n            condition2.method = method || function() {\n              return true;\n            };\n          }\n        }, _isSlot(label) ? label : {\n          default: function _default29() {\n            return [label];\n          }\n        });\n      })]), createVNode(\"li\", {\n        \"class\": \"filter-option__input\"\n      }, [h(InputComponent, inputProps)]), createVNode(\"li\", {\n        \"class\": \"tiny-grid__filter-option filter-option__btns\"\n      }, [createVNode(Button, {\n        \"type\": \"primary\",\n        \"onClick\": this.filterInput\n      }, _isSlot(_slot = this.i18n(\"ui.base.confirm\")) ? _slot : {\n        default: function _default29() {\n          return [_slot];\n        }\n      }), createVNode(Button, {\n        \"onClick\": this.resetInput\n      }, _isSlot(_slot2 = this.i18n(\"ui.base.reset\")) ? _slot2 : {\n        default: function _default29() {\n          return [_slot2];\n        }\n      }), createVNode(Button, {\n        \"onClick\": this.close\n      }, _isSlot(_slot3 = this.i18n(\"ui.base.cancel\")) ? _slot3 : {\n        default: function _default29() {\n          return [_slot3];\n        }\n      })])]);\n    },\n    // 选择筛选项\n    renderEnumable: function renderEnumable() {\n      var _slot4, _slot5;\n      var filterStore = this.filterStore;\n      if (!filterStore.enumable) return null;\n      return createVNode(\"div\", {\n        \"class\": \"tiny-grid__filter-panel filter-panel__enum\"\n      }, [createVNode(\"ul\", {\n        \"class\": \"tiny-grid__filter-options\"\n      }, [renderEnumableOptions({\n        iconRender,\n        _vm: this,\n        filterStore\n      })]), filterStore.multi ? createVNode(\"div\", {\n        \"class\": \"tiny-grid__filter-option filter-option__btns\"\n      }, [createVNode(Button, {\n        \"type\": \"primary\",\n        \"onClick\": this.filterEnum\n      }, _isSlot(_slot4 = this.i18n(\"ui.base.confirm\")) ? _slot4 : {\n        default: function _default29() {\n          return [_slot4];\n        }\n      }), createVNode(Button, {\n        \"onClick\": function onClick() {\n          filterStore.visible = false;\n        }\n      }, _isSlot(_slot5 = this.i18n(\"ui.base.cancel\")) ? _slot5 : {\n        default: function _default29() {\n          return [_slot5];\n        }\n      })]) : null]);\n    },\n    // 简化版筛选按钮对齐，对齐管理侧规范\n    renderSimple: function renderSimple() {\n      var filterStore = this.filterStore;\n      var simpleFilter = filterStore.simpleFilter;\n      if (!simpleFilter) {\n        return null;\n      }\n      if (simpleFilter.isDatetime) {\n        var _simpleFilter$datetim, _simpleFilter$datetim2, _simpleFilter$datetim3, _simpleFilter$datetim4, _simpleFilter$datetim5, _simpleFilter$datetim6;\n        var _slot6, _slot7;\n        var DatePickComponents = simpleFilter != null && (_simpleFilter$datetim = simpleFilter.datetimeConfig) != null && _simpleFilter$datetim.component ? hooks.toRaw(simpleFilter.datetimeConfig.component) : null;\n        var format = simpleFilter == null ? void 0 : (_simpleFilter$datetim2 = simpleFilter.datetimeConfig) == null ? void 0 : _simpleFilter$datetim2.format;\n        var valueFormat = simpleFilter == null ? void 0 : (_simpleFilter$datetim3 = simpleFilter.datetimeConfig) == null ? void 0 : _simpleFilter$datetim3.valueFormat;\n        var type = simpleFilter == null ? void 0 : (_simpleFilter$datetim4 = simpleFilter.datetimeConfig) == null ? void 0 : _simpleFilter$datetim4.type;\n        var max = simpleFilter == null ? void 0 : (_simpleFilter$datetim5 = simpleFilter.datetimeConfig) == null ? void 0 : _simpleFilter$datetim5.max;\n        var min = simpleFilter == null ? void 0 : (_simpleFilter$datetim6 = simpleFilter.datetimeConfig) == null ? void 0 : _simpleFilter$datetim6.min;\n        var pickerOptions = {\n          disabledDate: function disabledDate(time3) {\n            return time3.getTime() < min || time3.getTime() > max;\n          }\n        };\n        return createVNode(\"div\", {\n          \"class\": \"tiny-grid__filter-panel filter-panel__enum filter-panel__simple\"\n        }, [createVNode(\"div\", {\n          \"class\": \"tiny-grid__filter-date-title\"\n        }, [this.i18n(\"ui.grid.filter.dateTips\")]), createVNode(\"ul\", {\n          \"class\": \"tiny-grid__filter-date\"\n        }, [createVNode(\"li\", {\n          \"class\": \"tiny-grid__filter-date-item\"\n        }, [createVNode(\"span\", null, [this.i18n(\"ui.grid.filter.startDate\")]), createVNode(DatePickComponents, {\n          \"format\": format,\n          \"type\": type,\n          \"value-format\": valueFormat,\n          \"picker-options\": pickerOptions,\n          \"class\": \"tiny-grid__filter-date-pick\",\n          \"onChange\": function onChange(value) {\n            if (filterStore.datetimeConfig) {\n              filterStore.datetimeConfig.startDate = value;\n            }\n          },\n          \"modelValue\": filterStore.startDate,\n          \"onUpdate:modelValue\": function onUpdateModelValue($event) {\n            return filterStore.startDate = $event;\n          }\n        }, null)]), createVNode(\"li\", {\n          \"class\": \"tiny-grid__filter-date-item\"\n        }, [createVNode(\"span\", null, [this.i18n(\"ui.grid.filter.endDate\")]), createVNode(DatePickComponents, {\n          \"format\": format,\n          \"type\": type,\n          \"value-format\": valueFormat,\n          \"picker-options\": pickerOptions,\n          \"class\": \"tiny-grid__filter-date-pick\",\n          \"modelValue\": filterStore.endDate,\n          \"onUpdate:modelValue\": function onUpdateModelValue($event) {\n            return filterStore.endDate = $event;\n          },\n          \"onChange\": function onChange(value) {\n            if (filterStore.datetimeConfig) {\n              filterStore.datetimeConfig.endDate = value;\n            }\n          }\n        }, null)])]), createVNode(\"div\", {\n          \"class\": \"tiny-grid__filter-option filter-option__btns filter-option__date-button\"\n        }, [createVNode(Button, {\n          \"type\": \"primary\",\n          \"onClick\": this.filterDate\n        }, _isSlot(_slot6 = this.i18n(\"ui.base.confirm\")) ? _slot6 : {\n          default: function _default29() {\n            return [_slot6];\n          }\n        }), createVNode(Button, {\n          \"onClick\": function onClick() {\n            filterStore.visible = false;\n          }\n        }, _isSlot(_slot7 = this.i18n(\"ui.base.cancel\")) ? _slot7 : {\n          default: function _default29() {\n            return [_slot7];\n          }\n        })])]);\n      } else {\n        var _simpleFilter$searchC;\n        var _slot8, _slot9;\n        var IconSearch = iconSearch();\n        var InputComponents = simpleFilter != null && (_simpleFilter$searchC = simpleFilter.searchConfig) != null && _simpleFilter$searchC.component ? hooks.toRaw(simpleFilter.searchConfig.component) : null;\n        return createVNode(\"div\", {\n          \"class\": \"tiny-grid__filter-panel filter-panel__enum filter-panel__simple\"\n        }, [InputComponents ? createVNode(InputComponents, {\n          \"modelValue\": filterStore.searchValue,\n          \"onUpdate:modelValue\": function onUpdateModelValue($event) {\n            return filterStore.searchValue = $event;\n          },\n          \"onChange\": function onChange(value) {\n            if (filterStore.searchConfig) {\n              filterStore.searchConfig.searchValue = value;\n            }\n          },\n          \"class\": \"tiny-grid__filter-search\",\n          \"clearable\": true\n        }, {\n          suffix: function suffix() {\n            return createVNode(IconSearch, null, null);\n          }\n        }) : null, createVNode(\"ul\", {\n          \"class\": \"tiny-grid__filter-options\"\n        }, [renderEnumableOptions({\n          iconRender,\n          _vm: this,\n          filterStore,\n          selectAll: simpleFilter.selectAll,\n          searchable: Boolean(InputComponents)\n        })]), filterStore.multi ? createVNode(\"div\", {\n          \"class\": \"tiny-grid__filter-option filter-option__btns\"\n        }, [createVNode(Button, {\n          \"type\": \"primary\",\n          \"onClick\": this.filterEnum\n        }, _isSlot(_slot8 = this.i18n(\"ui.base.confirm\")) ? _slot8 : {\n          default: function _default29() {\n            return [_slot8];\n          }\n        }), createVNode(Button, {\n          \"onClick\": function onClick() {\n            filterStore.visible = false;\n          }\n        }, _isSlot(_slot9 = this.i18n(\"ui.base.cancel\")) ? _slot9 : {\n          default: function _default29() {\n            return [_slot9];\n          }\n        })]) : null]);\n      }\n    },\n    renderSlot: function renderSlot(h2) {\n      var $table = this.$parent, filterStore = this.filterStore;\n      var args = filterStore.args, column = filterStore.column;\n      var slots = column.slots;\n      if (slots && slots.filter) {\n        return slots.filter.call($table, _extends({\n          $table,\n          context: this\n        }, args), h2);\n      }\n    },\n    // 全部筛选事件\n    filterCheckAllEvent: function filterCheckAllEvent(event, value) {\n      var filterStore = this.filterStore;\n      filterStore.options.forEach(function(item) {\n        item.checked = value;\n      });\n      filterStore.isAllSelected = value;\n      filterStore.isIndeterminate = false;\n    },\n    // 筛选发生改变 check 是否检查默认值的有效性，当自定义relations时，需要检查\n    resetInput: function resetInput() {\n      this.correctRelations();\n      var _this$filterStore = this.filterStore, inputFilter = _this$filterStore.inputFilter, onResetInputFilter = _this$filterStore.onResetInputFilter;\n      if (inputFilter) {\n        var _this$filterStore$inp = this.filterStore.inputFilter, relations = _this$filterStore$inp.relations, relation = _this$filterStore$inp.relation;\n        this.condition.input = \"\";\n        if (typeof onResetInputFilter === \"function\") {\n          onResetInputFilter(this.$refs.filterInputComponent);\n        }\n        var defaultrelation = \"equals\";\n        var relationValues;\n        var relationValue;\n        if (Array.isArray(relations) && relations.length) {\n          this.condition.method = relations[0].method;\n          defaultrelation = relations[0].value || \"equals\";\n          for (var i = 0; i < relations.length; i++) {\n            if (relations[i].value === \"equals\") {\n              defaultrelation = \"equals\";\n              break;\n            }\n          }\n          relationValues = relations.map(function(r) {\n            return r.value;\n          });\n          if (relation && ~relationValues.indexOf(relation)) {\n            relationValue = relation;\n          }\n        }\n        this.condition.relation = relationValue || defaultrelation;\n      }\n    },\n    // 确认筛选\n    confirmFilter: function confirmFilter(type) {\n      var column = this.filterStore.column;\n      this.condition.type = type;\n      if (typeof this.condition.input === \"string\") {\n        var _this$condition$input;\n        this.condition.input = (_this$condition$input = this.condition.input) == null ? void 0 : _this$condition$input.trim();\n      }\n      column.filter.condition = extend(true, {}, this.condition);\n      this.$parent.confirmFilterEvent();\n    },\n    // 对外的暴露自定义提交方法\n    commitFilter: function commitFilter() {\n      var column = this.filterStore.column;\n      column.filter.condition.type = \"custom\";\n      this.$parent.confirmFilterEvent();\n    },\n    // 重置当前列筛选\n    resetFilter: function resetFilter() {\n      this.condition.value = null;\n      this.condition.input = \"\";\n      this.condition.empty = null;\n      this.condition.value = [];\n      this.condition.type = null;\n      this.resetInput();\n      this.confirmFilter();\n    },\n    // 清除所有列筛选\n    clearFilter: function clearFilter() {\n      this.$parent.clearFilter(true);\n    },\n    filterNull: function filterNull(empty) {\n      this.condition.value = [];\n      this.condition.input = \"\";\n      this.condition.empty = empty;\n      this.confirmFilter(\"empty\");\n    },\n    filterExtends: function filterExtends(item) {\n      this.condition.input = \"\";\n      this.condition.empty = null;\n      this.condition.value = item.value || item.label;\n      this.condition.method = item.method;\n      this.confirmFilter(\"extend\");\n    },\n    filterInput: function filterInput() {\n      this.condition.value = [];\n      this.condition.empty = null;\n      this.confirmFilter(\"input\");\n    },\n    filterDate: function filterDate() {\n      var _this$filterStore2 = this.filterStore, startDate = _this$filterStore2.startDate, endDate = _this$filterStore2.endDate;\n      this.condition.input = \"\";\n      this.condition.value = [];\n      this.condition.empty = null;\n      this.condition.dateList = [startDate, endDate];\n      if (startDate && !endDate) {\n        this.condition.relation = \"greaterThan\";\n      } else if (!startDate && endDate) {\n        this.condition.relation = \"greaterThan\";\n      } else if (startDate && endDate) {\n        this.condition.relation = \"interveningBetween\";\n      }\n      this.confirmFilter(\"date\");\n    },\n    filterEnum: function filterEnum() {\n      this.condition.input = \"\";\n      this.condition.empty = null;\n      this.condition.value = this.filterStore.options.filter(function(item) {\n        return item.checked;\n      }).map(function(check) {\n        return check.value;\n      });\n      this.confirmFilter(\"enum\");\n    },\n    close: function close() {\n      var filterStore = this.filterStore;\n      filterStore.visible = false;\n    },\n    correctRelations: function correctRelations() {\n      if (this.filterStore && typeof this.filterStore.inputFilter === \"object\") {\n        var relations = this.filterStore.inputFilter.relations;\n        var relation = this.filterStore.inputFilter.relation || \"equals\";\n        if (!relations || Array.isArray(relations) && relations.length === 0) {\n          this.filterStore.inputFilter.relations = [{\n            label: relation,\n            value: relation\n          }];\n          this.filterStore.inputFilter.relations_addby = \"program\";\n          this.filterStore.inputFilter.relations_backup = relations;\n        }\n      }\n    }\n  },\n  setup: function setup5() {\n    var instance = hooks.getCurrentInstance().proxy;\n    hooks.onBeforeUnmount(function() {\n      instance.popperJS && instance.popperJS.destroy() && (instance.popperJS = null);\n    });\n  }\n});\nfunction handleFilterConditionCustom(_ref70) {\n  var column = _ref70.column, condition2 = _ref70.condition, method = _ref70.method, property = _ref70.property, row2 = _ref70.row;\n  var ret = {\n    flag: false,\n    result: null\n  };\n  if (method && condition2.type === \"custom\") {\n    ret.result = method({\n      property,\n      row: row2,\n      column\n    });\n    ret.flag = true;\n  }\n  return ret;\n}\nfunction handleFilterConditionExtend(_ref71) {\n  var column = _ref71.column, condition2 = _ref71.condition, property = _ref71.property, row2 = _ref71.row;\n  var ret = {\n    flag: false,\n    result: null\n  };\n  if (condition2.type === \"extend\") {\n    var extendMethod = condition2.method;\n    if (typeof extendMethod !== \"function\") {\n      extendMethod = function extendMethod2() {\n        return true;\n      };\n    }\n    ret.result = extendMethod({\n      value: get(row2, property),\n      row: row2,\n      column\n    });\n    ret.flag = true;\n  }\n  return ret;\n}\nfunction findRelationMethod(relation, relations) {\n  if (Array.isArray(relations)) {\n    var method;\n    for (var i = 0; i < relations.length; i++) {\n      if (relations[i] && relations[i].value === relation) {\n        method = relations[i].method;\n        break;\n      }\n    }\n    return method;\n  }\n}\nfunction handleFilterRelations(_ref72) {\n  var inputFilter = _ref72.inputFilter;\n  var relations = [];\n  if (typeof inputFilter === \"object\" && Array.isArray(inputFilter.relations)) {\n    relations = inputFilter.relations;\n  }\n  return relations;\n}\nfunction modifyValueCheckStr(value) {\n  if (!value && typeof value !== \"number\") {\n    value = \"\";\n  }\n  return value;\n}\nfunction handleDefaultCheckStr(_ref73) {\n  var column = _ref73.column, input = _ref73.input, relation = _ref73.relation, relationMethod = _ref73.relationMethod, relations = _ref73.relations, result = _ref73.result, row2 = _ref73.row, value = _ref73.value;\n  if (typeof relationMethod !== \"function\") {\n    relationMethod = findRelationMethod(relation, relations);\n  }\n  if (typeof relationMethod === \"function\") {\n    result = relationMethod({\n      value,\n      input,\n      row: row2,\n      column\n    });\n  }\n  return {\n    relationMethod,\n    result\n  };\n}\nfunction handleFilterCheckStr(_ref74) {\n  var column = _ref74.column, relationMethod = _ref74.relationMethod, relations = _ref74.relations, row2 = _ref74.row;\n  return function(value, input, relation, dateList) {\n    var result = false;\n    value = modifyValueCheckStr(value);\n    switch (relation) {\n      case \"equals\":\n        result = value === input;\n        break;\n      case \"unequal\":\n        result = value !== input;\n        break;\n      case \"greaterThan\":\n        result = value > input;\n        break;\n      case \"lessThan\":\n        result = value < input;\n        break;\n      case \"equalToGreaterThan\":\n        result = value >= input;\n        break;\n      case \"equalToLessThan\":\n        result = value <= input;\n        break;\n      case \"interveningBetween\":\n        result = value >= dateList[0] && value <= dateList[1];\n        break;\n      case \"contains\":\n        result = value.toString().includes(input);\n        break;\n      case \"startwith\":\n        result = value.toString().indexOf(input) === 0;\n        break;\n      case \"endwith\":\n        result = value.toString().match(new RegExp(input + \"$\"));\n        break;\n      default: {\n        var ret = handleDefaultCheckStr({\n          column,\n          input,\n          relation,\n          relationMethod,\n          relations,\n          result,\n          row: row2,\n          value\n        });\n        relationMethod = ret.relationMethod;\n        result = ret.result;\n      }\n    }\n    return result;\n  };\n}\nfunction handleFilterCheck(_ref75) {\n  var checkStr = _ref75.checkStr, empty = _ref75.empty, input = _ref75.input, property = _ref75.property, relation = _ref75.relation, row2 = _ref75.row, valueList = _ref75.valueList, dateList = _ref75.dateList;\n  return function() {\n    var value = get(row2, property);\n    if (empty === true) {\n      return !value;\n    }\n    if (empty === false) {\n      return !!value;\n    }\n    if (dateList) {\n      if (!dateList[0] && !dateList[1]) {\n        return true;\n      }\n      return checkStr(value, dateList[0] || dateList[1], relation, dateList);\n    }\n    var checkInput = !input && input !== 0 || checkStr(value, input, relation);\n    var checkEnum = !valueList.length || valueList.includes(value);\n    return checkInput && checkEnum;\n  };\n}\nfunction getClassName(elem) {\n  if (elem && elem.nodeType) {\n    if (elem instanceof SVGElement) {\n      return elem.className.baseVal;\n    }\n    if (elem instanceof HTMLElement) {\n      return elem.className;\n    }\n  }\n  return \"\";\n}\nfunction closest(elem, parentClassName) {\n  if (elem && elem.nodeType) {\n    var clsReg = new RegExp(\"\\\\b\" + parentClassName + \"\\\\b\");\n    var matches;\n    do {\n      matches = getClassName(elem).match(clsReg);\n      if (matches) {\n        return elem;\n      }\n      if (elem === document.body) {\n        break;\n      }\n      elem = elem.parentNode;\n    } while (elem);\n  }\n  return null;\n}\nvar columnfilters = function columnfilters2(visibleColumn) {\n  var filters = {};\n  visibleColumn.forEach(function(column) {\n    var property = column.property, filter2 = column.filter;\n    if (filter2) {\n      var _filter$condition = filter2.condition, type = _filter$condition.type, input = _filter$condition.input, relation = _filter$condition.relation, value = _filter$condition.value, empty = _filter$condition.empty, dateList = _filter$condition.dateList;\n      if (type === \"input\") {\n        filters[property] = {\n          type,\n          value: {\n            text: input,\n            relation\n          }\n        };\n      } else if (type === \"enum\") {\n        filters[property] = {\n          type,\n          value\n        };\n      } else if (type === \"empty\") {\n        filters[property] = {\n          type,\n          value: empty\n        };\n      } else if (type === \"custom\") {\n        filters[property] = {\n          type\n        };\n      } else if (type === \"date\") {\n        filters[property] = {\n          type,\n          value: {\n            dateList,\n            relation\n          }\n        };\n      } else if (type === \"extend\") {\n        filters[property] = {\n          type,\n          value\n        };\n      } else if (type === \"extend1\") {\n        filters[property] = {\n          type,\n          value\n        };\n      } else if (type === \"extend2\") {\n        filters[property] = {\n          type,\n          value\n        };\n      }\n      filter2.hasFilter = value.length || input || (dateList == null ? void 0 : dateList.some(Boolean)) || input === 0 || empty !== null || type === \"custom\";\n    }\n  });\n  return filters;\n};\nvar Methods$f = {\n  filter: function filter(field, callback) {\n    var column = this.getColumnByField(field);\n    var filters = column.filter.options;\n    if (callback) {\n      var rest = callback(filters);\n      if (isArray(rest)) {\n        column.filters = getFilters(rest);\n      }\n    }\n    return Promise.resolve(filters);\n  },\n  // 关闭筛选\n  closeFilter: function closeFilter() {\n    var filterStore = this.filterStore;\n    Object.assign(filterStore, {\n      visible: false,\n      targetElem: null,\n      targetElemParentTr: null\n    });\n    return this.$nextTick();\n  },\n  handleLocalFilter: function handleLocalFilter(row2, column) {\n    var property = column.property;\n    var _column$filter = column.filter, condition2 = _column$filter.condition, method = _column$filter.method, inputFilter = _column$filter.inputFilter;\n    var ret = handleFilterConditionCustom({\n      column,\n      condition: condition2,\n      method,\n      property,\n      row: row2\n    });\n    if (ret.flag) {\n      return ret.result;\n    }\n    ret = handleFilterConditionExtend({\n      column,\n      condition: condition2,\n      property,\n      row: row2\n    });\n    if (ret.flag) {\n      return ret.result;\n    }\n    var empty = condition2.empty, input = condition2.input, relation = condition2.relation, value = condition2.value, dateList = condition2.dateList;\n    var relationMethod = condition2.method;\n    var relations = handleFilterRelations({\n      inputFilter\n    });\n    var checkStr = handleFilterCheckStr({\n      column,\n      relationMethod,\n      relations,\n      row: row2\n    });\n    var check = handleFilterCheck({\n      checkStr,\n      empty,\n      input,\n      property,\n      relation,\n      row: row2,\n      valueList: value,\n      dateList\n    });\n    return check();\n  },\n  getOptions: function getOptions(_ref76) {\n    var property = _ref76.property, filter2 = _ref76.filter;\n    var values = filter2.values, _filter$value = filter2.value, value = _filter$value === void 0 ? \"value\" : _filter$value, _filter$label = filter2.label, label = _filter$label === void 0 ? \"label\" : _filter$label, dataset = filter2.dataset;\n    if (typeof values === \"function\") {\n      return values({\n        property,\n        filter: filter2\n      });\n    } else if (dataset) {\n      return getDataset({\n        dataset,\n        service: this.$service\n      });\n    } else {\n      var newOptions = (values || []).map(function(item) {\n        return {\n          label: item[label],\n          value: item[value],\n          checked: !!item.checked\n        };\n      });\n      if (!values) {\n        var optionMap = {};\n        var tableData = this.getTableData();\n        tableData.fullData.forEach(function(row2) {\n          var key = row2[property];\n          if (!optionMap[key]) {\n            newOptions.push({\n              value: key,\n              label: key,\n              checked: false\n            });\n          }\n          optionMap[key] = true;\n        });\n      }\n      return Promise.resolve(newOptions);\n    }\n  },\n  /**\n   * 点击筛选事件\n   */\n  triggerFilterEvent: function triggerFilterEvent(event, column, params) {\n    var filterStore = this.filterStore;\n    var filter2 = column.filter;\n    var inputFilterRelation;\n    if (filterStore.id !== column.id && filterStore.visible) {\n      this.closeFilter();\n    }\n    if (filter2 && typeof filter2.inputFilter === \"object\" && filter2.inputFilter.relation) {\n      if (filter2.condition.relation === \"equals\" && filter2.inputFilter.relation && !column.isInitTriggerFlag) {\n        inputFilterRelation = filter2.inputFilter.relation;\n        column.isInitTriggerFlag = true;\n      }\n      filter2.condition.relation = inputFilterRelation || filter2.condition.relation;\n    }\n    if (filterStore.column === column && filterStore.visible) {\n      filterStore.visible = false;\n    } else {\n      var targetElem = event.target;\n      var targetElemParentTr = closest(targetElem, \"tiny-grid-header__row\");\n      this.getOptions(column).then(function(options) {\n        var _filter$simpleFilter, _filter$simpleFilter2, _filter$simpleFilter3, _filter$simpleFilter4, _filter$simpleFilter5, _filter$simpleFilter6, _filter$simpleFilter7, _filter$simpleFilter8;\n        Object.assign(filterStore, _extends({\n          args: params\n        }, filter2, {\n          defaultFilter: isBoolean(filter2.defaultFilter) ? filter2.defaultFilter : true,\n          options: options.map(function(_ref77) {\n            var value = _ref77.value, label = _ref77.label;\n            return {\n              value,\n              label,\n              checked: filter2.condition.value.includes(value)\n            };\n          }),\n          condition: _extends({}, filter2.condition),\n          multi: isBoolean(filter2.multi) ? filter2.multi : true,\n          column,\n          visible: true,\n          targetElem: hooks.markRaw(targetElem),\n          targetElemParentTr: hooks.markRaw(targetElemParentTr),\n          id: column.id,\n          searchConfig: (_filter$simpleFilter = filter2.simpleFilter) == null ? void 0 : _filter$simpleFilter.searchConfig,\n          datetimeConfig: (_filter$simpleFilter2 = filter2.simpleFilter) == null ? void 0 : _filter$simpleFilter2.datetimeConfig,\n          searchValue: ((_filter$simpleFilter3 = filter2.simpleFilter) == null ? void 0 : (_filter$simpleFilter4 = _filter$simpleFilter3.searchConfig) == null ? void 0 : _filter$simpleFilter4.searchValue) || \"\",\n          startDate: ((_filter$simpleFilter5 = filter2.simpleFilter) == null ? void 0 : (_filter$simpleFilter6 = _filter$simpleFilter5.datetimeConfig) == null ? void 0 : _filter$simpleFilter6.startDate) || \"\",\n          endDate: ((_filter$simpleFilter7 = filter2.simpleFilter) == null ? void 0 : (_filter$simpleFilter8 = _filter$simpleFilter7.datetimeConfig) == null ? void 0 : _filter$simpleFilter8.endDate) || \"\"\n        }));\n      });\n    }\n  },\n  // 确认筛选\n  confirmFilterEvent: function confirmFilterEvent() {\n    var _this7 = this;\n    var visibleColumn = this.visibleColumn, filterStore = this.filterStore, scrollXLoad = this.scrollXLoad, scrollYLoad = this.scrollYLoad, remoteFilter = this.remoteFilter, lastScrollLeft = this.lastScrollLeft;\n    filterStore.visible = false;\n    if (!remoteFilter) {\n      this.handleTableData(true).then(this.refreshStyle);\n    }\n    var filters = columnfilters(visibleColumn);\n    if (remoteFilter) {\n      if (this.$grid.pagerConfig) {\n        this.$grid.pagerConfig.currentPage = 1;\n      }\n    }\n    emitEvent(this, \"filter-change\", [{\n      filters,\n      $table: this\n    }]);\n    this.updateFooter();\n    var restoreScrollLeft = function restoreScrollLeft2() {\n      return _this7.scrollTo(lastScrollLeft);\n    };\n    if (scrollXLoad || scrollYLoad) {\n      scrollXLoad && this.clearScroll();\n      if (scrollYLoad) {\n        this.updateScrollYSpace();\n      }\n    }\n    this.closeFilter();\n    this.clearSelection();\n    this.$nextTick().then(this.recalculate).then(restoreScrollLeft);\n  },\n  clearFilter: function clearFilter2(field) {\n    var _this$$grid;\n    var column = arguments.length ? this.getColumnByField(field) : null;\n    var filterStore = this.filterStore;\n    var filterData = ((_this$$grid = this.$grid) == null ? void 0 : _this$$grid.filterData) || {};\n    var handleClear = function handleClear2(column2) {\n      var filter2 = column2.filter;\n      if (filter2) {\n        filter2.condition = {\n          input: \"\",\n          relation: \"equals\",\n          empty: null,\n          value: []\n        };\n        filter2.hasFilter = false;\n        filter2.custom = null;\n        delete filterData[column2.property];\n      }\n    };\n    if (column) {\n      handleClear(column);\n    } else {\n      this.visibleColumn.forEach(handleClear);\n    }\n    if (!column || column !== filterStore.column) {\n      Object.assign(filterStore, {\n        style: null,\n        options: [],\n        column: null,\n        multi: false,\n        visible: false\n      });\n    }\n    if (field === true || column) {\n      var filters = columnfilters(this.visibleColumn);\n      emitEvent(this, \"filter-change\", [{\n        filters,\n        $table: this\n      }]);\n    }\n    this.clearSelection();\n    return this.updateData();\n  },\n  getAllFilter: function getAllFilter() {\n    return columnfilters(this.visibleColumn);\n  }\n};\nPanel$1.install = function(Table2) {\n  Grid$1._filter = 1;\n  Object.assign(Table2.methods, Methods$f);\n};\nvar Children = defineComponent({\n  name: $prefix + \"GridContextMenuChild\",\n  props: {\n    item: Object,\n    gIndex: Number,\n    index: Number,\n    show: Boolean,\n    ctxMenuStore: Object,\n    tableInstance: Object\n  },\n  render: function render4() {\n    var tableInstance = this.tableInstance, item = this.item, gIndex = this.gIndex, index2 = this.index, show2 = this.show, ctxMenuStore = this.ctxMenuStore;\n    var toKebab2 = tableInstance.toKebab, getEventTargetNode2 = tableInstance.getEventTargetNode;\n    return h(\"ul\", {\n      class: [\"tiny-grid-menu__clild-wrapper\", {\n        show: show2\n      }]\n    }, item.children.map(function(child, cIndex) {\n      return child.visible === false ? [null] : h(\"li\", {\n        class: {\n          \"link__disabled\": child.disabled,\n          \"link__active\": child === ctxMenuStore.selectChild\n        },\n        key: gIndex + \"_\" + index2 + \"_\" + cIndex\n      }, [h(\"span\", {\n        class: \"tiny-grid-menu__link \" + toKebab2(item.code),\n        on: {\n          click: function click(event) {\n            tableInstance.ctxMenuLinkEvent(event, child);\n          },\n          mouseover: function mouseover(event) {\n            tableInstance.ctxMenuMouseoverEvent(event, item, child);\n          },\n          mouseout: function mouseout(event) {\n            if (!getEventTargetNode2(event, document.body, toKebab2(item.code)).flag) {\n              tableInstance.ctxMenuMouseoutEvent(event, item, child);\n            }\n          }\n        }\n      }, [child.prefixIcon ? h(child.prefixIcon, {\n        class: \"tiny-grid-menu__link-prefix\"\n      }) : [null], h(\"span\", {\n        class: \"tiny-grid-menu__link-content\"\n      }, getFuncText(child.name))])]);\n    }));\n  },\n  watch: {\n    show: function show(value) {\n      var _this8 = this;\n      if (value) {\n        this.$el.style.top = \"0px\";\n        this.$nextTick(function() {\n          var tableInstance = _this8.tableInstance, $el = _this8.$el;\n          var _$el$getBoundingClien = $el.getBoundingClientRect(), width = _$el$getBoundingClien.width, height2 = _$el$getBoundingClien.height, bottom = _$el$getBoundingClien.bottom;\n          var _getDomNode = getDomNode(), visibleHeight = _getDomNode.visibleHeight, visibleWidth = _getDomNode.visibleWidth;\n          var ctxElem = tableInstance.$refs.ctxWrapper.$el;\n          var target = tableInstance.ctxMenuStore.target;\n          var _ctxElem$getBoundingC = ctxElem.getBoundingClientRect(), ctxWidth = _ctxElem$getBoundingC.width, ctxRight = _ctxElem$getBoundingC.right;\n          if (width + ctxRight > visibleWidth - 6) {\n            $el.style.left = -6 - width + \"px\";\n          } else {\n            $el.style.left = ctxWidth + \"px\";\n          }\n          if (bottom > visibleHeight) {\n            var offset = target && target.clientHeight || 0;\n            $el.style.top = offset - height2 + \"px\";\n          }\n        });\n      }\n    }\n  }\n});\nvar onMenuItem = function onMenuItem2(_ref78) {\n  var tableInstance = _ref78.tableInstance, item = _ref78.item, getEventTargetNode2 = _ref78.getEventTargetNode, toKebab2 = _ref78.toKebab;\n  return {\n    click: function click(event) {\n      tableInstance.ctxMenuLinkEvent(event, item);\n    },\n    mouseover: function mouseover(event) {\n      tableInstance.ctxMenuMouseoverEvent(event, item);\n    },\n    mouseout: function mouseout(event) {\n      if (!getEventTargetNode2(event, document.body, toKebab2(item.code)).flag) {\n        tableInstance.ctxMenuMouseoutEvent(event, item);\n      }\n    }\n  };\n};\nfunction createMenuItem(args) {\n  var ctxMenuStore = args.ctxMenuStore, gIndex = args.gIndex, getEventTargetNode2 = args.getEventTargetNode, hasChild = args.hasChild;\n  var index2 = args.index, item = args.item, show2 = args.show, tableInstance = args.tableInstance, toKebab2 = args.toKebab;\n  var res = [null];\n  var classMap = {\n    linkDisabled: \"link__disabled\",\n    linkActive: \"link__active\"\n  };\n  if (item.visible !== false) {\n    var _class;\n    res = h(\"li\", {\n      class: (_class = {}, _class[classMap.linkDisabled] = item.disabled, _class[classMap.linkActive] = item === ctxMenuStore.selected, _class),\n      key: gIndex + \"_\" + index2\n    }, [h(\"a\", {\n      class: \"tiny-grid-menu__link \" + toKebab2(item.code),\n      on: onMenuItem({\n        tableInstance,\n        item,\n        getEventTargetNode: getEventTargetNode2,\n        toKebab: toKebab2\n      })\n    }, [item.prefixIcon ? h(item.prefixIcon, {\n      class: \"tiny-grid-menu__link-prefix\"\n    }) : [null], h(\"span\", {\n      class: \"tiny-grid-menu__link-content\"\n    }, getFuncText(item.name)), h(\"i\", {\n      class: [\"tiny-grid-menu__link-suffix\", hasChild ? item.suffixIcon || \"suffix__haschild\" : item.suffixIcon]\n    })]), hasChild ? h(Children, {\n      props: {\n        item,\n        gIndex,\n        index: index2,\n        show: show2,\n        tableInstance,\n        ctxMenuStore\n      }\n    }) : [null]]);\n  }\n  return res;\n}\nfunction getMenuItemCreator(_ref79) {\n  var ctxMenuStore = _ref79.ctxMenuStore, getEventTargetNode2 = _ref79.getEventTargetNode, tableInstance = _ref79.tableInstance, toKebab2 = _ref79.toKebab;\n  return function(options, gIndex) {\n    return h(\"ul\", {\n      class: \"tiny-grid-menu__option-wrapper\",\n      key: gIndex\n    }, options.map(function(item, index2) {\n      var hasChild = item.children && item.children.length;\n      var show2 = item === ctxMenuStore.selected && ctxMenuStore.showChild;\n      var args = {\n        ctxMenuStore,\n        gIndex,\n        getEventTargetNode: getEventTargetNode2,\n        hasChild\n      };\n      Object.assign(args, {\n        index: index2,\n        item,\n        show: show2,\n        tableInstance,\n        toKebab: toKebab2\n      });\n      return createMenuItem(args);\n    }));\n  };\n}\nvar Panel = defineComponent({\n  name: $prefix + \"GridContextMenu\",\n  props: {\n    ctxMenuStore: Object\n  },\n  render: function render5() {\n    var ctxMenuStore = this.ctxMenuStore, tableInstance = this.$parent;\n    var toKebab2 = tableInstance.toKebab, getEventTargetNode2 = tableInstance.getEventTargetNode;\n    var hasChild = Array.isArray(ctxMenuStore.list) && ctxMenuStore.list.flat().some(function(item) {\n      return item.visible !== false;\n    });\n    return h(\"div\", {\n      class: [\"tiny-grid__wrapper\", \"tiny-grid-menu__wrapper\", {\n        show: ctxMenuStore.visible && hasChild\n      }],\n      style: ctxMenuStore.style\n    }, ctxMenuStore.list.map(getMenuItemCreator({\n      ctxMenuStore,\n      getEventTargetNode: getEventTargetNode2,\n      tableInstance,\n      toKebab: toKebab2\n    })));\n  }\n});\nvar getSelectItem = function getSelectItem2(subList) {\n  for (var i = 0; i < subList.length; i++) {\n    var menu = subList[i];\n    if (menu.visible !== false) {\n      return menu;\n    }\n  }\n};\nvar Methods$e = {\n  // 关闭快捷菜单\n  _closeMenu: function _closeMenu() {\n    Object.assign(this.ctxMenuStore, {\n      visible: false,\n      selected: null,\n      selectChild: null,\n      showChild: false\n    });\n    return this.$nextTick();\n  },\n  // 处理菜单的移动\n  moveCtxMenu: function moveCtxMenu(_ref80) {\n    var _this9 = this;\n    var event = _ref80.event, keyCode = _ref80.keyCode, ctxMenuStore = _ref80.ctxMenuStore, property = _ref80.property, operKey = _ref80.operKey, operRest = _ref80.operRest, menuList = _ref80.menuList;\n    var selectIndex = findIndexOf(menuList, function(item) {\n      return ctxMenuStore[property] === item;\n    });\n    var selectItem;\n    var ruleChains = [{\n      match: function match() {\n        return keyCode === operKey;\n      },\n      action: function action() {\n        if (!operRest || !hasChildrenList(ctxMenuStore.selected)) {\n          ctxMenuStore.showChild = false;\n          ctxMenuStore.selectChild = null;\n        } else {\n          ctxMenuStore.showChild = true;\n        }\n      }\n    }, {\n      match: function match() {\n        return keyCode === 38;\n      },\n      action: function action() {\n        var subList = menuList.slice(0, selectIndex);\n        subList = subList.reverse();\n        selectItem = getSelectItem(subList);\n        ctxMenuStore[property] = selectItem || menuList[menuList.length - 1];\n      }\n    }, {\n      match: function match() {\n        return keyCode === 40;\n      },\n      action: function action() {\n        var subList = menuList.slice(selectIndex + 1);\n        selectItem = getSelectItem(subList);\n        ctxMenuStore[property] = selectItem || menuList[0];\n      }\n    }, {\n      match: function match() {\n        return ctxMenuStore[property] && (keyCode === 13 || keyCode === 32);\n      },\n      action: function action() {\n        _this9.ctxMenuLinkEvent(event, ctxMenuStore[property]);\n      }\n    }];\n    for (var i = 0; i < ruleChains.length; i++) {\n      var ruleChain = ruleChains[i];\n      if (ruleChain.match()) {\n        ruleChain.action();\n        break;\n      }\n    }\n  },\n  // 快捷菜单事件处理\n  handleGlobalContextmenuEvent: function handleGlobalContextmenuEvent(event) {\n    var ctxMenuOpts2 = this.ctxMenuOpts, ctxMenuStore = this.ctxMenuStore, isCtxMenu2 = this.isCtxMenu;\n    if (!isCtxMenu2) {\n      this.closeMenu();\n      this.closeFilter();\n      return;\n    }\n    if (ctxMenuStore.visible && this.$refs.ctxWrapper && this.getEventTargetNode(event, this.$refs.ctxWrapper.$el).flag) {\n      event.preventDefault();\n      return;\n    }\n    var eventTargetNode;\n    var eventParams = {\n      $table: this,\n      columns: this.visibleColumn.slice(0)\n    };\n    for (var _i2 = 0, _arr = [\"header\", \"body\", \"footer\"]; _i2 < _arr.length; _i2++) {\n      var layout2 = _arr[_i2];\n      eventTargetNode = this.getEventTargetNode(event, this.$el, \"tiny-grid-\" + layout2 + \"__column\");\n      eventParams.type = layout2;\n      if (eventTargetNode.flag) {\n        var cell = eventTargetNode.targetElem;\n        var column = this.getColumnNode(cell).item;\n        var typePrefix = layout2 + \"-\";\n        Object.assign(eventParams, {\n          cell,\n          column,\n          columnIndex: this.getColumnIndex(column)\n        });\n        if (layout2 === \"body\") {\n          var row2 = this.getRowNode(cell.parentNode).item;\n          typePrefix = \"\";\n          Object.assign(eventParams, {\n            row: row2,\n            rowIndex: this.getRowIndex(row2)\n          });\n        }\n        this.openContextMenu(event, layout2, eventParams);\n        emitEvent(this, typePrefix + \"cell-context-menu\", [eventParams, event]);\n        return;\n      }\n    }\n    eventTargetNode = this.getEventTargetNode(event, this.$el, \"tiny-grid__body-wrapper\");\n    if (eventTargetNode.flag) {\n      if (ctxMenuOpts2.trigger === \"cell\") {\n        event.preventDefault();\n      } else {\n        eventParams.type = \"body\";\n        this.openContextMenu(event, layout, eventParams);\n      }\n      return;\n    }\n    this.closeMenu();\n    this.closeFilter();\n  },\n  // 显示快捷菜单\n  openContextMenu: function openContextMenu(event, type, params) {\n    var _this0 = this;\n    var ctxMenuOpts2 = this.ctxMenuOpts, ctxMenuStore = this.ctxMenuStore;\n    var visibleMethod = ctxMenuOpts2.visibleMethod;\n    var config2 = ctxMenuOpts2[type];\n    if (!config2) {\n      this.closeFilter();\n      return;\n    }\n    var disabled = config2.disabled, options = config2.options;\n    if (disabled) {\n      event.preventDefault();\n      this.closeFilter();\n      return;\n    }\n    if (!options || !options.length) {\n      this.closeFilter();\n      return;\n    }\n    params.options = options;\n    var end = function end2() {\n      if (visibleMethod && !visibleMethod(params, event)) {\n        _this0.closeMenu();\n        return;\n      }\n      event.preventDefault();\n      var _getDomNode2 = getDomNode(), scrollLeft = _getDomNode2.scrollLeft, scrollTop = _getDomNode2.scrollTop, visibleHeight = _getDomNode2.visibleHeight, visibleWidth = _getDomNode2.visibleWidth;\n      var clientX = event.clientX, clientY = event.clientY;\n      var left = clientX + scrollLeft;\n      var top = clientY + scrollTop;\n      var style = {\n        left: left + \"px\",\n        top: top + \"px\"\n      };\n      Object.assign(ctxMenuStore, {\n        args: params,\n        list: options,\n        selected: null,\n        selectChild: null,\n        showChild: false,\n        style,\n        visible: true\n      });\n      var next = function next2() {\n        var ctxElem = _this0.$refs.ctxWrapper.$el;\n        var clientWidth = ctxElem.clientWidth, clientHeight = ctxElem.clientHeight;\n        var offsetLeft = clientX + clientWidth - visibleWidth;\n        var offsetTop = clientY + clientHeight - visibleHeight;\n        offsetLeft > -10 && (ctxMenuStore.style.left = left - clientWidth + \"px\");\n        offsetTop > -10 && (ctxMenuStore.style.top = top - clientHeight + \"px\");\n      };\n      _this0.$nextTick(next);\n    };\n    this.preventEvent(event, \"event.show_menu\", params, null, end);\n    this.closeFilter();\n  },\n  ctxMenuMouseoverEvent: function ctxMenuMouseoverEvent(event, item, child) {\n    var ctxMenuStore = this.ctxMenuStore;\n    event.preventDefault();\n    event.stopPropagation();\n    Object.assign(ctxMenuStore, {\n      selectChild: child,\n      selected: item,\n      target: event.target\n    });\n    !child && (ctxMenuStore.showChild = hasChildrenList(item));\n  },\n  ctxMenuMouseoutEvent: function ctxMenuMouseoutEvent(event, item) {\n    var ctxMenuStore = this.ctxMenuStore;\n    !item.children && (ctxMenuStore.selected = null);\n    Object.assign(ctxMenuStore, {\n      selectChild: null,\n      showChild: null,\n      target: null\n    });\n  },\n  // 快捷菜单点击事件\n  ctxMenuLinkEvent: function ctxMenuLinkEvent(event, menu) {\n    if (menu.disabled || menu.children && menu.children.length) {\n      return;\n    }\n    var ctxMenuStore = this.ctxMenuStore;\n    var ctxMenuMethod = Menus.get(menu.code);\n    var params = _extends({\n      $table: this,\n      menu\n    }, ctxMenuStore.args);\n    ctxMenuMethod && ctxMenuMethod.call(this, params, event);\n    emitEvent(this, \"context-menu-click\", [params, event]);\n    this.closeMenu();\n  },\n  toKebab: function toKebab(code) {\n    return typeof code === \"string\" ? code.replace(/\\B([A-Z])/g, \"-$1\").toLowerCase() : \"menu-code\";\n  }\n};\nPanel.install = function(Table2) {\n  Grid$1._menu = 1;\n  Object.assign(Table2.methods, Methods$e);\n};\nvar Loading = defineComponent({\n  name: $prefix + \"GridLoading\",\n  directives: {\n    loading: Loading$1.directive\n  },\n  props: _extends({}, $props, {\n    visible: Boolean,\n    loadingComponent: Object\n  }),\n  render: function render6() {\n    var loadingSpinner = h(\"div\", {\n      class: \"tiny-grid-loading__wrap tiny-loading__spinner\",\n      directives: isVue2 ? [{\n        name: \"loading\",\n        value: true\n      }] : null\n    });\n    if (!isVue2) {\n      loadingSpinner = hooks.withDirectives(loadingSpinner, [[Loading$1.directive, true]]);\n    }\n    var loadingComponent;\n    if (this.loadingComponent) {\n      loadingComponent = isVnode(this.loadingComponent) ? this.loadingComponent : h(this.loadingComponent);\n    }\n    return h(\"div\", {\n      class: \"tiny-grid-loading\",\n      style: {\n        display: this.visible ? \"block\" : \"none\"\n      }\n    }, [loadingComponent || loadingSpinner]);\n  }\n});\n$install(Loading);\nfunction handleActivedCheckCell(_ref81) {\n  var actived = _ref81.actived, column = _ref81.column, editConfig = _ref81.editConfig, row2 = _ref81.row;\n  return actived.row !== row2 || (editConfig.mode === \"cell\" ? actived.column !== column : false);\n}\nfunction handleActivedCanActive(_ref82) {\n  var editConfig = _ref82.editConfig, params = _ref82.params;\n  return !(editConfig != null && editConfig.activeMethod) || editConfig.activeMethod(params);\n}\nfunction handleActivedDoActive(_ref83) {\n  var _vm = _ref83._vm, actived = _ref83.actived, canActive = _ref83.canActive, cell = _ref83.cell, column = _ref83.column, editConfig = _ref83.editConfig, event = _ref83.event, params = _ref83.params, row2 = _ref83.row, tableColumn2 = _ref83.tableColumn, type = _ref83.type;\n  if (canActive) {\n    if (_vm.keyboardConfig || _vm.mouseConfig) {\n      _vm.clearCopyed(event);\n      _vm.clearChecked();\n      _vm.clearSelected(event);\n    }\n    _vm.clostTooltip();\n    _vm.clearActived(event);\n    type = \"edit-actived\";\n    column.renderHeight = cell.offsetHeight;\n    actived.args = params;\n    actived.row = row2;\n    actived.column = column;\n    if (editConfig.mode === \"row\") {\n      tableColumn2.forEach(function(column2) {\n        return _vm._getColumnModel(row2, column2);\n      });\n    } else {\n      _vm._getColumnModel(row2, column);\n    }\n    _vm.$nextTick(function() {\n      _vm.handleFocus(params, event);\n    });\n  }\n  return type;\n}\nfunction handleActivedClearActive(_ref84) {\n  var _vm = _ref84._vm, canActive = _ref84.canActive, event = _ref84.event;\n  if (!canActive) {\n    _vm.clearActived(event);\n  }\n}\nfunction handleActivedTryActive(_ref85) {\n  var _vm = _ref85._vm, actived = _ref85.actived, cell = _ref85.cell, column = _ref85.column, editor = _ref85.editor, event = _ref85.event, isActiveCell = _ref85.isActiveCell, params = _ref85.params, row2 = _ref85.row;\n  if (editor && cell && !isActiveCell) {\n    var oldColumn = actived.column;\n    if (oldColumn !== column) {\n      var oldModel = oldColumn.model;\n      if (oldModel.update) {\n        setCellValue(row2, oldColumn, oldModel.value);\n      }\n      _vm.clearValidate();\n    }\n    column.renderHeight = cell.offsetHeight;\n    actived.args = params;\n    actived.column = column;\n    setTimeout(function() {\n      _vm.handleFocus(params, event);\n    });\n  }\n}\nvar insertedField = GlobalConfig$1.constant.insertedField;\nvar getCellRender = function getCellRender2(isTreeNode, treeCellRender, treeRender, context) {\n  return context[isTreeNode ? treeCellRender : treeRender];\n};\nfunction processRenderer(_ref86) {\n  var h2 = _ref86.h, params = _ref86.params, renderer = _ref86.renderer, value = _ref86.value;\n  var result = {\n    flag: false,\n    vnodes: null\n  };\n  if (renderer) {\n    if (typeof renderer === \"function\") {\n      result.flag = true;\n      result.vnodes = [renderer(h2, params)];\n    }\n    if (renderer.component) {\n      var component = renderer.component, attrs = renderer.attrs, events = renderer.events;\n      result.flag = true;\n      result.vnodes = [h2(hooks.toRaw(component), {\n        class: \"grid-cell\",\n        on: events,\n        attrs: _extends({\n          value,\n          modelValue: value\n        }, typeof attrs === \"function\" ? attrs(params) : attrs)\n      })];\n    }\n  }\n  return result;\n}\nfunction processAsyncColumn(_ref87) {\n  var $table = _ref87.$table, column = _ref87.column, format = _ref87.format, h2 = _ref87.h, params = _ref87.params, row2 = _ref87.row;\n  var result = {\n    flag: false,\n    vnodes: null\n  };\n  var _ref88 = format.async || {}, fetch = _ref88.fetch, loadingText = _ref88.loadingText;\n  if ($table.isAsyncColumn && row2[insertedField] !== true && typeof fetch === \"function\") {\n    var cellText = row2[$table.getAsyncColumnName(column.property)];\n    var loadingRender = loadingText || \"loading ...\";\n    if (typeof cellText === \"undefined\") {\n      cellText = typeof loadingRender === \"function\" ? loadingRender(h2, params) : loadingRender;\n    }\n    if (typeof cellText === \"undefined\" || typeof column.formatText === \"undefined\") {\n      result.flag = true;\n      result.vnodes = [cellText];\n    }\n  }\n  return result;\n}\nfunction getColumnRuleTypeIndex(_ref89) {\n  var _vm = _ref89._vm, isTreeNode = _ref89.isTreeNode, renMaps = _ref89.renMaps, type = _ref89.type;\n  return {\n    match: function match() {\n      return type === \"index\";\n    },\n    action: function action() {\n      renMaps.renderHeader = _vm.renderIndexHeader;\n      renMaps.renderCell = getCellRender(isTreeNode, \"renderTreeIndexCell\", \"renderIndexCell\", _vm);\n    }\n  };\n}\nfunction getColumnRuleTypeRadio(_ref90) {\n  var _vm = _ref90._vm, isTreeNode = _ref90.isTreeNode, renMaps = _ref90.renMaps, type = _ref90.type;\n  return {\n    match: function match() {\n      return type === \"radio\";\n    },\n    action: function action() {\n      renMaps.renderHeader = _vm.renderRadioHeader;\n      renMaps.renderCell = getCellRender(isTreeNode, \"renderTreeRadioCell\", \"renderRadioCell\", _vm);\n    }\n  };\n}\nfunction getColumnRuleTypeSelection(_ref91) {\n  var _vm = _ref91._vm, isTreeNode = _ref91.isTreeNode, renMaps = _ref91.renMaps, selectConfig = _ref91.selectConfig, type = _ref91.type;\n  return {\n    match: function match() {\n      return type === \"selection\";\n    },\n    action: function action() {\n      renMaps.renderHeader = _vm.renderSelectionHeader;\n      renMaps.renderCell = getCellRender(isTreeNode, \"renderTreeSelectionCell\", \"renderSelectionCell\", _vm);\n      if (selectConfig && selectConfig.checkField) {\n        renMaps.renderCell = getCellRender(isTreeNode, \"renderTreeSelectionCellByProp\", \"renderSelectionCellByProp\", _vm);\n      }\n    }\n  };\n}\nfunction getColumnRuleTypeExpand(_ref92) {\n  var _vm = _ref92._vm, renMaps = _ref92.renMaps, type = _ref92.type;\n  return {\n    match: function match() {\n      return type === \"expand\";\n    },\n    action: function action() {\n      renMaps.renderCell = _vm.renderExpandCell;\n      renMaps.renderData = _vm.renderExpandData;\n    }\n  };\n}\nfunction getColumnRuleTypeOperation(_ref93) {\n  var _vm = _ref93._vm, renMaps = _ref93.renMaps, type = _ref93.type;\n  return {\n    match: function match() {\n      return type === \"operation\";\n    },\n    action: function action() {\n      renMaps.renderCell = _vm.renderOperationCell;\n    }\n  };\n}\nfunction getColumnRuleTypeOther(_ref94) {\n  var $table = _ref94.$table, _vm = _ref94._vm, colProps = _ref94.colProps, editor = _ref94.editor, filter2 = _ref94.filter, isTreeNode = _ref94.isTreeNode, renMaps = _ref94.renMaps, type = _ref94.type;\n  return {\n    match: function match() {\n      return ![\"index\", \"radio\", \"selection\", \"expand\", \"operation\"].includes(type);\n    },\n    action: function action() {\n      var sortable = colProps.sortable, remoteSort = colProps.remoteSort;\n      var isSortable = $table.sortable && sortable;\n      var isSortColumn = isSortable || remoteSort;\n      if (editor) {\n        renMaps.renderHeader = _vm.renderEditHeader;\n        renMaps.renderCell = getCellRender(isTreeNode, \"renderTreeRadioCell\", \"renderRowEdit\", _vm);\n        if ($table.editConfig && $table.editConfig.mode === \"row\") {\n          renMaps.renderCell = getCellRender(isTreeNode, \"renderTreeRowEdit\", \"renderRowEdit\", _vm);\n        }\n        if ($table.editConfig && $table.editConfig.mode === \"cell\") {\n          renMaps.renderCell = getCellRender(isTreeNode, \"renderTreeCellEdit\", \"renderCellEdit\", _vm);\n        }\n      } else if (filter2) {\n        renMaps.renderHeader = _vm.renderFilterHeader;\n        if (isSortColumn) {\n          renMaps.renderHeader = _vm.renderSortAndFilterHeader;\n        }\n      } else if (isSortColumn) {\n        renMaps.renderHeader = _vm.renderSortHeader;\n      }\n    }\n  };\n}\nvar isCheckStrictly = function isCheckStrictly2(selectConfig) {\n  return selectConfig && selectConfig.checkStrictly && !selectConfig.showHeader || selectConfig && !selectConfig.checkStrictly && selectConfig.showHeader === false;\n};\nvar runRender = function runRender2(render17) {\n  var vnode;\n  try {\n    for (var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      params[_key - 1] = arguments[_key];\n    }\n    vnode = render17.apply(void 0, params);\n  } catch (e) {\n    warn(\"ui.grid.error.renderParamError\");\n  } finally {\n    if (!vnode || !isVnode(vnode)) {\n      try {\n        vnode = hooks.h(render17);\n      } catch (e) {\n        vnode = null;\n        warn(\"ui.grid.error.classComponentError\");\n      }\n    }\n  }\n  return vnode;\n};\nvar Cell = {\n  createColumn: function createColumn($table, colProps) {\n    var type = colProps.type, filter2 = colProps.filter, editor = colProps.editor, treeNode = colProps.treeNode;\n    var selectConfig = $table.selectConfig, treeConfig = $table.treeConfig;\n    var isTreeNode = treeConfig && treeNode;\n    var renMaps = {\n      renderHeader: this.renderHeader,\n      renderCell: getCellRender(isTreeNode, \"renderTreeCell\", \"renderCell\", this)\n    };\n    var _vm = this;\n    var ruleChains = [getColumnRuleTypeIndex({\n      _vm,\n      isTreeNode,\n      renMaps,\n      type\n    }), getColumnRuleTypeRadio({\n      _vm,\n      isTreeNode,\n      renMaps,\n      type\n    }), getColumnRuleTypeSelection({\n      _vm,\n      isTreeNode,\n      renMaps,\n      selectConfig,\n      type\n    }), getColumnRuleTypeExpand({\n      _vm,\n      renMaps,\n      type\n    }), getColumnRuleTypeOperation({\n      _vm,\n      renMaps,\n      type\n    }), getColumnRuleTypeOther({\n      $table,\n      _vm,\n      colProps,\n      editor,\n      filter: filter2,\n      isTreeNode,\n      renMaps,\n      type\n    })];\n    for (var j = 0; j < ruleChains.length; j++) {\n      if (ruleChains[j].match()) {\n        ruleChains[j].action();\n        break;\n      }\n    }\n    return getColumnConfig(colProps, renMaps, GlobalConfig$1);\n  },\n  // 单元格\n  renderHeader: function renderHeader(h2, params, type) {\n    var column = params.column;\n    var slots = column.slots, own = column.own, title = column.title;\n    if (slots && slots.header) {\n      if (type === \"card\") {\n        return [slots.header(params, h2)];\n      } else {\n        return [h2(\"div\", {\n          class: \"tiny-grid-cell-text\"\n        }, [slots.header(params, h2)])];\n      }\n    }\n    if (typeof title === \"function\") {\n      return [h2(\"div\", {\n        class: \"tiny-grid-cell-text\"\n      }, [title(h2, params)])];\n    }\n    if (type === \"card\") {\n      return [formatText(getFuncText(own.title), 1)];\n    }\n    return [h2(\"div\", {\n      class: \"tiny-grid-cell-text\"\n    }, [formatText(getFuncText(own.title), 1)])];\n  },\n  renderCell: function renderCell(h2, params) {\n    var $table = params.$table, row2 = params.row, column = params.column;\n    var slots = column.slots, renderer = column.renderer;\n    var format = column.format || {};\n    $table.columnSlotsWeakMap || ($table.columnSlotsWeakMap = /* @__PURE__ */ new WeakMap());\n    if (slots && slots.default) {\n      return slots.default(params, h2);\n    }\n    var value = get(row2, column.property);\n    var result = processRenderer({\n      h: h2,\n      params,\n      renderer,\n      value\n    });\n    if (result.flag) {\n      return result.vnodes;\n    }\n    result = processAsyncColumn({\n      $table,\n      column,\n      format,\n      h: h2,\n      params,\n      row: row2\n    });\n    if (result.flag) {\n      return result.vnodes;\n    }\n    var cellValue = getCellLabel(row2, column, params);\n    if (typeof cellValue === \"function\") {\n      return [cellValue(h2, params)];\n    }\n    return [formatText(cellValue)];\n  },\n  renderTreeCell: function renderTreeCell(h2, params) {\n    return Cell.renderTreeIcon(h2, params).concat(Cell.renderCell.call(this, h2, params));\n  },\n  // 树节点\n  renderTreeIcon: function renderTreeIcon(h2, params) {\n    var _ref96, _$table$$grid, _$table$$grid$designC, _$table$$grid$designC2, _ref97;\n    var $table = params.$table, level = params.level, row2 = params.row;\n    var treeConfig = $table.treeConfig, treeExpandeds = $table.treeExpandeds;\n    var children = treeConfig.children, indent = treeConfig.indent, renderIcon = treeConfig.renderIcon, trigger = treeConfig.trigger, bubbling = treeConfig.bubbling;\n    var isActive = ~treeExpandeds.indexOf(row2);\n    var rowChildren = row2[children];\n    var listeners = {\n      click: function click(event) {\n        if (!bubbling) {\n          event.stopPropagation();\n        }\n        $table.triggerTreeExpandEvent(event, params);\n      }\n    };\n    var icon = GlobalConfig$1.icon;\n    var defaultIcon = function defaultIcon2(h22, _ref95) {\n      var active = _ref95.active;\n      var IconExpand = iconExpand();\n      var IconPutAway = iconPutAway();\n      return active ? h22(IconExpand) : h22(IconPutAway);\n    };\n    var customExpandIcon = (_ref96 = renderIcon || ((_$table$$grid = $table.$grid) == null ? void 0 : (_$table$$grid$designC = _$table$$grid.designConfig) == null ? void 0 : (_$table$$grid$designC2 = _$table$$grid$designC.treeConfig) == null ? void 0 : _$table$$grid$designC2.renderIcon)) != null ? _ref96 : defaultIcon;\n    if (trigger && trigger !== \"default\") {\n      listeners = {};\n    }\n    var iconVNode = [];\n    if (rowChildren && rowChildren.length) {\n      iconVNode = [customExpandIcon ? customExpandIcon(h2, _extends({\n        active: isActive\n      }, params)) : h2(iconArrowBottom(), {\n        class: [\"tiny-grid-tree__node-btn\", icon.tree, {\n          \"is__active\": isActive\n        }]\n      })];\n    }\n    var map = {\n      isActive: \"is__active\"\n    };\n    return [h2(\"span\", {\n      class: \"tiny-grid-tree__indent\",\n      style: {\n        width: level * (indent || 16) + \"px\"\n      }\n    }), h2(\"span\", {\n      class: [\"tiny-grid-tree-wrapper\", (_ref97 = {}, _ref97[map.isActive] = isActive, _ref97)],\n      on: listeners\n    }, iconVNode)];\n  },\n  // 索引\n  renderIndexHeader: function renderIndexHeader(h2, params) {\n    var column = params.column;\n    var slots = column.slots;\n    var own = column.own;\n    if (slots && slots.header) {\n      return slots.header(params, h2);\n    }\n    var value = getFuncText(own.title || own.label || \"\");\n    return [formatText(value, 1)];\n  },\n  renderTreeIndexCell: function renderTreeIndexCell(h2, params) {\n    return Cell.renderTreeIcon(h2, params).concat(Cell.renderIndexCell(h2, params));\n  },\n  renderIndexCell: function renderIndexCell(h2, params) {\n    var $table = params.$table, column = params.column, row2 = params.row, seq = params.seq; params.level;\n    var startIndex = $table.startIndex, treeConfig = $table.treeConfig, treeOrdered = $table.treeOrdered;\n    var indexMethod = column.indexMethod, slots = column.slots;\n    var _ref98 = treeConfig || {}, _ref98$temporaryIndex = _ref98.temporaryIndex, temporaryIndex = _ref98$temporaryIndex === void 0 ? \"_$index_\" : _ref98$temporaryIndex;\n    var isTreeOrderedFalse = treeConfig && !treeOrdered;\n    var indexValue = startIndex + seq;\n    if (isTreeOrderedFalse) {\n      indexValue = row2[temporaryIndex];\n    }\n    if (slots && slots.default) {\n      return slots.default(params, h2);\n    }\n    return [formatText(indexMethod ? indexMethod(params) : indexValue, 1)];\n  },\n  // 单选\n  renderRadioHeader: function renderRadioHeader(h2, params) {\n    var _params$column = params.column, own = _params$column.own, slots = _params$column.slots;\n    if (slots && slots.header) {\n      return slots.header(params, h2);\n    }\n    var value = getFuncText(own.title || own.label);\n    return [formatText(value, 1)];\n  },\n  renderRadioCell: function renderRadioCell(h2, params) {\n    var _ref99;\n    var $table = params.$table, slots = params.column.slots, row2 = params.row;\n    var _$table$radioConfig2 = $table.radioConfig, radioConfig = _$table$radioConfig2 === void 0 ? {} : _$table$radioConfig2, selectRow = $table.selectRow, vSize3 = $table.vSize;\n    var labelField = radioConfig.labelField, checkMethod = radioConfig.checkMethod;\n    var disabled = !!checkMethod;\n    var options = {};\n    if (slots && slots.default) {\n      return slots.default(params, h2);\n    }\n    options.attrs = {\n      name: \"tiny-grid-radio__\" + $table.id,\n      type: \"radio\"\n    };\n    if (checkMethod) {\n      options.attrs.disabled = disabled = !checkMethod(params);\n    }\n    options.domProps = {\n      checked: row2 === selectRow\n    };\n    options.on = {\n      change: function change(event) {\n        $table.triggerRadioRowEvent(event, params);\n      }\n    };\n    return [h2(\"label\", {\n      class: [\"tiny-grid-radio\", (_ref99 = {}, _ref99[\"size__\" + vSize3] = vSize3, _ref99[\"is__disabled\"] = disabled, _ref99)]\n    }, [h2(\"input\", options), h2(\"span\", {\n      class: \"tiny-grid-radio__icon\"\n    }, [h2(iconRadio(), {\n      class: [\"tiny-svg-size\", \"icon-radio\"]\n    }), h2(iconRadioselected(), {\n      class: [\"tiny-svg-size\", \"icon-radio-selected\"]\n    })]), labelField ? h2(\"span\", {\n      class: \"tiny-grid-radio__label\"\n    }, get(row2, labelField)) : null])];\n  },\n  renderTreeRadioCell: function renderTreeRadioCell(h2, params) {\n    return Cell.renderTreeIcon(h2, params).concat(Cell.renderRadioCell(h2, params));\n  },\n  renderSelectionHeader: function renderSelectionHeader(h2, params) {\n    var _ref100;\n    var $table = params.$table, column = params.column;\n    var slots = column.slots, own = column.own;\n    var headerCheckDisabled = $table.headerCheckDisabled, isAllSelected = $table.isAllSelected, isIndeterminate = $table.isIndeterminate, selectConfig = $table.selectConfig, vSize3 = $table.vSize;\n    var headerTitle = own.title || own.label;\n    var options = {\n      attrs: {\n        type: \"checkbox\"\n      }\n    };\n    if (slots && slots.header) {\n      return slots.header(params, h2);\n    }\n    if (isCheckStrictly(selectConfig)) {\n      return [];\n    }\n    options.domProps = {\n      disabled: headerCheckDisabled,\n      checked: isAllSelected && !headerCheckDisabled\n    };\n    options.on = {\n      change: function change(event) {\n        $table.triggerCheckAllEvent(event, event.target.checked);\n        $table.showSelectToolbar();\n      }\n    };\n    var vnode = h2(\"label\", {\n      class: [\"tiny-grid-checkbox tiny-select-header\", (_ref100 = {}, _ref100[\"size__\" + vSize3] = vSize3, _ref100[\"is__disabled\"] = headerCheckDisabled, _ref100[\"is__indeterminate\"] = isIndeterminate, _ref100)],\n      key: random()\n    }, [h2(\"input\", options), h2(\"span\", {\n      class: \"tiny-grid-checkbox__icon\"\n    }, [h2(iconCheck(), {\n      class: [\"tiny-svg-size\", \"icon-check\"]\n    }), isAllSelected ? h2(iconCheckedSur(), {\n      class: [\"tiny-svg-size\", \"icon-checked-sur\"]\n    }) : \"\", isIndeterminate ? h2(iconHalfselect(), {\n      class: [\"tiny-svg-size\", \"icon-half-select\"]\n    }) : \"\"]), headerTitle ? h2(\"span\", {\n      class: \"tiny-grid-checkbox__label\"\n    }, getFuncText(headerTitle)) : null]);\n    var dropdownVnode = null;\n    if (slots && slots.dropdown) {\n      dropdownVnode = h2(\"div\", {\n        class: \"selection-dropdown-wrapper\"\n      }, [slots.dropdown(params, h2)]);\n    }\n    return [vnode, dropdownVnode];\n  },\n  renderSelectionCell: function renderSelectionCell(h2, params) {\n    var _ref102;\n    var $table = params.$table, column = params.column, row2 = params.row;\n    var slots = column.slots;\n    var _$table$selectConfig2 = $table.selectConfig, selectConfig = _$table$selectConfig2 === void 0 ? {} : _$table$selectConfig2, treeConfig = $table.treeConfig, treeIndeterminates = $table.treeIndeterminates, vSize3 = $table.vSize;\n    var labelField = selectConfig.labelField, checkMethod = selectConfig.checkMethod;\n    var _ref101 = {}, _ref101$indeterminate = _ref101.indeterminate, indeterminate = _ref101$indeterminate === void 0 ? false : _ref101$indeterminate, _ref101$isDisabled = _ref101.isDisabled, isDisabled = _ref101$isDisabled === void 0 ? !!checkMethod : _ref101$isDisabled;\n    var options = {\n      attrs: {\n        type: \"checkbox\"\n      }\n    };\n    if (slots && slots.default) {\n      return slots.default(params, h2);\n    }\n    checkMethod && (options.attrs.disabled = isDisabled = !checkMethod(params));\n    treeConfig && (indeterminate = ~treeIndeterminates.indexOf(row2));\n    options.domProps = {\n      checked: ~$table.selection.indexOf(row2)\n    };\n    var twcls = params.twcls;\n    var labelCls = [\"tiny-grid-checkbox tiny-select-cell\", (_ref102 = {}, _ref102[\"size__\" + vSize3] = vSize3, _ref102[\"is__indeterminate\"] = indeterminate, _ref102[\"is__disabled\"] = isDisabled, _ref102)];\n    var inputCls = null;\n    var spanCls = \"tiny-grid-checkbox__icon\";\n    var svgCls = \"tiny-svg-size icon-checked-sur\";\n    if (twcls) {\n      labelCls = twcls.label || labelCls;\n      inputCls = twcls.input || inputCls;\n      spanCls = twcls.span || spanCls;\n      svgCls = twcls.svg || svgCls;\n      options.class = inputCls;\n    }\n    var checkboxEvent = {\n      click: function click(event) {\n        var _event$target;\n        if ((event == null ? void 0 : (_event$target = event.target) == null ? void 0 : _event$target.tagName.toLowerCase()) === \"input\") {\n          return;\n        }\n        var isChecked = $table.selection.includes(row2);\n        setTimeout(function() {\n          $table.triggerCheckRowEvent(event, params, !isChecked);\n          $table.showSelectToolbar();\n        }, 0);\n      }\n    };\n    var vnode = h2(\"label\", {\n      class: labelCls,\n      key: random(),\n      on: checkboxEvent\n    }, [h2(\"input\", options), h2(\"span\", {\n      class: spanCls\n    }, [h2(iconCheck(), {\n      class: [\"tiny-svg-size\", \"icon-check\"]\n    }), h2(iconCheckedSur(), {\n      class: svgCls\n    }), indeterminate ? h2(iconHalfselect(), {\n      class: \"tiny-svg-size icon-half-select\"\n    }) : \"\"]), labelField ? h2(\"span\", {\n      class: \"tiny-grid-checkbox__label\"\n    }, get(row2, labelField)) : null]);\n    return [vnode];\n  },\n  renderTreeSelectionCell: function renderTreeSelectionCell(h2, params) {\n    return Cell.renderTreeIcon(h2, params).concat(Cell.renderSelectionCell(h2, params));\n  },\n  // TODO: 与renderSelectionCell代码方法高度相似，待提取公共逻辑。\n  renderSelectionCellByProp: function renderSelectionCellByProp(h2, params) {\n    var _ref104;\n    var $table = params.$table, column = params.column, row2 = params.row;\n    var slots = column.slots;\n    var _$table$selectConfig3 = $table.selectConfig, selectConfig = _$table$selectConfig3 === void 0 ? {} : _$table$selectConfig3, treeConfig = $table.treeConfig, treeIndeterminates = $table.treeIndeterminates, vSize3 = $table.vSize;\n    var property = selectConfig.checkField, checkMethod = selectConfig.checkMethod, labelField = selectConfig.labelField;\n    var _ref103 = {}, _ref103$indeterminate = _ref103.indeterminate, indeterminate = _ref103$indeterminate === void 0 ? false : _ref103$indeterminate, _ref103$isDisabled = _ref103.isDisabled, isDisabled = _ref103$isDisabled === void 0 ? !!checkMethod : _ref103$isDisabled;\n    var options = {\n      attrs: {\n        type: \"checkbox\"\n      }\n    };\n    if (slots && slots.default) {\n      return slots.default(params, h2);\n    }\n    checkMethod && (options.attrs.disabled = isDisabled = !checkMethod(params));\n    treeConfig && (indeterminate = ~treeIndeterminates.indexOf(row2));\n    options.domProps = {\n      checked: get(row2, property)\n    };\n    options.on = {\n      change: function change(event) {\n        $table.triggerCheckRowEvent(event, params, event.target.checked);\n      }\n    };\n    var vnode = h2(\"label\", {\n      key: random(),\n      class: [\"tiny-grid-checkbox\", (_ref104 = {}, _ref104[\"size__\" + vSize3] = vSize3, _ref104[\"is__indeterminate\"] = indeterminate, _ref104[\"is__disabled\"] = isDisabled, _ref104)]\n    }, [h2(\"input\", options), h2(\"span\", {\n      class: \"tiny-grid-checkbox__icon\"\n    }, [h2(iconCheck(), {\n      class: [\"tiny-svg-size\", \"icon-check\"]\n    }), !indeterminate ? \"\" : h2(iconHalfselect(), {\n      class: [\"tiny-svg-size\", \"icon-half-select\"]\n    }), h2(iconCheckedSur(), {\n      class: [\"tiny-svg-size\", \"icon-checked-sur\"]\n    })]), labelField ? h2(\"span\", {\n      class: \"tiny-grid-checkbox__label\"\n    }, get(row2, labelField)) : null]);\n    return [vnode];\n  },\n  renderTreeSelectionCellByProp: function renderTreeSelectionCellByProp(h2, params) {\n    return Cell.renderTreeIcon(h2, params).concat(Cell.renderSelectionCellByProp(h2, params));\n  },\n  // 展开行\n  renderExpandCell: function renderExpandCell(h2, params) {\n    var _column$slots, _ref105;\n    var $table = params.$table, row2 = params.row, column = params.column;\n    var _$table$expandConfig3 = $table.expandConfig, expandConfig = _$table$expandConfig3 === void 0 ? {} : _$table$expandConfig3;\n    var _expandConfig$showIco = expandConfig.showIcon, showIcon = _expandConfig$showIco === void 0 ? true : _expandConfig$showIco, expandMethod = expandConfig.activeMethod;\n    var hideExpand = typeof expandMethod === \"function\" ? expandMethod(row2) : true;\n    var expandActive = $table.expandeds.includes(params.row);\n    if (!showIcon) return null;\n    var expandTrigger = (_column$slots = column.slots) == null ? void 0 : _column$slots[\"expand-trigger\"];\n    var triggerContent = expandTrigger ? expandTrigger(params, h2) : h2(\"i\", {\n      class: \"tiny-grid__expand-icon\"\n    });\n    var map = {\n      expandActive: \"expand__active\"\n    };\n    return [h2(\"span\", {\n      class: [\"tiny-grid__expanded\", (_ref105 = {}, _ref105[map.expandActive] = expandActive, _ref105)],\n      on: {\n        click: function click(event) {\n          if (!hideExpand) {\n            return;\n          }\n          $table.triggerRowExpandEvent(event, params);\n        }\n      }\n    }, [hideExpand && triggerContent])];\n  },\n  renderExpandData: function renderExpandData(h2, params) {\n    var slots = params.column.slots;\n    if (slots && slots.default) {\n      return slots.default(params, h2);\n    }\n    return [];\n  },\n  // 排序和筛选\n  renderSortAndFilterHeader: function renderSortAndFilterHeader(h2, params) {\n    var suffixCls = Cell.getSuffixCls(params);\n    return Cell.renderHeader(h2, params).concat(Cell.renderFilterIcon(h2, params, suffixCls[0])).concat(Cell.renderSortIcon(h2, params, suffixCls[1]));\n  },\n  // 排序\n  renderSortHeader: function renderSortHeader(h2, params) {\n    var suffixCls = Cell.getSuffixCls(params);\n    return Cell.renderHeader(h2, params).concat(Cell.renderSortIcon(h2, params, suffixCls[1]));\n  },\n  renderSortIcon: function renderSortIcon(h2, params, cls) {\n    if (cls === void 0) {\n      cls = \"\";\n    }\n    var icon = GlobalConfig$1.icon;\n    var $table = params.$table, column = params.column;\n    var isColGroup = column.children && column.children.length;\n    return [h2(\"span\", {\n      class: \"tiny-grid-sort-wrapper \" + cls\n    }, isColGroup ? [] : [column.order === \"desc\" || !icon.sortDefault ? h2(icon.sortAsc, {\n      class: [\"tiny-grid-sort__btn\", {\n        \"sort__active\": column.order === (!icon.sortDefault ? \"asc\" : \"desc\")\n      }],\n      on: {\n        click: function click(event) {\n          $table.triggerSortEvent(event, column, !icon.sortDefault ? \"asc\" : \"\");\n        }\n      }\n    }) : \"\", column.order === \"asc\" || !icon.sortDefault ? h2(icon.sortDesc, {\n      class: [\"tiny-grid-sort__btn\", {\n        \"sort__active\": column.order === (!icon.sortDefault ? \"desc\" : \"asc\")\n      }],\n      on: {\n        click: function click(event) {\n          $table.triggerSortEvent(event, column, \"desc\");\n        }\n      }\n    }) : \"\", !column.order && icon.sortDefault ? h2(icon.sortDefault, {\n      class: [\"tiny-grid-sort__btn\"],\n      on: {\n        click: function click(event) {\n          $table.triggerSortEvent(event, column, \"asc\");\n        }\n      }\n    }) : \"\"])];\n  },\n  // 筛选\n  renderFilterHeader: function renderFilterHeader(h2, params) {\n    var suffixCls = Cell.getSuffixCls(params);\n    return Cell.renderHeader(h2, params).concat(Cell.renderFilterIcon(h2, params, suffixCls[1]));\n  },\n  renderFilterIcon: function renderFilterIcon(h2, params, cls) {\n    var _ref106, _ref107;\n    if (cls === void 0) {\n      cls = \"\";\n    }\n    var $table = params.$table, column = params.column;\n    var filterStore = $table.filterStore;\n    var icon = GlobalConfig$1.icon;\n    var map = {\n      isActive: \"is__active\",\n      hasFilter: \"has__Filter\"\n    };\n    return [h2(\"span\", {\n      class: [\"tiny-grid-filter-wrapper \" + cls, (_ref106 = {}, _ref106[map.isActive] = filterStore.visible && filterStore.column === column, _ref106)]\n    }, [h2(icon.filter, {\n      class: [\"tiny-svg-size tiny-grid-filter__btn \" + column.id, (_ref107 = {}, _ref107[map.hasFilter] = column.filter && column.filter.hasFilter, _ref107)],\n      on: {\n        click: function click(event) {\n          $table.triggerFilterEvent(event, params.column, params);\n        }\n      }\n    })])];\n  },\n  // 可编辑\n  renderEditHeader: function renderEditHeader(h2, params) {\n    var $table = params.$table, column = params.column;\n    var editConfig = $table.editConfig, editRules = $table.editRules, validOpts2 = $table.validOpts;\n    var filter2 = column.filter, remoteSort = column.remoteSort, sortable = column.sortable, type = column.type, own = column.own;\n    var icon = GlobalConfig$1.icon;\n    var isRequired;\n    sortable = $table.sortable && !type && sortable;\n    var suffixCls = Cell.getSuffixCls(params);\n    var isRenderSortIcon = sortable || remoteSort;\n    var columnRules;\n    if (editRules) {\n      columnRules = get(editRules, params.column.property);\n    }\n    if (editRules && columnRules && !Array.isArray(columnRules)) {\n      columnRules = [columnRules];\n    }\n    if (editRules && columnRules) {\n      isRequired = columnRules.some(function(rule) {\n        return rule.required;\n      });\n    }\n    var showAsterisk = typeof validOpts2.asteriskMethod !== \"function\" || validOpts2.asteriskMethod(params);\n    var vNodes = [isRequired && showAsterisk ? h2(\"i\", {\n      class: \"tiny-icon \" + icon.required\n    }) : null, !editConfig || !own.showIcon ? null : h2(icon.edit, {\n      class: \"tiny-grid-edit-icon tiny-svg-size\"\n    })];\n    vNodes = vNodes.concat(Cell.renderHeader(h2, params));\n    vNodes = vNodes.concat(filter2 ? Cell.renderFilterIcon(h2, params, isRenderSortIcon ? suffixCls[0] : suffixCls[1]) : []);\n    vNodes = vNodes.concat(isRenderSortIcon ? Cell.renderSortIcon(h2, params, suffixCls[1]) : []);\n    return vNodes;\n  },\n  renderTreeRowEdit: function renderTreeRowEdit(h2, params) {\n    return Cell.renderTreeIcon(h2, params).concat(Cell.renderRowEdit(h2, params));\n  },\n  // 行格编辑模式\n  renderRowEdit: function renderRowEdit(h2, params) {\n    var actived = params.$table.editStore.actived;\n    var editConfig = params.$table.editConfig;\n    var isActiveCell = function isActiveCell2() {\n      return editConfig != null && editConfig.activeStrictly ? handleActivedCanActive({\n        editConfig,\n        params\n      }) : true;\n    };\n    return Cell.runRenderer(h2, params, this, (actived == null ? void 0 : actived.row) === params.row && isActiveCell());\n  },\n  renderTreeCellEdit: function renderTreeCellEdit(h2, params) {\n    return Cell.renderTreeIcon(h2, params).concat(Cell.renderCellEdit(h2, params));\n  },\n  // 单元格编辑模式\n  renderCellEdit: function renderCellEdit(h2, params) {\n    var actived = params.$table.editStore.actived;\n    return Cell.runRenderer(h2, params, this, actived && actived.row === params.row && actived.column === params.column);\n  },\n  runRenderer: function runRenderer(h2, params, _vm, isEdit) {\n    var $table = params.$table, column = params.column, row2 = params.row;\n    var formatText2 = column.formatText, own = column.own, slots = column.slots;\n    var editor = own.editor;\n    var compConf = Renderer.get(editor.component);\n    var showEdit = $table.editConfig && editor.type === \"visible\" || isEdit;\n    if (showEdit && slots && slots.edit) {\n      return slots.edit(params, h2);\n    }\n    if (showEdit && typeof editor === \"function\") {\n      return [editor(h2, params)];\n    }\n    if (showEdit && compConf && compConf.renderEdit) {\n      return compConf.renderEdit.call($table, h2, editor, params, {\n        $type: \"edit\",\n        $excel: $table.$parent,\n        $table,\n        $column: column\n      });\n    }\n    if (showEdit) {\n      return [];\n    }\n    if (slots && slots.default) {\n      return slots.default(params, h2);\n    }\n    if (formatText2) {\n      var cellValue = getCellLabel(row2, column, params);\n      if (typeof cellValue === \"function\") {\n        return [cellValue(h2)];\n      }\n      return [cellValue];\n    }\n    return Cell.renderCell.call(_vm, h2, params);\n  },\n  getSuffixCls: function getSuffixCls(params) {\n    return params.$table.headerSuffixIconAbsolute ? [\"suffix-icon-1\", \"suffix-icon-0\"] : [\"\", \"\"];\n  },\n  renderOperationCell: function renderOperationCell(h2, params) {\n    var column = params.column, $table = params.$table, row2 = params.row;\n    var _column$operationConf = column.operationConfig, operationConfig = _column$operationConf === void 0 ? {} : _column$operationConf, slots = column.slots;\n    if (slots && slots.default) {\n      return slots.default(params, h2);\n    }\n    var _operationConfig$butt = operationConfig.buttons, buttons = _operationConfig$butt === void 0 ? [] : _operationConfig$butt, render17 = operationConfig.render, _operationConfig$max = operationConfig.max, max = _operationConfig$max === void 0 ? 3 : _operationConfig$max, _operationConfig$disa = operationConfig.disabledClass, disabledClass = _operationConfig$disa === void 0 ? \"\" : _operationConfig$disa;\n    var viewClass = $table.viewCls(\"operButton\");\n    if (render17) {\n      return render17({\n        h: h2,\n        buttons,\n        params\n      });\n    }\n    var renderBase2 = function renderBase3(buttonConfig, flag, classes, attrs) {\n      var mergeParams = _extends({\n        buttonConfig\n      }, params);\n      var on2 = {\n        click: function click(e) {\n          if (!isDisabled(buttonConfig) && isFunction(buttonConfig.click)) {\n            buttonConfig.click(e, mergeParams);\n          }\n        }\n      };\n      classes = classes.join(\" \");\n      var clazz = isDisabled(buttonConfig) ? [classes, \"tiny-grid__oper-col-button--disabled\", disabledClass] : classes;\n      var childNodes = isFunction(buttonConfig.icon) ? [runRender(buttonConfig.icon, h2, mergeParams)] : [h2(buttonConfig.icon)];\n      return flag ? h2(\"span\", {\n        class: clazz,\n        attrs,\n        on: on2\n      }, childNodes) : null;\n    };\n    var renderBig = function renderBig2(buttonConfig, cls) {\n      if (cls === void 0) {\n        cls = \"\";\n      }\n      var classes = [\"tiny-grid__oper-col-button\", buttonConfig.class || \"\", cls];\n      var attrs = {\n        title: buttonConfig.name || \"\"\n      };\n      return renderBase2(buttonConfig, buttonConfig.icon, classes, attrs);\n    };\n    var isDisabled = function isDisabled2(buttonConfig) {\n      var _buttonConfig$disable = buttonConfig.disabled, disabled = _buttonConfig$disable === void 0 ? false : _buttonConfig$disable;\n      return typeof disabled === \"boolean\" && disabled || typeof disabled === \"function\" && disabled(row2);\n    };\n    var isHidden = function isHidden2(buttonConfig) {\n      var _buttonConfig$hidden = buttonConfig.hidden, hidden = _buttonConfig$hidden === void 0 ? false : _buttonConfig$hidden;\n      return typeof hidden === \"boolean\" && hidden || typeof hidden === \"function\" && hidden(row2);\n    };\n    var handleItemClick = function handleItemClick2(itemData) {\n      var realName = (itemData == null ? void 0 : itemData.name) || itemData;\n      var buttonConfig = visibleButtons.find(function(_ref108) {\n        var buttonName = _ref108.name;\n        return buttonName === realName;\n      });\n      buttonConfig.click(window.event || {}, _extends({\n        buttonConfig\n      }, params));\n    };\n    var visibleButtons = [];\n    buttons.forEach(function(buttonConfig) {\n      return !isHidden(buttonConfig) && visibleButtons.push(buttonConfig);\n    });\n    var groupBig;\n    if (visibleButtons.length > max) {\n      var end = max - 1;\n      var dropdownProps = {\n        trigger: \"hover\",\n        showIcon: false\n      };\n      groupBig = visibleButtons.slice(0, end).map(function(buttonConfig) {\n        return renderBig(buttonConfig, viewClass);\n      });\n      var scopedSlots = {\n        default: function _default29() {\n          return h2(iconEllipsis(), {\n            class: \"tiny-grid__oper-col-elps\"\n          });\n        },\n        dropdown: function dropdown() {\n          return h2(DropdownMenu, {\n            slot: \"dropdown\"\n          }, visibleButtons.slice(end).map(function(buttonConfig) {\n            var _class2;\n            return h2(DropdownItem, {\n              class: (_class2 = {}, _class2[disabledClass || \"\"] = isDisabled(buttonConfig), _class2),\n              props: {\n                itemData: buttonConfig,\n                disabled: isDisabled(buttonConfig)\n              }\n            }, buttonConfig.name);\n          }));\n        }\n      };\n      groupBig.push(h2(Dropdown, {\n        on: {\n          \"item-click\": handleItemClick\n        },\n        props: dropdownProps,\n        scopedSlots\n      }));\n    } else {\n      groupBig = visibleButtons.map(function(buttonConfig) {\n        return renderBig(buttonConfig, viewClass);\n      });\n    }\n    var rowKey = row2[getRowkey($table)];\n    return [h2(\"span\", {\n      class: \"tiny-grid__oper-col-wrapper\",\n      key: rowKey,\n      attrs: {\n        \"data-tag\": \"operation-cell-buttons\"\n      }\n    }, groupBig)];\n  }\n};\nfunction handleLayout(_vm) {\n  var tableFullData = _vm.tableFullData, height2 = _vm.height, parentHeight2 = _vm.parentHeight, scrollXLoad = _vm.scrollXLoad; _vm.scrollYLoad; var tableColumn2 = _vm.tableColumn;\n  var maxHeight = _vm.maxHeight, minHeight = _vm.minHeight, totalWidth = _vm.totalWidth;\n  var customHeight, scaleToPx;\n  if (height2 === \"auto\") {\n    customHeight = parentHeight2;\n  } else {\n    scaleToPx = Math.floor(parseInt(height2) / 100 * parentHeight2);\n    customHeight = isScale(height2) ? scaleToPx : toNumber$1(height2);\n  }\n  if (customHeight > 0) {\n    if ((tableFullData == null ? void 0 : tableFullData.length) <= 0) {\n      if (customHeight < GlobalConfig$1.emptyMinHeight) {\n        _vm.bodyWrapperHeight = GlobalConfig$1.emptyMinHeight;\n      } else {\n        _vm.bodyWrapperHeight = customHeight;\n      }\n    } else {\n      _vm.bodyWrapperHeight = customHeight;\n    }\n  }\n  if (maxHeight) {\n    maxHeight = isScale(maxHeight) ? Math.floor(parseInt(maxHeight) / 100 * parentHeight2) : toNumber$1(maxHeight);\n    _vm.bodyWrapperMaxHeight = maxHeight;\n  }\n  if (minHeight) {\n    minHeight = isScale(minHeight) ? Math.floor(parseInt(minHeight) / 100 * parentHeight2) : toNumber$1(minHeight);\n    if (maxHeight && minHeight > maxHeight) {\n      minHeight = maxHeight;\n    }\n    _vm.bodyWrapperMinHeight = minHeight;\n  }\n  _vm.bodyTableWidth = scrollXLoad ? tableColumn2.reduce(function(previous, column) {\n    return previous + column.renderWidth;\n  }, 0) : totalWidth;\n}\nfunction isTargetRadioOrCheckbox(event, column, colType, targetType) {\n  var target = event.target;\n  return target && column.type === colType && target.tagName.toLowerCase() === \"input\" && target.type === (targetType || colType);\n}\nfunction onClickExpandColumn(_ref109) {\n  var $el = _ref109.$el, _vm = _ref109._vm, column = _ref109.column, event = _ref109.event, expandConfig = _ref109.expandConfig, params = _ref109.params;\n  if ((expandConfig.trigger === \"row\" || column.type === \"expand\" && expandConfig.trigger === \"cell\") && !_vm.getEventTargetNode(event, $el, \"tiny-grid__expanded\").flag) {\n    _vm.triggerRowExpandEvent(event, params);\n  }\n}\nfunction onClickTreeNodeColumn(_ref110) {\n  var _vm = _ref110._vm, column = _ref110.column, event = _ref110.event, params = _ref110.params, treeConfig = _ref110.treeConfig;\n  if (treeConfig.trigger === \"row\" || column.treeNode && treeConfig.trigger === \"cell\") {\n    _vm.triggerTreeExpandEvent(event, params);\n  }\n}\nfunction onHighlightCurrentRow(_ref111) {\n  var $el = _ref111.$el, _vm = _ref111._vm, event = _ref111.event, highlightCurrentRow = _ref111.highlightCurrentRow, params = _ref111.params, radioConfig = _ref111.radioConfig;\n  if (highlightCurrentRow) {\n    if (radioConfig.trigger === \"row\" || !_vm.getEventTargetNode(event, $el, \"tiny-grid-checkbox\").flag && !_vm.getEventTargetNode(event, $el, \"tiny-grid-radio\").flag) {\n      _vm.triggerCurrentRowEvent(event, params);\n    }\n  }\n}\nfunction onClickRadioColumn(_ref112) {\n  var $el = _ref112.$el, _vm = _ref112._vm, column = _ref112.column, event = _ref112.event, params = _ref112.params, radioConfig = _ref112.radioConfig;\n  if ((radioConfig.trigger === \"row\" || column.type === \"radio\" && radioConfig.trigger === \"cell\") && !_vm.getEventTargetNode(event, $el, \"tiny-grid-radio\").flag) {\n    _vm.triggerRadioRowEvent(event, params);\n  }\n}\nfunction onClickSelectColumn(_ref113) {\n  var _vm = _ref113._vm, column = _ref113.column, event = _ref113.event, params = _ref113.params, selectConfig = _ref113.selectConfig;\n  if ((selectConfig.trigger === \"row\" || column.type === \"selection\" && selectConfig.trigger === \"cell\") && !_vm.getEventTargetNode(event, params.cell, \"tiny-grid-checkbox\").flag) {\n    _vm.handleToggleCheckRowEvent(params, event);\n  }\n}\nfunction onClickCellSelect(_ref114) {\n  var _vm = _ref114._vm, actived = _ref114.actived, cell = _ref114.cell, column = _ref114.column, editConfig = _ref114.editConfig, event = _ref114.event, mouseConfig = _ref114.mouseConfig, params = _ref114.params, row2 = _ref114.row;\n  if (!mouseConfig.checked && editConfig) {\n    if (editConfig.trigger === \"manual\") {\n      if (actived.args && actived.row === row2 && column !== actived.column) {\n        _vm.handleChangeCell(event, params);\n      }\n    } else if (!actived.args || cell !== actived.args.cell) {\n      if (editConfig.trigger === \"click\") {\n        _vm.handleChangeCell(event, params);\n      } else if (editConfig.trigger === \"dblclick\") {\n        if (editConfig.mode === \"row\" && actived.row === params.row) {\n          _vm.handleChangeCell(event, params);\n        } else {\n          _vm.handleSelected(params, event);\n        }\n      }\n    }\n  }\n}\nfunction onGroupHeader(_ref115) {\n  var _vm = _ref115._vm, isGroup2 = _ref115.isGroup, headerProps2 = _ref115.headerProps;\n  if (isGroup2) {\n    eachTree(_vm.collectColumn, function(column) {\n      if (column.children && column.children.length) {\n        column.visible = !!findTree$1(column.children, function(subColumn) {\n          return subColumn.children && subColumn.children.length ? 0 : subColumn.visible;\n        }, headerProps2);\n      }\n    }, headerProps2);\n  }\n}\nfunction reassignNotFixed(_ref116) {\n  var centerList = _ref116.centerList, column = _ref116.column;\n  if (!column.fixed) {\n    centerList.push(column);\n  }\n}\nfunction reassignFixedRight(_ref117) {\n  var column = _ref117.column, columnIndex = _ref117.columnIndex, isColspan = _ref117.isColspan, rightEndIndex = _ref117.rightEndIndex, rightList = _ref117.rightList;\n  if (column.fixed === \"right\") {\n    if (!isColspan) {\n      if (rightEndIndex === null) {\n        rightEndIndex = columnIndex;\n      }\n      if (columnIndex - rightEndIndex !== 0) {\n        isColspan = true;\n      } else {\n        rightEndIndex++;\n      }\n    }\n    rightList.push(column);\n  }\n  return {\n    isColspan,\n    rightEndIndex\n  };\n}\nfunction reassignFixedLeft(_ref118) {\n  var column = _ref118.column, columnIndex = _ref118.columnIndex, isColspan = _ref118.isColspan, leftList = _ref118.leftList, leftStartIndex = _ref118.leftStartIndex, letIndex = _ref118.letIndex;\n  if (column.fixed === \"left\") {\n    if (leftStartIndex === null) {\n      leftStartIndex = letIndex;\n    }\n    if (!isColspan) {\n      if (columnIndex - letIndex !== 0) {\n        isColspan = true;\n      } else {\n        letIndex++;\n      }\n    }\n    leftList.push(column);\n  }\n  return {\n    leftStartIndex,\n    letIndex,\n    isColspan\n  };\n}\nfunction showGroupFixedError(_ref119) {\n  var isColspan = _ref119.isColspan, isGroup2 = _ref119.isGroup, leftStartIndex = _ref119.leftStartIndex, rightEndIndex = _ref119.rightEndIndex, visibleColumn = _ref119.visibleColumn;\n  if (isGroup2 && (isColspan || leftStartIndex || rightEndIndex !== null && rightEndIndex !== visibleColumn.length)) {\n    error(\"ui.grid.error.groupFixed\");\n  }\n}\nfunction onScrollXLoad(_ref120) {\n  var _vm = _ref120._vm, scrollX = _ref120.scrollX, scrollXLoad = _ref120.scrollXLoad, scrollXStore = _ref120.scrollXStore, tableColumn2 = _ref120.tableColumn, visibleColumn = _ref120.visibleColumn;\n  if (scrollXLoad) {\n    if (_vm.resizable || visibleColumn.some(function(column) {\n      return column.resizable;\n    })) {\n      warn(\"ui.grid.error.notResizable\");\n    }\n    var renderSize = toNumber$1(scrollX.rSize || scrollXStore.renderSize);\n    var offsetSize = toNumber$1(scrollX.oSize || scrollXStore.offsetSize);\n    Object.assign(scrollXStore, {\n      startIndex: 0,\n      visibleIndex: 0,\n      renderSize,\n      offsetSize\n    });\n    tableColumn2 = visibleColumn.slice(scrollXStore.startIndex, scrollXStore.startIndex + scrollXStore.renderSize);\n  }\n  return tableColumn2;\n}\nfunction mapFetchColumnPromise(_ref121) {\n  var _vm = _ref121._vm, fetchColumns = _ref121.fetchColumns, tableColumn2 = _ref121.tableColumn;\n  return fetchColumns.map(function(_ref122) {\n    var format = _ref122.format, columnValues = _ref122.columnValues;\n    return format.async.fetch({\n      columns: tableColumn2,\n      columnValues,\n      $table: _vm\n    });\n  });\n}\nfunction preprocessDataObjectFormat(_ref123) {\n  var columnCount = _ref123.columnCount, columnValues = _ref123.columnValues, columnValuesMap = _ref123.columnValuesMap, fields = _ref123.fields;\n  if (columnCount) {\n    columnValues.forEach(function(col) {\n      if (typeof col === \"object\") {\n        var label = get(col, fields.text || \"label\");\n        var value = get(col, fields.value || \"value\");\n        col.label = label;\n        columnValuesMap[value] = col;\n      }\n    });\n  }\n}\nfunction preventDupRender(_ref124) {\n  var asyncColumnName = _ref124.asyncColumnName, cellTexts = _ref124.cellTexts, cellValuesCount = _ref124.cellValuesCount, columnData = _ref124.columnData, columnValuesMap = _ref124.columnValuesMap, isRender = _ref124.isRender, property = _ref124.property, renderCount = _ref124.renderCount, row2 = _ref124.row, splitConfig = _ref124.splitConfig;\n  var cellEachIndex = 0;\n  if (!isRender && cellValuesCount) {\n    var cellLabel;\n    var cellValues = [row2[property]];\n    if (splitConfig.enabled === true) {\n      cellValues = (row2[property] || \"\").split(splitConfig.valueSplit || \",\");\n    }\n    while (cellEachIndex < cellValuesCount) {\n      var activeValue = cellValues[cellEachIndex];\n      var currentRow = columnValuesMap[activeValue];\n      cellLabel = typeof currentRow === \"object\" ? currentRow.label : currentRow;\n      cellTexts.push(cellLabel);\n      columnData.push({\n        label: cellLabel,\n        value: cellValues[cellEachIndex],\n        row: currentRow\n      });\n      cellEachIndex++;\n      renderCount++;\n    }\n    row2[asyncColumnName] = cellTexts.join(splitConfig.textSplit || \",\");\n  }\n  return renderCount;\n}\nfunction handleResolveColumnComplete(_ref125) {\n  var _vm = _ref125._vm, columnData = _ref125.columnData, complete = _ref125.complete;\n  if (typeof complete === \"function\") {\n    complete({\n      columnData,\n      $table: _vm\n    });\n  }\n}\nvar isWebkit = browserInfo[\"-webkit\"];\nfunction computeScrollYLoad(_ref126) {\n  var _vm = _ref126._vm, scrollLoad = _ref126.scrollLoad, scrollY = _ref126.scrollY, scrollYLoad = _ref126.scrollYLoad, scrollYStore = _ref126.scrollYStore, tableBodyElem = _ref126.tableBodyElem;\n  if (scrollYLoad || scrollLoad) {\n    scrollYStore.rowHeight = _vm.rowHeight;\n  }\n  if (scrollYLoad) {\n    var _tableBodyElem$style, _tableBodyElem$style2;\n    var bodyHeight = toNumber$1(((_tableBodyElem$style = tableBodyElem.style) == null ? void 0 : _tableBodyElem$style.height) || ((_tableBodyElem$style2 = tableBodyElem.style) == null ? void 0 : _tableBodyElem$style2.maxHeight) || tableBodyElem.clientHeight);\n    var visibleYSize = toNumber$1(scrollY.vSize || Math.ceil(bodyHeight / scrollYStore.rowHeight));\n    scrollYStore.visibleSize = visibleYSize;\n    if (!scrollY.oSize) {\n      scrollYStore.offsetSize = visibleYSize;\n    }\n    if (!scrollY.rSize) {\n      scrollYStore.renderSize = visibleYSize + (isWebkit ? 2 : visibleYSize);\n    }\n    _vm.updateScrollYData();\n  } else {\n    _vm.updateScrollYSpace();\n  }\n}\nfunction computeScrollXLoad(_ref127) {\n  var _vm = _ref127._vm, scrollX = _ref127.scrollX, scrollXLoad = _ref127.scrollXLoad, scrollXStore = _ref127.scrollXStore, tableBodyElem = _ref127.tableBodyElem, visibleColumn = _ref127.visibleColumn;\n  if (scrollXLoad) {\n    var clientWidth = tableBodyElem.clientWidth;\n    var width = 0;\n    var visibleXSize = 0;\n    var len = visibleColumn.length;\n    var colsWidth = (visibleColumn == null ? void 0 : visibleColumn.map(function(i2) {\n      return i2.renderWidth;\n    }).sort(function(a, b) {\n      return a - b;\n    })) || [];\n    for (var i = 0; i < len; i++) {\n      width += colsWidth[i];\n      if (width > clientWidth || i === len - 1) {\n        visibleXSize = i + 1;\n        break;\n      }\n    }\n    visibleXSize = toNumber$1(scrollX.vSize || visibleXSize);\n    scrollXStore.visibleSize = visibleXSize;\n    if (!scrollX.oSize) {\n      scrollXStore.offsetSize = visibleXSize;\n    }\n    if (!scrollX.rSize) {\n      scrollXStore.renderSize = visibleXSize + 2;\n    }\n    _vm.updateScrollXData();\n  }\n}\nvar calcTableWidth = function calcTableWidth2($table) {\n  var _$table$$grid2, _$table$$grid2$design;\n  var minCellWidth = ((_$table$$grid2 = $table.$grid) == null ? void 0 : (_$table$$grid2$design = _$table$$grid2.designConfig) == null ? void 0 : _$table$$grid2$design.minWidth) || 72;\n  var columnStore = $table.columnStore, fit = $table.fit, elemStore = $table.elemStore;\n  var bodyWrapper = elemStore[\"main-body-wrapper\"];\n  var bdoyClientWidth = bodyWrapper.clientWidth, offsetWidth = bodyWrapper.offsetWidth, offsetHeight = bodyWrapper.offsetHeight;\n  var clientWidth = bdoyClientWidth - 1;\n  var bodyWidth = clientWidth;\n  var pxArr = columnStore.pxList, scaleArr = columnStore.scaleList, pxMinArr = columnStore.pxMinList, scaleMinArr = columnStore.scaleMinList, autoArr = columnStore.autoList, resizeArr = columnStore.resizeList;\n  var remainWidth = clientWidth;\n  var totalWidth = 0;\n  var minArr = new Array(pxMinArr.length + scaleMinArr.length);\n  pxMinArr.forEach(function(column, index2) {\n    var width = parseInt(column.minWidth);\n    totalWidth += width;\n    minArr[index2 + scaleMinArr.length] = width;\n  });\n  var meanWidth = remainWidth / 100;\n  scaleMinArr.forEach(function(column, index2) {\n    var width = Math.floor(parseInt(column.minWidth) * meanWidth);\n    totalWidth += width;\n    minArr[index2] = width;\n  });\n  scaleArr.forEach(function(column) {\n    var width = Math.floor(parseInt(column.width) * meanWidth);\n    totalWidth += width;\n    column.renderWidth = width;\n  });\n  pxArr.forEach(function(column) {\n    var width = parseInt(column.width);\n    totalWidth += width;\n    column.renderWidth = width;\n  });\n  resizeArr.forEach(function(column) {\n    var width = parseInt(column.resizeWidth);\n    totalWidth += width;\n    column.renderWidth = width;\n  });\n  remainWidth -= totalWidth;\n  meanWidth = remainWidth > 0 ? Math.floor(remainWidth / (scaleMinArr.length + pxMinArr.length + autoArr.length)) : 0;\n  if (fit) {\n    if (remainWidth > 0) {\n      scaleMinArr.concat(pxMinArr).forEach(function(column, index2) {\n        totalWidth += meanWidth;\n        minArr[index2] += meanWidth;\n      });\n    }\n  } else {\n    meanWidth = minCellWidth;\n  }\n  autoArr.forEach(function(column, index2) {\n    var width = Math.max(meanWidth, minCellWidth);\n    var renderWidth = width;\n    totalWidth += width;\n    if (fit && index2 === autoArr.length - 1) {\n      var odiffer = clientWidth - totalWidth;\n      if (odiffer > 0) {\n        renderWidth += odiffer;\n        totalWidth = clientWidth;\n      }\n    }\n    column.renderWidth = renderWidth;\n  });\n  var remainingSpace = bodyWidth - totalWidth;\n  if (fit && remainingSpace > 0) {\n    scaleMinArr.concat(pxMinArr).slice(0, remainingSpace).forEach(function(column, index2) {\n      totalWidth += 1;\n      minArr[index2] += 1;\n    });\n  }\n  scaleMinArr.concat(pxMinArr).forEach(function(column, index2) {\n    column.renderWidth = minArr[index2];\n  });\n  return {\n    totalWidth,\n    offsetWidth,\n    offsetHeight\n  };\n};\nfunction calcFixedDetails(_vm) {\n  var collectColumn2 = _vm.collectColumn, visibleColumn = _vm.visibleColumn, columnStore = _vm.columnStore, isGroup2 = _vm.isGroup;\n  var leftList = columnStore.leftList, rightList = columnStore.rightList;\n  visibleColumn.forEach(function(_ref128) {\n    var fixedDetails = _ref128.fixedDetails;\n    if (fixedDetails) {\n      fixedDetails.isLeftLast = false;\n      fixedDetails.isRightFirst = false;\n      fixedDetails.left = 0;\n      fixedDetails.right = 0;\n    }\n  });\n  var length = leftList.length;\n  var value = 0;\n  if (Array.isArray(leftList) && length > 0) {\n    leftList.forEach(function(_ref129, i) {\n      var fixedDetails = _ref129.fixedDetails, renderWidth = _ref129.renderWidth;\n      fixedDetails.isLeftLast = i === length - 1;\n      fixedDetails.left = value;\n      value += renderWidth;\n    });\n  }\n  length = rightList.length;\n  value = 0;\n  if (Array.isArray(rightList) && length > 0) {\n    var reversed = [].concat(rightList).reverse();\n    reversed.forEach(function(_ref130, i) {\n      var fixedDetails = _ref130.fixedDetails, renderWidth = _ref130.renderWidth;\n      fixedDetails.isRightFirst = i === length - 1;\n      fixedDetails.right = value;\n      value += renderWidth;\n    });\n  }\n  if (isGroup2) {\n    var header = calcHeader(collectColumn2);\n    var leftWidth = [];\n    var rightWidth = [];\n    var leftIndices = leftList.map(function(col) {\n      return leftWidth.push(col.renderWidth), header.leafColumns.indexOf(col);\n    });\n    var rightIndices = rightList.map(function(col) {\n      return rightWidth.push(col.renderWidth), header.leafColumns.indexOf(col);\n    });\n    var leftTable = [];\n    var rightTable = [];\n    header.headerTable.forEach(function(levelCols, level) {\n      if (level < header.maxLevel) {\n        leftTable.push(leftIndices.map(function(i) {\n          return levelCols[i];\n        }));\n        rightTable.push(rightIndices.map(function(i) {\n          return levelCols[i];\n        }));\n      }\n    });\n    leftTable.forEach(function(cols) {\n      var row2 = cols.reduce(function(p, c) {\n        return c && !p.includes(c) ? p.push(c) : null, p;\n      }, []);\n      if (row2.length > 0) {\n        row2[row2.length - 1].fixedDetails.isLeftLast = true;\n        row2.forEach(function(c) {\n          var s = cols.indexOf(c);\n          var e = cols.lastIndexOf(c);\n          c.fixedDetails.left = leftWidth.slice(0, s).reduce(function(t2, c2) {\n            return t2 += c2;\n          }, 0);\n          c.renderWidth = leftWidth.slice(s, e + 1).reduce(function(t2, c2) {\n            return t2 += c2;\n          }, 0);\n        });\n      }\n    });\n    rightTable.forEach(function(cols) {\n      var row2 = cols.reduce(function(p, c) {\n        return c && !p.includes(c) ? p.push(c) : null, p;\n      }, []).reverse();\n      if (row2.length > 0) {\n        row2[row2.length - 1].fixedDetails.isRightFirst = true;\n        var right = 0;\n        row2.forEach(function(c) {\n          var s = cols.indexOf(c);\n          var e = cols.lastIndexOf(c);\n          c.renderWidth = rightWidth.slice(s, e + 1).reduce(function(t2, c2) {\n            return t2 += c2;\n          }, 0);\n          c.fixedDetails.right = right;\n          right += c.renderWidth;\n        });\n      }\n    });\n  }\n}\nvar funcs = [\"closeMenu\", \"getMouseSelecteds\", \"getMouseCheckeds\", \"clearCopyed\", \"clearChecked\", \"clearHeaderChecked\", \"clearIndexChecked\", \"clearSelected\", \"insert\", \"insertAt\", \"remove\", \"removeSelecteds\", \"revert\", \"revertData\", \"getRecordset\", \"getInsertRecords\", \"getRemoveRecords\", \"getUpdateRecords\", \"clearActived\", \"getActiveRow\", \"hasActiveRow\", \"setActiveRow\", \"setActiveCell\", \"setSelectCell\", \"clearValidate\", \"fullValidate\", \"validate\", \"exportCsv\", \"exportExcel\"];\nvar headerProps = {\n  children: \"children\"\n};\nvar handleAllColumnPromises = function handleAllColumnPromises2(opt, ctx) {\n  var startIndex = opt.startIndex, fetchColumns = opt.fetchColumns, tableData = opt.tableData, asyncRenderMap = opt.asyncRenderMap, isScrollLoad = opt.isScrollLoad;\n  return function(data7) {\n    if (data7.length) {\n      ctx._isUpdateData = true;\n      data7.forEach(function(item, i) {\n        var columnValues = [];\n        var columnValuesMap = {};\n        var k = startIndex;\n        var renderCount = 0;\n        var columnCount = 0;\n        var columnData = [];\n        var _fetchColumns$i = fetchColumns[i], _fetchColumns$i$forma = _fetchColumns$i.format, format = _fetchColumns$i$forma === void 0 ? {} : _fetchColumns$i$forma, property = _fetchColumns$i.property;\n        var _ref131 = format.async || {}, _ref131$splitConfig = _ref131.splitConfig, splitConfig = _ref131$splitConfig === void 0 ? {} : _ref131$splitConfig, _ref131$fields = _ref131.fields, fields = _ref131$fields === void 0 ? {} : _ref131$fields, complete = _ref131.complete;\n        columnValues = isArray(item) ? item : get(item, fields.data || \"values\");\n        columnCount = columnValues.length;\n        preprocessDataObjectFormat({\n          columnCount,\n          columnValues,\n          columnValuesMap,\n          fields\n        });\n        for (var len = tableData.length; k < len; k++) {\n          var row2 = tableData[k];\n          var cellTexts = [];\n          var uniqueKey = ctx.getAsyncColumnUniqueKey(property, row2);\n          var cellValuesCount = asyncRenderMap[uniqueKey];\n          var asyncColumnName = ctx.getAsyncColumnName(property);\n          var isRender = !!row2[asyncColumnName];\n          var args = {\n            asyncColumnName,\n            cellTexts,\n            cellValuesCount,\n            columnData\n          };\n          Object.assign(args, {\n            columnValuesMap,\n            isRender,\n            property,\n            renderCount,\n            row: row2,\n            splitConfig\n          });\n          renderCount = preventDupRender(args);\n          if (isScrollLoad && renderCount >= columnCount) {\n            break;\n          }\n        }\n        format.data = columnData;\n        handleResolveColumnComplete({\n          _vm: ctx,\n          columnData,\n          complete\n        });\n      });\n      ctx.tableData = ctx.tableData.slice(0);\n      ctx.$nextTick(function() {\n        ctx._isUpdateData = false;\n      });\n    } else {\n      warn(\"Unknown error：the query data is empty.\");\n    }\n  };\n};\nfunction handleGlobalMousedownOnFilterWrapper(_ref132) {\n  var $el = _ref132.$el, _vm = _ref132._vm, event = _ref132.event, filterStore = _ref132.filterStore, filterWrapper = _ref132.filterWrapper;\n  if (filterWrapper) {\n    if (_vm.getEventTargetNode(event, $el, \"tiny-grid-filter-wrapper\").flag) ;\n    else if (_vm.getEventTargetNode(event, filterWrapper.$el).flag) ;\n    else if (_vm.getEventTargetNode(event, document.body, \"tiny-popper\").flag) ;\n    else {\n      _vm.closeFilter();\n      _vm.preventEvent(event, \"event.clear_filter\", filterStore.args, _vm.closeFilter);\n    }\n  }\n}\nfunction handleGlobalMousedownOnCtxMenu(_ref133) {\n  var _vm = _ref133._vm, ctxMenuStore = _ref133.ctxMenuStore, event = _ref133.event;\n  if (ctxMenuStore.visible && _vm.$refs.ctxWrapper && !_vm.getEventTargetNode(event, _vm.$refs.ctxWrapper.$el).flag) {\n    _vm.closeMenu();\n  }\n}\nfunction handleGlobalBlurOutside(_ref134) {\n  var _vm = _ref134._vm, actived = _ref134.actived, event = _ref134.event;\n  var custblur = _vm.blurOutside(actived, event);\n  if (typeof custblur === \"boolean\") {\n    custblur || setTimeout(function() {\n      return _vm.clearActived(event);\n    });\n    return true;\n  }\n  return false;\n}\nfunction handleGlobalIsClear(_ref135) {\n  var $el = _ref135.$el, _vm = _ref135._vm, actived = _ref135.actived, editConfig = _ref135.editConfig, event = _ref135.event, isClear = _ref135.isClear, isReadonlyCol = _ref135.isReadonlyCol;\n  if (editConfig.mode === \"row\") {\n    var rowNode = _vm.getEventTargetNode(event, $el, \"tiny-grid-body__row\");\n    var isOtherRow = rowNode.flag ? rowNode.targetElem !== actived.args.cell.parentNode : 0;\n    if (editConfig.trigger === \"manual\") {\n      isClear = !_vm.getEventTargetNode(event, $el, \"row__actived\").flag && isOtherRow;\n    } else {\n      isClear = isOtherRow && isReadonlyCol;\n    }\n  } else {\n    isClear = isReadonlyCol;\n  }\n  return isClear;\n}\nfunction handleGlobalClearActived(_ref136) {\n  var _vm$$refs$tableBody;\n  var $el = _ref136.$el, _vm = _ref136._vm, event = _ref136.event, isClear = _ref136.isClear;\n  var tableContent = (_vm$$refs$tableBody = _vm.$refs.tableBody) == null ? void 0 : _vm$$refs$tableBody.$refs.table;\n  var actualTarget = getActualTarget(event);\n  if (isClear || !_vm.getEventTargetNode(event, $el).flag || _vm.$refs.tableHeader && _vm.$refs.tableHeader.$el.contains(actualTarget) || tableContent && !tableContent.contains(actualTarget)) {\n    setTimeout(function() {\n      return _vm.clearActived(event);\n    });\n  }\n}\nfunction checkOtherKey(keyCode) {\n  return keyCode >= 48 && keyCode <= 57 || keyCode >= 65 && keyCode <= 90 || keyCode >= 96 && keyCode <= 111 || keyCode >= 186 && keyCode <= 192 || keyCode >= 219 && keyCode <= 222 || keyCode === 32;\n}\nfunction rule1(_ref137) {\n  var isKeyEsc = _ref137.isKeyEsc, _vm = _ref137._vm, event = _ref137.event, actived = _ref137.actived, mouseConfig = _ref137.mouseConfig;\n  return {\n    match: function match() {\n      return isKeyEsc;\n    },\n    action: function action() {\n      return _vm.handleEscKeyDown({\n        event,\n        actived,\n        mouseConfig\n      });\n    }\n  };\n}\nfunction rule2(_ref138) {\n  var isKeySpacebar = _ref138.isKeySpacebar, keyboardConfig = _ref138.keyboardConfig, selected = _ref138.selected, _vm = _ref138._vm, event = _ref138.event;\n  return {\n    match: function match() {\n      return isKeySpacebar && (keyboardConfig.isArrow || keyboardConfig.isTab) && selected.row && selected.column && (selected.column.type === \"selection\" || selected.column.type === \"radio\");\n    },\n    action: function action() {\n      return _vm.handleSpaceKeyDown({\n        event,\n        keyboardConfig,\n        selected\n      });\n    }\n  };\n}\nfunction rule3(args) {\n  var isKeyEnter = args.isKeyEnter, keyboardConfig = args.keyboardConfig, selected = args.selected, actived = args.actived;\n  var treeConfig = args.treeConfig, highlightCurrentRow = args.highlightCurrentRow, currentRow = args.currentRow, _vm = args._vm, event = args.event;\n  return {\n    match: function match() {\n      return isKeyEnter && (keyboardConfig.isArrow || keyboardConfig.isTab) && (selected.row || actived.row || treeConfig && highlightCurrentRow && currentRow);\n    },\n    action: function action() {\n      return _vm.handleEnterKeyDown({\n        event,\n        selected,\n        actived\n      });\n    }\n  };\n}\nfunction rule4(_ref139) {\n  var isOperCtxMenu = _ref139.isOperCtxMenu, _vm = _ref139._vm, event = _ref139.event;\n  return {\n    match: function match() {\n      return isOperCtxMenu;\n    },\n    action: function action() {\n      return _vm.handleCtxMenu({\n        event\n      });\n    }\n  };\n}\nfunction rule5(_ref140) {\n  var isKeyF2 = _ref140.isKeyF2, _vm = _ref140._vm, event = _ref140.event, selected = _ref140.selected;\n  return {\n    match: function match() {\n      return isKeyF2;\n    },\n    action: function action() {\n      return _vm.handleF2KeyDown({\n        event,\n        selected\n      });\n    }\n  };\n}\nfunction rule6(_ref141) {\n  var isOperArrowKeys = _ref141.isOperArrowKeys, keyboardConfig = _ref141.keyboardConfig, _vm = _ref141._vm, event = _ref141.event, selected = _ref141.selected;\n  return {\n    match: function match() {\n      return isOperArrowKeys && keyboardConfig.isArrow;\n    },\n    action: function action() {\n      return _vm.handleArrowKeyDown({\n        event,\n        selected\n      });\n    }\n  };\n}\nfunction rule7(_ref142) {\n  var isKeyTab = _ref142.isKeyTab, keyboardConfig = _ref142.keyboardConfig, _vm = _ref142._vm, event = _ref142.event, selected = _ref142.selected, actived = _ref142.actived;\n  return {\n    match: function match() {\n      return isKeyTab && keyboardConfig.isTab;\n    },\n    action: function action() {\n      return _vm.handleTabKeyDown({\n        event,\n        selected,\n        actived\n      });\n    }\n  };\n}\nfunction rule8(args) {\n  var isKeyDel = args.isKeyDel, treeConfig = args.treeConfig, highlightCurrentRow = args.highlightCurrentRow, currentRow = args.currentRow;\n  var isKeyBack = args.isKeyBack, keyboardConfig = args.keyboardConfig, _vm = args._vm, event = args.event, selected = args.selected;\n  return {\n    match: function match() {\n      return isKeyDel || (treeConfig && highlightCurrentRow && currentRow ? isKeyBack && keyboardConfig.isArrow : isKeyBack);\n    },\n    action: function action() {\n      return _vm.handleDelKeyDown({\n        event,\n        selected\n      });\n    }\n  };\n}\nfunction rule9(_ref143) {\n  var keyboardConfig = _ref143.keyboardConfig, isKeyWithCtrl = _ref143.isKeyWithCtrl, isKeyA = _ref143.isKeyA, isKeyX = _ref143.isKeyX, isKeyC = _ref143.isKeyC, isKeyV = _ref143.isKeyV, _vm = _ref143._vm, event = _ref143.event;\n  return {\n    match: function match() {\n      return keyboardConfig.isCut && isKeyWithCtrl && (isKeyA || isKeyX || isKeyC || isKeyV);\n    },\n    action: function action() {\n      return _vm.handleCopyKeyDown({\n        event\n      });\n    }\n  };\n}\nfunction rule10(_ref144) {\n  var keyboardConfig = _ref144.keyboardConfig, isKeyWithCtrl = _ref144.isKeyWithCtrl, _vm = _ref144._vm, event = _ref144.event, selected = _ref144.selected, actived = _ref144.actived;\n  return {\n    match: function match() {\n      return keyboardConfig.isEdit && !isKeyWithCtrl && !(selected.row === actived.row && selected.column === actived.column);\n    },\n    action: function action() {\n      return _vm.handleOtherKeyDown({\n        event,\n        selected\n      });\n    }\n  };\n}\nfunction onGlobalKeydown(event, _vm) {\n  var isCtxMenu2 = _vm.isCtxMenu, ctxMenuStore = _vm.ctxMenuStore, _vm$mouseConfig = _vm.mouseConfig, mouseConfig = _vm$mouseConfig === void 0 ? {} : _vm$mouseConfig, _vm$keyboardConfig = _vm.keyboardConfig, keyboardConfig = _vm$keyboardConfig === void 0 ? {} : _vm$keyboardConfig;\n  var treeConfig = _vm.treeConfig, highlightCurrentRow = _vm.highlightCurrentRow, currentRow = _vm.currentRow;\n  var _vm$editStore = _vm.editStore, selected = _vm$editStore.selected, actived = _vm$editStore.actived;\n  var eventKeyCode = event.keyCode;\n  var isKeyWithCtrl = event.ctrlKey;\n  var isKeyF2 = eventKeyCode === 113;\n  var isKeyX = eventKeyCode === 88;\n  var isKeyV = eventKeyCode === 86;\n  var isKeyC = eventKeyCode === 67;\n  var isKeyA = eventKeyCode === 65;\n  var isKeyDel = eventKeyCode === 46;\n  var isKeyDwArrow = eventKeyCode === 40;\n  var isKeyRightArrow = eventKeyCode === 39;\n  var isKeyUpArrow = eventKeyCode === 38;\n  var isKeyLeftArrow = eventKeyCode === 37;\n  var isKeySpacebar = eventKeyCode === 32;\n  var isKeyEsc = eventKeyCode === 27;\n  var isKeyEnter = eventKeyCode === 13;\n  var isKeyTab = eventKeyCode === 9;\n  var isKeyBack = eventKeyCode === 8;\n  var isOperArrowKeys = isKeyLeftArrow || isKeyUpArrow || isKeyRightArrow || isKeyDwArrow;\n  var isOperCtxMenu = isCtxMenu2 && ctxMenuStore.visible && (isKeyEnter || isKeySpacebar || isOperArrowKeys);\n  var rules = [\n    rule1({\n      isKeyEsc,\n      _vm,\n      event,\n      actived,\n      mouseConfig\n    }),\n    // 空格键支持选中复选列\n    rule2({\n      isKeySpacebar,\n      keyboardConfig,\n      selected,\n      _vm,\n      event\n    }),\n    // 如果是激活状态，退则出到下一行\n    rule3({\n      isKeyEnter,\n      keyboardConfig,\n      selected,\n      actived,\n      treeConfig,\n      highlightCurrentRow,\n      currentRow,\n      _vm,\n      event\n    }),\n    // 如果配置了右键菜单; 支持方向键操作、回车\n    rule4({\n      isOperCtxMenu,\n      _vm,\n      event\n    }),\n    // 如果按下了 F2 键\n    rule5({\n      isKeyF2,\n      _vm,\n      event,\n      selected\n    }),\n    // 如果按下了方向键\n    rule6({\n      isOperArrowKeys,\n      keyboardConfig,\n      _vm,\n      event,\n      selected\n    }),\n    // 如果按下了 Tab 键切换\n    rule7({\n      isKeyTab,\n      keyboardConfig,\n      _vm,\n      event,\n      selected,\n      actived\n    }),\n    // 如果是删除键\n    rule8({\n      isKeyDel,\n      treeConfig,\n      highlightCurrentRow,\n      currentRow,\n      isKeyBack,\n      keyboardConfig,\n      _vm,\n      event,\n      selected\n    }),\n    rule9({\n      keyboardConfig,\n      isKeyWithCtrl,\n      isKeyA,\n      isKeyX,\n      isKeyC,\n      isKeyV,\n      _vm,\n      event\n    }),\n    // 如果是按下非功能键之外允许直接编辑\n    rule10({\n      keyboardConfig,\n      isKeyWithCtrl,\n      _vm,\n      event,\n      selected,\n      actived\n    })\n  ];\n  for (var i = 0; i < rules.length; i++) {\n    if (rules[i].match()) {\n      return rules[i].action();\n    }\n  }\n}\nfunction handleGlobalMousedownEvent(event) {\n  var _this1 = this;\n  var $el = this.$el, ctxMenuStore = this.ctxMenuStore, _this$editConfig = this.editConfig, editConfig = _this$editConfig === void 0 ? {} : _this$editConfig, filterStore = this.filterStore;\n  var _this$$refs = this.$refs, filterWrapper = _this$$refs.filterWrapper, validTip = _this$$refs.validTip;\n  var actived = this.editStore.actived;\n  handleGlobalMousedownOnFilterWrapper({\n    $el,\n    _vm: this,\n    event,\n    filterStore,\n    filterWrapper\n  });\n  if (actived.row && !(editConfig.autoClear === false)) {\n    if (handleGlobalBlurOutside({\n      _vm: this,\n      actived,\n      event\n    })) {\n      return;\n    }\n    if (validTip && this.getEventTargetNode(event, validTip.$el).flag) ;\n    else if (!this.lastCallTime || this.lastCallTime + 50 < Date.now()) {\n      this.preventEvent(event, \"event.clear_actived\", actived.args, function() {\n        var isClear;\n        var isReadonlyCol = !_this1.getEventTargetNode(event, $el, \"col__edit\").flag;\n        isClear = handleGlobalIsClear({\n          $el,\n          _vm: _this1,\n          actived,\n          editConfig,\n          event,\n          isClear,\n          isReadonlyCol\n        });\n        handleGlobalClearActived({\n          $el,\n          _vm: _this1,\n          event,\n          isClear\n        });\n      });\n    }\n  }\n  handleGlobalMousedownOnCtxMenu({\n    _vm: this,\n    ctxMenuStore,\n    event\n  });\n}\nfunction handleGlobalMousedownCaptureEvent(event) {\n  this.handleClearMouseChecked(event);\n}\nfunction handleGlobalBlurEvent() {\n  this.closeFilter();\n  this.closeMenu();\n}\nfunction handleGlobalMousewheelEvent(event) {\n  this.updateScrollLoadBar(event);\n  this.clostTooltip();\n  this.closeMenu();\n}\nfunction handleEscKeyDown(_ref145) {\n  var _this10 = this;\n  var event = _ref145.event, actived = _ref145.actived, mouseConfig = _ref145.mouseConfig;\n  this.closeMenu();\n  this.closeFilter();\n  if (actived.row) {\n    this.clearActived(event);\n    if (mouseConfig.selected) {\n      this.$nextTick(function() {\n        return _this10.handleSelected(actived.args, event);\n      });\n    }\n  }\n}\nfunction handleEnterKeyDown(_ref146) {\n  var _this11 = this;\n  var event = _ref146.event, selected = _ref146.selected, actived = _ref146.actived;\n  var highlightCurrentRow = this.highlightCurrentRow, currentRow = this.currentRow, treeConfig = this.treeConfig;\n  var isLeftArrow = event.keyCode === 37;\n  var isUpArrow = event.keyCode === 38;\n  var isRightArrow = event.keyCode === 39;\n  if (selected.row || actived.row) {\n    this.moveSelected({\n      args: selected.row ? selected.args : actived.args,\n      isLeftArrow,\n      isUpArrow,\n      isRightArrow,\n      isDownArrow: true,\n      event\n    });\n  } else if (treeConfig && highlightCurrentRow && currentRow) {\n    var children = currentRow[treeConfig.children];\n    if (children && children.length) {\n      event.preventDefault();\n      var targetRow = children[0];\n      this.setTreeExpansion(currentRow, true).then(function() {\n        return _this11.scrollToRow(targetRow);\n      }).then(function() {\n        return _this11.triggerCurrentRowEvent(event, {\n          $table: _this11,\n          row: targetRow\n        });\n      });\n    }\n  }\n}\nfunction handleCtxMenu(_ref147) {\n  var event = _ref147.event;\n  var ctxMenuStore = this.ctxMenuStore;\n  event.preventDefault();\n  if (ctxMenuStore.showChild && hasChildrenList(ctxMenuStore.selected)) {\n    this.moveCtxMenu({\n      event,\n      keyCode: event.keyCode,\n      ctxMenuStore,\n      property: \"selectChild\",\n      operKey: 37,\n      operRest: false,\n      menuList: ctxMenuStore.selected.children\n    });\n  } else {\n    this.moveCtxMenu({\n      event,\n      keyCode: event.keyCode,\n      ctxMenuStore,\n      property: \"selected\",\n      operKey: 39,\n      operRest: true,\n      menuList: this.ctxMenuList\n    });\n  }\n}\nfunction handleArrowKeyDown(_ref148) {\n  var event = _ref148.event, selected = _ref148.selected;\n  var highlightCurrentRow = this.highlightCurrentRow, currentRow = this.currentRow;\n  var isLeftArrow = event.keyCode === 37;\n  var isUpArrow = event.keyCode === 38;\n  var isRightArrow = event.keyCode === 39;\n  var isDownArrow = event.keyCode === 40;\n  if (selected.row && selected.column) {\n    this.moveSelected({\n      args: selected.args,\n      isLeftArrow,\n      isUpArrow,\n      isRightArrow,\n      isDownArrow,\n      event\n    });\n  } else if ((isUpArrow || isDownArrow) && highlightCurrentRow && currentRow) {\n    this.moveCurrentRow(isUpArrow, isDownArrow, event);\n  }\n}\nfunction handleDelKeyDown(_ref149) {\n  var _this12 = this;\n  var event = _ref149.event, selected = _ref149.selected;\n  var _this$keyboardConfig = this.keyboardConfig, keyboardConfig = _this$keyboardConfig === void 0 ? {} : _this$keyboardConfig, treeConfig = this.treeConfig, highlightCurrentRow = this.highlightCurrentRow, currentRow = this.currentRow;\n  var isBack = event.keyCode === 8;\n  if (keyboardConfig.isDel && (selected.row || selected.column)) {\n    setCellValue(selected.row, selected.column, null);\n    if (isBack) {\n      this.handleActived(selected.args, event);\n    }\n  } else if (isBack && keyboardConfig.isArrow && treeConfig && highlightCurrentRow && currentRow) {\n    var _findTree = findTree$1(this.afterFullData, function(item) {\n      return item === currentRow;\n    }, treeConfig), parentRow = _findTree.parent;\n    if (parentRow) {\n      event.preventDefault();\n      this.setTreeExpansion(parentRow, false).then(function() {\n        return _this12.scrollToRow(parentRow);\n      }).then(function() {\n        return _this12.triggerCurrentRowEvent(event, {\n          $table: _this12,\n          row: parentRow\n        });\n      });\n    }\n  }\n}\nfunction handleSpaceKeyDown(_ref150) {\n  var event = _ref150.event, selected = _ref150.selected;\n  event.preventDefault();\n  if (selected.column.type === \"selection\") {\n    this.handleToggleCheckRowEvent(selected.args, event);\n  } else {\n    this.triggerRadioRowEvent(event, selected.args);\n  }\n}\nfunction handleTabKeyDown(_ref151) {\n  var event = _ref151.event, selected = _ref151.selected, actived = _ref151.actived;\n  var isShiftKey = event.shiftKey;\n  var useTab = this.editConfig.useTab;\n  if (selected.row || selected.column) {\n    this.moveTabSelected(selected.args, isShiftKey, event, useTab);\n  } else if (actived.row || actived.column) {\n    this.moveTabSelected(actived.args, isShiftKey, event, useTab);\n  }\n}\nfunction handleCopyKeyDown(_ref152) {\n  var event = _ref152.event;\n  if (event.keyCode === 65) {\n    this.handleAllChecked(event);\n  } else if (event.keyCode === 88 || event.keyCode === 67) {\n    this.handleCopyed(event.keyCode === 88, event);\n  } else {\n    this.handlePaste(event);\n  }\n}\nfunction handleF2KeyDown(_ref153) {\n  var event = _ref153.event, selected = _ref153.selected;\n  if (selected.row && selected.column) {\n    event.preventDefault();\n    this.handleActived(selected.args, event);\n  }\n}\nfunction handleOtherKeyDown(_ref154) {\n  var event = _ref154.event, selected = _ref154.selected;\n  var _this$keyboardConfig2 = this.keyboardConfig, keyboardConfig = _this$keyboardConfig2 === void 0 ? {} : _this$keyboardConfig2;\n  var keyCode = event.keyCode;\n  var isOtherKey = checkOtherKey(keyCode);\n  if (isOtherKey && selected.column && selected.row && selected.column.editor && (!keyboardConfig.editMethod || !(keyboardConfig.editMethod(selected.args, event) === false))) {\n    this.handleActived(selected.args, event);\n  }\n}\nfunction handleGlobalKeydownEvent(event) {\n  var _this13 = this;\n  this.preventEvent(event, \"event.keydown\", {\n    $table: this\n  }, function() {\n    onGlobalKeydown(event, _this13);\n  });\n}\nfunction handleGlobalResizeEvent() {\n  this.updateParentHeight();\n  this.recalculate();\n}\nvar run = function run2(names, $table) {\n  return names.forEach(function(name) {\n    return $table[name].apply($table);\n  });\n};\nvar debounceScrollLoadDuration = 200;\nvar AsyncCollectTimeout = 100;\nvar sortMultiple = function sortMultiple2(rows, columns2, _vm) {\n  var greaterThan = function greaterThan2(valueP, valueQ) {\n    var typeP = typeof valueP;\n    var typeQ = typeof valueQ;\n    if (typeP === typeQ && [\"number\", \"string\", \"boolean\"].includes(typeP)) {\n      return valueP > valueQ;\n    } else {\n      return String(valueP) > String(valueQ);\n    }\n  };\n  var multipleColumnSort = _vm.sortOpts.multipleColumnSort;\n  if (typeof multipleColumnSort === \"function\") {\n    rows = multipleColumnSort({\n      $table: _vm,\n      tableData: rows,\n      sortColumns: columns2\n    });\n  } else {\n    rows = rows.sort(function(p, q) {\n      for (var i = 0; i < columns2.length; i++) {\n        var _columns$i = columns2[i], property = _columns$i.property, order = _columns$i.order;\n        var flag = order === \"asc\" ? 1 : -1;\n        var valueP = p[property];\n        var valueQ = q[property];\n        if (!Object.is(valueP, valueQ)) {\n          return greaterThan(valueP, valueQ) ? flag : -flag;\n        }\n      }\n      return 0;\n    });\n  }\n  return rows;\n};\nvar Methods$d = {\n  // 监听某个元素是否出现在视口中\n  addIntersectionObserver: function addIntersectionObserver() {\n    var _this14 = this;\n    if (typeof IntersectionObserver === \"undefined\") {\n      return;\n    }\n    this.intersectionObserver = new IntersectionObserver(function(entries) {\n      var entry = entries[0];\n      if (entries.length > 1) {\n        var intersectingEntry = entries.find(function(entry2) {\n          return entry2.isIntersecting;\n        });\n        if (intersectingEntry) {\n          entry = intersectingEntry;\n        }\n      }\n      _this14.handleVisibilityChange(entry.isIntersecting, entry);\n    }, this.intersectionOption);\n    this.intersectionObserver.observe(this.$refs.tableBody.$el);\n  },\n  removeIntersectionObserver: function removeIntersectionObserver() {\n    if (this.intersectionObserver) {\n      this.intersectionObserver.unobserve(this.$refs.tableBody.$el);\n      this.intersectionObserver.disconnect();\n      this.intersectionObserver = null;\n    }\n  },\n  getParentElem: function getParentElem() {\n    var $el = this.$grid ? this.$grid.$el : this.$el;\n    return $el.parentNode;\n  },\n  updateParentHeight: function updateParentHeight() {\n    if (this.$grid) {\n      this.$grid.updateParentHeight();\n    } else {\n      this.parentHeight = this.getParentElem().clientHeight;\n    }\n  },\n  getParentHeight: function getParentHeight() {\n    return this.parentHeight;\n  },\n  clearAll: function clearAll(silent) {\n    var _this$$grid$fetchOpti = this.$grid.fetchOption, fetchOption = _this$$grid$fetchOpti === void 0 ? {} : _this$$grid$fetchOpti;\n    var isReloadFilter = fetchOption.isReloadFilter, _fetchOption$isReload = fetchOption.isReloadScroll, isReloadScroll = _fetchOption$isReload === void 0 ? false : _fetchOption$isReload;\n    this.clearSort();\n    this.clearCurrentRow();\n    this.clearCurrentColumn();\n    this.clearSelection();\n    this.clearRowExpand();\n    this.clearTreeExpand();\n    this.clearValidateMap();\n    if (!isReloadScroll) {\n      this.clearScroll();\n    }\n    this.cellStatus.clear();\n    if (typeof isReloadFilter === \"undefined\" ? Grid$1._filter : !isReloadFilter) {\n      this.clearFilter(silent);\n    }\n    if (this.keyboardConfig || this.mouseConfig) {\n      this.clearIndexChecked();\n      this.clearHeaderChecked();\n      this.clearChecked();\n      this.clearSelected();\n      this.clearCopyed();\n    }\n    return this.clearActived();\n  },\n  refreshData: function refreshData(data7) {\n    var _this15 = this;\n    var next = function next2() {\n      _this15.tableData = [];\n      _this15.cellStatus.clear();\n      _this15.clearValidateMap();\n      return _this15.updateRawData(data7 || _this15.tableFullData);\n    };\n    return this.$nextTick().then(next);\n  },\n  refreshStyle: function refreshStyle() {\n    var $el = this.$el, rowSpan = this.rowSpan, spanMethod = this.spanMethod;\n    if ($el && (rowSpan || spanMethod)) {\n      var transform = $el.style.transform;\n      var restore = function restore2() {\n        return setTimeout(function() {\n          $el.style.transform = transform;\n        });\n      };\n      $el.style.transform = \"scale(0.99999)\";\n      return this.$nextTick().then(restore);\n    }\n    return this.$nextTick();\n  },\n  updateData: function updateData() {\n    var _this16 = this;\n    return this.handleTableData(true).then(function() {\n      return _this16.updateFooter();\n    }).then(function() {\n      return _this16.recalculate();\n    });\n  },\n  // 处理表格数据（过滤，排序，虚拟滚动需要渲染数据的条数）\n  handleTableData: function handleTableData(force) {\n    var _this$tableFullColumn, _this$tableFullColumn2;\n    if (force && (((_this$tableFullColumn = this.tableFullColumn) == null ? void 0 : _this$tableFullColumn.length) > 0 || this.viewType !== GlobalConfig$1.viewConfig.DEFAULT)) {\n      this.updateAfterFullData();\n      this.updateSelectionStatus();\n      this.handleSelectionHeader();\n    }\n    var scrollYStore = this.scrollYStore, _graphInfo = this._graphInfo, scrollYLoad = this.scrollYLoad;\n    var renderSize = scrollYStore.renderSize, startIndex = scrollYStore.startIndex;\n    var graphed = _graphInfo == null ? void 0 : _graphInfo.graphed;\n    var tableNode = scrollYLoad ? graphed == null ? void 0 : graphed.slice(startIndex, startIndex + renderSize) : graphed;\n    var tableData = (tableNode == null ? void 0 : tableNode.map(function(node) {\n      return node.payload;\n    })) || [];\n    this.tableNode = tableNode;\n    this.tableData = tableData;\n    this.updateScrollStatus();\n    if (force && ((_this$tableFullColumn2 = this.tableFullColumn) == null ? void 0 : _this$tableFullColumn2.length) > 0) {\n      this.handleDefault();\n    }\n    return this.$nextTick();\n  },\n  // 全量加载表格数据\n  loadTableData: function loadTableData(datas, notRefresh) {\n    var _this17 = this;\n    var editStore = this.editStore, height2 = this.height, maxHeight = this.maxHeight, lastScrollLeft = this.lastScrollLeft, lastScrollTop = this.lastScrollTop, scrollYLoad = this.scrollYLoad;\n    editStore.insertList = [];\n    editStore.insertMap = /* @__PURE__ */ new Map();\n    editStore.removeList = [];\n    if (scrollYLoad && !(height2 || maxHeight)) {\n      error(\"ui.grid.error.scrollYHeight\");\n    }\n    if (!notRefresh) {\n      this.clearScroll();\n    }\n    return this.handleTableData(true).then(function() {\n      return !notRefresh && _this17.recalculate();\n    }).then(function() {\n      if (lastScrollLeft || lastScrollTop) {\n        return _this17.attemptRestoreScroll({\n          lastScrollLeft,\n          lastScrollTop\n        });\n      }\n    }).then(function() {\n      var _this17$resolveMap$lo;\n      if (((_this17$resolveMap$lo = _this17.resolveMap.loadDataResolve) == null ? void 0 : _this17$resolveMap$lo.data) === datas) {\n        _this17.resolveMap.loadDataResolve.resolveQueue.forEach(function(resolve) {\n          return resolve();\n        });\n        _this17.resolveMap.loadDataResolve = null;\n      }\n    });\n  },\n  // 重新加载数据\n  reloadData: function reloadData(datas) {\n    var _this18 = this;\n    return this.clearAll().then(function() {\n      return _this18.updateRawData(datas);\n    });\n  },\n  // 加载全量数据\n  loadData: function loadData(datas) {\n    var _this19 = this;\n    return new Promise(function(resolve) {\n      _this19.updateRawData(datas);\n      if (_this19.resolveMap.loadDataResolve) {\n        _this19.resolveMap.loadDataResolve.data = datas;\n        _this19.resolveMap.loadDataResolve.resolveQueue.push(resolve);\n      } else {\n        _this19.resolveMap.loadDataResolve = {\n          data: datas,\n          resolveQueue: [resolve]\n        };\n      }\n    });\n  },\n  updateRawData: function updateRawData(datas) {\n    this.rawData = datas;\n    this.rawDataVersion += 1;\n  },\n  getOriginRow: function getOriginRow(row2) {\n    var rowid2 = getRowid(this, row2);\n    return rowid2 ? this.rowidCacheMap.get(rowid2) : null;\n  },\n  setOriginRow: function setOriginRow(row2, record) {\n    var rowid2 = getRowid(this, row2);\n    if (rowid2 && record) {\n      this.rowidCacheMap.set(rowid2, record);\n    }\n  },\n  reloadRow: function reloadRow(row2, record, field) {\n    var tableData = this.tableData, treeConfig = this.treeConfig, treeOrdered = this.treeOrdered;\n    var _ref155 = treeConfig || {}, childrenKey = _ref155.children, _ref155$temporaryInde = _ref155.temporaryIndex, temporaryIndex = _ref155$temporaryInde === void 0 ? \"_$index_\" : _ref155$temporaryInde;\n    var rowKey = getRowkey(this);\n    var originRow = this.getOriginRow(row2);\n    var hasSrc = originRow && row2;\n    var hasSrcNoField = hasSrc && !field;\n    if (hasSrc && field) {\n      set(originRow, field, get(record || row2, field));\n    }\n    if (hasSrcNoField && record) {\n      var _extends4, _ref156;\n      var backupRow = this.defineField(_extends({}, record, (_extends4 = {}, _extends4[rowKey] = originRow[rowKey], _extends4)));\n      var rowChildren, clonedRow;\n      if (treeConfig) {\n        backupRow[childrenKey] = void 0;\n        rowChildren = row2[childrenKey];\n        if (!treeOrdered) {\n          backupRow[temporaryIndex] = originRow[temporaryIndex];\n        }\n      }\n      clonedRow = clone(backupRow, true);\n      if (treeConfig) {\n        backupRow[childrenKey] = originRow[childrenKey];\n      }\n      this.setOriginRow(row2, backupRow);\n      clear(row2, void 0);\n      Object.assign(row2, clonedRow, treeConfig ? (_ref156 = {}, _ref156[childrenKey] = rowChildren, _ref156) : null);\n      this.updateCache();\n    }\n    if (hasSrcNoField && !record) {\n      var _clonedRow;\n      if (treeConfig) {\n        var _extends5;\n        _clonedRow = clone(_extends({}, row2, (_extends5 = {}, _extends5[childrenKey] = void 0, _extends5)), true);\n        _clonedRow[childrenKey] = originRow[childrenKey];\n      } else {\n        _clonedRow = clone(row2, true);\n      }\n      destructuring(originRow, _clonedRow);\n    }\n    this.tableData = tableData.slice(0);\n    return this.$nextTick();\n  },\n  // 从新加载列配置\n  reloadColumn: function reloadColumn(columns2) {\n    var _this20 = this;\n    return this.clearAll().then(function() {\n      return _this20.loadColumn(columns2);\n    });\n  },\n  loadColumn: function loadColumn(columns2) {\n    var _this21 = this;\n    return new Promise(function(resolve) {\n      _this21.collectColumn = mapTree(columns2, function(column) {\n        return Cell.createColumn(_this21, column);\n      }, headerProps);\n      resolve();\n    }).then(function() {\n      return _this21.$nextTick();\n    });\n  },\n  /** 设置数据查找缓存，对数据进行备份，深度克隆  */\n  updateCache: function updateCache(backup, deepCopy) {\n    var _this22 = this;\n    if (backup === void 0) {\n      backup = false;\n    }\n    if (deepCopy === void 0) {\n      deepCopy = false;\n    }\n    var tableFullData = this.tableFullData, treeConfig = this.treeConfig, treeOrdered = this.treeOrdered, editConfig = this.editConfig, _this$saveSource = this.saveSource, saveSource = _this$saveSource === void 0 ? false : _this$saveSource;\n    var rowKey = getRowkey(this);\n    var _ref157 = treeConfig || {}, childrenKey = _ref157.children, _ref157$temporaryInde = _ref157.temporaryIndex, temporaryIndex = _ref157$temporaryInde === void 0 ? \"_$index_\" : _ref157$temporaryInde;\n    var isTreeOrderedFalse = treeConfig && !treeOrdered;\n    var fullDataRowIdData = this.fullDataRowIdData = {};\n    var fullDataRowMap = this.fullDataRowMap;\n    fullDataRowMap.clear();\n    eachTree(tableFullData, function(row2, index2, _array, _path, parent) {\n      var rowId = getRowid(_this22, row2);\n      if (!rowId) {\n        rowId = getRowUniqueId();\n        set(row2, rowKey, rowId);\n      }\n      var rowCache = {\n        row: row2,\n        rowid: rowId,\n        index: index2\n      };\n      if (fullDataRowIdData[rowId]) {\n        warn(\"ui.grid.error.duplicateRowId\", rowId);\n      }\n      fullDataRowIdData[rowId] = rowCache;\n      fullDataRowMap.set(_this22.getRaw(row2), rowCache);\n      if (isTreeOrderedFalse) {\n        var parentIndex;\n        if (parent) {\n          parentIndex = get(parent, temporaryIndex);\n        }\n        set(row2, temporaryIndex, (parentIndex ? parentIndex + \".\" : \"\") + (index2 + 1));\n      }\n    }, treeConfig);\n    if (backup && (editConfig || saveSource)) {\n      requestIdleCallback(function() {\n        var rowidCacheMap = /* @__PURE__ */ new Map();\n        var callback = function callback2(row2) {\n          var _extends6;\n          return rowidCacheMap.set(getRowid(_this22, row2), clone(childrenKey ? _extends({}, row2, (_extends6 = {}, _extends6[childrenKey] = null, _extends6)) : _extends({}, row2), deepCopy));\n        };\n        eachTree(tableFullData, callback, treeConfig);\n        _this22.rowidCacheMap = rowidCacheMap;\n      });\n    }\n  },\n  getRaw: function getRaw(object) {\n    var hooks_vue = hooks;\n    return !isVue2 && hooks_vue.isProxy(object) ? hooks.toRaw(object) : object;\n  },\n  /**\n   * 递归地将 Proxy 对象（如 Vue 3 的响应式对象）转换为普通对象。\n   * @param {any} data 待处理的数据\n   * @returns {any} 转换后的普通对象或原始数据\n   */\n  deepUnwrap: function deepUnwrap(data7) {\n    if (data7 === null || typeof data7 !== \"object\") {\n      return data7;\n    }\n    if (data7 instanceof Map) {\n      return this.cloneMapAndUnwrap(data7);\n    }\n    if (data7 instanceof Set) {\n      return new Set(Array.from(data7).map(this.deepUnwrap));\n    }\n    if (Array.isArray(data7)) {\n      return data7.map(this.deepUnwrap);\n    }\n    var result = {};\n    for (var key in data7) {\n      if (Object.prototype.hasOwnProperty.call(data7, key)) {\n        result[key] = this.deepUnwrap(data7[key]);\n      }\n    }\n    return result;\n  },\n  /**\n   * 复制 Map，并递归地将 Map 的值中包含的 Proxy 转换为普通对象。\n   * @param {Map<any, any>} originalMap 原始 Map\n   * @returns {Map<any, any>} 复制并解包后的新 Map\n   */\n  cloneMapAndUnwrap: function cloneMapAndUnwrap(originalMap) {\n    if (!(originalMap instanceof Map)) {\n      return originalMap;\n    }\n    var newMap = /* @__PURE__ */ new Map();\n    for (var _iterator0 = _createForOfIteratorHelperLoose(originalMap.entries()), _step0; !(_step0 = _iterator0()).done; ) {\n      var _step0$value = _step0.value, key = _step0$value[0], value = _step0$value[1];\n      var unwrappedValue = this.deepUnwrap(value);\n      newMap.set(key, unwrappedValue);\n    }\n    return newMap;\n  },\n  // 更新列的 Map\n  cacheColumnMap: function cacheColumnMap(options) {\n    var fullColumnMap = this.fullColumnMap;\n    var fullColumnIdData = {};\n    this.fullColumnIdData = fullColumnIdData;\n    fullColumnMap.clear();\n    options.columnCaches.forEach(function(cache) {\n      fullColumnIdData[cache.colid] = cache;\n      fullColumnMap.set(cache.column, cache);\n    });\n  },\n  // 通过tr的dom元素获取行数据等相关信息\n  getRowNode: function getRowNode(tr) {\n    if (!tr) return null;\n    var fullDataRowIdData = this.fullDataRowIdData, tableFullData = this.tableFullData;\n    var dataRowid = tr.dataset.rowid;\n    var rowCache = fullDataRowIdData[dataRowid];\n    if (rowCache) {\n      return {\n        item: rowCache.row,\n        index: rowCache.index,\n        items: tableFullData\n      };\n    }\n    return null;\n  },\n  getColumnNode: function getColumnNode(cell) {\n    if (!cell) return null;\n    var fullColumnIdData = this.fullColumnIdData, tableFullColumn = this.tableFullColumn;\n    var dataColid = cell.dataset.colid;\n    var colCache = fullColumnIdData[dataColid];\n    if (colCache) {\n      return {\n        index: colCache.index,\n        item: colCache.column,\n        items: tableFullColumn\n      };\n    }\n    return null;\n  },\n  getRowIndex: function getRowIndex(row2) {\n    var fullDataRowMap = this.fullDataRowMap;\n    row2 = this.getRaw(row2);\n    return fullDataRowMap.has(row2) ? fullDataRowMap.get(row2).index : -1;\n  },\n  getColumnIndex: function getColumnIndex(column) {\n    var fullColumnMap = this.fullColumnMap;\n    return fullColumnMap.has(column) ? fullColumnMap.get(column).columnIndex : -1;\n  },\n  hasIndexColumn: function hasIndexColumn(column) {\n    return (column == null ? void 0 : column.type) === \"index\";\n  },\n  defineField: function defineField(row2, copy, editorColumns, cache) {\n    var _this23 = this;\n    if (!row2 || typeof row2 !== \"object\") return row2;\n    if (copy) {\n      row2 = clone(row2, true);\n    }\n    var rowKey = getRowkey(this);\n    var columns2 = editorColumns || this.visibleColumn;\n    columns2.forEach(function(column) {\n      var property = column.property, editor = column.editor;\n      var propNotExist = property && !has(row2, property);\n      var propDefaultValue = editor && !isUndefined(editor.defaultValue) ? editor.defaultValue : null;\n      if (propNotExist) {\n        if (cache) {\n          var originRow = _this23.getOriginRow(row2);\n          if (originRow) {\n            originRow[property] = propDefaultValue;\n          }\n        }\n        if (isVue2) {\n          _this23.$set(row2, property, propDefaultValue);\n        } else {\n          set(row2, property, propDefaultValue);\n        }\n      }\n    });\n    var rowId = get(row2, rowKey);\n    if (isNull(rowId) || rowId === \"\") {\n      set(row2, rowKey, getRowUniqueId());\n    }\n    return row2;\n  },\n  isTemporaryRow: function isTemporaryRow(row2) {\n    var rowid2 = getRowid(this, row2);\n    return this.editStore.insertMap.has(rowid2);\n  },\n  createData: function createData(records, copy) {\n    var _this24 = this;\n    var isArr = isArray(records);\n    if (!isArr) {\n      records = [records];\n    }\n    var tmp = records.map(function(record) {\n      return _this24.defineField(record, copy);\n    });\n    return new Promise(function(resolve) {\n      resolve(isArr ? tmp : tmp[0]);\n    });\n  },\n  createRow: function createRow(records) {\n    return this.createData(records, true);\n  },\n  /**\n   * 清空单元格内容：\n   * 如果不传参数，则清空整个表格内容；\n   * 如果传row，则清空一行内容；\n   * 如果传rows，则清空多行内容；\n   * 如果还额外传了field，则清空指定单元格内容；\n   */\n  clearData: function clearData(rows, field) {\n    var _this25 = this;\n    rows = !arguments.length ? this.tableFullData : rows && !isArray(rows) ? [rows] : rows;\n    rows.forEach(function(row2) {\n      if (field) {\n        set(row2, field, null);\n      } else {\n        _this25.visibleColumn.forEach(function(column) {\n          column.property && setCellValue(row2, column, null);\n        });\n      }\n    });\n    return this.$nextTick();\n  },\n  hasRowInsert: function hasRowInsert(row2) {\n    return this.isTemporaryRow(row2);\n  },\n  compareRow: function compareRow(row2, originalRow, field) {\n    var value = get(row2, field);\n    var originalValue = get(originalRow, field);\n    var column = this.getColumnByField(field);\n    var equals = (column == null ? void 0 : column.equals) || this.equals;\n    var result;\n    if (equals) {\n      result = equals({\n        value,\n        originalValue,\n        field,\n        row: row2,\n        originalRow,\n        column,\n        $table: this\n      });\n    }\n    if (typeof result !== \"boolean\") {\n      result = isEqual(originalValue, value);\n    }\n    return result;\n  },\n  hasRowChange: function hasRowChange(row2, field) {\n    var _editConfig$insertCha;\n    var treeConfig = this.treeConfig, visibleColumn = this.visibleColumn, _this$editConfig2 = this.editConfig, editConfig = _this$editConfig2 === void 0 ? {} : _this$editConfig2;\n    var insertChanged = (_editConfig$insertCha = editConfig == null ? void 0 : editConfig.insertChanged) != null ? _editConfig$insertCha : false;\n    var argsLength = arguments.length;\n    var originRow;\n    if (this.isTemporaryRow(row2)) {\n      return insertChanged;\n    }\n    var cacheRow = this.getOriginRow(row2);\n    if (cacheRow) {\n      if (treeConfig) {\n        var _extends7, _extends8;\n        var children = treeConfig.children;\n        row2 = _extends({}, row2, (_extends7 = {}, _extends7[children] = null, _extends7));\n        originRow = _extends({}, cacheRow, (_extends8 = {}, _extends8[children] = null, _extends8));\n      } else {\n        originRow = _extends({}, cacheRow);\n      }\n    }\n    if (originRow) {\n      if (argsLength > 1) {\n        return !this.compareRow(row2, originRow, field);\n      }\n      for (var i = 0; i < visibleColumn.length; i++) {\n        var property = visibleColumn[i].property;\n        if (property && !this.compareRow(row2, originRow, property)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  },\n  // 获取表格所有列\n  getColumns: function getColumns(columnIndex) {\n    var columns2 = this.visibleColumn;\n    var argsLength = arguments.length;\n    return argsLength ? columns2[columnIndex] : columns2.slice(0);\n  },\n  getColumnById: function getColumnById(colid) {\n    var fullColumnIdData = this.fullColumnIdData;\n    var colCache = fullColumnIdData[colid];\n    return colCache ? colCache.column : null;\n  },\n  getColumnByField: function getColumnByField(field) {\n    var columns2 = this.visibleColumn;\n    return typeof field === \"string\" && field ? find$1(columns2, function(column) {\n      return column.property === field;\n    }) : null;\n  },\n  // 获取当前表格的列（完整的全量表头列、处理条件之后的全量表头列、当前渲染中的表头列）\n  getTableColumn: function getTableColumn() {\n    var collectColumn2 = this.collectColumn, tableColumn2 = this.tableColumn, tableFullColumn = this.tableFullColumn, visibleColumn = this.visibleColumn;\n    return {\n      fullColumn: tableFullColumn.slice(0),\n      visibleColumn: visibleColumn.slice(0),\n      tableColumn: tableColumn2.slice(0),\n      collectColumn: collectColumn2.slice(0)\n    };\n  },\n  // 获取表格所有数据\n  getData: function getData(rowIndex) {\n    var allRows = this.rawData || [];\n    if (!arguments.length) {\n      return allRows.slice(0);\n    }\n    if (typeof rowIndex === \"number\" && rowIndex > -1) {\n      return allRows[rowIndex];\n    }\n    return void 0;\n  },\n  // 获取选中数据。notCopy为true不返回数据副本，表格内部要继续处理其返回值时设置为true\n  getSelectRecords: function getSelectRecords(notCopy) {\n    var _this$selectConfig = this.selectConfig, selectConfig = _this$selectConfig === void 0 ? {} : _this$selectConfig, selection = this.selection;\n    var tableFullData = this.tableFullData, treeConfig = this.treeConfig;\n    var checkField = selectConfig.checkField;\n    var _ref158 = {}, _ref158$rowList = _ref158.rowList, rowList = _ref158$rowList === void 0 ? [] : _ref158$rowList;\n    if (checkField && treeConfig) {\n      rowList = filterTree(tableFullData, function(row2) {\n        return get(row2, checkField);\n      }, treeConfig);\n    }\n    if (checkField && !treeConfig) {\n      rowList = tableFullData.filter(function(row2) {\n        return get(row2, checkField);\n      });\n    }\n    if (!checkField && treeConfig) {\n      rowList = filterTree(tableFullData, function(row2) {\n        return ~selection.indexOf(row2);\n      }, treeConfig);\n    }\n    if (!checkField && !treeConfig) {\n      rowList = tableFullData.filter(function(row2) {\n        return ~selection.indexOf(row2);\n      });\n    }\n    return notCopy ? rowList : clone(rowList, true);\n  },\n  // 对数据进行筛选和排序，获取处理后数据。服务端筛选和排序，在接口调用时已传入参数\n  updateAfterFullData: function updateAfterFullData() {\n    var _this26 = this;\n    var tableData = this.tableFullData;\n    var updateFilter = function updateFilter2(tableData2) {\n      var remoteFilter = _this26.remoteFilter, visibleColumn = _this26.visibleColumn;\n      var filterColumn = visibleColumn.filter(function(_ref159) {\n        var filter2 = _ref159.filter;\n        return !!filter2;\n      });\n      return tableData2.filter(function(row2) {\n        return filterColumn.every(function(column) {\n          return remoteFilter ? true : _this26.handleLocalFilter(row2, column);\n        });\n      });\n    };\n    var updateSort = function updateSort2(tableData2) {\n      var visibleColumn = _this26.visibleColumn, sortOpts2 = _this26.sortOpts, remoteSort = _this26.remoteSort;\n      var sortColumn = visibleColumn.find(function(column) {\n        return column.order;\n      });\n      var isRemote = isBoolean(sortColumn == null ? void 0 : sortColumn.remoteSort) ? sortColumn == null ? void 0 : sortColumn.remoteSort : remoteSort;\n      if (sortColumn != null && sortColumn.order && !isRemote) {\n        if (_this26.sortMethod) {\n          var order = sortColumn.order, property = sortColumn.property;\n          var params = {\n            $table: _this26,\n            column: sortColumn,\n            data: tableData2,\n            order,\n            property\n          };\n          tableData2 = _this26.sortMethod(params) || tableData2;\n        } else {\n          var sortedFlag = false;\n          if (sortOpts2.multipleColumnSort) {\n            var sortColumns = visibleColumn.filter(function(_ref160) {\n              var order2 = _ref160.order;\n              return !!order2;\n            });\n            if (sortColumns.length > 1) {\n              tableData2 = sortMultiple(tableData2, sortColumns, _this26);\n              sortedFlag = true;\n            }\n          }\n          if (!sortedFlag) {\n            var columnSortMethod = sortColumn.sortMethod;\n            var sorted = columnSortMethod ? tableData2.sort(columnSortMethod) : sortBy(tableData2, sortColumn.sortBy ? sortColumn.sortBy : sortColumn.property);\n            tableData2 = sortColumn.order === \"desc\" ? sorted.reverse() : sorted;\n          }\n        }\n      }\n      return tableData2;\n    };\n    tableData = updateFilter(tableData);\n    tableData = updateSort(tableData);\n    this.afterFullData = tableData;\n    this.handleAfterFullData();\n    return tableData;\n  },\n  /** 处理后数据，构建分组数据和构建渲染图 */\n  handleAfterFullData: function handleAfterFullData() {\n    var afterFullData = this.afterFullData;\n    buildRowGroupFullData(afterFullData, this);\n    buildRenderGraph(this);\n  },\n  /** 处理外部过滤和重置，区别于表头过滤 */\n  handleExternalFilter: function handleExternalFilter(value, filter2) {\n    var _this27 = this;\n    return new Promise(function(resolve) {\n      if (value) {\n        var afterFullData = _this27.afterFullData;\n        if (typeof filter2 === \"function\") {\n          _this27.afterFullData = filter2(afterFullData) || [];\n          _this27.handleAfterFullData();\n          _this27.handleTableData(false).then(function() {\n            return _this27.scrollTo(0, 0);\n          }).then(function() {\n            return resolve(true);\n          });\n        }\n      } else {\n        _this27.handleTableData(true).then(function() {\n          return _this27.scrollTo(0, 0);\n        }).then(function() {\n          return resolve(false);\n        });\n      }\n    });\n  },\n  updateSelectionStatus: function updateSelectionStatus() {\n    this.reserveCheckSelection();\n    this.checkSelectionStatus();\n  },\n  getRowCount: function getRowCount() {\n    var _this$_graphInfo;\n    return this.scrollLoad ? this.scrollLoad.pageSize || 10 : ((_this$_graphInfo = this._graphInfo) == null ? void 0 : _this$_graphInfo.graphed.length) || 0;\n  },\n  getRowById: function getRowById(rowid2) {\n    var _fullDataRowIdData$ro, _editStore$insertMap;\n    var fullDataRowIdData = this.fullDataRowIdData, editStore = this.editStore;\n    var rowCache = ((_fullDataRowIdData$ro = fullDataRowIdData[rowid2]) == null ? void 0 : _fullDataRowIdData$ro.row) || (editStore == null ? void 0 : (_editStore$insertMap = editStore.insertMap) == null ? void 0 : _editStore$insertMap.get(rowid2));\n    return rowCache || null;\n  },\n  // 获取处理后的表格数据\n  getTableData: function getTableData() {\n    var afterFullData = this.afterFullData, footerData = this.footerData, tableData = this.tableData, tableFullData = this.tableFullData;\n    return {\n      visibleData: afterFullData.slice(0),\n      footerData: footerData.slice(0),\n      tableData: tableData.slice(0),\n      fullData: tableFullData.slice(0)\n    };\n  },\n  handleDefault: function handleDefault() {\n    this.handleAsyncColumn(this.tableData);\n    this.isCheckable && this.selectConfig && this.handleSelectionDefChecked();\n    this.radioConfig && this.handleRadioDefChecked();\n    this.expandConfig && this.handleDefaultRowExpand();\n    this.treeConfig && this.handleDefaultTreeExpand();\n    this.updateFooter();\n    this.$nextTick(this.recalculate);\n  },\n  // 动态列处理\n  mergeCustomColumn: function mergeCustomColumn(customColumns, sort2, colWidth) {\n    var isGroup2 = this.isGroup, fullColumn = this.tableFullColumn;\n    var mergeWidth = function mergeWidth2(col) {\n      return colWidth && Object.assign(col, colWidth[col.property]);\n    };\n    var getCustomCol = function getCustomCol2(col) {\n      return findTree$1(customColumns, function(item) {\n        return col.property && item.property === col.property;\n      });\n    };\n    var hasCustomsOrColWidth = customColumns.length || colWidth;\n    var isGroupOrNonSort = isGroup2 || !sort2;\n    var matches;\n    this.isUpdateCustoms = true;\n    if (hasCustomsOrColWidth && isGroupOrNonSort) {\n      fullColumn.forEach(function(column) {\n        mergeWidth(column);\n        matches = getCustomCol(column);\n        matches && Object.assign(column, matches.item);\n      });\n    }\n    if (hasCustomsOrColWidth && !isGroupOrNonSort) {\n      var _ref161 = {}, _ref161$collectColumn = _ref161.collectColumn, collectColumn2 = _ref161$collectColumn === void 0 ? [] : _ref161$collectColumn, _ref161$customMap = _ref161.customMap, customMap = _ref161$customMap === void 0 ? {} : _ref161$customMap, _ref161$orderColumn = _ref161.orderColumn, orderColumn = _ref161$orderColumn === void 0 ? [] : _ref161$orderColumn;\n      mapTree(customColumns, function(customCol) {\n        var targetCol = find$1(fullColumn, function(item) {\n          return customCol.property && item.property === customCol.property;\n        });\n        if (targetCol) {\n          Object.assign(targetCol, customCol);\n          customMap[customCol.property] = targetCol;\n          orderColumn.push(targetCol);\n        }\n      });\n      fullColumn.forEach(function(col) {\n        var newColumn = customMap[col.property] ? orderColumn.shift() : col;\n        if (newColumn) {\n          mergeWidth(newColumn);\n          collectColumn2.push(newColumn);\n        }\n      });\n      this.collectColumn = collectColumn2;\n    }\n    var toolbarVm = this.getVm(\"toolbar\");\n    if (toolbarVm) {\n      toolbarVm.updateColumn(fullColumn);\n    }\n    this.$emit(\"update:customs\", fullColumn);\n  },\n  resetAll: function resetAll() {\n    run([\"resetCustoms\", \"resetResizable\"], this);\n  },\n  showColumn: function showColumn(column) {\n    return this.handleVisibleColumn(column, true);\n  },\n  hideColumn: function hideColumn(column) {\n    return this.handleVisibleColumn(column, false);\n  },\n  handleVisibleColumn: function handleVisibleColumn(column, visible3) {\n    var _arguments = arguments;\n    var tableFullColumn = this.tableFullColumn;\n    var toolbarVm = this.getVm(\"toolbar\");\n    var columns2 = arguments.length ? [column] : tableFullColumn;\n    columns2.forEach(function(column2) {\n      column2.visible = _arguments.length ? visible3 : true;\n    });\n    if (toolbarVm) {\n      toolbarVm.updateSetting();\n    }\n    return this.$nextTick();\n  },\n  resetCustoms: function resetCustoms() {\n    return this.handleVisibleColumn();\n  },\n  // 初始化加载动态列：customColumns 列信息，sort 是否按顺序加载\n  reloadCustoms: function reloadCustoms(customColumns, sort2, colWidth) {\n    var _this28 = this;\n    this.mergeCustomColumn(customColumns, sort2, colWidth);\n    this.handleTableData(true);\n    return this.refreshColumn().then(function() {\n      return _this28.tableFullColumn.slice(0);\n    });\n  },\n  watchColumn: function watchColumn(value) {\n    var customs2 = this.customs, treeConfig = this.treeConfig;\n    var toolbarVm = this.getVm(\"toolbar\");\n    var options = {\n      columnCaches: []\n    };\n    this.markColumnIndex = 0;\n    var fullColumn = getColumnList(this, value, options);\n    if (options.isGroup && options.hasFixed) {\n      value.forEach(function(root) {\n        return repairFixed(root);\n      });\n    }\n    this.isCheckable = !!options.isCheckable;\n    this.tableFullColumn = fullColumn;\n    this.cacheColumnMap(options);\n    if (!this.isColumnInitReady) {\n      this.isColumnInitReady = true;\n      customs2 && this.mergeCustomColumn(customs2);\n      this.$emit(\"column-init-ready\");\n    }\n    this.refreshColumn();\n    if (this.remoteFilter) {\n      this.$grid.filterData = this.getAllFilter();\n    }\n    if (!this.isColumnReady) {\n      this.isColumnReady = true;\n      this.$emit(\"column-ready\");\n    }\n    this.handleTableData(true);\n    toolbarVm == null ? void 0 : toolbarVm.updateColumn(fullColumn);\n    if (treeConfig && fullColumn.some(function(column) {\n      return column.fixed;\n    }) && fullColumn.some(function(column) {\n      return column.type === \"expand\";\n    })) {\n      warn(\"ui.grid.error.treeFixedExpand\");\n    }\n  },\n  /*\n   * 刷新列信息\n   * 将固定的列左边、右边分别靠边\n   * 如果使用了分组表头，固定列必须在左侧或者右侧\n   */\n  refreshColumn: function refreshColumn() {\n    var _this29 = this;\n    var leftList = [], centerList = [], rightList = [];\n    var letIndex = 0, leftStartIndex = null, rightEndIndex = null, isColspan = void 0;\n    var columnStore = this.columnStore, isGroup2 = this.isGroup;\n    var scrollXStore = this.scrollXStore, tableFullColumn = this.tableFullColumn;\n    var scrollX = this.optimizeOpts.scrollX;\n    onGroupHeader({\n      _vm: this,\n      isGroup: isGroup2,\n      headerProps\n    });\n    tableFullColumn.filter(function(column) {\n      return column.visible;\n    }).forEach(function(column, columnIndex) {\n      var ret = reassignFixedLeft({\n        column,\n        columnIndex,\n        isColspan,\n        leftList,\n        leftStartIndex,\n        letIndex\n      });\n      leftStartIndex = ret.leftStartIndex;\n      letIndex = ret.letIndex;\n      isColspan = ret.isColspan;\n      ret = reassignFixedRight({\n        column,\n        columnIndex,\n        isColspan,\n        rightEndIndex,\n        rightList\n      });\n      isColspan = ret.isColspan;\n      rightEndIndex = ret.rightEndIndex;\n      reassignNotFixed({\n        centerList,\n        column\n      });\n    });\n    var visibleColumn = leftList.concat(centerList).concat(rightList);\n    var scrollXLoad = scrollX && scrollX.gt && scrollX.gt < tableFullColumn.length;\n    var tableColumn2 = visibleColumn;\n    Object.assign(columnStore, {\n      leftList,\n      centerList,\n      rightList\n    });\n    this.analyColumnWidth();\n    showGroupFixedError({\n      isColspan,\n      isGroup: isGroup2,\n      leftStartIndex,\n      rightEndIndex,\n      visibleColumn\n    });\n    tableColumn2 = onScrollXLoad({\n      _vm: this,\n      scrollX,\n      scrollXLoad,\n      scrollXStore,\n      tableColumn: tableColumn2,\n      visibleColumn\n    });\n    this.scrollXLoad = scrollXLoad;\n    this.tableColumn = tableColumn2;\n    this.visibleColumn = visibleColumn;\n    this.visibleColumnChanged = true;\n    this.horizonScroll.fixed = leftList.length > 0 || rightList.length > 0;\n    this.columnAnchor && this.$grid.buildColumnAnchorParams();\n    this.updateFooter();\n    this.recalculate();\n    return this.$nextTick().then(function() {\n      _this29.$emit(\"after-refresh-column\");\n      if (_this29.isColumnReady) {\n        _this29.attemptRestoreScroll();\n      }\n    });\n  },\n  // 指定列宽的列进行拆分\n  analyColumnWidth: function analyColumnWidth() {\n    var columnMinWidth = this.columnMinWidth, columnStore = this.columnStore, columnWidth = this.columnWidth, tableFullColumn = this.tableFullColumn;\n    var autoList = [], pxList = [], pxMinList = [], resizeList = [], scaleList = [], scaleMinList = [];\n    var ruleChains = [{\n      match: function match(col) {\n        return col.resizeWidth;\n      },\n      action: function action(col) {\n        return resizeList.push(col);\n      }\n    }, {\n      match: function match(col) {\n        return isPx(col.width);\n      },\n      action: function action(col) {\n        return pxList.push(col);\n      }\n    }, {\n      match: function match(col) {\n        return isScale(col.width);\n      },\n      action: function action(col) {\n        return scaleList.push(col);\n      }\n    }, {\n      match: function match(col) {\n        return isPx(col.minWidth);\n      },\n      action: function action(col) {\n        return pxMinList.push(col);\n      }\n    }, {\n      match: function match(col) {\n        return isScale(col.minWidth);\n      },\n      action: function action(col) {\n        return scaleMinList.push(col);\n      }\n    }, {\n      match: function match() {\n        return true;\n      },\n      action: function action(col) {\n        return autoList.push(col);\n      }\n    }];\n    for (var i = 0; i < tableFullColumn.length; i++) {\n      var column = tableFullColumn[i];\n      columnWidth && !column.width && (column.width = columnWidth);\n      columnMinWidth && !column.minWidth && (column.minWidth = columnMinWidth);\n      if (!column.visible) {\n        continue;\n      }\n      for (var j = 0; j < ruleChains.length; j++) {\n        var ruleChain = ruleChains[j];\n        if (ruleChain.match(column)) {\n          ruleChain.action(column);\n          break;\n        }\n      }\n    }\n    Object.assign(columnStore, {\n      autoList,\n      pxList,\n      pxMinList,\n      resizeList,\n      scaleList,\n      scaleMinList\n    });\n  },\n  /**\n   * 计算单元格列宽，动态分配可用剩余空间\n   * 支持（width=?、width=?px、width=?%、min-width=?、min-width=?px、min-width=?%）\n   */\n  recalculate: function recalculate() {\n    var _this30 = this;\n    var elemStore = this.elemStore, scrollXLoad = this.scrollXLoad, scrollYLoad = this.scrollYLoad, scrollLoad = this.scrollLoad, _tableVisible = this._tableVisible;\n    var bodyWrapper = elemStore[\"main-body-wrapper\"];\n    if (!_tableVisible) {\n      return;\n    }\n    if (!bodyWrapper) {\n      return this.computeScrollLoad();\n    }\n    this.autoCellWidth();\n    if (scrollXLoad || scrollYLoad || scrollLoad) {\n      return this.computeScrollLoad().then(function() {\n        _this30.autoCellWidth();\n      });\n    }\n    return this.computeScrollLoad();\n  },\n  // 列宽计算\n  autoCellWidth: function autoCellWidth() {\n    var horizonScroll = this.horizonScroll, headerHeight = this.headerHeight, footerHeight = this.footerHeight, rowHeight = this.rowHeight;\n    var _calcTableWidth = calcTableWidth(this), totalWidth = _calcTableWidth.totalWidth, offsetWidth = _calcTableWidth.offsetWidth, offsetHeight = _calcTableWidth.offsetHeight;\n    horizonScroll.fixed && calcFixedDetails(this);\n    var scrollbarSize = 10;\n    var containerWidth = offsetWidth;\n    var containerHeight = offsetHeight;\n    var containerScrollWidth = totalWidth;\n    var containerScrollHeight = this.getRowCount() * rowHeight + headerHeight + footerHeight;\n    var isScrollX, isScrollY;\n    if (containerScrollWidth <= containerWidth) {\n      if (containerScrollHeight <= containerHeight) {\n        isScrollX = isScrollY = false;\n      } else {\n        isScrollY = true;\n        isScrollX = containerScrollWidth + scrollbarSize > containerWidth;\n      }\n    } else {\n      isScrollX = true;\n      isScrollY = containerScrollHeight + scrollbarSize > containerHeight;\n    }\n    if (!this.height) {\n      this.bodyWrapperHeight = containerScrollHeight > this.bodyWrapperMaxHeight ? this.bodyWrapperMaxHeight : null;\n    }\n    Object.assign(this, {\n      overflowX: isScrollX,\n      overflowY: isScrollY,\n      scrollbarWidth: isScrollY ? scrollbarSize : 0,\n      scrollbarHeight: isScrollX ? scrollbarSize : 0,\n      totalWidth,\n      tableHeight: offsetHeight,\n      containerScrollWidth,\n      containerScrollHeight\n    });\n    if (!this.isColumnWidthAssigned) {\n      this.isColumnWidthAssigned = true;\n    }\n  },\n  resetResizable: function resetResizable() {\n    var toolbarVm = this.getVm(\"toolbar\");\n    this.visibleColumn.forEach(function(col) {\n      return col.resizeWidth = 0;\n    });\n    toolbarVm == null ? void 0 : toolbarVm.resetResizable();\n    this.analyColumnWidth();\n    return this.recalculate();\n  },\n  updateStyle: function updateStyle() {\n    handleLayout(this);\n    this.currentRow && this.setCurrentRow(this.currentRow);\n  },\n  preventEvent: function preventEvent(event, type, args, next, end) {\n    var _this31 = this;\n    var eventList = Interceptor.get(type);\n    if (!eventList.some(function(listener) {\n      return listener(args, event, _this31) === false;\n    })) {\n      next && next();\n    }\n    end && end();\n  },\n  blurOutside: function blurOutside(_ref162, event) {\n    var row2 = _ref162.row, args = _ref162.args, column = _ref162.column;\n    var editConfig = this.editConfig, getEventTargetNode2 = this.getEventTargetNode, $el = this.$el;\n    if (column && row2) {\n      var editor = column.editor;\n      if (typeof editor.blurOutside === \"function\") {\n        return Boolean(editor.blurOutside({\n          cell: args.cell,\n          event\n        }));\n      }\n      if (typeof editConfig.blurOutside === \"function\") {\n        var bodyEl = document.body;\n        if (getEventTargetNode2(event, bodyEl, \"tiny-autocomplete-suggestion\").flag || getEventTargetNode2(event, bodyEl, \"tiny-select-dropdown\").flag || getEventTargetNode2(event, bodyEl, \"tiny-cascader__dropdown\").flag || getEventTargetNode2(event, bodyEl, \"tiny-cascader-menus\").flag || getEventTargetNode2(event, bodyEl, \"tiny-picker-panel\").flag || getEventTargetNode2(event, bodyEl, \"tiny-popper\").flag || getEventTargetNode2(event, bodyEl, \"tiny-dialog-box\").flag) {\n          return true;\n        }\n        return Boolean(editConfig.blurOutside({\n          cell: args.cell,\n          event,\n          $table: this\n        }));\n      }\n      var blurClassConfig = editor.blurClass || editConfig.blurClass;\n      if (blurClassConfig) {\n        var blurClass = [];\n        if (typeof blurClassConfig === \"string\") {\n          blurClass.push(blurClassConfig);\n        } else if (isArray(blurClassConfig)) {\n          blurClass = blurClassConfig.slice(0);\n        }\n        if (args != null && args.cell.contains(getActualTarget(event))) {\n          return true;\n        }\n        if (editConfig.mode === \"row\" && getEventTargetNode2(event, $el, \"tiny-grid-body__column\").flag) {\n          return true;\n        }\n        return blurClass.every(function(cls) {\n          return !getEventTargetNode2(event, document.body, cls).flag;\n        });\n      }\n    }\n  },\n  handleGlobalMousedownEvent,\n  handleGlobalBlurEvent,\n  handleGlobalMousewheelEvent,\n  handleEscKeyDown,\n  handleEnterKeyDown,\n  handleCtxMenu,\n  handleArrowKeyDown,\n  handleDelKeyDown,\n  handleSpaceKeyDown,\n  handleTabKeyDown,\n  handleCopyKeyDown,\n  handleF2KeyDown,\n  handleOtherKeyDown,\n  handleGlobalKeydownEvent,\n  handleGlobalResizeEvent,\n  handleGlobalMousedownCaptureEvent,\n  // 处理单选框默认勾选\n  handleRadioDefChecked: function handleRadioDefChecked() {\n    var fullDataRowIdData = this.fullDataRowIdData;\n    var _ref163 = this.radioConfig || {}, checkRowKey = _ref163.checkRowKey;\n    var rowid2 = checkRowKey && encodeURIComponent(checkRowKey);\n    var rowCache = fullDataRowIdData[rowid2];\n    if (rowid2 && rowCache) {\n      this.setRadioRow(rowCache.row);\n    }\n  },\n  // 单选，行选中事件\n  triggerRadioRowEvent: function triggerRadioRowEvent(event, params) {\n    var selectRow = this.selectRow;\n    var _ref164 = this.radioConfig || {}, checkMethod = _ref164.checkMethod;\n    if (checkMethod && !checkMethod(params)) {\n      return;\n    }\n    this.setRadioRow(params.row);\n    this.setCurrentRow(params.row);\n    if (selectRow !== params.row) {\n      emitEvent(this, \"radio-change\", [params, event]);\n    }\n  },\n  triggerCurrentRowEvent: function triggerCurrentRowEvent(event, params) {\n    var currentRow = this.currentRow;\n    this.setCurrentRow(params.row);\n    if (currentRow !== params.row) {\n      emitEvent(this, \"current-change\", [params, event]);\n    }\n  },\n  // 高亮行，设置某一行为高亮状态，如果调不加参数，则会取消目前高亮行的选中状态\n  setCurrentRow: function setCurrentRow(row2) {\n    run([\"clearCurrentRow\", \"clearCurrentColumn\"], this);\n    this.currentRow = row2;\n    if (this.highlightCurrentRow) {\n      var rowElems = this.$el.querySelectorAll('[data-rowid=\"' + getRowid(this, row2) + '\"]');\n      arrayEach(rowElems, function(elem) {\n        return addClass(elem, \"row__current\");\n      });\n    }\n    return this.$nextTick();\n  },\n  setRadioRow: function setRadioRow(row2) {\n    row2 !== this.selectRow && this.clearRadioRow();\n    this.selectRow = row2;\n    return this.$nextTick();\n  },\n  clearCurrentRow: function clearCurrentRow() {\n    Object.assign(this, {\n      currentRow: null,\n      hoverRow: null\n    });\n    var rowElems = this.$el.querySelectorAll(\".row__current\");\n    arrayEach(rowElems, function(elem) {\n      return removeClass(elem, \"row__current\");\n    });\n    return this.$nextTick();\n  },\n  clearRadioRow: function clearRadioRow() {\n    var radioRow = this.selectRow;\n    radioRow && (this.selectRow = null);\n    return this.$nextTick();\n  },\n  getCurrentRow: function getCurrentRow() {\n    var currentRow = this.currentRow;\n    return currentRow;\n  },\n  getRadioRow: function getRadioRow() {\n    var radioRow = this.selectRow;\n    return radioRow;\n  },\n  triggerHeaderCellClickEvent: function triggerHeaderCellClickEvent(event, params) {\n    var lastTime = this._lastResizeTime, highlightCurrentColumn = this.highlightCurrentColumn;\n    var cell = params.cell, column = params.column;\n    var trigger = this.sortOpts.trigger;\n    var isResizable2 = lastTime && lastTime > Date.now() - 300;\n    var isSort = this.getEventTargetNode(event, cell, \"tiny-grid-sort-wrapper\").flag;\n    var isFilter = this.getEventTargetNode(event, cell, \"tiny-grid-filter-wrapper\").flag;\n    if (trigger === \"cell\" && !(isResizable2 || isSort || isFilter)) {\n      var nextOrder = this.toggleColumnOrder(column);\n      this.triggerSortEvent(event, column, nextOrder);\n    }\n    var eventParams = _extends({\n      triggerResizable: isResizable2,\n      triggerSort: isSort,\n      triggerFilter: isFilter\n    }, params);\n    emitEvent(this, \"header-cell-click\", [eventParams, event]);\n    if (highlightCurrentColumn) {\n      return this.setCurrentColumn(column, true);\n    }\n    return this.$nextTick();\n  },\n  setCurrentColumn: function setCurrentColumn(column) {\n    run([\"clearCurrentRow\", \"clearCurrentColumn\"], this);\n    this.currentColumn = column;\n    var colElems = this.$el.querySelectorAll(\".\" + column.id);\n    arrayEach(colElems, function(elem) {\n      return addClass(elem, \"col__current\");\n    });\n    return this.$nextTick();\n  },\n  clearCurrentColumn: function clearCurrentColumn() {\n    this.currentColumn = null;\n    var colElems = this.$el.querySelectorAll(\".col__current\");\n    arrayEach(colElems, function(elem) {\n      return removeClass(elem, \"col__current\");\n    });\n    return this.$nextTick();\n  },\n  // 当单元格发生改变时，如果存在规则，则校验\n  handleChangeCell: function handleChangeCell(event, params) {\n    var _this32 = this;\n    this.triggerValidate(\"blur\").catch(function(e) {\n      return e;\n    }).then(function() {\n      _this32.handleActived(params, event).then(function() {\n        var _this32$editConfig;\n        if ((_this32$editConfig = _this32.editConfig) != null && _this32$editConfig.validateOnActive) {\n          return _this32.triggerValidate(\"change\");\n        }\n      }).catch(function(e) {\n        return e;\n      });\n    });\n  },\n  // 列点击事件：如果是单击模式，则激活为编辑状态；如果是双击模式，则单击后选中状态\n  triggerCellClickEvent: function triggerCellClickEvent(event, params) {\n    var $el = this.$el, highlightCurrentRow = this.highlightCurrentRow, editStore = this.editStore;\n    var _this$radioConfig = this.radioConfig, radioConfig = _this$radioConfig === void 0 ? {} : _this$radioConfig, _this$selectConfig2 = this.selectConfig, selectConfig = _this$selectConfig2 === void 0 ? {} : _this$selectConfig2, _this$expandConfig = this.expandConfig, expandConfig = _this$expandConfig === void 0 ? {} : _this$expandConfig;\n    var _this$treeConfig = this.treeConfig, treeConfig = _this$treeConfig === void 0 ? {} : _this$treeConfig, editConfig = this.editConfig, _this$mouseConfig = this.mouseConfig, mouseConfig = _this$mouseConfig === void 0 ? {} : _this$mouseConfig;\n    var actived = editStore.actived;\n    var row2 = params.row, column = params.column, cell = params.cell;\n    if (isTargetRadioOrCheckbox(event, column, \"radio\") || isTargetRadioOrCheckbox(event, column, \"selection\", \"checkbox\")) {\n      return;\n    }\n    onClickExpandColumn({\n      $el,\n      _vm: this,\n      column,\n      event,\n      expandConfig,\n      params\n    });\n    onClickTreeNodeColumn({\n      _vm: this,\n      column,\n      event,\n      params,\n      treeConfig\n    });\n    if ((!column.treeNode || !this.getEventTargetNode(event, $el, \"tiny-grid-tree-wrapper\").flag) && (column.type !== \"expand\" || !this.getEventTargetNode(event, $el, \"tiny-grid__expanded\").flag)) {\n      onHighlightCurrentRow({\n        $el,\n        _vm: this,\n        event,\n        highlightCurrentRow,\n        params,\n        radioConfig\n      });\n      onClickRadioColumn({\n        $el,\n        _vm: this,\n        column,\n        event,\n        params,\n        radioConfig\n      });\n      onClickSelectColumn({\n        _vm: this,\n        column,\n        event,\n        params,\n        selectConfig\n      });\n      onClickCellSelect({\n        _vm: this,\n        actived,\n        cell,\n        column,\n        editConfig,\n        event,\n        mouseConfig,\n        params,\n        row: row2\n      });\n    }\n    emitEvent(this, \"cell-click\", [params, event]);\n  },\n  // 列双击点击事件：如果是双击模式，则激活为编辑状态\n  triggerCellDBLClickEvent: function triggerCellDBLClickEvent(event, params) {\n    var _this33 = this;\n    var editStore = this.editStore, editConfig = this.editConfig;\n    var actived = editStore.actived;\n    var isActiveNewCell = !actived.args || event.currentTarget !== actived.args.cell;\n    var isDblclickNewCell = editConfig && editConfig.trigger === \"dblclick\" && isActiveNewCell;\n    if (isDblclickNewCell && editConfig.mode === \"row\") {\n      this.triggerValidate(\"blur\").catch(function(e) {\n        return e;\n      }).then(function() {\n        _this33.handleActived(params, event).then(function() {\n          return _this33.triggerValidate(\"change\");\n        }).catch(function(e) {\n          return e;\n        });\n      });\n    }\n    if (isDblclickNewCell && editConfig.mode === \"cell\") {\n      this.handleActived(params, event).then(function() {\n        return _this33.triggerValidate(\"change\");\n      }).catch(function(e) {\n        return e;\n      });\n    }\n    emitEvent(this, \"cell-dblclick\", [params, event]);\n  },\n  // 点击排序事件\n  triggerSortEvent: function triggerSortEvent(event, column, order) {\n    var property = column.property;\n    var isColumnSortable = column.sortable || column.remoteSort;\n    if (this.sortable && isColumnSortable) {\n      var evntParams = {\n        $table: this,\n        column,\n        order,\n        property\n      };\n      evntParams.prop = property;\n      evntParams.field = evntParams.prop;\n      if (order === column.order) {\n        evntParams.order = null;\n        this.clearSort(column.property);\n      } else {\n        this.sort(property, order);\n      }\n      emitEvent(this, \"sort-change\", [evntParams, event]);\n    }\n  },\n  sort: function sort(field, order) {\n    var remoteSort = this.remoteSort, tableFullColumn = this.tableFullColumn, visibleColumn = this.visibleColumn;\n    var column = find$1(visibleColumn, function(item) {\n      return item.property === field;\n    });\n    var isRemote = isBoolean(column.remoteSort) ? column.remoteSort : remoteSort;\n    var isColumnSortable = column.sortable || column.remoteSort;\n    if (this.sortable && isColumnSortable) {\n      if (column.order !== order) {\n        tableFullColumn.forEach(function(column2) {\n          return column2.order = null;\n        });\n        column.order = order;\n        !isRemote && this.handleTableData(true).then(this.refreshStyle);\n      }\n      return this.$nextTick().then(this.updateStyle);\n    }\n    return this.$nextTick();\n  },\n  clearSort: function clearSort() {\n    arrayEach(this.tableFullColumn, function(column) {\n      return column.order = null;\n    });\n    this.$grid && (this.$grid.sortData = {});\n    return this.handleTableData(true).then(this.refreshStyle);\n  },\n  toggleGroupExpansion: function toggleGroupExpansion(row2) {\n    this.groupExpandeds.push(row2);\n  },\n  // 展开行事件\n  triggerRowExpandEvent: function triggerRowExpandEvent(event, _ref165) {\n    var row2 = _ref165.row;\n    var rest = this.toggleRowExpansion(row2);\n    var eventParams = {\n      $table: this,\n      row: row2,\n      rowIndex: this.getRowIndex(row2)\n    };\n    emitEvent(this, \"toggle-expand-change\", [eventParams, event]);\n    return rest;\n  },\n  // 切换展开行\n  toggleRowExpansion: function toggleRowExpansion(row2) {\n    return this.setRowExpansion(row2);\n  },\n  // 处理默认展开行\n  handleDefaultRowExpand: function handleDefaultRowExpand() {\n    var fullDataRowIdData = this.fullDataRowIdData, tableFullData = this.tableFullData;\n    var _ref166 = this.expandConfig || {}, expandAll = _ref166.expandAll, expandRowKeys = _ref166.expandRowKeys;\n    if (expandAll) {\n      this.expandeds = tableFullData.slice(0);\n      return;\n    }\n    if (expandRowKeys) {\n      var defExpandeds = [];\n      expandRowKeys.forEach(function(rowid2) {\n        var rowCache = fullDataRowIdData[rowid2];\n        rowCache && defExpandeds.push(rowCache.row);\n      });\n      this.expandeds = defExpandeds;\n    }\n  },\n  setAllRowExpansion: function setAllRowExpansion(expanded) {\n    this.expandeds = !expanded ? [] : this.tableFullData.slice(0);\n    return this.$nextTick().then(this.recalculate);\n  },\n  // 设置展开行，二个参数设置这一行展开与否；支持单行；支持多行\n  setRowExpansion: function setRowExpansion(rows, expanded) {\n    var expandeds = this.expandeds;\n    var _ref167 = this.expandConfig || {}, accordion = _ref167.accordion;\n    var isToggle = arguments.length === 1;\n    var isAccordionCloseAll = false;\n    if (!rows) {\n      return this.$nextTick().then(this.recalculate);\n    }\n    if (!isArray(rows)) {\n      rows = [rows];\n    }\n    if (accordion) {\n      rows = rows.slice(rows.length - 1, rows.length);\n      if (rows.length && isToggle) {\n        isAccordionCloseAll = expandeds.includes(rows[0]);\n      }\n      expandeds.length = 0;\n    }\n    rows.forEach(function(row2) {\n      var index2 = expandeds.indexOf(row2);\n      if (isToggle && ~index2 || !isToggle && !expanded && ~index2) {\n        expandeds.splice(index2, 1);\n        return;\n      }\n      if (isToggle && !isAccordionCloseAll && !~index2 || !isToggle && expanded && !~index2) {\n        expandeds.push(row2);\n      }\n    });\n    return this.$nextTick().then(this.recalculate);\n  },\n  hasRowExpand: function hasRowExpand(row2) {\n    return ~this.expandeds.indexOf(row2);\n  },\n  clearRowExpand: function clearRowExpand() {\n    var _this34 = this;\n    var hasExpand = this.expandeds.length;\n    this.expandeds = [];\n    return this.$nextTick().then(function() {\n      return hasExpand ? _this34.recalculate() : 0;\n    });\n  },\n  // 获取虚拟滚动状态\n  getVirtualScroller: function getVirtualScroller() {\n    var scrollXLoad = this.scrollXLoad, scrollYLoad = this.scrollYLoad;\n    var _this$$refs$tableBody = this.$refs.tableBody.$el, scrollLeft = _this$$refs$tableBody.scrollLeft, scrollTop = _this$$refs$tableBody.scrollTop;\n    return {\n      scrollX: scrollXLoad,\n      scrollY: scrollYLoad,\n      scrollLeft,\n      scrollTop\n    };\n  },\n  // 横向 X 可视渲染事件处理\n  triggerScrollXEvent: function triggerScrollXEvent(event) {\n    this.loadScrollXData(event);\n  },\n  debounceScrollX: function debounceScrollX(event) {\n    var _this35 = this;\n    if (!this.tasks.debounceScrollX) {\n      this.tasks.debounceScrollXHandler = null;\n      this.tasks.debounceScrollX = function() {\n        return requestAnimationFrame(function() {\n          _this35.tasks.debounceScrollXHandler = null;\n          _this35.loadScrollXData(event);\n        });\n      };\n    }\n    if (this.tasks.debounceScrollXHandler) {\n      cancelAnimationFrame(this.tasks.debounceScrollXHandler);\n      this.tasks.debounceScrollXHandler = null;\n    }\n    this.tasks.debounceScrollXHandler = this.tasks.debounceScrollX();\n  },\n  // 处理x轴滚动时，虚拟滚动数据计算\n  loadScrollXData: function loadScrollXData() {\n    var scrollXStore = this.scrollXStore, visibleColumn = this.visibleColumn;\n    var offsetSize = scrollXStore.offsetSize, renderSize = scrollXStore.renderSize, startIndex = scrollXStore.startIndex, visibleIndex = scrollXStore.visibleIndex, visibleSize = scrollXStore.visibleSize;\n    var scrollLeft = this.$refs.tableBody.$el.scrollLeft;\n    var _ref168 = {}, _ref168$preload = _ref168.preload, preload = _ref168$preload === void 0 ? false : _ref168$preload, _ref168$toVisibleInde = _ref168.toVisibleIndex, toVisibleIndex = _ref168$toVisibleInde === void 0 ? 0 : _ref168$toVisibleInde, _ref168$width = _ref168.width, width = _ref168$width === void 0 ? 0 : _ref168$width;\n    for (var i = 0; i < visibleColumn.length; i++) {\n      width += visibleColumn[i].renderWidth;\n      if (scrollLeft < width) {\n        toVisibleIndex = i;\n        break;\n      }\n    }\n    if (visibleIndex === toVisibleIndex) {\n      this.clostTooltip();\n      return;\n    }\n    var marginSize = Math.min(Math.floor((renderSize - visibleSize) / 2), visibleSize);\n    marginSize = Math.max(0, marginSize);\n    if (visibleIndex > toVisibleIndex) {\n      preload = startIndex >= toVisibleIndex - offsetSize;\n      if (preload) {\n        scrollXStore.startIndex = Math.max(0, toVisibleIndex - Math.max(marginSize, renderSize - visibleSize));\n        this.updateScrollXData();\n      }\n    } else {\n      preload = startIndex + renderSize <= toVisibleIndex + visibleSize + offsetSize;\n      if (preload) {\n        scrollXStore.startIndex = Math.max(0, Math.min(visibleColumn.length - renderSize, toVisibleIndex - marginSize));\n        this.updateScrollXData();\n      }\n    }\n    scrollXStore.visibleIndex = toVisibleIndex;\n    this.clostTooltip();\n  },\n  // 纵向 Y 可视渲染事件处理\n  triggerScrollYEvent: function triggerScrollYEvent(event) {\n    this.loadScrollYData(event);\n  },\n  // 处理滚动分页相关逻辑\n  debounceScrollLoad: function debounceScrollLoad(event) {\n    var _this36 = this;\n    if (!this.tasks.debounceScrollLoad) {\n      this.tasks.debounceScrollLoad = debounce(debounceScrollLoadDuration, function() {\n        var _this36$scrollLoadSto = _this36.scrollLoadStore, scrollHeight = _this36$scrollLoadSto.scrollHeight, bodyHeight = _this36$scrollLoadSto.bodyHeight;\n        var _this36$$grid$tablePa = _this36.$grid.tablePage, currentPage = _this36$$grid$tablePa.currentPage, pageSize = _this36$$grid$tablePa.pageSize;\n        var max = scrollHeight - bodyHeight;\n        var scrollTop = getActualTarget(event).scrollTop;\n        if (scrollTop > max) {\n          scrollTop = max;\n        }\n        var rowHeight = _this36.scrollYStore.rowHeight;\n        var visibleIndex = Math.ceil(scrollTop / rowHeight);\n        var page = Math.ceil(visibleIndex / pageSize) + 1;\n        if (currentPage !== page) {\n          _this36.$grid.pageCurrentChange(page);\n        }\n      });\n    }\n    this.tasks.debounceScrollLoad();\n  },\n  // 纵向 Y 可视渲染处理\n  loadScrollYData: function loadScrollYData(event) {\n    var _this37 = this;\n    var scrollYStore = this.scrollYStore;\n    var startIndex = scrollYStore.startIndex, renderSize = scrollYStore.renderSize, offsetSize = scrollYStore.offsetSize, visibleIndex = scrollYStore.visibleIndex, visibleSize = scrollYStore.visibleSize, rowHeight = scrollYStore.rowHeight;\n    var _getActualTarget = getActualTarget(event), scrollTop = _getActualTarget.scrollTop;\n    var toVisibleIndex = Math.ceil(scrollTop / rowHeight);\n    var preload = false;\n    if (visibleIndex === toVisibleIndex) {\n      return;\n    }\n    var marginSize = Math.min(Math.floor((renderSize - visibleSize) / 2), visibleSize);\n    if (toVisibleIndex < visibleIndex) {\n      preload = startIndex >= toVisibleIndex - offsetSize;\n      if (preload) {\n        scrollYStore.startIndex = Math.max(0, toVisibleIndex - Math.max(marginSize, renderSize - visibleSize));\n        this.updateScrollYData();\n      }\n    } else {\n      preload = startIndex + renderSize <= toVisibleIndex + visibleSize + offsetSize;\n      if (preload) {\n        var totalRows = this.getRowCount();\n        scrollYStore.startIndex = Math.max(0, Math.min(totalRows - renderSize, toVisibleIndex - marginSize));\n        this.updateScrollYData();\n      }\n    }\n    scrollYStore.visibleIndex = toVisibleIndex;\n    this.$nextTick(function() {\n      _this37.updateSelectedCls(true);\n    });\n  },\n  getRowHeight: function getRowHeight() {\n    return this.rowHeight;\n  },\n  // 计算可视渲染相关数据\n  computeScrollLoad: function computeScrollLoad() {\n    var _this38 = this;\n    return this.$nextTick().then(function() {\n      var $refs = _this38.$refs, optimizeOpts = _this38.optimizeOpts, visibleColumn = _this38.visibleColumn;\n      var scrollLoad = _this38.scrollLoad, scrollXLoad = _this38.scrollXLoad, scrollXStore = _this38.scrollXStore, scrollYLoad = _this38.scrollYLoad, scrollYStore = _this38.scrollYStore;\n      var scrollX = optimizeOpts.scrollX, scrollY = optimizeOpts.scrollY;\n      var tableBody = $refs.tableBody;\n      var bodyElem = tableBody ? tableBody.$el : null;\n      if (bodyElem) {\n        computeScrollXLoad({\n          _vm: _this38,\n          scrollX,\n          scrollXLoad,\n          scrollXStore,\n          tableBodyElem: bodyElem,\n          visibleColumn\n        });\n        computeScrollYLoad({\n          _vm: _this38,\n          scrollLoad,\n          scrollY,\n          scrollYLoad,\n          scrollYStore,\n          tableBodyElem: bodyElem\n        });\n      }\n      _this38.$nextTick(_this38.updateStyle);\n    });\n  },\n  updateScrollXData: function updateScrollXData() {\n    var scrollXLoad = this.scrollXLoad, scrollXStore = this.scrollXStore, tableColumn2 = this.tableColumn, treeConfig = this.treeConfig, visibleColumn = this.visibleColumn, visibleColumnChanged = this.visibleColumnChanged, columnStore = this.columnStore;\n    var _scrollXStore$lastSta = scrollXStore.lastStartIndex, lastStartIndex = _scrollXStore$lastSta === void 0 ? -1 : _scrollXStore$lastSta, renderSize = scrollXStore.renderSize, startIndex = scrollXStore.startIndex;\n    var args = {\n      lastStartIndex,\n      renderSize,\n      scrollXLoad,\n      startIndex,\n      tableColumn: tableColumn2,\n      columnStore\n    };\n    Object.assign(args, {\n      treeConfig,\n      visibleColumn,\n      visibleColumnChanged\n    });\n    var ret = sliceVisibleColumn(args);\n    this.updateScrollStatus();\n    if (ret.sliced) {\n      scrollXStore.lastStartIndex = ret.lastStartIndex;\n      this.tableColumn = ret.tableColumn;\n      this.visibleColumnChanged = ret.visibleColumnChanged;\n      this.addedColumn = ret.addedColumn;\n      this.$nextTick(this.updateStyle);\n    }\n  },\n  updateScrollYData: function updateScrollYData() {\n    var _this39 = this;\n    this.updateScrollYSpace();\n    this.handleTableData().then(function() {\n      return _this39.updateStyle();\n    });\n  },\n  // 更新纵向 Y 可视渲染上下剩余空间大小\n  updateScrollYSpace: function updateScrollYSpace() {\n    var $grid = this.$grid, elemStore = this.elemStore, scrollLoad = this.scrollLoad, scrollLoadStore = this.scrollLoadStore, headerHeight = this.headerHeight, footerHeight = this.footerHeight, rowHeight = this.rowHeight;\n    var totalRows = this.getRowCount();\n    var scrollHeight = $grid.pagerConfig ? $grid.pagerConfig.total * rowHeight : 0;\n    var ySpaceElem = elemStore[\"main-body-ySpace\"];\n    scrollLoadStore.bodyHeight = totalRows * rowHeight + headerHeight + footerHeight;\n    scrollLoadStore.scrollHeight = scrollHeight;\n    if (ySpaceElem && scrollLoad) {\n      this.scrollLoadScrollHeight = scrollHeight;\n    }\n  },\n  updateScrollLoadBar: function updateScrollLoadBar(event) {\n    var $el = this.$el, elemStore = this.elemStore, scrollLoad = this.scrollLoad, scrollLoadStore = this.scrollLoadStore;\n    if (scrollLoad && $el.contains(getActualTarget(event))) {\n      var wheelDelta = event.wheelDelta ? event.wheelDelta : -event.detail * 40;\n      var scrollElm = elemStore[\"main-body-ySpace\"];\n      var scrollHeight = scrollLoadStore.scrollHeight, bodyHeight = scrollLoadStore.bodyHeight;\n      var max = scrollHeight - bodyHeight;\n      var top = scrollElm.scrollTop - wheelDelta;\n      top = max < top ? max : top;\n      top = top < 0 ? 0 : top;\n      scrollElm.scrollTop = top;\n    }\n  },\n  scrollTo: function scrollTo(scrollLeft, scrollTop) {\n    var elemStore = this.elemStore;\n    var tableBodyElem = elemStore[\"main-body-wrapper\"];\n    if (isNumber(scrollLeft)) {\n      tableBodyElem && (tableBodyElem.scrollLeft = scrollLeft);\n    }\n    if (isNumber(scrollTop)) {\n      tableBodyElem && (tableBodyElem.scrollTop = scrollTop);\n    }\n    return this.$nextTick();\n  },\n  scrollToRow: function scrollToRow(row2, column, isDelay, move) {\n    var hasRowCache = this.fullDataRowMap.has(this.getRaw(row2));\n    var isDelayArg = isDelay || isBoolean(column);\n    row2 && hasRowCache && rowToVisible(this, row2);\n    return this.scrollToColumn(column, isDelayArg, move);\n  },\n  scrollToTreeRow: function scrollToTreeRow(row2) {\n    var _this40 = this;\n    var tableFullData = this.tableFullData, treeConfig = this.treeConfig;\n    if (!treeConfig) {\n      return this.$nextTick();\n    }\n    var matchObj = findTree$1(tableFullData, function(item) {\n      return item === row2;\n    }, treeConfig);\n    if (!matchObj) {\n      return this.$nextTick();\n    }\n    var nodes = matchObj.nodes;\n    nodes.forEach(function(row22, index2) {\n      if (index2 === nodes.length - 1 || _this40.hasTreeExpand(row22)) {\n        return;\n      }\n      _this40.setTreeExpansion(row22, true);\n    });\n    return this.$nextTick();\n  },\n  scrollToColumn: function scrollToColumn(column, isDelay, move) {\n    var _this41 = this;\n    var hasColCache = this.fullColumnMap.has(column);\n    column && hasColCache && colToVisible(this, column, move);\n    return isDelay && (this.scrollXLoad || this.scrollYLoad) ? new Promise(function(resolve) {\n      return setTimeout(function() {\n        return resolve(_this41.$nextTick());\n      }, 50);\n    }) : this.$nextTick();\n  },\n  resetScrollTop: function resetScrollTop() {\n    this.lastScrollTop = 0;\n  },\n  clearScroll: function clearScroll() {\n    var _this42 = this;\n    var $grid = this.$grid, scrollXStore = this.scrollXStore, scrollYStore = this.scrollYStore, elemStore = this.elemStore;\n    var _$grid$fetchOption = $grid.fetchOption, fetchOption = _$grid$fetchOption === void 0 ? {} : _$grid$fetchOption;\n    var _fetchOption$isReload2 = fetchOption.isReloadScroll, isReloadScroll = _fetchOption$isReload2 === void 0 ? false : _fetchOption$isReload2;\n    if (isReloadScroll) {\n      return;\n    }\n    Object.assign(this, {\n      lastScrollLeft: 0,\n      lastScrollTop: 0\n    });\n    Object.assign(scrollXStore, {\n      startIndex: 0,\n      visibleIndex: 0\n    });\n    Object.assign(scrollYStore, {\n      startIndex: 0,\n      visibleIndex: 0\n    });\n    return this.$nextTick(function() {\n      var tableBodyElem = elemStore[\"main-body-wrapper\"];\n      if (_this42.afterMounted) {\n        fastdom.mutate(function() {\n          tableBodyElem && Object.assign(tableBodyElem, {\n            scrollLeft: 0,\n            scrollTop: 0\n          });\n        });\n      }\n    });\n  },\n  // 更新表尾合计\n  updateFooter: function updateFooter() {\n    var afterFullData = this.afterFullData, footerMethod = this.footerMethod, showFooter = this.showFooter, summaryConfig = this.summaryConfig, tableColumn2 = this.tableColumn, rowHeight = this.rowHeight;\n    if (!isArray(afterFullData) || afterFullData.length <= 0 || !isArray(tableColumn2) || tableColumn2.length <= 0) {\n      return;\n    }\n    if (footerMethod && showFooter) {\n      var data7 = footerMethod({\n        columns: tableColumn2,\n        data: afterFullData\n      });\n      if (data7.length && data7.some(function(value) {\n        return !isArray(value);\n      })) {\n        data7 = [data7];\n      }\n      this.footerData = tableColumn2.length ? data7 : [];\n    }\n    if (summaryConfig) {\n      var fields = summaryConfig.fields, fraction = summaryConfig.fraction, text = summaryConfig.text, _truncate = summaryConfig.truncate;\n      var summary = tableColumn2.map(function(column, columnIndex) {\n        if (columnIndex === 0) {\n          return text || \"\";\n        }\n        if (~fields.indexOf(column.property)) {\n          return toDecimal(sum(afterFullData, column.property), fraction, _truncate);\n        }\n        return null;\n      });\n      this.footerData = [summary];\n    }\n    this.footerHeight = this.footerData.length * rowHeight;\n    return this.$nextTick();\n  },\n  // 更新列状态：如果组件值v-model发生change，调用该函数更新列的编辑状态。如果单元格配置了校验规则，则进行校验\n  updateStatus: function updateStatus(scope, cellValue, renderOpts) {\n    var _this43 = this;\n    var $refs = this.$refs, editRules = this.editRules, tableData = this.tableData, validStore = this.validStore;\n    var tableBody = $refs.tableBody;\n    if (!scope || !tableBody) {\n      return this.$nextTick();\n    }\n    var column = scope.column, row2 = scope.row;\n    var type = \"change\";\n    var refreshStatus = function refreshStatus2() {\n      if (!isUndefined(cellValue)) {\n        var _this43$$refs$tableBo;\n        _this43.updateRowStatus(row2);\n        (_this43$$refs$tableBo = _this43.$refs.tableBody) == null ? void 0 : _this43$$refs$tableBo.$forceUpdate();\n      }\n    };\n    if (!editRules || !this.hasCellRules(type, row2, column)) {\n      refreshStatus();\n      return this.$nextTick();\n    }\n    if (renderOpts && renderOpts.isValidAlways) {\n      validStore.visible = true;\n    }\n    var rowIndex = tableData.indexOf(row2);\n    getCell(this, {\n      row: row2,\n      rowIndex,\n      column\n    }).then(function(cell) {\n      if (!cell) {\n        return;\n      }\n      return _this43.validCellRules(type, row2, column, cellValue).then(function() {\n        refreshStatus();\n        _this43.clearValidate();\n      }).catch(function(_ref169) {\n        var rule = _ref169.rule;\n        refreshStatus();\n        _this43.showValidTooltip({\n          rule,\n          row: row2,\n          column,\n          cell\n        });\n      });\n    });\n    return this.$nextTick();\n  },\n  /* X/Y 方向滚动 */\n  updateScrollStatus: function updateScrollStatus() {\n    var _this44 = this;\n    if (!this.tasks.updateScrollStatus) {\n      this.tasks.updateScrollStatus = debounce(AsyncCollectTimeout, function() {\n        var scrollXLoad = _this44.scrollXLoad, scrollYLoad = _this44.scrollYLoad, isAsyncColumn = _this44.isAsyncColumn;\n        if (isAsyncColumn && (scrollXLoad || scrollYLoad)) {\n          var tableData = _this44.tableData, scrollXStore = _this44.scrollXStore, scrollYStore = _this44.scrollYStore, tableFullData = _this44.tableFullData, _this44$scrollDirecti = _this44.scrollDirection, scrollDirection = _this44$scrollDirecti === void 0 ? \"N\" : _this44$scrollDirecti;\n          var isInit = scrollXLoad && scrollXStore.visibleIndex === 0 || scrollYLoad && scrollYStore.visibleIndex === 0;\n          if (isInit || scrollDirection !== \"N\") {\n            _this44.handleResolveColumn(tableFullData, _this44.collectAsyncColumn(tableData));\n          }\n        }\n      });\n    }\n    this.tasks.updateScrollStatus();\n  },\n  // 获取异步列唯一ID\n  getAsyncColumnUniqueKey: function getAsyncColumnUniqueKey(property, row2) {\n    return property + \"_\" + row2[this.rowId];\n  },\n  // 获取异步列名称\n  getAsyncColumnName: function getAsyncColumnName(property) {\n    return GlobalConfig$1.constant.asyncPrefix + property;\n  },\n  // 收集异步列\n  collectAsyncColumn: function collectAsyncColumn(tableData) {\n    var _this45 = this;\n    var fetchColumns = [];\n    var rowId = this.rowId, asyncRenderMap = this.asyncRenderMap, tableColumn2 = this.tableColumn;\n    if (!rowId) {\n      warn(\"The (grid-props:rowId) is required for the asynchronous column.\");\n      return fetchColumns;\n    }\n    tableColumn2.forEach(function(col) {\n      var _ref170 = col.format || {}, async = _ref170.async;\n      var _ref171 = async || {}, fetch = _ref171.fetch, _ref171$splitConfig = _ref171.splitConfig, splitConfig = _ref171$splitConfig === void 0 ? {} : _ref171$splitConfig;\n      if (typeof fetch === \"function\") {\n        var columnValues = [];\n        tableData.forEach(function(row2) {\n          var cellValue = row2[col.property];\n          if (typeof cellValue !== \"string\" || typeof cellValue === \"string\" && !cellValue) {\n            cellValue = \" \";\n          }\n          var cellValuesCount = 1;\n          var cellValues = [cellValue];\n          var uniqueKey = _this45.getAsyncColumnUniqueKey(col.property, row2);\n          if (splitConfig.enabled === true) {\n            cellValues = cellValue.split(splitConfig.valueSplit || \",\");\n            cellValuesCount = cellValues.length;\n          }\n          if (!asyncRenderMap[uniqueKey]) {\n            asyncRenderMap[uniqueKey] = cellValuesCount;\n            cellValues.forEach(function(value) {\n              return columnValues.push(value);\n            });\n          }\n        });\n        if (columnValues.length) {\n          fetchColumns.push(_extends({}, col, {\n            columnValues\n          }));\n        }\n      }\n    });\n    return fetchColumns;\n  },\n  // fetchData 执行\n  handleAsyncColumn: function handleAsyncColumn(tableData) {\n    if (this.isAsyncColumn && tableData.length) {\n      this.asyncRenderMap = {};\n      this.handleResolveColumn(tableData, this.collectAsyncColumn(tableData));\n    }\n  },\n  // 查询异步列\n  handleResolveColumn: function handleResolveColumn(tableData, fetchColumns) {\n    var tableColumn2 = this.tableColumn, scrollYStore = this.scrollYStore, asyncRenderMap = this.asyncRenderMap, scrollXLoad = this.scrollXLoad, scrollYLoad = this.scrollYLoad;\n    var startIndex = scrollYStore.startIndex;\n    var isScrollLoad = scrollXLoad || scrollYLoad;\n    if (fetchColumns.length === 0) {\n      return;\n    }\n    var promises = mapFetchColumnPromise({\n      _vm: this,\n      fetchColumns,\n      tableColumn: tableColumn2\n    });\n    Promise.all(promises).then(handleAllColumnPromises({\n      startIndex,\n      fetchColumns,\n      tableData,\n      asyncRenderMap,\n      isScrollLoad\n    }, this));\n  },\n  // Publish methods 与工具栏对接\n  connect: function connect(_ref172) {\n    var toolbar = _ref172.toolbar;\n    this.$toolbar = toolbar;\n  },\n  // 检查触发源是否属于目标节点\n  getEventTargetNode,\n  // 可见性改变事件处理\n  handleVisibilityChange: function handleVisibilityChange(visible3, entry) {\n    this._tableVisible = visible3;\n    if (visible3) {\n      var _this$$grid$_delayAct, _this$$grid2;\n      (_this$$grid$_delayAct = (_this$$grid2 = this.$grid)._delayActivateAnchor) == null ? void 0 : _this$$grid$_delayAct.call(_this$$grid2);\n      this.updateParentHeight();\n      this.recalculate();\n    }\n    emitEvent(this, \"visible-change\", [{\n      $table: this,\n      visible: visible3,\n      entry\n    }]);\n  },\n  // 按顺序切换列的排序状态（null --> asc --> desc --> null --> ...）\n  toggleColumnOrder: function toggleColumnOrder(column) {\n    return column.order ? column.order === \"asc\" ? \"desc\" : null : \"asc\";\n  },\n  handleDataChange: function handleDataChange() {\n    if (Array.isArray(this.rawData)) {\n      !this._isUpdateData && this.loadTableData(this.rawData);\n      this._isUpdateData = false;\n    }\n  },\n  getVm: function getVm(name) {\n    return this.$grid.getVm(name);\n  },\n  assembleColumns: function assembleColumns() {\n    if (!this.isTagUsageSence) return;\n    assemColumn(this);\n  },\n  isValidCustomColumn: function isValidCustomColumn(columnName) {\n    return columnName && this.columnNames.includes(columnName);\n  },\n  computeCollectKey: function computeCollectKey() {\n    var columnIds = [];\n    var _traverse2 = function traverse(columns2) {\n      if (Array.isArray(columns2) && columns2.length > 0) {\n        columns2.forEach(function(column) {\n          columnIds.push(column.columnConfig.id);\n          _traverse2(column.childColumns);\n        });\n      }\n    };\n    _traverse2(this.childColumns);\n    return columnIds.join(\",\");\n  },\n  // 获取所有多选数据状态\n  getAllSelection: function getAllSelection() {\n    return this.selection;\n  },\n  // 尝试恢复滚动位置，规范了最大滚动位置的取值\n  attemptRestoreScroll: function attemptRestoreScroll(options) {\n    var _this46 = this;\n    var _ref173 = options || this, lastScrollTop = _ref173.lastScrollTop, lastScrollLeft = _ref173.lastScrollLeft;\n    var scrollXLoad = this.scrollXLoad, scrollYLoad = this.scrollYLoad, elemStore = this.elemStore;\n    var tableBodyElem = elemStore[\"main-body-wrapper\"];\n    if ((lastScrollTop || lastScrollLeft) && tableBodyElem) {\n      fastdom.measure(function() {\n        var maxScrollTop = tableBodyElem.scrollHeight - tableBodyElem.offsetHeight;\n        var maxScrollLeft = tableBodyElem.scrollWidth - tableBodyElem.offsetWidth;\n        lastScrollTop = Math.min(lastScrollTop, maxScrollTop);\n        lastScrollLeft = Math.min(lastScrollLeft, maxScrollLeft);\n        fastdom.mutate(function() {\n          _this46.restoreScollFlag = true;\n          _this46.scrollTo(lastScrollLeft, lastScrollTop);\n          requestAnimationFrame(function() {\n            var _this46$$refs$tableBo;\n            return (_this46$$refs$tableBo = _this46.$refs.tableBody) == null ? void 0 : _this46$$refs$tableBo.resetStickyWrapperScrollPos();\n          });\n          scrollXLoad && _this46.triggerScrollXEvent();\n          scrollYLoad && _this46.triggerScrollYEvent({\n            target: {\n              scrollTop: lastScrollTop\n            }\n          });\n        });\n      });\n    }\n    return this.$nextTick();\n  },\n  updateRowStatus: function updateRowStatus2(row2) {\n    _updateRowStatus(this, row2);\n  },\n  getCellStatus: function getCellStatus2(row2, column) {\n    return _getCellStatus(this, row2, column);\n  }\n};\nfuncs.forEach(function(name) {\n  Methods$d[name] = function() {\n    return this[\"_\" + name] ? this[\"_\" + name].apply(this, arguments) : null;\n  };\n});\nvar fnField = function fnField2(field) {\n  return typeof field === \"string\" ? field : field[0];\n};\nvar fnFields = function fnFields2(fields) {\n  return fields.map(fnField);\n};\nvar fnFieldConfig = function fnFieldConfig2(field) {\n  return Array.isArray(field) && field.length > 1 ? field[1] : {};\n};\nvar _sfc_main$9 = defineComponent({\n  props: _extends({}, $props, {\n    datas: Object,\n    row: Object\n  }),\n  render: function render7() {\n    var datas = this.datas, row2 = this.row;\n    var selectionColumn = datas.selectionColumn, genParams2 = datas.genParams, config2 = datas.config;\n    var params = genParams2(selectionColumn, row2);\n    var tableVm = config2.tableVm;\n    if (~tableVm.selection.indexOf(row2)) ;\n    var _tableVm$selectConfig = tableVm.selectConfig, selectConfig = _tableVm$selectConfig === void 0 ? {} : _tableVm$selectConfig;\n    var checkMethod = selectConfig.checkMethod;\n    if (typeof checkMethod === \"function\" && !checkMethod(params)) ;\n    return h(\"div\", {\n      attrs: {\n        \"data-tag\": \"tiny-table-column-type\"\n      },\n      class: \"py-px\"\n    }, selectionColumn.renderCell(h, params));\n  }\n});\nvar _sfc_main$8 = defineComponent({\n  inject: [\"$mftable\"],\n  props: _extends({}, $props, {\n    datas: Object,\n    row: Object\n  }),\n  render: function render8() {\n    var _this47 = this;\n    var datas = this.datas, row2 = this.row;\n    var primaryColumn = datas.primaryColumn, contentColumns = datas.contentColumns, genParams2 = datas.genParams, config2 = datas.config, cardView2 = datas.cardView;\n    var _config$cardConfig = config2.cardConfig, cardConfig = _config$cardConfig === void 0 ? {} : _config$cardConfig;\n    var props = {\n      attrs: {\n        \"data-tag\": \"tiny-table-column-content\"\n      },\n      class: \"my-0.5 truncate space-y-2 sm:space-y-1 [&_[data-tag=tiny-input]]:leading-7 [&_[data-tag=tiny-input-textarea]>span]:pt-0\"\n    };\n    var ons = function ons2() {\n      return {\n        mouseenter: _this47.handleMouseenter,\n        mouseleave: _this47.handleMouseleave\n      };\n    };\n    if (!primaryColumn || !primaryColumn.renderCell) {\n      return h(\"div\", props, []);\n    }\n    var primaryVnode = null;\n    var contentVnodes = [];\n    if (cardView2) {\n      var hasLogo = typeof cardConfig.logoField !== \"undefined\";\n      var hasTag = false;\n      var tagVnodes = [];\n      var logoField = \"\";\n      var logoFieldConfig = {};\n      var logoVnode = null;\n      if (cardConfig.tagFields && cardConfig.tagFields.length) {\n        var tagFields = cardConfig.tagFields;\n        hasTag = true;\n        tagVnodes = fnFields(tagFields).map(function(field, i) {\n          if (!row2[field] || typeof row2[field] !== \"string\") {\n            return null;\n          }\n          var fieldConfig = fnFieldConfig(tagFields[i]);\n          var colorField = \"\";\n          if (cardConfig.tagColorFields && cardConfig.tagColorFields.length && cardConfig.tagColorFields[i]) {\n            colorField = fnField(cardConfig.tagColorFields[i]);\n          }\n          var type = row2[colorField] || \"\";\n          var tagProps = {\n            props: {\n              size: \"mini\",\n              customClass: \"inline-block truncate max-w-[theme(spacing.28)] h-4.5\"\n            }\n          };\n          if (type) {\n            Object.assign(tagProps.props, {\n              type\n            });\n          }\n          if (fieldConfig.render) {\n            return fieldConfig.render({\n              h,\n              row: row2,\n              field,\n              config: fieldConfig,\n              value: row2[field],\n              color: type\n            });\n          }\n          return h(Tag, tagProps, row2[field] || \"\");\n        });\n      }\n      if (cardConfig.logoField) {\n        logoField = fnField(cardConfig.logoField);\n        logoFieldConfig = fnFieldConfig(cardConfig.logoField);\n      }\n      var gridCls = [\"grid mb-3\", hasLogo ? \"grid-cols-[theme(spacing.11)_auto]\" : \"grid-cols-[auto]\"];\n      var logoCls = \"w-11 h-11 overflow-hidden rounded\";\n      var primCls = [\"text-base sm:text-sm text-color-text-primary font-medium leading-5\", \"overflow-hidden text-ellipsis whitespace-normal line-clamp-2 sm:line-clamp-1\", {\n        \"ml-3\": hasLogo\n      }];\n      var tagCls = [\"truncate h-4.5\", {\n        \"ml-3\": hasLogo\n      }];\n      if (logoFieldConfig.render) {\n        var params = {\n          h,\n          row: row2,\n          field: logoField,\n          config: logoFieldConfig,\n          value: row2[logoField]\n        };\n        logoVnode = logoFieldConfig.render(params);\n      } else {\n        logoVnode = h(\"img\", {\n          class: \"w-full h-full\",\n          attrs: {\n            src: row2[logoField] || \"\"\n          }\n        });\n      }\n      primaryVnode = h(\"div\", {\n        class: gridCls\n      }, [hasLogo ? h(\"div\", {\n        class: logoCls\n      }, [logoVnode]) : null, h(\"div\", {\n        class: \"truncate space-y-1 relative -top-0.5\"\n      }, [h(\"div\", {\n        class: primCls,\n        on: ons()\n      }, [primaryColumn.renderCell(h, genParams2(primaryColumn, row2))]), hasTag ? h(\"div\", {\n        class: tagCls\n      }, tagVnodes) : null])]);\n    } else {\n      var cls = [\"w-full text-base sm:text-sm text-color-text-primary font-medium leading-5\", \"overflow-hidden text-ellipsis whitespace-normal line-clamp-2 sm:line-clamp-1\"];\n      primaryVnode = h(\"div\", {\n        class: cls,\n        on: ons()\n      }, [primaryColumn.renderCell(h, genParams2(primaryColumn, row2))]);\n    }\n    contentVnodes = contentColumns.map(function(contentColumn) {\n      var params2 = genParams2(contentColumn, row2);\n      var cls2 = [\"w-full text-sm sm:text-xs text-color-fill-9 font-normal sm:font-normal leading-5 sm:leading-5\", \"overflow-hidden text-ellipsis whitespace-normal \"];\n      var cellNode = Cell.renderCell(h, params2);\n      var cellIsVnode = false;\n      if (Array.isArray(cellNode)) {\n        cellIsVnode = isVnode(cellNode[0]);\n      }\n      var VnodeCls = cellIsVnode ? \"inline-block flex-grow [&_span]:leading-5 [&_div[data-tag=tiny-input]]:leading-5 ml-1\" : \"text-color-text-primary break-all\";\n      var divCls = cellIsVnode ? \"flex\" : \"line-clamp-2 sm:line-clamp-1\";\n      return h(\"div\", {\n        class: cls2 + divCls,\n        on: ons()\n      }, [\n        // 这里需要兼容AUI与TinyVue表头实现方式的差异，此处勿同步\n        h(\"span\", {\n          class: \"shrink-0\"\n        }, [Cell.renderHeader(h, params2, \"card\")]),\n        h(\"span\", {}, cardConfig.split || \": \"),\n        h(\"span\", {\n          class: VnodeCls\n        }, [cellNode])\n      ]);\n    });\n    return h(\"div\", props, [primaryVnode].concat(contentVnodes));\n  },\n  methods: {\n    handleMouseenter: function handleMouseenter(e) {\n      var $mftable = this.$mftable;\n      $mftable.showTooltip(e);\n    },\n    handleMouseleave: function handleMouseleave() {\n      var $mftable = this.$mftable;\n      $mftable.hideTooltip();\n    }\n  }\n});\nvar _sfc_main$7 = defineComponent({\n  props: _extends({}, $props, {\n    datas: Object,\n    row: Object\n  }),\n  render: function render9() {\n    var datas = this.datas, row2 = this.row;\n    var slotLink = datas.slotLink, operationColumn = datas.operationColumn, hasOperation = datas.hasOperation, genParams2 = datas.genParams;\n    var params = genParams2(operationColumn, row2);\n    var vnode;\n    if (hasOperation) {\n      var _operationColumn$oper = operationColumn.operationConfig, operationConfig = _operationColumn$oper === void 0 ? {} : _operationColumn$oper;\n      var _operationConfig$butt2 = operationConfig.buttons, buttons = _operationConfig$butt2 === void 0 ? [] : _operationConfig$butt2, _operationConfig$disa2 = operationConfig.disabledClass, disabledClass = _operationConfig$disa2 === void 0 ? \"\" : _operationConfig$disa2;\n      var visibleButtons = [];\n      var isDisabled = function isDisabled2(buttonConfig) {\n        var _buttonConfig$disable2 = buttonConfig.disabled, disabled = _buttonConfig$disable2 === void 0 ? false : _buttonConfig$disable2;\n        return typeof disabled === \"boolean\" && disabled || typeof disabled === \"function\" && disabled(row2);\n      };\n      var isHidden = function isHidden2(buttonConfig) {\n        var _buttonConfig$hidden2 = buttonConfig.hidden, hidden = _buttonConfig$hidden2 === void 0 ? false : _buttonConfig$hidden2;\n        return typeof hidden === \"boolean\" && hidden || typeof hidden === \"function\" && hidden(row2);\n      };\n      var handleItemClick = function handleItemClick2(name) {\n        var buttonConfig = visibleButtons.find(function(_ref174) {\n          var buttonName = _ref174.name;\n          return buttonName === name;\n        });\n        buttonConfig.click(window.event || {}, _extends({\n          buttonConfig\n        }, params));\n      };\n      buttons.forEach(function(buttonConfig) {\n        return !isHidden(buttonConfig) && visibleButtons.push(buttonConfig);\n      });\n      if (visibleButtons.length === 0) {\n        vnode = null;\n      } else if (visibleButtons.length === 1) {\n        vnode = h(\"div\", {\n          attrs: {\n            title: visibleButtons[0].name\n          },\n          \"class\": \"w-5 h-5 sm:w-4 sm:w-4 \" + (isDisabled(visibleButtons[0]) ? \"fill-color-icon-disabled\" : \"fill-color-icon-secondary\") + \" \"\n        }, [h(visibleButtons[0].icon, {\n          on: {\n            click: function click(event) {\n              if (!isDisabled(visibleButtons[0])) {\n                handleItemClick(visibleButtons[0].name);\n              }\n              event.stopPropagation();\n            }\n          },\n          \"attrs\": {\n            \"custom-class\": \"w-5 h-5 sm:w-4 sm:w-4\"\n          }\n        })]);\n      } else {\n        var scopedSlots = {\n          default: function _default29() {\n            return h(IconEllipsis(), {\n              class: \"mf-table-more outline-none text-base cursor-pointer\"\n            });\n          },\n          dropdown: function dropdown() {\n            return h(DropdownMenu, {\n              slot: \"dropdown\"\n            }, visibleButtons.map(function(buttonConfig) {\n              var _class3;\n              return h(DropdownItem, {\n                class: (_class3 = {}, _class3[disabledClass || \"\"] = isDisabled(buttonConfig), _class3),\n                props: {\n                  itemData: buttonConfig.name,\n                  disabled: isDisabled(buttonConfig),\n                  icon: buttonConfig.icon\n                }\n              }, buttonConfig.name);\n            }));\n          }\n        };\n        vnode = h(Dropdown, {\n          on: {\n            \"item-click\": handleItemClick\n          },\n          props: {\n            trigger: \"hover\",\n            showSelfIcon: true,\n            tiny_mode: \"mobile-first\",\n            tiny_mode_root: true\n          },\n          scopedSlots\n        });\n      }\n    } else {\n      vnode = slotLink({\n        row: row2,\n        h\n      });\n    }\n    return h(\"div\", {\n      attrs: {\n        \"data-tag\": \"tiny-table-column-link\"\n      },\n      class: \"flex flex-col items-end mt-px sm:mt-0\"\n    }, [vnode]);\n  }\n});\nvar _sfc_main$6 = defineComponent({\n  props: _extends({}, $props, {\n    datas: Object,\n    row: Object\n  }),\n  components: {\n    ColumnType: _sfc_main$9,\n    ColumnContent: _sfc_main$8,\n    ColumnLink: _sfc_main$7\n  },\n  computed: {\n    showLink: function showLink() {\n      var datas = this.datas;\n      return datas.hasLink || datas.hasOperation;\n    }\n  }\n});\nfunction _sfc_render$2(_ctx, _cache, $props2, $setup, $data, $options) {\n  var _component_column_type = resolveComponent(\"column-type\");\n  var _component_column_content = resolveComponent(\"column-content\");\n  var _component_column_link = resolveComponent(\"column-link\");\n  return openBlock(), createElementBlock(\n    \"div\",\n    {\n      ref: \"layout\",\n      \"data-tag\": \"tiny-table-column-layout\",\n      class: normalizeClass([\"grid\", [_ctx.datas.hasType && _ctx.showLink ? \"grid-cols-[theme(spacing.7)_auto_theme(spacing.7)]\" : \"\", _ctx.datas.hasType && !_ctx.showLink ? \"grid-cols-[theme(spacing.7)_auto]\" : \"\", !_ctx.datas.hasType && _ctx.showLink ? \"grid-cols-[auto_theme(spacing.7)]\" : \"\", !_ctx.datas.hasType && !_ctx.showLink ? \"grid-cols-[auto]\" : \"\"]])\n    },\n    [_ctx.datas.hasType ? (openBlock(), createBlock(_component_column_type, {\n      key: 0,\n      ref: \"type\",\n      datas: _ctx.datas,\n      row: _ctx.row\n    }, null, 8, [\"datas\", \"row\"])) : createCommentVNode(\"v-if\", true), createVNode(_component_column_content, {\n      datas: _ctx.datas,\n      row: _ctx.row\n    }, null, 8, [\"datas\", \"row\"]), _ctx.showLink ? (openBlock(), createBlock(_component_column_link, {\n      key: 1,\n      ref: \"link\",\n      datas: _ctx.datas,\n      row: _ctx.row\n    }, null, 8, [\"datas\", \"row\"])) : createCommentVNode(\"v-if\", true)],\n    2\n    /* CLASS */\n  );\n}\nvar ColumnLayout = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$2]]);\nvar _sfc_main$5 = defineComponent({\n  components: {\n    ColumnLayout\n  },\n  props: _extends({}, $props, {\n    datas: Object,\n    currentRowId: String\n  }),\n  emits: [\"card-click\"],\n  data: function data2() {\n    return {\n      mergeClass\n    };\n  },\n  computed: {\n    row: function row() {\n      var datas = this.datas;\n      return datas.row;\n    },\n    rowid: function rowid() {\n      var datas = this.datas;\n      var config2 = datas.config, row2 = datas.row;\n      var tableVm = config2.tableVm;\n      return getRowid(tableVm, row2);\n    },\n    isCardType: function isCardType() {\n      var _config$tableVm;\n      var datas = this.datas;\n      var config2 = datas.config;\n      var _config$tableVm$$grid = config2 == null ? void 0 : (_config$tableVm = config2.tableVm) == null ? void 0 : _config$tableVm.$grid, viewType2 = _config$tableVm$$grid.viewType;\n      return viewType2 === \"card\";\n    }\n  },\n  methods: {\n    handleClick: function handleClick(e) {\n      if (!getEventTargetNode(e, this.$el, \"tiny-grid-checkbox\").flag && !getEventTargetNode(e, this.$el, \"mf-table-more\").flag) {\n        this.$emit(\"card-click\", this.row, e);\n      }\n    }\n  }\n});\nvar _hoisted_1 = [\"data-rowid\"];\nfunction _sfc_render$1(_ctx, _cache, $props2, $setup, $data, $options) {\n  var _component_column_layout = resolveComponent(\"column-layout\");\n  return openBlock(), createElementBlock(\"div\", {\n    class: normalizeClass(_ctx.mergeClass(_ctx.datas.rowClass, _ctx.currentRowId === _ctx.rowid && _ctx.isCardType ? \"border sm:border-2 sm:border-color-brand\" : \"\")),\n    \"data-tag\": \"tiny-table-row\",\n    \"data-rowid\": _ctx.rowid,\n    onClick: _cache[0] || (_cache[0] = function() {\n      return _ctx.handleClick && _ctx.handleClick.apply(_ctx, arguments);\n    })\n  }, [createVNode(_component_column_layout, {\n    datas: _ctx.datas,\n    row: _ctx.row\n  }, null, 8, [\"datas\", \"row\"])], 10, _hoisted_1);\n}\nvar TableRow = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$1]]);\nvar _sfc_main$4 = defineComponent({\n  inject: [\"$mftable\"],\n  props: _extends({}, $props),\n  render: function render10() {\n    var $mftable = this.$mftable;\n    var params = {\n      $table: $mftable.config.tableVm,\n      $mftable,\n      config: $mftable.listConfig,\n      rows: $mftable.tableData,\n      columns: $mftable.config.tableVm.tableColumn,\n      h\n    };\n    return typeof $mftable.slotList === \"function\" ? $mftable.slotList(params) : null;\n  }\n});\nvar _sfc_main$3 = defineComponent({\n  inject: [\"$mftable\"],\n  props: _extends({}, $props),\n  render: function render11() {\n    var $mftable = this.$mftable;\n    var params = {\n      $table: $mftable.config.tableVm,\n      $mftable,\n      config: $mftable.ganttConfig,\n      rows: $mftable.tableData,\n      columns: $mftable.config.tableVm.tableColumn,\n      h\n    };\n    return typeof $mftable.slotGantt === \"function\" ? $mftable.slotGantt(params) : null;\n  }\n});\nvar _sfc_main$2 = defineComponent({\n  inject: [\"$mftable\"],\n  props: _extends({}, $props),\n  render: function render12() {\n    var $mftable = this.$mftable;\n    var params = {\n      $table: $mftable.config.tableVm,\n      $mftable,\n      config: $mftable.customConfig,\n      rows: $mftable.tableData,\n      columns: $mftable.config.tableVm.tableColumn,\n      h\n    };\n    return typeof $mftable.slotCustom === \"function\" ? $mftable.slotCustom(params) : null;\n  }\n});\nvar _sfc_main$1 = defineComponent({\n  inject: [\"$mftable\"],\n  props: _extends({}, $props),\n  render: function render13() {\n    var $mftable = this.$mftable;\n    var slotEmpty = $mftable.slotEmpty;\n    var renderEmpty = $mftable.renderEmpty;\n    var $table = $mftable.config.tableVm;\n    var content = null;\n    if (typeof slotEmpty === \"function\") {\n      content = slotEmpty({\n        $table\n      });\n    } else if (typeof renderEmpty === \"function\") {\n      content = renderEmpty(h, $table);\n    }\n    return h(\"div\", {\n      attrs: {\n        \"data-tag\": \"tiny-grid-empty-wrapper\"\n      },\n      class: \"flex t-0 justify-center items-center w-full h-full bg-transparent sm:bg-color-bg-1 text-center\"\n    }, [content]);\n  }\n});\nvar _sfc_main = defineComponent({\n  components: {\n    TableRow,\n    Tooltip: Tooltip$1,\n    Exception,\n    ListView: _sfc_main$4,\n    GanttView: _sfc_main$3,\n    CustomView: _sfc_main$2,\n    CustomEmpty: _sfc_main$1\n  },\n  provide: function provide() {\n    return {\n      $mftable: this\n    };\n  },\n  props: {\n    tableData: Array,\n    cardConfig: Object,\n    listConfig: Object,\n    ganttConfig: Object,\n    customConfig: Object\n  },\n  data: function data3() {\n    return {\n      primaryColumn: null,\n      contentColumns: null,\n      operationColumn: null,\n      selectionColumn: null,\n      slotLink: null,\n      rowKey: 0,\n      wrapperHeight: 0,\n      tooltipVisible: false,\n      tooltipContent: \"\",\n      currentRow: null,\n      currentRowId: \"\"\n    };\n  },\n  computed: {\n    config: function config() {\n      var vm = this.$parent, cardConfig = this.cardConfig, listConfig = this.listConfig;\n      return {\n        tableVm: hooks.markRaw(vm),\n        cardConfig,\n        listConfig\n      };\n    },\n    cardView: function cardView() {\n      var _config$tableVm2;\n      var config2 = this.config;\n      var _config$tableVm$$grid2 = config2 == null ? void 0 : (_config$tableVm2 = config2.tableVm) == null ? void 0 : _config$tableVm2.$grid, viewType2 = _config$tableVm$$grid2.viewType, mfShow = _config$tableVm$$grid2.mfShow;\n      var _GlobalConfig$1$viewC = GlobalConfig$1.viewConfig, CARD = _GlobalConfig$1$viewC.CARD, MF = _GlobalConfig$1$viewC.MF, MF_SHOW_CARD = _GlobalConfig$1$viewC.MF_SHOW_CARD;\n      return viewType2 === CARD || viewType2 === MF && mfShow === MF_SHOW_CARD;\n    },\n    listView: function listView() {\n      var _config$tableVm3;\n      var config2 = this.config;\n      var _config$tableVm$$grid3 = config2 == null ? void 0 : (_config$tableVm3 = config2.tableVm) == null ? void 0 : _config$tableVm3.$grid, viewType2 = _config$tableVm$$grid3.viewType;\n      var LIST = GlobalConfig$1.viewConfig.LIST;\n      return viewType2 === LIST;\n    },\n    ganttView: function ganttView() {\n      var _config$tableVm4;\n      var config2 = this.config;\n      var _config$tableVm$$grid4 = config2 == null ? void 0 : (_config$tableVm4 = config2.tableVm) == null ? void 0 : _config$tableVm4.$grid, viewType2 = _config$tableVm$$grid4.viewType;\n      var GANTT = GlobalConfig$1.viewConfig.GANTT;\n      return viewType2 === GANTT;\n    },\n    customView: function customView() {\n      var _config$tableVm5;\n      var config2 = this.config;\n      var _config$tableVm$$grid5 = config2 == null ? void 0 : (_config$tableVm5 = config2.tableVm) == null ? void 0 : _config$tableVm5.$grid, viewType2 = _config$tableVm$$grid5.viewType;\n      var CUSTOM = GlobalConfig$1.viewConfig.CUSTOM;\n      return viewType2 === CUSTOM;\n    },\n    wrapperClass: function wrapperClass() {\n      var _config$tableVm6;\n      var config2 = this.config;\n      return mergeClass(\"w-full h-full overflow-y-auto\", config2 == null ? void 0 : (_config$tableVm6 = config2.tableVm) == null ? void 0 : _config$tableVm6.viewCls(\"mfTable\"), this.exceptionVisible ? \"sm:border sm:border-solid sm:border-color-border-separator rounded-sm\" : \"\");\n    },\n    tableClass: function tableClass() {\n      var cardView2 = this.cardView;\n      var tableCls = \"w-full px-3.5 sm:px-0\";\n      return cardView2 ? mergeClass(tableCls, \"grid gap-3\") : tableCls;\n    },\n    cardClass: function cardClass() {\n      var listView2 = this.listView, ganttView2 = this.ganttView, cardConfig = this.cardConfig, customView2 = this.customView;\n      var smallCls = \"grid-cols-[repeat(auto-fill,minmax(theme(spacing.64),1fr))]\";\n      var defaultCls = \"grid-cols-[repeat(auto-fill,minmax(theme(spacing.80),1fr))]\";\n      return listView2 || ganttView2 || customView2 ? \"\" : (cardConfig == null ? void 0 : cardConfig.cardSize) === \"small\" ? smallCls : defaultCls;\n    },\n    rowClass: function rowClass() {\n      var cardView2 = this.cardView, cardConfig = this.cardConfig;\n      var rowCls = \"border-b-0.5 sm:border-b border-solid border-color-border-separator last:border-color-bg-1 py-3\";\n      if (cardView2) {\n        rowCls = \"border-0 sm:border border-solid border-color-border-separator p-3 rounded hover:shadow-lg bg-color-bg-1\";\n        rowCls += (cardConfig == null ? void 0 : cardConfig.cardSize) === \"small\" ? \" min-w-[theme(spacing.64)]\" : \" min-w-[theme(spacing.80)]\";\n      }\n      return rowCls;\n    },\n    wrapperStyle: function wrapperStyle() {\n      var _config$tableVm7, _config$tableVm7$$gri, _config$tableVm8, _config$tableVm8$$gri;\n      var config2 = this.config, wrapperHeight = this.wrapperHeight;\n      var defaultView = (config2 == null ? void 0 : (_config$tableVm7 = config2.tableVm) == null ? void 0 : (_config$tableVm7$$gri = _config$tableVm7.$grid) == null ? void 0 : _config$tableVm7$$gri.viewType) === GlobalConfig$1.viewConfig.DEFAULT;\n      var displayStyle = defaultView ? \"display:none;\" : \"\";\n      var heightStyle = wrapperHeight ? \"height:\" + wrapperHeight + \"px;\" : \"\";\n      var maxHeight = config2 == null ? void 0 : (_config$tableVm8 = config2.tableVm) == null ? void 0 : (_config$tableVm8$$gri = _config$tableVm8.$grid) == null ? void 0 : _config$tableVm8$$gri.maxHeight;\n      var maxHeightStyle;\n      if (isScale(maxHeight)) {\n        maxHeightStyle = \"max-height:\" + maxHeight + \";\";\n      } else if (toNumber(maxHeight)) {\n        maxHeightStyle = \"max-height:\" + toNumber(maxHeight) + \"px;\";\n      } else {\n        maxHeightStyle = \"\";\n      }\n      return \"\" + displayStyle + heightStyle + maxHeightStyle;\n    },\n    exceptionVisible: function exceptionVisible() {\n      var tableData = this.tableData;\n      var isException = tableData.length === 0;\n      return isException;\n    },\n    isLoading: function isLoading() {\n      var _config$tableVm9, _config$tableVm9$$gri;\n      var config2 = this.config;\n      return (config2 == null ? void 0 : (_config$tableVm9 = config2.tableVm) == null ? void 0 : (_config$tableVm9$$gri = _config$tableVm9.$grid) == null ? void 0 : _config$tableVm9$$gri.loading) || false;\n    }\n  },\n  watch: {\n    \"config.tableVm.tableColumn\": {\n      handler: function handler() {\n        this.mapColumns();\n      },\n      immediate: true\n    },\n    \"config.tableVm.viewType\": {\n      handler: function handler2() {\n        this.rowKey++;\n      },\n      immediate: true\n    },\n    \"config.tableVm.height\": {\n      handler: function handler3() {\n        this.getWrapperHeight();\n      },\n      immediate: true\n    },\n    \"config.tableVm.parentHeight\": {\n      handler: function handler4() {\n        this.getWrapperHeight();\n      },\n      immediate: true\n    },\n    \"config.tableVm.currentRow\": {\n      handler: function handler5(value) {\n        this.currentRow = value;\n        this.setCurrentRowId();\n      },\n      immediate: true\n    }\n  },\n  mounted: function mounted() {\n    this.$nextTick(this.getWrapperHeight);\n  },\n  methods: {\n    mapColumns: function mapColumns() {\n      var _config$tableVm0, _config$tableVm1, _config$tableVm1$$gri, _config$tableVm1$$gri2, _config$tableVm10, _config$tableVm10$$gr, _config$tableVm10$$gr2, _config$tableVm11, _config$tableVm11$$gr, _config$tableVm11$$gr2, _config$tableVm12, _config$tableVm12$$gr, _config$tableVm12$$gr2, _config$tableVm13, _config$tableVm13$$gr, _config$tableVm13$$gr2, _config$tableVm14, _config$tableVm14$$gr;\n      var config2 = this.config, typeColumns2 = this.typeColumns, firstFewPropertyColumn2 = this.firstFewPropertyColumn;\n      var _this$cardConfig = this.cardConfig, cardConfig = _this$cardConfig === void 0 ? {} : _this$cardConfig, _this$listConfig = this.listConfig, listConfig = _this$listConfig === void 0 ? {} : _this$listConfig, _this$ganttConfig = this.ganttConfig, ganttConfig = _this$ganttConfig === void 0 ? {} : _this$ganttConfig, _this$customConfig = this.customConfig, customConfig = _this$customConfig === void 0 ? {} : _this$customConfig;\n      var tableColumn2 = config2 == null ? void 0 : (_config$tableVm0 = config2.tableVm) == null ? void 0 : _config$tableVm0.tableColumn;\n      var primaryField = cardConfig.primaryField, contentFields = cardConfig.contentFields, selectable = cardConfig.selectable, renderLink = cardConfig.renderLink, operable = cardConfig.operable, _cardConfig$few = cardConfig.few, few = _cardConfig$few === void 0 ? 4 : _cardConfig$few;\n      var renderList2 = listConfig.renderList;\n      var renderGantt = ganttConfig.renderGantt;\n      var renderCustom = customConfig.renderCustom;\n      var fieldName = \"\";\n      var fieldNames = [];\n      var propCols = firstFewPropertyColumn2(tableColumn2, few);\n      var primaryColumn;\n      var contentColumns;\n      var operationColumn;\n      var selectionColumn;\n      var slotLink;\n      var slotList;\n      var slotGantt;\n      var slotCustom;\n      var slotEmpty;\n      if (primaryField) {\n        fieldName = fnField(primaryField);\n        primaryColumn = typeColumns2(tableColumn2, [fieldName]).find(function(column) {\n          return column.property === fieldName;\n        });\n      } else {\n        primaryColumn = propCols && propCols.length > 0 ? propCols[0] : void 0;\n      }\n      if (contentFields && contentFields.length) {\n        fieldNames = fnFields(contentFields);\n        contentColumns = typeColumns2(tableColumn2, fieldNames);\n      } else {\n        contentColumns = propCols && propCols.length > 1 ? propCols.slice(1) : [];\n      }\n      if (typeof operable === \"undefined\" || operable) {\n        operationColumn = typeColumns2(tableColumn2, [\"operation\"], \"type\").find(function(column) {\n          return column.type === \"operation\";\n        });\n      }\n      if (typeof selectable === \"undefined\" || selectable) {\n        selectionColumn = typeColumns2(tableColumn2, [\"selection\"], \"type\").find(function(column) {\n          return column.type === \"selection\";\n        });\n      }\n      slotLink = (config2 == null ? void 0 : (_config$tableVm1 = config2.tableVm) == null ? void 0 : (_config$tableVm1$$gri = _config$tableVm1.$grid) == null ? void 0 : (_config$tableVm1$$gri2 = _config$tableVm1$$gri.slots) == null ? void 0 : _config$tableVm1$$gri2.link) || renderLink;\n      slotList = (config2 == null ? void 0 : (_config$tableVm10 = config2.tableVm) == null ? void 0 : (_config$tableVm10$$gr = _config$tableVm10.$grid) == null ? void 0 : (_config$tableVm10$$gr2 = _config$tableVm10$$gr.slots) == null ? void 0 : _config$tableVm10$$gr2.list) || renderList2;\n      slotGantt = (config2 == null ? void 0 : (_config$tableVm11 = config2.tableVm) == null ? void 0 : (_config$tableVm11$$gr = _config$tableVm11.$grid) == null ? void 0 : (_config$tableVm11$$gr2 = _config$tableVm11$$gr.slots) == null ? void 0 : _config$tableVm11$$gr2.gantt) || renderGantt;\n      slotCustom = (config2 == null ? void 0 : (_config$tableVm12 = config2.tableVm) == null ? void 0 : (_config$tableVm12$$gr = _config$tableVm12.$grid) == null ? void 0 : (_config$tableVm12$$gr2 = _config$tableVm12$$gr.slots) == null ? void 0 : _config$tableVm12$$gr2.custom) || renderCustom;\n      slotEmpty = config2 == null ? void 0 : (_config$tableVm13 = config2.tableVm) == null ? void 0 : (_config$tableVm13$$gr = _config$tableVm13.$grid) == null ? void 0 : (_config$tableVm13$$gr2 = _config$tableVm13$$gr.slots) == null ? void 0 : _config$tableVm13$$gr2.empty;\n      var renderEmpty = config2 == null ? void 0 : (_config$tableVm14 = config2.tableVm) == null ? void 0 : (_config$tableVm14$$gr = _config$tableVm14.$grid) == null ? void 0 : _config$tableVm14$$gr.renderEmpty;\n      Object.assign(this, {\n        primaryColumn,\n        contentColumns,\n        operationColumn,\n        selectionColumn\n      });\n      Object.assign(this, {\n        slotLink,\n        slotList,\n        slotGantt,\n        slotCustom,\n        slotEmpty,\n        renderEmpty\n      });\n    },\n    typeColumns: function typeColumns(columns2, types, field) {\n      var cols = types.map(function(type) {\n        return columns2.find(function(column) {\n          return column.visible && column[field || \"property\"] === type;\n        });\n      });\n      var res = [];\n      cols.forEach(function(col) {\n        return col && res.push(col);\n      });\n      return res;\n    },\n    firstFewPropertyColumn: function firstFewPropertyColumn(columns2, few) {\n      return columns2.filter(function(column) {\n        return column.visible && !column.type && column.property;\n      }).slice(0, few);\n    },\n    genParams: function genParams(column, row2) {\n      var config2 = this.config, tableData = this.tableData;\n      var $table = config2.tableVm;\n      var tableColumn2 = $table.tableColumn;\n      var $columnIndex = tableColumn2.indexOf(column);\n      var columnIndex = $table.getColumnIndex(column);\n      var p = {\n        column,\n        $table,\n        $columnIndex,\n        columnIndex,\n        data: tableData\n      };\n      if (row2) {\n        var $rowIndex = tableData.indexOf(row2);\n        var rowIndex = $table.getRowIndex(row2);\n        var seq = $rowIndex + 1;\n        Object.assign(p, {\n          row: row2,\n          $rowIndex,\n          rowIndex,\n          $seq: \"\",\n          seq\n        });\n      }\n      return p;\n    },\n    emitEvent: function emitEvent$1(type, args) {\n      var config2 = this.config;\n      emitEvent(config2 == null ? void 0 : config2.tableVm, type, args);\n    },\n    handleCardClick: function handleCardClick(row2, e) {\n      var config2 = this.config, emitEvent2 = this.emitEvent;\n      var _config$tableVm15 = config2 == null ? void 0 : config2.tableVm, highlightCurrentRow = _config$tableVm15.highlightCurrentRow;\n      if (highlightCurrentRow) {\n        var _config$tableVm16;\n        this.currentRow = row2;\n        this.setCurrentRowId();\n        config2 == null ? void 0 : (_config$tableVm16 = config2.tableVm) == null ? void 0 : _config$tableVm16.triggerCurrentRowEvent(e, {\n          $table: config2 == null ? void 0 : config2.tableVm,\n          row: row2\n        });\n      }\n      emitEvent2.call(this, \"card-click\", [row2, e]);\n    },\n    scrollEvent: function scrollEvent(event) {\n      var _this$config;\n      var _this$$refs$warpperEl = this.$refs.warpperElem, scrolLeft = _this$$refs$warpperEl.scrolLeft, scrollTop = _this$$refs$warpperEl.scrollTop;\n      this.emitEvent(\"scroll\", [{\n        type: \"body\",\n        $table: (_this$config = this.config) == null ? void 0 : _this$config.tableVm,\n        scrolLeft,\n        scrollTop\n      }, event]);\n    },\n    cfg: function cfg(row2) {\n      var config2 = this.config, cardView2 = this.cardView, selectionColumn = this.selectionColumn, slotLink = this.slotLink, primaryColumn = this.primaryColumn;\n      var operationColumn = this.operationColumn, contentColumns = this.contentColumns, genParams2 = this.genParams, rowClass2 = this.rowClass;\n      var hasType = !!selectionColumn;\n      var hasLink = !!slotLink;\n      var hasOperation = !!operationColumn;\n      var res = {\n        row: row2,\n        config: config2,\n        cardView: cardView2,\n        selectionColumn,\n        slotLink,\n        primaryColumn,\n        operationColumn,\n        contentColumns,\n        genParams: genParams2,\n        hasType,\n        hasOperation,\n        hasLink,\n        rowClass: rowClass2\n      };\n      return res;\n    },\n    getWrapperHeight: function getWrapperHeight() {\n      var _config$tableVm17, _config$tableVm18;\n      var config2 = this.config;\n      var $grid = config2 == null ? void 0 : (_config$tableVm17 = config2.tableVm) == null ? void 0 : _config$tableVm17.$grid;\n      var height2 = ($grid == null ? void 0 : $grid.height) === \"auto\" ? \"100%\" : $grid == null ? void 0 : $grid.height;\n      var parentHeight2 = config2 == null ? void 0 : (_config$tableVm18 = config2.tableVm) == null ? void 0 : _config$tableVm18.parentHeight;\n      this.wrapperHeight = isScale(height2) ? Math.floor(parseInt(height2) / 100 * parentHeight2) : toNumber(height2);\n    },\n    showTooltip: function showTooltip(e) {\n      var $refs = this.$refs, _this$cardConfig2 = this.cardConfig, cardConfig = _this$cardConfig2 === void 0 ? {} : _this$cardConfig2;\n      var showTip = cardConfig.showTip;\n      if (!showTip) return;\n      var tooltip = $refs.tooltip;\n      var dom = e.target;\n      var text = dom.textContent;\n      var rect = dom.getBoundingClientRect();\n      var range = document.createRange();\n      range.setStart(dom, 0);\n      range.setEnd(dom, dom.childNodes.length);\n      var rangeRect = range.getBoundingClientRect();\n      if (rangeRect.x + rangeRect.width < rect.x || rangeRect.x + rangeRect.width > rect.x + rect.width || rangeRect.y + rangeRect.height < rect.y || rangeRect.y + rangeRect.height > rect.y + rect.height) {\n        tooltip.state.referenceElm = dom;\n        tooltip.state.popperElm && (tooltip.state.popperElm.style.display = \"none\");\n        tooltip.doDestroy();\n        this.tooltipContent = text;\n        this.tooltipVisible = true;\n        setTimeout(tooltip.updatePopper, 20);\n      }\n    },\n    hideTooltip: function hideTooltip() {\n      this.tooltipVisible = false;\n      this.tooltipContent = \"\";\n    },\n    setCurrentRowId: function setCurrentRowId() {\n      var config2 = this.config, currentRow = this.currentRow;\n      if (currentRow) {\n        this.currentRowId = getRowid(config2.tableVm, currentRow);\n      }\n    }\n  }\n});\nfunction _sfc_render(_ctx, _cache, $props2, $setup, $data, $options) {\n  var _component_custom_empty = resolveComponent(\"custom-empty\");\n  var _component_exception = resolveComponent(\"exception\");\n  var _component_list_view = resolveComponent(\"list-view\");\n  var _component_gantt_view = resolveComponent(\"gantt-view\");\n  var _component_custom_view = resolveComponent(\"custom-view\");\n  var _component_table_row = resolveComponent(\"table-row\");\n  var _component_tooltip = resolveComponent(\"tooltip\");\n  return openBlock(), createElementBlock(\n    \"div\",\n    {\n      ref: \"warpperElem\",\n      \"data-tag\": \"tiny-table-wrapper\",\n      class: normalizeClass([\"scrollbar-size-0\", _ctx.wrapperClass]),\n      style: normalizeStyle(_ctx.wrapperStyle),\n      onScroll: _cache[1] || (_cache[1] = function() {\n        return _ctx.scrollEvent && _ctx.scrollEvent.apply(_ctx, arguments);\n      })\n    },\n    [_ctx.exceptionVisible && (_ctx.slotEmpty || _ctx.renderEmpty) ? (openBlock(), createBlock(_component_custom_empty, {\n      key: 0,\n      class: normalizeClass(_ctx.isLoading ? \"invisible\" : \"\")\n    }, null, 8, [\"class\"])) : _ctx.exceptionVisible ? (openBlock(), createBlock(_component_exception, {\n      key: 1,\n      tiny_mode: \"mobile-first\",\n      tiny_mode_root: \"\",\n      class: normalizeClass([\"min-h-[theme(spacing.72)]\", _ctx.isLoading ? \"invisible\" : \"\"]),\n      \"component-page\": \"\",\n      type: \"nodata\"\n    }, null, 8, [\"class\"])) : (openBlock(), createElementBlock(\n      \"div\",\n      {\n        key: 2,\n        \"data-tag\": \"tiny-table\",\n        class: normalizeClass([_ctx.tableClass, _ctx.cardClass]),\n        ref: \"table\"\n      },\n      [_ctx.listView ? (openBlock(), createBlock(_component_list_view, {\n        key: 0\n      })) : _ctx.ganttView ? (openBlock(), createBlock(_component_gantt_view, {\n        key: 1\n      })) : _ctx.customView ? (openBlock(), createBlock(_component_custom_view, {\n        key: 2\n      })) : (openBlock(true), createElementBlock(\n        Fragment,\n        {\n          key: 3\n        },\n        renderList(_ctx.tableData, function(row2, i) {\n          return openBlock(), createBlock(_component_table_row, {\n            key: \"\" + _ctx.rowKey + i,\n            datas: _ctx.cfg(row2),\n            \"current-row-id\": _ctx.currentRowId,\n            onCardClick: _ctx.handleCardClick\n          }, null, 8, [\"datas\", \"current-row-id\", \"onCardClick\"]);\n        }),\n        128\n        /* KEYED_FRAGMENT */\n      ))],\n      2\n      /* CLASS */\n    )), createVNode(_component_tooltip, {\n      ref: \"tooltip\",\n      modelValue: _ctx.tooltipVisible,\n      \"onUpdate:modelValue\": _cache[0] || (_cache[0] = function($event) {\n        return _ctx.tooltipVisible = $event;\n      }),\n      content: _ctx.tooltipContent,\n      manual: \"\"\n    }, null, 8, [\"modelValue\", \"content\"])],\n    38\n    /* CLASS, STYLE, NEED_HYDRATION */\n  );\n}\nvar MfTable = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render]]);\nvar themes$1 = GlobalConfig$1.themes, viewConfig$1 = GlobalConfig$1.viewConfig, columnLevelKey$1 = GlobalConfig$1.columnLevelKey, defaultColumnName$1 = GlobalConfig$1.defaultColumnName;\nvar T_TINY = themes$1.TINY, T_SAAS$1 = themes$1.SAAS;\nvar V_DEFAULT$1 = viewConfig$1.DEFAULT, V_MF$1 = viewConfig$1.MF;\nvar V_MF_LIST = viewConfig$1.MF_SHOW_LIST;\nvar hiddenContainerClass = \"tiny-grid-hidden-column\";\nfunction verifyConfig(_vm) {\n  if (!getRowkey(_vm)) {\n    error(\"ui.grid.error.rowIdEmpty\");\n  }\n  if (!Grid$1._edit && _vm.editConfig) {\n    throw new Error(template(error(\"ui.grid.error.reqModule\"), {\n      name: \"Edit\"\n    }));\n  }\n  if (!Grid$1._valid && _vm.editRules) {\n    throw new Error(template(error(\"ui.grid.error.reqModule\"), {\n      name: \"Validator\"\n    }));\n  }\n  if (!Grid$1._keyboard && (_vm.keyboardConfig || _vm.mouseConfig)) {\n    throw new Error(template(error(\"ui.grid.error.reqModule\"), {\n      name: \"Keyboard\"\n    }));\n  }\n  if (!Grid$1._resize && _vm.autoResize) {\n    throw new Error(template(error(\"ui.grid.error.reqModule\"), {\n      name: \"Resize\"\n    }));\n  }\n}\nfunction mergeScrollDirStore(scrollDir, scrollDirStore) {\n  if (scrollDir) {\n    Object.assign(scrollDirStore, {\n      startIndex: 0,\n      visibleIndex: 0,\n      adaptive: isBoolean(scrollDir.adaptive) ? scrollDir.adaptive : true,\n      renderSize: toNumber$1(scrollDir.rSize),\n      offsetSize: toNumber$1(scrollDir.oSize)\n    });\n  }\n}\nfunction loadStatic(data7, _vm) {\n  if (data7 && data7.length > 0) {\n    _vm.updateRawData(data7);\n    _vm.updateStyle();\n  }\n}\nfunction mergeTreeConfig(_vm) {\n  if (_vm.treeConfig) {\n    var ordered = _vm.treeConfig.ordered;\n    _vm.treeOrdered = isNull(ordered) ? true : Boolean(ordered);\n  }\n}\nfunction bindEvent(ctx) {\n  GlobalEvent.on(ctx, \"mousedown\", ctx.handleGlobalMousedownEvent);\n  GlobalEvent.on(ctx, \"mousedown\", ctx.handleGlobalMousedownCaptureEvent, true);\n  GlobalEvent.on(ctx, \"blur\", ctx.handleGlobalBlurEvent);\n  GlobalEvent.on(ctx, \"mousewheel\", ctx.handleGlobalMousewheelEvent);\n  GlobalEvent.on(ctx, \"keydown\", ctx.handleGlobalKeydownEvent);\n  GlobalEvent.on(ctx, \"resize\", ctx.handleGlobalResizeEvent);\n  GlobalEvent.on(ctx, \"contextmenu\", ctx.handleGlobalContextmenuEvent);\n}\nfunction unbindEvent(table) {\n  GlobalEvent.off(table, \"mousedown\");\n  GlobalEvent.off(table, \"mousedown\", true);\n  GlobalEvent.off(table, \"blur\");\n  GlobalEvent.off(table, \"mousewheel\");\n  GlobalEvent.off(table, \"keydown\");\n  GlobalEvent.off(table, \"resize\");\n  GlobalEvent.off(table, \"contextmenu\");\n}\nvar Table = defineComponent({\n  name: $prefix + \"GridTable\",\n  props: _extends({}, $props, {\n    // 所有的列对齐方式\n    align: {\n      type: String,\n      default: function _default() {\n        return GlobalConfig$1.align;\n      }\n    },\n    // 是否自动监听父容器变化去更新响应式表格宽高\n    autoResize: Boolean,\n    // 是否带有纵向边框\n    border: {\n      type: Boolean,\n      default: function _default2() {\n        return GlobalConfig$1.border;\n      }\n    },\n    // 给单元格附加 className\n    cellClassName: [String, Function],\n    // 主键配置\n    columnKey: Boolean,\n    // 所有列最小宽度，把剩余宽度按比例分配\n    columnMinWidth: [Number, String],\n    // 所有列宽度\n    columnWidth: [Number, String],\n    // 快捷菜单配置项\n    contextMenu: Object,\n    // 初始化绑定动态列\n    customs: Array,\n    // 数据\n    data: [Array, Object],\n    // 行拖拽和列拖拽的配置\n    dropConfig: {\n      type: Object,\n      default: function _default3() {\n        return {};\n      }\n    },\n    // 编辑配置项\n    editConfig: [Object, Boolean],\n    // 校验规则配置项\n    editRules: Object,\n    // 展开行配置项\n    expandConfig: Object,\n    // 列的宽度是否自撑开\n    fit: {\n      type: Boolean,\n      default: function _default4() {\n        return GlobalConfig$1.fit;\n      }\n    },\n    // 所有的表尾列的对齐方式\n    footerAlign: {\n      type: String,\n      default: function _default5() {\n        return GlobalConfig$1.footerAlign;\n      }\n    },\n    // 给表尾的单元格附加 className\n    footerCellClassName: [String, Function],\n    // 表尾合计的计算方法\n    footerMethod: Function,\n    // 给表尾的行附加 className\n    footerRowClassName: [String, Function],\n    // 表尾合并行或列\n    footerSpanMethod: Function,\n    // 所有的表头列的对齐方式\n    headerAlign: {\n      type: String,\n      default: function _default6() {\n        return GlobalConfig$1.headerAlign;\n      }\n    },\n    // 给表头的单元格附加 className\n    headerCellClassName: [String, Function],\n    // 给表头的行附加 className\n    headerRowClassName: [String, Function],\n    // 表头后置图标是否绝对定位\n    headerSuffixIconAbsolute: Boolean,\n    // 表格的高度\n    height: [Number, String],\n    // 激活单元格编辑时是否高亮显示\n    highlightCell: Boolean,\n    // 是否要高亮当前选中列\n    highlightCurrentColumn: {\n      type: Boolean,\n      default: function _default7() {\n        return GlobalConfig$1.highlightCurrentColumn;\n      }\n    },\n    // 是否要高亮当前选中行\n    highlightCurrentRow: {\n      type: Boolean,\n      default: function _default8() {\n        return GlobalConfig$1.highlightCurrentRow;\n      }\n    },\n    // 鼠标移到列是否要高亮显示\n    highlightHoverColumn: {\n      type: Boolean,\n      default: function _default9() {\n        return GlobalConfig$1.highlightHoverColumn;\n      }\n    },\n    // 鼠标移到行是否要高亮显示\n    highlightHoverRow: {\n      type: Boolean,\n      default: function _default10() {\n        return GlobalConfig$1.highlightHoverRow;\n      }\n    },\n    // 是否开启异步列功能\n    isAsyncColumn: Boolean,\n    isCenterEmpty: Boolean,\n    // 是否拖拽表头调整列顺序\n    isDragHeaderSorting: Boolean,\n    // 按键配置项\n    keyboardConfig: {\n      type: Object,\n      default: function _default11() {\n        return {};\n      }\n    },\n    // 表格是否加载中\n    loading: Boolean,\n    loadingComponent: Object,\n    // 表格的最大高度\n    maxHeight: [Number, String],\n    // 表格的最小高度\n    minHeight: [Number, String],\n    // 鼠标配置项\n    mouseConfig: {\n      type: Object,\n      default: function _default12() {\n        return {};\n      }\n    },\n    // 优化配置项\n    optimization: Object,\n    // 额外的参数\n    params: Object,\n    // 单选配置\n    radioConfig: Object,\n    // 是否所有服务端筛选\n    remoteFilter: Boolean,\n    // 是否所有服务端排序\n    remoteSort: Boolean,\n    // 空数据渲染\n    renderEmpty: Function,\n    // 自定义表格行渲染后的逻辑\n    renderRowAfter: Function,\n    // 所有列是否允许拖动列宽调整大小\n    resizable: {\n      type: Boolean,\n      default: function _default13() {\n        return GlobalConfig$1.resizable;\n      }\n    },\n    // 可调整列宽的配置\n    resizableConfig: Object,\n    // 给行附加 className\n    rowClassName: [String, Function],\n    // 行分组配置映射表\n    rowGroup: Object,\n    rowId: {\n      type: String,\n      default: function _default14() {\n        return GlobalConfig$1.rowId;\n      }\n    },\n    rowKey: Boolean,\n    // 行合并\n    rowSpan: Array,\n    // 滚动加载(滚动分页加载)\n    scrollLoad: Object,\n    // 多选配置项\n    selectConfig: Object,\n    // 是否显示表尾合计\n    showFooter: Boolean,\n    // 是否显示表头\n    showHeader: {\n      type: Boolean,\n      default: function _default15() {\n        return GlobalConfig$1.showHeader;\n      }\n    },\n    // 设置表头所有内容过长时显示为省略号\n    showHeaderOverflow: {\n      type: [Boolean, String],\n      default: function _default16() {\n        return GlobalConfig$1.showHeaderOverflow;\n      }\n    },\n    // 设置所有内容过长时显示为省略号\n    showOverflow: {\n      type: [Boolean, String],\n      default: function _default17() {\n        return GlobalConfig$1.showOverflow;\n      }\n    },\n    // 表格的尺寸\n    size: {\n      type: String,\n      default: function _default18() {\n        return GlobalConfig$1.size;\n      }\n    },\n    // 排序配置项\n    sortConfig: Object,\n    // 自定义所有列的排序方法\n    sortMethod: Function,\n    // 全局开关控制所有的列是否可以排列\n    sortable: {\n      type: Boolean,\n      default: true\n    },\n    // 合并行或列\n    spanMethod: Function,\n    // 只对 type=index 时有效，自定义序号的起始值\n    startIndex: {\n      type: Number,\n      default: 0\n    },\n    // 是否带有斑马纹\n    stripe: {\n      type: Boolean,\n      default: function _default19() {\n        return GlobalConfig$1.stripe;\n      }\n    },\n    // saas下是否带有斑马纹\n    stripeSaas: {\n      type: Boolean,\n      default: function _default20() {\n        return GlobalConfig$1.stripeSaas;\n      }\n    },\n    // saas下是否带有下边框线\n    borderSaas: {\n      type: Boolean,\n      default: function _default21() {\n        return GlobalConfig$1.borderSaas;\n      }\n    },\n    // saas下配置竖线\n    borderVertical: {\n      type: Boolean,\n      default: function _default22() {\n        return GlobalConfig$1.borderVertical;\n      }\n    },\n    // 默认统计配置\n    summaryConfig: Object,\n    // 是否自动根据状态属性去更新响应式表格宽高\n    syncResize: Boolean,\n    tableLayout: String,\n    // tooltip 配置项\n    tooltipConfig: {\n      type: Object,\n      default: function _default23() {\n        return {};\n      }\n    },\n    // 树形结构配置项\n    treeConfig: Object,\n    // 校验配置项\n    validConfig: Object,\n    // 多端卡片配置\n    cardConfig: Object,\n    // 视图类型\n    viewType: {\n      type: String,\n      default: function _default24() {\n        return V_DEFAULT$1;\n      }\n    },\n    // 移动优先视图下展示类型\n    mfShow: {\n      type: String,\n      default: function _default25() {\n        return V_MF_LIST;\n      }\n    },\n    // 列锚点\n    columnAnchor: Array,\n    // 表尾自定义渲染\n    renderFooter: Function,\n    // 多端列表配置\n    listConfig: Object,\n    // 多端甘特配置\n    ganttConfig: Object,\n    // 多端custom配置\n    customConfig: Object,\n    // 数据预取配置\n    prefetch: [Boolean, Array],\n    // 相交配置\n    intersectionOption: Object,\n    // 值比较方法\n    equals: Function,\n    // 自动清空鼠标选中\n    autoClearMouseChecked: {\n      type: Boolean,\n      default: true\n    },\n    // 操作列（type为index或radio或selection的列）是否可拖动列宽\n    operationColumnResizable: {\n      type: Boolean,\n      default: function _default26() {\n        return GlobalConfig$1.operationColumnResizable;\n      }\n    },\n    // 自动清空键盘复制\n    autoClearKeyboardCopy: {\n      type: Boolean,\n      default: false\n    },\n    // 自定义列组件名称（列表）\n    customColumnNames: {\n      type: [String, Array],\n      default: GlobalConfig$1.defaultColumnName\n    }\n  }),\n  provide: function provide2() {\n    return {\n      $table: this,\n      // 嵌套表格屏蔽父表格列\n      $column: null\n    };\n  },\n  inject: {\n    $grid: {\n      default: null\n    }\n  },\n  data: function data4() {\n    return {\n      // 存储异步加载过的行\\列数据\n      asyncRenderMap: {},\n      // 存放快捷菜单的信息\n      ctxMenuStore: {\n        list: [],\n        selectChild: null,\n        selected: null,\n        showChild: false,\n        style: null,\n        visible: false\n      },\n      // 当前行\n      currentRow: null,\n      // 存放可编辑相关信息\n      editStore: {\n        editorAutoRefreshKey: 0,\n        // 激活\n        actived: {\n          column: null,\n          row: null\n        },\n        // 所有选中\n        checked: {\n          columns: [],\n          rows: [],\n          tColumns: [],\n          tRows: []\n        },\n        // 已复制源\n        copyed: {\n          columns: [],\n          cut: false,\n          rows: []\n        },\n        indexs: {\n          columns: []\n        },\n        insertList: [],\n        insertMap: /* @__PURE__ */ new Map(),\n        removeList: [],\n        // 选中源\n        selected: {\n          column: null,\n          row: null\n        },\n        titles: {\n          columns: []\n        }\n      },\n      // 已展开的行\n      expandeds: [],\n      // 当前选中的筛选列\n      filterStore: {\n        column: null,\n        condition: {\n          input: \"\",\n          relation: \"equals\"\n        },\n        id: \"\",\n        multi: false,\n        options: [],\n        visible: false,\n        searchValue: \"\"\n      },\n      // 所有列已禁用\n      headerCheckDisabled: false,\n      // 是否全选\n      isAllSelected: false,\n      // 多选属性，有选中且非全选状态\n      isIndeterminate: false,\n      // 是否存在横向滚动条\n      overflowX: false,\n      // 是否存在纵向滚动条\n      overflowY: true,\n      // 存储滚动加载，上次滚动的位置\n      scrollLoadStore: {\n        bodyHeight: 0,\n        scrollHeight: 0\n      },\n      // 横向滚动条的高度\n      scrollbarHeight: 0,\n      // 纵向滚动条的宽度\n      scrollbarWidth: 0,\n      // 单选属性，选中行\n      selectRow: null,\n      // 存放多选工具栏相关信息\n      selectToolbarStore: {\n        layout: {\n          height: 0,\n          left: 0,\n          top: 0,\n          width: 0,\n          zIndex: 1\n        },\n        visible: false\n      },\n      // 多选属性，已选中的列\n      selection: [],\n      // tooltip提示内容\n      tooltipContent: \"\",\n      // tooltip提示内容是否处理换行字符\n      tooltipContentPre: false,\n      // 已展开树节点\n      treeExpandeds: [],\n      // 树节点不确定状态的列表\n      treeIndeterminates: [],\n      // 存放数据校验相关信息\n      validStore: {\n        column: null,\n        content: \"\",\n        isArrow: false,\n        row: null,\n        rule: null,\n        visible: false\n      },\n      // 校验tip提示内容\n      validTipContent: \"\",\n      // 在编辑模式下 单元格在失去焦点验证的状态\n      validatedMap: {},\n      // 表格父容器的高度\n      parentHeight: 0\n    };\n  },\n  computed: {\n    bodyCtxMenu: function bodyCtxMenu() {\n      return this.ctxMenuOpts.body && this.ctxMenuOpts.body.options ? this.ctxMenuOpts.body.options : [];\n    },\n    ctxMenuList: function ctxMenuList() {\n      var rest = [];\n      this.ctxMenuStore.list.forEach(function(list) {\n        return list.forEach(function(item) {\n          return rest.push(item);\n        });\n      });\n      return rest;\n    },\n    ctxMenuOpts: function ctxMenuOpts() {\n      return extend(true, {}, GlobalConfig$1.menu, this.contextMenu);\n    },\n    hasFilter: function hasFilter() {\n      return this.tableColumn.some(function(column) {\n        return isObject(column.filter) && !isEmptyObject(column.filter);\n      });\n    },\n    hasTip: function hasTip() {\n      return Grid$1._tooltip;\n    },\n    headerCtxMenu: function headerCtxMenu() {\n      return this.ctxMenuOpts.header && this.ctxMenuOpts.header.options ? this.ctxMenuOpts.header.options : [];\n    },\n    isCtxMenu: function isCtxMenu() {\n      return this.headerCtxMenu.length || this.bodyCtxMenu.length;\n    },\n    // 是否使用了分组表头\n    isGroup: function isGroup() {\n      return this.collectColumn.some(function(column) {\n        return hasChildrenList(column);\n      });\n    },\n    isResizable: function isResizable() {\n      return this.resizable || this.tableFullColumn.some(function(column) {\n        return column.resizable;\n      });\n    },\n    sortOpts: function sortOpts() {\n      return extend(true, {}, GlobalConfig$1.sortConfig, this.sortConfig);\n    },\n    tooltipContentOpts: function tooltipContentOpts() {\n      return extend(true, {\n        content: this.tooltipContent,\n        pre: this.tooltipContentPre,\n        renderContent: this.tooltipConfig.renderContent,\n        placement: \"right\",\n        type: this.tooltipConfig.effect ? void 0 : \"normal\"\n      }, this.tooltipConfig);\n    },\n    vaildTipOpts: function vaildTipOpts() {\n      return extend(true, {\n        isArrow: false,\n        placement: \"top\",\n        type: \"error\",\n        content: this.validTipContent\n      }, this.tooltipConfig);\n    },\n    validOpts: function validOpts() {\n      var _this$$grid3, _this$$grid3$designCo;\n      var config2 = Object.assign({\n        message: \"tooltip\"\n      }, GlobalConfig$1.validConfig, (_this$$grid3 = this.$grid) == null ? void 0 : (_this$$grid3$designCo = _this$$grid3.designConfig) == null ? void 0 : _this$$grid3$designCo.validConfig, this.validConfig);\n      config2.isMessageTooltip = config2.message === \"tooltip\";\n      config2.isMessageDefault = config2.message === \"default\";\n      config2.isMessageInline = config2.message === \"inline\";\n      return config2;\n    },\n    isThemeTiny: function isThemeTiny() {\n      return this.tinyTheme === T_TINY;\n    },\n    isThemeSaas: function isThemeSaas() {\n      return this.tinyTheme === T_SAAS$1;\n    },\n    isViewDefault: function isViewDefault() {\n      return this.viewType === V_DEFAULT$1;\n    },\n    isShapeTable: function isShapeTable() {\n      return this.isViewDefault || this.viewType === V_MF$1 && this.$grid.currentBreakpoint !== \"default\";\n    },\n    columnNames: function columnNames() {\n      var customColumnNames = this.customColumnNames;\n      var columnNames2 = [defaultColumnName$1];\n      var pushIfNot = function pushIfNot2(columnName) {\n        if (typeof columnName === \"string\" && !columnNames2.includes(columnName)) {\n          columnNames2.push(columnName);\n        }\n      };\n      if (Array.isArray(customColumnNames) && customColumnNames.length > 0) {\n        customColumnNames.forEach(pushIfNot);\n      } else if (typeof customColumnNames === \"string\") {\n        pushIfNot(customColumnNames);\n      }\n      return columnNames2;\n    }\n  },\n  watch: {\n    collectColumn: function collectColumn(value) {\n      this.watchColumn(value);\n    },\n    customs: function customs(value) {\n      !this.isUpdateCustoms && this.mergeCustomColumn(value);\n      this.isUpdateCustoms = false;\n    },\n    height: function height() {\n      this.$nextTick(this.recalculate);\n    },\n    syncResize: function syncResize(value) {\n      value && this.$nextTick(this.recalculate);\n    },\n    tableColumn: function tableColumn() {\n      this.handleSelectionHeader();\n    },\n    parentHeight: function parentHeight() {\n      this.recalculate();\n    },\n    // 选项式监控在vue2可以检测到顶层数组splice项替换/$set项替换\n    // array.splice(index, 1, newItem)\n    // this.$set(array, index, newItem)\n    // 在数组中的行对象上动态添加字段也会触发此选项式监听\n    data: function data5(array1, array2) {\n      if (isVue2 && array1 === array2 && array1.length === array2.length) {\n        this.updateRawData(this.data);\n      }\n    }\n  },\n  created: function created() {\n    var _Object$assign = Object.assign(this, {\n      // 条件处理后数据\n      afterFullData: [],\n      // 分组表场景全量数据（包含虚拟行）\n      groupFullData: [],\n      elemStore: {},\n      // 缓存数据集 columnId --> { colid: column.id, column, index }\n      fullColumnIdData: {},\n      // 缓存数据集 column --> { colid: column.id, column, index }\n      fullColumnMap: /* @__PURE__ */ new Map(),\n      fullDataRowIdData: {},\n      fullDataRowMap: /* @__PURE__ */ new Map(),\n      // 最后滚动位置\n      lastScrollLeft: 0,\n      lastScrollTop: 0,\n      scrollDirection: \"N\",\n      // N,X,Y （滚动方向）\n      // 存放横向 X 虚拟滚动相关的信息\n      scrollXStore: {},\n      // 存放纵向 Y 虚拟滚动相关信息\n      scrollYStore: {},\n      // 完整数据\n      tableFullData: [],\n      // 表格高度\n      tableHeight: 0,\n      // 可见列总宽度\n      totalWidth: 0,\n      // 存放 tooltip 相关信息\n      tooltipStore: {},\n      // 表格已挂载完成\n      afterMounted: false,\n      // 临时任务\n      tasks: {},\n      // 列初始就绪\n      isColumnInitReady: false,\n      // 列就绪\n      isColumnReady: false,\n      // 分组表场景是否具有虚拟行\n      hasVirtualRow: false,\n      // 是否是标签式用法场景\n      isTagUsageSence: false,\n      // 收集列信息（列数量和列顺序）\n      columnCollectKey: \"\",\n      // treeConfig.ordered的取值处理\n      treeOrdered: void 0,\n      // 水平滚动时新进入渲染的列\n      addedColumn: [],\n      // 单元格状态\n      cellStatus: /* @__PURE__ */ new Map(),\n      // 是否具有type selection列\n      isCheckable: false\n    }), scrollXStore = _Object$assign.scrollXStore, scrollYStore = _Object$assign.scrollYStore, optimizeOpts = _Object$assign.optimizeOpts, data7 = _Object$assign.data;\n    var scrollX = optimizeOpts.scrollX, scrollY = optimizeOpts.scrollY;\n    verifyConfig(this);\n    mergeScrollDirStore(scrollX, scrollXStore);\n    mergeScrollDirStore(scrollY, scrollYStore);\n    mergeTreeConfig(this);\n    loadStatic(data7, this);\n    bindEvent(this);\n    this.$grid.connect({\n      name: \"table\",\n      vm: this\n    });\n  },\n  setup: function setup6(props, context) {\n    var slots = context.slots, attrs = context.attrs, listeners = context.listeners;\n    var id3 = hooks.ref(uniqueId());\n    var collectColumn2 = hooks.ref([]);\n    var tableFullColumn = hooks.ref([]);\n    var visibleColumn = hooks.ref([]);\n    var tableColumn2 = hooks.ref([]);\n    var tableNode = hooks.ref([]);\n    var tableData = hooks.ref([]);\n    var footerData = hooks.ref([]);\n    var scrollXLoad = hooks.ref(false);\n    var scrollYLoad = hooks.ref(false);\n    var headerHeight = hooks.ref(0);\n    var footerHeight = hooks.ref(0);\n    var isColumnWidthAssigned = hooks.ref(false);\n    var bodyWrapperHeight = hooks.ref();\n    var bodyWrapperMinHeight = hooks.ref();\n    var bodyWrapperMaxHeight = hooks.ref();\n    var containerScrollWidth = hooks.ref(0);\n    var containerScrollHeight = hooks.ref(0);\n    var bodyTableWidth = hooks.ref();\n    var scrollLoadScrollHeight = hooks.ref();\n    var columnStore = hooks.ref({\n      // 自适应的列表集合\n      autoList: [],\n      centerList: [],\n      // 左侧冻结列表集合\n      leftList: [],\n      // 右侧冻结列表集合\n      rightList: [],\n      // 固定像素宽度列表集合\n      pxList: [],\n      // 设置了最小宽度列表集合\n      pxMinList: [],\n      // 可调整列宽列表集合\n      resizeList: [],\n      // 百分比宽度列表集合\n      scaleList: [],\n      // 百分比最小宽度列表集合\n      scaleMinList: []\n    });\n    var horizonScroll = hooks.ref({\n      fixed: false,\n      threshold: 2,\n      max: 0,\n      isLeft: true,\n      isRight: false\n    });\n    var bodyProps = hooks.computed(function() {\n      return {\n        collectColumn: collectColumn2.value,\n        tableColumn: tableColumn2.value,\n        tableNode: tableNode.value,\n        tableData: tableData.value,\n        footerData: footerData.value\n      };\n    });\n    var mfTableProps = hooks.computed(function() {\n      return {\n        tableData: tableData.value,\n        cardConfig: props.cardConfig,\n        listConfig: props.listConfig,\n        ganttConfig: props.ganttConfig,\n        customConfig: props.customConfig\n      };\n    });\n    var tableWrapper = hooks.ref();\n    var _useNormalData = useNormalData({\n      props,\n      tableFullColumn\n    }), rawData = _useNormalData.rawData, rawDataVersion = _useNormalData.rawDataVersion;\n    var tinyTheme = hooks.ref(resolveTheme(props, context));\n    var $table = hooks.getCurrentInstance().proxy;\n    var $grid = hooks.inject(\"$grid\", null);\n    var vSize3 = hooks.computed(function() {\n      return props.size || ($grid == null ? void 0 : $grid.size) || ($grid == null ? void 0 : $grid.vSize);\n    });\n    var optimizeOpts = hooks.computed(function() {\n      return extend(true, {}, GlobalConfig$1.optimization, props.optimization);\n    });\n    var rowHeight = hooks.computed(function() {\n      var _optimizeOpts$value, _optimizeOpts$value$s, _GlobalConfig$1$rowHe;\n      return ((_optimizeOpts$value = optimizeOpts.value) == null ? void 0 : (_optimizeOpts$value$s = _optimizeOpts$value.scrollY) == null ? void 0 : _optimizeOpts$value$s.rHeight) || ((_GlobalConfig$1$rowHe = GlobalConfig$1.rowHeight[tinyTheme.value]) == null ? void 0 : _GlobalConfig$1$rowHe[vSize3.value || \"default\"]) || 40;\n    });\n    var headerRowHeight = hooks.computed(function() {\n      var _GlobalConfig$1$heade;\n      return ((_GlobalConfig$1$heade = GlobalConfig$1.headerRowHeight[tinyTheme.value]) == null ? void 0 : _GlobalConfig$1$heade[vSize3.value || \"default\"]) || 40;\n    });\n    useInstanceSlots();\n    useRelation({\n      relationKey: columnLevelKey$1 + \"-\" + id3.value,\n      childrenKey: \"childColumns\",\n      relationContainer: function relationContainer() {\n        return !isServer ? $table.$el.querySelector(\".\" + hiddenContainerClass) : null;\n      },\n      onChange: function onChange() {\n        var collectKey = $table.computeCollectKey();\n        if (collectKey !== $table.columnCollectKey) {\n          $table.columnCollectKey = collectKey;\n          $table.assembleColumns();\n        }\n      }\n    });\n    useDrag({\n      props,\n      collectColumn: collectColumn2,\n      tableColumn: tableColumn2\n    });\n    useRowGroup({\n      props,\n      visibleColumn,\n      tableFullColumn,\n      tableColumn: tableColumn2,\n      columnStore\n    });\n    var _useData = useData(props), tiledLength = _useData.tiledLength;\n    var updateFixedClasses = function updateFixedClasses2(isLeft, isRight) {\n      if (!$table.$el) return;\n      var el = $table.$el;\n      var hasLeftClass = el.classList.contains(\"tiny-grid-fixed__left\");\n      var hasRightClass = el.classList.contains(\"tiny-grid-fixed__right\");\n      var shouldHaveLeft = !isLeft;\n      var shouldHaveRight = !isRight;\n      if (hasLeftClass !== shouldHaveLeft) {\n        if (shouldHaveLeft) {\n          el.classList.add(\"tiny-grid-fixed__left\");\n        } else {\n          el.classList.remove(\"tiny-grid-fixed__left\");\n        }\n      }\n      if (hasRightClass !== shouldHaveRight) {\n        if (shouldHaveRight) {\n          el.classList.add(\"tiny-grid-fixed__right\");\n        } else {\n          el.classList.remove(\"tiny-grid-fixed__right\");\n        }\n      }\n    };\n    var resolveMap = {};\n    hooks.watch(function() {\n      var _horizonScroll$value, _horizonScroll$value2;\n      return [(_horizonScroll$value = horizonScroll.value) == null ? void 0 : _horizonScroll$value.isLeft, (_horizonScroll$value2 = horizonScroll.value) == null ? void 0 : _horizonScroll$value2.isRight];\n    }, function(_ref175) {\n      var newIsLeft = _ref175[0], newIsRight = _ref175[1];\n      hooks.nextTick(function() {\n        return updateFixedClasses(newIsLeft, newIsRight);\n      });\n    });\n    hooks.onMounted(function() {\n      $table.addIntersectionObserver();\n      if (tableWrapper.value) {\n        document.body.appendChild(tableWrapper.value);\n      }\n      hooks.nextTick(function() {\n        $table.afterMounted = true;\n        setTimeout(function() {\n          if ($table.$el && $table.horizonScroll) {\n            var _horizonScroll$value3, _horizonScroll$value4;\n            var el = $table.$el;\n            if (!((_horizonScroll$value3 = horizonScroll.value) != null && _horizonScroll$value3.isLeft)) {\n              el.classList.add(\"tiny-grid-fixed__left\");\n            }\n            if (!((_horizonScroll$value4 = horizonScroll.value) != null && _horizonScroll$value4.isRight)) {\n              el.classList.add(\"tiny-grid-fixed__right\");\n            }\n          }\n        });\n        if (props.autoResize && Grid$1._resize) {\n          $table.bindResize();\n        }\n      });\n    });\n    hooks.onBeforeUnmount(function() {\n      var _tableWrapper$value;\n      if ((_tableWrapper$value = tableWrapper.value) != null && _tableWrapper$value.parentNode) {\n        var _tableWrapper$value2;\n        (_tableWrapper$value2 = tableWrapper.value) == null ? void 0 : _tableWrapper$value2.parentNode.removeChild(tableWrapper.value);\n      }\n      $table.removeIntersectionObserver();\n      if (Grid$1._resize) {\n        $table.unbindResize();\n      }\n      $table.closeFilter();\n      $table.closeMenu();\n      var ySpaceElem = $table.elemStore[\"main-body-ySpace\"];\n      if (ySpaceElem) {\n        ySpaceElem.onscroll = null;\n      }\n      unbindEvent($table);\n      $table._tileInfo = $table._graphInfo = null;\n      $table.rowidCacheMap = null;\n    });\n    hooks.onActivated(function() {\n      var lastScrollLeft = $table.lastScrollLeft, lastScrollTop = $table.lastScrollTop;\n      if (lastScrollLeft || lastScrollTop) {\n        $table.scrollTo(lastScrollLeft, lastScrollTop);\n        scrollXLoad.value && $table.triggerScrollXEvent();\n        scrollYLoad.value && $table.triggerScrollYEvent({\n          target: {\n            scrollTop: lastScrollTop\n          }\n        });\n      }\n      bindEvent($table);\n    });\n    hooks.onDeactivated(function() {\n      unbindEvent($table);\n    });\n    var tableListeners = getListeners(attrs, listeners);\n    var markColumnIndex = hooks.ref(0);\n    var rowidCacheMap = /* @__PURE__ */ new Map();\n    var columnSlotsWeakMap = /* @__PURE__ */ new WeakMap();\n    return {\n      slots,\n      tableListeners,\n      tinyTheme,\n      id: id3,\n      collectColumn: collectColumn2,\n      tableFullColumn,\n      visibleColumn,\n      tableColumn: tableColumn2,\n      tableNode,\n      tableData,\n      footerData,\n      bodyProps,\n      mfTableProps,\n      vSize: vSize3,\n      optimizeOpts,\n      rowHeight,\n      headerRowHeight,\n      tableWrapper,\n      scrollXLoad,\n      scrollYLoad,\n      headerHeight,\n      footerHeight,\n      isColumnWidthAssigned,\n      bodyWrapperHeight,\n      bodyWrapperMinHeight,\n      bodyWrapperMaxHeight,\n      containerScrollWidth,\n      containerScrollHeight,\n      bodyTableWidth,\n      scrollLoadScrollHeight,\n      columnStore,\n      tiledLength,\n      rawDataVersion,\n      rawData,\n      markColumnIndex,\n      rowidCacheMap,\n      horizonScroll,\n      resolveMap,\n      columnSlotsWeakMap\n    };\n  },\n  render: function render14() {\n    var _class4;\n    var $grid = this.$grid, bodyProps = this.bodyProps, border = this.border, borderSaas = this.borderSaas, borderVertical = this.borderVertical;\n    var ctxMenuStore = this.ctxMenuStore, dropConfig = this.dropConfig, editConfig = this.editConfig, editRules = this.editRules, filterStore = this.filterStore;\n    var hasFilter2 = this.hasFilter, hasTip2 = this.hasTip, height2 = this.height, highlightCell = this.highlightCell, highlightHoverColumn = this.highlightHoverColumn, highlightHoverRow = this.highlightHoverRow;\n    var horizonScroll = this.horizonScroll, id3 = this.id, instanceSlots = this.instanceSlots, isCtxMenu2 = this.isCtxMenu, isGroup2 = this.isGroup, isResizable2 = this.isResizable;\n    var isShapeTable2 = this.isShapeTable, isThemeTiny2 = this.isThemeTiny, isThemeSaas3 = this.isThemeSaas, loading = this.loading, loadingComponent = this.loadingComponent, mfTableProps = this.mfTableProps;\n    var mouseConfig = this.mouseConfig, optimizeOpts = this.optimizeOpts, overflowX = this.overflowX, overflowY = this.overflowY, rowSpan = this.rowSpan;\n    var scrollbarHeight = this.scrollbarHeight, selectToolbarStore = this.selectToolbarStore, showFooter = this.showFooter, showHeader = this.showHeader;\n    var showHeaderOverflow = this.showHeaderOverflow, showOverflow = this.showOverflow, spanMethod = this.spanMethod, stripe = this.stripe, stripeSaas = this.stripeSaas, tableData = this.tableData;\n    var tooltipContentOpts2 = this.tooltipContentOpts, vSize3 = this.vSize, vaildTipOpts2 = this.vaildTipOpts, validOpts2 = this.validOpts;\n    var isMessageDefault = validOpts2.isMessageDefault, isMessageTooltip = validOpts2.isMessageTooltip;\n    return h(\"div\", {\n      class: (_class4 = {\n        \"tiny-grid h-full sm:h-auto !bg-transparent sm:!bg-color-bg-1 after:border-none sm:after:border-solid\": true\n      }, _class4[\"row__valid-\" + validOpts2.message] = true, _class4[\"size__\" + vSize3] = vSize3, _class4[\"tiny-grid-editable\"] = editConfig, _class4[\"show__head\"] = showHeader, _class4[\"show__foot\"] = showFooter, _class4[\"scroll__y\"] = overflowY, _class4[\"scroll__x\"] = overflowX, _class4[\"all-overflow\"] = showOverflow, _class4[\"all-head-overflow\"] = showHeaderOverflow, _class4[\"tiny-grid-cell__highlight\"] = highlightCell, _class4[\"tiny-grid__animat\"] = optimizeOpts.animat, _class4[\"tiny-grid__stripe\"] = !isThemeSaas3 && stripe, _class4[\"tiny-grid__stripe-saas\"] = isThemeSaas3 && stripeSaas, _class4[\"tiny-grid__border\"] = border || isGroup2, _class4[\"tiny-grid__border-saas\"] = isThemeSaas3 && borderSaas, _class4[\"tiny-grid__group-saas\"] = isThemeSaas3 && isGroup2, _class4[\"tiny-grid__border-vertical\"] = borderVertical, _class4[\"tiny-grid__checked\"] = mouseConfig.checked, _class4[\"tiny-grid__hover-align\"] = mouseConfig.hover, _class4[\"mark-insert\"] = editConfig && editConfig.markInsert, _class4[\"edit__no-border\"] = editConfig && editConfig.showBorder === false, _class4[\"is__loading\"] = loading, _class4[\"row__highlight\"] = highlightHoverRow, _class4[\"column__highlight\"] = highlightHoverColumn, _class4[\"is__row-span\"] = rowSpan && rowSpan.length > 0 || typeof spanMethod === \"function\", _class4[\"row__drop-handle--index\"] = dropConfig.rowHandle === \"index\", _class4[\"fixed__sticky\"] = horizonScroll.fixed, _class4)\n    }, [\n      // 隐藏列\n      h(\"div\", {\n        class: hiddenContainerClass,\n        ref: \"hideColumn\"\n      }, instanceSlots.default && instanceSlots.default()),\n      // 主内容\n      h(Body, {\n        ref: \"tableBody\",\n        props: bodyProps,\n        class: this.viewCls(\"tableBody\")\n      }),\n      // 边框线\n      h(\"div\", {\n        class: [\"tiny-grid__border-line\", this.viewCls(\"borderLine\")],\n        key: \"tinyGridBorderLine\"\n      }),\n      // 列宽线\n      isResizable2 ? h(\"div\", {\n        class: [\"tiny-grid__resizable-bar\", this.viewCls(\"resizeBar\")],\n        style: overflowX ? {\n          \"padding-bottom\": scrollbarHeight + \"px\"\n        } : null,\n        ref: \"resizeBar\",\n        key: \"tinyGridResizeBar\"\n      }) : null,\n      // 加载中\n      h(Loading, {\n        props: {\n          visible: loading,\n          loadingComponent\n        },\n        class: this.viewCls(\"gridLoading\")\n      }),\n      // 筛选、快捷菜单、Tip提示、校验提示\n      h(\"div\", {\n        class: [\"tiny-grid\" + id3 + \"-wrapper \" + (this.$attrs.staticClass || \"\"), this.viewCls(\"tableWrapper\")],\n        ref: \"tableWrapper\"\n      }, [\n        // 筛选\n        hasFilter2 ? h(Panel$1, {\n          props: {\n            optimizeOpts,\n            filterStore\n          },\n          ref: \"filterWrapper\"\n        }) : null,\n        // 快捷菜单\n        isCtxMenu2 ? h(Panel, {\n          props: {\n            ctxMenuStore\n          },\n          ref: \"ctxWrapper\"\n        }) : null,\n        // Ellipsis tooltip\n        hasTip2 ? h(Tooltip$1, {\n          ref: \"tooltip\",\n          props: tooltipContentOpts2\n        }) : null,\n        // valid error tooltip\n        hasTip2 && editRules && (isMessageDefault ? !height2 : isMessageTooltip) ? h(Tooltip$1, {\n          class: \"tiny-grid__valid-error\",\n          props: isMessageTooltip || tableData.length === 1 ? vaildTipOpts2 : null,\n          ref: \"validTip\"\n        }) : null\n      ]),\n      // 多选工具栏\n      $grid.selectToolbar ? h(\"div\", {\n        ref: \"selectToolbar\",\n        class: [\"tiny-grid__select-toolbar\", this.viewCls(\"selectToolbar\")],\n        style: [selectToolbarStore.layout, {\n          visibility: selectToolbarStore.visible ? \"visible\" : \"hidden\"\n        }]\n      }, $grid.renderedToolbar ? $grid.renderedToolbar : [null]) : null,\n      // 多端表格（默认主题或默认视图/mf大屏下，不渲染）\n      !isThemeTiny2 && !isShapeTable2 ? h(MfTable, {\n        ref: \"mfTable\",\n        props: mfTableProps\n      }) : null\n    ]);\n  },\n  methods: _extends({}, Methods$d, {\n    viewCls: function viewCls(module) {\n      return this.$grid.viewCls(module);\n    }\n  })\n});\nTable.install = function(Vue) {\n  Grid$1.Vue = Vue;\n  Grid$1.Table = Table;\n  Vue.component(Table.name, Table);\n};\nvar columnLevelKey = GlobalConfig$1.columnLevelKey, defaultColumnName = GlobalConfig$1.defaultColumnName;\nvar Column = defineComponent({\n  name: defaultColumnName,\n  componentName: \"GridColumn\",\n  props: _extends({}, $props, {\n    // 列对齐方式\n    align: String,\n    // 给单元格附加 className\n    className: [String, Function],\n    // 单元格编辑渲染配置项\n    editor: [Object, Function],\n    // 列属性\n    field: String,\n    filter: {},\n    // 自定义筛选方法\n    filterMethod: Function,\n    // 筛选是否允许多选\n    filterMultiple: {\n      type: Boolean,\n      default: true\n    },\n    // 筛选模板配置项\n    filterRender: Object,\n    // 配置筛选条件数组\n    filters: Array,\n    // 将列固定在左侧或者右侧\n    fixed: String,\n    // 表尾列的对齐方式\n    footerAlign: String,\n    // 给表尾单元格附加 className\n    footerClassName: [String, Function],\n    // 格式化配置\n    formatConfig: {\n      type: Object,\n      default: function _default27() {\n        return {\n          data: []\n        };\n      }\n    },\n    // 格式化显示内容\n    formatText: [Function, String],\n    // 格式化单元格编辑器组件的传入值\n    formatValue: Function,\n    group: {\n      type: Boolean,\n      default: false\n    },\n    // 表头对齐方式\n    headerAlign: String,\n    // 给表头单元格附加 className\n    headerClassName: [String, Function],\n    // 自定义索引方法\n    indexMethod: Function,\n    // 在 v3.0 中废弃 label\n    label: String,\n    // 列最小宽度，把剩余宽度按比例分配\n    minWidth: [Number, String],\n    // 额外的参数\n    params: Object,\n    // 在 v3.0 中废弃 prop\n    prop: String,\n    // 是否服务端排序\n    remoteSort: {\n      type: Boolean,\n      default: null\n    },\n    // 单元格渲染配置项\n    renderer: [Object, Function],\n    // 是否必填，如不设置，则会根据校验规则自动生成\n    required: {\n      type: Boolean,\n      default: false\n    },\n    // 是否允许拖动列宽调整大小\n    resizable: {\n      type: Boolean,\n      default: null\n    },\n    // 表单的验证功能\n    rules: Object,\n    // 当表头内容过长时显示为省略号\n    showHeaderOverflow: {\n      type: [Boolean, String],\n      default: null\n    },\n    // 显示列头提示\n    showHeaderTip: {\n      type: Boolean,\n      default: null\n    },\n    // 是否显示列头编辑图标\n    showIcon: {\n      type: Boolean,\n      default: true\n    },\n    // 当内容过长时显示为省略号\n    showOverflow: {\n      type: [Boolean, String],\n      default: null\n    },\n    // 显示列内容提示\n    showTip: {\n      type: Boolean,\n      default: null\n    },\n    // 自定义排序的属性\n    sortBy: [String, Array],\n    // 自定义排序方法\n    sortMethod: Function,\n    // 是否允许排序\n    sortable: {\n      type: Boolean,\n      default: false\n    },\n    // 列标题\n    title: [String, Function],\n    // 指定为树节点\n    treeNode: Boolean,\n    // 渲染类型: index,radio,selection,expand,operation,默认值空串\n    type: String,\n    // 列宽度\n    width: [Number, String],\n    // 操作列配置\n    operationConfig: Object,\n    // 值比较方法\n    equals: Function\n  }),\n  provide: function provide3() {\n    return {\n      $column: this\n    };\n  },\n  inject: {\n    $table: {\n      default: null\n    }\n  },\n  setup: function setup7(props, _ref176) {\n    var slots = _ref176.slots;\n    var reactive = hooks.reactive, inject = hooks.inject, getCurrentInstance = hooks.getCurrentInstance, onUpdated = hooks.onUpdated, watch = hooks.watch, nextTick = hooks.nextTick;\n    var currentInstance = getCurrentInstance();\n    var instance = currentInstance.proxy;\n    var $grid = inject(\"$grid\");\n    var $table = inject(\"$table\");\n    var slotsCache = {};\n    !$table.isTagUsageSence && ($table.isTagUsageSence = true);\n    useInstanceSlots();\n    useRelation({\n      relationKey: columnLevelKey + \"-\" + $table.id\n    });\n    var state = reactive({\n      // 创建表格列实例化对象\n      columnConfig: Cell.createColumn($table, props),\n      slots,\n      // 如果是静态数据源，就拿第一行数据\n      firstRow: !$grid.fetchOption && $grid.data && $grid.data.length ? $grid.data[0] : {}\n    });\n    watch(function() {\n      return props.formatConfig;\n    }, function() {\n      return state.columnConfig.format = props.formatConfig;\n    });\n    onUpdated(function() {\n      var noProxySlots = instance.$scopedSlots || instance.slots;\n      var slotsChange = Object.keys(noProxySlots || {}).some(function(key) {\n        var _slotsCache;\n        return !(((_slotsCache = slotsCache) == null ? void 0 : _slotsCache[key]) === noProxySlots[key]);\n      });\n      if (slotsChange) {\n        slotsCache = _extends({}, noProxySlots);\n        state.columnConfig.slots = slotsCache;\n      }\n    });\n    nextTick(function() {\n      return state.columnConfig.slots = instance.instanceSlots;\n    });\n    return state;\n  },\n  render: function render15() {\n    var $table = this.$table, firstRow = this.firstRow, columnConfig = this.columnConfig, instanceSlots = this.instanceSlots;\n    var slotVnode;\n    try {\n      slotVnode = instanceSlots.default && instanceSlots.default({\n        row: firstRow,\n        column: columnConfig,\n        skip: true\n      });\n    } catch (e) {\n      slotVnode = null;\n      warn(\"ui.grid.error.chainCallError\");\n    }\n    var hasSubColumn = findTree(slotVnode, function(node) {\n      var _ref177 = node || {}, componentOptions = _ref177.componentOptions, type = _ref177.type;\n      var componentName = type && type.name || componentOptions && componentOptions.Ctor.extendOptions.name;\n      return $table.isValidCustomColumn(componentName);\n    }, null, null);\n    var columnProps = {\n      key: columnConfig.id,\n      attrs: {\n        \"data-colid\": columnConfig.id\n      }\n    };\n    return h(\"div\", columnProps, hasSubColumn && slotVnode);\n  },\n  methods: Cell\n});\nColumn.install = function(Vue) {\n  Vue.component(Column.name, Column);\n};\nvar themes = GlobalConfig$1.themes, viewConfig = GlobalConfig$1.viewConfig;\nvar T_SAAS = themes.SAAS;\nvar V_GANTT = viewConfig.GANTT, V_MF = viewConfig.MF, V_CARD = viewConfig.CARD; viewConfig.DEFAULT; var V_CUSTOM = viewConfig.CUSTOM;\nvar propKeys = Object.keys(Table.props);\nfunction createRender(opt) {\n  var _class5;\n  var h2 = opt.h, _vm = opt._vm, vSize3 = opt.vSize, props = opt.props, selectToolbar = opt.selectToolbar, slots = opt.slots, $slots = opt.$slots, tableOns = opt.tableOns, renderedToolbar = opt.renderedToolbar, loading = opt.loading, pagerConfig = opt.pagerConfig, pager = opt.pager, tableLoading = opt.tableLoading, viewType2 = opt.viewType, columnAnchorParams = opt.columnAnchorParams, columnAnchor = opt.columnAnchor, fullScreenClass = opt.fullScreenClass;\n  return h2(\"div\", {\n    class: (_class5 = {}, _class5[\"tiny-grid__wrapper tiny-grid view_\" + viewType2] = true, _class5[\"!bg-transparent sm:!bg-color-bg-1\"] = viewType2 === V_MF || viewType2 === V_CARD, _class5[\"size__\" + vSize3] = vSize3, _class5[\"tiny-grid__animat\"] = props.optimization.animat, _class5[fullScreenClass] = true, _class5)\n  }, [\n    selectToolbar ? null : renderedToolbar(),\n    columnAnchor ? _vm.renderColumnAnchor(columnAnchorParams, _vm) : null,\n    // 这里会渲染tiny-grid-column插槽内容，从而获取列配置\n    h2(Table, {\n      props,\n      on: tableOns,\n      ref: \"tinyTable\"\n    }, slots.default && slots.default()),\n    _vm.renderPager({\n      $slots,\n      _vm,\n      loading,\n      pager,\n      pagerConfig,\n      tableLoading,\n      vSize: vSize3\n    })\n  ]);\n}\nvar Grid = defineComponent({\n  name: $prefix + \"Grid\",\n  provide: function provide4() {\n    return {\n      $grid: this\n    };\n  },\n  props: _extends({}, $props, {\n    columns: Array,\n    proxyConfig: Object,\n    fetchData: Object,\n    saveData: Object,\n    deleteData: Object,\n    toolbar: Object,\n    pager: Object,\n    dataset: Object,\n    autoLoad: {\n      type: Boolean,\n      default: true\n    },\n    seqSerial: {\n      type: Boolean,\n      default: false\n    },\n    events: Object\n  }, Table.props, {\n    isBeforePageChange: Boolean,\n    showSaveMsg: {\n      type: Boolean,\n      default: false\n    },\n    isMultipleHistory: Boolean,\n    selectToolbar: [Boolean, Object],\n    filterPopperOptions: {\n      type: Object,\n      default: function _default28() {\n        return {};\n      }\n    }\n  }),\n  data: function data6() {\n    return {\n      emitter: emitter(),\n      fetchOption: null,\n      filterData: [],\n      listeners: {},\n      pagerConfig: null,\n      // 存放标记为删除的行数据\n      pendingRecords: [],\n      sortData: {},\n      tableCustoms: [],\n      tableData: [],\n      tableLoading: false,\n      tablePage: {\n        total: 0,\n        pageSize: 10,\n        currentPage: 1\n      },\n      tablePageLoading: false,\n      realTimeTablePage: {\n        total: 0,\n        pageSize: 10,\n        currentPage: 1\n      },\n      columnAnchorParams: {},\n      columnAnchorKey: \"\",\n      tasks: {},\n      fullScreenClass: \"\",\n      isInitialLoading: true,\n      // 是否首次加载数据\n      _delayActivateAnchor: void 0\n    };\n  },\n  computed: {\n    // 工具栏按钮保存和删除时是否弹出提示信息\n    isMsg: function isMsg() {\n      return this.proxyOpts.message !== false;\n    },\n    tableProps: function tableProps() {\n      var _this48 = this;\n      var rest = {};\n      propKeys.forEach(function(key) {\n        return rest[key] = _this48[key];\n      });\n      return rest;\n    },\n    proxyOpts: function proxyOpts() {\n      return extend(true, {}, GlobalConfig$1.grid.proxyConfig, this.proxyConfig);\n    },\n    vSize: function vSize2() {\n      return this.size || this.$parent && this.$parent.size || this.$parent && this.$parent.vSize;\n    },\n    seqIndex: function seqIndex() {\n      var seqSerial = this.seqSerial, scrollLoad = this.scrollLoad, oldPage = this.pagerConfig, startIndex = this.startIndex, tablePageLoading = this.tablePageLoading, realTimeTablePage = this.realTimeTablePage;\n      var seqIndexValue = startIndex;\n      var pagerConfig = tablePageLoading ? realTimeTablePage : oldPage;\n      if ((seqSerial || scrollLoad) && pagerConfig) {\n        seqIndexValue = (pagerConfig.currentPage - 1) * pagerConfig.pageSize + startIndex;\n      }\n      return seqIndexValue;\n    },\n    isThemeSaas: function isThemeSaas2() {\n      return this.tinyTheme === T_SAAS;\n    },\n    isModeMobileFirst: function isModeMobileFirst() {\n      return this.tinyMode === \"mobile-first\";\n    },\n    isViewGantt: function isViewGantt() {\n      return this.viewType === V_GANTT;\n    },\n    isViewCustom: function isViewCustom() {\n      return this.viewType === V_CUSTOM;\n    },\n    optimizOpt: function optimizOpt() {\n      return Object.assign(this.initOptimization, GlobalConfig$1.optimization, this.optimization);\n    },\n    editConfigOpt: function editConfigOpt() {\n      return this.editConfig ? Object.assign(this.initEditConfig, GlobalConfig$1.editConfig, this.editConfig, {\n        activeMethod: this.handleActiveMethod\n      }) : null;\n    },\n    tooltipOpt: function tooltipOpt() {\n      var _this$designConfig;\n      return Object.assign(this.initTooltipConfig, GlobalConfig$1.tooltip, (_this$designConfig = this.designConfig) == null ? void 0 : _this$designConfig.tooltip, this.tooltipConfig);\n    }\n  },\n  watch: {\n    // 监听配置式columns数组\n    columns: function columns(cols) {\n      this.loadColumn(cols);\n    },\n    tableCustoms: function tableCustoms() {\n      this.toolbar && this.$refs.toolbar && this.$refs.toolbar.loadStorage();\n    },\n    viewType: function viewType(value) {\n      var _this49 = this;\n      if (value === V_MF) {\n        this.$nextTick(function() {\n          return _this49.recalculate();\n        });\n      }\n    }\n  },\n  created: function created2() {\n    this.vmStore = /* @__PURE__ */ Object.create(null);\n    this.fetchOption = this.initFetchOption();\n    this.pagerConfig = this.initPagerConfig();\n    var customs2 = this.customs, events = this.events, prefetch = this.prefetch, fetchOption = this.fetchOption, autoLoad = this.autoLoad;\n    if (customs2) {\n      this.tableCustoms = customs2;\n    }\n    if (events) {\n      var listeners = {};\n      for (var event in events) {\n        if (Object.prototype.hasOwnProperty.call(events, event)) {\n          var evkey = event.replace(/\\B([A-Z])/g, \"-$1\").toLowerCase();\n          listeners[evkey] = events[event];\n          if (~[\"pageChange\", \"sortChange\", \"filterChange\", \"toolbarButtonClick\"].indexOf(event)) {\n            this.emitter.on(evkey, events[event]);\n          }\n        }\n      }\n      this.listeners = listeners;\n    }\n    if (prefetch && fetchOption && autoLoad !== false) {\n      if (Array.isArray(prefetch)) {\n        this.commitProxy(\"prefetch\", prefetch);\n      } else {\n        this.commitProxy(\"prefetch\");\n      }\n    }\n  },\n  mounted: function mounted2() {\n    var columns2 = this.columns, fetchOption = this.fetchOption, autoLoad = this.autoLoad, pagerSlot = this.pagerSlot, prefetch = this.prefetch;\n    if (pagerSlot) {\n      var _pagerSlot$componentO = pagerSlot.componentOptions.listeners, listeners = _pagerSlot$componentO === void 0 ? {} : _pagerSlot$componentO, componentInstance = pagerSlot.componentInstance;\n      if (!listeners[\"size-change\"]) {\n        componentInstance.$on(\"size-change\", this.pageSizeChange);\n      }\n      if (!listeners[\"current-change\"]) {\n        componentInstance.$on(\"current-change\", this.pageCurrentChange);\n      }\n    }\n    if (columns2 && columns2.length) {\n      this.loadColumn(this.columns);\n    }\n    if (!prefetch && fetchOption) {\n      if (this._pageSizeChangeCallback) {\n        this._pageSizeChangeCallback();\n        this._pageSizeChangeCallback = null;\n      } else if (autoLoad) {\n        var toolbarVm = this.getVm(\"toolbar\");\n        this.commitProxy(\"query\", toolbarVm && toolbarVm.orderSetting());\n      }\n    }\n    if (this.isMultipleHistory) {\n      this.initMultipleHistory();\n    }\n  },\n  setup: function setup8(props, context) {\n    var listeners = context.listeners, attrs = context.attrs;\n    var initEditConfig = hooks.ref({});\n    var initOptimization = hooks.ref({});\n    var initTooltipConfig = hooks.ref({});\n    var tableListeners = getListeners(attrs, listeners);\n    var tinyTheme = hooks.ref(resolveTheme(props, context));\n    var tinyMode = hooks.ref(resolveMode(props, context));\n    var breakpoint = useBreakpoint();\n    var renderless = function renderless2(props2, hooks2, _ref178) {\n      var _ref178$designConfig = _ref178.designConfig, designConfig = _ref178$designConfig === void 0 ? null : _ref178$designConfig;\n      return {\n        tableListeners,\n        designConfig,\n        tinyTheme,\n        tinyMode,\n        currentBreakpoint: breakpoint.current,\n        initEditConfig,\n        initOptimization,\n        initTooltipConfig\n      };\n    };\n    hooks.onBeforeUnmount(function() {\n      var gridVm = hooks.getCurrentInstance().proxy;\n      gridVm.vmStore = null;\n    });\n    return setup$1({\n      props,\n      context,\n      renderless,\n      api: [\"designConfig\", \"tableListeners\", \"tinyTheme\", \"tinyMode\", \"currentBreakpoint\", \"initEditConfig\", \"initOptimization\", \"initTooltipConfig\"]\n    });\n  },\n  render: function render16() {\n    var _this50 = this;\n    var fetchOption = this.fetchOption, listeners = this.listeners, loading = this.loading, optimizOpt2 = this.optimizOpt, editConfigOpt2 = this.editConfigOpt, tooltipOpt2 = this.tooltipOpt, pager = this.pager, pagerConfig = this.pagerConfig, remoteFilter = this.remoteFilter, remoteSort = this.remoteSort, selectToolbar = this.selectToolbar;\n    var seqIndex2 = this.seqIndex, $slots = this.slots, tableCustoms2 = this.tableCustoms, tableData = this.tableData, tableListeners = this.tableListeners, tableLoading = this.tableLoading, tableProps2 = this.tableProps, toolbar = this.toolbar, vSize3 = this.vSize, designConfig = this.designConfig, viewType2 = this.viewType;\n    var columnAnchor = this.columnAnchor, columnAnchorParams = this.columnAnchorParams, fullScreenClass = this.fullScreenClass;\n    if (designConfig != null && designConfig.icons) {\n      Object.assign(GlobalConfig$1.icon, designConfig.icons);\n    }\n    var props = Object.assign(tableProps2, {\n      optimization: optimizOpt2,\n      startIndex: seqIndex2,\n      editConfig: editConfigOpt2,\n      tooltipConfig: tooltipOpt2\n    });\n    if ((designConfig == null ? void 0 : designConfig.stripe) !== void 0 && !props.stripe) {\n      props.stripe = designConfig == null ? void 0 : designConfig.stripe;\n    }\n    var tableOns = Object.assign(listeners, tableListeners);\n    var rowClassName = this.handleRowClassName, sortChangeEvent2 = this.sortChangeEvent, filterChangeEvent2 = this.filterChangeEvent;\n    if (fetchOption) {\n      Object.assign(props, {\n        loading: loading || tableLoading,\n        data: tableData,\n        rowClassName\n      });\n      remoteSort && (tableOns[\"sort-change\"] = sortChangeEvent2);\n      remoteFilter && (tableOns[\"filter-change\"] = filterChangeEvent2);\n    }\n    toolbar && !(toolbar.setting && toolbar.setting.storage) && (props.customs = tableCustoms2);\n    toolbar && (tableOns[\"update:customs\"] = function(value) {\n      return _this50.tableCustoms = value;\n    });\n    tableOns[\"column-init-ready\"] = this.handleColumnInitReady;\n    var renderedToolbar = function renderedToolbar2() {\n      return _this50.getRenderedToolbar({\n        $slots,\n        _vm: _this50,\n        loading,\n        tableLoading,\n        toolbar\n      });\n    };\n    return createRender({\n      h,\n      _vm: this,\n      vSize: vSize3,\n      props,\n      selectToolbar,\n      renderedToolbar,\n      tableOns,\n      slots: this.slots,\n      $slots,\n      loading,\n      pager,\n      pagerConfig,\n      tableLoading,\n      viewType: viewType2,\n      columnAnchorParams,\n      columnAnchor,\n      fullScreenClass\n    });\n  },\n  methods: {\n    // 配置高度减去（表格锚点+工具栏+分页）计算得出表格高度\n    updateParentHeight: function updateParentHeight2() {\n      var _this51 = this;\n      if (!this.tasks.updateParentHeight) {\n        this.tasks.updateParentHeight = debounce(10, function() {\n          var $el = _this51.$el, $refs = _this51.$refs;\n          var tinyTable = $refs.tinyTable, tinyGridColumnAnchor = $refs.tinyGridColumnAnchor;\n          var toolbarVm = _this51.getVm(\"toolbar\");\n          if (tinyTable) {\n            var columnAnchorHeight = 0;\n            if (tinyGridColumnAnchor) {\n              var _getComputedStyle = getComputedStyle(tinyGridColumnAnchor), height2 = _getComputedStyle.height, marginTop = _getComputedStyle.marginTop, marginBottom = _getComputedStyle.marginBottom;\n              columnAnchorHeight = toNumber$1(height2) + toNumber$1(marginTop) + toNumber$1(marginBottom);\n            }\n            tinyTable.parentHeight = $el.parentNode.clientHeight - (toolbarVm ? toolbarVm.$el.clientHeight : 0) - columnAnchorHeight - ($refs.pager ? $refs.pager.$el.clientHeight : 0);\n          }\n        });\n      }\n      this.tasks.updateParentHeight();\n    },\n    // 向缓存添加实例\n    connect: function connect2(_ref179) {\n      var name = _ref179.name, vm = _ref179.vm;\n      if (name && typeof name === \"string\" && vm) {\n        this.vmStore[name] = vm;\n      }\n    },\n    createJob: function createJob(type, callback) {\n      if (type === \"pageSizeChangeCallback\") {\n        this._pageSizeChangeCallback = callback;\n      } else if (type === \"updateCustomsCallback\") {\n        this._updateCustomsCallback = this._updateCustomsCallback || [];\n        this._updateCustomsCallback.push(callback);\n      }\n    },\n    // 从缓存获取实例\n    getVm: function getVm2(name) {\n      if (name && typeof name === \"string\" && this.vmStore) {\n        return this.vmStore[name];\n      }\n    },\n    // 列就绪时的处理\n    handleColumnInitReady: function handleColumnInitReady() {\n      if (this._updateCustomsCallback) {\n        this._updateCustomsCallback.forEach(function(fn) {\n          fn();\n        });\n        this._updateCustomsCallback = [];\n      }\n    },\n    handleRowClassName: function handleRowClassName(params) {\n      var rowClassName = this.rowClassName;\n      var clss = [];\n      if (this.pendingRecords.includes(params.row)) {\n        clss.push(\"row__pending\");\n      }\n      return clss.concat(rowClassName ? rowClassName(params) : []);\n    },\n    handleActiveMethod: function handleActiveMethod(params) {\n      return !~this.pendingRecords.indexOf(params.row) && (!this.editConfig.activeMethod || this.editConfig.activeMethod(params));\n    },\n    sortChangeEvent: function sortChangeEvent(params) {\n      var remoteSort = this.remoteSort;\n      var column = params.column;\n      var eventParams = extend(false, {\n        $grid: this\n      }, params);\n      if (isBoolean(column.remoteSort) ? column.remoteSort : remoteSort) {\n        this.sortData = params;\n        this.tablePage.currentPage = 1;\n        this.commitProxy(\"query\");\n      }\n      emitEvent(this, \"sort-change\", eventParams);\n      this.emitter.emit(\"sort-change\", eventParams);\n    },\n    viewCls: function viewCls2(module) {\n      return GlobalConfig$1.viewConfig[module][this.viewType] || \"\";\n    },\n    filterChangeEvent: function filterChangeEvent(params) {\n      var eventParams = extend(false, {\n        $grid: this\n      }, params);\n      if (this.remoteFilter) {\n        this.filterData = params.filters;\n        this.commitProxy(\"query\");\n      }\n      emitEvent(this, \"filter-change\", eventParams);\n      this.emitter.emit(\"filter-change\", eventParams);\n    }\n  }\n});\nGrid.install = function(Vue) {\n  Vue.component(Grid.name, Grid);\n};\nfunction operArrs(_ref180) {\n  var _vm = _ref180._vm, editStore = _ref180.editStore, newRecords = _ref180.newRecords, row2 = _ref180.row, tableFullData = _ref180.tableFullData;\n  if (row2 === -1) {\n    Array.prototype.push.apply(tableFullData, newRecords);\n  }\n  if (row2 && row2 !== -1) {\n    var insertIndex = tableFullData.indexOf(row2);\n    if (insertIndex === -1) {\n      throw new Error(error(\"ui.grid.error.unableInsert\"));\n    }\n    Array.prototype.splice.apply(tableFullData, [insertIndex, 0].concat(newRecords));\n  }\n  if (!row2) {\n    Array.prototype.unshift.apply(tableFullData, newRecords);\n  }\n  Array.prototype.unshift.apply(editStore.insertList, newRecords);\n  newRecords.forEach(function(row22) {\n    return editStore.insertMap.set(getRowid(_vm, row22), row22);\n  });\n}\nvar _setActiveCell = function _setActiveCell2(row2, field) {\n  var _this52 = this;\n  var next1 = function next12() {\n    if (!row2 || !field) {\n      return _this52.$nextTick();\n    }\n    var column = find$1(_this52.visibleColumn, function(column2) {\n      return column2.property === field;\n    });\n    if (!column || !column.editor) {\n      return _this52.$nextTick();\n    }\n    var next2 = function next22(cell) {\n      if (!cell) {\n        return;\n      }\n      var rowIndex = _this52.getRowIndex(row2);\n      var columnIndex = _this52.getColumnIndex(column);\n      _this52.handleActived({\n        row: row2,\n        rowIndex,\n        column,\n        columnIndex,\n        cell,\n        $table: _this52\n      });\n      _this52.lastCallTime = Date.now();\n    };\n    getCell(_this52, {\n      row: row2,\n      column\n    }).then(next2);\n    return _this52.$nextTick();\n  };\n  return this.scrollToRow(row2, true).then(next1);\n};\nvar Methods$c = {\n  _insert: function _insert(records) {\n    return this.insertAt(records);\n  },\n  // 根据位置从指定行添加数据\n  _insertAt: function _insertAt(records, row2) {\n    var _this53 = this;\n    var editStore = this.editStore, isAsyncColumn = this.isAsyncColumn, scrollYLoad = this.scrollYLoad, tableFullData = this.tableFullData, treeConfig = this.treeConfig, visibleColumn = this.visibleColumn;\n    if (treeConfig) {\n      throw new Error(error(\"ui.grid.error.treeInsert\"));\n    }\n    if (!isArray(records)) {\n      records = [records];\n    }\n    var isColumnFormat = isAsyncColumn && visibleColumn.some(function(column) {\n      var _column$format, _column$format$async;\n      return (_column$format = column.format) == null ? void 0 : (_column$format$async = _column$format.async) == null ? void 0 : _column$format$async.fetch;\n    });\n    var defaultRowId = \"_RID\";\n    var newRecords = records.map(function(record) {\n      isColumnFormat && (record[GlobalConfig$1.constant.insertedField] = true);\n      delete record[defaultRowId];\n      return hooks.reactive(_this53.defineField(Object.assign({}, record)));\n    });\n    operArrs({\n      _vm: this,\n      editStore,\n      row: row2,\n      tableFullData,\n      newRecords\n    });\n    this.updateCache();\n    this.handleTableData(true);\n    this.checkSelectionStatus();\n    this.updateFooter();\n    if (scrollYLoad) {\n      this.updateScrollYSpace();\n    }\n    var res = {\n      row: newRecords.length ? newRecords[newRecords.length - 1] : null,\n      rows: newRecords\n    };\n    return this.$nextTick().then(function() {\n      _this53.recalculate();\n      return res;\n    });\n  },\n  /**\n   * 删除指定行数据\n   * 如果传 row 则删除一行\n   * 如果传 rows 则删除多行\n   */\n  _remove: function _remove(rows) {\n    var _this54 = this;\n    var afterFullData = this.afterFullData, _this$selectConfig3 = this.selectConfig, selectConfig = _this$selectConfig3 === void 0 ? {} : _this$selectConfig3;\n    var selection = this.selection, tableFullData = this.tableFullData, treeConfig = this.treeConfig;\n    var _this$editStore = this.editStore, insertList = _this$editStore.insertList, insertMap = _this$editStore.insertMap, removeList = _this$editStore.removeList;\n    var checkField = selectConfig.checkField;\n    var nowData = afterFullData;\n    var rest = [];\n    var rowsOld = rows;\n    var inArr = function inArr2(row3, rows2) {\n      return ~rows2.indexOf(row3);\n    };\n    if (treeConfig) {\n      throw new Error(error(\"ui.grid.error.treeRemove\"));\n    }\n    if (!rowsOld) {\n      rows = tableFullData;\n    }\n    if (rowsOld && !isArray(rowsOld)) {\n      rows = [rowsOld];\n    }\n    for (var i = 0; i < rows.length; i++) {\n      var row2 = rows[i];\n      if (this.isTemporaryRow(row2)) continue;\n      removeList.push(row2);\n    }\n    if (!checkField) {\n      remove(selection, function(row3) {\n        return inArr(row3, rows);\n      });\n    }\n    if (tableFullData === rows) {\n      rows = tableFullData.slice(0);\n      tableFullData.length = 0;\n      nowData.length = 0;\n    } else {\n      rest = remove(tableFullData, function(row3) {\n        return inArr(row3, rows);\n      });\n      remove(nowData, function(row3) {\n        return inArr(row3, rows);\n      });\n    }\n    remove(insertList, function(row3) {\n      var exist = inArr(row3, rows);\n      exist && insertMap.delete(getRowid(_this54, row3));\n      return exist;\n    });\n    this.updateCache();\n    this.handleTableData(true);\n    this.checkSelectionStatus();\n    this.updateFooter();\n    var res = {\n      row: rows && rows.length ? rows[rows.length - 1] : null,\n      rows: rest\n    };\n    return this.$nextTick().then(function() {\n      _this54.recalculate();\n      return res;\n    });\n  },\n  /**\n   * 删除选中数据\n   */\n  _removeSelecteds: function _removeSelecteds() {\n    var _this55 = this;\n    var selectRecords = this.getSelectRecords(true);\n    var callback = function callback2(params) {\n      _this55.clearSelection();\n      return params;\n    };\n    return this.remove(selectRecords).then(callback);\n  },\n  _revert: function _revert() {\n    warn(\"ui.grid.error.delRevert\");\n    return this.revertData.apply(this, arguments);\n  },\n  /**\n   * 对数据进行还原\n   * 如果不传任何参数，则还原整个表格；\n   * 如果传row则还原一行；\n   * 如果传rows则还原多行；\n   * 如果还额外传了field则还原指定单元格。\n   */\n  _revertData: function _revertData(rows, field) {\n    var rawData = this.rawData;\n    if (arguments.length && rows && !isArray(rows)) {\n      rows = [rows];\n    }\n    if (!arguments.length) {\n      rows = rawData || [];\n    }\n    for (var i = 0; i < rows.length; i++) {\n      var row2 = rows[i];\n      var oRow = this.getOriginRow(row2);\n      if (oRow && row2) {\n        if (field) {\n          set(row2, field, get(oRow, field));\n        } else {\n          destructuring(row2, oRow);\n        }\n      }\n      this.updateRowStatus(row2);\n    }\n    if (arguments.length) {\n      return this.$nextTick();\n    }\n    return this.reloadData(rawData || []);\n  },\n  /**\n   * 获取表格操作数据集\n   */\n  _getRecordset: function _getRecordset() {\n    var res = {};\n    res.insertRecords = this.getInsertRecords();\n    res.removeRecords = this.getRemoveRecords();\n    res.updateRecords = this.getUpdateRecords();\n    return res;\n  },\n  /**\n   * 获取删除数据列表\n   */\n  _getRemoveRecords: function _getRemoveRecords() {\n    return this.editStore.removeList;\n  },\n  /**\n   * 获取新增数据列表\n   */\n  _getInsertRecords: function _getInsertRecords() {\n    return this.editStore.insertList;\n  },\n  /**\n   * 获取更新数据列表\n   * 只精准匹配row的更改。如果是树表格，子节点更改状态不会影响父节点的更新状态\n   */\n  _getUpdateRecords: function _getUpdateRecords() {\n    var _this56 = this;\n    var tableFullData = this.tableFullData, treeConfig = this.treeConfig;\n    var handler6 = function handler7(row2) {\n      return !_this56.isTemporaryRow(row2) && _this56.hasRowChange(row2);\n    };\n    var updateRecords = treeConfig ? filterTree(tableFullData, handler6, treeConfig) : tableFullData.filter(handler6);\n    return updateRecords;\n  },\n  /**\n   * 处理激活编辑\n   */\n  handleActived: function handleActived(params, event) {\n    var _this57 = this;\n    return _asyncToGenerator(/* @__PURE__ */ _regenerator().m(function _callee() {\n      var editConfig, editStore, tableColumn2, cell, column, row2, editor, actived, isActiveCell, type, canActive, args;\n      return _regenerator().w(function(_context) {\n        while (1) switch (_context.n) {\n          case 0:\n            editConfig = _this57.editConfig, editStore = _this57.editStore, tableColumn2 = _this57.tableColumn;\n            cell = params.cell, column = params.column, row2 = params.row;\n            editor = column.editor;\n            actived = editStore.actived;\n            isActiveCell = handleActivedCheckCell({\n              actived,\n              column,\n              editConfig,\n              row: row2\n            });\n            if (!(editor && cell && isActiveCell && editConfig)) {\n              _context.n = 2;\n              break;\n            }\n            type = \"edit-disabled\";\n            _context.n = 1;\n            return handleActivedCanActive({\n              editConfig,\n              params\n            });\n          case 1:\n            canActive = _context.v;\n            args = {\n              _vm: _this57,\n              actived,\n              canActive,\n              cell,\n              column,\n              editConfig\n            };\n            Object.assign(args, {\n              event,\n              params,\n              row: row2,\n              tableColumn: tableColumn2,\n              type\n            });\n            type = handleActivedDoActive(args);\n            handleActivedClearActive({\n              _vm: _this57,\n              canActive,\n              event\n            });\n            emitEvent(_this57, type, [params, event]);\n          case 2:\n            handleActivedTryActive({\n              _vm: _this57,\n              actived,\n              cell,\n              column,\n              editor,\n              event,\n              isActiveCell,\n              params,\n              row: row2\n            });\n            return _context.a(2, _this57.$nextTick());\n        }\n      }, _callee);\n    }))();\n  },\n  _getColumnModel: function _getColumnModel(row2, column) {\n    var model = column.model, editor = column.editor;\n    if (editor) {\n      model.value = getCellValue(row2, column);\n      model.update = false;\n    }\n  },\n  _setColumnModel: function _setColumnModel(row2, column) {\n    var model = column.model, editor = column.editor;\n    if (editor && model.update) {\n      setCellValue(row2, column, model.value);\n      model.update = false;\n      model.value = null;\n    }\n  },\n  _getActiveRow: function _getActiveRow() {\n    var $el = this.$el, editStore = this.editStore, tableData = this.tableData;\n    var actived = editStore.actived;\n    var args = actived.args, row2 = actived.row;\n    var length = $el.querySelectorAll(\".tiny-grid-body__column.col__actived\").length;\n    return args && ~tableData.indexOf(row2) && length ? _extends({}, args) : null;\n  },\n  /**\n   * 清除已激活的编辑\n   */\n  _clearActived: function _clearActived(event) {\n    var _this58 = this;\n    var _this$editConfig3 = this.editConfig, editConfig = _this$editConfig3 === void 0 ? {} : _this$editConfig3, editStore = this.editStore, tableColumn2 = this.tableColumn;\n    var actived = editStore.actived;\n    var args = actived.args, column = actived.column, row2 = actived.row;\n    var isActived = row2 || column;\n    if (isActived && editConfig.mode === \"row\") {\n      tableColumn2.forEach(function(column22) {\n        return _this58._setColumnModel(row2, column22);\n      });\n    }\n    if (isActived && editConfig.mode !== \"row\") {\n      this._setColumnModel(row2, column);\n    }\n    if (isActived) {\n      var _editor$attrs;\n      this.updateRowStatus(actived.row);\n      this.updateFooter();\n      var row22 = args.row, column2 = args.column;\n      var _ref181 = column2 || {}, editor = _ref181.editor;\n      if ((editor == null ? void 0 : editor.component) === \"input\" && (editor == null ? void 0 : (_editor$attrs = editor.attrs) == null ? void 0 : _editor$attrs.type) === \"number\") {\n        row22[column2.property] = +row22[column2.property];\n      }\n      emitEvent(this, \"edit-closed\", [args, event]);\n    }\n    actived.args = null;\n    actived.column = null;\n    actived.row = null;\n    return this.clearValidate().then(this.recalculate);\n  },\n  _hasActiveRow: function _hasActiveRow(row2) {\n    return this.editStore.actived.row === row2;\n  },\n  /**\n   * 处理聚焦\n   */\n  handleFocus: function handleFocus(params) {\n    var cell = params.cell, column = params.column;\n    var editor = column.editor;\n    if (!editor) {\n      return;\n    }\n    var inputElem;\n    var compRender = Renderer.get(editor.component);\n    var autofocus = editor.autofocus, autoselect = editor.autoselect, focusDelay = editor.focusDelay;\n    var handler6 = function handler7() {\n      if (autofocus) {\n        inputElem = cell.querySelector(autofocus);\n      }\n      var isAutofocus = compRender && compRender.autofocus;\n      if (isAutofocus && !inputElem) {\n        inputElem = cell.querySelector(isAutofocus);\n      }\n      if (!inputElem) {\n        return;\n      }\n      var type = inputElem.type;\n      inputElem.type = \"text\";\n      inputElem.selectionEnd = inputElem.value.length;\n      inputElem.selectionStart = inputElem.selectionEnd;\n      inputElem.type = type;\n      inputElem[autoselect ? \"select\" : \"focus\"]();\n      if (browserInfo.name !== \"ie\") {\n        return;\n      }\n      var textRange = inputElem.createTextRange();\n      textRange.collapse(false);\n      textRange.select();\n    };\n    setTimeout(handler6, focusDelay || 50);\n  },\n  /**\n   * 激活单元格编辑\n   */\n  _setActiveCell,\n  /**\n   * 激活行编辑\n   */\n  _setActiveRow: function _setActiveRow(row2) {\n    var editColumn = find$1(this.visibleColumn, function(column) {\n      return column.editor;\n    });\n    return this.setActiveCell(row2, editColumn.property);\n  },\n  /**\n   * 只对trigger为dblclick有效，选中单元格\n   */\n  _setSelectCell: function _setSelectCell(row2, field) {\n    var _this59 = this;\n    var editConfig = this.editConfig, tableData = this.tableData, visibleColumn = this.visibleColumn;\n    if (!row2 || !field || editConfig.trigger === \"manual\") {\n      return this.$nextTick();\n    }\n    var column = find$1(visibleColumn, function(column2) {\n      return column2.property === field;\n    });\n    var rowIndex = tableData.indexOf(row2);\n    if (!~rowIndex || !column) {\n      return this.$nextTick();\n    }\n    var next = function next2(cell) {\n      var columnIndex = visibleColumn.indexOf(column);\n      var params = {\n        row: row2,\n        rowIndex,\n        column,\n        columnIndex,\n        cell\n      };\n      _this59.handleSelected(params, {});\n    };\n    getCell(this, {\n      row: row2,\n      rowIndex,\n      column\n    }).then(next);\n    return this.$nextTick();\n  },\n  updateSelectedCls: function updateSelectedCls(clear2) {\n    var editStore = this.editStore, elemStore = this.elemStore, _this$mouseConfig2 = this.mouseConfig, mouseConfig = _this$mouseConfig2 === void 0 ? {} : _this$mouseConfig2;\n    var _editStore$selected = editStore.selected, column = _editStore$selected.column, row2 = _editStore$selected.row;\n    clear2 && this.clearSelected(true);\n    if (!mouseConfig.selected || !row2 || !column) {\n      return;\n    }\n    var listElem = elemStore[\"main-body-list\"];\n    var rowid2 = getRowid(this, row2);\n    var trElem = listElem.querySelector('[data-rowid=\"' + rowid2 + '\"]');\n    if (!trElem) {\n      return;\n    }\n    addClass(trElem.querySelector(\".\" + column.id), \"col__selected\");\n  },\n  /**\n   * 处理选中源\n   */\n  handleSelected: function handleSelected(params, event, noDebounce) {\n    var _this60 = this;\n    var editConfig = this.editConfig, editStore = this.editStore, elemStore = this.elemStore, _this$mouseConfig3 = this.mouseConfig, mouseConfig = _this$mouseConfig3 === void 0 ? {} : _this$mouseConfig3;\n    var actived = editStore.actived, selected = editStore.selected;\n    var _ref182 = params || {}, cell = _ref182.cell, column = _ref182.column, row2 = _ref182.row;\n    var selectMethod = function selectMethod2() {\n      var _cell$parentNode;\n      if (selected.row === row2 && selected.column === column || actived.row === row2 && (editConfig.mode !== \"cell\" || actived.column === column)) {\n        return _this60.$nextTick();\n      }\n      if (_this60.keyboardConfig || _this60.mouseConfig) {\n        _this60.clearChecked(event);\n        _this60.clearIndexChecked();\n        _this60.clearHeaderChecked();\n        _this60.clearSelected(event);\n      }\n      _this60.clearActived(event);\n      selected.args = params;\n      selected.row = row2;\n      selected.column = column;\n      _this60.updateSelectedCls();\n      if (!mouseConfig.checked) {\n        return _this60.$nextTick();\n      }\n      var headerElem = elemStore[\"main-body-headerList\"];\n      _this60.handleChecked([[cell]]);\n      if (!headerElem) {\n        return _this60.$nextTick();\n      }\n      _this60.handleHeaderChecked([[headerElem == null ? void 0 : headerElem.querySelector(\".\" + (column == null ? void 0 : column.id))]]);\n      _this60.handleIndexChecked([[cell == null ? void 0 : (_cell$parentNode = cell.parentNode) == null ? void 0 : _cell$parentNode.querySelector(\".col__index\")]]);\n      return _this60.$nextTick();\n    };\n    selectMethod = noDebounce ? selectMethod : debounce(20, selectMethod);\n    return selectMethod();\n  }\n};\nvar Edit = {\n  install: function install(Table2) {\n    Grid$1._edit = 1;\n    Object.assign(Table2.methods, Methods$c);\n  }\n};\nvar Export = {\n  install: function install2(Table2) {\n    Grid$1._export = 1;\n    Object.assign(Table2.methods, Methods$g);\n  }\n};\nfunction findLeft(params) {\n  var checkColumn = params.checkColumn, columnIndex = params.columnIndex, isLeft = params.isLeft, rowIndex = params.rowIndex, tableData = params.tableData;\n  var targetColumn = params.targetColumn, targetColumnIndex = params.targetColumnIndex, targetRow = params.targetRow, targetRowIndex = params.targetRowIndex, visibleColumn = params.visibleColumn;\n  if (!isLeft) {\n    return {\n      targetColumn,\n      targetColumnIndex,\n      targetRow,\n      targetRowIndex\n    };\n  }\n  for (var _index5 = columnIndex - 1; _index5 >= 0; _index5--) {\n    if (checkColumn(visibleColumn[_index5])) {\n      targetColumnIndex = _index5;\n      targetColumn = visibleColumn[_index5];\n      break;\n    }\n  }\n  if (targetColumn || rowIndex <= 0) {\n    return {\n      targetColumn,\n      targetColumnIndex,\n      targetRow,\n      targetRowIndex\n    };\n  }\n  targetRowIndex = rowIndex - 1;\n  targetRow = tableData[targetRowIndex];\n  for (var _index6 = visibleColumn.length - 1; _index6 >= 0; _index6--) {\n    if (checkColumn(visibleColumn[_index6])) {\n      targetColumnIndex = _index6;\n      targetColumn = visibleColumn[_index6];\n      break;\n    }\n  }\n  return {\n    targetColumn,\n    targetColumnIndex,\n    targetRow,\n    targetRowIndex\n  };\n}\nfunction findRight(params) {\n  var checkColumn = params.checkColumn, columnIndex = params.columnIndex, isLeft = params.isLeft, rowIndex = params.rowIndex, tableData = params.tableData;\n  var targetColumn = params.targetColumn, targetColumnIndex = params.targetColumnIndex, targetRow = params.targetRow, targetRowIndex = params.targetRowIndex, visibleColumn = params.visibleColumn;\n  if (isLeft) {\n    return {\n      targetColumn,\n      targetColumnIndex,\n      targetRow,\n      targetRowIndex\n    };\n  }\n  for (var _index7 = columnIndex + 1; _index7 < visibleColumn.length; _index7++) {\n    if (checkColumn(visibleColumn[_index7])) {\n      targetColumnIndex = _index7;\n      targetColumn = visibleColumn[_index7];\n      break;\n    }\n  }\n  if (targetColumn || rowIndex >= tableData.length - 1) {\n    return {\n      targetColumn,\n      targetColumnIndex,\n      targetRow,\n      targetRowIndex\n    };\n  }\n  targetRowIndex = rowIndex + 1;\n  targetRow = tableData[targetRowIndex];\n  for (var _index8 = 0; _index8 < visibleColumn.length; _index8++) {\n    if (checkColumn(visibleColumn[_index8])) {\n      targetColumnIndex = _index8;\n      targetColumn = visibleColumn[_index8];\n      break;\n    }\n  }\n  return {\n    targetColumn,\n    targetColumnIndex,\n    targetRow,\n    targetRowIndex\n  };\n}\nfunction processTarget(args1) {\n  var _vm = args1._vm, args = args1.args, edit = args1.edit, editConfig = args1.editConfig, event = args1.event, isLeft = args1.isLeft, params = args1.params, rowIndex = args1.rowIndex;\n  var targetColumn = args1.targetColumn, targetColumnIndex = args1.targetColumnIndex, targetRow = args1.targetRow, targetRowIndex = args1.targetRowIndex;\n  if (targetColumn) {\n    if (targetRow) {\n      params.rowIndex = targetRowIndex;\n      params.row = targetRow;\n    } else {\n      params.rowIndex = rowIndex;\n    }\n    params.columnIndex = targetColumnIndex;\n    params.column = targetColumn;\n    getCell(_vm, params).then(function(resCell) {\n      params.cell = resCell;\n      if (editConfig) {\n        if (editConfig.trigger === \"click\" || editConfig.trigger === \"dblclick\") {\n          if (editConfig.mode === \"row\" || edit) {\n            _vm.handleActived(params, event);\n          } else {\n            _vm.handleSelected(params, event);\n            _vm.scrollToRow(params.row, params.column, false, {\n              isLeftArrow: isLeft,\n              isRightArrow: !isLeft,\n              from: args.column\n            });\n          }\n        }\n      }\n    });\n  }\n}\nfunction onCellMousedownGridEl(args) {\n  var _vm = args._vm, bodyList = args.bodyList, cell = args.cell, cellFirstElementChild = args.cellFirstElementChild, cellLastElementChild = args.cellLastElementChild, flag = args.flag, headStart = args.headStart, headerList = args.headerList, isIndex = args.isIndex, startCellNode = args.startCellNode, targetElem = args.targetElem;\n  if (flag) {\n    if (isIndex) {\n      var firstCell = targetElem.parentNode.firstElementChild;\n      _vm.handleChecked(getRowNodes(bodyList, getCellNodeIndex(firstCell.nextElementSibling), getCellNodeIndex(cellLastElementChild)));\n      _vm.handleIndexChecked(getRowNodes(bodyList, getCellNodeIndex(firstCell), getCellNodeIndex(cell)));\n    } else if (!hasClass(targetElem, \"col__index\")) {\n      var _firstCell = targetElem.parentNode.firstElementChild;\n      var colIndex = [].indexOf.call(targetElem.parentNode.children, targetElem);\n      var head = headerList[0].children[colIndex];\n      _vm.handleHeaderChecked(getRowNodes(headerList, getCellNodeIndex(head), getCellNodeIndex(headStart)));\n      _vm.handleIndexChecked(getRowNodes(bodyList, getCellNodeIndex(_firstCell), getCellNodeIndex(cellFirstElementChild)));\n      _vm.handleChecked(getRowNodes(bodyList, startCellNode, getCellNodeIndex(targetElem)));\n    }\n  }\n}\nfunction handleCellMousedownEvent(args1) {\n  var $el = args1.$el, _vm = args1._vm, bodyList = args1.bodyList, cell = args1.cell, cellFirstElementChild = args1.cellFirstElementChild;\n  var cellLastElementChild = args1.cellLastElementChild, headStart = args1.headStart, headerList = args1.headerList, isIndex = args1.isIndex, startCellNode = args1.startCellNode;\n  var _vm$mouseConfig2 = _vm.mouseConfig, mouseConfig = _vm$mouseConfig2 === void 0 ? {} : _vm$mouseConfig2;\n  var _ref183 = mouseConfig || {}, _ref183$updateInterva = _ref183.updateInterval, updateInterval = _ref183$updateInterva === void 0 ? 10 : _ref183$updateInterva;\n  var oldMousemove = document.onmousemove;\n  var oldMouseup = document.onmouseup;\n  var updateEvent = function updateEvent2(event) {\n    event.preventDefault();\n    var _getEventTargetNode = getEventTargetNode(event, $el, \"tiny-grid-body__column\"), flag = _getEventTargetNode.flag, targetElem = _getEventTargetNode.targetElem;\n    var args = {\n      _vm,\n      bodyList,\n      cell,\n      cellFirstElementChild,\n      cellLastElementChild,\n      flag\n    };\n    Object.assign(args, {\n      headStart,\n      headerList,\n      isIndex,\n      startCellNode,\n      targetElem\n    });\n    onCellMousedownGridEl(args);\n  };\n  var updateEventThrot = throttle(updateInterval, false, updateEvent, true);\n  document.onmousemove = updateEventThrot;\n  document.onmouseup = function() {\n    document.onmousemove = oldMousemove;\n    document.onmouseup = oldMouseup;\n  };\n}\nfunction onCellMousedownSelectEditable(args) {\n  var _vm = args._vm, actived = args.actived, cell = args.cell, checked = args.checked, column = args.column, editConfig = args.editConfig;\n  var event = args.event, isLeftBtn = args.isLeftBtn, mouseConfig = args.mouseConfig, params = args.params, row2 = args.row;\n  if (editConfig && (actived.row !== row2 || !(editConfig.mode === \"cell\" && actived.column === column)) && !(isLeftBtn && mouseConfig.checked) && mouseConfig.selected && editConfig.trigger === \"dblclick\" && (!checked.rowNodes || !checked.rowNodes.some(function(list) {\n    return ~list.indexOf(cell);\n  }))) {\n    _vm.handleSelected(params, event);\n  }\n}\nfunction onCellMousedownSelect(_ref184) {\n  var _vm = _ref184._vm, editConfig = _ref184.editConfig, event = _ref184.event, mouseConfig = _ref184.mouseConfig, params = _ref184.params;\n  if (!editConfig && mouseConfig.selected) {\n    _vm.handleSelected(params, event);\n  }\n}\nfunction onCellMousedownIndexColumn(args) {\n  var _vm = args._vm, bodyList = args.bodyList, cell = args.cell, cellLastElementChild = args.cellLastElementChild, event = args.event;\n  var headerList = args.headerList, isIndex = args.isIndex, params = args.params, visibleColumn = args.visibleColumn;\n  if (isIndex) {\n    var firstCell = cell.parentNode.firstElementChild;\n    params.columnIndex++;\n    params.column = visibleColumn[params.columnIndex];\n    params.cell = cell.nextElementSibling;\n    _vm.handleSelected(params, event);\n    _vm.handleChecked(getRowNodes(bodyList, getCellNodeIndex(firstCell.nextElementSibling), getCellNodeIndex(cellLastElementChild)));\n    _vm.handleHeaderChecked([headerList[0].querySelectorAll(\".tiny-grid-header__column:not(.col__index)\")]);\n    _vm.handleIndexChecked(getRowNodes(bodyList, getCellNodeIndex(firstCell), getCellNodeIndex(cell)));\n  }\n}\nfunction onCellMousedownNotIndexColumn(_ref185) {\n  var _vm = _ref185._vm, cell = _ref185.cell, column = _ref185.column, event = _ref185.event, headerList = _ref185.headerList, isIndex = _ref185.isIndex, params = _ref185.params;\n  if (!isIndex) {\n    var firstCell = cell.parentNode.firstElementChild;\n    _vm.handleSelected(params, event);\n    _vm.handleHeaderChecked([[headerList[0].querySelector(\".\" + column.id)]]);\n    _vm.handleIndexChecked([[firstCell]]);\n  }\n}\nfunction handleHeaderCellMousedownEvent(_ref186) {\n  var $el = _ref186.$el, _vm = _ref186._vm, bodyList = _ref186.bodyList, cell = _ref186.cell, headerList = _ref186.headerList, startCell = _ref186.startCell;\n  var oldMousemove = document.onmousemove;\n  var oldMouseup = document.onmouseup;\n  var updateEvent = function updateEvent2(event) {\n    event.preventDefault();\n    var _getEventTargetNode2 = getEventTargetNode(event, $el, \"tiny-grid-header__column\"), flag = _getEventTargetNode2.flag, targetElem = _getEventTargetNode2.targetElem;\n    if (!flag) {\n      var tmp = getEventTargetNode(event, $el, \"tiny-grid-body__column\");\n      flag = tmp.flag;\n      targetElem = tmp.targetElem;\n    }\n    if (flag && !hasClass(targetElem, \"col__index\")) {\n      var colIndex = [].concat(targetElem.parentNode.children).indexOf(targetElem);\n      var lastCell = bodyList[bodyList.length - 1].children[colIndex];\n      var headCell = headerList[0].children[colIndex];\n      _vm.handleHeaderChecked(getRowNodes(headerList, getCellNodeIndex(headCell), getCellNodeIndex(cell)));\n      _vm.handleChecked(getRowNodes(bodyList, getCellNodeIndex(startCell), getCellNodeIndex(lastCell)));\n    }\n  };\n  var updateEventThrot = throttle(80, false, updateEvent, true);\n  addClass($el, \"tiny-grid-cell__checked\");\n  document.onmousemove = updateEventThrot;\n  document.onmouseup = function() {\n    removeClass($el, \"tiny-grid-cell__checked\");\n    document.onmousemove = oldMousemove;\n    document.onmouseup = oldMouseup;\n  };\n}\nvar removeCellClass = function removeCellClass2(bodyRef, clazz) {\n  return arrayEach(bodyRef.$el.querySelectorAll(\".\" + clazz), function(elem) {\n    return removeClass(elem, clazz);\n  });\n};\nvar getCellIndex = function getCellIndex2(_ref187) {\n  var cell = _ref187.cell, bodyList = _ref187.bodyList;\n  var trElem = cell.parentNode;\n  var cIndex = arrayIndexOf(trElem.children, cell);\n  var rIndex = arrayIndexOf(bodyList, trElem);\n  return {\n    rIndex,\n    cIndex\n  };\n};\nvar getModify = function getModify2(_ref188) {\n  var offsetTop = _ref188.offsetTop, offsetLeft = _ref188.offsetLeft, cWidth = _ref188.cWidth, cHeight = _ref188.cHeight;\n  var modifyDomStyle = function modifyDomStyle2(dom, styleOptions) {\n    return dom && Object.assign(dom.style, styleOptions);\n  };\n  return function(top, right, bottom, left) {\n    modifyDomStyle(top, {\n      top: offsetTop + \"px\",\n      left: offsetLeft + \"px\",\n      width: cWidth + \"px\"\n    });\n    modifyDomStyle(right, {\n      top: offsetTop + \"px\",\n      left: offsetLeft + cWidth + \"px\",\n      height: cHeight + \"px\"\n    });\n    modifyDomStyle(bottom, {\n      top: offsetTop + cHeight + \"px\",\n      left: offsetLeft + \"px\",\n      width: cWidth + \"px\"\n    });\n    modifyDomStyle(left, {\n      top: offsetTop + \"px\",\n      left: offsetLeft + \"px\",\n      height: cHeight + \"px\"\n    });\n  };\n};\nvar writeClipboardText = function writeClipboardText2(_ref189) {\n  var $table = _ref189.$table, columns2 = _ref189.columns, rows = _ref189.rows, rowNodes = _ref189.rowNodes;\n  var _$table$keyboardConfi = $table.keyboardConfig, keyboardConfig = _$table$keyboardConfi === void 0 ? {} : _$table$keyboardConfi;\n  var _keyboardConfig$clipb = keyboardConfig.clipboard, clipboard = _keyboardConfig$clipb === void 0 ? {} : _keyboardConfig$clipb;\n  var writeMethod = clipboard.writeMethod, _clipboard$cellSplit = clipboard.cellSplit, cellSplit = _clipboard$cellSplit === void 0 ? \",\" : _clipboard$cellSplit, _clipboard$rowSplit = clipboard.rowSplit, rowSplit = _clipboard$rowSplit === void 0 ? \";\" : _clipboard$rowSplit;\n  if (!clipboard) return;\n  var value;\n  if (typeof writeMethod === \"function\") {\n    value = writeMethod({\n      $table,\n      columns: columns2,\n      rows\n    });\n  } else {\n    var rowValues = [];\n    rowNodes.forEach(function(row2) {\n      var cellValues = [];\n      row2.forEach(function(col) {\n        cellValues.push(col && col.innerText);\n      });\n      rowValues.push(cellValues.join(cellSplit));\n    });\n    value = rowValues.join(rowSplit);\n  }\n  var writeFallback = function writeFallback2() {\n    var input = document.createElement(\"input\");\n    input.value = value;\n    document.body.appendChild(input);\n    input.select();\n    document.execCommand(\"Copy\");\n    document.body.removeChild(input);\n  };\n  if (isSecureContext && navigator.clipboard) {\n    navigator.clipboard.writeText(value).catch(function(reason) {\n      warn(\"ui.grid.error.clipboardWriteError\", reason);\n      writeFallback();\n    });\n  } else {\n    writeFallback();\n  }\n};\nvar Methods$b = {\n  // Tab键移动处理\n  moveTabSelected: function moveTabSelected(args, isLeft, event, edit) {\n    var editConfig = this.editConfig, hasIndexColumn2 = this.hasIndexColumn, tableData = this.tableData, visibleColumn = this.visibleColumn;\n    var params = _extends({}, args);\n    var columnIndex = visibleColumn.indexOf(params.column);\n    var rowIndex = tableData.indexOf(params.row);\n    var _ref190 = {}, targetColumn = _ref190.targetColumn, targetColumnIndex = _ref190.targetColumnIndex, targetRow = _ref190.targetRow, targetRowIndex = _ref190.targetRowIndex;\n    event.preventDefault();\n    var checkColumn = function checkColumn2(column) {\n      return !hasIndexColumn2(column) && (edit ? column.editor : true);\n    };\n    var args1 = {\n      columnIndex,\n      checkColumn,\n      isLeft,\n      tableData,\n      rowIndex,\n      targetColumn\n    };\n    Object.assign(args1, {\n      targetRowIndex,\n      targetColumnIndex,\n      targetRow,\n      visibleColumn\n    });\n    var ret = findLeft(args1);\n    targetColumn = ret.targetColumn;\n    targetColumnIndex = ret.targetColumnIndex;\n    targetRow = ret.targetRow;\n    targetRowIndex = ret.targetRowIndex;\n    args1 = {\n      checkColumn,\n      columnIndex,\n      isLeft,\n      rowIndex,\n      tableData,\n      targetColumn\n    };\n    Object.assign(args1, {\n      targetColumnIndex,\n      targetRow,\n      targetRowIndex,\n      visibleColumn\n    });\n    ret = findRight(args1);\n    targetColumn = ret.targetColumn;\n    targetColumnIndex = ret.targetColumnIndex;\n    targetRow = ret.targetRow;\n    targetRowIndex = ret.targetRowIndex;\n    args1 = {\n      _vm: this,\n      args,\n      edit,\n      editConfig,\n      event,\n      isLeft,\n      params,\n      rowIndex\n    };\n    Object.assign(args1, {\n      targetColumn,\n      targetColumnIndex,\n      targetRow,\n      targetRowIndex\n    });\n    processTarget(args1);\n  },\n  // 当前行方向键移动处理\n  moveCurrentRow: function moveCurrentRow(isUpArrow, isDwArrow, event) {\n    var _this61 = this;\n    var afterFullData = this.afterFullData, currentRow = this.currentRow, treeConfig = this.treeConfig;\n    var targetRow;\n    event.preventDefault();\n    if (treeConfig) {\n      var _findTree2 = findTree$1(afterFullData, function(row2) {\n        return row2 === currentRow;\n      }, treeConfig), curIndex = _findTree2.index, neighbors = _findTree2.items;\n      if (isUpArrow && curIndex > 0) {\n        targetRow = neighbors[curIndex - 1];\n      } else if (isDwArrow && curIndex < neighbors.length - 1) {\n        targetRow = neighbors[curIndex + 1];\n      }\n    } else {\n      var _curIndex = afterFullData.indexOf(currentRow);\n      if (isUpArrow && _curIndex > 0) {\n        targetRow = afterFullData[_curIndex - 1];\n      } else if (isDwArrow && _curIndex < afterFullData.length - 1) {\n        targetRow = afterFullData[_curIndex + 1];\n      }\n    }\n    if (targetRow) {\n      this.scrollToRow(targetRow).then(function() {\n        return _this61.triggerCurrentRowEvent(event, {\n          $table: _this61,\n          row: targetRow\n        });\n      });\n    }\n  },\n  // 可编辑方向键移动处理\n  moveSelected: function moveSelected(_ref191) {\n    var _this62 = this;\n    var args = _ref191.args, isLeftArrow = _ref191.isLeftArrow, isUpArrow = _ref191.isUpArrow, isRightArrow = _ref191.isRightArrow, isDownArrow = _ref191.isDownArrow, event = _ref191.event;\n    var hasIndexColumn2 = this.hasIndexColumn, visibleColumn = this.tableColumn, tableData = this.tableFullData;\n    var params = _extends({}, args);\n    var column = params.column;\n    var columnIndex = visibleColumn.indexOf(column);\n    event.preventDefault();\n    if (isUpArrow && params.rowIndex) {\n      params.row = tableData[--params.rowIndex];\n    } else if (isDownArrow && params.rowIndex < tableData.length - 1) {\n      params.row = tableData[++params.rowIndex];\n    } else if (isLeftArrow && columnIndex) {\n      for (var pos = columnIndex - 1; pos >= 0; pos--) {\n        if (!hasIndexColumn2(visibleColumn[pos])) {\n          params.columnIndex = pos;\n          params.column = visibleColumn[pos];\n          break;\n        }\n      }\n    } else if (isRightArrow) {\n      for (var _pos = columnIndex + 1; _pos < visibleColumn.length; _pos++) {\n        if (!hasIndexColumn2(visibleColumn[_pos])) {\n          params.columnIndex = _pos;\n          params.column = visibleColumn[_pos];\n          break;\n        }\n      }\n    }\n    getCell(this, params).then(function(resCell) {\n      params.cell = resCell;\n      _this62.handleSelected(params, event, true);\n      _this62.scrollToRow(params.row, params.column, false, {\n        isLeftArrow,\n        isRightArrow,\n        from: column\n      });\n    });\n  },\n  // 表头按下事件\n  triggerHeaderCellMousedownEvent: function triggerHeaderCellMousedownEvent(event, params) {\n    var _this63 = this;\n    var $el = this.$el, elemStore = this.elemStore, _this$mouseConfig4 = this.mouseConfig, mouseConfig = _this$mouseConfig4 === void 0 ? {} : _this$mouseConfig4, tableData = this.tableData;\n    var headerList = elemStore[\"main-body-headerList\"].children;\n    var bodyList = elemStore[\"main-body-list\"].children;\n    var cell = params.cell;\n    var column = params.column;\n    var isIndex = column.type === \"index\";\n    var startCell = bodyList[0].querySelector(\".\" + column.id);\n    var button = event.button;\n    var isLeftBtn = button === 0;\n    if (!isLeftBtn || !mouseConfig.checked) {\n      return;\n    }\n    if (isIndex) {\n      this.handleAllChecked(event);\n      this.closeMenu();\n      return;\n    }\n    event.preventDefault();\n    event.stopPropagation();\n    this.clearSelected(event);\n    this.clearHeaderChecked();\n    this.clearIndexChecked();\n    handleHeaderCellMousedownEvent({\n      $el,\n      _vm: this,\n      bodyList,\n      cell,\n      headerList,\n      startCell\n    });\n    this.handleHeaderChecked([[cell]]);\n    if (!bodyList.length) {\n      this.closeMenu();\n      return;\n    }\n    var firstTr = bodyList[0];\n    var lastTr = bodyList[bodyList.length - 1];\n    var firstCell = firstTr.querySelector(\".col__index\");\n    var lastCell = lastTr.querySelector(\".\" + column.id);\n    params.rowIndex = 0;\n    params.row = tableData[0];\n    getCell(this, params).then(function(cellRes) {\n      params.cell = cellRes;\n      _this63.handleSelected(params, event);\n      var rowNodes = getRowNodes(bodyList, getCellNodeIndex(firstCell), getCellNodeIndex(lastTr.querySelector(\".col__index\")));\n      _this63.handleIndexChecked(rowNodes);\n      _this63.handleChecked(getRowNodes(bodyList, getCellNodeIndex(startCell), getCellNodeIndex(lastCell)));\n    });\n    this.closeMenu();\n  },\n  // 单元格按下事件\n  triggerCellMousedownEvent: function triggerCellMousedownEvent(event, params) {\n    var $el = this.$el, editConfig = this.editConfig, editStore = this.editStore, elemStore = this.elemStore, _this$mouseConfig5 = this.mouseConfig, mouseConfig = _this$mouseConfig5 === void 0 ? {} : _this$mouseConfig5, visibleColumn = this.visibleColumn;\n    var actived = editStore.actived, checked = editStore.checked;\n    var _mouseConfig$excludes = mouseConfig.excludes, excludeClo = _mouseConfig$excludes === void 0 ? [] : _mouseConfig$excludes;\n    var button = event.button;\n    var cell = params.cell, column = params.column, row2 = params.row;\n    var isLeftBtn = button === 0;\n    var args;\n    if (excludeClo.includes(column.type || column.property)) {\n      return;\n    }\n    if (editConfig && (actived.row !== row2 || !(editConfig.mode === \"cell\" && actived.column === column)) && isLeftBtn && mouseConfig.checked) {\n      event.preventDefault();\n      event.stopPropagation();\n      this.clearHeaderChecked();\n      this.clearIndexChecked();\n      var isIndex = column.type === \"index\";\n      var startCellNode = getCellNodeIndex(cell);\n      var headerList = elemStore[\"main-body-headerList\"].children;\n      var bodyList = elemStore[\"main-body-list\"].children;\n      var cellFirstElementChild = cell.parentNode.firstElementChild;\n      var cellLastElementChild = cell.parentNode.lastElementChild;\n      var colIndex = Array.from(cell.parentNode.children).indexOf(cell);\n      var headStart = headerList == null ? void 0 : headerList[0].children[colIndex];\n      args = {\n        $el,\n        _vm: this,\n        bodyList,\n        cell,\n        cellFirstElementChild\n      };\n      Object.assign(args, {\n        cellLastElementChild,\n        headStart,\n        headerList,\n        isIndex,\n        startCellNode\n      });\n      handleCellMousedownEvent(args);\n      args = {\n        _vm: this,\n        bodyList,\n        cell,\n        cellLastElementChild\n      };\n      Object.assign(args, {\n        event,\n        headerList,\n        isIndex,\n        params,\n        visibleColumn\n      });\n      onCellMousedownIndexColumn(args);\n      onCellMousedownNotIndexColumn({\n        _vm: this,\n        cell,\n        column,\n        event,\n        headerList,\n        isIndex,\n        params\n      });\n      this.closeFilter();\n      this.closeMenu();\n    }\n    args = {\n      _vm: this,\n      actived,\n      cell,\n      checked,\n      column,\n      editConfig\n    };\n    Object.assign(args, {\n      event,\n      isLeftBtn,\n      mouseConfig,\n      params,\n      row: row2\n    });\n    onCellMousedownSelectEditable(args);\n    onCellMousedownSelect({\n      _vm: this,\n      editConfig,\n      event,\n      mouseConfig,\n      params\n    });\n  },\n  // 清除所选中源状态\n  _clearSelected: function _clearSelected(keep) {\n    var selected = this.editStore.selected, elemStore = this.elemStore;\n    if (!keep) {\n      selected.row = null;\n      selected.column = null;\n    }\n    var bodyElem = elemStore[\"main-body-list\"];\n    var headerElem = elemStore[\"main-body-headerList\"];\n    if (bodyElem) {\n      var elem = bodyElem.querySelector(\".col__selected\");\n      removeClass(elem, \"col__selected\");\n    }\n    if (headerElem) {\n      arrayEach(headerElem.querySelectorAll(\".col__title-selected\"), function(elem2) {\n        return removeClass(elem2, \"col__title-selected\");\n      });\n    }\n    return this.$nextTick();\n  },\n  // 清除所有选中状态\n  _clearChecked: function _clearChecked() {\n    var $refs = this.$refs, editStore = this.editStore, mouseConfig = this.mouseConfig;\n    var checked = editStore.checked;\n    if (!mouseConfig || !mouseConfig.checked) {\n      return this.$nextTick();\n    }\n    Object.assign(checked, {\n      columns: [],\n      rows: [],\n      tColumns: [],\n      tRows: [],\n      rowNodes: []\n    });\n    var tableBody = $refs.tableBody;\n    tableBody.$refs.checkBorders.style.display = \"none\";\n    removeCellClass(tableBody, \"col__checked\");\n    return this.$nextTick();\n  },\n  _getMouseCheckeds: function _getMouseCheckeds() {\n    var _this64 = this;\n    var _this$editStore$check = this.editStore.checked.rowNodes, rowNodes = _this$editStore$check === void 0 ? [] : _this$editStore$check;\n    var _ref192 = {}, _ref192$rows = _ref192.rows, rows = _ref192$rows === void 0 ? [] : _ref192$rows, _ref192$columns = _ref192.columns, columns2 = _ref192$columns === void 0 ? [] : _ref192$columns;\n    var res = {\n      rows,\n      columns: columns2,\n      rowNodes\n    };\n    if (rowNodes && rowNodes.length) {\n      res.rows = rowNodes.map(function(arr) {\n        return _this64.getRowNode(arr[0].parentNode).item;\n      });\n      res.columns = rowNodes[0].map(function(col) {\n        return _this64.getColumnNode(col).item;\n      });\n    }\n    return res;\n  },\n  _getMouseSelecteds: function _getMouseSelecteds() {\n    var _this$editStore$selec = this.editStore.selected, args = _this$editStore$selec.args, column = _this$editStore$selec.column;\n    if (!args || !column) {\n      return null;\n    }\n    return extend(true, {}, args);\n  },\n  // 处理所有选中\n  handleChecked: function handleChecked(rowNodes) {\n    var $refs = this.$refs, mouseConfig = this.mouseConfig;\n    if (!mouseConfig || !mouseConfig.checked) {\n      return;\n    }\n    var _ref193 = {}, cHeight = _ref193.cHeight, cWidth = _ref193.cWidth, offsetLeft = _ref193.offsetLeft, offsetTop = _ref193.offsetTop;\n    cWidth = cHeight = -2;\n    offsetTop = offsetLeft = 0;\n    this.clearChecked();\n    arrayEach(rowNodes, function(rowNode, rowIndex) {\n      arrayEach(rowNode, function(colNode, colIndex) {\n        var firstRow = rowIndex === 0;\n        var firstCol = colIndex === 0;\n        if (firstRow) {\n          if (firstCol) {\n            offsetTop = colNode.offsetTop;\n            offsetLeft = colNode.offsetLeft;\n          }\n          cWidth += colNode.offsetWidth;\n        }\n        if (firstCol) {\n          cHeight += colNode.offsetHeight;\n        }\n        addClass(colNode, \"col__checked\");\n      });\n    });\n    var modify = getModify({\n      offsetTop,\n      offsetLeft,\n      cWidth,\n      cHeight\n    });\n    var tableBody = $refs.tableBody;\n    var _tableBody$$refs = tableBody.$refs, checkBorders = _tableBody$$refs.checkBorders, checkTop = _tableBody$$refs.checkTop, checkRight = _tableBody$$refs.checkRight, checkBottom = _tableBody$$refs.checkBottom, checkLeft = _tableBody$$refs.checkLeft;\n    checkBorders.style.display = \"none\";\n    modify(checkTop, checkRight, checkBottom, checkLeft);\n    checkBorders.style.display = \"block\";\n    this.editStore.checked.rowNodes = rowNodes;\n  },\n  handleAllChecked: function handleAllChecked(event) {\n    var _this65 = this;\n    var elemStore = this.elemStore, _this$mouseConfig6 = this.mouseConfig, mouseConfig = _this$mouseConfig6 === void 0 ? {} : _this$mouseConfig6, tableData = this.tableData, visibleColumn = this.visibleColumn;\n    if (!mouseConfig.checked) {\n      return;\n    }\n    event.preventDefault();\n    var column = find$1(visibleColumn, function(col) {\n      return col.type === \"index\";\n    }) || visibleColumn[0];\n    var selectorColumnId = \".\" + column.id;\n    var headerListElem = elemStore[\"main-body-headerList\"];\n    var headerList = headerListElem == null ? void 0 : headerListElem.children;\n    var cell = headerListElem == null ? void 0 : headerListElem.querySelector(selectorColumnId);\n    var bodyList = elemStore[\"main-body-list\"].children;\n    var firstTrElem = bodyList[0];\n    var firstCell = firstTrElem.querySelector(selectorColumnId);\n    var lastTrElem = bodyList[bodyList.length - 1];\n    var params = {\n      $table: this,\n      rowIndex: 0,\n      row: tableData[0]\n    };\n    params.column = find$1(visibleColumn, function(col) {\n      return col.property;\n    });\n    params.columnIndex = this.getColumnIndex(params.column);\n    getCell(this, params).then(function(resCell) {\n      params.cell = resCell;\n      _this65.handleSelected(params, event, true);\n      _this65.handleHeaderChecked(getRowNodes(headerList, getCellNodeIndex(cell.nextElementSibling), getCellNodeIndex(cell.parentNode.lastElementChild)));\n      _this65.handleIndexChecked(getRowNodes(bodyList, getCellNodeIndex(firstCell), getCellNodeIndex(lastTrElem.querySelector(selectorColumnId))));\n      _this65.handleChecked(getRowNodes(bodyList, getCellNodeIndex(firstCell.nextElementSibling), getCellNodeIndex(lastTrElem.lastElementChild)));\n    });\n  },\n  handleIndexChecked: function handleIndexChecked(rowNodes) {\n    this.clearIndexChecked();\n    arrayEach(rowNodes, function(rowNode) {\n      arrayEach(rowNode, function(colNode) {\n        addClass(colNode, \"col__index-checked\");\n      });\n    });\n    this.editStore.indexs.rowNodes = rowNodes;\n  },\n  _clearIndexChecked: function _clearIndexChecked() {\n    var tbody = this.elemStore[\"main-body-list\"];\n    if (tbody) {\n      var indexCheckeds = tbody.querySelectorAll(\".col__index-checked\");\n      var eachHandler = function eachHandler2(colNode) {\n        return removeClass(colNode, \"col__index-checked\");\n      };\n      arrayEach(indexCheckeds, eachHandler);\n    }\n    Object.assign(this.editStore.indexs, {\n      rowNodes: []\n    });\n    return this.$nextTick();\n  },\n  handleHeaderChecked: function handleHeaderChecked(rowNodes) {\n    this.clearHeaderChecked();\n    arrayEach(rowNodes, function(rowNode) {\n      arrayEach(rowNode, function(colNode) {\n        addClass(colNode, \"col__title-checked\");\n      });\n    });\n    this.editStore.titles.rowNodes = rowNodes;\n  },\n  _clearHeaderChecked: function _clearHeaderChecked() {\n    var headerElem = this.elemStore[\"main-body-headerList\"];\n    if (headerElem) {\n      var eachHandler = function eachHandler2(colNode) {\n        return removeClass(colNode, \"col__title-checked\");\n      };\n      arrayEach(headerElem.querySelectorAll(\".col__title-checked\"), eachHandler);\n    }\n    return this.$nextTick();\n  },\n  // 清空已复制的内容\n  _clearCopyed: function _clearCopyed() {\n    var $refs = this.$refs, editStore = this.editStore, keyboardConfig = this.keyboardConfig;\n    var editStoreCopyed = editStore.copyed;\n    if (!keyboardConfig || !keyboardConfig.isCut) return this.$nextTick();\n    var tableBody = $refs.tableBody;\n    editStoreCopyed.cut = false;\n    editStoreCopyed.rows = [];\n    editStoreCopyed.columns = [];\n    tableBody.$refs.copyBorders.style.display = \"none\";\n    removeCellClass(tableBody, \"col__copyed\");\n    return this.$nextTick();\n  },\n  // 处理复制\n  handleCopyed: function handleCopyed(cut) {\n    var editStore = this.editStore, tableColumn2 = this.tableColumn, tableData = this.tableData;\n    var copyed = editStore.copyed;\n    var rowNodes = editStore.checked.rowNodes;\n    var _ref194 = {}, cHeight = _ref194.cHeight, cWidth = _ref194.cWidth, offsetLeft = _ref194.offsetLeft, offsetTop = _ref194.offsetTop, _ref194$rows = _ref194.rows, rows = _ref194$rows === void 0 ? [] : _ref194$rows, _ref194$columns = _ref194.columns, columns2 = _ref194$columns === void 0 ? [] : _ref194$columns;\n    cWidth = cHeight = -3;\n    offsetTop = offsetLeft = 0;\n    this.clearCopyed();\n    if (!rowNodes) return;\n    if (rowNodes.length) {\n      var firstRows = rowNodes[0];\n      var firstCell = firstRows[0];\n      var firstRowsLength = firstRows.length;\n      var _getCellNodeIndex = getCellNodeIndex(firstCell), rowIndex = _getCellNodeIndex.rowIndex, columnIndex = _getCellNodeIndex.columnIndex;\n      columns2 = tableColumn2.slice(columnIndex, columnIndex + firstRowsLength);\n      rows = tableData.slice(rowIndex, rowIndex + rowNodes.length);\n      writeClipboardText({\n        $table: this,\n        columns: columns2,\n        rows,\n        rowNodes\n      });\n    }\n    arrayEach(rowNodes, function(rowNode, rowIndex2) {\n      arrayEach(rowNode, function(colNode, colIndex) {\n        var isTop = rowIndex2 === 0;\n        var isLeft = colIndex === 0;\n        if (isTop) {\n          if (isLeft) {\n            offsetTop = colNode.offsetTop;\n            offsetLeft = colNode.offsetLeft;\n          }\n          cWidth += colNode.offsetWidth;\n        }\n        if (isLeft) {\n          cHeight += colNode.offsetHeight;\n        }\n        addClass(colNode, \"col__copyed\");\n      });\n    });\n    var modify = getModify({\n      offsetTop,\n      offsetLeft,\n      cWidth,\n      cHeight\n    });\n    var tableBody = this.$refs.tableBody;\n    var _tableBody$$refs2 = tableBody.$refs, copyBorders = _tableBody$$refs2.copyBorders, copyTop = _tableBody$$refs2.copyTop, copyRight = _tableBody$$refs2.copyRight, copyBottom = _tableBody$$refs2.copyBottom, copyLeft = _tableBody$$refs2.copyLeft;\n    modify(copyTop, copyRight, copyBottom, copyLeft);\n    copyBorders.style.display = \"block\";\n    copyed.cut = cut;\n    copyed.columns = columns2;\n    copyed.rows = rows;\n    copyed.rowNodes = rowNodes;\n  },\n  // 处理粘贴\n  handlePaste: function handlePaste() {\n    var editStore = this.editStore, elemStore = this.elemStore, tableData = this.tableData, visibleColumn = this.visibleColumn;\n    var copyed = editStore.copyed, selected = editStore.selected;\n    var columns2 = copyed.columns, cut = copyed.cut, rows = copyed.rows;\n    if (!rows.length || !columns2.length || !selected.row || !selected.column) return;\n    var _selected$args = selected.args, columnIndex = _selected$args.columnIndex, rowIndex = _selected$args.rowIndex;\n    arrayEach(rows, function(row2, rIndex2) {\n      var targetRow = tableData[rowIndex + rIndex2];\n      if (targetRow) {\n        arrayEach(columns2, function(column, cIndex2) {\n          var targetColumn = visibleColumn[columnIndex + cIndex2];\n          targetColumn && setCellValue(targetRow, targetColumn, getCellValue(row2, column));\n          cut && setCellValue(row2, column, null);\n        });\n      }\n    });\n    cut && this.clearCopyed();\n    var cell = selected.args.cell;\n    var bodyList = elemStore[\"main-body-list\"].children;\n    var _getCellIndex = getCellIndex({\n      cell,\n      bodyList\n    }), rIndex = _getCellIndex.rIndex, cIndex = _getCellIndex.cIndex;\n    var maxIndex = bodyList.length - 1;\n    var curIndex = rIndex + rows.length - 1;\n    var targetTrElem = bodyList[curIndex > maxIndex ? maxIndex : curIndex];\n    maxIndex = targetTrElem.children.length - 1;\n    curIndex = cIndex + columns2.length - 1;\n    var targetCell = targetTrElem.children[curIndex > maxIndex ? maxIndex : curIndex];\n    var targetCellNode = getCellNodeIndex(targetCell);\n    var cellNode = getCellNodeIndex(cell);\n    var rowNodes = getRowNodes(bodyList, cellNode, targetCellNode);\n    this.handleChecked(rowNodes);\n  },\n  handleClearMouseChecked: function handleClearMouseChecked(event) {\n    var $grid = this.$grid, $refs = this.$refs, autoClearMouseChecked = this.autoClearMouseChecked, autoClearKeyboardCopy = this.autoClearKeyboardCopy;\n    var tableWrapper = $refs.tableWrapper, tooltip = $refs.tooltip, validTip = $refs.validTip;\n    var equalOrContain = function equalOrContain2(elm, target) {\n      return elm && (elm === target || elm.contains(target));\n    };\n    var actualTarget = getActualTarget(event);\n    if (!equalOrContain($grid.$el, actualTarget) && !equalOrContain(tableWrapper, actualTarget) && !equalOrContain(tooltip && tooltip.state.popperElm, actualTarget) && !equalOrContain(validTip && validTip.state.popperElm, actualTarget)) {\n      if (autoClearMouseChecked) {\n        this.clearChecked();\n        this.clearSelected();\n      }\n      if (autoClearKeyboardCopy) {\n        this.clearCopyed();\n      }\n    }\n  }\n};\nvar Keyboard = {\n  install: function install3(Table2) {\n    Grid$1._keyboard = 1;\n    Object.assign(Table2.methods, Methods$b);\n  }\n};\nfunction adjustParams(rows, cb, vaildDatas) {\n  if (rows) {\n    if (isFunction(rows)) {\n      cb = rows;\n    } else {\n      vaildDatas = isArray(rows) ? rows : [rows];\n    }\n  }\n  return {\n    cb,\n    vaildDatas\n  };\n}\nvar columnHandler = function columnHandler2(_ref195) {\n  var _vm = _ref195._vm, colValidPromiseArr = _ref195.colValidPromiseArr, editRules = _ref195.editRules, isAll = _ref195.isAll, row2 = _ref195.row, validRest = _ref195.validRest;\n  return function(column, columnIndex) {\n    if (has(editRules, column.property)) {\n      colValidPromiseArr.push(new Promise(function(resolve, reject) {\n        _vm.validCellRules(\"all\", row2, column).then(resolve).catch(function(_ref196) {\n          var rule = _ref196.rule, rules = _ref196.rules;\n          var rowIndex = _vm.getRowIndex(row2);\n          var rest = {\n            rule,\n            rules,\n            rowIndex,\n            row: row2,\n            columnIndex,\n            column,\n            $table: _vm\n          };\n          if (isAll) {\n            if (!validRest[column.property]) {\n              validRest[column.property] = [];\n            }\n            validRest[column.property].push(rest);\n            resolve();\n          }\n          reject(rest);\n        });\n      }));\n    }\n  };\n};\nfunction validTree(_ref197) {\n  var treeConfig = _ref197.treeConfig, handleVaild = _ref197.handleVaild, hasTreeExpand2 = _ref197.hasTreeExpand, vaildDatas = _ref197.vaildDatas, treeOpts = _ref197.treeOpts;\n  if (treeConfig.validHidden === false) {\n    var _recurValid = function recurValid(row2) {\n      var children = row2[treeConfig.children || \"children\"];\n      handleVaild(row2);\n      if (hasTreeExpand2(row2) && children && children.length) {\n        children.forEach(_recurValid);\n      }\n    };\n    vaildDatas.forEach(_recurValid);\n  } else {\n    eachTree(vaildDatas, handleVaild, treeOpts);\n  }\n}\nvar realValid = function realValid2(_ref198) {\n  var _vm = _ref198._vm, editRules = _ref198.editRules, isAll = _ref198.isAll, validRest = _ref198.validRest, treeConfig = _ref198.treeConfig, hasTreeExpand2 = _ref198.hasTreeExpand, vaildDatas = _ref198.vaildDatas, treeOpts = _ref198.treeOpts;\n  var rowValids = [];\n  var columns2 = _vm.getColumns();\n  var handleVaild = function handleVaild2(row2) {\n    var colValidPromiseArr = [];\n    columns2.forEach(columnHandler({\n      _vm,\n      colValidPromiseArr,\n      editRules,\n      isAll,\n      row: row2,\n      validRest\n    }));\n    rowValids.push(Promise.all(colValidPromiseArr));\n  };\n  if (treeConfig) {\n    validTree({\n      treeConfig,\n      handleVaild,\n      hasTreeExpand: hasTreeExpand2,\n      vaildDatas,\n      treeOpts\n    });\n  } else {\n    vaildDatas.forEach(handleVaild);\n  }\n  return rowValids;\n};\nvar Rule = /* @__PURE__ */ (function() {\n  function Rule2(rule) {\n    Object.assign(this, {\n      $options: rule,\n      max: rule.min,\n      maxWidth: rule.maxWidth,\n      min: rule.min,\n      pattern: rule.pattern,\n      required: rule.required,\n      trigger: rule.trigger,\n      type: rule.type,\n      validator: rule.validator\n    });\n  }\n  return _createClass(Rule2, [{\n    key: \"message\",\n    get: function get2() {\n      return getFuncText(this.$options.message);\n    }\n  }]);\n})();\nvar onRejected = function onRejected2(opt, _this) {\n  var isAll = opt.isAll, validRest = opt.validRest, cb = opt.cb, afterFullData = opt.afterFullData, treeConfig = opt.treeConfig;\n  return function(params) {\n    var _ref199;\n    var args = isAll ? validRest : (_ref199 = {}, _ref199[params.column.property] = params, _ref199);\n    var funcFinish = function funcFinish2(args2, reject, resolve) {\n      return function() {\n        opt.status = false;\n        cb && cb(opt.status, args2);\n        cb ? resolve() : reject(args2);\n      };\n    };\n    var funcPosAndFinish = function funcPosAndFinish2(params2, finish) {\n      return /* @__PURE__ */ _asyncToGenerator(/* @__PURE__ */ _regenerator().m(function _callee2() {\n        return _regenerator().w(function(_context2) {\n          while (1) switch (_context2.n) {\n            case 0:\n              if (!_this.scrollXLoad) {\n                _context2.n = 1;\n                break;\n              }\n              _context2.n = 1;\n              return _this.scrollToColumn(params2.column, true);\n            case 1:\n              return _context2.a(2, getCell(_this, params2).then(function(activeCell) {\n                params2.cell = activeCell;\n                _this.handleValidError(params2);\n                finish();\n              }));\n          }\n        }, _callee2);\n      }));\n    };\n    var getLocatRow = function getLocatRow2(params2) {\n      var row2 = params2.row;\n      var rowIndex = afterFullData.indexOf(row2);\n      return rowIndex > 0 ? afterFullData[rowIndex - 1] : row2;\n    };\n    return new Promise(function(resolve, reject) {\n      var finish = funcFinish(args, reject, resolve);\n      var posAndFinish = funcPosAndFinish(params, finish);\n      var locatRow = getLocatRow(params);\n      var isAutoPosFalse = _this.validOpts.autoPos === false;\n      isAutoPosFalse && finish();\n      !isAutoPosFalse && treeConfig && _this.scrollToTreeRow(locatRow).then(posAndFinish);\n      !isAutoPosFalse && !treeConfig && _this.scrollToRow(locatRow, params.column, true).then(posAndFinish);\n    });\n  };\n};\nvar Methods$a = {\n  // 对表格数据进行校验\n  _validate: function _validate(rows, cb) {\n    return this.beginValidate(rows, cb);\n  },\n  // 与validate一致行为，区别就是会校验所有并返回所有不通过的列\n  _fullValidate: function _fullValidate(rows, cb) {\n    return this.beginValidate(rows, cb, true);\n  },\n  // 聚焦到校验通过的单元格并弹出校验错误提示\n  handleValidError: function handleValidError(params) {\n    var _this66 = this;\n    var event = {\n      type: \"valid-error\",\n      trigger: \"call\"\n    };\n    this.handleActived(params, event).then(function() {\n      return _this66.showValidTooltip(params);\n    });\n  },\n  validatePromise: function validatePromise(row2, column, columnIndex, isAll, validRest) {\n    var _this67 = this;\n    function onrejected(_ref201) {\n      var _vm = _ref201._vm, reject = _ref201.reject, resolve = _ref201.resolve;\n      return function(_ref202) {\n        var rule = _ref202.rule, rules = _ref202.rules;\n        var rest = {\n          $table: _vm,\n          column,\n          columnIndex,\n          row: row2,\n          rule,\n          rules\n        };\n        rest.rowIndex = _vm.getRowIndex(row2);\n        if (!isAll) {\n          return reject(rest);\n        }\n        validRest[column.property] = validRest[column.property] || [];\n        validRest[column.property].push(rest);\n        return resolve();\n      };\n    }\n    return new Promise(function(resolve, reject) {\n      _this67.validCellRules(\"all\", row2, column).then(resolve).catch(onrejected({\n        _vm: _this67,\n        reject,\n        resolve\n      }));\n    });\n  },\n  /**\n   * 对表格数据进行校验\n   * 如果传 row 指定行记录，则只验证传入的行\n   * 如果传 rows 为多行记录，则只验证传入的行\n   * 如果只传 callback 否则默认验证整个表格数据\n   * isAll: 是否全量校验，如果为true会校验所有并返回所有不通过的列\n   * 返回 Promise 对象，或者使用回调方式\n   */\n  beginValidate: function beginValidate(rows, callback, isAll) {\n    var afterFullData = this.afterFullData, editRules = this.editRules, hasTreeExpand2 = this.hasTreeExpand, treeConfig = this.treeConfig, treeOpts = this.treeOpts;\n    var _ref203 = {}, _ref203$status = _ref203.status, status = _ref203$status === void 0 ? true : _ref203$status, _ref203$validRest = _ref203.validRest, validRest = _ref203$validRest === void 0 ? {} : _ref203$validRest;\n    var _adjustParams = adjustParams(rows, callback, afterFullData), vaildDatas = _adjustParams.vaildDatas, cb = _adjustParams.cb;\n    var opt = {\n      isAll,\n      validRest,\n      cb,\n      afterFullData,\n      treeConfig,\n      status\n    };\n    this.lastCallTime = Date.now();\n    this.clearValidate();\n    if (!editRules) {\n      if (cb) {\n        cb(opt.status);\n      }\n      return Promise.resolve(opt.status);\n    }\n    var validParams = {\n      _vm: this,\n      editRules,\n      isAll,\n      validRest,\n      treeConfig,\n      hasTreeExpand: hasTreeExpand2,\n      vaildDatas,\n      treeOpts\n    };\n    var rowValids = realValid(validParams);\n    var onFulfilled = function onFulfilled2() {\n      var ruleKeys = Object.keys(validRest);\n      if (ruleKeys.length) {\n        return Promise.reject(validRest[ruleKeys[0]][0]);\n      }\n      cb && cb(opt.status);\n    };\n    return Promise.all(rowValids).then(onFulfilled).catch(onRejected(opt, this));\n  },\n  hasCellRules: function hasCellRules(type, row2, _ref204) {\n    var property = _ref204.property;\n    if (!property || !this.editRules) {\n      return false;\n    }\n    var rules = get(this.editRules, property);\n    var handler6 = function handler7(rule) {\n      return type === \"all\" || !rule.trigger || type === rule.trigger;\n    };\n    rules = !Array.isArray(rules) && (isObject$1(rules) || isFunction(rules)) ? [rules] : rules;\n    return rules && find$1(rules, handler6);\n  },\n  /**\n   * 校验数据：\n   * 按表格行顺序、列顺序依次校验（同步或异步）；\n   * 根据校验规则的索引顺序依次校验，如果是异步则会等待校验完成才会继续校验下一列；\n   * 如果校验失败，则触发回调或者Promise，结果返回一个Boolean值；\n   * 如果是传回调方式这返回一个Boolean值和校验不通过列的错误消息；\n   *\n   * rule 配置：\n   *  required为Boolean表示是否必填；\n   *  max为Number表示最大长度；\n   *  min为Number表示最小长度；\n   *  validator为Function(rule, value, callback, {rules, row, column, rowIndex, columnIndex})进行自定义校验；\n   *  trigger为blur|change表示触发方式（默认为空就行，除非特殊场景）；\n   *  @param {'change' | 'all'} type 校验单元格的触发方式\n   *  @param { IRow }  row 表格的行数据\n   *  @param { IColumnConfig }  column 表格的行数据\n   *  @param { any }  defaultValue 需要校验的默认值\n   */\n  validCellRules: function validCellRules(type, row2, column, defaultValue) {\n    var _this68 = this;\n    var editRules = this.editRules, rowId = this.rowId;\n    var property = column.property;\n    var _ref205 = {}, _ref205$descriptor = _ref205.descriptor, descriptor = _ref205$descriptor === void 0 ? {} : _ref205$descriptor, _ref205$model = _ref205.model, model = _ref205$model === void 0 ? {} : _ref205$model;\n    if (property && editRules) {\n      var rules = get(editRules, property);\n      var cellValue = isUndefined(defaultValue) ? get(row2, property) : defaultValue;\n      if (Array.isArray(rules)) {\n        rules.forEach(function(rule, index2) {\n          model[property + index2] = cellValue;\n          descriptor[property + index2] = rule;\n        });\n      } else {\n        model[property] = cellValue;\n        descriptor[property] = rules;\n      }\n    }\n    var _descriptor = extend(true, {}, descriptor);\n    var validator = new Validator$1(_descriptor, t);\n    var executor = function executor2(resolve, reject) {\n      var validArgs = {\n        firstFields: true,\n        first: true,\n        custom: {\n          row: row2,\n          column\n        }\n      };\n      var onRejected3 = function onRejected32(_ref206) {\n        var fields = _ref206.fields;\n        var cellErrors = Object.keys(fields).map(function(prop) {\n          var rules2 = _descriptor[prop];\n          _descriptor[prop] = !rules2.message ? Object.assign(rules2, {\n            message: fields[prop][0].message\n          }) : rules2;\n          return new Rule(_descriptor[prop]);\n        });\n        reject({\n          rules: cellErrors,\n          rule: cellErrors[0]\n        });\n      };\n      validator.validate(model, validArgs).then(resolve).catch(onRejected3);\n    };\n    var onFulfilled = function onFulfilled2() {\n      _this68.validatedMap[column.id + \"-\" + row2[rowId]] = false;\n      return Promise.resolve();\n    };\n    var onRejected22 = function onRejected23(errors) {\n      _this68.validatedMap[column.id + \"-\" + row2[rowId]] = true;\n      return Promise.reject(errors);\n    };\n    return new Promise(executor).then(onFulfilled).catch(onRejected22);\n  },\n  _clearValidate: function _clearValidate() {\n    Object.assign(this.validStore, {\n      column: null,\n      content: \"\",\n      isArrow: false,\n      row: null,\n      rule: null,\n      visible: false\n    });\n    this.clostValidTooltip(void 0);\n    return this.$nextTick();\n  },\n  clearValidateMap: function clearValidateMap() {\n    if (this.validatedMap) {\n      for (var key in this.validatedMap) {\n        this.validatedMap[key] = false;\n      }\n    }\n  },\n  // 触发校验\n  triggerValidate: function triggerValidate(type) {\n    var _this69 = this;\n    var editConfig = this.editConfig, editRules = this.editRules, editStore = this.editStore, validStore = this.validStore;\n    var actived = editStore.actived;\n    if (!actived.row || !editRules) {\n      return Promise.resolve();\n    }\n    var _actived$args = actived.args, cell = _actived$args.cell, column = _actived$args.column, row2 = _actived$args.row;\n    if (!this.hasCellRules(type, row2, column)) {\n      return Promise.resolve();\n    }\n    var onfulfilled = function onfulfilled2() {\n      editConfig.mode === \"row\" && validStore.visible && validStore.row === row2 && validStore.column === column && _this69.clearValidate();\n    };\n    var onrejected = function onrejected2(_ref207) {\n      var rule = _ref207.rule;\n      if (rule.trigger && type !== rule.trigger) {\n        return Promise.resolve();\n      }\n      var rest = {\n        cell,\n        column,\n        row: row2,\n        rule\n      };\n      _this69.showValidTooltip(rest);\n      return Promise.reject(rest);\n    };\n    return this.validCellRules(type, row2, column).then(onfulfilled).catch(onrejected);\n  },\n  // 弹出校验错误提示\n  showValidTooltip: function showValidTooltip(params) {\n    var _this70 = this;\n    var $refs = this.$refs, height2 = this.height, tableData = this.tableData, validOpts2 = this.validOpts;\n    var cell = params.cell, column = params.column, row2 = params.row, rule = params.rule;\n    var content = rule.message;\n    var validTip = $refs.validTip;\n    var isMessageTooltip = validOpts2.isMessageTooltip, isMessageDefault = validOpts2.isMessageDefault, isMessageInline = validOpts2.isMessageInline;\n    var showMsg = isMessageTooltip || isMessageDefault && !height2 && tableData.length < 2;\n    this.$nextTick(function() {\n      Object.assign(_this70.validStore, {\n        row: row2,\n        column,\n        rule,\n        content,\n        visible: true\n      });\n      if (validTip && showMsg) {\n        _this70.clostValidTooltip();\n        _this70.validTipContent = content;\n        validTip.state.referenceElm = cell;\n        validTip.$refs.popper && (validTip.$refs.popper.style.display = \"none\");\n        validTip.doDestroy();\n        validTip.setExpectedState(true);\n        _this70.activateTooltipValid(validTip);\n      } else if (isMessageInline) {\n        _this70.$nextTick(function() {\n          return _this70.recalculate();\n        });\n      }\n      emitEvent(_this70, \"valid-error\", [params]);\n    });\n  },\n  // 关闭 validTip\n  clostValidTooltip: function clostValidTooltip() {\n    var validTip = this.$refs.validTip;\n    if (validTip) {\n      validTip.setExpectedState(false);\n      validTip.handleClosePopper();\n    }\n    return this.$nextTick();\n  }\n};\nvar Validator = {\n  install: function install4(Table2) {\n    Grid$1._valid = 1;\n    Object.assign(Table2.methods, Methods$a);\n  }\n};\nvar Methods$9 = {\n  bindResize: function bindResize() {\n    var _this71 = this;\n    var parentElem = this.getParentElem();\n    if ((parentElem == null ? void 0 : parentElem.nodeType) === Node.ELEMENT_NODE) {\n      (this.$resize = new Resize$1(function() {\n        _this71.updateParentHeight();\n        _this71.recalculate();\n      }, GlobalConfig$1.resizeInterval)).observe(parentElem);\n    }\n  },\n  unbindResize: function unbindResize() {\n    var _this$$resize;\n    (_this$$resize = this.$resize) == null ? void 0 : _this$$resize.disconnect();\n  }\n};\nvar Resize = {\n  install: function install5(Table2) {\n    Grid$1._resize = 1;\n    Object.assign(Table2.methods, Methods$9);\n  }\n};\nvar Methods$8 = {\n  /**\n   * 初始化fetch-data配置项\n   * @returns {object}\n   */\n  initFetchOption: function initFetchOption() {\n    var _this$fetchData = this.fetchData, fetchData = _this$fetchData === void 0 ? {} : _this$fetchData, _this$dataset = this.dataset, dataset = _this$dataset === void 0 ? {} : _this$dataset;\n    if (fetchData.api || dataset.source || dataset.value || dataset.api) {\n      var _ref208 = fetchData || dataset.source || dataset.api || {}, loading = _ref208.loading, fields = _ref208.fields, api = _ref208.api, reloadConfig = _ref208.reloadConfig;\n      var isReloadFilter = false;\n      var isReloadScroll = false;\n      if (reloadConfig) {\n        isReloadFilter = Boolean(reloadConfig.filter);\n        isReloadScroll = Boolean(reloadConfig.scroll);\n      }\n      return {\n        api,\n        dataset,\n        fields,\n        loading,\n        isReloadFilter,\n        isReloadScroll\n      };\n    }\n  },\n  /* 第二个参数sortArg参数可以移除，fetchData.args可以传递更加灵活的参数\n     但为避免破坏性变更，暂保留\n  */\n  handleFetch: function handleFetch(code, sortArg) {\n    var _this72 = this;\n    var pager = this.pager, sortData = this.sortData, filterData = this.filterData, pagerConfig = this.pagerConfig, fetchOption = this.fetchOption, fetchData = this.fetchData, dataset = this.dataset;\n    var _fetchData$reloadConf = fetchData.reloadConfig, reloadConfig = _fetchData$reloadConf === void 0 ? {} : _fetchData$reloadConf;\n    var _reloadConfig$scroll = reloadConfig.scroll, scroll = _reloadConfig$scroll === void 0 ? false : _reloadConfig$scroll;\n    if (this.isInitialLoading) {\n      this.isInitialLoading = false;\n    } else {\n      this.columnAnchor && this.clearActiveAnchor();\n    }\n    if (code !== \"prefetch\") {\n      this.clearRadioRow();\n      !scroll && this.resetScrollTop();\n    }\n    if (!fetchOption) {\n      error(\"ui.grid.error.notQuery\");\n      return this.$nextTick();\n    }\n    var _ref209 = fetchData || dataset.source || dataset.api || {}, args = _ref209.args, loading = _ref209.loading;\n    var field = sortData.field, order = sortData.order, prop = sortData.prop, property = sortData.property;\n    var sortByData = {\n      field,\n      order,\n      prop,\n      property\n    };\n    var params = _extends({\n      $grid: this,\n      sort: sortData,\n      sortBy: sortByData,\n      filters: filterData\n    }, args);\n    var search;\n    var _fetchOption$isReload3 = fetchOption.isReloadFilter, isReloadFilter = _fetchOption$isReload3 === void 0 ? false : _fetchOption$isReload3;\n    this.tableLoading = loading;\n    if (pagerConfig) {\n      params.page = pagerConfig;\n    }\n    if (code === \"reload\") {\n      if (pager || args.page) {\n        pagerConfig.currentPage = 1;\n      }\n      this.sortData = params.sort = {};\n      if (!isReloadFilter) {\n        params.filters = [];\n        this.filterData = params.filters;\n      }\n      this.pendingRecords = [];\n      this.clearAll();\n    }\n    if (sortArg && sortArg.length > 0) {\n      params.sortBy = sortArg;\n    }\n    if (fetchData && fetchData.api) {\n      search = fetchData.api(params);\n    } else {\n      search = getDataset({\n        dataset,\n        service: this.$service\n      }, params);\n    }\n    return search.then(this.loadFetchData).catch(function(error2) {\n      _this72.tableLoading = false;\n      throw error2;\n    });\n  },\n  clearActiveAnchor: function clearActiveAnchor() {\n    var columnAnchor = this.columnAnchor, _this$columnAnchorPar = this.columnAnchorParams, columnAnchorParams = _this$columnAnchorPar === void 0 ? {} : _this$columnAnchorPar;\n    var _columnAnchorParams$a = columnAnchorParams.anchors, anchors = _columnAnchorParams$a === void 0 ? [] : _columnAnchorParams$a;\n    if (!columnAnchor || anchors.length <= 0) return;\n    anchors.forEach(function(anchor) {\n      return anchor.active = false;\n    });\n  },\n  loadFetchData: function loadFetchData(rest) {\n    if (!rest) {\n      this.tableData = [];\n      this.tableLoading = false;\n      return;\n    }\n    var _this$fetchOption$fie = this.fetchOption.fields, fields = _this$fetchOption$fie === void 0 ? {} : _this$fetchOption$fie, pagerConfig = this.pagerConfig, pagerSlot = this.pagerSlot;\n    if (pagerConfig && !Array.isArray(rest)) {\n      var _rest$result;\n      var total = getObj(rest, fields.total || \"page.total\") || (rest == null ? void 0 : (_rest$result = rest.result) == null ? void 0 : _rest$result.length) || 0;\n      var data7 = getObj(rest, fields.result || fields.data || \"result\") || [];\n      this.tableData = data7;\n      pagerConfig.total = total;\n      var setTotal = pagerSlot && pagerSlot.componentInstance.setTotal;\n      setTotal && setTotal(total);\n    } else {\n      this.tableData = (fields.list ? getObj(rest, fields.list) : rest) || [];\n    }\n    this.tableLoading = false;\n  }\n};\nvar FetchData = {\n  host: \"grid\",\n  install: function install6(host) {\n    Object.assign(host.methods, Methods$8);\n  }\n};\nvar Methods$7 = {\n  // 初始化表格分页配置\n  initPagerConfig: function initPagerConfig() {\n    var $slots = this.$slots, fetchOption = this.fetchOption, _this$scrollLoad = this.scrollLoad, scrollLoad = _this$scrollLoad === void 0 ? {} : _this$scrollLoad;\n    var pagerProps = {};\n    if (fetchOption) {\n      var pagerSlot = $slots.pager && $slots.pager[0];\n      if (pagerSlot) {\n        var componentOptions = pagerSlot.componentOptions, children = pagerSlot.children;\n        if (componentOptions && !children) {\n          this.pagerSlot = pagerSlot;\n          pagerProps = componentOptions.propsData;\n        }\n      } else if (this.pager) {\n        pagerProps = this.pager.attrs;\n      }\n      if (this.pager || $slots.pager || this.scrollLoad) {\n        return Object.assign(this.tablePage, {\n          pageSize: scrollLoad.pageSize\n        }, pagerProps);\n      }\n      return fetchOption.args && fetchOption.args.page;\n    }\n  },\n  // 表格内置分页渲染器\n  renderPager: function renderPager(_ref210) {\n    var $slots = _ref210.$slots, _vm = _ref210._vm, loading = _ref210.loading, pager = _ref210.pager, pagerConfig = _ref210.pagerConfig, tableLoading = _ref210.tableLoading, vSize3 = _ref210.vSize;\n    var res = null;\n    var fetchData = _vm.fetchData;\n    if ($slots.pager) {\n      res = $slots.pager();\n    } else if (pager) {\n      pager.component = pager.component || (fetchData && fetchData.api ? Pager$1 : null);\n      res = h(hooks.toRaw(pager.component), {\n        props: _extends({\n          // tiny-grid 的 size 为 small/mini 时，pager 传 mini；为 medium 时，pager 传空字符串\n          size: vSize3 === \"medium\" ? \"\" : [\"small\", \"mini\"].includes(vSize3) ? \"mini\" : \"\",\n          // 兼容 grid 的 size 传递\n          loading: loading || tableLoading,\n          isBeforePageChange: _vm.isBeforePageChange || _vm.showSaveMsg,\n          accurateJumper: _vm.autoLoad\n        }, pagerConfig),\n        on: {\n          \"size-change\": _vm.pageSizeChange,\n          \"current-change\": _vm.pageCurrentChange,\n          \"before-page-change\": _vm.beforePageChangeHandler\n        },\n        ref: \"pager\"\n      });\n    }\n    return res;\n  },\n  pageChangeEvent: function pageChangeEvent(params) {\n    var _this73 = this;\n    this.tablePageLoading = true;\n    if (!this.tasks.updatePage) {\n      this.tasks.updatePage = debounce(200, function() {\n        var eventParams = _extends({\n          $grid: _this73\n        }, params);\n        var toolbarVm = _this73.getVm(\"toolbar\");\n        emitEvent(_this73, \"page-change\", eventParams);\n        _this73.emitter.emit(\"page-change\", eventParams);\n        _this73.handleFetch(\"query\").then(function() {\n          _this73.realTimeTablePage = _extends({}, _this73.tablePage);\n          _this73.tablePageLoading = false;\n        });\n        if (toolbarVm) {\n          toolbarVm.orderSetting();\n        }\n      });\n    }\n    this.tasks.updatePage();\n  },\n  // size为页大小，load为false则触发change事件与查询，在个性化初始化时根据autoload控制是否加载数据\n  pageSizeChange: function pageSizeChange(size, load) {\n    this.tablePage.pageSize = size;\n    this.tablePage.currentPage = 1;\n    load || this.pageChangeEvent(this.tablePage);\n  },\n  pageCurrentChange: function pageCurrentChange(current) {\n    if (this.tablePage.currentPage !== current) {\n      this.tablePage.currentPage = current;\n      this.pageChangeEvent(this.tablePage);\n    }\n  },\n  beforePageChangeHandler: function beforePageChangeHandler(params) {\n    var _this74 = this;\n    if (!this.showSaveMsg) {\n      var eventParams = extend(false, {\n        $grid: this\n      }, params);\n      emitEvent(this, \"before-page-change\", eventParams);\n      this.emitter.emit(\"before-page-change\", eventParams);\n      return;\n    }\n    var callback = params.callback, rollback = params.rollback;\n    var _this$getRecordset = this.getRecordset(), insertRecords = _this$getRecordset.insertRecords, removeRecords = _this$getRecordset.removeRecords, updateRecords = _this$getRecordset.updateRecords;\n    if (insertRecords.length || removeRecords.length || updateRecords.length) {\n      var next = function next2(res) {\n        if (res === \"confirm\") {\n          rollback && rollback();\n          emitEvent(_this74, \"cancel-page-change\", _this74);\n          _this74.emitter.emit(\"cancel-page-change\", _this74);\n        } else {\n          callback && callback();\n        }\n      };\n      Modal.confirm(GlobalConfig$1.i18n(\"ui.grid.isSaveMsg\")).then(next);\n    } else {\n      callback && callback();\n    }\n  }\n};\nvar Pager = {\n  host: \"grid\",\n  install: function install7(host) {\n    Object.assign(host.methods, Methods$7);\n  }\n};\nfunction setBodyRecords(_ref211) {\n  var body = _ref211.body, insertRecords = _ref211.insertRecords, pendingRecords = _ref211.pendingRecords;\n  if (insertRecords.length) {\n    body.pendingRecords = pendingRecords.filter(function(row2) {\n      return !insertRecords.includes(row2);\n    });\n  }\n  if (pendingRecords.length) {\n    body.insertRecords = insertRecords.filter(function(row2) {\n      return !pendingRecords.includes(row2);\n    });\n  }\n}\nfunction canInvokeSaveDataApi(body, removeRecords, updateRecords) {\n  return body.insertRecords.length || removeRecords.length || updateRecords.length || body.pendingRecords.length;\n}\nfunction doRemoveOrShowMsg(_ref212) {\n  var _vm = _ref212._vm, canInvoke = _ref212.canInvoke, code = _ref212.code, isMsg2 = _ref212.isMsg, pendingRecords = _ref212.pendingRecords, resolve = _ref212.resolve, valid = _ref212.valid;\n  if (valid && !canInvoke) {\n    if (isMsg2) {\n      if (pendingRecords.length) {\n        _vm.remove(pendingRecords);\n      } else {\n        Modal.message({\n          id: code,\n          message: GlobalConfig$1.i18n(\"ui.grid.dataUnchanged\"),\n          status: \"info\"\n        });\n      }\n    }\n    resolve();\n  }\n}\nfunction invokeSaveDataApi(_ref213) {\n  var _vm = _ref213._vm, args = _ref213.args, body = _ref213.body, code = _ref213.code, removeRecords = _ref213.removeRecords, resolve = _ref213.resolve, saveData = _ref213.saveData, updateRecords = _ref213.updateRecords, valid = _ref213.valid;\n  var canInvoke = false;\n  if (valid) {\n    canInvoke = canInvokeSaveDataApi(body, removeRecords, updateRecords);\n  }\n  if (valid && canInvoke) {\n    _vm.tableLoading = true;\n    resolve(saveData.api.apply(_vm, [{\n      $grid: _vm,\n      changeRecords: body\n    }].concat(args)).then(function() {\n      Modal.message({\n        id: code,\n        message: GlobalConfig$1.i18n(\"ui.grid.saveSuccess\"),\n        status: \"success\"\n      });\n      _vm.tableLoading = false;\n    }).catch(function() {\n      _vm.tableLoading = false;\n    }).then(function() {\n      return _vm.commitProxy(\"reload\");\n    }));\n  }\n  return canInvoke;\n}\nvar Methods$6 = {\n  // 表格工具栏渲染器\n  getRenderedToolbar: function getRenderedToolbar(_ref214) {\n    var $slots = _ref214.$slots, _vm = _ref214._vm, loading = _ref214.loading, tableLoading = _ref214.tableLoading, toolbar = _ref214.toolbar;\n    return _vm.renderedToolbar = (function() {\n      var res = null;\n      if ($slots.toolbar) {\n        res = $slots.toolbar();\n      } else if (toolbar) {\n        res = h(hooks.toRaw(toolbar.component), {\n          ref: \"toolbar\",\n          props: _extends({\n            loading: loading || tableLoading\n          }, toolbar),\n          class: _vm.viewCls(\"toolbar\"),\n          scopedSlots: toolbar.slots || {}\n        });\n      }\n      return res;\n    })();\n  },\n  handleSave: function handleSave(code, args) {\n    var _this75 = this;\n    var saveData = this.saveData, isMsg2 = this.isMsg;\n    if (!saveData) {\n      error(\"ui.grid.error.notSave\");\n      return;\n    }\n    var body = extend(true, {\n      pendingRecords: this.pendingRecords\n    }, this.getRecordset());\n    var insertRecords = body.insertRecords, removeRecords = body.removeRecords, updateRecords = body.updateRecords, pendingRecords = body.pendingRecords;\n    var validRows = insertRecords.concat(updateRecords);\n    var getCallback = function getCallback2(resolve) {\n      return function(valid) {\n        if (!valid) {\n          resolve(valid);\n          return;\n        }\n        var canInvoke = invokeSaveDataApi({\n          _vm: _this75,\n          args,\n          body,\n          code,\n          removeRecords,\n          resolve,\n          saveData,\n          updateRecords,\n          valid\n        });\n        doRemoveOrShowMsg({\n          _vm: _this75,\n          canInvoke,\n          code,\n          isMsg: isMsg2,\n          pendingRecords,\n          resolve,\n          valid\n        });\n      };\n    };\n    setBodyRecords({\n      body,\n      insertRecords,\n      pendingRecords\n    });\n    return new Promise(function(resolve) {\n      _this75.validate(validRows, getCallback(resolve));\n    });\n  },\n  handleDelete: function handleDelete(code, args) {\n    var _this76 = this;\n    var deleteData = this.deleteData, isMsg2 = this.isMsg;\n    if (!deleteData) {\n      error(\"ui.grid.error.notDelete\");\n      return;\n    }\n    var selecteds = this.getSelectRecords(true);\n    var afterRemove = function afterRemove2() {\n      var removeds = _this76.getRemoveRecords();\n      if (!removeds.length && isMsg2 && !selecteds.length) {\n        Modal.message({\n          id: code,\n          message: GlobalConfig$1.i18n(\"ui.grid.selectOneRecord\"),\n          status: \"warning\"\n        });\n      }\n      if (removeds.length) {\n        var apiArgs = [{\n          $grid: _this76,\n          changeRecords: {\n            removeRecords: removeds\n          }\n        }].concat(args);\n        var stopLoading = function stopLoading2() {\n          _this76.tableLoading = false;\n        };\n        _this76.tableLoading = true;\n        return deleteData.api.apply(_this76, apiArgs).then(stopLoading).catch(stopLoading).then(function() {\n          return _this76.commitProxy(\"reload\");\n        });\n      }\n    };\n    this.remove(selecteds).then(afterRemove);\n  },\n  handleFullScreen: function handleFullScreen(_ref215) {\n    var _this77 = this;\n    var show2 = _ref215[0];\n    this.fullScreenClass = show2 ? \"tiny-fullscreen-full\" : \"\";\n    this.$nextTick(function() {\n      _this77.recalculate();\n      emitEvent(_this77, \"fullscreen\", show2);\n      _this77.emitter.emit(\"fullscreen\", show2);\n    });\n  },\n  commitProxy: function commitProxy(code) {\n    var _this78 = this;\n    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n    var btnMethod = Buttons.get(code);\n    if (code === \"insert\") {\n      this.insert();\n    } else if (code === \"insert_actived\") {\n      this.insert().then(function(_ref216) {\n        var row2 = _ref216.row;\n        return _this78.setActiveRow(row2);\n      });\n    } else if (code === \"mark_cancel\") {\n      this.triggerPendingEvent(code);\n    } else if (code === \"delete_selection\") {\n      this.handleDeleteRow(code, \"ui.grid.deleteSelectRecord\", function() {\n        return _this78.commitProxy([\"delete\"].concat(args));\n      });\n    } else if (code === \"remove_selection\") {\n      this.handleDeleteRow(code, \"ui.grid.removeSelectRecord\", function() {\n        return _this78.removeSelecteds();\n      });\n    } else if (code === \"export\") {\n      this.exportCsv();\n    } else if (code === \"reset_custom\") {\n      this.resetAll();\n    } else if (~[\"reload\", \"query\", \"prefetch\"].indexOf(code)) {\n      this.handleFetch(code, args);\n    } else if (code === \"delete\") {\n      this.handleDelete(code, args);\n    } else if (code === \"save\") {\n      this.handleSave();\n    } else if (code === \"fullscreen\") {\n      this.handleFullScreen(args);\n    } else if (btnMethod) {\n      btnMethod.call.apply(btnMethod, [this, {\n        code,\n        $grid: this\n      }].concat(args));\n    }\n    return this.$nextTick();\n  },\n  handleDeleteRow: function handleDeleteRow(code, i18nKey, callback) {\n    var selecteds = this.getSelectRecords();\n    if (this.isMsg && selecteds.length) {\n      Modal.confirm(GlobalConfig$1.i18n(i18nKey)).then(function(type) {\n        type === \"confirm\" && callback();\n      });\n    }\n    if (this.isMsg && !selecteds.length) {\n      Modal.message({\n        id: code,\n        message: GlobalConfig$1.i18n(\"ui.grid.selectOneRecord\"),\n        status: \"warning\"\n      });\n    }\n    if (!this.isMsg && selecteds.length) {\n      callback();\n    }\n  },\n  getPendingRecords: function getPendingRecords() {\n    return this.pendingRecords;\n  },\n  triggerToolbarBtnEvent: function triggerToolbarBtnEvent(button, event) {\n    var _this$events = this.events, events = _this$events === void 0 ? {} : _this$events, tableListeners = this.tableListeners;\n    var code = button.code;\n    if (!events.toolbarButtonClick && !tableListeners[\"toolbar-button-click\"]) {\n      this.commitProxy(code, event);\n    }\n    emitEvent(this, \"toolbar-button-click\", [{\n      code,\n      button,\n      $grid: this\n    }, event]);\n    this.emitter.emit(\"toolbar-button-click\", {\n      code,\n      button,\n      $grid: this\n    }, event);\n  },\n  triggerPendingEvent: function triggerPendingEvent(code) {\n    var isMsg2 = this.isMsg, pendings = this.pendingRecords;\n    var selectColumn = this.getColumns().filter(function(col) {\n      return ~[\"selection\", \"radio\"].indexOf(col.type);\n    });\n    var isSelection = selectColumn.length && selectColumn[0].type === \"selection\";\n    var isRadio = selectColumn.length && selectColumn[0].type === \"radio\";\n    var selecteds = isSelection ? this.getSelectRecords(true) : isRadio ? [this.getRadioRow()] : [];\n    if (!selecteds.length && isMsg2) {\n      Modal.message({\n        id: code,\n        message: GlobalConfig$1.i18n(\"ui.grid.selectOneRecord\"),\n        status: \"warning\"\n      });\n    }\n    if (selecteds.length) {\n      var _ref217 = {}, _ref217$plus = _ref217.plus, plus = _ref217$plus === void 0 ? [] : _ref217$plus, _ref217$minus = _ref217.minus, minus = _ref217$minus === void 0 ? [] : _ref217$minus, tmp = _ref217.tmp;\n      selecteds.forEach(function(data7) {\n        var selectedPending = pendings.includes(data7);\n        tmp = selectedPending ? minus : plus;\n        tmp.push(data7);\n      });\n      tmp = minus.length ? pendings.filter(function(item) {\n        return !~minus.indexOf(item);\n      }) : pendings;\n      this.pendingRecords = tmp.concat(plus);\n      isSelection && this.clearSelection();\n      isRadio && this.clearRadioRow();\n    }\n  }\n};\nvar Toolbar = {\n  host: \"grid\",\n  install: function install8(host) {\n    Object.assign(host.methods, Methods$6);\n  }\n};\nvar Methods$5 = {\n  renderColumnAnchor: function renderColumnAnchor(params, _vm) {\n    var _ref218 = params || {}, _ref218$anchors = _ref218.anchors, anchors = _ref218$anchors === void 0 ? [] : _ref218$anchors, _ref218$action = _ref218.action, action = _ref218$action === void 0 ? function() {\n    } : _ref218$action;\n    var viewType2 = _vm.viewType;\n    return h(\"div\", {\n      class: [\"tiny-grid__column-anchor\", _vm.viewCls(\"columnAnchor\")],\n      style: viewType2 === \"default\" ? \"display:flex\" : \"\",\n      key: _vm.columnAnchorKey,\n      ref: \"tinyGridColumnAnchor\"\n    }, anchors.map(function(anchor) {\n      var _anchor$active = anchor.active, active = _anchor$active === void 0 ? false : _anchor$active, _anchor$label = anchor.label, label = _anchor$label === void 0 ? \"\" : _anchor$label, _anchor$field = anchor.field, field = _anchor$field === void 0 ? \"\" : _anchor$field, render17 = anchor.render;\n      if (typeof render17 === \"function\") {\n        return render17({\n          h,\n          anchor,\n          action\n        });\n      }\n      var itemClass = {\n        \"tiny-grid__column-anchor-item\": true,\n        \"tiny-grid__column-anchor-item--active\": active\n      };\n      var itemOn = {\n        click: function click(e) {\n          return action(field, e);\n        }\n      };\n      var iconVnode = active ? h(iconMarkOn(), {\n        class: \"tiny-grid__column-anchor-item-icon\"\n      }) : null;\n      var spanVnode = h(\"span\", label);\n      return h(\"div\", {\n        class: itemClass,\n        on: itemOn\n      }, [iconVnode, spanVnode]);\n    }));\n  },\n  buildColumnAnchor: function buildColumnAnchor(_ref219) {\n    var property = _ref219.property, label = _ref219.label, anchors = _ref219.anchors, activeAnchor = _ref219.activeAnchor;\n    var visibleColumn = this.getColumns();\n    var column = visibleColumn.find(function(col) {\n      return !col.type && col.property === property;\n    });\n    var anchorName = \"\";\n    var anchorRender = null;\n    if (typeof label !== \"undefined\") {\n      if (typeof label === \"string\") {\n        anchorName = label;\n      } else if (Array.isArray(label)) {\n        if (label.length > 1) {\n          anchorName = String(label[0]);\n          anchorRender = label[1];\n        }\n      } else if (label && typeof label === \"object\") {\n        anchorName = label.label;\n        anchorRender = label.render;\n        if (label.active) {\n          activeAnchor.field = property;\n          if (label.delay) activeAnchor.delay = label.delay;\n        }\n      }\n    }\n    if (column) {\n      anchors.push({\n        label: anchorName || (typeof column.title === \"string\" ? column.title : \"\"),\n        field: property,\n        active: false,\n        render: anchorRender\n      });\n    }\n  },\n  buildColumnAnchorParams: function buildColumnAnchorParams() {\n    var _this79 = this;\n    var columnAnchor = this.columnAnchor;\n    var anchors = [];\n    var activeAnchor = {\n      field: \"\",\n      delay: 30\n    };\n    if (Array.isArray(columnAnchor) && columnAnchor.length) {\n      columnAnchor.forEach(function(item) {\n        if (typeof item === \"string\") {\n          _this79.buildColumnAnchor({\n            property: item,\n            anchors\n          });\n        } else if (Array.isArray(item)) {\n          if (item.length > 1) _this79.buildColumnAnchor({\n            property: item[0],\n            label: item[1],\n            anchors\n          });\n        } else if (item && typeof item === \"object\") {\n          var field = item.field, other = _objectWithoutPropertiesLoose(item, _excluded2);\n          _this79.buildColumnAnchor({\n            property: field,\n            label: other,\n            anchors,\n            activeAnchor\n          });\n        }\n      });\n    }\n    if (!activeAnchor.field && anchors.length) {\n      activeAnchor.field = anchors[0].field;\n    }\n    this.columnAnchorParams = {\n      anchors,\n      activeAnchor,\n      action: function action(field, e) {\n        return _this79.anchorAction({\n          field,\n          anchors,\n          _vm: _this79,\n          e\n        });\n      }\n    };\n    this._delayActivateAnchor = function() {\n      _this79._delayActivateAnchor = void 0;\n      setTimeout(function() {\n        return _this79.anchorAction({\n          field: activeAnchor.field,\n          anchors,\n          _vm: _this79\n        });\n      }, activeAnchor.delay);\n    };\n  },\n  anchorAction: function anchorAction(_ref220) {\n    var field = _ref220.field, anchors = _ref220.anchors, _vm = _ref220._vm;\n    var fromAnchor = anchors.find(function(anchor) {\n      return anchor.active;\n    });\n    var toAnchor = anchors.find(function(anchor) {\n      return anchor.field === field;\n    });\n    if (toAnchor && fromAnchor !== toAnchor) {\n      if (fromAnchor && fromAnchor.active) {\n        fromAnchor.active = false;\n      }\n      if (!toAnchor.active) {\n        toAnchor.active = true;\n        _vm.columnAnchorKey = field;\n        _vm.$nextTick(function(found) {\n          if (found === void 0) {\n            found = false;\n          }\n          var visibleColumn = _vm.getColumns();\n          var column = visibleColumn.find(function(col) {\n            return !col.type && col.property === field;\n          });\n          var width = visibleColumn.filter(function(col) {\n            return !col.fixed;\n          }).map(function(col) {\n            if (col === column) {\n              found = true;\n            }\n            return found ? 0 : col.renderWidth;\n          }).reduce(function(p, c) {\n            return p + c;\n          }, 0);\n          if (column) {\n            _vm.scrollTo(width);\n          }\n        });\n      }\n    }\n  }\n};\nvar ColumnAnchor = {\n  host: \"grid\",\n  install: function install9(host) {\n    Object.assign(host.methods, Methods$5);\n  }\n};\nvar createHandlerOnEnd = function createHandlerOnEnd2(_ref221) {\n  var _vm = _ref221._vm, refresh = _ref221.refresh;\n  return function(event) {\n    var insertRecords = _vm.getInsertRecords();\n    if (insertRecords.length) {\n      return false;\n    }\n    var options = {\n      children: (_vm.treeConfig || {}).children || \"children\"\n    };\n    var targetTrElem = event.item;\n    var wrapperElem = targetTrElem.parentNode, prevEl = targetTrElem.previousElementSibling, nextEl = targetTrElem.nextElementSibling;\n    var prevTrElem = prevEl && prevEl.classList.contains(\"tiny-grid-body__row\") ? prevEl : prevEl && prevEl.previousElementSibling;\n    var tableTreeData = _vm.rawData || _vm.tableData;\n    var selfRow = _vm.getRowNode(targetTrElem).item;\n    var selfNode = findTree$1(tableTreeData, function(row2) {\n      return row2 === selfRow;\n    }, options);\n    selfRow._isDraging = true;\n    if (prevTrElem) {\n      var prevRow = _vm.getRowNode(prevTrElem).item;\n      var prevNode = findTree$1(tableTreeData, function(row2) {\n        return row2 === prevRow;\n      }, options);\n      if (findTree$1(selfRow[options.children], function(row2) {\n        return prevRow === row2;\n      }, options)) {\n        var oldTrElem = wrapperElem.children[event.oldIndex];\n        wrapperElem.insertBefore(targetTrElem, oldTrElem);\n        return Modal.message({\n          message: GlobalConfig$1.i18n(\"ui.grid.error.notAllowDragSelf\"),\n          status: \"error\"\n        });\n      }\n      var currRow = selfNode.items.splice(selfNode.index, 1)[0];\n      if (_vm.hasTreeExpand(prevRow)) {\n        prevRow[options.children].splice(0, 0, currRow);\n      } else {\n        prevNode.items.splice(prevNode.index + (selfNode.index < prevNode.index ? 0 : 1), 0, currRow);\n        prevNode.items = [].concat(prevNode.items);\n      }\n    } else if (nextEl && nextEl.classList.contains(\"tiny-grid-body__row\")) {\n      var _currRow = selfNode.items.splice(selfNode.index, 1)[0];\n      tableTreeData.unshift(_currRow);\n      _vm.tableFullData = [].concat(tableTreeData);\n    }\n    _vm.$emit(\"row-drop-end\", event, _vm, _vm.scrollYLoad ? tableTreeData : _vm.tableFullData);\n    refresh && _vm.rawData && _vm.refreshData(_vm.rawData);\n  };\n};\nvar getSortColumns = function getSortColumns2(columns2) {\n  var left = [];\n  var right = [];\n  var center = [];\n  columns2.forEach(function(col) {\n    var fixed = col.fixed;\n    if (fixed === \"left\") {\n      left.push(col);\n    } else if (fixed === \"right\") {\n      right.push(col);\n    } else {\n      center.push(col);\n    }\n  });\n  return left.concat(center).concat(right);\n};\nvar Methods$4 = {\n  // 处理列拖拽\n  columnDrop: function columnDrop(headerEl) {\n    var _this80 = this;\n    var _ref222 = this.dropConfig || {}, plugin = _ref222.plugin, onBeforeMove = _ref222.onBeforeMove, filter2 = _ref222.filter;\n    var columnDropContainer = headerEl.querySelector(\".tiny-grid-header__row\");\n    var columnDropOptions = _extends({}, this.dropConfig, {\n      handle: \".tiny-grid-header__column:not(.col__fixed)\",\n      filter: filter2,\n      onEnd: function onEnd(event) {\n        var item = event.item, newIndex = event.newIndex, oldIndex = event.oldIndex;\n        var _this80$getTableColum = _this80.getTableColumn(), fullColumn = _this80$getTableColum.fullColumn, tableColumn2 = _this80$getTableColum.tableColumn;\n        var sortVisibleCols = getSortColumns(tableColumn2);\n        var targetThElem = item;\n        var wrapperElem = targetThElem.parentNode;\n        var newColumn = sortVisibleCols[newIndex];\n        if (newColumn.fixed) {\n          if (newIndex > oldIndex) {\n            for (var i = newIndex; i >= oldIndex; i--) {\n              wrapperElem.insertBefore(targetThElem, wrapperElem.children[i]);\n            }\n          } else {\n            for (var _i3 = newIndex; _i3 <= oldIndex; _i3++) {\n              wrapperElem.insertBefore(targetThElem, wrapperElem.children[_i3]);\n            }\n            wrapperElem.insertBefore(wrapperElem.children[oldIndex], targetThElem);\n          }\n          return Modal.message({\n            message: GlobalConfig$1.i18n(\"ui.grid.error.notAllowDragFixed\"),\n            status: \"error\"\n          });\n        }\n        var oldColumnIndex = _this80.getColumnIndex(sortVisibleCols[oldIndex]);\n        var newColumnIndex = _this80.getColumnIndex(sortVisibleCols[newIndex]);\n        var currCol = fullColumn.splice(oldColumnIndex, 1)[0];\n        fullColumn.splice(newColumnIndex, 0, currCol);\n        _this80.loadColumn(fullColumn);\n        _this80.$emit(\"column-drop-end\", event, _this80);\n        var toolbarVm = _this80.getVm(\"toolbar\");\n        _this80.isDragHeaderSorting && toolbarVm && toolbarVm.updateSetting();\n      },\n      onStart: function onStart(event) {\n        _this80.$emit(\"column-drop-start\", event, _this80);\n      },\n      onMove: function onMove(event) {\n        var cancel = typeof onBeforeMove === \"function\" ? onBeforeMove(\"column\", null, event, _this80) : true;\n        _this80.$emit(\"column-drop-move\", event, _this80);\n        return cancel === void 0 || cancel;\n      }\n    });\n    return plugin.create(columnDropContainer, columnDropOptions);\n  },\n  // 处理行拖拽\n  rowDrop: function rowDrop(bodyEl) {\n    var _this81 = this;\n    var _this$dropConfig = this.dropConfig, plugin = _this$dropConfig.plugin, onBeforeMove = _this$dropConfig.onBeforeMove, filter2 = _this$dropConfig.filter, _this$dropConfig$refr = _this$dropConfig.refresh, refresh = _this$dropConfig$refr === void 0 ? true : _this$dropConfig$refr, rowHandle = _this$dropConfig.rowHandle, trigger = _this$dropConfig.trigger;\n    var rowDropContainer = bodyEl.querySelector(\".tiny-grid__body tbody\");\n    var handle = trigger || \".tiny-grid-body__row\";\n    if (rowHandle === \"index\") {\n      handle = \".tiny-grid-body__row>td.col__index>.row__drop-handle\";\n    }\n    var rowDropOptions = _extends({}, this.dropConfig, {\n      handle,\n      filter: filter2,\n      onEnd: createHandlerOnEnd({\n        _vm: this,\n        refresh\n      }),\n      onStart: function onStart(event) {\n        _this81.$emit(\"row-drop-start\", event, _this81);\n      },\n      onMove: function onMove(event) {\n        var insertRecords = _this81.getInsertRecords();\n        if (insertRecords.length) return false;\n        var dragged = event.dragged;\n        var selfRow = _this81.getRowNode(dragged).item;\n        var cancel = typeof onBeforeMove === \"function\" ? onBeforeMove(\"row\", selfRow, event, _this81) : true;\n        _this81.$emit(\"row-drop-move\", event, _this81);\n        return cancel === void 0 || cancel;\n      }\n    });\n    return plugin.create(rowDropContainer, rowDropOptions);\n  }\n};\nvar Dragger = {\n  host: \"table\",\n  install: function install10(host) {\n    Object.assign(host.methods, Methods$4);\n  }\n};\nvar Methods$3 = {};\nvar Sort = {\n  host: \"table\",\n  install: function install11(host) {\n    Object.assign(host.methods, Methods$3);\n  }\n};\nfunction createTooltipRange(_ref223) {\n  var _vm = _ref223._vm, cell = _ref223.cell, column = _ref223.column, isHeader = _ref223.isHeader;\n  var range = document.createRange();\n  var rangeEnd;\n  range.setStart(cell, 0);\n  if (_vm.headerSuffixIconAbsolute) {\n    if (column.sortable && column.filter && isHeader) {\n      rangeEnd = cell.childNodes.length - 2;\n    } else if ((column.sortable || column.filter) && isHeader) {\n      rangeEnd = cell.childNodes.length - 1;\n    } else {\n      rangeEnd = cell.childNodes.length;\n    }\n  } else {\n    rangeEnd = column.sortable && isHeader ? cell.childNodes.length - 1 : cell.childNodes.length;\n  }\n  range.setEnd(cell, rangeEnd);\n  return range;\n}\nfunction processContentMethod(_ref224) {\n  var _vm = _ref224._vm, column = _ref224.column, content = _ref224.content, contentMethod = _ref224.contentMethod, event = _ref224.event, isHeader = _ref224.isHeader, row2 = _ref224.row, showTip = _ref224.showTip;\n  if (contentMethod) {\n    _vm.tooltipContent = contentMethod({\n      event,\n      column,\n      row: row2,\n      showTip,\n      isHeader,\n      content\n    }, h);\n  } else {\n    _vm.tooltipContent = content;\n  }\n}\nvar focusSingle = null;\nvar Methods$2 = {\n  // 显示 tooltip 依赖的 popper 组件\n  activateTooltip: function activateTooltip(tooltip, isValid) {\n    if (!this.tasks.activateTooltip) {\n      this.tasks.activateTooltip = debounce(300, function() {\n        var sign = isValid !== void 0 ? isValid : focusSingle;\n        if (sign) {\n          tooltip.state.popperElm && (tooltip.state.popperElm.style.display = \"none\");\n          tooltip.doDestroy();\n          tooltip.show();\n          setTimeout(tooltip.updatePopper);\n        }\n      });\n    }\n    this.tasks.activateTooltip();\n  },\n  // 显示 tooltip 依赖的 popper 组件\n  activateTooltipValid: function activateTooltipValid(tooltip) {\n    if (!this.tasks.activateTooltipValid) {\n      this.tasks.activateTooltipValid = debounce(50, function() {\n        tooltip.handleShowPopper();\n        setTimeout(function() {\n          return tooltip.updatePopper();\n        });\n      });\n    }\n    this.tasks.activateTooltipValid();\n  },\n  // 显示 tooltip\n  handleTooltip: function handleTooltip(event, column, row2, showTip, isHeader) {\n    var cell = this.hoverText;\n    if (!cell) {\n      return;\n    }\n    var tooltip = this.$refs.tooltip;\n    var wrapperElem = cell;\n    var content = cell.innerText.trim();\n    var contentMethod = this.tooltipConfig.contentMethod;\n    var range = createTooltipRange({\n      _vm: this,\n      cell,\n      column,\n      isHeader\n    });\n    var rangeWidth = range.getBoundingClientRect().width;\n    var padding = (parseInt(getStyle(cell, \"paddingLeft\"), 10) || 0) + (parseInt(getStyle(cell, \"paddingRight\"), 10) || 0);\n    var isOverflow = (\n      // 浏览器缩放情况下，会存在细微的像素无法，因此设置0.1像素作为误差量\n      rangeWidth + padding > cell.getBoundingClientRect().width + 0.1 || wrapperElem.scrollWidth > wrapperElem.clientWidth\n    );\n    if ((contentMethod || content) && (showTip || isOverflow)) {\n      Object.assign(this.tooltipStore, {\n        row: row2,\n        column,\n        visible: true\n      });\n      if (tooltip) {\n        processContentMethod({\n          _vm: this,\n          column,\n          content,\n          contentMethod,\n          event,\n          isHeader,\n          row: row2,\n          showTip\n        });\n        tooltip.state.referenceElm = cell;\n        tooltip.state.popperElm && (tooltip.state.popperElm.style.display = \"none\");\n        focusSingle = true;\n        this.activateTooltip(tooltip);\n      }\n    }\n    return this.$nextTick();\n  },\n  // 提供关闭tips提示的方法\n  clostTooltip: function clostTooltip() {\n    var tooltip = this.$refs.tooltip;\n    Object.assign(this.tooltipStore, {\n      content: null,\n      row: null,\n      visible: false,\n      column: null\n    });\n    focusSingle = false;\n    if (tooltip && typeof tooltip.setExpectedState === \"function\") {\n      tooltip.setExpectedState(false);\n      this.debounceClose(tooltip);\n    }\n    return this.$nextTick();\n  },\n  // 添加代码让用户代码可以划入popper\n  debounceClose: function debounceClose(tooltip) {\n    if (!this.tasks.debounceClose) {\n      this.tasks.debounceClose = debounce(50, function() {\n        tooltip.handleClosePopper();\n      });\n    }\n    this.tasks.debounceClose();\n  },\n  // 触发表头 tooltip 事件\n  triggerHeaderTooltipEvent: function triggerHeaderTooltipEvent(event, params) {\n    var tooltipStore = this.tooltipStore;\n    var column = params.column, showHeaderTip = params.showHeaderTip;\n    if (tooltipStore.column !== column || !tooltipStore.visible) {\n      this.handleTooltip(event, column, null, showHeaderTip, true);\n    }\n  },\n  // 触发表尾 tooltip 事件\n  triggerFooterTooltipEvent: function triggerFooterTooltipEvent(event, params) {\n    var column = params.column;\n    var tooltipStore = this.tooltipStore;\n    if (tooltipStore.column !== column || !tooltipStore.visible) {\n      this.handleTooltip(event, column);\n    }\n  },\n  // 触发 tooltip 事件\n  triggerTooltipEvent: function triggerTooltipEvent(event, params) {\n    var editConfig = this.editConfig, editStore = this.editStore, tooltipStore = this.tooltipStore;\n    var actived = editStore.actived;\n    var row2 = params.row, column = params.column, showTip = params.showTip;\n    if (editConfig) {\n      if (editConfig.mode === \"row\" && actived.row === row2 && column.editor || actived.row === row2 && actived.column === column) {\n        return;\n      }\n    }\n    if (tooltipStore.column !== column || tooltipStore.row !== row2 || !tooltipStore.visible) {\n      this.handleTooltip(event, column, row2, showTip);\n    }\n  }\n};\nvar Tooltip = {\n  host: \"table\",\n  install: function install12(host) {\n    Object.assign(host.methods, Methods$2);\n  }\n};\nfunction onHalfSelectionProperty(_ref225) {\n  var checkStrictly = _ref225.checkStrictly, property = _ref225.property, row2 = _ref225.row, treeConfig = _ref225.treeConfig, treeIndeterminates = _ref225.treeIndeterminates, value = _ref225.value;\n  if (property && treeConfig && !checkStrictly && value === -1) {\n    treeIndeterminates.push(row2);\n    set(row2, property, false);\n  }\n}\nfunction onFullSelectionProperty(_ref226) {\n  var checkMethod = _ref226.checkMethod, checkStrictly = _ref226.checkStrictly, property = _ref226.property, row2 = _ref226.row, treeConfig = _ref226.treeConfig, treeIndeterminates = _ref226.treeIndeterminates, value = _ref226.value;\n  if (property && treeConfig && !checkStrictly && value !== -1) {\n    eachTree([row2], function(item, $rowIndex) {\n      if (row2 === item || !checkMethod || checkMethod({\n        row: item,\n        $rowIndex\n      })) {\n        set(item, property, value);\n        remove(treeIndeterminates, function(r) {\n          return r === item;\n        });\n      }\n    }, treeConfig);\n  }\n}\nfunction getVItemsOnParentSlctProp(_ref227) {\n  var checkMethod = _ref227.checkMethod, matchObj = _ref227.matchObj;\n  var tinyItems;\n  if (checkMethod) {\n    tinyItems = matchObj.items.filter(function(item, $rowIndex) {\n      return checkMethod({\n        row: item,\n        $rowIndex\n      });\n    });\n  } else {\n    tinyItems = matchObj.items;\n  }\n  return tinyItems;\n}\nfunction getParentStatusOnParentSlctProp(_ref228) {\n  var indeterminatesItem = _ref228.indeterminatesItem, matchObj = _ref228.matchObj, property = _ref228.property, vItems = _ref228.vItems, value = _ref228.value;\n  var parentStatus;\n  if (indeterminatesItem) {\n    parentStatus = -1;\n  } else {\n    var selectItemArr = matchObj.items.filter(function(item) {\n      return get(item, property);\n    });\n    var _isEqual = selectItemArr.filter(function(item) {\n      return ~vItems.indexOf(item);\n    }).length === vItems.length;\n    parentStatus = _isEqual ? true : selectItemArr.length || value === -1 ? -1 : false;\n  }\n  return parentStatus;\n}\nfunction onHalfSelection(_ref229) {\n  var checkStrictly = _ref229.checkStrictly, property = _ref229.property, row2 = _ref229.row, selection = _ref229.selection, treeConfig = _ref229.treeConfig, treeIndeterminates = _ref229.treeIndeterminates, value = _ref229.value;\n  if (!property && treeConfig && !checkStrictly && value === -1) {\n    treeIndeterminates.push(row2);\n    remove(selection, function(item) {\n      return item === row2;\n    });\n  }\n}\nvar addSelection = function addSelection2(selection, item) {\n  return !selection.includes(item) && selection.push(item);\n};\nfunction onFullSelection(_ref230) {\n  var checkMethod = _ref230.checkMethod, checkStrictly = _ref230.checkStrictly, property = _ref230.property, row2 = _ref230.row, selection = _ref230.selection, treeConfig = _ref230.treeConfig, treeIndeterminates = _ref230.treeIndeterminates, value = _ref230.value;\n  if (!property && treeConfig && !checkStrictly && value !== -1) {\n    eachTree([row2], function(item, $rowIndex) {\n      if (row2 === item || !checkMethod || checkMethod({\n        row: item,\n        $rowIndex\n      })) {\n        if (value) {\n          addSelection(selection, item);\n        } else {\n          remove(selection, function(select2) {\n            return select2 === item;\n          });\n        }\n        remove(treeIndeterminates, function(r) {\n          return r === item;\n        });\n      }\n    }, treeConfig);\n  }\n}\nfunction getParentStatusOnParentSelection(_ref231) {\n  var indeterminatesItem = _ref231.indeterminatesItem, matchObj = _ref231.matchObj, selection = _ref231.selection, vItems = _ref231.vItems, value = _ref231.value;\n  var parentStatus;\n  if (indeterminatesItem) {\n    parentStatus = -1;\n  } else {\n    var selectItems = matchObj.items.filter(function(item) {\n      return selection.includes(item);\n    });\n    var isEqualItem = selectItems.length === vItems.length;\n    parentStatus = isEqualItem ? true : selectItems.length || value === -1 ? -1 : false;\n  }\n  return parentStatus;\n}\nfunction hasCheckField(_ref232, value, _vm) {\n  var row2 = _ref232.row;\n  var tableFullData = _vm.tableFullData, _vm$selectConfig = _vm.selectConfig, selectConfig = _vm$selectConfig === void 0 ? {} : _vm$selectConfig, treeConfig = _vm.treeConfig, treeIndeterminates = _vm.treeIndeterminates;\n  var property = selectConfig.checkField, checkStrictly = selectConfig.checkStrictly, checkMethod = selectConfig.checkMethod;\n  onHalfSelectionProperty({\n    checkStrictly,\n    property,\n    row: row2,\n    treeConfig,\n    treeIndeterminates,\n    value\n  });\n  onFullSelectionProperty({\n    checkMethod,\n    checkStrictly,\n    property,\n    row: row2,\n    treeConfig,\n    treeIndeterminates,\n    value\n  });\n  if (property && treeConfig && !checkStrictly) {\n    var matchObj = findTree$1(tableFullData, function(item) {\n      return item === row2;\n    }, treeConfig);\n    if (matchObj && matchObj.parent) {\n      var vItems = getVItemsOnParentSlctProp({\n        checkMethod,\n        matchObj\n      });\n      var indeterminatesItem = find$1(matchObj.items, function(item) {\n        return treeIndeterminates.includes(item);\n      });\n      var parentStatus = getParentStatusOnParentSlctProp({\n        indeterminatesItem,\n        matchObj,\n        property,\n        vItems,\n        value\n      });\n      return _vm.handleSelectRow({\n        row: matchObj.parent\n      }, parentStatus);\n    }\n  }\n  if (property && !(treeConfig && !checkStrictly)) {\n    set(row2, property, value);\n  }\n}\nfunction onSelectTreeCheckStrictly(_ref233, value, _vm) {\n  var row2 = _ref233.row;\n  var selection = _vm.selection, tableFullData = _vm.tableFullData, _vm$selectConfig2 = _vm.selectConfig, selectConfig = _vm$selectConfig2 === void 0 ? {} : _vm$selectConfig2, treeConfig = _vm.treeConfig, treeIndeterminates = _vm.treeIndeterminates;\n  var property = selectConfig.checkField, checkStrictly = selectConfig.checkStrictly, checkMethod = selectConfig.checkMethod;\n  onHalfSelection({\n    checkStrictly,\n    property,\n    row: row2,\n    selection,\n    treeConfig,\n    treeIndeterminates,\n    value\n  });\n  onFullSelection({\n    checkMethod,\n    checkStrictly,\n    property,\n    row: row2,\n    selection,\n    treeConfig,\n    treeIndeterminates,\n    value\n  });\n  if (!property && treeConfig && !checkStrictly) {\n    var matchObj = findTree$1(tableFullData, function(item) {\n      return item === row2;\n    }, treeConfig);\n    if (matchObj && matchObj.parent) {\n      var vItems = matchObj.items;\n      var indeterminatesItem = find$1(matchObj.items, function(item) {\n        return treeIndeterminates.includes(item);\n      });\n      var parentStatus = getParentStatusOnParentSelection({\n        indeterminatesItem,\n        matchObj,\n        selection,\n        vItems,\n        value\n      });\n      return _vm.handleSelectRow({\n        row: matchObj.parent\n      }, parentStatus);\n    }\n  }\n}\nfunction onSelectOther(_ref234, value, _vm) {\n  var row2 = _ref234.row;\n  var selection = _vm.selection, _vm$selectConfig3 = _vm.selectConfig, selectConfig = _vm$selectConfig3 === void 0 ? {} : _vm$selectConfig3, treeConfig = _vm.treeConfig;\n  var property = selectConfig.checkField, checkStrictly = selectConfig.checkStrictly;\n  if (!property && !(treeConfig && !checkStrictly)) {\n    if (value) {\n      addSelection(selection, row2);\n    } else {\n      remove(selection, function(item) {\n        return item === row2;\n      });\n    }\n  }\n}\nfunction hasNoCheckField(_ref235, value, _vm) {\n  var row2 = _ref235.row;\n  onSelectTreeCheckStrictly({\n    row: row2\n  }, value, _vm);\n  onSelectOther({\n    row: row2\n  }, value, _vm);\n}\nfunction pushSelectRow(_ref236) {\n  var afterFullData = _ref236.afterFullData, checkMethod = _ref236.checkMethod, checkStrictly = _ref236.checkStrictly; _ref236.property; var selectRows = _ref236.selectRows, selection = _ref236.selection, treeConfig = _ref236.treeConfig, value = _ref236.value;\n  if (!checkStrictly && value) {\n    eachTree(afterFullData, function(row2, $rowIndex) {\n      if (!checkMethod || checkMethod({\n        row: row2,\n        $rowIndex\n      })) {\n        selectRows.push(row2);\n      }\n    }, treeConfig);\n  }\n  if (!checkStrictly && !value && checkMethod) {\n    eachTree(afterFullData, function(row2, $rowIndex) {\n      if (checkMethod({\n        row: row2,\n        $rowIndex\n      }) ? 0 : selection.includes(row2)) {\n        selectRows.push(row2);\n      }\n    }, treeConfig);\n  }\n}\nfunction hasCheckFieldNoStrictly(_ref237) {\n  var afterFullData = _ref237.afterFullData, checkMethod = _ref237.checkMethod, checkStrictly = _ref237.checkStrictly, property = _ref237.property, selection = _ref237.selection, treeConfig = _ref237.treeConfig, value = _ref237.value;\n  if (!checkStrictly && property) {\n    var indexKey = (treeConfig ? \"$\" : \"\") + \"rowIndex\";\n    var setValFn = function setValFn2(row2, rowIndex) {\n      var _checkMethod;\n      if (!checkMethod || checkMethod((_checkMethod = {\n        row: row2\n      }, _checkMethod[indexKey] = rowIndex, _checkMethod))) {\n        set(row2, property, value);\n      }\n    };\n    var clearValFn = function clearValFn2(row2, rowIndex) {\n      var _checkMethod2;\n      if (!checkMethod || (checkMethod((_checkMethod2 = {\n        row: row2\n      }, _checkMethod2[indexKey] = rowIndex, _checkMethod2)) ? selection.includes(row2) : false)) {\n        set(row2, property, value);\n      }\n    };\n    if (treeConfig) {\n      eachTree(afterFullData, value ? setValFn : clearValFn, treeConfig);\n    } else {\n      afterFullData.forEach(value ? setValFn : clearValFn);\n    }\n  }\n}\nfunction filterSelectRow(_ref238) {\n  var afterFullData = _ref238.afterFullData, checkMethod = _ref238.checkMethod, checkStrictly = _ref238.checkStrictly, selectRows = _ref238.selectRows, selection = _ref238.selection, value = _ref238.value;\n  if (!checkStrictly && value && checkMethod) {\n    selectRows = afterFullData.filter(function(row2, rowIndex) {\n      return selection.includes(row2) || checkMethod({\n        row: row2,\n        rowIndex\n      });\n    });\n  }\n  if (!checkStrictly && value && !checkMethod) {\n    selectRows = afterFullData.slice(0);\n  }\n  if (!checkStrictly && !value && checkMethod) {\n    selectRows = afterFullData.filter(function(row2, rowIndex) {\n      return checkMethod({\n        row: row2,\n        rowIndex\n      }) ? 0 : selection.includes(row2);\n    });\n  }\n  return selectRows;\n}\nfunction hasNoCheckFieldNoStrictly(_ref239) {\n  var afterFullData = _ref239.afterFullData, checkMethod = _ref239.checkMethod, checkStrictly = _ref239.checkStrictly, property = _ref239.property, selection = _ref239.selection, treeConfig = _ref239.treeConfig, value = _ref239.value;\n  var selectRows = [];\n  if (treeConfig) {\n    pushSelectRow({\n      afterFullData,\n      checkMethod,\n      checkStrictly,\n      property,\n      selectRows,\n      selection,\n      treeConfig,\n      value\n    });\n  } else {\n    selectRows = filterSelectRow({\n      afterFullData,\n      checkMethod,\n      checkStrictly,\n      selectRows,\n      selection,\n      value\n    });\n  }\n  return selectRows;\n}\nfunction setSelectionNoStrictly(_ref240) {\n  var _vm = _ref240._vm, checkStrictly = _ref240.checkStrictly, reserve = _ref240.reserve, selectRows = _ref240.selectRows, selection = _ref240.selection, value = _ref240.value, afterFullData = _ref240.afterFullData;\n  if (!checkStrictly) {\n    if (reserve) {\n      var unCheckedRows = afterFullData.filter(function(row2) {\n        return !selectRows.includes(row2);\n      });\n      _vm.selection = value ? selection.concat(selectRows.filter(function(row2) {\n        return !selection.includes(row2);\n      })) : selection.filter(function(row2) {\n        return !unCheckedRows.includes(row2);\n      });\n    } else {\n      _vm.selection = selectRows;\n    }\n  }\n}\nvar Methods$1 = {\n  // 处理默认勾选\n  handleSelectionDefChecked: function handleSelectionDefChecked() {\n    var fullDataRowIdData = this.fullDataRowIdData;\n    var _ref241 = this.selectConfig || {}, checkAll = _ref241.checkAll, checkRowKeys = _ref241.checkRowKeys;\n    if (checkAll) {\n      this.setAllSelection(true);\n      return;\n    }\n    if (checkRowKeys) {\n      var defCheckedRowids = checkRowKeys.map(function(key) {\n        return encodeURIComponent(key);\n      });\n      var defCheckedRows = [];\n      defCheckedRowids.forEach(function(rowid2) {\n        var rowCache = fullDataRowIdData[rowid2];\n        if (rowCache) {\n          defCheckedRows.push(rowCache.row);\n        }\n      });\n      this.setSelection(defCheckedRows, true);\n    }\n  },\n  setSelection: function setSelection(rows, value) {\n    var _this82 = this;\n    if (rows) {\n      if (!isArray(rows)) {\n        rows = [rows];\n      }\n      rows.forEach(function(row2) {\n        return _this82.handleSelectRow({\n          row: row2\n        }, !!value);\n      });\n    }\n    return this.$nextTick();\n  },\n  // 多选，行选中事件。value：选中true、不选false、不确定-1\n  handleSelectRow: function handleSelectRow(_ref242, value) {\n    var row2 = _ref242.row;\n    hasCheckField({\n      row: row2\n    }, value, this);\n    hasNoCheckField({\n      row: row2\n    }, value, this);\n    this.checkSelectionStatus();\n  },\n  handleToggleCheckRowEvent: function handleToggleCheckRowEvent(params, event) {\n    var selection = this.selection;\n    var _ref243 = this.selectConfig || {}, checkField = _ref243.checkField;\n    var row2 = params.row;\n    var value = checkField ? !get(row2, checkField) : !~selection.indexOf(row2);\n    if (event) {\n      this.triggerCheckRowEvent(event, params, value);\n    } else {\n      this.handleSelectRow(params, value);\n    }\n  },\n  triggerCheckRowEvent: function triggerCheckRowEvent(event, params, value) {\n    var _this$selectConfig4 = this.selectConfig, selectConfig = _this$selectConfig4 === void 0 ? {} : _this$selectConfig4;\n    var checkMethod = selectConfig.checkMethod;\n    if (!checkMethod || checkMethod(params)) {\n      var _this$$grid4;\n      this.handleSelectRow(params, value);\n      var eventParams = [_extends({\n        selection: this.getSelectRecords(),\n        checked: value,\n        $table: this\n      }, params), event];\n      emitEvent(this, \"select-change\", eventParams);\n      (_this$$grid4 = this.$grid) == null ? void 0 : _this$$grid4.emitter.emit(\"select-change\", eventParams);\n    }\n  },\n  // 多选，切换某一行的选中状态\n  toggleRowSelection: function toggleRowSelection(row2) {\n    this.handleToggleCheckRowEvent({\n      row: row2\n    });\n    return this.$nextTick();\n  },\n  setAllSelection: function setAllSelection(value) {\n    var afterFullData = this.afterFullData, _this$selectConfig5 = this.selectConfig, selectConfig = _this$selectConfig5 === void 0 ? {} : _this$selectConfig5, treeConfig = this.treeConfig, selection = this.selection;\n    var property = selectConfig.checkField, reserve = selectConfig.reserve, checkStrictly = selectConfig.checkStrictly, checkMethod = selectConfig.checkMethod;\n    checkStrictly = false;\n    hasCheckFieldNoStrictly({\n      afterFullData,\n      checkMethod,\n      checkStrictly,\n      property,\n      selection,\n      treeConfig,\n      value\n    });\n    var selectRows = hasNoCheckFieldNoStrictly({\n      afterFullData,\n      checkMethod,\n      checkStrictly,\n      property,\n      selection,\n      treeConfig,\n      value\n    });\n    setSelectionNoStrictly({\n      _vm: this,\n      checkStrictly,\n      reserve,\n      selectRows,\n      selection,\n      value,\n      afterFullData\n    });\n    this.treeIndeterminates = [];\n    this.checkSelectionStatus();\n  },\n  // 根据表格选中状态，给头部复现框赋值状态（全选，半选，未选）\n  checkSelectionStatus: function checkSelectionStatus() {\n    var afterFullData = this.afterFullData, selection = this.selection, treeIndeterminates = this.treeIndeterminates;\n    var _ref244 = this.selectConfig || {}, checkField = _ref244.checkField, checkMethod = _ref244.checkMethod;\n    var _ref245 = {}, everyHandler = _ref245.everyHandler, someHandler = _ref245.someHandler;\n    if (checkField) {\n      everyHandler = checkMethod ? function(row2, rowIndex) {\n        return !checkMethod({\n          row: row2,\n          rowIndex\n        }) || get(row2, checkField);\n      } : function(row2) {\n        return get(row2, checkField);\n      };\n      someHandler = function someHandler2(row2) {\n        return get(row2, checkField) || ~treeIndeterminates.indexOf(row2);\n      };\n      this.isAllSelected = false;\n      this.headerCheckDisabled = checkMethod && afterFullData.length && afterFullData.every(function(row2, rowIndex) {\n        return !checkMethod({\n          row: row2,\n          rowIndex\n        });\n      });\n      afterFullData.length && (this.isAllSelected = afterFullData.every(everyHandler));\n      this.isIndeterminate = !this.isAllSelected && afterFullData.some(someHandler);\n    } else {\n      everyHandler = function everyHandler2(row2, rowIndex) {\n        return !checkMethod({\n          row: row2,\n          rowIndex\n        });\n      };\n      this.headerCheckDisabled = checkMethod && afterFullData.length && afterFullData.every(everyHandler);\n      everyHandler = checkMethod ? function(row2, rowIndex) {\n        return !checkMethod({\n          row: row2,\n          rowIndex\n        }) || ~selection.indexOf(row2);\n      } : function(row2) {\n        return ~selection.indexOf(row2);\n      };\n      someHandler = function someHandler2(row2) {\n        return ~treeIndeterminates.indexOf(row2) || ~selection.indexOf(row2);\n      };\n      this.isAllSelected = false;\n      afterFullData.length && (this.isAllSelected = afterFullData.every(everyHandler));\n      this.isIndeterminate = !this.isAllSelected && afterFullData.some(someHandler);\n    }\n  },\n  // 保留选中状态\n  reserveCheckSelection: function reserveCheckSelection() {\n    var fullDataRowIdData = this.fullDataRowIdData, selection = this.selection;\n    var _ref246 = this.selectConfig || {}, reserve = _ref246.reserve;\n    var rowkey = getRowkey(this);\n    if (reserve && selection.length) {\n      this.selection = selection.map(function(row2) {\n        var rowCache = fullDataRowIdData[\"\" + get(row2, rowkey)];\n        return rowCache ? rowCache.row : row2;\n      });\n    }\n  },\n  // 多选，选中所有事件\n  triggerCheckAllEvent: function triggerCheckAllEvent(event, value) {\n    var _this$$grid5;\n    this.setAllSelection(value);\n    var eventParams = {\n      selection: this.getSelectRecords(),\n      checked: value,\n      $table: this\n    };\n    emitEvent(this, \"select-all\", [eventParams, event]);\n    (_this$$grid5 = this.$grid) == null ? void 0 : _this$$grid5.emitter.emit(\"select-all\", [eventParams, event]);\n  },\n  // 多选，切换所有行的选中状态\n  toggleAllSelection: function toggleAllSelection() {\n    this.triggerCheckAllEvent(null, !this.isAllSelected);\n    return this.$nextTick();\n  },\n  clearSelection: function clearSelection() {\n    var tableFullData = this.tableFullData, treeConfig = this.treeConfig;\n    var _ref247 = this.selectConfig || {}, checkField = _ref247.checkField;\n    if (checkField) {\n      treeConfig ? eachTree(tableFullData, function(item) {\n        return set(item, checkField, false);\n      }, treeConfig) : tableFullData.forEach(function(item) {\n        return set(item, checkField, false);\n      });\n    }\n    Object.assign(this, {\n      isAllSelected: false,\n      isIndeterminate: false,\n      selection: [],\n      treeIndeterminates: []\n    });\n    return this.$nextTick();\n  },\n  initMultipleHistory: function initMultipleHistory() {\n    var isMultipleHistory = this.$grid.isMultipleHistory;\n    var toolbarVm = this.getVm(\"toolbar\");\n    var storageKey = toolbarVm.settingOpts.storageKey, toolbarId = toolbarVm.id;\n    var remoteSelectedMethod = toolbarVm.setting.multipleHistory.remoteSelectedMethod;\n    var remoteSelectedPromise;\n    if (isMultipleHistory && toolbarVm && toolbarVm.setting && toolbarVm.setting.multipleHistory && remoteSelectedMethod) {\n      if (typeof remoteSelectedMethod === \"function\") {\n        remoteSelectedPromise = remoteSelectedMethod();\n        if (typeof remoteSelectedPromise.then === \"function\") {\n          remoteSelectedPromise.then(function(storeStr) {\n            var storeObj = toStringJSON(storeStr);\n            storeObj = storeObj && storeObj[storageKey] || null;\n            storeObj = (storeObj || {})[toolbarId] || {};\n            var _storeObj = storeObj, columns2 = _storeObj.columns, pageSize = _storeObj.pageSize;\n            toolbarVm.applySettings({\n              columns: columns2,\n              pageSize\n            });\n          });\n        }\n      }\n    }\n  },\n  // 显示多选工具栏\n  showSelectToolbar: function showSelectToolbar() {\n    var _this$$grid6 = this.$grid, selectToolbar = _this$$grid6.selectToolbar, showHeader = _this$$grid6.showHeader, selectToolbarStore = this.selectToolbarStore;\n    if (selectToolbar && showHeader) {\n      selectToolbarStore.visible = false;\n      var selectColumn = find$1(this.visibleColumn, function(item) {\n        return item.type === \"selection\";\n      });\n      var selected = this.getSelectRecords();\n      var position = typeof selectToolbar === \"object\" ? selectToolbar.position : \"\";\n      if (selectColumn && selected && selected.length) {\n        var _GlobalConfig$rowHeig;\n        var tinyTheme = this.tinyTheme, vSize3 = this.vSize, $el = this.$el;\n        var rowHeight = ((_GlobalConfig$rowHeig = GlobalConfig.rowHeight[tinyTheme]) == null ? void 0 : _GlobalConfig$rowHeig[vSize3 || \"default\"]) || 40;\n        var selectTh = $el.querySelector(\"th.tiny-grid-header__column.col__selection\");\n        var tr = selectTh.parentNode;\n        var thArr = toArray(tr.childNodes);\n        var range = document.createRange();\n        var rangeBoundingRect;\n        var headerBoundingRect = {\n          width: $el.getBoundingClientRect().width,\n          height: rowHeight\n        };\n        var _layout = {\n          width: 0,\n          height: 0,\n          left: 0,\n          top: 0,\n          zIndex: 20\n        };\n        var adjust = 1;\n        if (selectColumn.fixed === \"right\") {\n          range.setStart(tr, thArr.indexOf(selectTh));\n          range.setEnd(tr, thArr.length);\n          rangeBoundingRect = range.getBoundingClientRect();\n          _layout.left = adjust + \"px\";\n        } else {\n          range.setStart(tr, 0);\n          range.setEnd(tr, thArr.indexOf(selectTh) + 1);\n          rangeBoundingRect = range.getBoundingClientRect();\n          _layout.left = rangeBoundingRect.width + adjust + \"px\";\n        }\n        _layout.width = headerBoundingRect.width - rangeBoundingRect.width - 2 * adjust + \"px\";\n        if (!selectColumn.fixed && position === \"left\") {\n          range = document.createRange();\n          range.setStart(tr, 0);\n          range.setEnd(tr, thArr.indexOf(selectTh));\n          rangeBoundingRect = range.getBoundingClientRect();\n          _layout.left = adjust + \"px\";\n          _layout.width = rangeBoundingRect.width - 2 * adjust + \"px\";\n        }\n        _layout.top = headerBoundingRect.height - rangeBoundingRect.height + adjust + \"px\";\n        _layout.height = rangeBoundingRect.height - 2 * adjust + \"px\";\n        return this.$nextTick().then(function() {\n          selectToolbarStore.layout = _layout;\n          selectToolbarStore.visible = true;\n        });\n      }\n    }\n    return this.$nextTick();\n  },\n  // 切换多选工具栏的显示\n  toggleSelectToolbarVisible: function toggleSelectToolbarVisible() {\n    this.selectToolbarStore.visible = !this.selectToolbarStore.visible;\n    return this.$nextTick();\n  },\n  // 在空数据时Selection列表头复选框禁用，headerAutoDisabled设置为false就会和旧版本兼容\n  handleSelectionHeader: function handleSelectionHeader() {\n    var tableFullData = this.tableFullData, visibleColumn = this.visibleColumn, _this$selectConfig6 = this.selectConfig, selectConfig = _this$selectConfig6 === void 0 ? {} : _this$selectConfig6;\n    var headerAutoDisabled = selectConfig.headerAutoDisabled;\n    var selectionColumn = visibleColumn.find(function(column) {\n      return column.type === \"selection\";\n    });\n    if ((typeof headerAutoDisabled === \"undefined\" || typeof headerAutoDisabled === \"boolean\" && headerAutoDisabled) && !tableFullData.length && selectionColumn) {\n      this.headerCheckDisabled = true;\n    }\n  }\n};\nvar Checkbox = {\n  host: \"table\",\n  install: function install13(host) {\n    Object.assign(host.methods, Methods$1);\n  }\n};\nvar Methods = {\n  // 展开树节点事件\n  triggerTreeExpandEvent: function triggerTreeExpandEvent(event, _ref248) {\n    var _this83 = this;\n    var row2 = _ref248.row;\n    var currentColumn = this.currentColumn, currentRow = this.currentRow;\n    var rest = this.toggleTreeExpansion(row2);\n    var eventParams = {\n      $table: this,\n      row: row2,\n      rowIndex: this.getRowIndex(row2)\n    };\n    emitEvent(this, \"toggle-tree-change\", [eventParams, event]);\n    this.$nextTick(function() {\n      if (currentRow) {\n        _this83.setCurrentRow(currentRow);\n      } else if (currentColumn) {\n        _this83.setCurrentColumn(currentColumn);\n      }\n    });\n    return rest;\n  },\n  // 切换/展开树节点\n  toggleTreeExpansion: function toggleTreeExpansion(row2) {\n    return this.setTreeExpansion(row2);\n  },\n  // 处理默认展开树节点\n  handleDefaultTreeExpand: function handleDefaultTreeExpand() {\n    var _this84 = this;\n    var tableFullData = this.tableFullData, treeConfig = this.treeConfig;\n    if (!treeConfig) return;\n    var children = treeConfig.children, expandAll = treeConfig.expandAll, rowids = treeConfig.expandRowKeys;\n    var treeExpandeds = [];\n    var rowkey = getRowkey(this);\n    var isNonEmptyArr = function isNonEmptyArr2(arr) {\n      return isArray(arr) && arr.length;\n    };\n    var doExpandAll = function doExpandAll2() {\n      filterTree(tableFullData, function(row2) {\n        return isNonEmptyArr(row2[children]) && treeExpandeds.push(row2);\n      }, treeConfig);\n      _this84.treeExpandeds = treeExpandeds;\n    };\n    var doExpandRows = function doExpandRows2() {\n      rowids.forEach(function(rowid2) {\n        var matchObj = findTree$1(tableFullData, function(item) {\n          return rowid2 === get(item, rowkey);\n        }, treeConfig);\n        matchObj && isNonEmptyArr(matchObj.item[children]) && treeExpandeds.push(matchObj.item);\n      });\n      _this84.treeExpandeds = treeExpandeds;\n    };\n    expandAll ? doExpandAll() : rowids ? doExpandRows() : \"\";\n    graphFullData(this);\n    return this.handleTableData();\n  },\n  setAllTreeExpansion: function setAllTreeExpansion(expanded) {\n    var tableFullData = this.tableFullData, treeConfig = this.treeConfig;\n    var children = treeConfig.children;\n    var treeExpandeds = [];\n    if (expanded) {\n      var rowHandler = function rowHandler2(row2) {\n        if (row2[children] && row2[children].length) {\n          treeExpandeds.push(row2);\n        }\n      };\n      eachTree(tableFullData, rowHandler, treeConfig);\n    }\n    this.treeExpandeds = treeExpandeds;\n    graphFullData(this);\n    return this.handleTableData().then(this.recalculate);\n  },\n  // 设置展开树形节点，二个参数设置这一行展开与否：支持单行，支持多行\n  setTreeExpansion: function setTreeExpansion(rows, expanded) {\n    var treeConfig = this.treeConfig, treeExpandeds = this.treeExpandeds, tableFullData = this.tableFullData;\n    var accordion = treeConfig.accordion, children = treeConfig.children;\n    var isToggle = arguments.length === 1;\n    if (!rows) {\n      return this.$nextTick().then(this.recalculate);\n    }\n    if (!isArray(rows)) {\n      rows = [rows];\n    }\n    if (accordion) {\n      rows = rows.slice(rows.length - 1, rows.length);\n    }\n    var treeExpandedsCopy = [].concat(treeExpandeds);\n    rows.forEach(function(row2) {\n      if (row2[children] && row2[children].length) {\n        var _index9 = treeExpandedsCopy.indexOf(row2);\n        if (accordion) {\n          var matchObj = findTree$1(tableFullData, function(item) {\n            return item === row2;\n          }, treeConfig);\n          remove(treeExpandedsCopy, function(item) {\n            return ~matchObj.items.indexOf(item);\n          });\n        }\n        if (~_index9 && (isToggle || !expanded)) {\n          treeExpandedsCopy.splice(_index9, 1);\n          return;\n        }\n        if (!~_index9 && (isToggle || expanded)) {\n          treeExpandedsCopy.push(row2);\n        }\n      }\n    });\n    this.treeExpandeds = treeExpandedsCopy;\n    graphFullData(this);\n    return this.handleTableData().then(this.recalculate);\n  },\n  hasTreeExpand: function hasTreeExpand(row2) {\n    return ~this.treeExpandeds.indexOf(row2);\n  },\n  clearTreeExpand: function clearTreeExpand() {\n    var _this85 = this;\n    var hasExpand = this.treeExpandeds.length;\n    this.treeExpandeds = [];\n    graphFullData(this);\n    return this.handleTableData().then(function() {\n      return hasExpand ? _this85.recalculate() : 0;\n    });\n  },\n  getTreeExpandeds: function getTreeExpandeds() {\n    return this.treeExpandeds;\n  }\n};\nvar Tree = {\n  host: \"table\",\n  install: function install14(host) {\n    Object.assign(host.methods, Methods);\n  }\n};\nvar version = \"3.undefined\";\nvar plugins = [Panel, Edit, Export, Keyboard, Validator, Resize, Panel$1, FetchData, Pager, Toolbar, ColumnAnchor, Dragger, Sort, Tooltip, Checkbox, Tree];\nGrid$1.setup({\n  i18n: t\n});\nGrid$1.t = t;\nplugins.map(function(plugin) {\n  return plugin.install(plugin.host === \"grid\" ? Grid : Table);\n});\nvar getWrapFunc = function getWrapFunc2(name) {\n  return function() {\n    var tinyTable = this.$refs.tinyTable;\n    if (tinyTable) {\n      var _tinyTable$name;\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n      return (_tinyTable$name = tinyTable[name]) == null ? void 0 : _tinyTable$name.apply(tinyTable, args);\n    }\n  };\n};\nObject.keys(Table.methods).forEach(function(name) {\n  if (!Grid.methods[name]) {\n    Grid.methods[name] = getWrapFunc(name);\n  }\n});\nGrid.version = version;\nGrid.install = function(Vue) {\n  Vue.component(Grid.name, Grid);\n};\n\nexport { Grid$1 as GridAdapter, Column as GridColumn, GlobalConfig$1 as GridConfig, Radio as GridRadio, index as GridTools, Grid as default };\n"]}