UNPKG

vxe-table

Version:

A PC-end table component based on Vxe UI, supporting copy-paste, data pivot table, and high-performance virtual list table solution.

26,538 lines 1.35 MB
(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory(require("vue"), require("@vxe-ui/core"), require("xe-utils"));
	else if(typeof define === 'function' && define.amd)
		define([, "@vxe-ui/core", "xe-utils"], factory);
	else if(typeof exports === 'object')
		exports["VxeUITable"] = factory(require("vue"), require("@vxe-ui/core"), require("xe-utils"));
	else
		root["VxeUITable"] = factory(root["Vue"], root["VxeUI"], root["XEUtils"]);
})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__9274__, __WEBPACK_EXTERNAL_MODULE__4345__, __WEBPACK_EXTERNAL_MODULE__8871__) {
return /******/ (function() { // webpackBootstrap
/******/ 	"use strict";
/******/ 	var __webpack_modules__ = ({

/***/ 9274:
/***/ (function(module) {

module.exports = __WEBPACK_EXTERNAL_MODULE__9274__;

/***/ }),

/***/ 4345:
/***/ (function(module) {

module.exports = __WEBPACK_EXTERNAL_MODULE__4345__;

/***/ }),

/***/ 8871:
/***/ (function(module) {

module.exports = __WEBPACK_EXTERNAL_MODULE__8871__;

/***/ }),

/***/ 9306:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var isCallable = __webpack_require__(4901);
var tryToString = __webpack_require__(6823);

var $TypeError = TypeError;

// `Assert: IsCallable(argument) is true`
module.exports = function (argument) {
  if (isCallable(argument)) return argument;
  throw new $TypeError(tryToString(argument) + ' is not a function');
};


/***/ }),

/***/ 6469:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var wellKnownSymbol = __webpack_require__(8227);
var create = __webpack_require__(2360);
var defineProperty = (__webpack_require__(4913).f);

var UNSCOPABLES = wellKnownSymbol('unscopables');
var ArrayPrototype = Array.prototype;

// Array.prototype[@@unscopables]
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
if (ArrayPrototype[UNSCOPABLES] === undefined) {
  defineProperty(ArrayPrototype, UNSCOPABLES, {
    configurable: true,
    value: create(null)
  });
}

// add a key to Array.prototype[@@unscopables]
module.exports = function (key) {
  ArrayPrototype[UNSCOPABLES][key] = true;
};


/***/ }),

/***/ 679:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var isPrototypeOf = __webpack_require__(1625);

var $TypeError = TypeError;

module.exports = function (it, Prototype) {
  if (isPrototypeOf(Prototype, it)) return it;
  throw new $TypeError('Incorrect invocation');
};


/***/ }),

/***/ 8551:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var isObject = __webpack_require__(34);

var $String = String;
var $TypeError = TypeError;

// `Assert: Type(argument) is Object`
module.exports = function (argument) {
  if (isObject(argument)) return argument;
  throw new $TypeError($String(argument) + ' is not an object');
};


/***/ }),

/***/ 9617:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var toIndexedObject = __webpack_require__(5397);
var toAbsoluteIndex = __webpack_require__(5610);
var lengthOfArrayLike = __webpack_require__(6198);

// `Array.prototype.{ indexOf, includes }` methods implementation
var createMethod = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIndexedObject($this);
    var length = lengthOfArrayLike(O);
    if (length === 0) return !IS_INCLUDES && -1;
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare -- NaN check
    if (IS_INCLUDES && el !== el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare -- NaN check
      if (value !== value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) {
      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};

module.exports = {
  // `Array.prototype.includes` method
  // https://tc39.es/ecma262/#sec-array.prototype.includes
  includes: createMethod(true),
  // `Array.prototype.indexOf` method
  // https://tc39.es/ecma262/#sec-array.prototype.indexof
  indexOf: createMethod(false)
};


/***/ }),

/***/ 4527:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var DESCRIPTORS = __webpack_require__(3724);
var isArray = __webpack_require__(4376);

var $TypeError = TypeError;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;

// Safari < 13 does not throw an error in this case
var SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {
  // makes no sense without proper strict mode support
  if (this !== undefined) return true;
  try {
    // eslint-disable-next-line es/no-object-defineproperty -- safe
    Object.defineProperty([], 'length', { writable: false }).length = 1;
  } catch (error) {
    return error instanceof TypeError;
  }
}();

module.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {
  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {
    throw new $TypeError('Cannot set read only .length');
  } return O.length = length;
} : function (O, length) {
  return O.length = length;
};


/***/ }),

/***/ 6319:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var anObject = __webpack_require__(8551);
var iteratorClose = __webpack_require__(9539);

// call something on iterator step with safe closing on error
module.exports = function (iterator, fn, value, ENTRIES) {
  try {
    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
  } catch (error) {
    iteratorClose(iterator, 'throw', error);
  }
};


/***/ }),

/***/ 2195:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var uncurryThis = __webpack_require__(9504);

var toString = uncurryThis({}.toString);
var stringSlice = uncurryThis(''.slice);

module.exports = function (it) {
  return stringSlice(toString(it), 8, -1);
};


/***/ }),

/***/ 6955:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var TO_STRING_TAG_SUPPORT = __webpack_require__(2140);
var isCallable = __webpack_require__(4901);
var classofRaw = __webpack_require__(2195);
var wellKnownSymbol = __webpack_require__(8227);

var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var $Object = Object;

// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';

// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
  try {
    return it[key];
  } catch (error) { /* empty */ }
};

// getting tag from ES6+ `Object.prototype.toString`
module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
  var O, tag, result;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag
    // builtinTag case
    : CORRECT_ARGUMENTS ? classofRaw(O)
    // ES3 arguments fallback
    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;
};


/***/ }),

/***/ 7740:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var hasOwn = __webpack_require__(9297);
var ownKeys = __webpack_require__(5031);
var getOwnPropertyDescriptorModule = __webpack_require__(7347);
var definePropertyModule = __webpack_require__(4913);

module.exports = function (target, source, exceptions) {
  var keys = ownKeys(source);
  var defineProperty = definePropertyModule.f;
  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
  for (var i = 0; i < keys.length; i++) {
    var key = keys[i];
    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
      defineProperty(target, key, getOwnPropertyDescriptor(source, key));
    }
  }
};


/***/ }),

/***/ 2211:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var fails = __webpack_require__(9039);

module.exports = !fails(function () {
  function F() { /* empty */ }
  F.prototype.constructor = null;
  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing
  return Object.getPrototypeOf(new F()) !== F.prototype;
});


/***/ }),

/***/ 2529:
/***/ (function(module) {


// `CreateIterResultObject` abstract operation
// https://tc39.es/ecma262/#sec-createiterresultobject
module.exports = function (value, done) {
  return { value: value, done: done };
};


/***/ }),

/***/ 6699:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var DESCRIPTORS = __webpack_require__(3724);
var definePropertyModule = __webpack_require__(4913);
var createPropertyDescriptor = __webpack_require__(6980);

module.exports = DESCRIPTORS ? function (object, key, value) {
  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),

/***/ 6980:
/***/ (function(module) {


module.exports = function (bitmap, value) {
  return {
    enumerable: !(bitmap & 1),
    configurable: !(bitmap & 2),
    writable: !(bitmap & 4),
    value: value
  };
};


/***/ }),

/***/ 4659:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var DESCRIPTORS = __webpack_require__(3724);
var definePropertyModule = __webpack_require__(4913);
var createPropertyDescriptor = __webpack_require__(6980);

module.exports = function (object, key, value) {
  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));
  else object[key] = value;
};


/***/ }),

/***/ 2106:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var makeBuiltIn = __webpack_require__(283);
var defineProperty = __webpack_require__(4913);

module.exports = function (target, name, descriptor) {
  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });
  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });
  return defineProperty.f(target, name, descriptor);
};


/***/ }),

/***/ 6840:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var isCallable = __webpack_require__(4901);
var definePropertyModule = __webpack_require__(4913);
var makeBuiltIn = __webpack_require__(283);
var defineGlobalProperty = __webpack_require__(9433);

module.exports = function (O, key, value, options) {
  if (!options) options = {};
  var simple = options.enumerable;
  var name = options.name !== undefined ? options.name : key;
  if (isCallable(value)) makeBuiltIn(value, name, options);
  if (options.global) {
    if (simple) O[key] = value;
    else defineGlobalProperty(key, value);
  } else {
    try {
      if (!options.unsafe) delete O[key];
      else if (O[key]) simple = true;
    } catch (error) { /* empty */ }
    if (simple) O[key] = value;
    else definePropertyModule.f(O, key, {
      value: value,
      enumerable: false,
      configurable: !options.nonConfigurable,
      writable: !options.nonWritable
    });
  } return O;
};


/***/ }),

/***/ 6279:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var defineBuiltIn = __webpack_require__(6840);

module.exports = function (target, src, options) {
  for (var key in src) defineBuiltIn(target, key, src[key], options);
  return target;
};


/***/ }),

/***/ 9433:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var globalThis = __webpack_require__(4576);

// eslint-disable-next-line es/no-object-defineproperty -- safe
var defineProperty = Object.defineProperty;

module.exports = function (key, value) {
  try {
    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });
  } catch (error) {
    globalThis[key] = value;
  } return value;
};


/***/ }),

/***/ 3724:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var fails = __webpack_require__(9039);

// Detect IE8's incomplete defineProperty implementation
module.exports = !fails(function () {
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;
});


/***/ }),

/***/ 4055:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var globalThis = __webpack_require__(4576);
var isObject = __webpack_require__(34);

var document = globalThis.document;
// typeof document.createElement is 'object' in old IE
var EXISTS = isObject(document) && isObject(document.createElement);

module.exports = function (it) {
  return EXISTS ? document.createElement(it) : {};
};


/***/ }),

/***/ 6837:
/***/ (function(module) {


var $TypeError = TypeError;
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991

module.exports = function (it) {
  if (it > MAX_SAFE_INTEGER) throw new $TypeError('Maximum allowed index exceeded');
  return it;
};


/***/ }),

/***/ 8727:
/***/ (function(module) {


// IE8- don't enum bug keys
module.exports = [
  'constructor',
  'hasOwnProperty',
  'isPrototypeOf',
  'propertyIsEnumerable',
  'toLocaleString',
  'toString',
  'valueOf'
];


/***/ }),

/***/ 2839:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var globalThis = __webpack_require__(4576);

var navigator = globalThis.navigator;
var userAgent = navigator && navigator.userAgent;

module.exports = userAgent ? String(userAgent) : '';


/***/ }),

/***/ 9519:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var globalThis = __webpack_require__(4576);
var userAgent = __webpack_require__(2839);

var process = globalThis.process;
var Deno = globalThis.Deno;
var versions = process && process.versions || Deno && Deno.version;
var v8 = versions && versions.v8;
var match, version;

if (v8) {
  match = v8.split('.');
  // in old Chrome, versions of V8 isn't V8 = Chrome / 10
  // but their correct versions are not interesting for us
  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
}

// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
// so check `userAgent` even if `.v8` exists, but 0
if (!version && userAgent) {
  match = userAgent.match(/Edge\/(\d+)/);
  if (!match || match[1] >= 74) {
    match = userAgent.match(/Chrome\/(\d+)/);
    if (match) version = +match[1];
  }
}

module.exports = version;


/***/ }),

/***/ 6518:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var globalThis = __webpack_require__(4576);
var getOwnPropertyDescriptor = (__webpack_require__(7347).f);
var createNonEnumerableProperty = __webpack_require__(6699);
var defineBuiltIn = __webpack_require__(6840);
var defineGlobalProperty = __webpack_require__(9433);
var copyConstructorProperties = __webpack_require__(7740);
var isForced = __webpack_require__(2796);

/*
  options.target         - name of the target object
  options.global         - target is the global object
  options.stat           - export as static methods of target
  options.proto          - export as prototype methods of target
  options.real           - real prototype method for the `pure` version
  options.forced         - export even if the native feature is available
  options.bind           - bind methods to the target, required for the `pure` version
  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version
  options.unsafe         - use the simple assignment of property instead of delete + defineProperty
  options.sham           - add a flag to not completely full polyfills
  options.enumerable     - export as enumerable property
  options.dontCallGetSet - prevent calling a getter on target
  options.name           - the .name of the function if it does not match the key
*/
module.exports = function (options, source) {
  var TARGET = options.target;
  var GLOBAL = options.global;
  var STATIC = options.stat;
  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
  if (GLOBAL) {
    target = globalThis;
  } else if (STATIC) {
    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});
  } else {
    target = globalThis[TARGET] && globalThis[TARGET].prototype;
  }
  if (target) for (key in source) {
    sourceProperty = source[key];
    if (options.dontCallGetSet) {
      descriptor = getOwnPropertyDescriptor(target, key);
      targetProperty = descriptor && descriptor.value;
    } else targetProperty = target[key];
    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
    // contained in target
    if (!FORCED && targetProperty !== undefined) {
      if (typeof sourceProperty == typeof targetProperty) continue;
      copyConstructorProperties(sourceProperty, targetProperty);
    }
    // add a flag to not completely full polyfills
    if (options.sham || (targetProperty && targetProperty.sham)) {
      createNonEnumerableProperty(sourceProperty, 'sham', true);
    }
    defineBuiltIn(target, key, sourceProperty, options);
  }
};


/***/ }),

/***/ 9039:
/***/ (function(module) {


module.exports = function (exec) {
  try {
    return !!exec();
  } catch (error) {
    return true;
  }
};


/***/ }),

/***/ 8745:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var NATIVE_BIND = __webpack_require__(616);

var FunctionPrototype = Function.prototype;
var apply = FunctionPrototype.apply;
var call = FunctionPrototype.call;

// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe
module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {
  return call.apply(apply, arguments);
});


/***/ }),

/***/ 6080:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var uncurryThis = __webpack_require__(7476);
var aCallable = __webpack_require__(9306);
var NATIVE_BIND = __webpack_require__(616);

var bind = uncurryThis(uncurryThis.bind);

// optional / simple context binding
module.exports = function (fn, that) {
  aCallable(fn);
  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),

/***/ 616:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var fails = __webpack_require__(9039);

module.exports = !fails(function () {
  // eslint-disable-next-line es/no-function-prototype-bind -- safe
  var test = function () { /* empty */ }.bind();
  // eslint-disable-next-line no-prototype-builtins -- safe
  return typeof test != 'function' || test.hasOwnProperty('prototype');
});


/***/ }),

/***/ 9565:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var NATIVE_BIND = __webpack_require__(616);

var call = Function.prototype.call;
// eslint-disable-next-line es/no-function-prototype-bind -- safe
module.exports = NATIVE_BIND ? call.bind(call) : function () {
  return call.apply(call, arguments);
};


/***/ }),

/***/ 350:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var DESCRIPTORS = __webpack_require__(3724);
var hasOwn = __webpack_require__(9297);

var FunctionPrototype = Function.prototype;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;

var EXISTS = hasOwn(FunctionPrototype, 'name');
// additional protection from minified / mangled / dropped function names
var PROPER = EXISTS && function something() { /* empty */ }.name === 'something';
var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));

module.exports = {
  EXISTS: EXISTS,
  PROPER: PROPER,
  CONFIGURABLE: CONFIGURABLE
};


/***/ }),

/***/ 7476:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var classofRaw = __webpack_require__(2195);
var uncurryThis = __webpack_require__(9504);

module.exports = function (fn) {
  // Nashorn bug:
  //   https://github.com/zloirock/core-js/issues/1128
  //   https://github.com/zloirock/core-js/issues/1130
  if (classofRaw(fn) === 'Function') return uncurryThis(fn);
};


/***/ }),

/***/ 9504:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var NATIVE_BIND = __webpack_require__(616);

var FunctionPrototype = Function.prototype;
var call = FunctionPrototype.call;
// eslint-disable-next-line es/no-function-prototype-bind -- safe
var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);

module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {
  return function () {
    return call.apply(fn, arguments);
  };
};


/***/ }),

/***/ 7751:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var globalThis = __webpack_require__(4576);
var isCallable = __webpack_require__(4901);

var aFunction = function (argument) {
  return isCallable(argument) ? argument : undefined;
};

module.exports = function (namespace, method) {
  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];
};


/***/ }),

/***/ 1767:
/***/ (function(module) {


// `GetIteratorDirect(obj)` abstract operation
// https://tc39.es/ecma262/#sec-getiteratordirect
module.exports = function (obj) {
  return {
    iterator: obj,
    next: obj.next,
    done: false
  };
};


/***/ }),

/***/ 851:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var classof = __webpack_require__(6955);
var getMethod = __webpack_require__(5966);
var isNullOrUndefined = __webpack_require__(4117);
var Iterators = __webpack_require__(6269);
var wellKnownSymbol = __webpack_require__(8227);

var ITERATOR = wellKnownSymbol('iterator');

module.exports = function (it) {
  if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)
    || getMethod(it, '@@iterator')
    || Iterators[classof(it)];
};


/***/ }),

/***/ 81:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var call = __webpack_require__(9565);
var aCallable = __webpack_require__(9306);
var anObject = __webpack_require__(8551);
var tryToString = __webpack_require__(6823);
var getIteratorMethod = __webpack_require__(851);

var $TypeError = TypeError;

module.exports = function (argument, usingIterator) {
  var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;
  if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));
  throw new $TypeError(tryToString(argument) + ' is not iterable');
};


/***/ }),

/***/ 5966:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var aCallable = __webpack_require__(9306);
var isNullOrUndefined = __webpack_require__(4117);

// `GetMethod` abstract operation
// https://tc39.es/ecma262/#sec-getmethod
module.exports = function (V, P) {
  var func = V[P];
  return isNullOrUndefined(func) ? undefined : aCallable(func);
};


/***/ }),

/***/ 4576:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var check = function (it) {
  return it && it.Math === Math && it;
};

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
module.exports =
  // eslint-disable-next-line es/no-global-this -- safe
  check(typeof globalThis == 'object' && globalThis) ||
  check(typeof window == 'object' && window) ||
  // eslint-disable-next-line no-restricted-globals -- safe
  check(typeof self == 'object' && self) ||
  check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||
  check(typeof this == 'object' && this) ||
  // eslint-disable-next-line no-new-func -- fallback
  (function () { return this; })() || Function('return this')();


/***/ }),

/***/ 9297:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var uncurryThis = __webpack_require__(9504);
var toObject = __webpack_require__(8981);

var hasOwnProperty = uncurryThis({}.hasOwnProperty);

// `HasOwnProperty` abstract operation
// https://tc39.es/ecma262/#sec-hasownproperty
// eslint-disable-next-line es/no-object-hasown -- safe
module.exports = Object.hasOwn || function hasOwn(it, key) {
  return hasOwnProperty(toObject(it), key);
};


/***/ }),

/***/ 421:
/***/ (function(module) {


module.exports = {};


/***/ }),

/***/ 397:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var getBuiltIn = __webpack_require__(7751);

module.exports = getBuiltIn('document', 'documentElement');


/***/ }),

/***/ 5917:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var DESCRIPTORS = __webpack_require__(3724);
var fails = __webpack_require__(9039);
var createElement = __webpack_require__(4055);

// Thanks to IE8 for its funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
  return Object.defineProperty(createElement('div'), 'a', {
    get: function () { return 7; }
  }).a !== 7;
});


/***/ }),

/***/ 7055:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var uncurryThis = __webpack_require__(9504);
var fails = __webpack_require__(9039);
var classof = __webpack_require__(2195);

var $Object = Object;
var split = uncurryThis(''.split);

// fallback for non-array-like ES3 and non-enumerable old V8 strings
module.exports = fails(function () {
  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
  // eslint-disable-next-line no-prototype-builtins -- safe
  return !$Object('z').propertyIsEnumerable(0);
}) ? function (it) {
  return classof(it) === 'String' ? split(it, '') : $Object(it);
} : $Object;


/***/ }),

/***/ 3706:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var uncurryThis = __webpack_require__(9504);
var isCallable = __webpack_require__(4901);
var store = __webpack_require__(7629);

var functionToString = uncurryThis(Function.toString);

// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
if (!isCallable(store.inspectSource)) {
  store.inspectSource = function (it) {
    return functionToString(it);
  };
}

module.exports = store.inspectSource;


/***/ }),

/***/ 1181:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var NATIVE_WEAK_MAP = __webpack_require__(8622);
var globalThis = __webpack_require__(4576);
var isObject = __webpack_require__(34);
var createNonEnumerableProperty = __webpack_require__(6699);
var hasOwn = __webpack_require__(9297);
var shared = __webpack_require__(7629);
var sharedKey = __webpack_require__(6119);
var hiddenKeys = __webpack_require__(421);

var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
var TypeError = globalThis.TypeError;
var WeakMap = globalThis.WeakMap;
var set, get, has;

var enforce = function (it) {
  return has(it) ? get(it) : set(it, {});
};

var getterFor = function (TYPE) {
  return function (it) {
    var state;
    if (!isObject(it) || (state = get(it)).type !== TYPE) {
      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');
    } return state;
  };
};

if (NATIVE_WEAK_MAP || shared.state) {
  var store = shared.state || (shared.state = new WeakMap());
  /* eslint-disable no-self-assign -- prototype methods protection */
  store.get = store.get;
  store.has = store.has;
  store.set = store.set;
  /* eslint-enable no-self-assign -- prototype methods protection */
  set = function (it, metadata) {
    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
    metadata.facade = it;
    store.set(it, metadata);
    return metadata;
  };
  get = function (it) {
    return store.get(it) || {};
  };
  has = function (it) {
    return store.has(it);
  };
} else {
  var STATE = sharedKey('state');
  hiddenKeys[STATE] = true;
  set = function (it, metadata) {
    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
    metadata.facade = it;
    createNonEnumerableProperty(it, STATE, metadata);
    return metadata;
  };
  get = function (it) {
    return hasOwn(it, STATE) ? it[STATE] : {};
  };
  has = function (it) {
    return hasOwn(it, STATE);
  };
}

module.exports = {
  set: set,
  get: get,
  has: has,
  enforce: enforce,
  getterFor: getterFor
};


/***/ }),

/***/ 4209:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var wellKnownSymbol = __webpack_require__(8227);
var Iterators = __webpack_require__(6269);

var ITERATOR = wellKnownSymbol('iterator');
var ArrayPrototype = Array.prototype;

// check on default Array iterator
module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
};


/***/ }),

/***/ 4376:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var classof = __webpack_require__(2195);

// `IsArray` abstract operation
// https://tc39.es/ecma262/#sec-isarray
// eslint-disable-next-line es/no-array-isarray -- safe
module.exports = Array.isArray || function isArray(argument) {
  return classof(argument) === 'Array';
};


/***/ }),

/***/ 4901:
/***/ (function(module) {


// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot
var documentAll = typeof document == 'object' && document.all;

// `IsCallable` abstract operation
// https://tc39.es/ecma262/#sec-iscallable
// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing
module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {
  return typeof argument == 'function' || argument === documentAll;
} : function (argument) {
  return typeof argument == 'function';
};


/***/ }),

/***/ 2796:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var fails = __webpack_require__(9039);
var isCallable = __webpack_require__(4901);

var replacement = /#|\.prototype\./;

var isForced = function (feature, detection) {
  var value = data[normalize(feature)];
  return value === POLYFILL ? true
    : value === NATIVE ? false
    : isCallable(detection) ? fails(detection)
    : !!detection;
};

var normalize = isForced.normalize = function (string) {
  return String(string).replace(replacement, '.').toLowerCase();
};

var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';

module.exports = isForced;


/***/ }),

/***/ 4117:
/***/ (function(module) {


// we can't use just `it == null` since of `document.all` special case
// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec
module.exports = function (it) {
  return it === null || it === undefined;
};


/***/ }),

/***/ 34:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var isCallable = __webpack_require__(4901);

module.exports = function (it) {
  return typeof it == 'object' ? it !== null : isCallable(it);
};


/***/ }),

/***/ 6395:
/***/ (function(module) {


module.exports = false;


/***/ }),

/***/ 757:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var getBuiltIn = __webpack_require__(7751);
var isCallable = __webpack_require__(4901);
var isPrototypeOf = __webpack_require__(1625);
var USE_SYMBOL_AS_UID = __webpack_require__(7040);

var $Object = Object;

module.exports = USE_SYMBOL_AS_UID ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  var $Symbol = getBuiltIn('Symbol');
  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));
};


/***/ }),

/***/ 2652:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var bind = __webpack_require__(6080);
var call = __webpack_require__(9565);
var anObject = __webpack_require__(8551);
var tryToString = __webpack_require__(6823);
var isArrayIteratorMethod = __webpack_require__(4209);
var lengthOfArrayLike = __webpack_require__(6198);
var isPrototypeOf = __webpack_require__(1625);
var getIterator = __webpack_require__(81);
var getIteratorMethod = __webpack_require__(851);
var iteratorClose = __webpack_require__(9539);

var $TypeError = TypeError;

var Result = function (stopped, result) {
  this.stopped = stopped;
  this.result = result;
};

var ResultPrototype = Result.prototype;

module.exports = function (iterable, unboundFunction, options) {
  var that = options && options.that;
  var AS_ENTRIES = !!(options && options.AS_ENTRIES);
  var IS_RECORD = !!(options && options.IS_RECORD);
  var IS_ITERATOR = !!(options && options.IS_ITERATOR);
  var INTERRUPTED = !!(options && options.INTERRUPTED);
  var fn = bind(unboundFunction, that);
  var iterator, iterFn, index, length, result, next, step;

  var stop = function (condition) {
    var $iterator = iterator;
    iterator = undefined;
    if ($iterator) iteratorClose($iterator, 'normal');
    return new Result(true, condition);
  };

  var callFn = function (value) {
    if (AS_ENTRIES) {
      anObject(value);
      return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
    } return INTERRUPTED ? fn(value, stop) : fn(value);
  };

  if (IS_RECORD) {
    iterator = iterable.iterator;
  } else if (IS_ITERATOR) {
    iterator = iterable;
  } else {
    iterFn = getIteratorMethod(iterable);
    if (!iterFn) throw new $TypeError(tryToString(iterable) + ' is not iterable');
    // optimisation for array iterators
    if (isArrayIteratorMethod(iterFn)) {
      for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {
        result = callFn(iterable[index]);
        if (result && isPrototypeOf(ResultPrototype, result)) return result;
      } return new Result(false);
    }
    iterator = getIterator(iterable, iterFn);
  }

  next = IS_RECORD ? iterable.next : iterator.next;
  while (!(step = call(next, iterator)).done) {
    // `IteratorValue` errors should propagate without closing the iterator
    var value = step.value;
    try {
      result = callFn(value);
    } catch (error) {
      if (iterator) iteratorClose(iterator, 'throw', error);
      else throw error;
    }
    if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;
  } return new Result(false);
};


/***/ }),

/***/ 1385:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var iteratorClose = __webpack_require__(9539);

module.exports = function (iters, kind, value) {
  for (var i = iters.length - 1; i >= 0; i--) {
    if (iters[i] === undefined) continue;
    try {
      value = iteratorClose(iters[i].iterator, kind, value);
    } catch (error) {
      kind = 'throw';
      value = error;
    }
  }
  if (kind === 'throw') throw value;
  return value;
};


/***/ }),

/***/ 9539:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var call = __webpack_require__(9565);
var anObject = __webpack_require__(8551);
var getMethod = __webpack_require__(5966);

module.exports = function (iterator, kind, value) {
  var innerResult, innerError;
  anObject(iterator);
  try {
    innerResult = getMethod(iterator, 'return');
    if (!innerResult) {
      if (kind === 'throw') throw value;
      return value;
    }
    innerResult = call(innerResult, iterator);
  } catch (error) {
    innerError = true;
    innerResult = error;
  }
  if (kind === 'throw') throw value;
  if (innerError) throw innerResult;
  anObject(innerResult);
  return value;
};


/***/ }),

/***/ 9462:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var call = __webpack_require__(9565);
var create = __webpack_require__(2360);
var createNonEnumerableProperty = __webpack_require__(6699);
var defineBuiltIns = __webpack_require__(6279);
var wellKnownSymbol = __webpack_require__(8227);
var InternalStateModule = __webpack_require__(1181);
var getMethod = __webpack_require__(5966);
var IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);
var createIterResultObject = __webpack_require__(2529);
var iteratorClose = __webpack_require__(9539);
var iteratorCloseAll = __webpack_require__(1385);

var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var ITERATOR_HELPER = 'IteratorHelper';
var WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';
var NORMAL = 'normal';
var THROW = 'throw';
var setInternalState = InternalStateModule.set;

var createIteratorProxyPrototype = function (IS_ITERATOR) {
  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);

  return defineBuiltIns(create(IteratorPrototype), {
    next: function next() {
      var state = getInternalState(this);
      // for simplification:
      //   for `%WrapForValidIteratorPrototype%.next` or with `state.returnHandlerResult` our `nextHandler` returns `IterResultObject`
      //   for `%IteratorHelperPrototype%.next` - just a value
      if (IS_ITERATOR) return state.nextHandler();
      if (state.done) return createIterResultObject(undefined, true);
      try {
        var result = state.nextHandler();
        return state.returnHandlerResult ? result : createIterResultObject(result, state.done);
      } catch (error) {
        state.done = true;
        throw error;
      }
    },
    'return': function () {
      var state = getInternalState(this);
      var iterator = state.iterator;
      var done = state.done;
      state.done = true;
      if (IS_ITERATOR) {
        var returnMethod = getMethod(iterator, 'return');
        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);
      }
      if (done) return createIterResultObject(undefined, true);
      if (state.inner) try {
        iteratorClose(state.inner.iterator, NORMAL);
      } catch (error) {
        return iteratorClose(iterator, THROW, error);
      }
      if (state.openIters) try {
        iteratorCloseAll(state.openIters, NORMAL);
      } catch (error) {
        if (iterator) return iteratorClose(iterator, THROW, error);
        throw error;
      }
      if (iterator) iteratorClose(iterator, NORMAL);
      return createIterResultObject(undefined, true);
    }
  });
};

var WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);
var IteratorHelperPrototype = createIteratorProxyPrototype(false);

createNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');

module.exports = function (nextHandler, IS_ITERATOR, RETURN_HANDLER_RESULT) {
  var IteratorProxy = function Iterator(record, state) {
    if (state) {
      state.iterator = record.iterator;
      state.next = record.next;
    } else state = record;
    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;
    state.returnHandlerResult = !!RETURN_HANDLER_RESULT;
    state.nextHandler = nextHandler;
    state.counter = 0;
    state.done = false;
    setInternalState(this, state);
  };

  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;

  return IteratorProxy;
};


/***/ }),

/***/ 684:
/***/ (function(module) {


// Should throw an error on invalid iterator
// https://issues.chromium.org/issues/336839115
module.exports = function (methodName, argument) {
  // eslint-disable-next-line es/no-iterator -- required for testing
  var method = typeof Iterator == 'function' && Iterator.prototype[methodName];
  if (method) try {
    method.call({ next: null }, argument).next();
  } catch (error) {
    return true;
  }
};


/***/ }),

/***/ 4549:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var globalThis = __webpack_require__(4576);

// https://github.com/tc39/ecma262/pull/3467
module.exports = function (METHOD_NAME, ExpectedError) {
  var Iterator = globalThis.Iterator;
  var IteratorPrototype = Iterator && Iterator.prototype;
  var method = IteratorPrototype && IteratorPrototype[METHOD_NAME];

  var CLOSED = false;

  if (method) try {
    method.call({
      next: function () { return { done: true }; },
      'return': function () { CLOSED = true; }
    }, -1);
  } catch (error) {
    // https://bugs.webkit.org/show_bug.cgi?id=291195
    if (!(error instanceof ExpectedError)) CLOSED = false;
  }

  if (!CLOSED) return method;
};


/***/ }),

/***/ 7657:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var fails = __webpack_require__(9039);
var isCallable = __webpack_require__(4901);
var isObject = __webpack_require__(34);
var create = __webpack_require__(2360);
var getPrototypeOf = __webpack_require__(2787);
var defineBuiltIn = __webpack_require__(6840);
var wellKnownSymbol = __webpack_require__(8227);
var IS_PURE = __webpack_require__(6395);

var ITERATOR = wellKnownSymbol('iterator');
var BUGGY_SAFARI_ITERATORS = false;

// `%IteratorPrototype%` object
// https://tc39.es/ecma262/#sec-%iteratorprototype%-object
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;

/* eslint-disable es/no-array-prototype-keys -- safe */
if ([].keys) {
  arrayIterator = [].keys();
  // Safari 8 has buggy iterators w/o `next`
  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
  else {
    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
  }
}

var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {
  var test = {};
  // FF44- legacy iterators case
  return IteratorPrototype[ITERATOR].call(test) !== test;
});

if (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};
else if (IS_PURE) IteratorPrototype = create(IteratorPrototype);

// `%IteratorPrototype%[@@iterator]()` method
// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator
if (!isCallable(IteratorPrototype[ITERATOR])) {
  defineBuiltIn(IteratorPrototype, ITERATOR, function () {
    return this;
  });
}

module.exports = {
  IteratorPrototype: IteratorPrototype,
  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
};


/***/ }),

/***/ 6269:
/***/ (function(module) {


module.exports = {};


/***/ }),

/***/ 6198:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var toLength = __webpack_require__(8014);

// `LengthOfArrayLike` abstract operation
// https://tc39.es/ecma262/#sec-lengthofarraylike
module.exports = function (obj) {
  return toLength(obj.length);
};


/***/ }),

/***/ 283:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var uncurryThis = __webpack_require__(9504);
var fails = __webpack_require__(9039);
var isCallable = __webpack_require__(4901);
var hasOwn = __webpack_require__(9297);
var DESCRIPTORS = __webpack_require__(3724);
var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(350).CONFIGURABLE);
var inspectSource = __webpack_require__(3706);
var InternalStateModule = __webpack_require__(1181);

var enforceInternalState = InternalStateModule.enforce;
var getInternalState = InternalStateModule.get;
var $String = String;
// eslint-disable-next-line es/no-object-defineproperty -- safe
var defineProperty = Object.defineProperty;
var stringSlice = uncurryThis(''.slice);
var replace = uncurryThis(''.replace);
var join = uncurryThis([].join);

var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {
  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;
});

var TEMPLATE = String(String).split('String');

var makeBuiltIn = module.exports = function (value, name, options) {
  if (stringSlice($String(name), 0, 7) === 'Symbol(') {
    name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']';
  }
  if (options && options.getter) name = 'get ' + name;
  if (options && options.setter) name = 'set ' + name;
  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });
    else value.name = name;
  }
  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {
    defineProperty(value, 'length', { value: options.arity });
  }
  try {
    if (options && hasOwn(options, 'constructor') && options.constructor) {
      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });
    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable
    } else if (value.prototype) value.prototype = undefined;
  } catch (error) { /* empty */ }
  var state = enforceInternalState(value);
  if (!hasOwn(state, 'source')) {
    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');
  } return value;
};

// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
// eslint-disable-next-line no-extend-native -- required
Function.prototype.toString = makeBuiltIn(function toString() {
  return isCallable(this) && getInternalState(this).source || inspectSource(this);
}, 'toString');


/***/ }),

/***/ 741:
/***/ (function(module) {


var ceil = Math.ceil;
var floor = Math.floor;

// `Math.trunc` method
// https://tc39.es/ecma262/#sec-math.trunc
// eslint-disable-next-line es/no-math-trunc -- safe
module.exports = Math.trunc || function trunc(x) {
  var n = +x;
  return (n > 0 ? floor : ceil)(n);
};


/***/ }),

/***/ 2360:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


/* global ActiveXObject -- old IE, WSH */
var anObject = __webpack_require__(8551);
var definePropertiesModule = __webpack_require__(6801);
var enumBugKeys = __webpack_require__(8727);
var hiddenKeys = __webpack_require__(421);
var html = __webpack_require__(397);
var documentCreateElement = __webpack_require__(4055);
var sharedKey = __webpack_require__(6119);

var GT = '>';
var LT = '<';
var PROTOTYPE = 'prototype';
var SCRIPT = 'script';
var IE_PROTO = sharedKey('IE_PROTO');

var EmptyConstructor = function () { /* empty */ };

var scriptTag = function (content) {
  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
};

// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
var NullProtoObjectViaActiveX = function (activeXDocument) {
  activeXDocument.write(scriptTag(''));
  activeXDocument.close();
  var temp = activeXDocument.parentWindow.Object;
  // eslint-disable-next-line no-useless-assignment -- avoid memory leak
  activeXDocument = null;
  return temp;
};

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var NullProtoObjectViaIFrame = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = documentCreateElement('iframe');
  var JS = 'java' + SCRIPT + ':';
  var iframeDocument;
  iframe.style.display = 'none';
  html.appendChild(iframe);
  // https://github.com/zloirock/core-js/issues/475
  iframe.src = String(JS);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(scriptTag('document.F=Object'));
  iframeDocument.close();
  return iframeDocument.F;
};

// Check for document.domain and active x support
// No need to use active x approach when document.domain is not set
// see https://github.com/es-shims/es5-shim/issues/150
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
// avoid IE GC bug
var activeXDocument;
var NullProtoObject = function () {
  try {
    activeXDocument = new ActiveXObject('htmlfile');
  } catch (error) { /* ignore */ }
  NullProtoObject = typeof document != 'undefined'
    ? document.domain && activeXDocument
      ? NullProtoObjectViaActiveX(activeXDocument) // old IE
      : NullProtoObjectViaIFrame()
    : NullProtoObjectViaActiveX(activeXDocument); // WSH
  var length = enumBugKeys.length;
  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
  return NullProtoObject();
};

hiddenKeys[IE_PROTO] = true;

// `Object.create` method
// https://tc39.es/ecma262/#sec-object.create
// eslint-disable-next-line es/no-object-create -- safe
module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    EmptyConstructor[PROTOTYPE] = anObject(O);
    result = new EmptyConstructor();
    EmptyConstructor[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = NullProtoObject();
  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
};


/***/ }),

/***/ 6801:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {


var DESCRIPTORS = __webpack_require__(3724);
var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);
var definePropertyModule = __webpack_require__(4913);
var anObject = __webpack_require__(8551);
var toIndexedObject = __webpack_require__(5397);
var objectKeys = __webpack_require__(1072);

// `Object.defineProperties` method
// https://tc39.es/ecma262/#sec-object.defineproperties
// eslint-disable-next-line es/no-object-defineproperties -- safe
exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var props = toIndexedObject(Properties);
  var keys = objectKeys(Properties);
  var length = keys.length;
  var index = 0;
  var key;
  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
  return O;
};


/***/ }),

/***/ 4913:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {


var DESCRIPTORS = __webpack_require__(3724);
var IE8_DOM_DEFINE = __webpack_require__(5917);
var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(8686);
var anObject = __webpack_require__(8551);
var toPropertyKey = __webpack_require__(6969);

var $TypeError = TypeError;
// eslint-disable-next-line es/no-object-defineproperty -- safe
var $defineProperty = Object.defineProperty;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
var ENUMERABLE = 'enumerable';
var CONFIGURABLE = 'configurable';
var WRITABLE = 'writable';

// `Object.defineProperty` method
// https://tc39.es/ecma262/#sec-object.defineproperty
exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPropertyKey(P);
  anObject(Attributes);
  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
    var current = $getOwnPropertyDescriptor(O, P);
    if (current && current[WRITABLE]) {
      O[P] = Attributes.value;
      Attributes = {
        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
        writable: false
      };
    }
  } return $defineProperty(O, P, Attributes);
} : $defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPropertyKey(P);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return $defineProperty(O, P, Attributes);
  } catch (error) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),

/***/ 7347:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {


var DESCRIPTORS = __webpack_require__(3724);
var call = __webpack_require__(9565);
var propertyIsEnumerableModule = __webpack_require__(8773);
var createPropertyDescriptor = __webpack_require__(6980);
var toIndexedObject = __webpack_require__(5397);
var toPropertyKey = __webpack_require__(6969);
var hasOwn = __webpack_require__(9297);
var IE8_DOM_DEFINE = __webpack_require__(5917);

// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;

// `Object.getOwnPropertyDescriptor` method
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
  O = toIndexedObject(O);
  P = toPropertyKey(P);
  if (IE8_DOM_DEFINE) try {
    return $getOwnPropertyDescriptor(O, P);
  } catch (error) { /* empty */ }
  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
};


/***/ }),

/***/ 8480:
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {


var internalObjectKeys = __webpack_require__(1828);
var enumBugKeys = __webpack_require__(8727);

var hiddenKeys = enumBugKeys.concat('length', 'prototype');

// `Object.getOwnPropertyNames` method
// https://tc39.es/ecma262/#sec-object.getownpropertynames
// eslint-disable-next-line es/no-object-getownpropertynames -- safe
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return internalObjectKeys(O, hiddenKeys);
};


/***/ }),

/***/ 3717:
/***/ (function(__unused_webpack_module, exports) {


// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
exports.f = Object.getOwnPropertySymbols;


/***/ }),

/***/ 2787:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var hasOwn = __webpack_require__(9297);
var isCallable = __webpack_require__(4901);
var toObject = __webpack_require__(8981);
var sharedKey = __webpack_require__(6119);
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(2211);

var IE_PROTO = sharedKey('IE_PROTO');
var $Object = Object;
var ObjectPrototype = $Object.prototype;

// `Object.getPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.getprototypeof
// eslint-disable-next-line es/no-object-getprototypeof -- safe
module.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {
  var object = toObject(O);
  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
  var constructor = object.constructor;
  if (isCallable(constructor) && object instanceof constructor) {
    return constructor.prototype;
  } return object instanceof $Object ? ObjectPrototype : null;
};


/***/ }),

/***/ 1625:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var uncurryThis = __webpack_require__(9504);

module.exports = uncurryThis({}.isPrototypeOf);


/***/ }),

/***/ 1828:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var uncurryThis = __webpack_require__(9504);
var hasOwn = __webpack_require__(9297);
var toIndexedObject = __webpack_require__(5397);
var indexOf = (__webpack_require__(9617).indexOf);
var hiddenKeys = __webpack_require__(421);

var push = uncurryThis([].push);

module.exports = function (object, names) {
  var O = toIndexedObject(object);
  var i = 0;
  var result = [];
  var key;
  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
  // Don't enum bug & hidden keys
  while (names.length > i) if (hasOwn(O, key = names[i++])) {
    ~indexOf(result, key) || push(result, key);
  }
  return result;
};


/***/ }),

/***/ 1072:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var internalObjectKeys = __webpack_require__(1828);
var enumBugKeys = __webpack_require__(8727);

// `Object.keys` method
// https://tc39.es/ecma262/#sec-object.keys
// eslint-disable-next-line es/no-object-keys -- safe
module.exports = Object.keys || function keys(O) {
  return internalObjectKeys(O, enumBugKeys);
};


/***/ }),

/***/ 8773:
/***/ (function(__unused_webpack_module, exports) {


var $propertyIsEnumerable = {}.propertyIsEnumerable;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;

// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);

// `Object.prototype.propertyIsEnumerable` method implementation
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
  var descriptor = getOwnPropertyDescriptor(this, V);
  return !!descriptor && descriptor.enumerable;
} : $propertyIsEnumerable;


/***/ }),

/***/ 4270:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var call = __webpack_require__(9565);
var isCallable = __webpack_require__(4901);
var isObject = __webpack_require__(34);

var $TypeError = TypeError;

// `OrdinaryToPrimitive` abstract operation
// https://tc39.es/ecma262/#sec-ordinarytoprimitive
module.exports = function (input, pref) {
  var fn, val;
  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;
  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
  throw new $TypeError("Can't convert object to primitive value");
};


/***/ }),

/***/ 5031:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var getBuiltIn = __webpack_require__(7751);
var uncurryThis = __webpack_require__(9504);
var getOwnPropertyNamesModule = __webpack_require__(8480);
var getOwnPropertySymbolsModule = __webpack_require__(3717);
var anObject = __webpack_require__(8551);

var concat = uncurryThis([].concat);

// all object keys, includes non-enumerable and symbols
module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
  var keys = getOwnPropertyNamesModule.f(anObject(it));
  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
};


/***/ }),

/***/ 7750:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var isNullOrUndefined = __webpack_require__(4117);

var $TypeError = TypeError;

// `RequireObjectCoercible` abstract operation
// https://tc39.es/ecma262/#sec-requireobjectcoercible
module.exports = function (it) {
  if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it);
  return it;
};


/***/ }),

/***/ 6119:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var shared = __webpack_require__(5745);
var uid = __webpack_require__(3392);

var keys = shared('keys');

module.exports = function (key) {
  return keys[key] || (keys[key] = uid(key));
};


/***/ }),

/***/ 7629:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var IS_PURE = __webpack_require__(6395);
var globalThis = __webpack_require__(4576);
var defineGlobalProperty = __webpack_require__(9433);

var SHARED = '__core-js_shared__';
var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});

(store.versions || (store.versions = [])).push({
  version: '3.49.0',
  mode: IS_PURE ? 'pure' : 'global',
  copyright: '© 2013–2025 Denis Pushkarev (zloirock.ru), 2025–2026 CoreJS Company (core-js.io). All rights reserved.',
  license: 'https://github.com/zloirock/core-js/blob/v3.49.0/LICENSE',
  source: 'https://github.com/zloirock/core-js'
});


/***/ }),

/***/ 5745:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var store = __webpack_require__(7629);

module.exports = function (key, value) {
  return store[key] || (store[key] = value || {});
};


/***/ }),

/***/ 4495:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


/* eslint-disable es/no-symbol -- required for testing */
var V8_VERSION = __webpack_require__(9519);
var fails = __webpack_require__(9039);
var globalThis = __webpack_require__(4576);

var $String = globalThis.String;

// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
  var symbol = Symbol('symbol detection');
  // Chrome 38 Symbol has incorrect toString conversion
  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,
  // of course, fail.
  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||
    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
    !Symbol.sham && V8_VERSION && V8_VERSION < 41;
});


/***/ }),

/***/ 5610:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var toIntegerOrInfinity = __webpack_require__(1291);

var max = Math.max;
var min = Math.min;

// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
module.exports = function (index, length) {
  var integer = toIntegerOrInfinity(index);
  return integer < 0 ? max(integer + length, 0) : min(integer, length);
};


/***/ }),

/***/ 5397:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


// toObject with fallback for non-array-like ES3 strings
var IndexedObject = __webpack_require__(7055);
var requireObjectCoercible = __webpack_require__(7750);

module.exports = function (it) {
  return IndexedObject(requireObjectCoercible(it));
};


/***/ }),

/***/ 1291:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var trunc = __webpack_require__(741);

// `ToIntegerOrInfinity` abstract operation
// https://tc39.es/ecma262/#sec-tointegerorinfinity
module.exports = function (argument) {
  var number = +argument;
  // eslint-disable-next-line no-self-compare -- NaN check
  return number !== number || number === 0 ? 0 : trunc(number);
};


/***/ }),

/***/ 8014:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var toIntegerOrInfinity = __webpack_require__(1291);

var min = Math.min;

// `ToLength` abstract operation
// https://tc39.es/ecma262/#sec-tolength
module.exports = function (argument) {
  var len = toIntegerOrInfinity(argument);
  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};


/***/ }),

/***/ 8981:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var requireObjectCoercible = __webpack_require__(7750);

var $Object = Object;

// `ToObject` abstract operation
// https://tc39.es/ecma262/#sec-toobject
module.exports = function (argument) {
  return $Object(requireObjectCoercible(argument));
};


/***/ }),

/***/ 2777:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var call = __webpack_require__(9565);
var isObject = __webpack_require__(34);
var isSymbol = __webpack_require__(757);
var getMethod = __webpack_require__(5966);
var ordinaryToPrimitive = __webpack_require__(4270);
var wellKnownSymbol = __webpack_require__(8227);

var $TypeError = TypeError;
var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');

// `ToPrimitive` abstract operation
// https://tc39.es/ecma262/#sec-toprimitive
module.exports = function (input, pref) {
  if (!isObject(input) || isSymbol(input)) return input;
  var exoticToPrim = getMethod(input, TO_PRIMITIVE);
  var result;
  if (exoticToPrim) {
    if (pref === undefined) pref = 'default';
    result = call(exoticToPrim, input, pref);
    if (!isObject(result) || isSymbol(result)) return result;
    throw new $TypeError("Can't convert object to primitive value");
  }
  if (pref === undefined) pref = 'number';
  return ordinaryToPrimitive(input, pref);
};


/***/ }),

/***/ 6969:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var toPrimitive = __webpack_require__(2777);
var isSymbol = __webpack_require__(757);

// `ToPropertyKey` abstract operation
// https://tc39.es/ecma262/#sec-topropertykey
module.exports = function (argument) {
  var key = toPrimitive(argument, 'string');
  return isSymbol(key) ? key : key + '';
};


/***/ }),

/***/ 2140:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var wellKnownSymbol = __webpack_require__(8227);

var TO_STRING_TAG = wellKnownSymbol('toStringTag');
var test = {};
// eslint-disable-next-line unicorn/no-immediate-mutation -- ES3 syntax limitation
test[TO_STRING_TAG] = 'z';

module.exports = String(test) === '[object z]';


/***/ }),

/***/ 6823:
/***/ (function(module) {


var $String = String;

module.exports = function (argument) {
  try {
    return $String(argument);
  } catch (error) {
    return 'Object';
  }
};


/***/ }),

/***/ 3392:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var uncurryThis = __webpack_require__(9504);

var id = 0;
var postfix = Math.random();
var toString = uncurryThis(1.1.toString);

module.exports = function (key) {
  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
};


/***/ }),

/***/ 7040:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


/* eslint-disable es/no-symbol -- required for testing */
var NATIVE_SYMBOL = __webpack_require__(4495);

module.exports = NATIVE_SYMBOL &&
  !Symbol.sham &&
  typeof Symbol.iterator == 'symbol';


/***/ }),

/***/ 8686:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var DESCRIPTORS = __webpack_require__(3724);
var fails = __webpack_require__(9039);

// V8 ~ Chrome 36-
// https://bugs.chromium.org/p/v8/issues/detail?id=3334
module.exports = DESCRIPTORS && fails(function () {
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
  return Object.defineProperty(function () { /* empty */ }, 'prototype', {
    value: 42,
    writable: false
  }).prototype !== 42;
});


/***/ }),

/***/ 8622:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var globalThis = __webpack_require__(4576);
var isCallable = __webpack_require__(4901);

var WeakMap = globalThis.WeakMap;

module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));


/***/ }),

/***/ 8227:
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {


var globalThis = __webpack_require__(4576);
var shared = __webpack_require__(5745);
var hasOwn = __webpack_require__(9297);
var uid = __webpack_require__(3392);
var NATIVE_SYMBOL = __webpack_require__(4495);
var USE_SYMBOL_AS_UID = __webpack_require__(7040);

var Symbol = globalThis.Symbol;
var WellKnownSymbolsStore = shared('wks');
var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;

module.exports = function (name) {
  if (!hasOwn(WellKnownSymbolsStore, name)) {
    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)
      ? Symbol[name]
      : createWellKnownSymbol('Symbol.' + name);
  } return WellKnownSymbolsStore[name];
};


/***/ }),

/***/ 4423:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var $includes = (__webpack_require__(9617).includes);
var fails = __webpack_require__(9039);
var addToUnscopables = __webpack_require__(6469);

// FF99+ bug
var BROKEN_ON_SPARSE = fails(function () {
  // eslint-disable-next-line es/no-array-prototype-includes -- detection
  return !Array(1).includes();
});

// Safari 26.4- bug
var BROKEN_ON_SPARSE_WITH_FROM_INDEX = fails(function () {
  // eslint-disable-next-line no-sparse-arrays, es/no-array-prototype-includes -- detection
  return [, 1].includes(undefined, 1);
});

// `Array.prototype.includes` method
// https://tc39.es/ecma262/#sec-array.prototype.includes
$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE || BROKEN_ON_SPARSE_WITH_FROM_INDEX }, {
  includes: function includes(el /* , fromIndex = 0 */) {
    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
  }
});

// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
addToUnscopables('includes');


/***/ }),

/***/ 4114:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var toObject = __webpack_require__(8981);
var lengthOfArrayLike = __webpack_require__(6198);
var setArrayLength = __webpack_require__(4527);
var doesNotExceedSafeInteger = __webpack_require__(6837);
var fails = __webpack_require__(9039);

var INCORRECT_TO_LENGTH = fails(function () {
  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;
});

// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError
// https://bugs.chromium.org/p/v8/issues/detail?id=12681
var properErrorOnNonWritableLength = function () {
  try {
    // eslint-disable-next-line es/no-object-defineproperty -- safe
    Object.defineProperty([], 'length', { writable: false }).push();
  } catch (error) {
    return error instanceof TypeError;
  }
};

var FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();

// `Array.prototype.push` method
// https://tc39.es/ecma262/#sec-array.prototype.push
$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {
  // eslint-disable-next-line no-unused-vars -- required for `.length`
  push: function push(item) {
    var O = toObject(this);
    var len = lengthOfArrayLike(O);
    var argCount = arguments.length;
    doesNotExceedSafeInteger(len + argCount);
    for (var i = 0; i < argCount; i++) {
      O[len] = arguments[i];
      len++;
    }
    setArrayLength(O, len);
    return len;
  }
});


/***/ }),

/***/ 8111:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var globalThis = __webpack_require__(4576);
var anInstance = __webpack_require__(679);
var anObject = __webpack_require__(8551);
var isCallable = __webpack_require__(4901);
var getPrototypeOf = __webpack_require__(2787);
var defineBuiltInAccessor = __webpack_require__(2106);
var createProperty = __webpack_require__(4659);
var fails = __webpack_require__(9039);
var hasOwn = __webpack_require__(9297);
var wellKnownSymbol = __webpack_require__(8227);
var IteratorPrototype = (__webpack_require__(7657).IteratorPrototype);
var DESCRIPTORS = __webpack_require__(3724);
var IS_PURE = __webpack_require__(6395);

var CONSTRUCTOR = 'constructor';
var ITERATOR = 'Iterator';
var TO_STRING_TAG = wellKnownSymbol('toStringTag');

var $TypeError = TypeError;
var NativeIterator = globalThis[ITERATOR];

// FF56- have non-standard global helper `Iterator`
var FORCED = IS_PURE
  || !isCallable(NativeIterator)
  || NativeIterator.prototype !== IteratorPrototype
  // FF44- non-standard `Iterator` passes previous tests
  || !fails(function () { NativeIterator({}); });

var IteratorConstructor = function Iterator() {
  anInstance(this, IteratorPrototype);
  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');
};

var defineIteratorPrototypeAccessor = function (key, value) {
  if (DESCRIPTORS) {
    defineBuiltInAccessor(IteratorPrototype, key, {
      configurable: true,
      get: function () {
        return value;
      },
      set: function (replacement) {
        anObject(this);
        if (this === IteratorPrototype) throw new $TypeError("You can't redefine this property");
        if (hasOwn(this, key)) this[key] = replacement;
        else createProperty(this, key, replacement);
      }
    });
  } else IteratorPrototype[key] = value;
};

if (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);

if (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {
  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);
}

IteratorConstructor.prototype = IteratorPrototype;

// `Iterator` constructor
// https://tc39.es/ecma262/#sec-iterator
$({ global: true, constructor: true, forced: FORCED }, {
  Iterator: IteratorConstructor
});


/***/ }),

/***/ 1148:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var call = __webpack_require__(9565);
var iterate = __webpack_require__(2652);
var aCallable = __webpack_require__(9306);
var anObject = __webpack_require__(8551);
var getIteratorDirect = __webpack_require__(1767);
var iteratorClose = __webpack_require__(9539);
var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);

var everyWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('every', TypeError);

// `Iterator.prototype.every` method
// https://tc39.es/ecma262/#sec-iterator.prototype.every
$({ target: 'Iterator', proto: true, real: true, forced: everyWithoutClosingOnEarlyError }, {
  every: function every(predicate) {
    anObject(this);
    try {
      aCallable(predicate);
    } catch (error) {
      iteratorClose(this, 'throw', error);
    }

    if (everyWithoutClosingOnEarlyError) return call(everyWithoutClosingOnEarlyError, this, predicate);

    var record = getIteratorDirect(this);
    var counter = 0;
    return !iterate(record, function (value, stop) {
      if (!predicate(value, counter++)) return stop();
    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;
  }
});


/***/ }),

/***/ 2489:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var call = __webpack_require__(9565);
var aCallable = __webpack_require__(9306);
var anObject = __webpack_require__(8551);
var getIteratorDirect = __webpack_require__(1767);
var createIteratorProxy = __webpack_require__(9462);
var callWithSafeIterationClosing = __webpack_require__(6319);
var IS_PURE = __webpack_require__(6395);
var iteratorClose = __webpack_require__(9539);
var iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);
var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);

var FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('filter', function () { /* empty */ });
var filterWithoutClosingOnEarlyError = !IS_PURE && !FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR
  && iteratorHelperWithoutClosingOnEarlyError('filter', TypeError);

var FORCED = IS_PURE || FILTER_WITHOUT_THROWING_ON_INVALID_ITERATOR || filterWithoutClosingOnEarlyError;

var IteratorProxy = createIteratorProxy(function () {
  var iterator = this.iterator;
  var predicate = this.predicate;
  var next = this.next;
  var result, done, value;
  while (true) {
    result = anObject(call(next, iterator));
    done = this.done = !!result.done;
    if (done) return;
    value = result.value;
    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;
  }
});

// `Iterator.prototype.filter` method
// https://tc39.es/ecma262/#sec-iterator.prototype.filter
$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
  filter: function filter(predicate) {
    anObject(this);
    try {
      aCallable(predicate);
    } catch (error) {
      iteratorClose(this, 'throw', error);
    }

    if (filterWithoutClosingOnEarlyError) return call(filterWithoutClosingOnEarlyError, this, predicate);

    return new IteratorProxy(getIteratorDirect(this), {
      predicate: predicate
    });
  }
});


/***/ }),

/***/ 116:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var call = __webpack_require__(9565);
var iterate = __webpack_require__(2652);
var aCallable = __webpack_require__(9306);
var anObject = __webpack_require__(8551);
var getIteratorDirect = __webpack_require__(1767);
var iteratorClose = __webpack_require__(9539);
var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);

var findWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('find', TypeError);

// `Iterator.prototype.find` method
// https://tc39.es/ecma262/#sec-iterator.prototype.find
$({ target: 'Iterator', proto: true, real: true, forced: findWithoutClosingOnEarlyError }, {
  find: function find(predicate) {
    anObject(this);
    try {
      aCallable(predicate);
    } catch (error) {
      iteratorClose(this, 'throw', error);
    }

    if (findWithoutClosingOnEarlyError) return call(findWithoutClosingOnEarlyError, this, predicate);

    var record = getIteratorDirect(this);
    var counter = 0;
    return iterate(record, function (value, stop) {
      if (predicate(value, counter++)) return stop(value);
    }, { IS_RECORD: true, INTERRUPTED: true }).result;
  }
});


/***/ }),

/***/ 7588:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var call = __webpack_require__(9565);
var iterate = __webpack_require__(2652);
var aCallable = __webpack_require__(9306);
var anObject = __webpack_require__(8551);
var getIteratorDirect = __webpack_require__(1767);
var iteratorClose = __webpack_require__(9539);
var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);

var forEachWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('forEach', TypeError);

// `Iterator.prototype.forEach` method
// https://tc39.es/ecma262/#sec-iterator.prototype.foreach
$({ target: 'Iterator', proto: true, real: true, forced: forEachWithoutClosingOnEarlyError }, {
  forEach: function forEach(fn) {
    anObject(this);
    try {
      aCallable(fn);
    } catch (error) {
      iteratorClose(this, 'throw', error);
    }

    if (forEachWithoutClosingOnEarlyError) return call(forEachWithoutClosingOnEarlyError, this, fn);

    var record = getIteratorDirect(this);
    var counter = 0;
    iterate(record, function (value) {
      fn(value, counter++);
    }, { IS_RECORD: true });
  }
});


/***/ }),

/***/ 1701:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var call = __webpack_require__(9565);
var aCallable = __webpack_require__(9306);
var anObject = __webpack_require__(8551);
var getIteratorDirect = __webpack_require__(1767);
var createIteratorProxy = __webpack_require__(9462);
var callWithSafeIterationClosing = __webpack_require__(6319);
var iteratorClose = __webpack_require__(9539);
var iteratorHelperThrowsOnInvalidIterator = __webpack_require__(684);
var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);
var IS_PURE = __webpack_require__(6395);

var MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR = !IS_PURE && !iteratorHelperThrowsOnInvalidIterator('map', function () { /* empty */ });
var mapWithoutClosingOnEarlyError = !IS_PURE && !MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR
  && iteratorHelperWithoutClosingOnEarlyError('map', TypeError);

var FORCED = IS_PURE || MAP_WITHOUT_THROWING_ON_INVALID_ITERATOR || mapWithoutClosingOnEarlyError;

var IteratorProxy = createIteratorProxy(function () {
  var iterator = this.iterator;
  var result = anObject(call(this.next, iterator));
  var done = this.done = !!result.done;
  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);
});

// `Iterator.prototype.map` method
// https://tc39.es/ecma262/#sec-iterator.prototype.map
$({ target: 'Iterator', proto: true, real: true, forced: FORCED }, {
  map: function map(mapper) {
    anObject(this);
    try {
      aCallable(mapper);
    } catch (error) {
      iteratorClose(this, 'throw', error);
    }

    if (mapWithoutClosingOnEarlyError) return call(mapWithoutClosingOnEarlyError, this, mapper);

    return new IteratorProxy(getIteratorDirect(this), {
      mapper: mapper
    });
  }
});


/***/ }),

/***/ 8237:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var iterate = __webpack_require__(2652);
var aCallable = __webpack_require__(9306);
var anObject = __webpack_require__(8551);
var getIteratorDirect = __webpack_require__(1767);
var iteratorClose = __webpack_require__(9539);
var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);
var apply = __webpack_require__(8745);
var fails = __webpack_require__(9039);

var $TypeError = TypeError;

// https://bugs.webkit.org/show_bug.cgi?id=291651
var FAILS_ON_INITIAL_UNDEFINED = fails(function () {
  // eslint-disable-next-line es/no-iterator-prototype-reduce, es/no-array-prototype-keys, array-callback-return -- required for testing
  [].keys().reduce(function () { /* empty */ }, undefined);
});

var reduceWithoutClosingOnEarlyError = !FAILS_ON_INITIAL_UNDEFINED && iteratorHelperWithoutClosingOnEarlyError('reduce', $TypeError);

// `Iterator.prototype.reduce` method
// https://tc39.es/ecma262/#sec-iterator.prototype.reduce
$({ target: 'Iterator', proto: true, real: true, forced: FAILS_ON_INITIAL_UNDEFINED || reduceWithoutClosingOnEarlyError }, {
  reduce: function reduce(reducer /* , initialValue */) {
    anObject(this);
    try {
      aCallable(reducer);
    } catch (error) {
      iteratorClose(this, 'throw', error);
    }

    var noInitial = arguments.length < 2;
    var accumulator = noInitial ? undefined : arguments[1];
    if (reduceWithoutClosingOnEarlyError) {
      return apply(reduceWithoutClosingOnEarlyError, this, noInitial ? [reducer] : [reducer, accumulator]);
    }
    var record = getIteratorDirect(this);
    var counter = 0;
    iterate(record, function (value) {
      if (noInitial) {
        noInitial = false;
        accumulator = value;
      } else {
        accumulator = reducer(accumulator, value, counter);
      }
      counter++;
    }, { IS_RECORD: true });
    if (noInitial) throw new $TypeError('Reduce of empty iterator with no initial value');
    return accumulator;
  }
});


/***/ }),

/***/ 3579:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var call = __webpack_require__(9565);
var iterate = __webpack_require__(2652);
var aCallable = __webpack_require__(9306);
var anObject = __webpack_require__(8551);
var getIteratorDirect = __webpack_require__(1767);
var iteratorClose = __webpack_require__(9539);
var iteratorHelperWithoutClosingOnEarlyError = __webpack_require__(4549);

var someWithoutClosingOnEarlyError = iteratorHelperWithoutClosingOnEarlyError('some', TypeError);

// `Iterator.prototype.some` method
// https://tc39.es/ecma262/#sec-iterator.prototype.some
$({ target: 'Iterator', proto: true, real: true, forced: someWithoutClosingOnEarlyError }, {
  some: function some(predicate) {
    anObject(this);
    try {
      aCallable(predicate);
    } catch (error) {
      iteratorClose(this, 'throw', error);
    }

    if (someWithoutClosingOnEarlyError) return call(someWithoutClosingOnEarlyError, this, predicate);

    var record = getIteratorDirect(this);
    var counter = 0;
    return iterate(record, function (value, stop) {
      if (predicate(value, counter++)) return stop();
    }, { IS_RECORD: true, INTERRUPTED: true }).stopped;
  }
});


/***/ }),

/***/ 1806:
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {


var $ = __webpack_require__(6518);
var anObject = __webpack_require__(8551);
var createProperty = __webpack_require__(4659);
var iterate = __webpack_require__(2652);
var getIteratorDirect = __webpack_require__(1767);

// `Iterator.prototype.toArray` method
// https://tc39.es/ecma262/#sec-iterator.prototype.toarray
$({ target: 'Iterator', proto: true, real: true }, {
  toArray: function toArray() {
    var result = [];
    var index = 0;
    iterate(getIteratorDirect(anObject(this)), function (element) {
      createProperty(result, index++, element);
    }, { IS_RECORD: true });
    return result;
  }
});


/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
/******/ 		if (cachedModule !== undefined) {
/******/ 			return cachedModule.exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			// no module.id needed
/******/ 			// no module.loaded needed
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	!function() {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = function(module) {
/******/ 			var getter = module && module.__esModule ?
/******/ 				function() { return module['default']; } :
/******/ 				function() { return module; };
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	!function() {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = function(exports, definition) {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/global */
/******/ 	!function() {
/******/ 		__webpack_require__.g = (function() {
/******/ 			if (typeof globalThis === 'object') return globalThis;
/******/ 			try {
/******/ 				return this || new Function('return this')();
/******/ 			} catch (e) {
/******/ 				if (typeof window === 'object') return window;
/******/ 			}
/******/ 		})();
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	!function() {
/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/make namespace object */
/******/ 	!function() {
/******/ 		// define __esModule on exports
/******/ 		__webpack_require__.r = function(exports) {
/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 			}
/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
/******/ 		};
/******/ 	}();
/******/ 	
/******/ 	/* webpack/runtime/publicPath */
/******/ 	!function() {
/******/ 		__webpack_require__.p = "";
/******/ 	}();
/******/ 	
/************************************************************************/
var __webpack_exports__ = {};
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);

// EXPORTS
__webpack_require__.d(__webpack_exports__, {
  Colgroup: function() { return /* reexport */ Colgroup; },
  Column: function() { return /* reexport */ Column; },
  Grid: function() { return /* reexport */ Grid; },
  Table: function() { return /* reexport */ Table; },
  Toolbar: function() { return /* reexport */ Toolbar; },
  VXETable: function() { return /* reexport */ VXETable; },
  VxeColgroup: function() { return /* reexport */ VxeColgroup; },
  VxeColumn: function() { return /* reexport */ VxeColumn; },
  VxeGrid: function() { return /* reexport */ VxeGrid; },
  VxeTable: function() { return /* reexport */ VxeTable; },
  VxeToolbar: function() { return /* reexport */ VxeToolbar; },
  VxeUI: function() { return /* reexport */ core_.VxeUI; },
  _t: function() { return /* reexport */ _t; },
  clipboard: function() { return /* reexport */ clipboard; },
  commands: function() { return /* reexport */ commands; },
  config: function() { return /* reexport */ config; },
  "default": function() { return /* binding */ entry_lib; },
  formats: function() { return /* reexport */ formats; },
  getConfig: function() { return /* reexport */ ui_getConfig; },
  getI18n: function() { return /* reexport */ getI18n; },
  getIcon: function() { return /* reexport */ getIcon; },
  getTheme: function() { return /* reexport */ getTheme; },
  globalEvents: function() { return /* reexport */ globalEvents; },
  globalResize: function() { return /* reexport */ globalResize; },
  hooks: function() { return /* reexport */ hooks; },
  install: function() { return /* reexport */ install; },
  interceptor: function() { return /* reexport */ interceptor; },
  log: function() { return /* reexport */ log; },
  menus: function() { return /* reexport */ menus; },
  modal: function() { return /* reexport */ modal; },
  print: function() { return /* reexport */ print; },
  readFile: function() { return /* reexport */ readFile; },
  renderer: function() { return /* reexport */ renderer; },
  saveFile: function() { return /* reexport */ saveFile; },
  setConfig: function() { return /* reexport */ setConfig; },
  setI18n: function() { return /* reexport */ setI18n; },
  setIcon: function() { return /* reexport */ setIcon; },
  setLanguage: function() { return /* reexport */ setLanguage; },
  setTheme: function() { return /* reexport */ setTheme; },
  setup: function() { return /* reexport */ setup; },
  t: function() { return /* reexport */ t; },
  use: function() { return /* reexport */ use; },
  validators: function() { return /* reexport */ validators; },
  version: function() { return /* reexport */ version; }
});

// NAMESPACE OBJECT: ./packages/components.ts
var components_namespaceObject = {};
__webpack_require__.r(components_namespaceObject);
__webpack_require__.d(components_namespaceObject, {
  Colgroup: function() { return Colgroup; },
  Column: function() { return Column; },
  Grid: function() { return Grid; },
  Table: function() { return Table; },
  Toolbar: function() { return Toolbar; },
  VXETable: function() { return VXETable; },
  VxeColgroup: function() { return VxeColgroup; },
  VxeColumn: function() { return VxeColumn; },
  VxeGrid: function() { return VxeGrid; },
  VxeTable: function() { return VxeTable; },
  VxeToolbar: function() { return VxeToolbar; },
  VxeUI: function() { return core_.VxeUI; },
  _t: function() { return _t; },
  clipboard: function() { return clipboard; },
  commands: function() { return commands; },
  config: function() { return config; },
  formats: function() { return formats; },
  getConfig: function() { return ui_getConfig; },
  getI18n: function() { return getI18n; },
  getIcon: function() { return getIcon; },
  getTheme: function() { return getTheme; },
  globalEvents: function() { return globalEvents; },
  globalResize: function() { return globalResize; },
  hooks: function() { return hooks; },
  install: function() { return install; },
  interceptor: function() { return interceptor; },
  log: function() { return log; },
  menus: function() { return menus; },
  modal: function() { return modal; },
  print: function() { return print; },
  readFile: function() { return readFile; },
  renderer: function() { return renderer; },
  saveFile: function() { return saveFile; },
  setConfig: function() { return setConfig; },
  setI18n: function() { return setI18n; },
  setIcon: function() { return setIcon; },
  setLanguage: function() { return setLanguage; },
  setTheme: function() { return setTheme; },
  setup: function() { return setup; },
  t: function() { return t; },
  use: function() { return use; },
  validators: function() { return validators; },
  version: function() { return version; }
});

;// ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
/* eslint-disable no-var */
// This file is imported into lib/wc client bundles.

if (typeof window !== 'undefined') {
  var currentScript = window.document.currentScript
  if (false) // removed by dead control flow
{ var getCurrentScript; }

  var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
  if (src) {
    __webpack_require__.p = src[1] // eslint-disable-line
  }
}

// Indicate to webpack that this file can be concatenated
/* harmony default export */ var setPublicPath = (null);

// EXTERNAL MODULE: external {"root":"VxeUI","commonjs":"@vxe-ui/core","commonjs2":"@vxe-ui/core","amd":"@vxe-ui/core"}
var core_ = __webpack_require__(4345);
// EXTERNAL MODULE: external {"root":"XEUtils","commonjs":"xe-utils","commonjs2":"xe-utils","amd":"xe-utils"}
var external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_ = __webpack_require__(8871);
var external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default = /*#__PURE__*/__webpack_require__.n(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_);
;// ./node_modules/dom-zindex/es/index.esm.js
var winDom = null;
var bodyEl = null;
var storeEl = null;
var storeId = 'z-index-manage';
var styleEl = null;
var styleId = 'z-index-style';
var storeMainKey = 'm';
var storeSubKey = 's';
var storeData = {
  m: 1000,
  s: 1000
};
function getDocument() {
  if (!winDom) {
    if (typeof document !== 'undefined') {
      winDom = document;
    }
  }
  return winDom;
}
function getBody() {
  if (winDom && !bodyEl) {
    bodyEl = winDom.body || winDom.getElementsByTagName('body')[0];
  }
  return bodyEl;
}
function getDomMaxZIndex() {
  var max = 0;
  var dom = getDocument();
  if (dom) {
    var body = getBody();
    if (body) {
      var allElem = body.getElementsByTagName('*');
      for (var i = 0; i < allElem.length; i++) {
        var elem = allElem[i];
        if (elem && elem.style && elem.nodeType === 1) {
          var zIndex = elem.style.zIndex;
          if (zIndex && /^\d+$/.test(zIndex)) {
            max = Math.max(max, Number(zIndex));
          }
        }
      }
    }
  }
  return max;
}
function getStyle() {
  if (!styleEl) {
    var dom = getDocument();
    if (dom) {
      styleEl = dom.getElementById(styleId);
      if (!styleEl) {
        styleEl = dom.createElement('style');
        styleEl.id = styleId;
        dom.getElementsByTagName('head')[0].appendChild(styleEl);
      }
    }
  }
  return styleEl;
}
function updateVar() {
  var styEl = getStyle();
  if (styEl) {
    var prefixes = '--dom-';
    var propKey = '-z-index';
    styEl.innerHTML = ':root{' + prefixes + 'main' + propKey + ':' + getCurrent() + ';' + prefixes + 'sub' + propKey + ':' + getSubCurrent() + '}';
  }
}
function getStoreDom() {
  if (!storeEl) {
    var dom = getDocument();
    if (dom) {
      storeEl = dom.getElementById(storeId);
      if (!storeEl) {
        var body = getBody();
        if (body) {
          storeEl = dom.createElement('div');
          storeEl.id = storeId;
          storeEl.style.display = 'none';
          body.appendChild(storeEl);
          setCurrent(storeData.m);
          setSubCurrent(storeData.s);
        }
      }
    }
  }
  return storeEl;
}
function createSetHandle(key) {
  return function (value) {
    if (value) {
      value = Number(value);
      storeData[key] = value;
      var el = getStoreDom();
      if (el) {
        if (el.dataset) {
          el.dataset[key] = value + '';
        } else {
          el.setAttribute('data-' + key, value + '');
        }
      }
    }
    updateVar();
    return storeData[key];
  };
}
var setCurrent = createSetHandle(storeMainKey);
function createGetHandle(key, nextMethod) {
  return function getCurrent(currZindex) {
    var zIndex;
    var el = getStoreDom();
    if (el) {
      var domVal = el.dataset ? el.dataset[key] : el.getAttribute('data-' + key);
      if (domVal) {
        zIndex = Number(domVal);
      }
    }
    if (!zIndex) {
      zIndex = storeData[key];
    }
    if (currZindex) {
      if (Number(currZindex) < zIndex) {
        return nextMethod();
      }
      return currZindex;
    }
    return zIndex;
  };
}
var getCurrent = createGetHandle(storeMainKey, getNext);
function getNext() {
  return setCurrent(getCurrent() + 1);
}
var setSubCurrent = createSetHandle(storeSubKey);
var _getSubCurrent = createGetHandle(storeSubKey, getSubNext);
function getSubCurrent() {
  return getCurrent() + _getSubCurrent();
}
function getSubNext() {
  setSubCurrent(_getSubCurrent() + 1);
  return getSubCurrent();
}
/**
 * Web common z-index style management
 */
var DomZIndex = {
  setCurrent: setCurrent,
  getCurrent: getCurrent,
  getNext: getNext,
  setSubCurrent: setSubCurrent,
  getSubCurrent: getSubCurrent,
  getSubNext: getSubNext,
  getMax: getDomMaxZIndex
};
updateVar();
/* harmony default export */ var index_esm = (DomZIndex);
;// ./packages/ui/src/utils.ts



const {
  getConfig
} = core_.VxeUI;
function isEnableConf(conf) {
  return conf && conf.enabled !== false;
}
function isEmptyValue(cellValue) {
  return cellValue === null || cellValue === undefined || cellValue === '';
}
function parseFile(file) {
  const name = file.name;
  const tIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().lastIndexOf(name, '.');
  const type = name.substring(tIndex + 1, name.length).toLowerCase();
  const filename = name.substring(0, tIndex);
  return {
    filename,
    type
  };
}
function nextZIndex() {
  return index_esm.getNext();
}
function getLastZIndex() {
  return index_esm.getCurrent();
}
function hasChildrenList(item) {
  return item && item.children && item.children.length > 0;
}
function getFuncText(content, args) {
  if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(content)) {
    return '';
  }
  const translate = getConfig().translate;
  return `${translate ? translate('' + content, args) : content}`;
}
function formatText(value, placeholder) {
  return '' + (isEmptyValue(value) ? placeholder ? getConfig().emptyCell : '' : value);
}
/**
 * 判断值为:'' | null | undefined 时都属于空值
 */
function eqEmptyValue(cellValue) {
  return cellValue === '' || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(cellValue);
}
function getDefaultConfig(val1, def1) {
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(val1) ? def1 : val1;
}
;// ./packages/ui/index.ts
/* unused harmony import specifier */ var VxeUI;


const version = "4.21.2";
core_.VxeUI.version = version;
core_.VxeUI.tableVersion = version;
core_.VxeUI.setConfig({
  emptyCell: ' ',
  table: {
    fit: true,
    showHeader: true,
    animat: true,
    delayHover: 250,
    autoResize: true,
    // minHeight: null,
    // keepSource: false,
    // showOverflow: null,
    // showHeaderOverflow: null,
    // showFooterOverflow: null,
    // resizeInterval: 500,
    // size: null,
    // zIndex: null,
    // stripe: false,
    // border: false,
    // round: false,
    // emptyText: '暂无数据',
    // emptyRender: {
    //   name: ''
    // },
    // rowConfig: {
    //   keyField: '_X_ROW_KEY' // 行数据的唯一主键字段名
    // },
    resizeConfig: {
      // refreshDelay: 20
    },
    resizableConfig: {
      dragMode: 'auto',
      showDragTip: true,
      isSyncAutoHeight: true,
      isSyncAutoWidth: true,
      minHeight: 18
    },
    currentRowConfig: {
      strict: true
    },
    currentColumnConfig: {
      strict: true
    },
    radioConfig: {
      // trigger: 'default'
      strict: true
    },
    rowDragConfig: {
      showIcon: true,
      animation: true,
      showGuidesStatus: true,
      showDragTip: true
    },
    columnDragConfig: {
      showIcon: true,
      animation: true,
      showGuidesStatus: true,
      showDragTip: true
    },
    checkboxConfig: {
      // trigger: 'default',
      strict: true
    },
    tooltipConfig: {
      mode: 'tooltip',
      enterable: true,
      defaultPlacement: 'top'
    },
    headerTooltipConfig: {
      mode: 'tooltip',
      enterable: true
    },
    footerTooltipConfig: {
      mode: 'tooltip',
      enterable: true
    },
    validConfig: {
      showErrorMessage: true,
      autoClear: true,
      autoPos: true,
      message: 'inline',
      msgMode: 'single',
      theme: 'beautify'
    },
    columnConfig: {
      autoOptions: {
        isCalcHeader: true,
        isCalcBody: true,
        isCalcFooter: true
      },
      maxFixedSize: 4
    },
    cellConfig: {
      padding: true
    },
    headerCellConfig: {
      height: 'unset'
    },
    footerCellConfig: {
      height: 'unset'
    },
    menuConfig: {
      // visibleMethod () {},
      // transfer: false,
      destroyOnClose: true
    },
    customConfig: {
      // enabled: false,
      allowVisible: true,
      allowResizable: true,
      allowFixed: true,
      allowSort: true,
      allowAlign: true,
      showSortDragButton: true,
      showFooter: true,
      placement: 'top-right',
      //  storage: false,
      storeOptions: {
        visible: true,
        resizable: true,
        sort: true,
        fixed: true,
        align: true,
        headerAlign: true,
        footerAlign: true,
        aggFunc: true
      },
      // autoAggGroupValues: false,
      //  checkMethod () {},
      modalOptions: {
        showMaximize: true,
        mask: true,
        lockView: true,
        resize: true,
        escClosable: true
      },
      drawerOptions: {
        mask: true,
        lockView: true,
        escClosable: true,
        resize: true
      }
    },
    sortConfig: {
      // remote: false,
      // trigger: 'default',
      // orders: ['asc', 'desc', null],
      // sortMethod: null,
      showIcon: true,
      allowClear: true,
      allowBtn: true,
      iconLayout: 'vertical'
    },
    filterConfig: {
      // remote: false,
      // filterMethod: null,
      // isEvery: false,
      // transfer: false,
      destroyOnClose: true,
      multiple: true,
      showIcon: true,
      maxHeight: 280
    },
    floatingFilterConfig: {
      // enabled: false
    },
    aggregateConfig: {
      padding: true,
      placement: 'left',
      rowField: 'id',
      parentField: '_X_ROW_PARENT_KEY',
      childrenField: '_X_ROW_CHILDREN',
      mapChildrenField: '_X_ROW_CHILD_LIST',
      indent: 20,
      showIcon: true,
      maxGroupSize: 4,
      showAggFuncTitle: true
    },
    treeConfig: {
      padding: true,
      rowField: 'id',
      parentField: 'parentId',
      childrenField: 'children',
      hasChildField: 'hasChild',
      mapChildrenField: '_X_ROW_CHILD',
      indent: 20,
      showIcon: true,
      showRootLine: true
    },
    expandConfig: {
      // trigger: 'default',
      showIcon: true,
      mode: 'fixed'
    },
    editConfig: {
      // mode: 'cell',
      // cache: true,
      showIcon: true,
      showAsterisk: true,
      autoFocus: true,
      isReuseKeep: true
    },
    importConfig: {
      _typeMaps: {
        csv: 1,
        html: 1,
        xml: 1,
        txt: 1
      }
    },
    exportConfig: {
      _typeMaps: {
        csv: 1,
        html: 1,
        xml: 1,
        txt: 1
      }
    },
    printConfig: {},
    mouseConfig: {
      extension: true
    },
    keyboardConfig: {
      isAll: true,
      isEsc: true
    },
    areaConfig: {
      autoClear: true,
      selectCellByHeader: true,
      selectCellByBody: true,
      extendDirection: {
        top: true,
        left: true,
        bottom: true,
        right: true
      }
    },
    clipConfig: {
      isCopy: true,
      isCut: true,
      isPaste: true
    },
    fnrConfig: {
      isFind: true,
      isReplace: true
    },
    virtualXConfig: {
      // enabled: false,
      gt: 24,
      preSize: 1,
      oSize: 0
    },
    virtualYConfig: {
      // enabled: false,
      // mode: 'wheel',
      gt: 100,
      preSize: 1,
      oSize: 0
    },
    scrollbarConfig: {
      // width: 14,
      // height: 14,
      x: {
        // position: 'bottom',
        visible: true
      },
      y: {
        // position: 'right',
        visible: true
      }
    },
    undoRedoHistoryConfig: {
      stackSize: 50
    }
  },
  grid: {
    // size: null,
    // zoomConfig: {
    //   escRestore: true
    // },
    formConfig: {
      enabled: true
    },
    pagerConfig: {
      enabled: true
      // perfect: false
    },
    toolbarConfig: {
      enabled: true
      // perfect: false
    },
    proxyConfig: {
      enabled: true,
      autoLoad: true,
      showLoading: true,
      showResponseMsg: true,
      showActionMsg: true,
      response: {
        list: 'list',
        result: 'result',
        total: 'page.total',
        footerData: 'footerData',
        message: 'message'
      }
      // beforeItem: null,
      // beforeColumn: null,
      // beforeQuery: null,
      // afterQuery: null,
      // beforeDelete: null,
      // afterDelete: null,
      // beforeSave: null,
      // afterSave: null
    }
  },
  toolbar: {
    // size: null,
    // import: {
    //   mode: 'covering'
    // },
    // export: {
    //   types: ['csv', 'html', 'xml', 'txt']
    // },
    // buttons: []
  },
  gantt: {}
});
const iconPrefix = 'vxe-table-icon-';
core_.VxeUI.setIcon({
  // table
  TABLE_SORT_ASC: iconPrefix + 'caret-up',
  TABLE_SORT_DESC: iconPrefix + 'caret-down',
  TABLE_FILTER_NONE: iconPrefix + 'funnel',
  TABLE_FILTER_MATCH: iconPrefix + 'funnel',
  TABLE_EDIT: iconPrefix + 'edit',
  TABLE_TITLE_PREFIX: iconPrefix + 'question-circle-fill',
  TABLE_TITLE_SUFFIX: iconPrefix + 'question-circle-fill',
  TABLE_TREE_LOADED: iconPrefix + 'spinner roll',
  TABLE_TREE_OPEN: iconPrefix + 'caret-right rotate90',
  TABLE_TREE_CLOSE: iconPrefix + 'caret-right',
  TABLE_EXPAND_LOADED: iconPrefix + 'spinner roll',
  TABLE_EXPAND_OPEN: iconPrefix + 'arrow-right rotate90',
  TABLE_EXPAND_CLOSE: iconPrefix + 'arrow-right',
  TABLE_CHECKBOX_CHECKED: iconPrefix + 'checkbox-checked-fill',
  TABLE_CHECKBOX_UNCHECKED: iconPrefix + 'checkbox-unchecked',
  TABLE_CHECKBOX_INDETERMINATE: iconPrefix + 'checkbox-indeterminate-fill',
  TABLE_CHECKBOX_DISABLED_UNCHECKED: iconPrefix + 'checkbox-unchecked-fill',
  TABLE_RADIO_CHECKED: iconPrefix + 'radio-checked-fill',
  TABLE_RADIO_UNCHECKED: iconPrefix + 'radio-unchecked',
  TABLE_RADIO_DISABLED_UNCHECKED: iconPrefix + 'radio-unchecked-fill',
  TABLE_CUSTOM_SORT: iconPrefix + 'drag-handle',
  TABLE_CUSTOM_FIXED_LEFT: iconPrefix + 'fixed-left',
  TABLE_CUSTOM_FIXED_RIGHT: iconPrefix + 'fixed-right',
  TABLE_CUSTOM_ALIGN_LEFT: iconPrefix + 'align-left',
  TABLE_CUSTOM_ALIGN_CENTER: iconPrefix + 'align-center',
  TABLE_CUSTOM_ALIGN_RIGHT: iconPrefix + 'align-right',
  TABLE_CUSTOM_MOVE_UP: iconPrefix + 'arrows-up',
  TABLE_CUSTOM_MOVE_DN: iconPrefix + 'arrows-down',
  TABLE_CUSTOM_PUT_TOP: iconPrefix + 'top',
  TABLE_CUSTOM_PUT_BOTTOM: iconPrefix + 'bottom',
  TABLE_MENU_OPTIONS: iconPrefix + 'arrow-right',
  TABLE_MENU_OPTION_LOADING: iconPrefix + 'repeat roll',
  TABLE_DRAG_ROW: iconPrefix + 'drag-handle',
  TABLE_DRAG_COLUMN: iconPrefix + 'drag-handle',
  TABLE_DRAG_STATUS_ROW: iconPrefix + 'sort',
  TABLE_DRAG_STATUS_SUB_ROW: iconPrefix + 'add-sub',
  TABLE_DRAG_STATUS_AGG_GROUP: iconPrefix + 'grouping',
  TABLE_DRAG_STATUS_AGG_VALUES: iconPrefix + 'values',
  TABLE_DRAG_STATUS_COLUMN: iconPrefix + 'swap',
  TABLE_DRAG_DISABLED: iconPrefix + 'no-drop',
  TABLE_ROW_GROUP_OPEN: iconPrefix + 'arrow-right rotate90',
  TABLE_ROW_GROUP_CLOSE: iconPrefix + 'arrow-right',
  TABLE_AGGREGATE_GROUPING: iconPrefix + 'grouping',
  TABLE_AGGREGATE_VALUES: iconPrefix + 'values',
  TABLE_AGGREGATE_SORT: iconPrefix + 'drag-handle',
  TABLE_AGGREGATE_DELETE: iconPrefix + 'close',
  // toolbar
  TOOLBAR_TOOLS_REFRESH: iconPrefix + 'repeat',
  TOOLBAR_TOOLS_REFRESH_LOADING: iconPrefix + 'repeat roll',
  TOOLBAR_TOOLS_IMPORT: iconPrefix + 'upload',
  TOOLBAR_TOOLS_EXPORT: iconPrefix + 'download',
  TOOLBAR_TOOLS_PRINT: iconPrefix + 'print',
  TOOLBAR_TOOLS_FULLSCREEN: iconPrefix + 'fullscreen',
  TOOLBAR_TOOLS_MINIMIZE: iconPrefix + 'minimize',
  TOOLBAR_TOOLS_CUSTOM: iconPrefix + 'setting',
  TOOLBAR_TOOLS_FIXED_LEFT: iconPrefix + 'fixed-left',
  TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE: iconPrefix + 'fixed-left-fill',
  TOOLBAR_TOOLS_FIXED_RIGHT: iconPrefix + 'fixed-right',
  TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE: iconPrefix + 'fixed-right-fill'
});
const setTheme = core_.VxeUI.setTheme;
const getTheme = core_.VxeUI.getTheme;
const setConfig = core_.VxeUI.setConfig;
const ui_getConfig = core_.VxeUI.getConfig;
const setIcon = core_.VxeUI.setIcon;
const getIcon = core_.VxeUI.getIcon;
const setLanguage = core_.VxeUI.setLanguage;
const setI18n = core_.VxeUI.setI18n;
const getI18n = core_.VxeUI.getI18n;
const globalEvents = core_.VxeUI.globalEvents;
const globalResize = core_.VxeUI.globalResize;
const renderer = core_.VxeUI.renderer;
const validators = core_.VxeUI.validators;
const menus = core_.VxeUI.menus;
const formats = core_.VxeUI.formats;
const commands = core_.VxeUI.commands;
const interceptor = core_.VxeUI.interceptor;
const clipboard = core_.VxeUI.clipboard;
const log = core_.VxeUI.log;
const hooks = core_.VxeUI.hooks;
const use = core_.VxeUI.use;
/**
 * 已废弃
 * @deprecated
 */
const setup = options => {
  return core_.VxeUI.setConfig(options);
};
core_.VxeUI.setup = setup;
/**
 * 已废弃
 * @deprecated
 */
const config = options => {
  return core_.VxeUI.setConfig(options);
};
core_.VxeUI.config = config;
/**
 * 已废弃
 * @deprecated
 */
const t = (key, args) => {
  return core_.VxeUI.getI18n(key, args);
};
core_.VxeUI.t = t;
/**
 * 已废弃
 * @deprecated
 */
const _t = (content, args) => {
  return getFuncText(content, args);
};
core_.VxeUI._t = _t;
/**
 * 已废弃,兼容老版本
 * @deprecated
 */
const VXETable = core_.VxeUI;
/**
 * 已废弃,兼容老版本
 * @deprecated
 */
const saveFile = options => {
  return core_.VxeUI.saveFile(options);
};
/**
 * 已废弃,兼容老版本
 * @deprecated
 */
const readFile = options => {
  return core_.VxeUI.readFile(options);
};
/**
 * 已废弃,兼容老版本
 * @deprecated
 */
const print = options => {
  return core_.VxeUI.print(options);
};
/**
 * 已废弃,兼容老版本
 * @deprecated
 */
const modal = {
  /**
   * 已废弃,兼容老版本
   * @deprecated
   */
  get(id) {
    return core_.VxeUI.modal.get(id);
  },
  /**
   * 已废弃,兼容老版本
   * @deprecated
   */
  close(id) {
    return core_.VxeUI.modal.close(id);
  },
  /**
   * 已废弃,兼容老版本
   * @deprecated
   */
  open(options) {
    return core_.VxeUI.modal.open(options);
  },
  /**
   * 已废弃,兼容老版本
   * @deprecated
   */
  alert(content, title, options) {
    return core_.VxeUI.modal.alert(content, title, options);
  },
  /**
   * 已废弃,兼容老版本
   * @deprecated
   */
  confirm(content, title, options) {
    return core_.VxeUI.modal.confirm(content, title, options);
  },
  /**
   * 已废弃,兼容老版本
   * @deprecated
   */
  message(content, options) {
    return core_.VxeUI.modal.message(content, options);
  },
  /**
   * 已废弃,兼容老版本
   * @deprecated
   */
  notification(content, title, options) {
    return core_.VxeUI.modal.notification(content, title, options);
  }
};

/* harmony default export */ var ui = ((/* unused pure expression or super */ null && (VxeUI)));
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__(9274);
;// ./packages/ui/src/comp.ts

const defineVxeComponent = external_commonjs_vue_commonjs2_vue_root_Vue_.defineComponent;
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.includes.js
var es_array_includes = __webpack_require__(4423);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.array.push.js
var es_array_push = __webpack_require__(4114);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.constructor.js
var es_iterator_constructor = __webpack_require__(8111);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.for-each.js
var es_iterator_for_each = __webpack_require__(7588);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.map.js
var es_iterator_map = __webpack_require__(1701);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.reduce.js
var es_iterator_reduce = __webpack_require__(8237);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.some.js
var es_iterator_some = __webpack_require__(3579);
;// ./packages/ui/src/dom.ts
/* unused harmony import specifier */ var XEUtils;


const reClsMap = {};
let tpImgEl;
function initTpImg() {
  if (!tpImgEl) {
    tpImgEl = new Image();
    tpImgEl.src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';
  }
  return tpImgEl;
}
function getTpImg() {
  if (!tpImgEl) {
    return initTpImg();
  }
  return tpImgEl;
}
function getPropClass(property, params) {
  return property ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(property) ? property(params) : property : '';
}
function getClsRE(cls) {
  if (!reClsMap[cls]) {
    reClsMap[cls] = new RegExp(`(?:^|\\s)${cls}(?!\\S)`, 'g');
  }
  return reClsMap[cls];
}
function getNodeOffset(elem, container, rest) {
  if (elem) {
    const parentElem = elem.parentNode;
    rest.top += elem.offsetTop;
    rest.left += elem.offsetLeft;
    if (parentElem && parentElem !== document.documentElement && parentElem !== document.body) {
      rest.top -= parentElem.scrollTop;
      rest.left -= parentElem.scrollLeft;
    }
    if (container && (elem === container || elem.offsetParent === container) ? 0 : elem.offsetParent) {
      return getNodeOffset(elem.offsetParent, container, rest);
    }
  }
  return rest;
}
function isPx(val) {
  return val && /^\d+(\.\d+)?(px)?$/.test(val);
}
function isScale(val) {
  return val && /^\d+(\.\d+)?%$/.test(val);
}
function hasClass(elem, cls) {
  if (elem) {
    if (elem.classList) {
      return elem.classList.contains(cls);
    }
    return !!(elem.className && elem.className.match && elem.className.match(getClsRE(cls)));
  }
  return false;
}
function removeClass(elem, cls) {
  if (elem && hasClass(elem, cls)) {
    elem.className = elem.className.replace(getClsRE(cls), '');
  }
}
function addClass(elem, cls) {
  if (elem && !hasClass(elem, cls)) {
    removeClass(elem, cls);
    elem.className = `${elem.className} ${cls}`;
  }
}
function hasControlKey(evnt) {
  return evnt.ctrlKey || evnt.metaKey;
}
function toCssUnit(val, unit = 'px') {
  if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(val) || /^\d+$/.test(`${val}`)) {
    return `${val}${unit}`;
  }
  return `${val || ''}`;
}
function queryElement(elem, selector) {
  if (elem) {
    return elem.querySelector(selector);
  }
  return null;
}
function getDomNode() {
  const documentElement = document.documentElement;
  const bodyElem = document.body;
  return {
    scrollTop: documentElement.scrollTop || bodyElem.scrollTop,
    scrollLeft: documentElement.scrollLeft || bodyElem.scrollLeft,
    visibleHeight: documentElement.clientHeight || bodyElem.clientHeight,
    visibleWidth: documentElement.clientWidth || bodyElem.clientWidth
  };
}
function getOffsetHeight(elem) {
  return elem ? elem.offsetHeight : 0;
}
function getPaddingTopBottomSize(elem) {
  if (elem) {
    const computedStyle = getComputedStyle(elem);
    const paddingTop = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(computedStyle.paddingTop);
    const paddingBottom = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(computedStyle.paddingBottom);
    return paddingTop + paddingBottom;
  }
  return 0;
}
function setScrollTop(elem, scrollTop) {
  if (elem) {
    elem.scrollTop = scrollTop;
  }
}
function setScrollLeft(elem, scrollLeft) {
  if (elem) {
    elem.scrollLeft = scrollLeft;
  }
}
// export function setScrollLeftAndTop (elem: HTMLElement | null, scrollLeft: number, scrollTop: number) {
//   if (elem) {
//     elem.scrollLeft = scrollLeft
//     elem.scrollTop = scrollTop
//   }
// }
function updateCellTitle(overflowElem, column) {
  const content = column.type === 'html' ? overflowElem.innerText : overflowElem.textContent;
  if (overflowElem.getAttribute('title') !== content) {
    overflowElem.setAttribute('title', content);
  }
}
function checkTargetElement(target, exEls, endEl) {
  let targetEl = target;
  if (!exEls || !exEls.length) {
    return false;
  }
  const [exEl1, exEl2, exEl3] = exEls;
  while (targetEl) {
    if (exEl1 === targetEl || exEl2 && targetEl === exEl2 || exEl3 && targetEl === exEl3) {
      return true;
    }
    if (endEl && targetEl === endEl) {
      return false;
    }
    targetEl = targetEl.parentElement;
  }
  return false;
}
/**
 * 检查触发源是否属于目标节点
 */
function getEventTargetNode(evnt, container, queryCls, queryMethod) {
  let targetElem;
  let target = evnt.target.shadowRoot && evnt.composed ? evnt.composedPath()[0] || evnt.target : evnt.target;
  while (target && target.nodeType && target !== document) {
    if (queryCls && hasClass(target, queryCls) && (!queryMethod || queryMethod(target))) {
      targetElem = target;
    } else if (target === container) {
      return {
        flag: queryCls ? !!targetElem : true,
        container,
        targetElem: targetElem
      };
    }
    target = target.parentNode;
  }
  return {
    flag: false
  };
}
/**
 * 获取元素相对于 document 的位置
 */
function getOffsetPos(elem, container) {
  return getNodeOffset(elem, container, {
    left: 0,
    top: 0
  });
}
function getAbsolutePos(elem) {
  const bounding = elem.getBoundingClientRect();
  const boundingTop = bounding.top;
  const boundingLeft = bounding.left;
  const {
    scrollTop,
    scrollLeft,
    visibleHeight,
    visibleWidth
  } = getDomNode();
  return {
    boundingTop,
    top: scrollTop + boundingTop,
    boundingLeft,
    left: scrollLeft + boundingLeft,
    visibleHeight,
    visibleWidth
  };
}
function hasEventInputTarget(target) {
  const tagName = target ? target.tagName : '';
  return tagName && ['input', 'textarea'].includes(tagName.toLowerCase());
}
const scrollIntoViewIfNeeded = 'scrollIntoViewIfNeeded';
const scrollIntoView = 'scrollIntoView';
function scrollToView(elem) {
  if (elem) {
    if (elem[scrollIntoViewIfNeeded]) {
      elem[scrollIntoViewIfNeeded]();
    } else if (elem[scrollIntoView]) {
      elem[scrollIntoView]();
    }
  }
}
function triggerEvent(targetElem, type) {
  if (targetElem) {
    targetElem.dispatchEvent(new Event(type));
  }
}
function isNodeElement(elem) {
  return elem && elem.nodeType === 1;
}
function scrollTopTo(diffNum, cb) {
  const duration = Math.abs(diffNum);
  const startTime = performance.now();
  let countTop = 0;
  const step = timestamp => {
    let progress = (timestamp - startTime) / duration;
    if (progress < 0) {
      progress = 0;
    } else if (progress > 1) {
      progress = 1;
    }
    const easedProgress = Math.pow(progress, 2);
    const offsetTop = Math.floor(diffNum * easedProgress) - countTop;
    countTop += offsetTop;
    cb(offsetTop);
    if (progress < 1) {
      requestAnimationFrame(step);
    }
  };
  requestAnimationFrame(step);
}
let wtlFrame;
function wheelScrollLeftTo(scrollLeft, cb) {
  if (wtlFrame) {
    cancelAnimationFrame(wtlFrame);
  }
  wtlFrame = requestAnimationFrame(() => {
    cb(scrollLeft);
    wtlFrame = null;
  });
}
let wtaFrame;
function wheelScrollTopTo(diffNum, cb) {
  if (wtaFrame) {
    cancelAnimationFrame(wtaFrame);
  }
  wtaFrame = requestAnimationFrame(() => {
    const offsetTop = diffNum;
    cb(offsetTop);
    wtaFrame = null;
  });
}
function getPopupContainer(appendTo) {
  const selectElem = appendTo && XEUtils.isFunction(appendTo) ? appendTo({}) : appendTo;
  return selectElem || 'body';
}
function getPopupAppendElement(appendTo) {
  const selectElem = getPopupContainer(appendTo);
  if (XEUtils.isString(selectElem)) {
    return document.querySelector(selectElem) || document.body;
  }
  return selectElem;
}
;// ./packages/ui/src/log.ts

const {
  log: log_log
} = core_.VxeUI;
const tableVersion = `table v${"4.21.2"}`;
function createComponentLog(name) {
  const uiVersion = core_.VxeUI.uiVersion ? `ui v${core_.VxeUI.uiVersion}` : '';
  const ganttVersion = core_.VxeUI.ganttVersion ? `gantt v${core_.VxeUI.ganttVersion}` : '';
  const designVersion = core_.VxeUI.designVersion ? `design v${core_.VxeUI.designVersion}` : '';
  const versionInfo = [uiVersion, tableVersion, ganttVersion, designVersion].filter(v => v).join(' ');
  return {
    warnLog: log_log.create('warn', versionInfo + '] [' + name),
    errLog: log_log.create('error', versionInfo + '] [' + name)
  };
}
const warnLog = log_log.create('warn', tableVersion);
const errLog = log_log.create('error', tableVersion);
;// ./packages/table/src/columnInfo.ts






const {
  warnLog: columnInfo_warnLog,
  errLog: columnInfo_errLog
} = createComponentLog('table');
const {
  getI18n: columnInfo_getI18n,
  formats: columnInfo_formats,
  renderer: columnInfo_renderer
} = core_.VxeUI;
class ColumnInfo {
  /* eslint-disable @typescript-eslint/no-use-before-define */
  constructor($xeTable, colConfs, {
    renderHeader,
    renderCell,
    renderFooter,
    renderData
  } = {}) {
    const tableProps = $xeTable.props;
    const $xeGrid = $xeTable.xeGrid;
    const $xeGantt = $xeTable.xeGantt;
    const $xeGGWrapper = $xeGrid || $xeGantt;
    const {
      type,
      field,
      width,
      visible,
      fixed,
      align,
      headerAlign,
      footerAlign,
      aggFunc,
      formatter,
      filterMultiple,
      cellRender,
      editRender,
      filterRender
    } = colConfs;
    const colId = colConfs.colId || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId('col_');
    const defaultVisible = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(visible) ? visible : true;
    const defaultRenderWidth = width && isPx(width) && width !== 'auto' ? Math.max(0, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(width)) : 0;
    const flCompConf = filterRender && isEnableConf(filterRender) ? columnInfo_renderer.get(filterRender.name) : null;
    const ctFilterOptions = flCompConf ? flCompConf.createTableFilterOptions : null;
    const filters = toFilters(colConfs.filters, colId);
    const types = ['seq', 'checkbox', 'radio', 'expand', 'html'];
    if (type && types.indexOf(type) === -1) {
      columnInfo_warnLog('vxe.error.errProp', [`type=${type}`, types.join(', ')]);
    }
    if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(cellRender) || cellRender && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isObject(cellRender)) {
      columnInfo_warnLog('vxe.error.errProp', [`column.cell-render=${cellRender}`, 'column.cell-render={}']);
    }
    if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(editRender) || editRender && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isObject(editRender)) {
      columnInfo_warnLog('vxe.error.errProp', [`column.edit-render=${editRender}`, 'column.edit-render={}']);
    }
    if (type === 'expand') {
      const {
        treeConfig
      } = tableProps;
      const {
        computeTreeOpts
      } = $xeTable.getComputeMaps();
      const treeOpts = computeTreeOpts.value;
      if (treeConfig && (treeOpts.showLine || treeOpts.line)) {
        columnInfo_errLog('vxe.error.errConflicts', ['tree-config.showLine', 'column.type=expand']);
      }
    }
    if (formatter) {
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(formatter)) {
        const gFormatOpts = columnInfo_formats.get(formatter) || (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default())[formatter];
        if (!gFormatOpts || !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(gFormatOpts.tableCellFormatMethod || gFormatOpts.cellFormatMethod)) {
          columnInfo_errLog('vxe.error.notFormats', [formatter]);
        }
      } else if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(formatter)) {
        const gFormatOpts = columnInfo_formats.get(formatter[0]) || (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default())[formatter[0]];
        if (!gFormatOpts || !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(gFormatOpts.tableCellFormatMethod || gFormatOpts.cellFormatMethod)) {
          columnInfo_errLog('vxe.error.notFormats', [formatter[0]]);
        }
      }
    }
    if (aggFunc) {
      if (!$xeTable.handlePivotTableAggData && aggFunc !== true) {
        columnInfo_errLog('vxe.error.errProp', [`column.agg-func=${aggFunc}`, 'column.agg-func=true']);
      }
    }
    if (field && editRender) {
      if (editRender.startField && `${editRender.startField}`.indexOf(field) >= 0) {
        columnInfo_errLog('vxe.error.modelConflicts', [`field=${field}`, `edit-render.startField=${editRender.startField}`]);
      }
      if (editRender.endField && `${editRender.endField}`.indexOf(field) >= 0) {
        columnInfo_errLog('vxe.error.modelConflicts', [`field=${field}`, `edit-render.endField=${editRender.endField}`]);
      }
    }
    Object.assign(this, {
      // 基本属性
      type: colConfs.type,
      property: colConfs.field,
      field: field,
      title: colConfs.title,
      width: colConfs.width,
      minWidth: colConfs.minWidth,
      maxWidth: colConfs.maxWidth,
      resizable: colConfs.resizable,
      fixed,
      align,
      headerAlign,
      footerAlign,
      showOverflow: colConfs.showOverflow,
      showHeaderOverflow: colConfs.showHeaderOverflow,
      showFooterOverflow: colConfs.showFooterOverflow,
      className: colConfs.className,
      headerClassName: colConfs.headerClassName,
      footerClassName: colConfs.footerClassName,
      formatter: formatter,
      headerFormatter: colConfs.headerFormatter,
      footerFormatter: colConfs.footerFormatter,
      padding: colConfs.padding,
      verticalAlign: colConfs.verticalAlign,
      sortable: colConfs.sortable,
      sortBy: colConfs.sortBy,
      sortType: colConfs.sortType,
      filters: filters,
      filterMultiple: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(filterMultiple) ? filterMultiple : true,
      filterMethod: colConfs.filterMethod,
      filterResetMethod: colConfs.filterResetMethod,
      filterRecoverMethod: colConfs.filterRecoverMethod,
      filterRender: filterRender,
      floatingFilters: colConfs.floatingFilters,
      rules: colConfs.rules,
      rowGroupNode: colConfs.rowGroupNode,
      treeNode: colConfs.treeNode,
      dragSort: colConfs.dragSort,
      rowResize: colConfs.rowResize,
      cellType: colConfs.cellType,
      cellRender: cellRender,
      editRender: editRender,
      contentRender: colConfs.contentRender,
      headerExportMethod: colConfs.headerExportMethod,
      exportMethod: colConfs.exportMethod,
      footerExportMethod: colConfs.footerExportMethod,
      titleHelp: colConfs.titleHelp,
      titlePrefix: colConfs.titlePrefix,
      titleSuffix: colConfs.titleSuffix,
      aggFunc,
      copyMethod: colConfs.copyMethod,
      cutMethod: colConfs.cutMethod,
      pasteMethod: colConfs.pasteMethod,
      // 自定义参数
      params: colConfs.params,
      // 渲染属性
      id: colId,
      parentId: null,
      visible: defaultVisible,
      // 内部属性(一旦被使用,将导致不可升级版本)
      defaultParentId: null,
      halfVisible: false,
      defaultVisible: defaultVisible,
      defaultFixed: fixed,
      defaultAlign: align,
      defaultHeaderAlign: headerAlign,
      defaultFooterAlign: footerAlign,
      defaultAggFunc: aggFunc,
      checked: false,
      halfChecked: false,
      disabled: false,
      // 分组层级
      level: 1,
      // 跨行
      rowSpan: 1,
      // 跨列
      colSpan: 1,
      // 数据排序
      order: null,
      // 用于记录排序类型,升序和倒序
      sortTime: 0,
      // 用于多列的先后顺序
      // 列排序
      sortNumber: 0,
      // 用于记录自定义列顺序
      renderSortNumber: 0,
      // 用于记录自定义列顺序
      renderAggFn: '',
      renderAggDigits: null,
      renderAggFormat: null,
      renderAlign: '',
      renderHeaderAlign: '',
      renderFooterAlign: '',
      renderFixed: '',
      renderVisible: false,
      renderWidth: defaultRenderWidth,
      renderHeight: 0,
      renderResizeWidth: 0,
      renderAutoWidth: 0,
      resizeWidth: 0,
      // 手动调整
      renderLeft: 0,
      renderArgs: [],
      // 渲染参数可用于扩展
      model: {},
      renderHeader: renderHeader || colConfs.renderHeader,
      renderCell: renderCell || colConfs.renderCell,
      renderFooter: renderFooter || colConfs.renderFooter,
      renderData: renderData,
      // 单元格插槽,只对 grid 有效
      slots: colConfs.slots
    });
    if (ctFilterOptions && (!filters || !filters.length)) {
      this.filters = toFilters(ctFilterOptions({
        $table: $xeTable,
        column: this
      }), colId);
    }
    if ($xeGGWrapper) {
      const {
        computeProxyOpts
      } = $xeGGWrapper.getComputeMaps();
      const proxyOpts = computeProxyOpts.value;
      if (proxyOpts.beforeColumn) {
        proxyOpts.beforeColumn({
          $table: $xeTable,
          $grid: $xeGrid,
          $gantt: $xeGantt,
          column: this
        });
      }
    }
  }
  getTitle() {
    return getFuncText(this.title || (this.type === 'seq' ? columnInfo_getI18n('vxe.table.seqTitle') : ''));
  }
  getKey() {
    const {
      type,
      field
    } = this;
    return field || (type ? `type=${type}` : null);
  }
  update(name, value) {
    // 不支持直接修改的属性
    if (name !== 'filters') {
      if (name === 'field') {
        // 兼容旧属性
        this.property = value;
      }
      this[name] = value;
    }
  }
}
;// ./packages/table/src/util.ts












function createInternalData() {
  return {
    tZindex: 0,
    currKeyField: '',
    isCurrDeepKey: false,
    elemStore: {},
    // 存放横向 X 虚拟滚动相关的信息
    scrollXStore: {
      preloadSize: 0,
      offsetSize: 0,
      visibleSize: 0,
      visibleStartIndex: 0,
      visibleEndIndex: 0,
      startIndex: 0,
      endIndex: 0
    },
    // 存放纵向 Y 虚拟滚动相关信息
    scrollYStore: {
      preloadSize: 0,
      offsetSize: 0,
      visibleSize: 0,
      visibleStartIndex: 0,
      visibleEndIndex: 0,
      startIndex: 0,
      endIndex: 0
    },
    // 表格宽度
    tableWidth: 0,
    // 表格高度
    tableHeight: 0,
    customHeight: 0,
    customMinHeight: 0,
    customMaxHeight: 0,
    // 当前 hover 行
    hoverRow: null,
    // 最后滚动位置
    lastScrollLeft: 0,
    lastScrollTop: 0,
    // 单选框属性,已选中保留的行
    radioReserveRow: null,
    // 复选框属性,已选中保留的行集合
    checkboxReserveRowMap: {},
    // 行数据,已展开保留的行集合
    rowExpandedReserveRowMap: {},
    // 树结构数据,已展开保留的行集合
    treeExpandedReserveRowMap: {},
    // 树结构数据,不确定状态的集合
    treeIndeterminateRowMaps: {},
    // 列表完整数据、条件处理后
    tableFullData: [],
    afterFullData: [],
    afterTreeFullData: [],
    afterGroupFullData: [],
    // 列表条件处理后数据集合
    afterFullRowMaps: {},
    // 树结构完整数据、条件处理后
    tableFullTreeData: [],
    // 行分组全量数据、条件处理后
    tableFullGroupData: [],
    tableSynchData: [],
    tableSourceData: [],
    // 收集的列配置(带分组)
    collectColumn: [],
    // 完整所有列(不带分组)
    tableFullColumn: [],
    // 渲染所有列
    visibleColumn: [],
    // 全量数据集(包括当前和已删除)
    fullAllDataRowIdData: {},
    // 数据集(仅当前)
    fullDataRowIdData: {},
    // 数据集(仅可视)
    visibleDataRowIdData: {},
    keepUpdateFieldMaps: {},
    headerFullDataColData: {},
    footerFullDataRowData: {},
    // 渲染中缓存数据
    sourceDataRowIdData: {},
    fullColumnIdData: {},
    fullColumnFieldData: {},
    fullCellHeightMaps: {},
    fullCellStoreMaps: {},
    // 当前行
    currentRow: null,
    // 合并表头单元格的数据
    mergeHeaderList: [],
    mergeHeaderMaps: {},
    // 已合并单元格数据集合
    mergeHeaderCellMaps: {},
    mergeHeaderRowMaps: {},
    mergeHeaderColMaps: {},
    // 合并单元格的数据
    mergeBodyList: [],
    mergeBodyMaps: {},
    // 已合并单元格数据集合
    mergeBodyCellMaps: {},
    mergeBodyRowMaps: {},
    mergeBodyColMaps: {},
    // 合并表尾的数据
    mergeFooterList: [],
    mergeFooterMaps: {},
    // 已合并表尾数据集合
    mergeFooterCellMaps: {},
    mergeFooterRowMaps: {},
    mergeFooterColMaps: {},
    // 已展开的行集合
    rowExpandedMaps: {},
    // 懒加载中的展开行的集合
    rowExpandLazyLoadedMaps: {},
    // 已展开的分组行
    rowGroupExpandedMaps: {},
    // 已展开树节点集合
    treeExpandedMaps: {},
    // 懒加载中的树节点的集合
    treeExpandLazyLoadedMaps: {},
    // 复选框属性,已选中的行集合
    selectCheckboxMaps: {},
    // 已标记的对象集
    pendingRowMaps: {},
    // 已新增的临时行
    insertRowMaps: {},
    // 已删除行
    removeRowMaps: {},
    cvCacheMaps: {},
    // 表头高度
    tHeaderHeight: 0,
    // 表体高度
    tBodyHeight: 0,
    // 表尾高度
    tFooterHeight: 0,
    stackHistoryStore: {
      undoStacks: [],
      redoStacks: []
    },
    teleportToWrapperElem: null,
    popupToWrapperElem: null,
    customPopupToElem: null,
    lastSTime: 0,
    // isCustomDragStatus: false,
    inited: false,
    tooltipTimeout: null,
    initStatus: false,
    isActivated: false,
    // rceTimeout: undefined,
    // rceRunTime: undefined,
    rceDelay: 0
    // _sToTime: null
  };
}
function createReactData() {
  return {
    updateColFlag: 0,
    // 低性能的静态列
    staticColumns: [],
    // 渲染的列分组
    tableGroupColumn: [],
    // 可视区渲染的列
    tableColumn: [],
    // 渲染中的数据
    tableData: [],
    // 是否启用了横向 X 可视渲染方式加载
    scrollXLoad: false,
    // 是否启用了纵向 Y 可视渲染方式加载
    scrollYLoad: false,
    // 是否存在纵向滚动条
    overflowY: true,
    // 是否存在横向滚动条
    overflowX: false,
    // 纵向滚动条的宽度
    scrollbarWidth: 0,
    // 横向滚动条的高度
    scrollbarHeight: 0,
    // 行高
    rowHeight: 0,
    // 表格父容器的高度
    parentHeight: 0,
    // 是否使用分组表头
    isGroup: false,
    isAllOverflow: false,
    // 复选框属性,是否全选
    isAllSelected: false,
    // 复选框属性,有选中且非全选状态
    isIndeterminate: false,
    // 单选框属性,选中列
    currentColumn: null,
    // 单选框属性,选中行
    selectRadioRow: null,
    // 表尾合计数据
    footerTableData: [],
    // 行分组列信息
    rowGroupColumn: null,
    // 展开列信息
    expandColumn: null,
    checkboxColumn: null,
    radioColumn: null,
    // 树节点列信息
    treeNodeColumn: null,
    hasFixedColumn: false,
    // 刷新列标识,当列筛选被改变时,触发表格刷新数据
    upDataFlag: 0,
    // 刷新列标识,当列的特定属性被改变时,触发表格刷新列
    reColumnFlag: 0,
    // 初始化标识
    initStore: {
      filter: false,
      import: false,
      export: false,
      custom: false
    },
    // 自定义列相关的信息
    customStore: {
      btnEl: null,
      isAll: false,
      isIndeterminate: false,
      activeBtn: false,
      activeWrapper: false,
      visible: false,
      maxHeight: null,
      defPopupStyle: {},
      panePopupStyle: {},
      oldSortMaps: {},
      oldFixedMaps: {},
      oldVisibleMaps: {}
    },
    customColumnList: [],
    // 当前选中的筛选列
    filterStore: {
      isAllSelected: false,
      isIndeterminate: false,
      style: null,
      column: null,
      visible: false,
      maxHeight: null
    },
    // 存放列相关的信息
    columnStore: {
      leftList: [],
      centerList: [],
      rightList: [],
      resizeList: [],
      pxList: [],
      pxMinList: [],
      autoMinList: [],
      scaleList: [],
      scaleMinList: [],
      autoList: [],
      remainList: []
    },
    // 存放快捷菜单的信息
    ctxMenuStore: {
      selected: null,
      visible: false,
      showChild: false,
      selectChild: null,
      list: [],
      style: null
    },
    // 存放可编辑相关信息
    editStore: {
      indexs: {
        columns: []
      },
      titles: {
        columns: []
      },
      // 选中源
      selected: {
        row: null,
        column: null
      },
      // 已复制源
      copyed: {
        cut: false,
        rows: [],
        columns: []
      },
      // 激活
      actived: {
        row: null,
        column: null
      },
      // 当前被强制聚焦单元格,只会在鼠标点击后算聚焦
      focused: {
        row: null,
        column: null
      }
    },
    // 存放 tooltip 相关信息
    tooltipStore: {
      row: null,
      column: null,
      content: '',
      visible: false,
      type: null,
      currOpts: {}
    },
    // 存放数据校验相关信息
    validStore: {
      visible: false
    },
    validErrorMaps: {},
    // 导入相关信息
    importStore: {
      inited: false,
      file: null,
      type: '',
      modeList: [],
      typeList: [],
      filename: '',
      visible: false
    },
    importParams: {
      mode: '',
      types: null,
      message: true
    },
    // 导出相关信息
    exportStore: {
      inited: false,
      name: '',
      modeList: [],
      typeList: [],
      columns: [],
      isPrint: false,
      hasFooter: false,
      hasMerge: false,
      hasTree: false,
      hasRowGroup: false,
      hasColgroup: false,
      visible: false
    },
    exportParams: {
      filename: '',
      sheetName: '',
      mode: '',
      type: '',
      isColgroup: false,
      isMerge: false,
      isTreeAllExpanded: false,
      isRowGroupAllExpanded: false,
      useStyle: false,
      original: false,
      message: true,
      isHeader: false,
      isTitle: false,
      isFooter: false
    },
    visiblwRowsFlag: 1,
    isRowGroupStatus: false,
    rowGroupList: [],
    aggHandleFields: [],
    aggHandleAggColumns: [],
    rowGroupExpandedFlag: 1,
    rowExpandedFlag: 1,
    treeExpandedFlag: 1,
    updateCheckboxFlag: 1,
    pendingRowFlag: 1,
    insertRowFlag: 1,
    removeRowFlag: 1,
    mergeHeadFlag: 1,
    mergeBodyFlag: 1,
    mergeFootFlag: 1,
    rowHeightStore: {
      xlarge: 54,
      large: 52,
      default: 48,
      medium: 44,
      small: 40,
      mini: 36
    },
    scrollVMLoading: false,
    scrollYHeight: 0,
    scrollYTop: 0,
    isScrollYBig: false,
    scrollXLeft: 0,
    scrollXWidth: 0,
    isScrollXBig: false,
    lazScrollLoading: false,
    rowExpandHeightFlag: 1,
    calcCellHeightFlag: 1,
    resizeHeightFlag: 1,
    resizeWidthFlag: 1,
    isCustomStatus: false,
    isCustomDragStatus: true,
    ctPopupFlag: 1,
    isCrossDragRow: false,
    dragRow: null,
    isCrossDragCol: false,
    dragCol: null,
    dragTipText: '',
    isDragResize: false,
    isRowLoading: false,
    isColLoading: false
  };
}
const maxKey = '__max';
function getRowMaxHeight(chRest, isForce) {
  if (isForce || !chRest[maxKey]) {
    let max = 0;
    for (const key in chRest) {
      const val = chRest[key];
      if (key !== maxKey && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(val) && val > max) {
        max = val;
      }
    }
    chRest[maxKey] = max;
    return max;
  }
  return chRest[maxKey];
}
const getAllConvertColumns = (columns, parentColumn) => {
  const result = [];
  columns.forEach(column => {
    column.parentId = parentColumn ? parentColumn.id : null;
    if (column.visible) {
      if (column.children && column.children.length && column.children.some(column => column.visible)) {
        result.push(column);
        result.push(...getAllConvertColumns(column.children, column));
      } else {
        result.push(column);
      }
    }
  });
  return result;
};
const convertHeaderColumnToRows = originColumns => {
  let maxLevel = 1;
  const traverse = (column, parent) => {
    if (parent) {
      column.level = parent.level + 1;
      if (maxLevel < column.level) {
        maxLevel = column.level;
      }
    }
    if (column.children && column.children.length && column.children.some(column => column.visible)) {
      let colSpan = 0;
      column.children.forEach(subColumn => {
        if (subColumn.visible) {
          traverse(subColumn, column);
          colSpan += subColumn.colSpan;
        }
      });
      column.colSpan = colSpan;
    } else {
      column.colSpan = 1;
    }
  };
  originColumns.forEach(column => {
    column.level = 1;
    traverse(column);
  });
  const rows = [];
  for (let i = 0; i < maxLevel; i++) {
    rows.push([]);
  }
  const allColumns = getAllConvertColumns(originColumns);
  allColumns.forEach(column => {
    if (column.children && column.children.length && column.children.some(column => column.visible)) {
      column.rowSpan = 1;
    } else {
      column.rowSpan = maxLevel - column.level + 1;
    }
    rows[column.level - 1].push(column);
  });
  return rows;
};
function convertHeaderToGridRows(spanColumns) {
  const rSize = spanColumns.length;
  const cSize = spanColumns[0].reduce((sum, cell) => sum + cell.colSpan, 0);
  const occupiedRows = [];
  const fullRows = [];
  for (let rIndex = 0; rIndex < rSize; rIndex++) {
    const oCols = [];
    const dCols = [];
    for (let cIndex = 0; cIndex < cSize; cIndex++) {
      oCols.push(false);
      dCols.push('');
    }
    occupiedRows.push(oCols);
    fullRows.push(dCols);
  }
  for (let rIndex = 0; rIndex < rSize; rIndex++) {
    let currColIndex = 0;
    for (const column of spanColumns[rIndex]) {
      const {
        colSpan,
        rowSpan
      } = column;
      let startColIndex = -1;
      for (let ccIndex = currColIndex; ccIndex <= cSize - colSpan; ccIndex++) {
        let oFlag = true;
        for (let csIndex = 0; csIndex < colSpan; csIndex++) {
          if (occupiedRows[rIndex][ccIndex + csIndex]) {
            oFlag = false;
            break;
          }
        }
        if (oFlag) {
          startColIndex = ccIndex;
          break;
        }
      }
      if (startColIndex === -1) {
        for (let j = 0; j <= cSize - colSpan; j++) {
          let oFlag = true;
          for (let k = 0; k < colSpan; k++) {
            if (occupiedRows[rIndex][j + k]) {
              oFlag = false;
              break;
            }
          }
          if (oFlag) {
            startColIndex = j;
            break;
          }
        }
        if (startColIndex === -1) {
          // error
          break;
        }
      }
      for (let srIndex = rIndex; srIndex < rIndex + rowSpan; srIndex++) {
        for (let scIndex = startColIndex; scIndex < startColIndex + colSpan; scIndex++) {
          occupiedRows[srIndex][scIndex] = true;
          fullRows[srIndex][scIndex] = column;
        }
      }
      currColIndex = startColIndex + colSpan;
    }
  }
  return fullRows;
}
function restoreScrollLocation($xeTable, scrollLeft, scrollTop) {
  const internalData = $xeTable.internalData;
  if (scrollLeft || scrollTop) {
    internalData.intoRunScroll = false;
    internalData.inVirtualScroll = false;
    internalData.inWheelScroll = false;
    internalData.inHeaderScroll = false;
    internalData.inBodyScroll = false;
    internalData.inFooterScroll = false;
    internalData.scrollRenderType = '';
    // 还原滚动状态
    return $xeTable.scrollTo(scrollLeft, scrollTop);
  }
  return $xeTable.clearScroll();
}
function getRowUniqueId() {
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId('row_');
}
/**
 * 生成行的唯一主键
 */
function createRowId(rowOpts, row, keyField) {
  const {
    createKeyMethod
  } = rowOpts;
  if (createKeyMethod) {
    return createKeyMethod({
      row,
      keyField
    });
  }
  return getRowUniqueId();
}
function hasDeepKey(rowKey) {
  return rowKey.indexOf('.') > -1;
}
// 行主键 key
function getRowkey($xeTable) {
  const {
    currKeyField
  } = $xeTable.internalData;
  return currKeyField;
}
// 行主键 value
function getRowid($xeTable, row) {
  const internalData = $xeTable.internalData;
  const {
    isCurrDeepKey,
    currKeyField
  } = internalData;
  return row ? encodeRowid((isCurrDeepKey ? getDeepRowIdByKey : getFastRowIdByKey)(row, currKeyField)) : '';
}
function createHandleUpdateRowId($xeTable) {
  const internalData = $xeTable.internalData;
  const {
    isCurrDeepKey,
    currKeyField
  } = internalData;
  const {
    computeRowOpts
  } = $xeTable.getComputeMaps();
  const rowOpts = computeRowOpts.value;
  const updateRId = isCurrDeepKey ? updateDeepRowKey : updateFastRowKey;
  return {
    rowKey: currKeyField,
    handleUpdateRowId(row) {
      return row ? updateRId(rowOpts, row, currKeyField) : '';
    }
  };
}
function createHandleGetRowId($xeTable) {
  const internalData = $xeTable.internalData;
  const {
    isCurrDeepKey,
    currKeyField
  } = internalData;
  const getRId = isCurrDeepKey ? getDeepRowIdByKey : getFastRowIdByKey;
  return {
    rowKey: currKeyField,
    handleGetRowId(row) {
      return row ? encodeRowid(getRId(row, currKeyField)) : '';
    }
  };
}
// 编码行主键
function encodeRowid(rowVal) {
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(rowVal) ? '' : encodeURIComponent(rowVal);
}
function getDeepRowIdByKey(row, rowKey) {
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, rowKey);
}
function updateDeepRowKey(rowOpts, row, rowKey) {
  let rowid = encodeRowid(getDeepRowIdByKey(row, rowKey));
  if (eqEmptyValue(rowid)) {
    const newRowid = createRowId(rowOpts, row, rowKey);
    rowid = '' + newRowid;
    external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, rowKey, rowid);
  }
  return rowid;
}
function getFastRowIdByKey(row, rowKey) {
  return row[rowKey];
}
function updateFastRowKey(rowOpts, row, rowKey) {
  let rowid = encodeRowid(getFastRowIdByKey(row, rowKey));
  if (eqEmptyValue(rowid)) {
    const newRowid = createRowId(rowOpts, row, rowKey);
    rowid = '' + newRowid;
    row[rowKey] = newRowid;
  }
  return rowid;
}
function handleFieldOrColumn($xeTable, fieldOrColumn) {
  if (fieldOrColumn) {
    return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(fieldOrColumn) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(fieldOrColumn) ? $xeTable.getColumnByField(`${fieldOrColumn}`) : fieldOrColumn;
  }
  return null;
}
function handleRowidOrRow($xeTable, rowidOrRow) {
  if (rowidOrRow) {
    const rowid = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(rowidOrRow) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(rowidOrRow) ? rowidOrRow : getRowid($xeTable, rowidOrRow);
    return $xeTable.getRowById(rowid);
  }
  return null;
}
function getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) {
  const {
    height,
    minHeight,
    maxHeight
  } = cellOpts;
  let cellHeight = rowRest.resizeHeight || height || rowOpts.height || rowRest.height || defaultRowHeight;
  if (maxHeight && maxHeight <= cellHeight) {
    cellHeight = maxHeight;
  }
  if (minHeight && minHeight >= cellHeight) {
    cellHeight = minHeight;
  }
  return cellHeight;
}
function getPaddingLeftRightSize(elem) {
  if (elem) {
    const computedStyle = getComputedStyle(elem);
    const paddingLeft = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(computedStyle.paddingLeft);
    const paddingRight = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(computedStyle.paddingRight);
    return paddingLeft + paddingRight;
  }
  return 0;
}
function getElementMarginAndWidth(elem) {
  if (elem) {
    const computedStyle = getComputedStyle(elem);
    const marginLeft = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(computedStyle.marginLeft);
    const marginRight = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(computedStyle.marginRight);
    return elem.offsetWidth + marginLeft + marginRight;
  }
  return 0;
}
function toFilters(filters, colid) {
  if (filters) {
    if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(filters)) {
      return filters.map(({
        label,
        value,
        data,
        resetValue,
        checked
      }) => {
        return {
          label,
          value,
          data,
          resetValue,
          checked: !!checked,
          _checked: !!checked,
          _colId: colid
        };
      });
    }
    return [];
  }
  return filters;
}
function toTreePathSeq(path) {
  return path.map((num, i) => i % 2 === 0 ? Number(num) + 1 : '.').join('');
}
function getCellValue(row, column) {
  if (column) {
    return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
  }
  return null;
}
function setCellValue(row, column, value) {
  if (column) {
    external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, column.field, value);
  }
}
function getRefElem(refEl) {
  if (refEl) {
    const rest = refEl.value;
    if (rest) {
      return rest.$el || rest;
    }
  }
  return null;
}
function getCalcHeight(height) {
  if (height === 'unset') {
    return 0;
  }
  return height || 0;
}
/**
 * 列宽拖动最大宽度
 */
function getColReMaxWidth(params) {
  const {
    $table,
    column,
    cell
  } = params;
  const internalData = $table.internalData;
  const {
    elemStore
  } = internalData;
  const {
    computeColumnOpts,
    computeResizableOpts
  } = $table.getComputeMaps();
  const resizableOpts = computeResizableOpts.value;
  const columnOpts = computeColumnOpts.value;
  const {
    maxWidth: reMaxWidth
  } = resizableOpts;
  const colMaxWidth = column.maxWidth || columnOpts.maxWidth;
  // 如果自定义调整宽度逻辑
  if (reMaxWidth) {
    const customMaxWidth = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(reMaxWidth) ? reMaxWidth(params) : reMaxWidth;
    if (customMaxWidth !== 'auto') {
      return Math.max(1, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(customMaxWidth));
    }
  }
  const minTitleWidth = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor((external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(getComputedStyle(cell).fontSize) || 14) * 1.8);
  const paddingLeftRight = getPaddingLeftRightSize(cell) + getPaddingLeftRightSize(queryElement(cell, '.vxe-cell'));
  const mWidth = minTitleWidth + paddingLeftRight;
  // 如果设置最小宽
  if (colMaxWidth) {
    const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
    if (bodyScrollElem) {
      if (isScale(colMaxWidth)) {
        const bodyWidth = bodyScrollElem.clientWidth - 1;
        const meanWidth = bodyWidth / 100;
        return Math.max(mWidth, Math.floor(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(colMaxWidth) * meanWidth));
      } else if (isPx(colMaxWidth)) {
        return Math.max(mWidth, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(colMaxWidth));
      }
    }
  }
  return -1;
}
/**
 * 列宽拖动最小宽度
 */
function getColReMinWidth(params) {
  const {
    $table,
    column,
    cell
  } = params;
  const tableProps = $table.props;
  const internalData = $table.internalData;
  const {
    computeColumnOpts,
    computeResizableOpts
  } = $table.getComputeMaps();
  const resizableOpts = computeResizableOpts.value;
  const columnOpts = computeColumnOpts.value;
  const {
    minWidth: reMinWidth
  } = resizableOpts;
  // 如果自定义调整宽度逻辑
  if (reMinWidth) {
    const customMinWidth = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(reMinWidth) ? reMinWidth(params) : reMinWidth;
    if (customMinWidth !== 'auto') {
      return Math.max(1, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(customMinWidth));
    }
  }
  const {
    elemStore
  } = internalData;
  const {
    showHeaderOverflow: allColumnHeaderOverflow
  } = tableProps;
  const {
    showHeaderOverflow
  } = column;
  const colMinWidth = column.minWidth || columnOpts.minWidth;
  const headOverflow = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(showHeaderOverflow) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow;
  const showEllipsis = headOverflow === 'ellipsis';
  const showTitle = headOverflow === 'title';
  const showTooltip = headOverflow === true || headOverflow === 'tooltip';
  const hasEllipsis = showTitle || showTooltip || showEllipsis;
  const minTitleWidth = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor((external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(getComputedStyle(cell).fontSize) || 14) * 1.8);
  const paddingLeftRight = getPaddingLeftRightSize(cell) + getPaddingLeftRightSize(queryElement(cell, '.vxe-cell'));
  let mWidth = minTitleWidth + paddingLeftRight;
  // 默认最小宽处理
  if (hasEllipsis) {
    const dragIconWidth = getElementMarginAndWidth(queryElement(cell, '.vxe-cell--drag-handle'));
    const checkboxIconWidth = getElementMarginAndWidth(queryElement(cell, '.vxe-cell--checkbox'));
    const requiredIconWidth = getElementMarginAndWidth(queryElement(cell, '.vxe-cell--required-icon'));
    const editIconWidth = getElementMarginAndWidth(queryElement(cell, '.vxe-cell--edit-icon'));
    const prefixIconWidth = getElementMarginAndWidth(queryElement(cell, '.vxe-cell-title-prefix-icon'));
    const suffixIconWidth = getElementMarginAndWidth(queryElement(cell, '.vxe-cell-title-suffix-icon'));
    const sortIconWidth = getElementMarginAndWidth(queryElement(cell, '.vxe-cell--sort'));
    const filterIconWidth = getElementMarginAndWidth(queryElement(cell, '.vxe-cell--filter'));
    mWidth += dragIconWidth + checkboxIconWidth + requiredIconWidth + editIconWidth + prefixIconWidth + suffixIconWidth + filterIconWidth + sortIconWidth;
  }
  // 如果设置最小宽
  if (colMinWidth) {
    const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
    if (bodyScrollElem) {
      if (isScale(colMinWidth)) {
        const bodyWidth = bodyScrollElem.clientWidth - 1;
        const meanWidth = bodyWidth / 100;
        return Math.max(mWidth, Math.floor(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(colMinWidth) * meanWidth));
      } else if (isPx(colMinWidth)) {
        return Math.max(mWidth, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(colMinWidth));
      }
    }
  }
  return mWidth;
}
function isColumnInfo(column) {
  return column && (column.constructor === ColumnInfo || column instanceof ColumnInfo);
}
// 获取所有的列,排除分组
function getColumnList(columns) {
  const result = [];
  columns.forEach(column => {
    result.push(...(column.children && column.children.length ? getColumnList(column.children) : [column]));
  });
  return result;
}
function createColumn($xeTable, options, renderOptions) {
  return isColumnInfo(options) ? options : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)(new ColumnInfo($xeTable, options, renderOptions));
}
function watchColumn($xeTable, props, column) {
  Object.keys(props).forEach(name => {
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props[name], value => {
      column.update(name, value);
      if ($xeTable) {
        if (name === 'filters') {
          $xeTable.setFilter(column, value);
          $xeTable.handleUpdateDataQueue();
        } else if (['visible', 'fixed', 'width', 'minWidth', 'maxWidth'].includes(name)) {
          $xeTable.handleRefreshColumnQueue();
        }
      }
    });
  });
}
function assembleColumn($xeTable, elem, column, colgroup) {
  const {
    reactData
  } = $xeTable;
  const {
    staticColumns
  } = reactData;
  const parentElem = elem.parentNode;
  const parentColumn = colgroup ? colgroup.columnConfig : null;
  const parentCols = parentColumn ? parentColumn.children : staticColumns;
  if (parentElem && parentCols) {
    column.defaultParentId = parentColumn ? parentColumn.id : null;
    parentCols.splice(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayIndexOf(parentElem.children, elem), 0, column);
    reactData.staticColumns = staticColumns.slice(0);
  }
}
function destroyColumn($xeTable, column) {
  const {
    reactData
  } = $xeTable;
  const {
    staticColumns
  } = reactData;
  const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(staticColumns, item => item.id === column.id, {
    children: 'children'
  });
  if (matchObj) {
    matchObj.items.splice(matchObj.index, 1);
  }
  reactData.staticColumns = staticColumns.slice(0);
}
function getRootColumn($xeTable, column) {
  const {
    internalData
  } = $xeTable;
  const {
    fullColumnIdData
  } = internalData;
  if (!column) {
    return null;
  }
  let parentColId = column.parentId;
  while (fullColumnIdData[parentColId]) {
    const column = fullColumnIdData[parentColId].column;
    parentColId = column.parentId;
    if (!parentColId) {
      return column;
    }
  }
  return column;
}
function getFirstChildColumn(column) {
  const {
    children
  } = column;
  if (children && children.length) {
    return getFirstChildColumn(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().first(children));
  }
  return column;
}
function getLastChildColumn(column) {
  const {
    children
  } = column;
  if (children && children.length) {
    return getFirstChildColumn(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().last(children));
  }
  return column;
}
function clearTableDefaultStatus($xeTable) {
  const {
    props,
    internalData
  } = $xeTable;
  internalData.initStatus = false;
  const actionList = [$xeTable.clearSort(), $xeTable.clearCurrentRow(), $xeTable.clearCurrentColumn(), $xeTable.clearRadioRow(), $xeTable.clearRadioReserve(), $xeTable.clearCheckboxRow(), $xeTable.clearCheckboxReserve(), $xeTable.clearRowExpand(), $xeTable.clearTreeExpand(), $xeTable.clearTreeExpandReserve(), $xeTable.clearPendingRow()];
  if ($xeTable.clearFilter) {
    actionList.push($xeTable.clearFilter());
  }
  if ($xeTable.clearSelected && (props.keyboardConfig || props.mouseConfig)) {
    actionList.push($xeTable.clearSelected());
  }
  if ($xeTable.clearCellAreas && props.mouseConfig) {
    actionList.push($xeTable.clearCellAreas(), $xeTable.clearCopyCellArea());
  }
  return Promise.all(actionList).then(() => {
    return $xeTable.clearScroll();
  });
}
function clearTableAllStatus($xeTable) {
  if ($xeTable.clearFilter) {
    $xeTable.clearFilter();
  }
  return clearTableDefaultStatus($xeTable);
}
function rowToVisible($xeTable, row) {
  const reactData = $xeTable.reactData;
  const internalData = $xeTable.internalData;
  const {
    computeLeftFixedWidth,
    computeRightFixedWidth,
    computeRowOpts,
    computeCellOpts,
    computeDefaultRowHeight
  } = $xeTable.getComputeMaps();
  const {
    scrollYLoad,
    scrollYTop,
    isAllOverflow
  } = reactData;
  const {
    elemStore,
    afterFullData,
    fullAllDataRowIdData,
    isResizeCellHeight
  } = internalData;
  const rowOpts = computeRowOpts.value;
  const cellOpts = computeCellOpts.value;
  const defaultRowHeight = computeDefaultRowHeight.value;
  const leftFixedWidth = computeLeftFixedWidth.value;
  const rightFixedWidth = computeRightFixedWidth.value;
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
  const rowid = getRowid($xeTable, row);
  if (bodyScrollElem) {
    const bodyHeight = bodyScrollElem.clientHeight;
    const bodyScrollTop = bodyScrollElem.scrollTop;
    const trElem = bodyScrollElem.querySelector(`[rowid="${rowid}"]`);
    if (trElem) {
      const trOffsetTop = trElem.offsetTop + (scrollYLoad ? scrollYTop : 0);
      const trHeight = trElem.clientHeight;
      // 检测行是否在可视区中
      if (trOffsetTop < bodyScrollTop || trOffsetTop > bodyScrollTop + bodyHeight) {
        return $xeTable.scrollTo(null, trOffsetTop);
      } else if (trOffsetTop + trHeight >= bodyHeight + bodyScrollTop) {
        return $xeTable.scrollTo(null, bodyScrollTop + trHeight);
      }
    } else {
      // 如果是虚拟渲染滚动
      if (scrollYLoad) {
        const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
        if (!isCustomCellHeight && isAllOverflow) {
          return $xeTable.scrollTo(null, ($xeTable.findRowIndexOf(afterFullData, row) - 1) * defaultRowHeight);
        }
        const rowRest = fullAllDataRowIdData[rowid] || {};
        const rHeight = rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
        const scrollTop = rowRest.oTop;
        if (scrollTop < bodyScrollTop) {
          return $xeTable.scrollTo(null, scrollTop - leftFixedWidth - 1);
        }
        return $xeTable.scrollTo(null, scrollTop + rHeight - (bodyHeight - rightFixedWidth - 1));
      }
    }
  }
  return Promise.resolve();
}
function colToVisible($xeTable, isForce, column, row) {
  const reactData = $xeTable.reactData;
  const internalData = $xeTable.internalData;
  const {
    computeLeftFixedWidth,
    computeRightFixedWidth
  } = $xeTable.getComputeMaps();
  const {
    scrollXLoad,
    scrollXLeft
  } = reactData;
  const {
    elemStore,
    visibleColumn
  } = internalData;
  const leftFixedWidth = computeLeftFixedWidth.value;
  const rightFixedWidth = computeRightFixedWidth.value;
  const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
  if (column.fixed) {
    return Promise.resolve();
  }
  if (bodyScrollElem) {
    const bodyWidth = bodyScrollElem.clientWidth;
    const bodyScrollLeft = bodyScrollElem.scrollLeft;
    let tdElem = null;
    if (row) {
      const rowid = getRowid($xeTable, row);
      tdElem = bodyScrollElem.querySelector(`[rowid="${rowid}"] .${column.id}`);
    }
    if (!tdElem) {
      tdElem = bodyScrollElem.querySelector(`.${column.id}`);
    }
    if (tdElem) {
      const tdOffsetLeft = tdElem.offsetLeft + (scrollXLoad ? scrollXLeft : 0);
      const cellWidth = tdElem.clientWidth;
      // 检测是否在可视区中
      if (isForce || !(tdOffsetLeft <= bodyScrollLeft + leftFixedWidth && tdOffsetLeft + cellWidth > bodyScrollLeft + leftFixedWidth) && !(tdOffsetLeft >= bodyScrollLeft + leftFixedWidth && tdOffsetLeft < bodyScrollLeft + bodyWidth - rightFixedWidth)) {
        if (tdOffsetLeft < bodyScrollLeft + leftFixedWidth) {
          return $xeTable.scrollTo(tdOffsetLeft - leftFixedWidth - 1);
        } else if (tdOffsetLeft + cellWidth - bodyScrollLeft > bodyWidth - rightFixedWidth) {
          return $xeTable.scrollTo(tdOffsetLeft + cellWidth - (bodyWidth - rightFixedWidth - 1));
        }
      }
    } else {
      if (scrollXLoad) {
        let tdOffsetLeft = 0;
        const cellWidth = column.renderWidth;
        for (let i = 0; i < visibleColumn.length; i++) {
          const currCol = visibleColumn[i];
          if (currCol === column || currCol.id === column.id) {
            break;
          }
          tdOffsetLeft += currCol.renderWidth;
        }
        // 检测是否在可视区中
        if (isForce || !(tdOffsetLeft <= bodyScrollLeft + leftFixedWidth && tdOffsetLeft + cellWidth > bodyScrollLeft + leftFixedWidth) && !(tdOffsetLeft >= bodyScrollLeft + leftFixedWidth && tdOffsetLeft < bodyScrollLeft + bodyWidth - rightFixedWidth)) {
          if (tdOffsetLeft < bodyScrollLeft) {
            return $xeTable.scrollTo(tdOffsetLeft - leftFixedWidth - 1);
          }
          return $xeTable.scrollTo(tdOffsetLeft + cellWidth - (bodyWidth - rightFixedWidth - 1));
        }
      }
    }
  }
  return Promise.resolve();
}
function hangleBolleanDefaultValue(currVal, defVal) {
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(currVal) ? currVal : defVal;
}
function handleCustomStoreConfig($xeTable) {
  const {
    computeCustomOpts
  } = $xeTable.getComputeMaps();
  const customOpts = computeCustomOpts.value;
  const {
    storage,
    storeOptions
  } = customOpts;
  const isAllCustom = storage === true;
  const storageOpts = Object.assign({}, isAllCustom ? {} : storage || {}, storeOptions);
  const isCustomAlign = hangleBolleanDefaultValue(storageOpts.align, isAllCustom);
  const isCustomHeaderAlign = hangleBolleanDefaultValue(storageOpts.headerAlign, isAllCustom);
  const isCustomFooterAlign = hangleBolleanDefaultValue(storageOpts.footerAlign, isAllCustom);
  const isCustomResizable = hangleBolleanDefaultValue(storageOpts.resizable, isAllCustom);
  const isCustomVisible = hangleBolleanDefaultValue(storageOpts.visible, isAllCustom);
  const isCustomFixed = hangleBolleanDefaultValue(storageOpts.fixed, isAllCustom);
  const isCustomSort = hangleBolleanDefaultValue(storageOpts.sort, isAllCustom);
  const isCustomAggGroup = hangleBolleanDefaultValue(storageOpts.aggGroup, isAllCustom);
  const isCustomAggFunc = hangleBolleanDefaultValue(storageOpts.aggFunc, isAllCustom);
  const isCustomPager = hangleBolleanDefaultValue(storageOpts.pager, isAllCustom);
  return {
    isCustomAlign,
    isCustomHeaderAlign,
    isCustomFooterAlign,
    isCustomResizable,
    isCustomVisible,
    isCustomFixed,
    isCustomSort,
    isCustomAggGroup,
    isCustomAggFunc,
    isCustomPager
  };
}
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.every.js
var es_iterator_every = __webpack_require__(1148);
;// ./packages/ui/src/vn.ts

function getOnName(type) {
  return 'on' + type.substring(0, 1).toLocaleUpperCase() + type.substring(1);
}
function getModelEvent(renderOpts) {
  switch (renderOpts.name) {
    case 'input':
    case 'textarea':
      return 'input';
    case 'select':
      return 'change';
  }
  return 'update:modelValue';
}
function getChangeEvent(renderOpts) {
  switch (renderOpts.name) {
    case 'input':
    case 'textarea':
    case 'VxeInput':
    case 'VxeNumberInput':
    case 'VxeTextarea':
    case '$input':
    case '$textarea':
      return 'input';
  }
  return 'change';
}
function hasInputType(renderOpts) {
  switch (renderOpts.name) {
    case 'VxeInput':
    case 'VxeNumberInput':
    case 'VxeTextarea':
    case '$input':
    case '$textarea':
      return true;
  }
  return false;
}
function getSlotVNs(vns) {
  if (vns === null || vns === undefined) {
    return [];
  }
  if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(vns)) {
    return vns;
  }
  return [vns];
}
;// ./packages/table/src/cell.ts












const {
  getI18n: cell_getI18n,
  getIcon: cell_getIcon,
  renderer: cell_renderer,
  renderEmptyElement
} = core_.VxeUI;
function renderTitlePrefixIcon(params) {
  const {
    $table,
    column
  } = params;
  const titlePrefix = column.titlePrefix || column.titleHelp;
  if (titlePrefix) {
    return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: ['vxe-cell-title-prefix-icon', titlePrefix.iconStatus ? `theme--${titlePrefix.iconStatus}` : ''],
      onMouseenter(evnt) {
        $table.triggerHeaderTitleEvent(evnt, titlePrefix, params);
      },
      onMouseleave(evnt) {
        $table.handleTargetLeaveEvent(evnt);
      }
    }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
      class: titlePrefix.icon || cell_getIcon().TABLE_TITLE_PREFIX
    })]);
  }
  return renderEmptyElement($table);
}
function renderTitleSuffixIcon(params) {
  const {
    $table,
    column
  } = params;
  const titleSuffix = column.titleSuffix;
  if (titleSuffix) {
    return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: ['vxe-cell-title-suffix-icon', titleSuffix.iconStatus ? `theme--${titleSuffix.iconStatus}` : ''],
      onMouseenter(evnt) {
        $table.triggerHeaderTitleEvent(evnt, titleSuffix, params);
      },
      onMouseleave(evnt) {
        $table.handleTargetLeaveEvent(evnt);
      }
    }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
      class: titleSuffix.icon || cell_getIcon().TABLE_TITLE_SUFFIX
    })]);
  }
  return renderEmptyElement($table);
}
function renderCellDragIcon(params) {
  const {
    $table,
    column
  } = params;
  const {
    context
  } = $table;
  const tableSlots = context.slots;
  const tableProps = $table.props;
  const {
    slots
  } = column;
  const {
    dragConfig
  } = tableProps;
  const {
    computeRowDragOpts
  } = $table.getComputeMaps();
  const rowDragOpts = computeRowDragOpts.value;
  const {
    icon,
    trigger,
    disabledMethod
  } = rowDragOpts;
  const rDisabledMethod = disabledMethod || (dragConfig ? dragConfig.rowDisabledMethod : null);
  const isDisabled = rDisabledMethod && rDisabledMethod(params);
  const rowDragIconSlot = (slots ? slots.rowDragIcon || slots['row-drag-icon'] : null) || tableSlots.rowDragIcon || tableSlots['row-drag-icon'];
  const ons = {};
  if (trigger !== 'cell') {
    ons.onMousedown = evnt => {
      if (!isDisabled) {
        $table.handleCellDragMousedownEvent(evnt, params);
      }
    };
    ons.onMouseup = $table.handleCellDragMouseupEvent;
  }
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
    key: 'dg',
    class: ['vxe-cell--drag-handle', {
      'is--disabled': isDisabled
    }],
    ...ons
  }, rowDragIconSlot ? $table.callSlot(rowDragIconSlot, params) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
    class: icon || (dragConfig ? dragConfig.rowIcon : '') || cell_getIcon().TABLE_DRAG_ROW
  })]);
}
function renderCellBaseVNs(params, content) {
  const {
    $table,
    column,
    level
  } = params;
  const {
    dragSort
  } = column;
  const tableProps = $table.props;
  const {
    treeConfig,
    dragConfig
  } = tableProps;
  const {
    computeRowOpts,
    computeRowDragOpts,
    computeTreeOpts
  } = $table.getComputeMaps();
  const rowOpts = computeRowOpts.value;
  const rowDragOpts = computeRowDragOpts.value;
  const treeOpts = computeTreeOpts.value;
  const {
    showIcon,
    isPeerDrag,
    isCrossDrag,
    visibleMethod
  } = rowDragOpts;
  const rVisibleMethod = visibleMethod || (dragConfig ? dragConfig.rowVisibleMethod : null);
  const vns = [];
  if (dragSort && rowOpts.drag && (showIcon || (dragConfig ? dragConfig.showRowIcon : false)) && (!rVisibleMethod || rVisibleMethod(params))) {
    if (treeConfig) {
      if (treeOpts.transform && (isPeerDrag || isCrossDrag || !level)) {
        vns.push(renderCellDragIcon(params));
      }
    } else {
      vns.push(renderCellDragIcon(params));
    }
  }
  return vns.concat(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(content) ? content : [content]);
}
function renderHeaderCellDragIcon(params) {
  const {
    $table,
    column
  } = params;
  const {
    context
  } = $table;
  const tableSlots = context.slots;
  const {
    slots
  } = column;
  const {
    computeColumnOpts,
    computeColumnDragOpts
  } = $table.getComputeMaps();
  const columnOpts = computeColumnOpts.value;
  const columnDragOpts = computeColumnDragOpts.value;
  const {
    showIcon,
    icon,
    trigger,
    isPeerDrag,
    isCrossDrag,
    visibleMethod,
    disabledMethod
  } = columnDragOpts;
  if (columnOpts.drag && showIcon && (!visibleMethod || visibleMethod(params))) {
    if (!column.fixed && (isPeerDrag || isCrossDrag || !column.parentId)) {
      const isDisabled = disabledMethod && disabledMethod(params);
      const columnDragIconSlot = (slots ? slots.columnDragIcon || slots['column-drag-icon'] : null) || tableSlots.columnDragIcon || tableSlots['column-drag-icon'];
      const ons = {};
      if (trigger !== 'cell') {
        ons.onMousedown = evnt => {
          if (!isDisabled) {
            $table.handleHeaderCellDragMousedownEvent(evnt, params);
          }
        };
        ons.onMouseup = $table.handleHeaderCellDragMouseupEvent;
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        key: 'dg',
        class: ['vxe-cell--drag-handle', {
          'is--disabled': isDisabled
        }],
        ...ons
      }, columnDragIconSlot ? $table.callSlot(columnDragIconSlot, params) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
        class: icon || cell_getIcon().TABLE_DRAG_COLUMN
      })]);
    }
  }
  return renderEmptyElement($table);
}
function renderHeaderCellBaseVNs(params, content) {
  const vns = [renderTitlePrefixIcon(params), renderHeaderCellDragIcon(params), ...(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(content) ? content : [content]), renderTitleSuffixIcon(params)];
  return vns;
}
function getRenderDefaultColumnTitle(column, content) {
  if (column.type === 'html' && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(content)) {
    return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      key: 'ch',
      innerHTML: content
    });
  }
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
    key: 'ct'
  }, getSlotVNs(content));
}
function renderTitleContent(params, content) {
  const {
    $table,
    column
  } = params;
  const tableProps = $table.props;
  const tableReactData = $table.reactData;
  const {
    computeHeaderTooltipOpts
  } = $table.getComputeMaps();
  const {
    showHeaderOverflow: allColumnHeaderOverflow
  } = tableProps;
  const {
    isRowGroupStatus
  } = tableReactData;
  const {
    showHeaderOverflow,
    slots
  } = column;
  const titleSlot = slots ? slots.title : null;
  const headerTooltipOpts = computeHeaderTooltipOpts.value;
  const showAllTip = headerTooltipOpts.showAll;
  const headOverflow = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow;
  const showTitle = (headOverflow === true ? headerTooltipOpts.mode : headOverflow) === 'title';
  const showTooltip = (headOverflow === true ? headerTooltipOpts.mode : headOverflow) === 'tooltip';
  const ons = {};
  if (showTitle || showTooltip || showAllTip) {
    ons.onMouseenter = evnt => {
      if (tableReactData.isDragResize) {
        return;
      }
      if (showTitle) {
        updateCellTitle(evnt.currentTarget, column);
      } else if (showTooltip || showAllTip) {
        $table.triggerHeaderTooltipEvent(evnt, params);
      }
    };
  }
  if (showTooltip || showAllTip) {
    ons.onMouseleave = evnt => {
      if (tableReactData.isDragResize) {
        return;
      }
      if (showTooltip || showAllTip) {
        $table.handleTargetLeaveEvent(evnt);
      }
    };
  }
  const titleVN = getRenderDefaultColumnTitle(column, content);
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
    class: 'vxe-cell--title',
    ...ons
  }, isRowGroupStatus && column.aggFunc && $table.getPivotTableAggregateRenderColTitles ? $table.getPivotTableAggregateRenderColTitles(column, titleVN) : titleSlot ? $table.callSlot(titleSlot, params) : [titleVN])];
}
function getFooterContent(params) {
  const {
    $table,
    column,
    row
  } = params;
  const tableProps = $table.props;
  const {
    editConfig
  } = tableProps;
  const {
    slots,
    editRender,
    cellRender
  } = column;
  const footerSlot = slots ? slots.footer : null;
  if (footerSlot) {
    return $table.callSlot(footerSlot, params);
  }
  const isEnableEdit = editConfig && isEnableConf(editConfig);
  const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
  const cellRenderOpts = isEnableConf(cellRender) ? cellRender : null;
  const renderOpts = editRenderOpts || cellRenderOpts;
  const itemValue = $table.getFooterCellLabel(row, column);
  if (renderOpts) {
    const compConf = cell_renderer.get(renderOpts.name);
    if (compConf) {
      const rtFooter = compConf.renderTableFooter || compConf.renderFooter;
      if (rtFooter) {
        const footParams = Object.assign(params, {
          cellValue: itemValue,
          itemValue
        });
        return getSlotVNs(rtFooter(renderOpts, footParams));
      }
    }
  }
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
    class: 'vxe-cell--label'
  }, formatText(itemValue, 1))];
}
function getDefaultCellLabel(params) {
  const {
    $table,
    row,
    column
  } = params;
  return formatText($table.getCellLabel(row, column), 1);
}
function renderCellHandle(params) {
  const {
    column,
    row,
    $table
  } = params;
  const tableProps = $table.props;
  const tableReactData = $table.reactData;
  const {
    isRowGroupStatus
  } = tableReactData;
  const {
    editConfig
  } = tableProps;
  const {
    type,
    treeNode,
    rowGroupNode,
    editRender
  } = column;
  const {
    computeEditOpts,
    computeCheckboxOpts,
    computeAggregateOpts
  } = $table.getComputeMaps();
  const aggregateOpts = computeAggregateOpts.value;
  const {
    mode
  } = aggregateOpts;
  const checkboxOpts = computeCheckboxOpts.value;
  const editOpts = computeEditOpts.value;
  const isDeepCell = treeNode || isRowGroupStatus && (mode === 'column' ? column.field === row.groupField : rowGroupNode);
  switch (type) {
    case 'seq':
      return isDeepCell ? Cell.renderDeepIndexCell(params) : Cell.renderSeqCell(params);
    case 'radio':
      return isDeepCell ? Cell.renderDeepRadioCell(params) : Cell.renderRadioCell(params);
    case 'checkbox':
      return checkboxOpts.checkField ? isDeepCell ? Cell.renderDeepSelectionCellByProp(params) : Cell.renderCheckboxCellByProp(params) : isDeepCell ? Cell.renderDeepSelectionCell(params) : Cell.renderCheckboxCell(params);
    case 'expand':
      return Cell.renderExpandCell(params);
    case 'html':
      return isDeepCell ? Cell.renderDeepHTMLCell(params) : Cell.renderHTMLCell(params);
  }
  const isEnableEdit = editConfig && isEnableConf(editConfig);
  const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
  if (editRenderOpts) {
    return editOpts.mode === 'cell' ? isDeepCell ? Cell.renderDeepCellEdit(params) : Cell.renderCellEdit(params) : isDeepCell ? Cell.renderDeepRowEdit(params) : Cell.renderRowEdit(params);
  }
  return isDeepCell ? Cell.renderDeepCell(params) : Cell.renderDefaultCell(params);
}
function renderHeaderHandle(params) {
  const {
    column,
    $table
  } = params;
  const tableProps = $table.props;
  const {
    editConfig
  } = tableProps;
  const {
    type,
    filters,
    sortable,
    editRender,
    slots
  } = column;
  const headerSlot = slots ? slots.header : null;
  if (headerSlot) {
    return renderTitleContent(params, $table.callSlot(headerSlot, params));
  }
  switch (type) {
    case 'seq':
      return Cell.renderSeqHeader(params);
    case 'radio':
      return Cell.renderRadioHeader(params);
    case 'checkbox':
      return Cell.renderCheckboxHeader(params);
    case 'html':
      if (filters && sortable) {
        return Cell.renderSortAndFilterHeader(params);
      } else if (sortable) {
        return Cell.renderSortHeader(params);
      } else if (filters) {
        return Cell.renderFilterHeader(params);
      }
      break;
  }
  const isEnableEdit = editConfig && isEnableConf(editConfig);
  const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
  if (editRenderOpts) {
    return Cell.renderEditHeader(params);
  } else if (filters && sortable) {
    return Cell.renderSortAndFilterHeader(params);
  } else if (sortable) {
    return Cell.renderSortHeader(params);
  } else if (filters) {
    return Cell.renderFilterHeader(params);
  }
  return Cell.renderDefaultHeader(params);
}
function renderFooterHandle(params) {
  return Cell.renderDefaultFooter(params);
}
const Cell = {
  createColumn($xeTable, columnOpts) {
    const {
      type
    } = columnOpts;
    const renConfs = {
      renderHeader: renderHeaderHandle,
      renderCell: renderCellHandle,
      renderFooter: renderFooterHandle
    };
    if (type === 'expand') {
      renConfs.renderData = Cell.renderExpandData;
    }
    return createColumn($xeTable, columnOpts, renConfs);
  },
  /**
   * 列头标题
   */
  renderHeaderTitle(params) {
    const {
      $table,
      column
    } = params;
    const tableProps = $table.props;
    const {
      editConfig
    } = tableProps;
    const {
      editRender,
      cellRender
    } = column;
    const isEnableEdit = editConfig && isEnableConf(editConfig);
    const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
    const cellRenderOpts = isEnableConf(cellRender) ? cellRender : null;
    const renderOpts = editRenderOpts || cellRenderOpts;
    if (renderOpts) {
      const compConf = cell_renderer.get(renderOpts.name);
      if (compConf) {
        const rtHeader = compConf.renderTableHeader || compConf.renderHeader;
        if (rtHeader) {
          return renderTitleContent(params, getSlotVNs(rtHeader(renderOpts, params)));
        }
      }
    }
    return renderTitleContent(params, $table.getHeaderCellLabel(column));
  },
  renderDefaultHeader(params) {
    return renderHeaderCellBaseVNs(params, Cell.renderHeaderTitle(params));
  },
  renderDefaultCell(params) {
    const {
      $table,
      row,
      column
    } = params;
    const tableProps = $table.props;
    const tableReactData = $table.reactData;
    const tableInternalData = $table.internalData;
    const {
      isRowGroupStatus
    } = tableReactData;
    const {
      editConfig
    } = tableProps;
    const {
      field,
      slots,
      editRender,
      cellRender,
      rowGroupNode,
      aggFunc
    } = column;
    const isEnableEdit = editConfig && isEnableConf(editConfig);
    const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
    const cellRenderOpts = isEnableConf(cellRender) ? cellRender : null;
    const defaultSlot = slots ? slots.default : null;
    const gcSlot = slots ? slots.groupContent || slots['group-content'] : null;
    const gvSlot = slots ? slots.groupValues || slots['group-values'] : null;
    let cellValue = '';
    if (isRowGroupStatus && field && row.isAggregate) {
      const aggRow = row;
      const {
        fullColumnFieldData
      } = tableInternalData;
      const {
        computeAggregateOpts
      } = $table.getComputeMaps();
      const aggregateOpts = computeAggregateOpts.value;
      const {
        mode,
        showTotal,
        totalMethod,
        countFields,
        contentMethod,
        formatValuesMethod,
        mapChildrenField
      } = aggregateOpts;
      const aggData = aggRow.aggData;
      const currAggData = aggData ? aggData[field] : null;
      const groupField = aggRow.groupField;
      const groupContent = aggRow.groupContent;
      const childList = mapChildrenField ? aggRow[mapChildrenField] || [] : [];
      const childCount = aggRow.childCount;
      const colRest = fullColumnFieldData[groupField] || {};
      const ctParams = {
        $table,
        groupField,
        groupColumn: colRest ? colRest.column : null,
        column,
        groupValue: groupContent,
        childList,
        childCount,
        aggValue: null,
        /**
         * 已废弃
         * @deprecated
         */
        children: childList,
        /**
         * 已废弃
         * @deprecated
         */
        totalValue: childCount
      };
      if (mode === 'column' ? field === aggRow.groupField : rowGroupNode) {
        cellValue = groupContent;
        if (contentMethod) {
          cellValue = `${contentMethod(ctParams)}`;
        }
        if (showTotal) {
          cellValue = cell_getI18n('vxe.table.rowGroupContentTotal', [cellValue, totalMethod ? totalMethod(ctParams) : childCount, childCount]);
        }
        if (gcSlot) {
          return renderCellBaseVNs(params, $table.callSlot(gcSlot, Object.assign({
            groupField,
            groupContent,
            childList,
            childCount
          }, params)));
        }
      } else if ($table.getPivotTableAggregateCellAggValue) {
        cellValue = $table.getPivotTableAggregateCellAggValue(params);
        ctParams.aggValue = cellValue;
        if (gvSlot) {
          return renderCellBaseVNs(params, $table.callSlot(gvSlot, Object.assign({
            groupField,
            groupContent,
            childList,
            childCount
          }, params, ctParams)));
        }
      } else if (aggFunc === true || countFields && countFields.includes(field)) {
        cellValue = currAggData ? currAggData.value : childCount;
        ctParams.aggValue = cellValue;
        if (formatValuesMethod) {
          cellValue = formatValuesMethod(ctParams);
        }
        if (gvSlot) {
          return renderCellBaseVNs(params, $table.callSlot(gvSlot, Object.assign({
            groupField,
            groupContent,
            childList,
            childCount
          }, params, ctParams)));
        }
      }
    } else {
      if (defaultSlot) {
        return renderCellBaseVNs(params, $table.callSlot(defaultSlot, params));
      }
      const renderOpts = editRenderOpts || cellRenderOpts;
      // 如果是编辑表格:renderTableCell > formatter
      // 如果是查看表格:renderTableDefault > formatter
      if (renderOpts) {
        const compConf = cell_renderer.get(renderOpts.name);
        if (compConf) {
          const renderFn = editRenderOpts ? compConf.renderTableCell || compConf.renderCell : compConf.renderTableDefault || compConf.renderDefault;
          if (renderFn) {
            return renderCellBaseVNs(params, getSlotVNs(renderFn(renderOpts, Object.assign({
              $type: editRenderOpts ? 'edit' : 'cell'
            }, params))));
          }
        }
      }
      cellValue = $table.getCellLabel(row, column);
    }
    const cellPlaceholder = editRenderOpts ? editRenderOpts.placeholder : '';
    return renderCellBaseVNs(params, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: 'vxe-cell--label'
    }, [
    // 如果设置占位符
    editRenderOpts && eqEmptyValue(cellValue) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: 'vxe-cell--placeholder'
    }, formatText(getFuncText(cellPlaceholder), 1)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', formatText(cellValue, 1))])]);
  },
  renderDeepCell(params) {
    return Cell.renderDeepNodeBtn(params, Cell.renderDefaultCell(params));
  },
  renderDefaultFooter(params) {
    return getFooterContent(params);
  },
  /**
   * 行分组
   */
  renderRowGroupBtn(params, cellVNodes) {
    const {
      $table
    } = params;
    const tableReactData = $table.reactData;
    const tableInternalData = $table.internalData;
    const {
      row,
      level
    } = params;
    const {
      computeAggregateOpts
    } = $table.getComputeMaps();
    const {
      rowGroupExpandedFlag
    } = tableReactData;
    const {
      rowGroupExpandedMaps
    } = tableInternalData;
    const aggregateOpts = computeAggregateOpts.value;
    const {
      mode,
      padding,
      indent,
      showIcon,
      iconOpen,
      iconClose
    } = aggregateOpts;
    const rowid = getRowid($table, row);
    const isExpand = !!rowGroupExpandedFlag && !!rowGroupExpandedMaps[rowid];
    return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
      class: ['vxe-row-group--tree-node', {
        'is--expanded': isExpand
      }],
      style: mode !== 'column' && padding && indent ? {
        paddingLeft: `${level * indent}px`
      } : undefined
    }, [showIcon && row.isAggregate ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: 'vxe-row-group--node-btn',
      onClick(evnt) {
        $table.triggerRowGroupExpandEvent(evnt, params);
      }
    }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
      class: isExpand ? iconOpen || cell_getIcon().TABLE_ROW_GROUP_OPEN : iconClose || cell_getIcon().TABLE_ROW_GROUP_CLOSE
    })]) : renderEmptyElement($table), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
      class: 'vxe-row-group-cell'
    }, cellVNodes)]);
  },
  /**
   * 树
   */
  renderTreeNodeBtn(params, cellVNodes) {
    const {
      $table,
      isHidden
    } = params;
    const tableReactData = $table.reactData;
    const tableInternalData = $table.internalData;
    const {
      row,
      column,
      level
    } = params;
    const {
      slots
    } = column;
    const iconSlot = slots ? slots.icon : null;
    if (iconSlot) {
      return $table.callSlot(iconSlot, params);
    }
    const {
      computeTreeOpts
    } = $table.getComputeMaps();
    const {
      treeExpandedFlag
    } = tableReactData;
    const {
      fullAllDataRowIdData,
      treeExpandedMaps,
      treeExpandLazyLoadedMaps
    } = tableInternalData;
    const treeOpts = computeTreeOpts.value;
    const {
      padding,
      indent,
      lazy,
      trigger,
      visibleMethod,
      iconLoaded,
      showIcon,
      iconOpen,
      iconClose
    } = treeOpts;
    const childrenField = treeOpts.children || treeOpts.childrenField;
    const hasChildField = treeOpts.hasChild || treeOpts.hasChildField;
    const rowChilds = row[childrenField];
    const hasChild = rowChilds && rowChilds.length;
    let hasLazyChilds = false;
    let isActive = false;
    let isLazyLoading = false;
    let isLazyLoaded = false;
    const ons = {};
    if (!isHidden) {
      const rowid = getRowid($table, row);
      isActive = !!treeExpandedFlag && !!treeExpandedMaps[rowid];
      if (lazy) {
        const rest = fullAllDataRowIdData[rowid];
        isLazyLoading = !!treeExpandLazyLoadedMaps[rowid];
        hasLazyChilds = row[hasChildField];
        isLazyLoaded = !!rest.treeLoaded;
      }
    }
    if (!trigger || trigger === 'default') {
      ons.onClick = evnt => {
        $table.triggerTreeExpandEvent(evnt, params);
      };
    }
    return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
      class: ['vxe-cell--tree-node', {
        'is--active': isActive
      }],
      style: padding && indent ? {
        paddingLeft: `${level * indent}px`
      } : undefined
    }, [showIcon && (lazy ? isLazyLoaded ? hasChild : hasChild || hasLazyChilds : hasChild) && (!visibleMethod || visibleMethod(params)) ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
      class: 'vxe-cell--tree-btn',
      ...ons
    }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
      class: isLazyLoading ? iconLoaded || cell_getIcon().TABLE_TREE_LOADED : isActive ? iconOpen || cell_getIcon().TABLE_TREE_OPEN : iconClose || cell_getIcon().TABLE_TREE_CLOSE
    })])] : null, (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
      class: 'vxe-tree-cell'
    }, cellVNodes)]);
  },
  /**
   * 层级节点。
   * 行分组、树结构
   */
  renderDeepNodeBtn(params, cellVNodes) {
    const {
      $table,
      row,
      column
    } = params;
    const {
      rowGroupNode
    } = column;
    const tableReactData = $table.reactData;
    const {
      rowGroupList
    } = tableReactData;
    if (rowGroupList.length) {
      const {
        computeAggregateOpts
      } = $table.getComputeMaps();
      const aggregateOpts = computeAggregateOpts.value;
      const {
        mode
      } = aggregateOpts;
      if (mode === 'column') {
        if (row.groupField && column.field === row.groupField) {
          return [Cell.renderRowGroupBtn(params, cellVNodes)];
        }
        return cellVNodes;
      } else if (rowGroupNode) {
        return [Cell.renderRowGroupBtn(params, cellVNodes)];
      }
    }
    return [Cell.renderTreeNodeBtn(params, cellVNodes)];
  },
  /**
   * 序号
   */
  renderSeqHeader(params) {
    const {
      $table,
      column
    } = params;
    return renderHeaderCellBaseVNs(params, renderTitleContent(params, $table.getHeaderCellLabel(column)));
  },
  renderSeqCell(params) {
    const {
      $table,
      column
    } = params;
    const tableProps = $table.props;
    const {
      treeConfig
    } = tableProps;
    const {
      computeSeqOpts
    } = $table.getComputeMaps();
    const seqOpts = computeSeqOpts.value;
    const {
      slots
    } = column;
    const defaultSlot = slots ? slots.default : null;
    if (defaultSlot) {
      return renderCellBaseVNs(params, $table.callSlot(defaultSlot, params));
    }
    const {
      seq
    } = params;
    const seqMd = seqOpts.seqMethod;
    return renderCellBaseVNs(params, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', `${formatText(seqMd ? seqMd(params) : treeConfig ? seq : (seqOpts.startIndex || 0) + seq, 1)}`)]);
  },
  renderDeepIndexCell(params) {
    return Cell.renderDeepNodeBtn(params, Cell.renderSeqCell(params));
  },
  /**
   * 单选
   */
  renderRadioHeader(params) {
    const {
      $table,
      column
    } = params;
    const {
      slots
    } = column;
    const titleSlot = slots ? slots.title : null;
    return renderHeaderCellBaseVNs(params, renderTitleContent(params, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: 'vxe-radio--label'
    }, titleSlot ? $table.callSlot(titleSlot, params) : $table.getHeaderCellLabel(column))]));
  },
  renderRadioCell(params) {
    const {
      $table,
      column,
      isHidden
    } = params;
    const tableReactData = $table.reactData;
    const {
      computeRadioOpts
    } = $table.getComputeMaps();
    const {
      selectRadioRow
    } = tableReactData;
    const radioOpts = computeRadioOpts.value;
    const {
      slots
    } = column;
    const {
      labelField,
      checkMethod,
      visibleMethod
    } = radioOpts;
    const {
      row
    } = params;
    const defaultSlot = slots ? slots.default : null;
    const radioSlot = slots ? slots.radio : null;
    const isChecked = $table.eqRow(row, selectRadioRow);
    const isVisible = !visibleMethod || visibleMethod({
      $table,
      row
    });
    let isDisabled = !!checkMethod;
    let ons;
    if (!isHidden) {
      ons = {
        onClick(evnt) {
          if (!isDisabled && isVisible) {
            $table.triggerRadioRowEvent(evnt, params);
          }
        }
      };
      if (checkMethod) {
        isDisabled = !checkMethod({
          $table,
          row
        });
      }
    }
    const radioParams = {
      ...params,
      checked: isChecked,
      disabled: isDisabled,
      visible: isVisible
    };
    if (radioSlot) {
      return renderCellBaseVNs(params, $table.callSlot(radioSlot, radioParams));
    }
    const radioVNs = [];
    if (isVisible) {
      radioVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-radio--icon', isChecked ? cell_getIcon().TABLE_RADIO_CHECKED : isDisabled ? cell_getIcon().TABLE_RADIO_DISABLED_UNCHECKED : cell_getIcon().TABLE_RADIO_UNCHECKED]
      }));
    }
    if (defaultSlot || labelField) {
      radioVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-radio--label'
      }, defaultSlot ? $table.callSlot(defaultSlot, radioParams) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, labelField)));
    }
    return renderCellBaseVNs(params, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: ['vxe-cell--radio', {
        'is--checked': isChecked,
        'is--disabled': isDisabled
      }],
      ...ons
    }, radioVNs)]);
  },
  renderDeepRadioCell(params) {
    return Cell.renderDeepNodeBtn(params, Cell.renderRadioCell(params));
  },
  /**
   * 多选
   */
  renderCheckboxHeader(params) {
    const {
      $table,
      column,
      isHidden
    } = params;
    const tableReactData = $table.reactData;
    const {
      computeIsAllCheckboxDisabled,
      computeCheckboxOpts
    } = $table.getComputeMaps();
    const {
      isAllSelected: isAllCheckboxSelected,
      isIndeterminate: isAllCheckboxIndeterminate
    } = tableReactData;
    const isAllCheckboxDisabled = computeIsAllCheckboxDisabled.value;
    const {
      slots
    } = column;
    const titleSlot = slots ? slots.title : null;
    const checkboxOpts = computeCheckboxOpts.value;
    const {
      checkStrictly,
      showHeader,
      headerTitle
    } = checkboxOpts;
    const colTitle = $table.getHeaderCellLabel(column);
    const ons = {};
    if (!isHidden) {
      ons.onClick = evnt => {
        if (!isAllCheckboxDisabled) {
          $table.triggerCheckAllEvent(evnt, !isAllCheckboxSelected);
        }
      };
    }
    const checkboxParams = {
      ...params,
      checked: isAllCheckboxSelected,
      disabled: isAllCheckboxDisabled,
      indeterminate: isAllCheckboxIndeterminate
    };
    if (checkStrictly ? !showHeader : showHeader === false) {
      return renderHeaderCellBaseVNs(params, renderTitleContent(checkboxParams, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-checkbox--label'
      }, titleSlot ? $table.callSlot(titleSlot, checkboxParams) : colTitle)]));
    }
    return renderHeaderCellBaseVNs(params, renderTitleContent(checkboxParams, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: ['vxe-cell--checkbox', {
        'is--checked': isAllCheckboxSelected,
        'is--disabled': isAllCheckboxDisabled,
        'is--indeterminate': isAllCheckboxIndeterminate
      }],
      title: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(headerTitle) ? cell_getI18n('vxe.table.allTitle') : `${headerTitle || ''}`,
      ...ons
    }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: ['vxe-checkbox--icon', isAllCheckboxIndeterminate ? cell_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllCheckboxSelected ? cell_getIcon().TABLE_CHECKBOX_CHECKED : isAllCheckboxDisabled ? cell_getIcon().TABLE_CHECKBOX_DISABLED_UNCHECKED : cell_getIcon().TABLE_CHECKBOX_UNCHECKED]
    })].concat(titleSlot || colTitle ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: 'vxe-checkbox--label'
    }, titleSlot ? $table.callSlot(titleSlot, checkboxParams) : colTitle)] : []))]));
  },
  renderCheckboxCell(params) {
    const {
      $table,
      row,
      column,
      isHidden
    } = params;
    const tableProps = $table.props;
    const tableReactData = $table.reactData;
    const tableInternalData = $table.internalData;
    const {
      treeConfig
    } = tableProps;
    const {
      updateCheckboxFlag,
      isRowGroupStatus
    } = tableReactData;
    const {
      selectCheckboxMaps,
      treeIndeterminateRowMaps
    } = tableInternalData;
    const {
      computeCheckboxOpts,
      computeAggregateOpts
    } = $table.getComputeMaps();
    const aggregateOpts = computeAggregateOpts.value;
    const {
      mapChildrenField
    } = aggregateOpts;
    const checkboxOpts = computeCheckboxOpts.value;
    const {
      labelField,
      checkMethod,
      visibleMethod
    } = checkboxOpts;
    const {
      slots
    } = column;
    const defaultSlot = slots ? slots.default : null;
    const checkboxSlot = slots ? slots.checkbox : null;
    let indeterminate = false;
    let isChecked = false;
    let isVisible = true;
    let isDisabled = false;
    const ons = {};
    if (!isHidden) {
      const rowid = getRowid($table, row);
      isChecked = !!updateCheckboxFlag && !!selectCheckboxMaps[rowid];
      if (checkMethod && isRowGroupStatus && $table.isAggregateRecord(row)) {
        const childList = row[mapChildrenField || ''];
        if (!childList || !childList.length || childList.every(item => !checkMethod({
          $table,
          row: item
        }))) {
          isDisabled = true;
        }
      } else {
        isVisible = !visibleMethod || visibleMethod({
          $table,
          row
        });
        isDisabled = checkMethod ? !checkMethod({
          $table,
          row
        }) : !!checkMethod;
      }
      if (treeConfig || isRowGroupStatus) {
        indeterminate = !!treeIndeterminateRowMaps[rowid];
      }
      ons.onClick = evnt => {
        if (!isDisabled && isVisible) {
          $table.triggerCheckRowEvent(evnt, params, !isChecked);
        }
      };
    }
    const checkboxParams = {
      ...params,
      checked: isChecked,
      disabled: isDisabled,
      visible: isVisible,
      indeterminate
    };
    if (checkboxSlot) {
      return renderCellBaseVNs(params, $table.callSlot(checkboxSlot, checkboxParams));
    }
    const checkVNs = [];
    if (isVisible) {
      checkVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-checkbox--icon', indeterminate ? cell_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? cell_getIcon().TABLE_CHECKBOX_CHECKED : isDisabled ? cell_getIcon().TABLE_CHECKBOX_DISABLED_UNCHECKED : cell_getIcon().TABLE_CHECKBOX_UNCHECKED]
      }));
    }
    if (defaultSlot || labelField) {
      checkVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-checkbox--label'
      }, defaultSlot ? $table.callSlot(defaultSlot, checkboxParams) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, labelField)));
    }
    return renderCellBaseVNs(params, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: ['vxe-cell--checkbox', {
        'is--checked': isChecked,
        'is--disabled': isDisabled,
        'is--indeterminate': indeterminate,
        'is--hidden': !isVisible
      }],
      ...ons
    }, checkVNs)]);
  },
  renderDeepSelectionCell(params) {
    return Cell.renderDeepNodeBtn(params, Cell.renderCheckboxCell(params));
  },
  renderCheckboxCellByProp(params) {
    const {
      $table,
      row,
      column,
      isHidden
    } = params;
    const tableProps = $table.props;
    const tableReactData = $table.reactData;
    const tableInternalData = $table.internalData;
    const {
      treeConfig
    } = tableProps;
    const {
      updateCheckboxFlag,
      isRowGroupStatus
    } = tableReactData;
    const {
      treeIndeterminateRowMaps
    } = tableInternalData;
    const {
      computeCheckboxOpts,
      computeAggregateOpts
    } = $table.getComputeMaps();
    const aggregateOpts = computeAggregateOpts.value;
    const {
      mapChildrenField
    } = aggregateOpts;
    const checkboxOpts = computeCheckboxOpts.value;
    const {
      labelField,
      checkField,
      checkMethod,
      visibleMethod
    } = checkboxOpts;
    const indeterminateField = checkboxOpts.indeterminateField || checkboxOpts.halfField;
    const {
      slots
    } = column;
    const defaultSlot = slots ? slots.default : null;
    const checkboxSlot = slots ? slots.checkbox : null;
    let indeterminate = false;
    let isChecked = false;
    let isVisible = true;
    let isDisabled = false;
    const ons = {};
    if (!isHidden) {
      const rowid = getRowid($table, row);
      isChecked = !!updateCheckboxFlag && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkField);
      if (checkMethod && isRowGroupStatus && $table.isAggregateRecord(row)) {
        const childList = row[mapChildrenField || ''];
        if (!childList || !childList.length || childList.every(item => !checkMethod({
          $table,
          row: item
        }))) {
          isDisabled = true;
        }
      } else {
        isVisible = !visibleMethod || visibleMethod({
          $table,
          row
        });
        isDisabled = checkMethod ? !checkMethod({
          $table,
          row
        }) : !!checkMethod;
      }
      if (treeConfig || isRowGroupStatus) {
        indeterminate = !!treeIndeterminateRowMaps[rowid];
      }
      ons.onClick = evnt => {
        if (!isDisabled && isVisible) {
          $table.triggerCheckRowEvent(evnt, params, !isChecked);
        }
      };
    }
    const checkboxParams = {
      ...params,
      checked: isChecked,
      disabled: isDisabled,
      visible: isVisible,
      indeterminate
    };
    if (checkboxSlot) {
      return renderCellBaseVNs(params, $table.callSlot(checkboxSlot, checkboxParams));
    }
    const checkVNs = [];
    if (isVisible) {
      checkVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-checkbox--icon', indeterminate ? cell_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? cell_getIcon().TABLE_CHECKBOX_CHECKED : isDisabled ? cell_getIcon().TABLE_CHECKBOX_DISABLED_UNCHECKED : cell_getIcon().TABLE_CHECKBOX_UNCHECKED]
      }));
      if (defaultSlot || labelField) {
        checkVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
          class: 'vxe-checkbox--label'
        }, defaultSlot ? $table.callSlot(defaultSlot, checkboxParams) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, labelField)));
      }
    }
    return renderCellBaseVNs(params, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: ['vxe-cell--checkbox', {
        'is--checked': isChecked,
        'is--disabled': isDisabled,
        'is--indeterminate': indeterminateField && !isChecked ? row[indeterminateField] : indeterminate,
        'is--hidden': !isVisible
      }],
      ...ons
    }, checkVNs)]);
  },
  renderDeepSelectionCellByProp(params) {
    return Cell.renderDeepNodeBtn(params, Cell.renderCheckboxCellByProp(params));
  },
  /**
   * 展开行
   */
  renderExpandCell(params) {
    const {
      $table,
      isHidden,
      row,
      column
    } = params;
    const tableReactData = $table.reactData;
    const tableInternalData = $table.internalData;
    const {
      isRowGroupStatus
    } = tableReactData;
    const {
      rowExpandedMaps,
      rowExpandLazyLoadedMaps
    } = tableInternalData;
    const {
      computeExpandOpts
    } = $table.getComputeMaps();
    const expandOpts = computeExpandOpts.value;
    const {
      lazy,
      labelField,
      iconLoaded,
      showIcon,
      iconOpen,
      iconClose,
      visibleMethod
    } = expandOpts;
    const {
      slots
    } = column;
    const defaultSlot = slots ? slots.default : null;
    const iconSlot = slots ? slots.icon : null;
    let isActive = false;
    let isLazyLoading = false;
    if (isRowGroupStatus && row.isAggregate) {
      return renderCellBaseVNs(params, []);
    }
    if (iconSlot) {
      return renderCellBaseVNs(params, $table.callSlot(iconSlot, params));
    }
    if (!isHidden) {
      const rowid = getRowid($table, row);
      isActive = !!rowExpandedMaps[rowid];
      if (lazy) {
        isLazyLoading = !!rowExpandLazyLoadedMaps[rowid];
      }
    }
    return renderCellBaseVNs(params, [showIcon && (!visibleMethod || visibleMethod(params)) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
      class: ['vxe-table--expanded', {
        'is--active': isActive
      }]
    }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: 'vxe-table--expand-btn',
      onMousedown(evnt) {
        evnt.stopPropagation();
      },
      onClick(evnt) {
        $table.triggerRowExpandEvent(evnt, params);
      }
    }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
      class: isLazyLoading ? iconLoaded || cell_getIcon().TABLE_EXPAND_LOADED : isActive ? iconOpen || cell_getIcon().TABLE_EXPAND_OPEN : iconClose || cell_getIcon().TABLE_EXPAND_CLOSE
    })])]) : renderEmptyElement($table), defaultSlot || labelField ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
      class: 'vxe-table--expand-label'
    }, defaultSlot ? $table.callSlot(defaultSlot, params) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, labelField)) : renderEmptyElement($table)]);
  },
  renderExpandData(params) {
    const {
      $table,
      column
    } = params;
    const {
      slots,
      contentRender
    } = column;
    const contentSlot = slots ? slots.content : null;
    if (contentSlot) {
      return $table.callSlot(contentSlot, params);
    }
    if (contentRender) {
      const compConf = cell_renderer.get(contentRender.name);
      if (compConf) {
        const rtExpand = compConf.renderTableExpand || compConf.renderExpand;
        if (rtExpand) {
          return getSlotVNs(rtExpand(contentRender, params));
        }
      }
    }
    return [];
  },
  /**
   * HTML 标签
   */
  renderHTMLCell(params) {
    const {
      $table,
      column
    } = params;
    const {
      slots
    } = column;
    const defaultSlot = slots ? slots.default : null;
    if (defaultSlot) {
      return renderCellBaseVNs(params, $table.callSlot(defaultSlot, params));
    }
    return renderCellBaseVNs(params, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
      class: 'vxe-cell--html',
      innerHTML: getDefaultCellLabel(params)
    })]);
  },
  renderDeepHTMLCell(params) {
    return Cell.renderDeepNodeBtn(params, Cell.renderHTMLCell(params));
  },
  /**
   * 排序和筛选
   */
  renderSortAndFilterHeader(params) {
    return renderHeaderCellBaseVNs(params, Cell.renderHeaderTitle(params).concat(Cell.renderSortIcon(params).concat(Cell.renderFilterIcon(params))));
  },
  /**
   * 排序
   */
  renderSortHeader(params) {
    return renderHeaderCellBaseVNs(params, Cell.renderHeaderTitle(params).concat(Cell.renderSortIcon(params)));
  },
  renderSortIcon(params) {
    const {
      $table,
      column
    } = params;
    const {
      computeSortOpts
    } = $table.getComputeMaps();
    const sortOpts = computeSortOpts.value;
    const {
      showIcon,
      allowBtn,
      ascTitle,
      descTitle,
      iconLayout,
      iconAsc,
      iconDesc,
      iconVisibleMethod
    } = sortOpts;
    const {
      order,
      slots
    } = column;
    if (showIcon && (!iconVisibleMethod || iconVisibleMethod(params))) {
      const sortSlot = slots ? slots.sort : null;
      return sortSlot ? getSlotVNs($table.callSlot(sortSlot, params)) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-cell--sort', `vxe-cell--sort-${iconLayout}-layout`]
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
        class: ['vxe-sort--asc-btn', iconAsc || cell_getIcon().TABLE_SORT_ASC, {
          'sort--active': order === 'asc'
        }],
        title: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(ascTitle) ? cell_getI18n('vxe.table.sortAsc') : `${ascTitle || ''}`,
        onClick: allowBtn ? evnt => {
          evnt.stopPropagation();
          $table.triggerSortEvent(evnt, column, 'asc');
        } : undefined
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
        class: ['vxe-sort--desc-btn', iconDesc || cell_getIcon().TABLE_SORT_DESC, {
          'sort--active': order === 'desc'
        }],
        title: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(descTitle) ? cell_getI18n('vxe.table.sortDesc') : `${descTitle || ''}`,
        onClick: allowBtn ? evnt => {
          evnt.stopPropagation();
          $table.triggerSortEvent(evnt, column, 'desc');
        } : undefined
      })])];
    }
    return [];
  },
  /**
   * 筛选
   */
  renderFilterHeader(params) {
    return renderHeaderCellBaseVNs(params, Cell.renderHeaderTitle(params).concat(Cell.renderFilterIcon(params)));
  },
  renderFilterIcon(params) {
    const {
      $table,
      column,
      hasFilter
    } = params;
    const tableReactData = $table.reactData;
    const {
      filterStore
    } = tableReactData;
    const {
      computeFilterOpts
    } = $table.getComputeMaps();
    const filterOpts = computeFilterOpts.value;
    const {
      showIcon,
      iconNone,
      iconMatch,
      iconVisibleMethod
    } = filterOpts;
    if (showIcon && (!iconVisibleMethod || iconVisibleMethod(params))) {
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-cell--filter', {
          'is--active': filterStore.visible && filterStore.column === column
        }],
        onClick(evnt) {
          if ($table.triggerFilterEvent) {
            $table.triggerFilterEvent(evnt, params.column, params);
          }
        }
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
        class: ['vxe-filter--btn', hasFilter ? iconMatch || cell_getIcon().TABLE_FILTER_MATCH : iconNone || cell_getIcon().TABLE_FILTER_NONE],
        title: cell_getI18n('vxe.table.filter')
      })])];
    }
    return [];
  },
  /**
   * 可编辑
   */
  renderEditHeader(params) {
    const {
      $table,
      column
    } = params;
    const tableProps = $table.props;
    const {
      computeEditOpts
    } = $table.getComputeMaps();
    const {
      editConfig,
      editRules
    } = tableProps;
    const editOpts = computeEditOpts.value;
    const {
      sortable,
      filters,
      editRender
    } = column;
    const isEnableEdit = editConfig && isEnableConf(editConfig);
    const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
    let isRequired = false;
    if (editRules) {
      const columnRules = column.rules ? column.rules : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(editRules, column.field);
      if (columnRules) {
        isRequired = columnRules.some(rule => rule.required);
      }
    }
    let editIconVNs = [];
    if (isEnableEdit) {
      const {
        showAsterisk,
        showIcon,
        icon
      } = editOpts;
      editIconVNs = [isRequired && showAsterisk ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-cell--required-icon'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i')]) : renderEmptyElement($table), editRenderOpts && showIcon ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-cell--edit-icon'
      }, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(icon) ? getSlotVNs(icon({})) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
        class: icon || cell_getIcon().TABLE_EDIT
      })]) : renderEmptyElement($table)];
    }
    return renderHeaderCellBaseVNs(params, editIconVNs.concat(Cell.renderHeaderTitle(params)).concat(sortable ? Cell.renderSortIcon(params) : []).concat(filters ? Cell.renderFilterIcon(params) : []));
  },
  // 行格编辑模式
  renderRowEdit(params) {
    const {
      $table,
      column
    } = params;
    const tableProps = $table.props;
    const {
      editConfig
    } = tableProps;
    const tableReactData = $table.reactData;
    const {
      editStore
    } = tableReactData;
    const {
      actived
    } = editStore;
    const {
      editRender
    } = column;
    const isEnableEdit = editConfig && isEnableConf(editConfig);
    const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
    return Cell.runRenderer(params, !!(editRenderOpts && actived && actived.row === params.row));
  },
  renderDeepRowEdit(params) {
    return Cell.renderDeepNodeBtn(params, Cell.renderRowEdit(params));
  },
  // 单元格编辑模式
  renderCellEdit(params) {
    const {
      $table,
      column
    } = params;
    const tableProps = $table.props;
    const {
      editConfig
    } = tableProps;
    const tableReactData = $table.reactData;
    const {
      editStore
    } = tableReactData;
    const {
      actived
    } = editStore;
    const {
      editRender
    } = column;
    const isEnableEdit = editConfig && isEnableConf(editConfig);
    const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
    return Cell.runRenderer(params, !!(editRenderOpts && actived && actived.row === params.row && actived.column === params.column));
  },
  renderDeepCellEdit(params) {
    return Cell.renderDeepNodeBtn(params, Cell.renderCellEdit(params));
  },
  runRenderer(params, isEdit) {
    const {
      $table,
      row,
      column
    } = params;
    const tableProps = $table.props;
    const {
      editConfig
    } = tableProps;
    const tableReactData = $table.reactData;
    const {
      isRowGroupStatus
    } = tableReactData;
    const {
      slots,
      field,
      editRender,
      formatter
    } = column;
    const isEnableEdit = editConfig && isEnableConf(editConfig);
    const editRenderOpts = isEnableEdit && isEnableConf(editRender) ? editRender : null;
    const defaultSlot = slots ? slots.default : null;
    const gcSlot = slots ? slots.groupContent || slots['group-content'] : null;
    const editSlot = slots ? slots.edit : null;
    const cellParams = Object.assign({
      $type: '',
      isEdit
    }, params);
    if (isEdit && editRenderOpts) {
      cellParams.$type = 'edit';
      if (editSlot) {
        return $table.callSlot(editSlot, cellParams);
      }
      const compConf = cell_renderer.get(editRenderOpts.name);
      const rtEdit = compConf ? compConf.renderTableEdit || compConf.renderEdit : null;
      if (rtEdit) {
        return getSlotVNs(rtEdit(editRenderOpts, cellParams));
      }
      return [];
    }
    if (isRowGroupStatus && field && row.isAggregate) {
      const aggRow = row;
      const {
        computeAggregateOpts
      } = $table.getComputeMaps();
      const aggregateOpts = computeAggregateOpts.value;
      const {
        mapChildrenField
      } = aggregateOpts;
      const groupField = aggRow.groupField;
      const groupContent = aggRow.groupContent;
      const childList = mapChildrenField ? aggRow[mapChildrenField] || [] : [];
      const childCount = aggRow.childCount;
      if (gcSlot) {
        return renderCellBaseVNs(params, $table.callSlot(gcSlot, Object.assign({
          groupField,
          groupContent,
          childList,
          childCount
        }, params)));
      }
    } else {
      if (defaultSlot) {
        return renderCellBaseVNs(params, $table.callSlot(defaultSlot, cellParams));
      }
    }
    if (formatter) {
      return renderCellBaseVNs(params, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-cell--label'
      }, getDefaultCellLabel(cellParams))]);
    }
    return Cell.renderDefaultCell(cellParams);
  }
};
/* harmony default export */ var cell = (Cell);
;// ./packages/table/src/column.ts




const columnProps = {
  // 列唯一主键
  colId: [String, Number],
  // 渲染类型 index,radio,checkbox,expand,html
  type: String,
  // 列字段名
  field: String,
  // 列标题
  title: String,
  // 列宽度
  width: [Number, String],
  // 列最小宽度,把剩余宽度按比例分配
  minWidth: [Number, String],
  // 列最大宽度
  maxWidth: [Number, String],
  // 是否允许拖动列宽调整大小
  resizable: {
    type: Boolean,
    default: null
  },
  // 将列固定在左侧或者右侧
  fixed: String,
  // 列对其方式
  align: String,
  // 表头对齐方式
  headerAlign: String,
  // 表尾列的对齐方式
  footerAlign: String,
  // 当内容过长时显示为省略号
  showOverflow: {
    type: [Boolean, String],
    default: null
  },
  // 当表头内容过长时显示为省略号
  showHeaderOverflow: {
    type: [Boolean, String],
    default: null
  },
  // 当表尾内容过长时显示为省略号
  showFooterOverflow: {
    type: [Boolean, String],
    default: null
  },
  // 给单元格附加 className
  className: [String, Function],
  // 给表头单元格附加 className
  headerClassName: [String, Function],
  // 给表尾单元格附加 className
  footerClassName: [String, Function],
  // 格式化显示内容
  formatter: [Function, Array, String],
  // 格式化表头显示内容
  headerFormatter: [Function, Array, String],
  // 格式化表尾显示内容
  footerFormatter: [Function, Array, String],
  // 是否显示间距
  padding: {
    type: Boolean,
    default: null
  },
  // 垂直对齐方式
  verticalAlign: {
    type: String,
    default: null
  },
  // 是否允许排序
  sortable: Boolean,
  // 自定义排序的属性
  sortBy: [String, Function],
  // 排序的字段类型,比如字符串转数值等
  sortType: String,
  // 配置筛选条件数组
  filters: {
    type: Array,
    default: null
  },
  // 筛选是否允许多选
  filterMultiple: {
    type: Boolean,
    default: true
  },
  // 自定义筛选方法
  filterMethod: Function,
  // 筛选重置方法
  filterResetMethod: Function,
  // 筛选复原方法
  filterRecoverMethod: Function,
  // 筛选模板配置项
  filterRender: Object,
  // 是否显示浮动筛选
  floatingFilters: Object,
  // 列的校验规则
  rules: Array,
  // 设置为分组节点
  rowGroupNode: Boolean,
  // 设置为树节点
  treeNode: Boolean,
  // 设置为拖拽排序
  dragSort: Boolean,
  // 设置为行高拖拽
  rowResize: Boolean,
  // 是否可视
  visible: {
    type: Boolean,
    default: null
  },
  // 表头单元格数据导出方法
  headerExportMethod: Function,
  // 单元格数据导出方法
  exportMethod: Function,
  // 表尾单元格数据导出方法
  footerExportMethod: Function,
  // 已废弃,被 titlePrefix 替换
  titleHelp: Object,
  // 标题前缀图标配置项
  titlePrefix: Object,
  // 标题后缀图标配置项
  titleSuffix: Object,
  // 单元格值类型
  cellType: String,
  // 单元格渲染配置项
  cellRender: Object,
  // 单元格编辑渲染配置项
  editRender: Object,
  // 内容渲染配置项
  contentRender: Object,
  // 聚合函数
  aggFunc: [Boolean, String],
  // 将单元格复制到剪贴板
  copyMethod: Function,
  // 将剪贴单元格的值清除
  cutMethod: Function,
  // 从剪贴板赋值到单元格
  pasteMethod: Function,
  // 额外的参数
  params: Object
};
/* harmony default export */ var column = (defineVxeComponent({
  name: 'VxeColumn',
  props: columnProps,
  setup(props, {
    slots
  }) {
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', null);
    const $xeColgroup = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeColgroup', null);
    if (!$xeTable) {
      return () => (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
    }
    const columnConfig = cell.createColumn($xeTable, props);
    columnConfig.slots = slots;
    const renderVN = () => {
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem
      });
    };
    const $xeColumn = {
      columnConfig,
      renderVN
    };
    watchColumn($xeTable, props, columnConfig);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      const elem = refElem.value;
      if (elem) {
        assembleColumn($xeTable, elem, columnConfig, $xeColgroup);
      }
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      destroyColumn($xeTable, columnConfig);
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeColumn', $xeColumn);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeGrid', null);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeGantt', null);
    return renderVN;
  }
}));
;// ./packages/column/index.ts


const VxeColumn = Object.assign({}, column, {
  install(app) {
    app.component(column.name, column);
    // 兼容旧用法
    app.component('VxeTableColumn', column);
  }
});
if (core_.VxeUI.dynamicApp) {
  core_.VxeUI.dynamicApp.component(column.name, column);
  // 兼容旧用法
  core_.VxeUI.dynamicApp.component('VxeTableColumn', column);
}
core_.VxeUI.component(column);
const Column = VxeColumn;
/* harmony default export */ var packages_column = ((/* unused pure expression or super */ null && (VxeColumn)));
;// ./packages/table/src/group.ts





/* harmony default export */ var group = (defineVxeComponent({
  name: 'VxeColgroup',
  props: columnProps,
  setup(props, {
    slots
  }) {
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', null);
    const $xeParentColgroup = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeColgroup', null);
    if (!$xeTable) {
      return () => (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
    }
    const columnConfig = cell.createColumn($xeTable, props);
    const columnSlots = {};
    if (slots.header) {
      columnSlots.header = slots.header;
    }
    if (slots.title) {
      columnSlots.title = slots.title;
    }
    columnConfig.slots = columnSlots;
    columnConfig.children = [];
    watchColumn($xeTable, props, columnConfig);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      const elem = refElem.value;
      if (elem) {
        assembleColumn($xeTable, elem, columnConfig, $xeParentColgroup);
      }
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      destroyColumn($xeTable, columnConfig);
    });
    const renderVN = () => {
      const defaultSlot = slots.default;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem
      }, defaultSlot ? defaultSlot() : []);
    };
    const $xeColgroup = {
      columnConfig
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeColgroup', $xeColgroup);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeGrid', null);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeGantt', null);
    return renderVN;
  }
}));
;// ./packages/colgroup/index.ts


const VxeColgroup = Object.assign({}, group, {
  install(app) {
    app.component(group.name, group);
    // 兼容旧用法
    app.component('VxeTableColgroup', group);
  }
});
if (core_.VxeUI.dynamicApp) {
  core_.VxeUI.dynamicApp.component(group.name, group);
  // 兼容旧用法
  core_.VxeUI.dynamicApp.component('VxeTableColgroup', group);
}
core_.VxeUI.component(group);
const Colgroup = VxeColgroup;
/* harmony default export */ var colgroup = ((/* unused pure expression or super */ null && (VxeColgroup)));
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.filter.js
var es_iterator_filter = __webpack_require__(2489);
;// ./packages/table/src/props.ts

const {
  getConfig: props_getConfig
} = core_.VxeUI;
const tableProps = {
  /** 基本属性 */
  id: [String, Function],
  // 数据
  data: Array,
  // 表格的高度
  height: [Number, String],
  // 表格的最小高度
  minHeight: {
    type: [Number, String],
    default: () => null
  },
  // 表格的最大高度
  maxHeight: [Number, String],
  // 已废弃,被 column-config.resizable 替换
  resizable: {
    type: Boolean,
    default: () => props_getConfig().table.resizable
  },
  // 是否带有斑马纹
  stripe: {
    type: Boolean,
    default: () => props_getConfig().table.stripe
  },
  // 是否带有边框
  border: {
    type: [Boolean, String],
    default: () => props_getConfig().table.border
  },
  // 已废弃,被 cell-config.padding 替换
  padding: {
    type: Boolean,
    default: null
  },
  // 是否圆角边框
  round: {
    type: Boolean,
    default: () => props_getConfig().table.round
  },
  // 表格的尺寸
  size: {
    type: String,
    default: () => props_getConfig().table.size || props_getConfig().size
  },
  // 列的宽度是否自撑开(可能会被废弃的参数,不要使用)
  fit: {
    type: Boolean,
    default: () => props_getConfig().table.fit
  },
  // 表格是否加载中
  loading: Boolean,
  // 所有的列对其方式
  align: {
    type: String,
    default: () => props_getConfig().table.align
  },
  // 所有的表头列的对齐方式
  headerAlign: {
    type: String,
    default: () => props_getConfig().table.headerAlign
  },
  // 所有的表尾列的对齐方式
  footerAlign: {
    type: String,
    default: () => props_getConfig().table.footerAlign
  },
  // 是否显示表头
  showHeader: {
    type: Boolean,
    default: () => props_getConfig().table.showHeader
  },
  // (即将废弃)是否要高亮当前选中行
  highlightCurrentRow: {
    type: Boolean,
    default: () => props_getConfig().table.highlightCurrentRow
  },
  // (即将废弃)鼠标移到行是否要高亮显示
  highlightHoverRow: {
    type: Boolean,
    default: () => props_getConfig().table.highlightHoverRow
  },
  /**
   * (即将废弃)是否要高亮当前选中列
   * @deprecated
   */
  highlightCurrentColumn: {
    type: Boolean,
    default: () => props_getConfig().table.highlightCurrentColumn
  },
  /**
   * (即将废弃)鼠标移到列是否要高亮显示
   * @deprecated
   */
  highlightHoverColumn: {
    type: Boolean,
    default: () => props_getConfig().table.highlightHoverColumn
  },
  // (即将废弃)激活单元格编辑时是否高亮显示
  highlightCell: Boolean,
  // 是否显示表尾合计
  showFooter: Boolean,
  // 表尾数据
  footerData: Array,
  // 表尾合计的计算方法
  footerMethod: Function,
  // 给行附加 className
  rowClassName: [String, Function],
  // 给单元格附加 className
  cellClassName: [String, Function],
  // 给表头的行附加 className
  headerRowClassName: [String, Function],
  // 给表头的单元格附加 className
  headerCellClassName: [String, Function],
  // 给表尾的行附加 className
  footerRowClassName: [String, Function],
  // 给表尾的单元格附加 className
  footerCellClassName: [String, Function],
  // 给单元格附加样式
  cellStyle: [Object, Function],
  // 给表头单元格附加样式
  headerCellStyle: [Object, Function],
  // 给表尾单元格附加样式
  footerCellStyle: [Object, Function],
  // 给行附加样式
  rowStyle: [Object, Function],
  // 给表头行附加样式
  headerRowStyle: [Object, Function],
  // 给表尾行附加样式
  footerRowStyle: [Object, Function],
  // 用于分组表头,显示为自定义列头,配合 mergeHeaderCells 灵活实现自定义合并
  showCustomHeader: {
    type: Boolean,
    default: () => props_getConfig().table.showCustomHeader
  },
  // 临时合并指定的表头单元格
  mergeHeaderCells: Array,
  // 临时合并指定的单元格
  mergeCells: Array,
  // 临时合并指定的表尾单元格
  mergeFooterCells: Array,
  mergeFooterItems: Array,
  // 自定义合并行或列的方法
  spanMethod: Function,
  // 表尾合并行或列
  footerSpanMethod: Function,
  // 设置所有内容过长时显示为省略号
  showOverflow: {
    type: [Boolean, String],
    default: () => props_getConfig().table.showOverflow
  },
  // 设置表头所有内容过长时显示为省略号
  showHeaderOverflow: {
    type: [Boolean, String],
    default: () => props_getConfig().table.showHeaderOverflow
  },
  // 设置表尾所有内容过长时显示为省略号
  showFooterOverflow: {
    type: [Boolean, String],
    default: () => props_getConfig().table.showFooterOverflow
  },
  /** 高级属性 */
  /**
   * (即将废弃)columnKey 已废弃,被 column-config.useKey 替换
   * @deprecated
   */
  columnKey: Boolean,
  /**
   * (即将废弃)rowKey 已废弃,被 row-config.useKey 替换
   * @deprecated
   */
  rowKey: Boolean,
  /**
   * (即将废弃)rowId 已废弃,被 row-config.keyField 替换
   * @deprecated
   */
  rowId: {
    type: String,
    default: () => props_getConfig().table.rowId
  },
  zIndex: Number,
  emptyText: {
    type: String,
    default: () => props_getConfig().table.emptyText
  },
  keepSource: {
    type: Boolean,
    default: () => props_getConfig().table.keepSource
  },
  // 是否自动监听父容器变化去更新响应式表格宽高
  autoResize: {
    type: Boolean,
    default: () => props_getConfig().table.autoResize
  },
  // 是否自动根据状态属性去更新响应式表格宽高
  syncResize: [Boolean, String, Number],
  // 响应式布局配置项
  resizeConfig: Object,
  // 列配置项
  columnConfig: Object,
  // 当前列配置项
  currentColumnConfig: Object,
  // 单元格配置项
  cellConfig: Object,
  // 表头单元格配置项
  headerCellConfig: Object,
  // 表尾单元格配置项
  footerCellConfig: Object,
  // 行配置项
  rowConfig: Object,
  // 数据聚合配置项
  aggregateConfig: Object,
  // 聚合函数计算精度配置项
  aggregateAccuracyConfig: Object,
  /**
   * 已废弃,被 aggregateConfig 替换
   * @deprecated
   */
  rowGroupConfig: Object,
  // 当前行配置项
  currentRowConfig: Object,
  /**
   * 已废弃,被 rowDragConfig 替换
   * @deprecated
   */
  dragConfig: Object,
  // 行拖拽排序配置项
  rowDragConfig: Object,
  // 列拖拽排序配置项
  columnDragConfig: Object,
  // 列调整配置项
  resizableConfig: Object,
  // 序号配置项
  seqConfig: Object,
  // 排序配置项
  sortConfig: Object,
  // 筛选配置项
  filterConfig: Object,
  // 浮动筛选配置项
  floatingFilterConfig: Object,
  // 单选框配置
  radioConfig: Object,
  // 复选框配置项
  checkboxConfig: Object,
  // tooltip 配置项
  tooltipConfig: Object,
  // 表头 tooltip 配置项
  headerTooltipConfig: Object,
  // 表尾 tooltip 配置项
  footerTooltipConfig: Object,
  // 导出配置项
  exportConfig: Object,
  // 导入配置项
  importConfig: Object,
  // 打印配置项
  printConfig: Object,
  // 展开行配置项
  expandConfig: Object,
  // 树形结构配置项
  treeConfig: Object,
  // 快捷菜单配置项
  menuConfig: Object,
  // 鼠标配置项
  mouseConfig: Object,
  // 区域配置项
  areaConfig: Object,
  // 按键配置项
  keyboardConfig: Object,
  // 复制粘/贴配置项
  clipConfig: Object,
  // 查找/替换配置项
  fnrConfig: Object,
  // 编辑配置项
  editConfig: Object,
  // 数据状态监听配置项
  editDirtyConfig: Object,
  // 校验配置项
  validConfig: Object,
  // 校验规则配置项
  editRules: Object,
  // 加载中配置项
  loadingConfig: Object,
  // 空内容渲染配置项
  emptyRender: Object,
  // 自定义列配置项
  customConfig: Object,
  /**
   * (即将废弃)横向虚拟滚动配置项
   * @deprecated
   */
  scrollX: Object,
  /**
   * (即将废弃)纵向虚拟滚动配置项
   * @deprecated
   */
  scrollY: Object,
  // 横向虚拟滚动配置项
  virtualXConfig: Object,
  // 纵向虚拟滚动配置项
  virtualYConfig: Object,
  // 滚动条配置项
  scrollbarConfig: Object,
  // 撤销/恢复历史配置项
  undoRedoHistoryConfig: Object,
  // (即将废弃)优化相关
  animat: {
    type: Boolean,
    default: () => props_getConfig().table.animat
  },
  // (可能会被废弃的参数,不要使用)
  delayHover: {
    type: Number,
    default: () => props_getConfig().table.delayHover
  },
  // 额外的参数
  params: Object
};
;// ./packages/grid/src/props.ts


const {
  getConfig: src_props_getConfig
} = core_.VxeUI;
const gridProps = {
  ...tableProps,
  layouts: Array,
  columns: Array,
  pagerConfig: Object,
  proxyConfig: Object,
  toolbarConfig: Object,
  formConfig: Object,
  zoomConfig: Object,
  size: {
    type: String,
    default: () => src_props_getConfig().grid.size || src_props_getConfig().size
  }
};
;// ./packages/table/src/emits.ts
const tableEmits = ['ready', 'init-rendered', 'data-rendered', 'update:data', 'keydown-start', 'keydown', 'keydown-end', 'paste', 'copy', 'cut', 'undo', 'redo', 'context-menu', 'columns-change', 'data-change', 'footer-data-change', 'current-change',
// 已废弃
'current-row-change', 'current-row-disabled', 'current-column-change', 'current-column-disabled', 'radio-change', 'checkbox-change', 'checkbox-all', 'checkbox-range-start', 'checkbox-range-change', 'checkbox-range-end', 'checkbox-range-select', 'cell-click', 'cell-dblclick', 'cell-menu', 'cell-mouseenter', 'cell-mouseleave', 'cell-selected', 'cell-delete-value', 'cell-backspace-value', 'header-cell-click', 'header-cell-dblclick', 'header-cell-menu', 'footer-cell-click', 'footer-cell-dblclick', 'footer-cell-menu', 'clear-merge', 'sort-change', 'clear-sort', 'clear-all-sort', 'filter-change', 'filter-visible', 'clear-filter', 'clear-all-filter', 'resizable-change',
// 废弃
'column-resizable-change', 'row-resizable-change', 'toggle-row-group-expand', 'toggle-row-expand', 'toggle-tree-expand', 'menu-click', 'edit-closed', 'row-dragstart', 'row-dragover', 'row-dragend', 'row-remove-dragend', 'row-insert-dragend', 'column-dragstart', 'column-dragover', 'column-dragend', 'enter-append-row', 'tab-append-row', 'edit-actived',
// 废弃
'edit-activated', 'edit-disabled', 'valid-error', 'scroll', 'scroll-boundary', 'custom', 'custom-open', 'custom-close', 'custom-cancel', 'custom-reset', 'custom-confirm', 'custom-visible-change', 'custom-visible-all', 'custom-fixed-change', 'custom-sort-change', 'custom-align-change', 'custom-header-align-change', 'custom-footer-align-change', 'change-fnr',
// 废弃
'open-fnr', 'show-fnr', 'hide-fnr', 'fnr-change', 'fnr-find', 'fnr-find-all', 'fnr-replace', 'fnr-replace-all', 'cell-area-copy', 'cell-area-cut', 'cell-area-paste', 'cell-area-merge', 'clear-cell-area-selection', 'clear-cell-area-merge', 'header-cell-area-selection', 'cell-area-selection-invalid', 'cell-area-selection-start', 'cell-area-selection-drag', 'cell-area-selection-end', 'cell-area-extension-start', 'cell-area-extension-drag', 'cell-area-extension-end', 'cell-area-extension-fill', 'cell-area-selection-all-start', 'cell-area-selection-all-end', 'cell-area-arrows-start', 'cell-area-arrows-end', 'cell-area-fill-copy', 'active-cell-change-start', 'active-cell-change-end'];
;// ./packages/grid/src/emits.ts

const gridEmits = [...tableEmits, 'page-change', 'form-submit', 'form-submit-invalid', 'form-reset', 'form-collapse', 'form-toggle-collapse', 'proxy-query', 'proxy-delete', 'proxy-save', 'toolbar-button-click', 'toolbar-tool-click', 'zoom'];
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.to-array.js
var es_iterator_to_array = __webpack_require__(1806);
;// ./packages/ui/src/anime.ts




const rowMoveCls = 'row--drag-move';
const colMoveClass = 'col--drag-move';
/**
 * 上下拖拽
 */
function moveRowAnimateToTb(elemList, offsetTop) {
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(elemList, trEl => {
    trEl.style.transform = `translateY(${offsetTop}px)`;
  });
  requestAnimationFrame(() => {
    external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(elemList, trEl => {
      addClass(trEl, rowMoveCls);
      trEl.style.transform = '';
    });
  });
}
function clearRowAnimate(elem, clss) {
  setTimeout(() => {
    if (elem) {
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(elem.querySelectorAll(clss.map(cls => `${cls}.${rowMoveCls}`).join(',')), elem => removeClass(elem, rowMoveCls));
    }
  }, 500);
}
/**
 * 左右拖拽
 */
function moveColAnimateToLr(elemList, offsetLeft) {
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(elemList, trEl => {
    trEl.style.transform = `translateX(${offsetLeft}px)`;
  });
  requestAnimationFrame(() => {
    external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(elemList, trEl => {
      addClass(trEl, colMoveClass);
      trEl.style.transform = '';
    });
  });
}
function clearColAnimate(elem, clss) {
  setTimeout(() => {
    if (elem) {
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(elem.querySelectorAll(clss.map(cls => `${cls}.${rowMoveCls}`).join(',')), elem => removeClass(elem, colMoveClass));
    }
  }, 500);
}
;// ./packages/table/src/store.ts

// 跨表拖拽
const crossTableDragRowInfo = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)({
  row: null
});
function getCrossTableDragRowInfo() {
  return crossTableDragRowInfo;
}
;// ./packages/table/src/body.ts












const {
  getI18n: body_getI18n,
  renderer: body_renderer,
  renderEmptyElement: body_renderEmptyElement
} = core_.VxeUI;
const sourceType = 'table';
const renderType = 'body';
/* harmony default export */ var body = (defineVxeComponent({
  name: 'VxeTableBody',
  props: {
    tableData: Array,
    tableColumn: Array,
    fixedColumn: Array,
    fixedType: {
      type: String,
      default: ''
    }
  },
  setup(props) {
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', {});
    const {
      xID,
      props: tableProps,
      context: tableContext,
      reactData: tableReactData,
      internalData: tableInternalData
    } = $xeTable;
    const {
      computeEditOpts,
      computeMouseOpts,
      computeCellOffsetWidth,
      computeAreaOpts,
      computeDefaultRowHeight,
      computeEmptyOpts,
      computeTooltipOpts,
      computeRadioOpts,
      computeExpandOpts,
      computeTreeOpts,
      computeCheckboxOpts,
      computeCellOpts,
      computeValidOpts,
      computeRowOpts,
      computeColumnOpts,
      computeRowDragOpts,
      computeResizableOpts,
      computeVirtualXOpts,
      computeVirtualYOpts,
      computeIsBodyRenderOptimize
    } = $xeTable.getComputeMaps();
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBodyScroll = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBodyTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBodyColgroup = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBodyTBody = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBodyXSpace = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBodyYSpace = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBodyEmptyBlock = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    // 滚动、拖动过程中不需要触发
    const isVMScrollProcess = () => {
      const {
        delayHover
      } = tableProps;
      const {
        isDragResize
      } = tableReactData;
      const {
        lastSTime
      } = tableInternalData;
      return !!(isDragResize || lastSTime && Date.now() < lastSTime + delayHover);
    };
    const renderLine = (rowid, params, cellHeight) => {
      const {
        column
      } = params;
      const {
        treeConfig
      } = tableProps;
      const cellOpts = computeCellOpts.value;
      const rowOpts = computeRowOpts.value;
      const defaultRowHeight = computeDefaultRowHeight.value;
      const treeOpts = computeTreeOpts.value;
      const {
        slots,
        treeNode
      } = column;
      const {
        fullAllDataRowIdData
      } = tableInternalData;
      if (treeConfig && treeNode && (treeOpts.showLine || treeOpts.line)) {
        if (slots && slots.line) {
          return $xeTable.callSlot(slots.line, params);
        }
        const rowRest = fullAllDataRowIdData[rowid];
        let rLevel = 0;
        let prevRow = null;
        let parentRow = null;
        let lineHeight = '';
        if (rowRest) {
          rLevel = rowRest.level;
          prevRow = rowRest.items[rowRest.treeIndex - 1];
          parentRow = rowRest.parent;
        }
        if (!rLevel && !treeOpts.showRootLine) {
          return [];
        }
        if (prevRow) {
          const prevRowRest = fullAllDataRowIdData[getRowid($xeTable, prevRow)] || {};
          lineHeight = `${prevRowRest.lineHeight || 0}px`;
        } else if (rLevel && parentRow) {
          const parentRowRest = fullAllDataRowIdData[getRowid($xeTable, parentRow)] || {};
          lineHeight = `calc(-1em + ${Math.floor(cellHeight / 2 + getCellRestHeight(parentRowRest, cellOpts, rowOpts, defaultRowHeight) / 2)}px)`;
        }
        return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          key: 'tl',
          class: 'vxe-tree--line-wrapper'
        }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: 'vxe-tree--line',
          style: {
            height: lineHeight,
            bottom: `-${Math.floor(cellHeight / 2)}px`,
            left: `calc(${rLevel * treeOpts.indent}px + 1em)`
          }
        })])];
      }
      return [];
    };
    /**
     * 渲染列
     */
    const renderTdColumn = (seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, columns, items) => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        columnKey,
        resizable: allResizable,
        showOverflow: allShowOverflow,
        border,
        height,
        treeConfig,
        cellClassName: allCellClassName,
        cellStyle,
        align: allAlign,
        spanMethod,
        mouseConfig,
        editConfig,
        editRules,
        tooltipConfig,
        padding: allPadding
      } = tableProps;
      const {
        tableData,
        tableColumn,
        dragRow,
        overflowX,
        overflowY,
        currentColumn,
        scrollXLoad,
        scrollYLoad,
        mergeBodyFlag,
        calcCellHeightFlag,
        resizeHeightFlag,
        resizeWidthFlag,
        editStore,
        isAllOverflow,
        validErrorMaps
      } = tableReactData;
      const {
        fullAllDataRowIdData,
        fullColumnIdData,
        mergeBodyCellMaps,
        visibleColumn,
        afterFullData,
        mergeBodyList,
        scrollXStore,
        scrollYStore,
        keepUpdateFieldMaps
      } = tableInternalData;
      const cellOpts = computeCellOpts.value;
      const validOpts = computeValidOpts.value;
      const checkboxOpts = computeCheckboxOpts.value;
      const editOpts = computeEditOpts.value;
      const tooltipOpts = computeTooltipOpts.value;
      const resizableOpts = computeResizableOpts.value;
      const virtualXOpts = computeVirtualXOpts.value;
      const virtualYOpts = computeVirtualYOpts.value;
      const {
        isAllColumnDrag,
        isAllRowDrag
      } = resizableOpts;
      const rowOpts = computeRowOpts.value;
      const rowDragOpts = computeRowDragOpts.value;
      const defaultRowHeight = computeDefaultRowHeight.value;
      const customCellHeight = calcCellHeightFlag ? cellOpts.height || rowOpts.height : 0;
      const {
        disabledMethod: dragDisabledMethod,
        isCrossDrag,
        isPeerDrag
      } = rowDragOpts;
      const columnOpts = computeColumnOpts.value;
      const mouseOpts = computeMouseOpts.value;
      const areaOpts = computeAreaOpts.value;
      const cellOffsetWidth = computeCellOffsetWidth.value;
      const {
        selectCellToRow
      } = areaOpts;
      const {
        field,
        type,
        cellRender,
        editRender,
        align,
        showOverflow,
        className,
        treeNode,
        rowResize,
        padding,
        verticalAlign,
        slots
      } = column;
      const {
        verticalAlign: allVerticalAlign,
        minHeight,
        maxHeight
      } = cellOpts;
      const {
        actived
      } = editStore;
      const rowRest = fullAllDataRowIdData[rowid] || {};
      const colid = column.id;
      const colRest = fullColumnIdData[colid] || {};
      const renderOpts = editRender || cellRender;
      const compConf = renderOpts ? body_renderer.get(renderOpts.name) : null;
      const compCellClassName = compConf ? compConf.tableCellClassName || compConf.cellClassName : null;
      const compCellStyle = compConf ? compConf.tableCellStyle || compConf.cellStyle : '';
      const showAllTip = tooltipOpts.showAll;
      const columnIndex = colRest.index;
      const _columnIndex = colRest._index;
      const isEdit = isEnableConf(editRender);
      const resizeHeight = resizeHeightFlag ? rowRest.resizeHeight : 0;
      let fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed);
      const cellPadding = getDefaultConfig(padding, allPadding === null ? cellOpts.padding : allPadding);
      const isAllCellPadding = cellPadding === true;
      const isCellPaddingTop = cellPadding ? isAllCellPadding || cellPadding.top !== false : false;
      const isCellPaddingBottom = cellPadding ? isAllCellPadding || cellPadding.bottom !== false : false;
      const isCellPaddingLeft = cellPadding ? isAllCellPadding || cellPadding.left !== false : false;
      const isCellPaddingRight = cellPadding ? isAllCellPadding || cellPadding.right !== false : false;
      const cellOverflow = getDefaultConfig(showOverflow, allShowOverflow);
      const showEllipsis = (cellOverflow === true ? tooltipOpts.mode : cellOverflow) === 'ellipsis';
      const showTitle = (cellOverflow === true ? tooltipOpts.mode : cellOverflow) === 'title';
      const showTooltip = (cellOverflow === true ? tooltipOpts.mode : cellOverflow) === 'tooltip';
      const hasEllipsis = isAllOverflow || showTitle || showTooltip || showEllipsis;
      const showResizable = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable;
      const isCsHeight = !!customCellHeight;
      const isRsHeight = resizeHeight > 0;
      let isDirty;
      const tdOns = {};
      const cellAlign = align || (compConf ? compConf.tableCellAlign : '') || allAlign;
      const cellVerticalAlign = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(verticalAlign) ? allVerticalAlign : verticalAlign;
      const errorValidItem = validErrorMaps[`${rowid}:${colid}`];
      const showValidTip = editRules && validOpts.showErrorMessage && (validOpts.message === 'default' ? height || tableData.length > 1 : validOpts.message === 'inline');
      const tdAttrs = {
        colid
      };
      const cellParams = {
        $table: $xeTable,
        $grid: $xeGrid,
        $gantt: $xeGantt,
        isEdit: false,
        seq,
        rowid,
        row,
        rowIndex,
        $rowIndex,
        _rowIndex,
        column,
        columnIndex,
        $columnIndex,
        _columnIndex,
        fixed: fixedType,
        source: sourceType,
        type: renderType,
        isHidden: !!fixedHiddenColumn,
        level: rowLevel,
        visibleData: afterFullData,
        data: tableData,
        items
      };
      let isRowDragCell = false;
      let isDisabledDrag = false;
      if (rowOpts.drag) {
        isRowDragCell = rowDragOpts.trigger === 'row' || column.dragSort && rowDragOpts.trigger === 'cell';
      }
      if (isRowDragCell) {
        isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(cellParams));
      }
      // hover 进入事件
      if (showTitle || showTooltip || showAllTip || tooltipConfig) {
        tdOns.onMouseover = evnt => {
          if (!isVMScrollProcess()) {
            if (showTitle) {
              updateCellTitle(evnt.currentTarget, column);
            } else if (showTooltip || showAllTip) {
              // 如果配置了显示 tooltip
              $xeTable.triggerBodyTooltipEvent(evnt, cellParams);
            }
          }
          $xeTable.dispatchEvent('cell-mouseenter', Object.assign({
            cell: evnt.currentTarget
          }, cellParams), evnt);
        };
      }
      // hover 退出事件
      if (showTooltip || showAllTip || tooltipConfig) {
        tdOns.onMouseleave = evnt => {
          if (!isVMScrollProcess()) {
            if (showTooltip || showAllTip) {
              $xeTable.handleTargetLeaveEvent(evnt);
            }
          }
          $xeTable.dispatchEvent('cell-mouseleave', Object.assign({
            cell: evnt.currentTarget
          }, cellParams), evnt);
        };
      }
      // 按下事件处理
      if (isRowDragCell || checkboxOpts.range || mouseConfig) {
        tdOns.onMousedown = evnt => {
          $xeTable.triggerCellMousedownEvent(evnt, cellParams);
        };
      }
      // 拖拽列事件
      if (isRowDragCell) {
        tdOns.onMouseup = $xeTable.triggerCellMouseupEvent;
      }
      // 点击事件处理
      tdOns.onClick = evnt => {
        $xeTable.triggerCellClickEvent(evnt, cellParams);
      };
      // 双击事件处理
      tdOns.onDblclick = evnt => {
        $xeTable.triggerCellDblclickEvent(evnt, cellParams);
      };
      let isMergeCell = false;
      let mergeColspan = 1;
      let mergeRowspan = 1;
      // 合并行或列
      if (mergeBodyFlag && mergeBodyList.length) {
        const spanRest = mergeBodyCellMaps[`${_rowIndex}:${_columnIndex}`];
        if (spanRest) {
          const {
            rowspan,
            colspan
          } = spanRest;
          if (!rowspan || !colspan) {
            return body_renderEmptyElement($xeTable);
          }
          if (rowspan > 1) {
            isMergeCell = true;
            mergeRowspan = rowspan;
            tdAttrs.rowspan = rowspan;
          }
          if (colspan > 1) {
            isMergeCell = true;
            mergeColspan = colspan;
            tdAttrs.colspan = colspan;
          }
        }
      } else if (spanMethod) {
        // 自定义合并行或列的方法
        const {
          rowspan = 1,
          colspan = 1
        } = spanMethod(cellParams) || {};
        if (!rowspan || !colspan) {
          return body_renderEmptyElement($xeTable);
        }
        if (rowspan > 1) {
          isMergeCell = true;
          mergeRowspan = rowspan;
          tdAttrs.rowspan = rowspan;
        }
        if (colspan > 1) {
          isMergeCell = true;
          mergeColspan = colspan;
          tdAttrs.colspan = colspan;
        }
      }
      // 如果被合并不可隐藏
      if (fixedHiddenColumn && isMergeCell) {
        if (tdAttrs.colspan > 1 || tdAttrs.rowspan > 1) {
          fixedHiddenColumn = false;
        }
      }
      // 如果编辑列开启显示状态
      if (!fixedHiddenColumn && editConfig && (editOpts.showStatus || editOpts.showUpdateStatus) && keepUpdateFieldMaps[field]) {
        isDirty = $xeTable.isUpdateByRow(row, field);
      }
      const isVNAutoHeight = !hasEllipsis && (scrollYLoad || scrollXLoad);
      let cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
      const isLastColumn = $columnIndex === columns.length - 1;
      const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
      let isVNPreEmptyStatus = false;
      if (!isMergeCell) {
        if (!dragRow || getRowid($xeTable, dragRow) !== rowid) {
          if (overflowY && scrollYLoad && tableData.length > 16 && !treeConfig && !virtualYOpts.immediate && (_rowIndex < scrollYStore.visibleStartIndex - scrollYStore.preloadSize || _rowIndex > scrollYStore.visibleEndIndex + scrollYStore.preloadSize)) {
            isVNPreEmptyStatus = true;
          } else if (overflowX && scrollXLoad && tableColumn.length > 10 && !virtualXOpts.immediate && !column.fixed && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
            isVNPreEmptyStatus = true;
          }
        }
      }
      if (mergeRowspan > 1) {
        const mEndRow = afterFullData[_rowIndex + mergeRowspan - 1];
        if (mEndRow) {
          const meRowRest = fullAllDataRowIdData[getRowid($xeTable, mEndRow)];
          if (meRowRest) {
            cellHeight += meRowRest.oTop + getCellRestHeight(meRowRest, cellOpts, rowOpts, defaultRowHeight) - rowRest.oTop - getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
          }
        }
      }
      const tcStyle = {};
      if (maxHeight) {
        tcStyle.maxHeight = maxHeight + 'px';
      }
      if (hasEllipsis && resizeWidthFlag) {
        let mergeColWidth = 0;
        if (mergeColspan > 1) {
          for (let index = 1; index < mergeColspan; index++) {
            const nextColumn = visibleColumn[columnIndex + index];
            if (nextColumn) {
              mergeColWidth += nextColumn.renderWidth;
            }
          }
        }
        tcStyle.width = column.renderWidth + mergeColWidth - cellOffsetWidth + 'px';
      }
      if (scrollYLoad || scrollXLoad || hasEllipsis || isCsHeight || isRsHeight) {
        tcStyle.height = cellHeight + 'px';
      } else {
        tcStyle.minHeight = cellHeight + 'px';
      }
      if (minHeight) {
        tcStyle.minHeight = minHeight + 'px';
      }
      const tdVNs = [];
      if (fixedHiddenColumn && isAllOverflow) {
        tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          key: 'tc',
          class: ['vxe-cell', {
            'c--title': showTitle,
            'c--tooltip': showTooltip,
            'c--ellipsis': showEllipsis
          }],
          style: tcStyle
        }));
      } else {
        // 渲染单元格
        if (treeConfig) {
          tdVNs.push(...renderLine(rowid, cellParams, cellHeight));
        }
        const clVNs = [];
        if (!isVNPreEmptyStatus) {
          clVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            colid,
            rowid,
            class: 'vxe-cell--wrapper vxe-body-cell--wrapper'
          }, column.renderCell(cellParams)));
        }
        tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          key: 'tc',
          class: ['vxe-cell', {
            'c--title': showTitle,
            'c--tooltip': showTooltip,
            'c--ellipsis': showEllipsis
          }],
          style: tcStyle,
          title: showTitle ? $xeTable.getCellLabel(row, column) : null
        }, clVNs));
        if (showValidTip && errorValidItem) {
          const errRule = errorValidItem.rule;
          const validSlot = slots ? slots.valid : null;
          const validParams = {
            ...cellParams,
            ...errorValidItem,
            rule: errorValidItem
          };
          tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            key: 'tcv',
            class: ['vxe-cell--valid-error-tip', getPropClass(validOpts.className, validParams)],
            style: errRule && errRule.maxWidth ? {
              width: errRule.maxWidth + 'px'
            } : null
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: `vxe-cell--valid-error-wrapper vxe-cell--valid-error-theme-${validOpts.theme || 'normal'}`
          }, [validSlot ? $xeTable.callSlot(validSlot, validParams) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
            class: 'vxe-cell--valid-error-msg'
          }, errorValidItem.content)]])]));
        }
      }
      let showAreaRowStatus = false;
      if (mouseConfig && mouseOpts.area && !_columnIndex && selectCellToRow) {
        showAreaRowStatus = true;
      }
      if (!fixedHiddenColumn && showResizable && isAllColumnDrag) {
        tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          key: 'tcc',
          class: ['vxe-cell--col-resizable', {
            'is--line': !border || border === 'none'
          }],
          onMousedown: evnt => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams),
          onDblclick: evnt => $xeTable.handleColResizeDblclickEvent(evnt, cellParams)
        }));
      }
      if ((rowResize || isAllRowDrag) && rowOpts.resizable) {
        tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          key: 'tcr',
          class: 'vxe-cell--row-resizable',
          onMousedown: evnt => $xeTable.handleRowResizeMousedownEvent(evnt, cellParams),
          onDblclick: evnt => $xeTable.handleRowResizeDblclickEvent(evnt, cellParams)
        }));
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
        class: ['vxe-table--column vxe-body--column', colid, cellVerticalAlign ? `col--vertical-${cellVerticalAlign}` : '', cellAlign ? `col--${cellAlign}` : '', type ? `col--${type}` : '', {
          'col--last': isLastColumn,
          'col--tree-node': treeNode,
          'col--edit': isEdit,
          'col--ellipsis': hasEllipsis,
          'col--cs-height': isCsHeight,
          'col--rs-height': isRsHeight,
          'col--to-row': showAreaRowStatus,
          'col--auto-height': isVNAutoHeight,
          'col--max-height': maxHeight,
          'fixed--width': !isAutoCellWidth,
          'fixed--hidden': fixedHiddenColumn,
          'is--pg-top': isCellPaddingTop,
          'is--pg-bottom': isCellPaddingBottom,
          'is--pg-left': isCellPaddingLeft,
          'is--pg-right': isCellPaddingRight,
          'is--progress': fixedHiddenColumn && isAllOverflow || isVNPreEmptyStatus,
          'is--drag-cell': isRowDragCell && (isCrossDrag || isPeerDrag || !rowLevel),
          'is--drag-disabled': isDisabledDrag,
          'col--dirty': isDirty,
          'col--active': editConfig && isEdit && actived.row === row && (actived.column === column || editOpts.mode === 'row'),
          'col--valid-error': !!errorValidItem,
          'show--valid-bg': errorValidItem && validOpts.showErrorBackground,
          'col--current': currentColumn === column
        }, getPropClass(compCellClassName, cellParams), getPropClass(className, cellParams), getPropClass(allCellClassName, cellParams)],
        key: columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || rowOpts.useKey || columnOpts.drag ? colid : $columnIndex,
        ...tdAttrs,
        style: Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(compCellStyle) ? compCellStyle(cellParams) : compCellStyle, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(cellStyle) ? cellStyle(cellParams) : cellStyle),
        ...tdOns
      }, isOptimizeMode && fixedHiddenColumn ? [] : tdVNs);
    };
    const renderRows = (fixedType, isOptimizeMode, tableData, tableColumn) => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        stripe,
        rowKey,
        highlightHoverRow,
        rowClassName,
        rowStyle,
        editConfig,
        treeConfig
      } = tableProps;
      const {
        hasFixedColumn,
        treeExpandedFlag,
        scrollYLoad,
        isAllOverflow,
        rowExpandedFlag,
        expandColumn,
        selectRadioRow,
        pendingRowFlag,
        rowExpandHeightFlag,
        isRowGroupStatus
      } = tableReactData;
      const {
        fullAllDataRowIdData,
        fullColumnIdData,
        treeExpandedMaps,
        pendingRowMaps,
        rowExpandedMaps,
        currentRow
      } = tableInternalData;
      const checkboxOpts = computeCheckboxOpts.value;
      const radioOpts = computeRadioOpts.value;
      const treeOpts = computeTreeOpts.value;
      const editOpts = computeEditOpts.value;
      const rowOpts = computeRowOpts.value;
      const columnOpts = computeColumnOpts.value;
      const {
        transform,
        seqMode
      } = treeOpts;
      const childrenField = treeOpts.children || treeOpts.childrenField;
      const rows = [];
      const {
        handleGetRowId
      } = createHandleGetRowId($xeTable);
      const isDeepRow = treeConfig || isRowGroupStatus;
      tableData.forEach((row, $rowIndex) => {
        const rowid = handleGetRowId(row);
        const rowRest = fullAllDataRowIdData[rowid] || {};
        let rowIndex = $rowIndex;
        let rowLevel = 0;
        let seq = -1;
        let _rowIndex = -1;
        const hasRowGroupAggregate = isRowGroupStatus && row.isAggregate;
        const trOn = {};
        // 当前行事件
        if (rowOpts.isHover || highlightHoverRow) {
          trOn.onMouseover = evnt => {
            if (isVMScrollProcess()) {
              return;
            }
            $xeTable.triggerHoverEvent(evnt, {
              row,
              rowIndex
            });
          };
          trOn.onMouseleave = () => {
            if (isVMScrollProcess()) {
              return;
            }
            $xeTable.clearHoverRow();
          };
        }
        if (rowRest) {
          rowIndex = rowRest.index;
          _rowIndex = rowRest._index;
          rowLevel = rowRest.level;
          seq = rowRest.seq;
          if (hasRowGroupAggregate || treeConfig && transform && seqMode === 'increasing') {
            seq = rowRest._index + 1;
          } else if (treeConfig && seqMode === 'fixed') {
            seq = rowRest._tIndex + 1;
          }
        }
        const params = {
          $table: $xeTable,
          seq,
          rowid,
          fixed: fixedType,
          type: renderType,
          level: rowLevel,
          row,
          rowIndex,
          $rowIndex,
          _rowIndex
        };
        // 行是否被展开
        const isExpandRow = expandColumn && !!rowExpandedFlag && !!rowExpandedMaps[rowid];
        // 树节点是否被展开
        let isExpandTree = false;
        let rowChildren = [];
        let isNewRow = false;
        if (editConfig) {
          isNewRow = $xeTable.isInsertByRow(row);
        }
        if (treeConfig && !scrollYLoad && !transform) {
          rowChildren = row[childrenField];
          isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
        }
        // 拖拽行事件
        if (rowOpts.drag && !isRowGroupStatus && (!treeConfig || transform)) {
          trOn.onDragstart = $xeTable.handleRowDragDragstartEvent;
          trOn.onDragend = $xeTable.handleRowDragDragendEvent;
          trOn.onDragover = $xeTable.handleRowDragDragoverEvent;
        }
        const trClass = ['vxe-body--row', isDeepRow ? `row--level-${rowLevel}` : '', {
          'row--stripe': stripe && (_rowIndex + 1) % 2 === 0,
          'is--new': isNewRow,
          'is--expand-row': isExpandRow,
          'is--expand-tree': isExpandTree,
          'row--new': isNewRow && (editOpts.showStatus || editOpts.showInsertStatus),
          'row--radio': radioOpts.highlight && $xeTable.eqRow(selectRadioRow, row),
          'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
          'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid],
          'row--group': hasRowGroupAggregate,
          'row--current': currentRow && rowid === getRowid($xeTable, currentRow)
        }, getPropClass(rowClassName, params)];
        const tdVNs = tableColumn.map((column, $columnIndex) => {
          return renderTdColumn(seq, rowid, fixedType, isOptimizeMode, rowLevel, row, rowIndex, $rowIndex, _rowIndex, column, $columnIndex, tableColumn, tableData);
        });
        rows.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
          class: trClass,
          rowid: rowid,
          style: rowStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(rowStyle) ? rowStyle(params) : rowStyle : null,
          key: rowKey || rowOpts.useKey || rowOpts.drag || columnOpts.drag || isRowGroupStatus || treeConfig ? rowid : $rowIndex,
          ...trOn
        }, tdVNs));
        // 如果行被展开了
        if (isExpandRow) {
          const expandOpts = computeExpandOpts.value;
          const {
            height: expandHeight,
            padding,
            mode: expandMode
          } = expandOpts;
          if (expandMode === 'fixed') {
            const currExpHeight = rowRest.expandHeight;
            let expHeight = 0;
            if (rowExpandHeightFlag) {
              if (currExpHeight || expandHeight) {
                expHeight = (currExpHeight || expandHeight || 0) + 1;
              }
            }
            rows.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
              class: 'vxe-body--row-expanded-place',
              key: `expand_${rowid}`,
              rowid
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
              class: 'vxe-body--row-expanded-place-column',
              colspan: tableColumn.length,
              style: {
                height: `${expHeight}px`
              }
            })]));
          } else {
            const cellStyle = {};
            if (expandHeight) {
              cellStyle.height = `${expandHeight}px`;
            }
            if (treeConfig) {
              cellStyle.paddingLeft = `${rowLevel * treeOpts.indent + 30}px`;
            }
            const {
              showOverflow
            } = expandColumn || {};
            const colid = expandColumn.id;
            const colRest = fullColumnIdData[colid] || {};
            const hasEllipsis = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(showOverflow) ? isAllOverflow : showOverflow;
            let columnIndex = -1;
            let $columnIndex = -1;
            let _columnIndex = -1;
            if (colRest) {
              columnIndex = colRest.index;
              $columnIndex = colRest.$index;
              _columnIndex = colRest._index;
            }
            const expandParams = {
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt,
              seq,
              column: expandColumn,
              columnIndex,
              $columnIndex,
              _columnIndex,
              fixed: fixedType,
              source: sourceType,
              type: renderType,
              level: rowLevel,
              row,
              rowid,
              rowIndex,
              $rowIndex,
              _rowIndex,
              isHidden: false,
              isEdit: false,
              visibleData: [],
              data: [],
              items: []
            };
            rows.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
              class: ['vxe-body--expanded-row', {
                'is--padding': padding
              }],
              key: `expand_${rowid}`
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
              class: ['vxe-body--expanded-column', {
                'fixed--hidden': fixedType && !hasFixedColumn,
                'col--ellipsis': hasEllipsis
              }],
              colspan: tableColumn.length
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: ['vxe-body--expanded-cell', {
                'is--ellipsis': expandHeight
              }],
              style: cellStyle
            }, [expandColumn.renderData(expandParams)])])]));
          }
        }
        // 如果是树形表格
        if (isExpandTree) {
          rows.push(...renderRows(fixedType, isOptimizeMode, rowChildren, tableColumn));
        }
      });
      return rows;
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
        const {
          fixedType
        } = props;
        const {
          elemStore
        } = tableInternalData;
        const prefix = `${fixedType || 'main'}-body-`;
        elemStore[`${prefix}wrapper`] = refElem;
        elemStore[`${prefix}scroll`] = refBodyScroll;
        elemStore[`${prefix}table`] = refBodyTable;
        elemStore[`${prefix}colgroup`] = refBodyColgroup;
        elemStore[`${prefix}list`] = refBodyTBody;
        elemStore[`${prefix}xSpace`] = refBodyXSpace;
        elemStore[`${prefix}ySpace`] = refBodyYSpace;
        elemStore[`${prefix}emptyBlock`] = refBodyEmptyBlock;
      });
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      const {
        fixedType
      } = props;
      const {
        elemStore
      } = tableInternalData;
      const prefix = `${fixedType || 'main'}-body-`;
      elemStore[`${prefix}wrapper`] = null;
      elemStore[`${prefix}scroll`] = null;
      elemStore[`${prefix}table`] = null;
      elemStore[`${prefix}colgroup`] = null;
      elemStore[`${prefix}list`] = null;
      elemStore[`${prefix}xSpace`] = null;
      elemStore[`${prefix}ySpace`] = null;
      elemStore[`${prefix}emptyBlock`] = null;
    });
    const renderVN = () => {
      const {
        slots
      } = tableContext;
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        fixedColumn,
        fixedType,
        tableColumn
      } = props;
      const {
        mouseConfig
      } = tableProps;
      const {
        isGroup,
        tableData,
        isColLoading,
        overflowX,
        scrollXLoad,
        scrollYLoad,
        dragRow,
        dragCol
      } = tableReactData;
      const {
        visibleColumn,
        fullAllDataRowIdData,
        fullColumnIdData
      } = tableInternalData;
      const emptyOpts = computeEmptyOpts.value;
      const mouseOpts = computeMouseOpts.value;
      const isBodyRenderOptimize = computeIsBodyRenderOptimize.value;
      let renderDataList = tableData;
      let renderColumnList = tableColumn;
      const isOptimizeMode = isBodyRenderOptimize;
      if (!isColLoading && (fixedType || !overflowX)) {
        renderColumnList = visibleColumn;
      }
      if (fixedType) {
        if (isOptimizeMode) {
          renderColumnList = fixedColumn || [];
        }
      }
      // 行拖拽
      if (scrollYLoad && dragRow) {
        if (renderDataList.length > 2) {
          const dRowRest = fullAllDataRowIdData[getRowid($xeTable, dragRow)];
          if (dRowRest) {
            const drIndex = dRowRest._index;
            const firstRow = renderDataList[0];
            const lastRow = renderDataList[renderDataList.length - 1];
            const firstRowRest = fullAllDataRowIdData[getRowid($xeTable, firstRow)];
            const lastRowRest = fullAllDataRowIdData[getRowid($xeTable, lastRow)];
            if (firstRowRest && lastRowRest) {
              const frIndex = firstRowRest._index;
              const lrIndex = lastRowRest._index;
              if (drIndex < frIndex) {
                renderDataList = [dragRow].concat(renderDataList);
              } else if (drIndex > lrIndex) {
                renderDataList = renderDataList.concat([dragRow]);
              }
            }
          }
        }
      }
      if (!fixedType && !isGroup) {
        // 列拖拽
        if (scrollXLoad && dragCol) {
          if (renderColumnList.length > 2) {
            const dCowRest = fullColumnIdData[dragCol.id];
            if (dCowRest) {
              const dcIndex = dCowRest._index;
              const firstCol = renderColumnList[0];
              const lastCol = renderColumnList[renderColumnList.length - 1];
              const firstColRest = fullColumnIdData[firstCol.id];
              const lastColRest = fullColumnIdData[lastCol.id];
              if (firstColRest && lastColRest) {
                const fcIndex = firstColRest._index;
                const lcIndex = lastColRest._index;
                if (dcIndex < fcIndex) {
                  renderColumnList = [dragCol].concat(renderColumnList);
                } else if (dcIndex > lcIndex) {
                  renderColumnList = renderColumnList.concat([dragCol]);
                }
              }
            }
          }
        }
      }
      let emptyContent;
      const emptySlot = slots ? slots.empty : null;
      const emptyParams = {
        $table: $xeTable,
        $grid: $xeGrid,
        $gantt: $xeGantt
      };
      if (emptySlot) {
        emptyContent = $xeTable.callSlot(emptySlot, emptyParams);
      } else {
        const compConf = emptyOpts.name ? body_renderer.get(emptyOpts.name) : null;
        const rtEmptyView = compConf ? compConf.renderTableEmpty || compConf.renderTableEmptyView || compConf.renderEmpty : null;
        if (rtEmptyView) {
          emptyContent = getSlotVNs(rtEmptyView(emptyOpts, emptyParams));
        } else {
          emptyContent = tableProps.emptyText || body_getI18n('vxe.table.emptyText');
        }
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-table--body-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],
        xid: xID
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refBodyScroll,
        class: 'vxe-table--body-inner-wrapper',
        onScroll(evnt) {
          $xeTable.triggerBodyScrollEvent(evnt, fixedType);
        }
      }, [fixedType ? body_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refBodyXSpace,
        class: 'vxe-body--x-space'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refBodyYSpace,
        class: 'vxe-body--y-space'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('table', {
        ref: refBodyTable,
        class: 'vxe-table--body',
        xid: xID,
        cellspacing: 0,
        cellpadding: 0,
        border: 0,
        xvm: isOptimizeMode ? '1' : null
      }, [
      /**
       * 列宽
       */
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('colgroup', {
        ref: refBodyColgroup
      }, renderColumnList.map((column, $columnIndex) => {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          name: column.id,
          key: $columnIndex,
          style: {
            width: `${column.renderWidth}px`
          }
        });
      })),
      /**
       * 内容
       */
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tbody', {
        ref: refBodyTBody
      }, renderRows(fixedType, isOptimizeMode, renderDataList, renderColumnList))]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table--checkbox-range'
      }), mouseConfig && mouseOpts.area ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table--cell-area',
        xid: xID
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-main-area'
      }, mouseOpts.extension ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-main-area-btn',
        onMousedown(evnt) {
          if ($xeTable.triggerCellAreaExtendMousedownEvent) {
            $xeTable.triggerCellAreaExtendMousedownEvent(evnt, {
              $table: $xeTable,
              fixed: fixedType,
              type: renderType
            });
          }
        }
      })] : []), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-clip-area'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-extend-area'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-multi-area'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-active-area'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-row-status-area'
      })]) : body_renderEmptyElement($xeTable), !fixedType ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table--empty-block',
        ref: refBodyEmptyBlock
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table--empty-content'
      }, emptyContent)]) : body_renderEmptyElement($xeTable)])]);
    };
    return renderVN;
  }
}));
;// ./packages/table/src/header.ts











const {
  renderer: header_renderer,
  renderEmptyElement: header_renderEmptyElement
} = core_.VxeUI;
const header_sourceType = 'table';
const header_renderType = 'header';
/* harmony default export */ var header = (defineVxeComponent({
  name: 'VxeTableHeader',
  props: {
    tableData: Array,
    tableColumn: Array,
    tableGroupColumn: Array,
    fixedColumn: Array,
    fixedType: {
      type: String,
      default: null
    }
  },
  setup(props) {
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', {});
    const {
      xID,
      props: tableProps,
      reactData: tableReactData,
      internalData: tableInternalData
    } = $xeTable;
    const {
      computeColumnOpts,
      computeColumnDragOpts,
      computeCellOpts,
      computeMouseOpts,
      computeHeaderCellOpts,
      computeDefaultRowHeight,
      computeVirtualXOpts,
      computeFloatingFilterOpts,
      computeIsHeaderRenderOptimize,
      computeHeaderTooltipOpts
    } = $xeTable.getComputeMaps();
    const headerColumn = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)([]);
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refHeaderScroll = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refHeaderTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refHeaderColgroup = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refHeaderTHead = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refHeaderXSpace = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refHeaderBorderRepair = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const uploadColumn = () => {
      const {
        showCustomHeader
      } = tableProps;
      const {
        collectColumn,
        visibleColumn
      } = tableInternalData;
      const {
        tableGroupColumn
      } = props;
      const {
        isGroup
      } = tableReactData;
      let spanColumns = isGroup ? convertHeaderColumnToRows(tableGroupColumn) : [];
      let visibleColgroups = [];
      if (showCustomHeader && spanColumns.length > 1) {
        visibleColgroups = convertHeaderToGridRows(spanColumns);
        spanColumns = visibleColgroups;
      }
      headerColumn.value = spanColumns;
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
        $xeTable.dispatchEvent('columns-change', {
          visibleColgroups,
          collectColumn,
          visibleColumn
        }, null);
      });
    };
    const renderRows = (isGroup, isOptimizeMode, headerGroups, _rowIndex, cols) => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        fixedType
      } = props;
      const {
        resizable: allResizable,
        columnKey,
        showCustomHeader,
        headerCellClassName,
        headerCellStyle,
        showHeaderOverflow: allColumnHeaderOverflow,
        headerAlign: allHeaderAlign,
        align: allAlign,
        mouseConfig
      } = tableProps;
      const {
        currentColumn,
        dragCol,
        scrollXLoad,
        scrollYLoad,
        overflowX,
        mergeHeadFlag,
        tableColumn
      } = tableReactData;
      const {
        fullColumnIdData,
        scrollXStore,
        mergeHeaderList,
        mergeHeaderCellMaps
      } = tableInternalData;
      const virtualXOpts = computeVirtualXOpts.value;
      const columnOpts = computeColumnOpts.value;
      const columnDragOpts = computeColumnDragOpts.value;
      const headerTooltipOpts = computeHeaderTooltipOpts.value;
      const cellOpts = computeCellOpts.value;
      const defaultRowHeight = computeDefaultRowHeight.value;
      const headerCellOpts = computeHeaderCellOpts.value;
      const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight;
      const {
        disabledMethod: dragDisabledMethod,
        isCrossDrag,
        isPeerDrag
      } = columnDragOpts;
      const isLastRow = _rowIndex === headerGroups.length - 1;
      return cols.map((column, $columnIndex) => {
        const {
          type,
          showHeaderOverflow,
          headerAlign,
          align,
          filters,
          headerClassName,
          editRender,
          cellRender
        } = column;
        const colid = column.id;
        const colRest = fullColumnIdData[colid] || {};
        const renderOpts = editRender || cellRender;
        const compConf = renderOpts ? header_renderer.get(renderOpts.name) : null;
        const isColGroup = column.children && column.children.length;
        const fixedHiddenColumn = overflowX && !isColGroup && (fixedType ? column.fixed !== fixedType : !!column.fixed);
        const cellPadding = getDefaultConfig(headerCellOpts.padding, cellOpts.padding);
        const isAllCellPadding = cellPadding === true;
        const isCellPaddingTop = cellPadding ? isAllCellPadding || cellPadding.top !== false : false;
        const isCellPaddingBottom = cellPadding ? isAllCellPadding || cellPadding.bottom !== false : false;
        const isCellPaddingLeft = cellPadding ? isAllCellPadding || cellPadding.left !== false : false;
        const isCellPaddingRight = cellPadding ? isAllCellPadding || cellPadding.right !== false : false;
        const headOverflow = getDefaultConfig(showHeaderOverflow, allColumnHeaderOverflow);
        const headAlign = headerAlign || (compConf ? compConf.tableHeaderCellAlign : '') || allHeaderAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign;
        const showEllipsis = (headOverflow === true ? headerTooltipOpts.mode : headOverflow) === 'ellipsis';
        const showTitle = (headOverflow === true ? headerTooltipOpts.mode : headOverflow) === 'title';
        const showTooltip = (headOverflow === true ? headerTooltipOpts.mode : headOverflow) === 'tooltip';
        const hasEllipsis = showTitle || showTooltip || showEllipsis;
        let hasFilter = false;
        let firstFilterOption = null;
        if (filters) {
          firstFilterOption = filters[0];
          hasFilter = filters.some(item => item.checked);
        }
        const columnIndex = colRest.index;
        const _columnIndex = colRest._index;
        const cellParams = {
          $table: $xeTable,
          $grid: $xeGrid,
          $gantt: $xeGantt,
          rowIndex: _rowIndex,
          _rowIndex,
          $rowIndex: _rowIndex,
          column,
          columnIndex,
          $columnIndex,
          _columnIndex,
          firstFilterOption: firstFilterOption,
          fixed: fixedType,
          source: header_sourceType,
          type: header_renderType,
          isHidden: fixedHiddenColumn,
          hasFilter
        };
        const thAttrs = {
          colid
        };
        let isMergeCell = false;
        // 合并行或列
        if (!showCustomHeader) {
          thAttrs.colspan = column.colSpan > 1 ? column.colSpan : null;
          thAttrs.rowspan = column.rowSpan > 1 ? column.rowSpan : null;
        }
        if (mergeHeadFlag && mergeHeaderList.length && (showCustomHeader || isLastRow)) {
          const spanRest = mergeHeaderCellMaps[`${_rowIndex}:${showCustomHeader ? $columnIndex : _columnIndex}`];
          if (spanRest) {
            const {
              rowspan,
              colspan
            } = spanRest;
            if (!rowspan || !colspan) {
              return null;
            }
            if (rowspan > 1) {
              isMergeCell = true;
              thAttrs.rowspan = rowspan;
            }
            if (colspan > 1) {
              isMergeCell = true;
              thAttrs.colspan = colspan;
            }
          }
        }
        const thOns = {
          onClick: evnt => $xeTable.triggerHeaderCellClickEvent(evnt, cellParams),
          onDblclick: evnt => $xeTable.triggerHeaderCellDblclickEvent(evnt, cellParams)
        };
        const isColDragCell = columnOpts.drag && columnDragOpts.trigger === 'cell';
        let isDisabledDrag = false;
        if (isColDragCell) {
          isDisabledDrag = !!(dragDisabledMethod && dragDisabledMethod(cellParams));
        }
        // 按下事件处理
        if (mouseConfig || isColDragCell) {
          thOns.onMousedown = evnt => $xeTable.triggerHeaderCellMousedownEvent(evnt, cellParams);
        }
        // 拖拽列事件
        if (columnOpts.drag) {
          thOns.onDragstart = $xeTable.handleHeaderCellDragDragstartEvent;
          thOns.onDragend = $xeTable.handleHeaderCellDragDragendEvent;
          thOns.onDragover = $xeTable.handleHeaderCellDragDragoverEvent;
          if (isColDragCell) {
            thOns.onMouseup = $xeTable.handleHeaderCellDragMouseupEvent;
          }
        }
        const isLastColumn = $columnIndex === cols.length - 1;
        const showResizable = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable;
        const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
        let isVNPreEmptyStatus = false;
        if (isOptimizeMode && overflowX && !isGroup && !isMergeCell) {
          if (!dragCol || dragCol.id !== colid) {
            if (scrollXLoad && tableColumn.length > 10 && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
              isVNPreEmptyStatus = true;
            }
          }
        }
        const tcStyle = {};
        if (hasEllipsis) {
          tcStyle.height = `${currCellHeight}px`;
        } else {
          tcStyle.minHeight = `${currCellHeight}px`;
        }
        if (showCustomHeader) {
          // custom
        } else if (isColGroup && !isLastRow) {
          let childWidth = 0;
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(column.children, childRow => {
            if (childRow.visible && (!childRow.children || !childRow.children.length)) {
              childWidth += childRow.renderWidth;
            }
          });
          tcStyle.width = `${childWidth}px`;
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
          class: ['vxe-table--column vxe-header--column', colid, fixedHiddenColumn ? 'fixed--hidden' : 'fixed--visible', {
            [`col--${headAlign}`]: headAlign,
            [`col--${type}`]: type,
            'col--last': isLastColumn,
            'col--fixed': column.fixed,
            'col--group': isColGroup,
            'col--ellipsis': hasEllipsis,
            'fixed--width': !isAutoCellWidth,
            'is--pg-top': isCellPaddingTop,
            'is--pg-bottom': isCellPaddingBottom,
            'is--pg-left': isCellPaddingLeft,
            'is--pg-right': isCellPaddingRight,
            'is--sortable': column.sortable,
            'col--filter': !!filters,
            'is--filter-active': hasFilter,
            'is--drag-active': columnOpts.drag && !column.fixed && !isDisabledDrag && (isCrossDrag || isPeerDrag || !column.parentId),
            'is--drag-disabled': columnOpts.drag && isDisabledDrag,
            'col--current': currentColumn === column
          }, headerClassName ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerClassName) ? headerClassName(cellParams) : headerClassName : '', headerCellClassName ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerCellClassName) ? headerCellClassName(cellParams) : headerCellClassName : ''],
          style: headerCellStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerCellStyle) ? headerCellStyle(cellParams) : headerCellStyle : null,
          ...thAttrs,
          ...thOns,
          key: showCustomHeader ? `${colid}${$columnIndex}` : columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || columnOpts.drag || isColGroup ? colid : $columnIndex
        }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: ['vxe-cell', {
            'c--title': showTitle,
            'c--tooltip': showTooltip,
            'c--ellipsis': showEllipsis
          }],
          style: tcStyle
        }, isVNPreEmptyStatus || isOptimizeMode && fixedHiddenColumn ? [] : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          colid,
          class: 'vxe-cell--wrapper vxe-header-cell--wrapper'
        }, column.renderHeader(cellParams))]),
        /**
         * 列宽拖动
         */
        !fixedHiddenColumn && showResizable && (!showCustomHeader || isLastRow) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: 'vxe-cell--col-resizable',
          onMousedown: evnt => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams),
          onDblclick: evnt => $xeTable.handleColResizeDblclickEvent(evnt, cellParams)
        }) : header_renderEmptyElement($xeTable)]);
      });
    };
    const renderFilterRows = (isOptimizeMode, cols) => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        fixedType
      } = props;
      const {
        showHeaderOverflow: allColumnHeaderOverflow,
        headerAlign: allHeaderAlign,
        align: allAlign
      } = tableProps;
      const {
        currentColumn,
        overflowX
      } = tableReactData;
      const {
        fullColumnIdData
      } = tableInternalData;
      const headerTooltipOpts = computeHeaderTooltipOpts.value;
      const cellOpts = computeCellOpts.value;
      const defaultRowHeight = computeDefaultRowHeight.value;
      const headerCellOpts = computeHeaderCellOpts.value;
      const floatingFilterOpts = computeFloatingFilterOpts.value;
      const {
        cellClassName
      } = floatingFilterOpts;
      const currCellHeight = getCalcHeight(headerCellOpts.height) || defaultRowHeight;
      return cols.map((column, $columnIndex) => {
        const {
          type,
          showHeaderOverflow,
          headerAlign,
          align,
          filters,
          editRender,
          cellRender,
          floatingFilters,
          filterRender,
          slots
        } = column;
        const colid = column.id;
        const colRest = fullColumnIdData[colid] || {};
        const renderOpts = editRender || cellRender;
        const flSlot = slots ? slots.floatingFilter || slots['floating-filter'] : null;
        const compConf = renderOpts ? header_renderer.get(renderOpts.name) : null;
        const flCompConf = isEnableConf(filterRender) ? header_renderer.get(filterRender.name) : null;
        const rtFloatingFilter = flCompConf ? flCompConf.renderTableFloatingFilter : null;
        const fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed);
        const isPadding = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(headerCellOpts.padding) ? headerCellOpts.padding : cellOpts.padding;
        const headOverflow = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(showHeaderOverflow) ? allColumnHeaderOverflow : showHeaderOverflow;
        const headAlign = headerAlign || (compConf ? compConf.tableHeaderCellAlign : '') || allHeaderAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign;
        const showEllipsis = headOverflow === 'ellipsis';
        const showTitle = headOverflow === 'title';
        const showTooltip = headOverflow === true ? headerTooltipOpts.mode === 'tooltip' : headOverflow === 'tooltip';
        const hasEllipsis = showTitle || showTooltip || showEllipsis;
        let hasFilter = false;
        let firstFilterOption = null;
        if (filters) {
          firstFilterOption = filters[0];
          hasFilter = filters.some(item => item.checked);
        }
        const columnIndex = colRest.index;
        const _columnIndex = colRest._index;
        const cellParams = {
          $table: $xeTable,
          $grid: $xeGrid,
          $gantt: $xeGantt,
          column,
          columnIndex,
          $columnIndex,
          _columnIndex,
          option: firstFilterOption,
          fixed: fixedType,
          source: header_sourceType,
          type: header_renderType,
          isHidden: fixedHiddenColumn,
          hasFilter
        };
        const thAttrs = {
          colid
        };
        const isLastColumn = $columnIndex === cols.length - 1;
        const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
        const tcStyle = {};
        if (hasEllipsis) {
          tcStyle.height = `${currCellHeight}px`;
        } else {
          tcStyle.minHeight = `${currCellHeight}px`;
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
          class: ['vxe-table--column vxe-header--column is--floating-filters', colid, fixedHiddenColumn ? 'fixed--hidden' : 'fixed--visible', {
            [`col--${headAlign}`]: headAlign,
            [`col--${type}`]: type,
            'col--last': isLastColumn,
            'col--fixed': column.fixed,
            'col--ellipsis': hasEllipsis,
            'fixed--width': !isAutoCellWidth,
            'is--padding': isPadding,
            'is--sortable': column.sortable,
            'col--current': currentColumn === column
          }],
          key: colid,
          ...thAttrs
        }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: ['vxe-cell', '' + (cellClassName || ''), {
            'c--title': showTitle,
            'c--tooltip': showTooltip,
            'c--ellipsis': showEllipsis
          }],
          style: tcStyle
        }, isOptimizeMode && fixedHiddenColumn && !floatingFilters ? [] : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          colid,
          class: 'vxe-cell--wrapper vxe-header-cell--wrapper'
        }, flSlot ? $xeTable.callSlot(flSlot, cellParams) : rtFloatingFilter && firstFilterOption ? getSlotVNs(rtFloatingFilter(filterRender, cellParams)) : [])])]);
      });
    };
    const renderHeads = (isGroup, isOptimizeMode, headerGroups, renderColumnList) => {
      const {
        fixedType
      } = props;
      const {
        headerRowClassName,
        headerRowStyle
      } = tableProps;
      const floatingFilterOpts = computeFloatingFilterOpts.value;
      const rowVNs = headerGroups.map((cols, _rowIndex) => {
        const params = {
          $table: $xeTable,
          rowIndex: _rowIndex,
          _rowIndex,
          $rowIndex: _rowIndex,
          fixed: fixedType,
          type: header_renderType
        };
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
          key: _rowIndex,
          class: ['vxe-header--row', headerRowClassName ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerRowClassName) ? headerRowClassName(params) : headerRowClassName : ''],
          style: headerRowStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerRowStyle) ? headerRowStyle(params) : headerRowStyle : null
        }, renderRows(isGroup, isOptimizeMode, headerGroups, _rowIndex, cols));
      });
      if (floatingFilterOpts.enabled) {
        rowVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
          key: 'ff',
          class: ['vxe-header--row is--floating-filters', '' + (floatingFilterOpts.rowClassName || '')]
        }, renderFilterRows(isOptimizeMode, renderColumnList)));
      }
      return rowVNs;
    };
    const renderVN = () => {
      const {
        fixedType,
        fixedColumn,
        tableColumn
      } = props;
      const {
        mouseConfig
      } = tableProps;
      const {
        isGroup,
        isColLoading,
        overflowX,
        scrollXLoad,
        dragCol
      } = tableReactData;
      const {
        visibleColumn,
        fullColumnIdData
      } = tableInternalData;
      const mouseOpts = computeMouseOpts.value;
      const isHeaderRenderOptimize = computeIsHeaderRenderOptimize.value;
      let renderHeaderList = headerColumn.value || [];
      let renderColumnList = tableColumn;
      const isOptimizeMode = isHeaderRenderOptimize;
      if (isGroup) {
        renderColumnList = visibleColumn;
      } else {
        if (!isOptimizeMode || !isColLoading && (fixedType || !overflowX)) {
          renderColumnList = visibleColumn;
        }
        if (fixedType) {
          // 如果是使用优化模式
          if (isOptimizeMode) {
            renderColumnList = fixedColumn || [];
          }
        }
        renderHeaderList = [renderColumnList];
      }
      if (!fixedType && !isGroup) {
        // 列拖拽
        if (scrollXLoad && dragCol) {
          if (renderColumnList.length > 2) {
            const dCowRest = fullColumnIdData[dragCol.id];
            if (dCowRest) {
              const dcIndex = dCowRest._index;
              const firstCol = renderColumnList[0];
              const lastCol = renderColumnList[renderColumnList.length - 1];
              const firstColRest = fullColumnIdData[firstCol.id];
              const lastColRest = fullColumnIdData[lastCol.id];
              if (firstColRest && lastColRest) {
                const fcIndex = firstColRest._index;
                const lcIndex = lastColRest._index;
                if (dcIndex < fcIndex) {
                  renderColumnList = [dragCol].concat(renderColumnList);
                  renderHeaderList = [[dragCol].concat(renderHeaderList[0])].concat(renderHeaderList.slice(1));
                } else if (dcIndex > lcIndex) {
                  renderColumnList = renderColumnList.concat([dragCol]);
                  renderHeaderList = [renderHeaderList[0].concat([dragCol])].concat(renderHeaderList.slice(1));
                }
              }
            }
          }
        }
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-table--header-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],
        xid: xID
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refHeaderScroll,
        class: 'vxe-table--header-inner-wrapper',
        onScroll(evnt) {
          $xeTable.triggerHeaderScrollEvent(evnt, fixedType);
        }
      }, [fixedType ? header_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refHeaderXSpace,
        class: 'vxe-body--x-space'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('table', {
        ref: refHeaderTable,
        class: 'vxe-table--header',
        xid: xID,
        cellspacing: 0,
        cellpadding: 0,
        border: 0,
        xvm: isOptimizeMode ? '1' : null
      }, [
      /**
       * 列宽
       */
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('colgroup', {
        ref: refHeaderColgroup
      }, renderColumnList.map((column, $columnIndex) => {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          name: column.id,
          key: $columnIndex,
          style: {
            width: `${column.renderWidth}px`
          }
        });
      })),
      /**
       * 头部
       */
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('thead', {
        ref: refHeaderTHead
      }, renderHeads(isGroup, isOptimizeMode, renderHeaderList, renderColumnList))]), mouseConfig && mouseOpts.area ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table--cell-area',
        xid: xID
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-main-area'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-clip-area'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-extend-area'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-multi-area'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-active-area'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-table--cell-col-status-area'
      })]) : header_renderEmptyElement($xeTable)])]);
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.tableColumn, uploadColumn);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
        const {
          fixedType
        } = props;
        const {
          internalData
        } = $xeTable;
        const {
          elemStore
        } = internalData;
        const prefix = `${fixedType || 'main'}-header-`;
        elemStore[`${prefix}wrapper`] = refElem;
        elemStore[`${prefix}scroll`] = refHeaderScroll;
        elemStore[`${prefix}table`] = refHeaderTable;
        elemStore[`${prefix}colgroup`] = refHeaderColgroup;
        elemStore[`${prefix}list`] = refHeaderTHead;
        elemStore[`${prefix}xSpace`] = refHeaderXSpace;
        elemStore[`${prefix}repair`] = refHeaderBorderRepair;
        uploadColumn();
      });
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      const {
        fixedType
      } = props;
      const {
        internalData
      } = $xeTable;
      const {
        elemStore
      } = internalData;
      const prefix = `${fixedType || 'main'}-header-`;
      elemStore[`${prefix}wrapper`] = null;
      elemStore[`${prefix}scroll`] = null;
      elemStore[`${prefix}table`] = null;
      elemStore[`${prefix}colgroup`] = null;
      elemStore[`${prefix}list`] = null;
      elemStore[`${prefix}xSpace`] = null;
      elemStore[`${prefix}repair`] = null;
    });
    return renderVN;
  }
}));
;// ./packages/table/src/footer.ts









const {
  renderer: footer_renderer,
  renderEmptyElement: footer_renderEmptyElement
} = core_.VxeUI;
const footer_sourceType = 'table';
const footer_renderType = 'footer';
/* harmony default export */ var footer = (defineVxeComponent({
  name: 'VxeTableFooter',
  props: {
    footerTableData: {
      type: Array,
      default: () => []
    },
    tableColumn: {
      type: Array,
      default: () => []
    },
    fixedColumn: {
      type: Array,
      default: () => []
    },
    fixedType: {
      type: String,
      default: null
    }
  },
  setup(props) {
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', {});
    const {
      xID,
      props: tableProps,
      reactData: tableReactData,
      internalData: tableInternalData
    } = $xeTable;
    const {
      computeFooterTooltipOpts,
      computeColumnOpts,
      computeCellOpts,
      computeFooterCellOpts,
      computeDefaultRowHeight,
      computeResizableOpts,
      computeVirtualXOpts,
      computeIsFooterRenderOptimize
    } = $xeTable.getComputeMaps();
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refFooterScroll = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refFooterTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refFooterColgroup = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refFooterTFoot = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refFooterXSpace = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const renderRows = (isOptimizeMode, tableColumn, footerTableData, row, $rowIndex, _rowIndex) => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        fixedType
      } = props;
      const {
        resizable: allResizable,
        border,
        footerCellClassName,
        footerCellStyle,
        footerAlign: allFooterAlign,
        footerSpanMethod,
        align: allAlign,
        columnKey,
        showFooterOverflow: allColumnFooterOverflow
      } = tableProps;
      const {
        scrollXLoad,
        scrollYLoad,
        overflowX,
        currentColumn,
        mergeFootFlag
      } = tableReactData;
      const {
        fullColumnIdData,
        mergeFooterList,
        mergeFooterCellMaps,
        scrollXStore
      } = tableInternalData;
      const virtualXOpts = computeVirtualXOpts.value;
      const footerTooltipOpts = computeFooterTooltipOpts.value;
      const resizableOpts = computeResizableOpts.value;
      const {
        isAllColumnDrag
      } = resizableOpts;
      const columnOpts = computeColumnOpts.value;
      const defaultRowHeight = computeDefaultRowHeight.value;
      const cellOpts = computeCellOpts.value;
      const footerCellOpts = computeFooterCellOpts.value;
      const currCellHeight = getCalcHeight(footerCellOpts.height) || defaultRowHeight;
      return tableColumn.map((column, $columnIndex) => {
        const {
          type,
          showFooterOverflow,
          footerAlign,
          align,
          footerClassName,
          editRender,
          cellRender
        } = column;
        const colid = column.id;
        const colRest = fullColumnIdData[colid] || {};
        const renderOpts = editRender || cellRender;
        const compConf = renderOpts ? footer_renderer.get(renderOpts.name) : null;
        const showAllTip = footerTooltipOpts.showAll;
        const fixedHiddenColumn = overflowX && (fixedType ? column.fixed !== fixedType : !!column.fixed);
        const cellPadding = getDefaultConfig(footerCellOpts.padding, cellOpts.padding);
        const isAllCellPadding = cellPadding === true;
        const isCellPaddingTop = cellPadding ? isAllCellPadding || cellPadding.top !== false : false;
        const isCellPaddingBottom = cellPadding ? isAllCellPadding || cellPadding.bottom !== false : false;
        const isCellPaddingLeft = cellPadding ? isAllCellPadding || cellPadding.left !== false : false;
        const isCellPaddingRight = cellPadding ? isAllCellPadding || cellPadding.right !== false : false;
        const footOverflow = getDefaultConfig(showFooterOverflow, allColumnFooterOverflow);
        const footAlign = footerAlign || (compConf ? compConf.tableFooterCellAlign : '') || allFooterAlign || align || (compConf ? compConf.tableCellAlign : '') || allAlign;
        const showEllipsis = (footOverflow === true ? footerTooltipOpts.mode : footOverflow) === 'ellipsis';
        const showTitle = (footOverflow === true ? footerTooltipOpts.mode : footOverflow) === 'title';
        const showTooltip = (footOverflow === true ? footerTooltipOpts.mode : footOverflow) === 'tooltip';
        const hasEllipsis = showTitle || showTooltip || showEllipsis;
        const showResizable = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable;
        const attrs = {
          colid
        };
        const tfOns = {};
        const columnIndex = colRest.index;
        const _columnIndex = colRest._index;
        const itemIndex = _columnIndex;
        const cellParams = {
          $table: $xeTable,
          $grid: $xeGrid,
          $gantt: $xeGantt,
          row,
          rowIndex: _rowIndex,
          _rowIndex,
          $rowIndex,
          column,
          columnIndex,
          $columnIndex,
          _columnIndex,
          itemIndex,
          items: row,
          fixed: fixedType,
          source: footer_sourceType,
          type: footer_renderType,
          data: footerTableData
        };
        if (showTitle || showTooltip || showAllTip) {
          tfOns.onMouseenter = evnt => {
            if (showTitle) {
              updateCellTitle(evnt.currentTarget, column);
            } else if (showTooltip || showAllTip) {
              $xeTable.triggerFooterTooltipEvent(evnt, cellParams);
            }
          };
        }
        if (showTooltip || showAllTip) {
          tfOns.onMouseleave = evnt => {
            if (showTooltip || showAllTip) {
              $xeTable.handleTargetLeaveEvent(evnt);
            }
          };
        }
        tfOns.onClick = evnt => {
          $xeTable.triggerFooterCellClickEvent(evnt, cellParams);
        };
        tfOns.onDblclick = evnt => {
          $xeTable.triggerFooterCellDblclickEvent(evnt, cellParams);
        };
        let isMergeCell = false;
        // 合并行或列
        if (mergeFootFlag && mergeFooterList.length) {
          const spanRest = mergeFooterCellMaps[`${_rowIndex}:${_columnIndex}`];
          if (spanRest) {
            const {
              rowspan,
              colspan
            } = spanRest;
            if (!rowspan || !colspan) {
              return null;
            }
            if (rowspan > 1) {
              isMergeCell = true;
              attrs.rowspan = rowspan;
            }
            if (colspan > 1) {
              isMergeCell = true;
              attrs.colspan = colspan;
            }
          }
        } else if (footerSpanMethod) {
          // 自定义合并方法
          const {
            rowspan = 1,
            colspan = 1
          } = footerSpanMethod(cellParams) || {};
          if (!rowspan || !colspan) {
            return null;
          }
          if (rowspan > 1) {
            attrs.rowspan = rowspan;
          }
          if (colspan > 1) {
            attrs.colspan = colspan;
          }
        }
        const isLastColumn = $columnIndex === tableColumn.length - 1;
        const isAutoCellWidth = !column.resizeWidth && (column.minWidth === 'auto' || column.width === 'auto');
        let isVNPreEmptyStatus = false;
        if (isOptimizeMode && overflowX && !isMergeCell) {
          if (scrollXLoad && tableColumn.length > 10 && !column.fixed && !virtualXOpts.immediate && (_columnIndex < scrollXStore.visibleStartIndex - scrollXStore.preloadSize || _columnIndex > scrollXStore.visibleEndIndex + scrollXStore.preloadSize)) {
            isVNPreEmptyStatus = true;
          }
        }
        const tcStyle = {};
        if (hasEllipsis) {
          tcStyle.height = `${currCellHeight}px`;
        } else {
          tcStyle.minHeight = `${currCellHeight}px`;
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
          class: ['vxe-table--column vxe-footer--column', column.id, {
            [`col--${footAlign}`]: footAlign,
            [`col--${type}`]: type,
            'col--last': isLastColumn,
            'fixed--width': !isAutoCellWidth,
            'fixed--hidden': fixedHiddenColumn,
            'is--pg-top': isCellPaddingTop,
            'is--pg-bottom': isCellPaddingBottom,
            'is--pg-left': isCellPaddingLeft,
            'is--pg-right': isCellPaddingRight,
            'col--ellipsis': hasEllipsis,
            'col--current': currentColumn === column
          }, getPropClass(footerClassName, cellParams), getPropClass(footerCellClassName, cellParams)],
          ...attrs,
          style: footerCellStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(footerCellStyle) ? footerCellStyle(cellParams) : footerCellStyle : null,
          ...tfOns,
          key: columnKey || scrollXLoad || scrollYLoad || columnOpts.useKey || columnOpts.drag ? column.id : $columnIndex
        }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: ['vxe-cell', {
            'c--title': showTitle,
            'c--tooltip': showTooltip,
            'c--ellipsis': showEllipsis
          }],
          style: tcStyle
        }, isVNPreEmptyStatus ? [] : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          colid,
          class: 'vxe-cell--wrapper vxe-footer-cell--wrapper'
        }, column.renderFooter(cellParams))]),
        /**
         * 列宽拖动
         */
        !fixedHiddenColumn && showResizable && isAllColumnDrag ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: ['vxe-cell--col-resizable', {
            'is--line': !border || border === 'none'
          }],
          onMousedown: evnt => $xeTable.handleColResizeMousedownEvent(evnt, fixedType, cellParams),
          onDblclick: evnt => $xeTable.handleColResizeDblclickEvent(evnt, cellParams)
        }) : footer_renderEmptyElement($xeTable)]);
      });
    };
    const renderHeads = (isOptimizeMode, renderColumnList) => {
      const {
        fixedType,
        footerTableData
      } = props;
      const {
        footerRowClassName,
        footerRowStyle
      } = tableProps;
      return footerTableData.map((row, _rowIndex) => {
        const $rowIndex = _rowIndex;
        const rowParams = {
          $table: $xeTable,
          row,
          rowIndex: _rowIndex,
          _rowIndex,
          $rowIndex,
          fixed: fixedType,
          type: footer_renderType
        };
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
          key: _rowIndex,
          class: ['vxe-footer--row', footerRowClassName ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(footerRowClassName) ? footerRowClassName(rowParams) : footerRowClassName : ''],
          style: footerRowStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(footerRowStyle) ? footerRowStyle(rowParams) : footerRowStyle : null
        }, renderRows(isOptimizeMode, renderColumnList, footerTableData, row, _rowIndex, _rowIndex));
      });
    };
    const renderVN = () => {
      const {
        fixedType,
        fixedColumn,
        tableColumn
      } = props;
      const {
        visibleColumn,
        fullColumnIdData
      } = tableInternalData;
      const {
        isGroup,
        isColLoading,
        overflowX,
        scrollXLoad,
        dragCol
      } = tableReactData;
      const isFooterRenderOptimize = computeIsFooterRenderOptimize.value;
      let renderColumnList = tableColumn;
      const isOptimizeMode = isFooterRenderOptimize;
      if (!isOptimizeMode || !isColLoading && (fixedType || !overflowX)) {
        renderColumnList = visibleColumn;
      }
      if (fixedType) {
        if (isOptimizeMode) {
          renderColumnList = fixedColumn || [];
        }
      }
      if (!fixedType && !isGroup) {
        // 列拖拽
        if (scrollXLoad && dragCol) {
          if (renderColumnList.length > 2) {
            const dCowRest = fullColumnIdData[dragCol.id];
            if (dCowRest) {
              const dcIndex = dCowRest._index;
              const firstCol = renderColumnList[0];
              const lastCol = renderColumnList[renderColumnList.length - 1];
              const firstColRest = fullColumnIdData[firstCol.id];
              const lastColRest = fullColumnIdData[lastCol.id];
              if (firstColRest && lastColRest) {
                const fcIndex = firstColRest._index;
                const lcIndex = lastColRest._index;
                if (dcIndex < fcIndex) {
                  renderColumnList = [dragCol].concat(renderColumnList);
                } else if (dcIndex > lcIndex) {
                  renderColumnList = renderColumnList.concat([dragCol]);
                }
              }
            }
          }
        }
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-table--footer-wrapper', fixedType ? `fixed-${fixedType}--wrapper` : 'body--wrapper'],
        xid: xID
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refFooterScroll,
        class: 'vxe-table--footer-inner-wrapper',
        onScroll(evnt) {
          $xeTable.triggerFooterScrollEvent(evnt, fixedType);
        }
      }, [fixedType ? footer_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refFooterXSpace,
        class: 'vxe-body--x-space'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('table', {
        ref: refFooterTable,
        class: 'vxe-table--footer',
        xid: xID,
        cellspacing: 0,
        cellpadding: 0,
        border: 0,
        xvm: isOptimizeMode ? '1' : null
      }, [
      /**
      * 列宽
      */
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('colgroup', {
        ref: refFooterColgroup
      }, renderColumnList.map((column, $columnIndex) => {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          name: column.id,
          key: $columnIndex,
          style: {
            width: `${column.renderWidth}px`
          }
        });
      })),
      /**
      * 底部
      */
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tfoot', {
        ref: refFooterTFoot
      }, renderHeads(isOptimizeMode, renderColumnList))])])]);
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
        const {
          fixedType
        } = props;
        const {
          elemStore
        } = tableInternalData;
        const prefix = `${fixedType || 'main'}-footer-`;
        elemStore[`${prefix}wrapper`] = refElem;
        elemStore[`${prefix}scroll`] = refFooterScroll;
        elemStore[`${prefix}table`] = refFooterTable;
        elemStore[`${prefix}colgroup`] = refFooterColgroup;
        elemStore[`${prefix}list`] = refFooterTFoot;
        elemStore[`${prefix}xSpace`] = refFooterXSpace;
      });
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      const {
        fixedType
      } = props;
      const {
        elemStore
      } = tableInternalData;
      const prefix = `${fixedType || 'main'}-footer-`;
      elemStore[`${prefix}wrapper`] = null;
      elemStore[`${prefix}scroll`] = null;
      elemStore[`${prefix}table`] = null;
      elemStore[`${prefix}colgroup`] = null;
      elemStore[`${prefix}list`] = null;
      elemStore[`${prefix}xSpace`] = null;
    });
    return renderVN;
  }
}));
;// ./packages/table/module/custom/panel.ts













const {
  errLog: panel_errLog
} = createComponentLog('table');
const {
  getI18n: panel_getI18n,
  getIcon: panel_getIcon,
  renderEmptyElement: panel_renderEmptyElement
} = core_.VxeUI;
function panel_createInternalData() {
  return {
    // teleportTo: undefined,
    // prevDragCol: undefined,
    // prevDragGroupField: undefined,
    // prevDragAggFnColid: undefined,
    // prevDragToChild: false,
    // prevDragPos: null,
    // customDragTime: null
  };
}
/* harmony default export */ var panel = (defineVxeComponent({
  name: 'TableCustomPanel',
  props: {
    customStore: {
      type: Object,
      default: () => ({})
    }
  },
  setup(props, context) {
    const xID = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId();
    const VxeUIModalComponent = core_.VxeUI.getComponent('VxeModal');
    const VxeUIDrawerComponent = core_.VxeUI.getComponent('VxeDrawer');
    const VxeUIButtonComponent = core_.VxeUI.getComponent('VxeButton');
    const VxeUINumberInputComponent = core_.VxeUI.getComponent('VxeNumberInput');
    const VxeUIRadioGroupComponent = core_.VxeUI.getComponent('VxeRadioGroup');
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', {});
    const {
      props: tableProps,
      reactData: tableReactData,
      internalData: tableInternalData
    } = $xeTable;
    const {
      computeSize,
      computeCustomOpts,
      computeColumnDragOpts,
      computeColumnOpts,
      computeIsMaxFixedColumn,
      computeResizableOpts,
      computeAggregateOpts
    } = $xeTable.getComputeMaps();
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBodyWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refCustomBodyElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refDragLineElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refDragTipElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const customPanelReactData = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)({
      dragCol: null,
      dragGroupField: null,
      dragAggFnCol: null,
      dragTipText: ''
    });
    let customPanelInternalData = panel_createInternalData();
    const refMaps = {
      refElem,
      refBodyWrapperElem,
      refCustomBodyElem,
      refDragLineElem,
      refDragTipElem
    };
    const computeMaps = {};
    const handleWrapperMouseenterEvent = evnt => {
      const {
        customStore
      } = props;
      customStore.activeWrapper = true;
      $xeTable.customOpenEvent(evnt);
    };
    const handleWrapperMouseleaveEvent = evnt => {
      const {
        customStore
      } = props;
      customStore.activeWrapper = false;
      setTimeout(() => {
        if (!customStore.activeBtn && !customStore.activeWrapper) {
          $xeTable.customCloseEvent(evnt);
        }
      }, 300);
    };
    const confirmCustomEvent = ({
      $event
    }) => {
      tableReactData.isCustomStatus = true;
      $xeTable.saveCustom();
      $xeTable.closeCustom();
      $xeTable.emitCustomEvent('confirm', $event);
      $xeTable.dispatchEvent('custom-confirm', {}, $event);
      $xeTable.emitCustomEvent('close', $event);
      $xeTable.dispatchEvent('custom-close', {}, $event);
    };
    const cancelCloseEvent = ({
      $event
    }) => {
      $xeTable.closeCustom();
      $xeTable.emitCustomEvent('close', $event);
      $xeTable.dispatchEvent('custom-close', {}, $event);
    };
    const cancelCustomEvent = ({
      $event
    }) => {
      $xeTable.cancelCustom();
      $xeTable.closeCustom();
      $xeTable.emitCustomEvent('cancel', $event);
      $xeTable.dispatchEvent('custom-cancel', {}, $event);
      $xeTable.emitCustomEvent('close', $event);
      $xeTable.dispatchEvent('custom-close', {}, $event);
    };
    const handleResetCustomEvent = evnt => {
      $xeTable.resetCustom(true);
      $xeTable.closeCustom();
      $xeTable.emitCustomEvent('reset', evnt);
      $xeTable.dispatchEvent('custom-reset', {}, evnt);
      $xeTable.emitCustomEvent('close', evnt);
      $xeTable.dispatchEvent('custom-close', {}, evnt);
    };
    const resetCustomEvent = ({
      $event
    }) => {
      if (core_.VxeUI.modal) {
        core_.VxeUI.modal.confirm({
          content: panel_getI18n('vxe.custom.cstmConfirmRestore'),
          className: 'vxe-table--ignore-clear',
          escClosable: true
        }).then(type => {
          if (type === 'confirm') {
            handleResetCustomEvent($event);
          }
        });
      } else {
        handleResetCustomEvent($event);
      }
    };
    const handleOptionCheck = column => {
      const {
        customColumnList
      } = tableReactData;
      const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(customColumnList, item => item === column);
      if (matchObj && matchObj.parent) {
        const {
          parent: parentItem
        } = matchObj;
        if (parentItem.children && parentItem.children.length) {
          parentItem.renderVisible = parentItem.children.every(column => column.renderVisible);
          parentItem.halfVisible = !parentItem.renderVisible && parentItem.children.some(column => column.renderVisible || column.halfVisible);
          handleOptionCheck(parentItem);
        }
      }
    };
    const changeCheckboxOption = (column, evnt) => {
      const isChecked = !column.renderVisible;
      const customOpts = computeCustomOpts.value;
      if (customOpts.immediate) {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], item => {
          item.visible = isChecked;
          item.renderVisible = isChecked;
          item.halfVisible = false;
        });
        tableReactData.isCustomStatus = true;
        $xeTable.handleCustom();
        $xeTable.saveCustomStore('update:visible');
      } else {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], item => {
          item.renderVisible = isChecked;
          item.halfVisible = false;
        });
      }
      handleOptionCheck(column);
      $xeTable.checkCustomStatus();
      $xeTable.dispatchEvent('custom-visible-change', {
        column,
        checked: isChecked
      }, evnt);
    };
    const changeColumnWidth = column => {
      const customOpts = computeCustomOpts.value;
      if (customOpts.immediate) {
        if (column.renderResizeWidth !== column.renderWidth) {
          column.resizeWidth = column.renderResizeWidth;
          column.renderWidth = column.renderResizeWidth;
          tableReactData.isCustomStatus = true;
          $xeTable.handleCustom();
          $xeTable.saveCustomStore('update:width');
        }
      }
    };
    const changeFixedOption = (column, colFixed, evnt) => {
      const isMaxFixedColumn = computeIsMaxFixedColumn.value;
      const customOpts = computeCustomOpts.value;
      let targetFixed = null;
      if (customOpts.immediate) {
        if (column.renderFixed === colFixed) {
          targetFixed = '';
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], col => {
            col.fixed = '';
            col.renderFixed = '';
          });
        } else {
          if (!isMaxFixedColumn || column.renderFixed) {
            targetFixed = colFixed;
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], col => {
              col.fixed = colFixed;
              col.renderFixed = colFixed;
            });
          }
        }
        tableReactData.isCustomStatus = true;
        $xeTable.handleCustom();
        $xeTable.saveCustomStore('update:fixed');
      } else {
        if (column.renderFixed === colFixed) {
          targetFixed = '';
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], col => {
            col.renderFixed = '';
          });
        } else {
          if (!isMaxFixedColumn || column.renderFixed) {
            targetFixed = colFixed;
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], col => {
              col.renderFixed = colFixed;
            });
          }
        }
      }
      if (targetFixed !== null) {
        $xeTable.dispatchEvent('custom-fixed-change', {
          column,
          fixed: targetFixed
        }, evnt);
      }
    };
    const changeAlignOption = (column, targetAlign, colProperty, renderProperty, eName, evnt) => {
      const customOpts = computeCustomOpts.value;
      if (customOpts.immediate) {
        column[colProperty] = targetAlign;
        column[renderProperty] = targetAlign;
        tableReactData.isCustomStatus = true;
        $xeTable.handleCustom();
        $xeTable.saveCustomStore(`update:${colProperty}`);
      } else {
        column[renderProperty] = targetAlign;
      }
      $xeTable.dispatchEvent(eName, {
        column,
        [colProperty]: targetAlign
      }, evnt);
    };
    const allOptionEvent = evnt => {
      const {
        customStore
      } = tableReactData;
      const isAll = !customStore.isAll;
      $xeTable.toggleCustomAllCheckbox();
      $xeTable.dispatchEvent('custom-visible-all', {
        checked: isAll
      }, evnt);
    };
    const showDropTip = (evnt, optEl, showLine, dragPos) => {
      const bodyWrapperElem = refBodyWrapperElem.value;
      if (!bodyWrapperElem) {
        return;
      }
      const customBodyElem = refCustomBodyElem.value;
      if (!customBodyElem) {
        return;
      }
      const {
        prevDragToChild
      } = customPanelInternalData;
      const bodyWrapperRect = bodyWrapperElem.getBoundingClientRect();
      const customBodyRect = customBodyElem.getBoundingClientRect();
      const dragLineEl = refDragLineElem.value;
      if (optEl) {
        if (dragLineEl) {
          if (showLine) {
            const optRect = optEl.getBoundingClientRect();
            dragLineEl.style.display = 'block';
            dragLineEl.style.left = `${Math.max(0, customBodyRect.x - bodyWrapperRect.x)}px`;
            dragLineEl.style.top = `${Math.max(1, optRect.y + bodyWrapperElem.scrollTop - bodyWrapperRect.y)}px`;
            dragLineEl.style.height = `${optRect.height}px`;
            dragLineEl.style.width = `${optRect.width}px`;
            dragLineEl.setAttribute('drag-pos', dragPos);
            dragLineEl.setAttribute('drag-to-child', prevDragToChild ? 'y' : 'n');
          } else {
            dragLineEl.style.display = '';
          }
        }
      } else {
        if (dragLineEl) {
          dragLineEl.style.display = 'node';
        }
      }
      const dragTipEl = refDragTipElem.value;
      if (dragTipEl) {
        dragTipEl.style.display = 'block';
        dragTipEl.style.top = `${Math.min(bodyWrapperElem.clientHeight + bodyWrapperElem.scrollTop - dragTipEl.clientHeight, evnt.clientY + bodyWrapperElem.scrollTop - bodyWrapperRect.y)}px`;
        dragTipEl.style.left = `${Math.min(bodyWrapperElem.clientWidth + bodyWrapperElem.scrollLeft - dragTipEl.clientWidth, evnt.clientX + bodyWrapperElem.scrollLeft - bodyWrapperRect.x)}px`;
        dragTipEl.setAttribute('drag-status', showLine ? prevDragToChild ? 'sub' : 'normal' : 'disabled');
      }
    };
    const updateColDropTipContent = () => {
      const {
        dragCol
      } = customPanelReactData;
      const columnDragOpts = computeColumnDragOpts.value;
      const {
        tooltipMethod
      } = columnDragOpts;
      let tipContent = '';
      if (tooltipMethod) {
        const dtParams = {
          $table: $xeTable,
          column: dragCol
        };
        tipContent = `${tooltipMethod(dtParams) || ''}`;
      } else {
        tipContent = panel_getI18n('vxe.custom.cstmDragTarget', [dragCol && dragCol.type !== 'html' ? dragCol.getTitle() : '']);
      }
      customPanelReactData.dragTipText = tipContent;
    };
    const hideDropTip = () => {
      const dragTipEl = refDragTipElem.value;
      const dragLineEl = refDragLineElem.value;
      if (dragTipEl) {
        dragTipEl.style.display = '';
      }
      if (dragLineEl) {
        dragLineEl.style.display = '';
      }
    };
    const sortMousedownEvent = evnt => {
      const btnEl = evnt.currentTarget;
      const cellEl = btnEl.parentElement;
      const tdEl = cellEl.parentElement;
      const trEl = tdEl.parentElement;
      const colid = trEl.getAttribute('colid');
      const column = $xeTable.getColumnById(colid);
      trEl.draggable = true;
      customPanelReactData.dragCol = column;
      customPanelReactData.dragGroupField = null;
      customPanelReactData.dragAggFnCol = null;
      updateColDropTipContent();
      addClass(trEl, 'active--drag-origin');
    };
    const sortMouseupEvent = evnt => {
      const btnEl = evnt.currentTarget;
      const cellEl = btnEl.parentElement;
      const tdEl = cellEl.parentElement;
      const trEl = tdEl.parentElement;
      hideDropTip();
      trEl.draggable = false;
      customPanelReactData.dragCol = null;
      customPanelReactData.dragGroupField = null;
      customPanelReactData.dragAggFnCol = null;
      removeClass(trEl, 'active--drag-origin');
    };
    const sortDragstartEvent = evnt => {
      const {
        customDragTime
      } = customPanelInternalData;
      if (evnt.dataTransfer) {
        evnt.dataTransfer.setDragImage(getTpImg(), 0, 0);
      }
      if (customDragTime) {
        clearTimeout(customDragTime);
      }
      tableReactData.isCustomDragStatus = true;
      customPanelInternalData.prevDragGroupField = null;
      customPanelInternalData.prevDragAggFnColid = null;
    };
    const sortDragendEvent = evnt => {
      const {
        mouseConfig
      } = tableProps;
      const {
        customColumnList
      } = tableReactData;
      const {
        collectColumn
      } = tableInternalData;
      const customOpts = computeCustomOpts.value;
      const {
        immediate
      } = customOpts;
      const trEl = evnt.currentTarget;
      const columnDragOpts = computeColumnDragOpts.value;
      const {
        isCrossDrag,
        isPeerDrag,
        isSelfToChildDrag,
        isToChildDrag,
        dragEndMethod
      } = columnDragOpts;
      const {
        dragCol
      } = customPanelReactData;
      const {
        prevDragCol,
        prevDragGroupField,
        prevDragAggFnColid,
        prevDragPos,
        prevDragToChild
      } = customPanelInternalData;
      const dragOffsetIndex = prevDragPos === 'bottom' ? 1 : 0;
      if (prevDragGroupField || prevDragAggFnColid) {
        if ($xeTable.handlePivotTableAggregatePanelDragendEvent) {
          $xeTable.handlePivotTableAggregatePanelDragendEvent(evnt);
        }
      } else if (prevDragCol && dragCol) {
        // 判断是否有拖动
        if (prevDragCol !== dragCol) {
          const dragColumn = dragCol;
          const newColumn = prevDragCol;
          Promise.resolve(dragEndMethod ? dragEndMethod({
            oldColumn: dragColumn,
            newColumn,
            dragColumn,
            dragPos: prevDragPos,
            dragToChild: !!prevDragToChild,
            offsetIndex: dragOffsetIndex
          }) : true).then(status => {
            if (!status) {
              return;
            }
            let oafIndex = -1;
            let nafIndex = -1;
            const oldAllMaps = {};
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([dragColumn], column => {
              oldAllMaps[column.id] = column;
            });
            let isSelfToChildStatus = false;
            // 只有实时拖拽支持跨层级
            if (immediate) {
              if (dragColumn.parentId && newColumn.parentId) {
                // 子到子
                if (isPeerDrag && !isCrossDrag) {
                  if (dragColumn.parentId !== newColumn.parentId) {
                    // 非同级
                    return;
                  }
                } else {
                  if (!isCrossDrag) {
                    return;
                  }
                  if (oldAllMaps[newColumn.id]) {
                    isSelfToChildStatus = true;
                    if (!(isCrossDrag && isSelfToChildDrag)) {
                      if (core_.VxeUI.modal) {
                        core_.VxeUI.modal.message({
                          status: 'error',
                          content: panel_getI18n('vxe.error.treeDragChild')
                        });
                      }
                      return;
                    }
                  }
                }
              } else if (dragColumn.parentId) {
                // 子到根
                if (!isCrossDrag) {
                  return;
                }
              } else if (newColumn.parentId) {
                // 根到子
                if (!isCrossDrag) {
                  return;
                }
                if (oldAllMaps[newColumn.id]) {
                  isSelfToChildStatus = true;
                  if (!(isCrossDrag && isSelfToChildDrag)) {
                    if (core_.VxeUI.modal) {
                      core_.VxeUI.modal.message({
                        status: 'error',
                        content: panel_getI18n('vxe.error.treeDragChild')
                      });
                    }
                    return;
                  }
                }
              } else {
                // 根到根
              }
              const oldewMatchRest = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(collectColumn, item => item.id === dragColumn.id);
              // 改变层级
              if (isSelfToChildStatus && isCrossDrag && isSelfToChildDrag) {
                if (oldewMatchRest) {
                  const {
                    items: oCols,
                    index: oIndex
                  } = oldewMatchRest;
                  const childList = dragColumn.children || [];
                  childList.forEach(column => {
                    column.parentId = dragColumn.parentId;
                  });
                  oCols.splice(oIndex, 1, ...childList);
                  dragColumn.children = [];
                }
              } else {
                if (oldewMatchRest) {
                  const {
                    items: oCols,
                    index: oIndex,
                    parent: oParent
                  } = oldewMatchRest;
                  oCols.splice(oIndex, 1);
                  if (!oParent) {
                    oafIndex = oIndex;
                  }
                }
              }
              const newMatchRest = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(collectColumn, item => item.id === newColumn.id);
              if (newMatchRest) {
                const {
                  items: nCols,
                  index: nIndex,
                  parent: nParent
                } = newMatchRest;
                // 转子级
                if (isCrossDrag && isToChildDrag && prevDragToChild) {
                  dragColumn.parentId = newColumn.id;
                  newColumn.children = (newColumn.children || []).concat([dragColumn]);
                } else {
                  dragColumn.parentId = newColumn.parentId;
                  nCols.splice(nIndex + dragOffsetIndex, 0, dragColumn);
                }
                if (!nParent) {
                  nafIndex = nIndex;
                }
              }
              external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn, (column, index, items, path, parentItem) => {
                if (!parentItem) {
                  const sortIndex = index + 1;
                  column.renderSortNumber = sortIndex;
                }
              });
            } else {
              oafIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(customColumnList, item => item.id === dragColumn.id);
              customColumnList.splice(oafIndex, 1);
              nafIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(customColumnList, item => item.id === newColumn.id);
              customColumnList.splice(nafIndex + dragOffsetIndex, 0, dragColumn);
            }
            if (mouseConfig) {
              if ($xeTable.clearSelected) {
                $xeTable.clearSelected();
              }
              if ($xeTable.clearCellAreas) {
                $xeTable.clearCellAreas();
                $xeTable.clearCopyCellArea();
              }
            }
            const csParams = {
              oldColumn: dragColumn,
              newColumn,
              dragColumn,
              dragPos: prevDragPos,
              offsetIndex: dragOffsetIndex,
              _index: {
                newIndex: nafIndex,
                oldIndex: oafIndex
              }
            };
            $xeTable.dispatchEvent('custom-sort-change', csParams, evnt);
            $xeTable.dispatchEvent('column-dragend', csParams, evnt);
            if (immediate) {
              tableReactData.customColumnList = collectColumn.slice(0);
              $xeTable.handleColDragSwapColumn();
            }
            clearDragAnimateStatus();
          }).catch(() => {});
        }
      }
      hideDropTip();
      customPanelReactData.dragCol = null;
      customPanelReactData.dragGroupField = null;
      customPanelReactData.dragAggFnCol = null;
      customPanelInternalData.prevDragGroupField = null;
      customPanelInternalData.prevDragAggFnColid = null;
      trEl.draggable = false;
      trEl.removeAttribute('drag-pos');
      removeClass(trEl, 'active--drag-target');
      removeClass(trEl, 'active--drag-origin');
    };
    const sortDragoverEvent = evnt => {
      const customOpts = computeCustomOpts.value;
      const {
        showSortDragButton,
        allowSort,
        immediate
      } = customOpts;
      const columnDragOpts = computeColumnDragOpts.value;
      const {
        isCrossDrag,
        isPeerDrag,
        isToChildDrag
      } = columnDragOpts;
      const optEl = evnt.currentTarget;
      const isControlKey = hasControlKey(evnt);
      const colid = optEl.getAttribute('colid');
      const column = $xeTable.getColumnById(colid);
      const {
        dragCol
      } = customPanelReactData;
      customPanelInternalData.prevDragGroupField = null;
      customPanelInternalData.prevDragAggFnColid = null;
      // 是否移入有效列
      if (column && (isCrossDrag || isPeerDrag || column.level === 1)) {
        evnt.preventDefault();
        const offsetY = evnt.clientY - optEl.getBoundingClientRect().y;
        const dragPos = offsetY < optEl.clientHeight / 2 ? 'top' : 'bottom';
        if (!dragCol || !(showSortDragButton && allowSort) || dragCol && dragCol.id === column.id || !isCrossDrag && (isPeerDrag ? dragCol.parentId !== column.parentId : column.level > 1) || !immediate && column.level > 1 || !isCrossDrag && (isPeerDrag ? dragCol.parentId !== column.parentId : dragCol.level > 1) || !immediate && dragCol.level > 1) {
          showDropTip(evnt, optEl, false, dragPos);
          return;
        }
        customPanelInternalData.prevDragToChild = !!(isCrossDrag && isToChildDrag && isControlKey && immediate);
        customPanelInternalData.prevDragCol = column;
        customPanelInternalData.prevDragPos = dragPos;
        showDropTip(evnt, optEl, true, dragPos);
      }
    };
    const clearDragAnimateStatus = () => {
      customPanelInternalData.customDragTime = setTimeout(() => {
        tableReactData.isCustomDragStatus = false;
        customPanelInternalData.customDragTime = undefined;
      }, 350);
    };
    const sortMoveUpEvent = (evntParame, column) => {
      const {
        customColumnList
      } = tableReactData;
      const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(customColumnList, item => item === column);
      if (matchObj) {
        const {
          item,
          items,
          index
        } = matchObj;
        if (index > 0) {
          tableReactData.isCustomDragStatus = true;
          (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
            items.splice(index, 1);
            items.splice(index - 1, 0, item);
            clearDragAnimateStatus();
          });
        }
      }
    };
    const sortMoveDnEvent = (evntParame, column) => {
      const {
        customColumnList
      } = tableReactData;
      const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(customColumnList, item => item === column);
      if (matchObj) {
        const {
          item,
          items,
          index
        } = matchObj;
        if (index < items.length - 1) {
          tableReactData.isCustomDragStatus = true;
          (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
            items.splice(index, 1);
            items.splice(index + 1, 0, item);
            clearDragAnimateStatus();
          });
        }
      }
    };
    const sortMoveTopEvent = (evntParame, column) => {
      const {
        customColumnList
      } = tableReactData;
      const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(customColumnList, item => item === column);
      if (matchObj) {
        const {
          item,
          items,
          index,
          parent: parentItem
        } = matchObj;
        if (parentItem || index > 0) {
          tableReactData.isCustomDragStatus = true;
          (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
            item.parentId = null;
            items.splice(index, 1);
            customColumnList.unshift(item);
            clearDragAnimateStatus();
          });
        }
      }
    };
    const sortMoveBottomEvent = (evntParame, column) => {
      const {
        customColumnList
      } = tableReactData;
      const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(customColumnList, item => item === column);
      if (matchObj) {
        const {
          item,
          items,
          index,
          parent: parentItem
        } = matchObj;
        if (parentItem || index < items.length - 1) {
          tableReactData.isCustomDragStatus = true;
          (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
            item.parentId = null;
            items.splice(index, 1);
            customColumnList.push(item);
            clearDragAnimateStatus();
          });
        }
      }
    };
    const renderDragTip = () => {
      const {
        dragTipText
      } = customPanelReactData;
      const columnDragOpts = computeColumnDragOpts.value;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refDragLineElem,
        class: ['vxe-table-custom-popup--drag-line', {
          'is--guides': columnDragOpts.showGuidesStatus
        }]
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refDragTipElem,
        class: 'vxe-table-custom-popup--drag-tip'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom-popup--drag-tip-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom-popup--drag-tip-status'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-table-custom-popup--drag-tip-normal-status', panel_getIcon().TABLE_DRAG_STATUS_ROW]
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-table-custom-popup--drag-tip-sub-status', panel_getIcon().TABLE_DRAG_STATUS_SUB_ROW]
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-table-custom-popup--drag-tip-group-status', panel_getIcon().TABLE_DRAG_STATUS_AGG_GROUP]
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-table-custom-popup--drag-tip-values-status', panel_getIcon().TABLE_DRAG_STATUS_AGG_VALUES]
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-table-custom-popup--drag-tip-disabled-status', panel_getIcon().TABLE_DRAG_DISABLED]
      })]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom-popup--drag-tip-content'
      }, `${dragTipText || ''}`)])])]);
    };
    const renderSimplePanel = () => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const tableProps = $xeTable.props;
      const {
        customStore
      } = props;
      const {
        treeConfig,
        rowGroupConfig,
        aggregateConfig
      } = tableProps;
      const {
        isCustomStatus,
        customColumnList,
        isCustomDragStatus
      } = tableReactData;
      const customOpts = computeCustomOpts.value;
      const columnDragOpts = computeColumnDragOpts.value;
      const {
        defPopupStyle
      } = customStore;
      const {
        immediate,
        checkMethod,
        visibleMethod,
        allowVisible,
        allowSort,
        allowFixed,
        allowGroup,
        allowValues,
        trigger,
        placement,
        showSortDragButton,
        showSortMoveButton,
        showSortPutButton
      } = customOpts;
      const isMaxFixedColumn = computeIsMaxFixedColumn.value;
      const vSize = computeSize.value;
      const {
        isCrossDrag,
        isPeerDrag
      } = columnDragOpts;
      const slots = customOpts.slots || {};
      const headerSlot = slots.header;
      const topSlot = slots.top;
      const bottomSlot = slots.bottom;
      const defaultSlot = slots.default;
      const footerSlot = slots.footer;
      const colVNs = [];
      const customWrapperOns = {};
      const isAllChecked = customStore.isAll;
      const isAllIndeterminate = customStore.isIndeterminate;
      // hover 触发
      if (trigger === 'hover') {
        customWrapperOns.onMouseenter = handleWrapperMouseenterEvent;
        customWrapperOns.onMouseleave = handleWrapperMouseleaveEvent;
      }
      const params = {
        $table: $xeTable,
        $grid: $xeGrid,
        $gantt: $xeGantt,
        columns: customColumnList,
        isAllChecked,
        isAllIndeterminate,
        isCustomStatus
      };
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(customColumnList, (column, index, items, path, parentItem) => {
        const isVisible = visibleMethod ? visibleMethod({
          $table: $xeTable,
          column
        }) : true;
        if (isVisible) {
          const isChecked = column.renderVisible;
          const isIndeterminate = column.halfVisible;
          const isColGroup = column.children && column.children.length;
          const colTitle = formatText(column.getTitle(), 1);
          const isDisabled = checkMethod ? !checkMethod({
            $table: $xeTable,
            column
          }) : false;
          const isHidden = !isChecked;
          const showSortBtn = (isCrossDrag || isPeerDrag ? immediate : false) || column.level === 1;
          colVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('li', {
            key: column.id,
            colid: column.id,
            class: ['vxe-table-custom--option', `level--${column.level}`, {
              'is--hidden': isDisabled || isHidden,
              'is--group': isColGroup
            }],
            onDragstart: sortDragstartEvent,
            onDragend: sortDragendEvent,
            onDragover: sortDragoverEvent
          }, [allowVisible ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: ['vxe-table-custom--checkbox-option', {
              'is--checked': isChecked,
              'is--indeterminate': isIndeterminate,
              'is--disabled': isDisabled
            }],
            title: panel_getI18n('vxe.custom.setting.colVisible'),
            onClick: evnt => {
              if (!isDisabled) {
                changeCheckboxOption(column, evnt);
              }
            }
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
            class: ['vxe-checkbox--icon', isIndeterminate ? panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? panel_getIcon().TABLE_CHECKBOX_CHECKED : panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
          })]) : panel_renderEmptyElement($xeTable), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom--name-option'
          }, [allowSort && showSortDragButton || allowGroup || allowValues ? showSortBtn || (allowGroup || allowValues) && !isColGroup ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom--sort-option'
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
            class: ['vxe-table-custom--sort-btn', {
              'is--disabled': isHidden
            }],
            title: panel_getI18n('vxe.custom.setting.sortHelpTip'),
            ...(isHidden ? {} : {
              onMousedown: sortMousedownEvent,
              onMouseup: sortMouseupEvent
            })
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
            class: panel_getIcon().TABLE_CUSTOM_SORT
          })])]) : panel_renderEmptyElement($xeTable) : panel_renderEmptyElement($xeTable), column.type === 'html' ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            key: '1',
            class: 'vxe-table-custom--checkbox-label',
            innerHTML: colTitle
          }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            key: '0',
            class: 'vxe-table-custom--checkbox-label'
          }, colTitle)]), showSortBtn && (showSortMoveButton || showSortPutButton) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom--move-btn-option'
          }, VxeUIButtonComponent ? [showSortMoveButton ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: 'vxe-icon-arrows-up',
            title: panel_getI18n('vxe.custom.setting.moveUpTitle'),
            disabled: index <= 0,
            onClick(evntParame) {
              sortMoveUpEvent(evntParame, column);
            }
          }) : panel_renderEmptyElement($xeTable), showSortMoveButton ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: 'vxe-icon-arrows-down',
            title: panel_getI18n('vxe.custom.setting.moveDnTitle'),
            disabled: index >= items.length - 1,
            onClick(evntParame) {
              sortMoveDnEvent(evntParame, column);
            }
          }) : panel_renderEmptyElement($xeTable), showSortPutButton && !parentItem ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: 'vxe-icon-top',
            title: panel_getI18n('vxe.custom.setting.putTopTitle'),
            disabled: index <= 0,
            onClick(evntParame) {
              sortMoveTopEvent(evntParame, column);
            }
          }) : panel_renderEmptyElement($xeTable), showSortPutButton && !parentItem ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: 'vxe-icon-bottom',
            title: panel_getI18n('vxe.custom.setting.putBottomTitle'),
            disabled: index >= items.length - 1,
            onClick(evntParame) {
              sortMoveBottomEvent(evntParame, column);
            }
          }) : panel_renderEmptyElement($xeTable)] : []) : panel_renderEmptyElement($xeTable), !parentItem && allowFixed ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom--fixed-option'
          }, VxeUIButtonComponent ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: column.renderFixed === 'left' ? panel_getIcon().TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE : panel_getIcon().TOOLBAR_TOOLS_FIXED_LEFT,
            status: column.renderFixed === 'left' ? 'primary' : '',
            disabled: isHidden || isMaxFixedColumn && !column.renderFixed,
            title: panel_getI18n(column.renderFixed === 'left' ? 'vxe.toolbar.cancelFixed' : 'vxe.toolbar.fixedLeft'),
            onClick: ({
              $event
            }) => {
              changeFixedOption(column, 'left', $event);
            }
          }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: column.renderFixed === 'right' ? panel_getIcon().TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE : panel_getIcon().TOOLBAR_TOOLS_FIXED_RIGHT,
            status: column.renderFixed === 'right' ? 'primary' : '',
            disabled: isHidden || isMaxFixedColumn && !column.renderFixed,
            title: panel_getI18n(column.renderFixed === 'right' ? 'vxe.toolbar.cancelFixed' : 'vxe.toolbar.fixedRight'),
            onClick: ({
              $event
            }) => {
              changeFixedOption(column, 'right', $event);
            }
          })] : []) : panel_renderEmptyElement($xeTable)]));
        }
      });
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        key: 'simple',
        class: ['vxe-table-custom-wrapper', `placement--${placement}`, {
          [`size--${vSize}`]: vSize,
          'is--active': customStore.visible
        }],
        style: defPopupStyle
      }, customStore.visible ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refBodyWrapperElem,
        class: 'vxe-table-custom-simple--body-wrapper'
      }, [!treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregateSimplePanel ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)($xeTable.getPivotTableAggregateSimplePanel(), {
        customStore
      }) : panel_renderEmptyElement($xeTable), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refCustomBodyElem,
        class: 'vxe-table-custom--handle-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom--header'
      }, headerSlot ? $xeTable.callSlot(headerSlot, params) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('ul', {
        class: 'vxe-table-custom--panel-list'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('li', {
        class: 'vxe-table-custom--option'
      }, [allowVisible ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: ['vxe-table-custom--checkbox-option', {
          'is--checked': isAllChecked,
          'is--indeterminate': isAllIndeterminate
        }],
        title: panel_getI18n('vxe.table.allTitle'),
        onClick: allOptionEvent
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-checkbox--icon', isAllIndeterminate ? panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? panel_getIcon().TABLE_CHECKBOX_CHECKED : panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-checkbox--label'
      }, panel_getI18n('vxe.toolbar.customAll'))]) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-checkbox--label'
      }, panel_getI18n('vxe.table.customTitle'))])])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom--body'
      }, [topSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom--panel-top'
      }, $xeTable.callSlot(topSlot, params)) : panel_renderEmptyElement($xeTable), defaultSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom--panel-body'
      }, $xeTable.callSlot(defaultSlot, params)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(external_commonjs_vue_commonjs2_vue_root_Vue_.TransitionGroup, {
        class: 'vxe-table-custom--panel-list',
        name: isCustomDragStatus ? 'vxe-table-custom--list' : '',
        tag: 'ul',
        ...customWrapperOns
      }, {
        default: () => colVNs
      }), bottomSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom--panel-bottom'
      }, $xeTable.callSlot(bottomSlot, params)) : panel_renderEmptyElement($xeTable)]), customOpts.showFooter ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom--footer'
      }, footerSlot ? $xeTable.callSlot(footerSlot, params) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table-custom--footer-buttons'
      }, [VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        mode: 'text',
        content: customOpts.resetButtonText || panel_getI18n('vxe.table.customRestore'),
        disabled: !isCustomStatus,
        onClick: resetCustomEvent
      }) : panel_renderEmptyElement($xeTable), immediate ? VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        mode: 'text',
        content: customOpts.closeButtonText || panel_getI18n('vxe.table.customClose'),
        onClick: cancelCloseEvent
      }) : panel_renderEmptyElement($xeTable) : VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        mode: 'text',
        content: customOpts.cancelButtonText || panel_getI18n('vxe.table.customCancel'),
        onClick: cancelCustomEvent
      }) : panel_renderEmptyElement($xeTable), immediate ? panel_renderEmptyElement($xeTable) : VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        mode: 'text',
        status: 'primary',
        content: customOpts.confirmButtonText || panel_getI18n('vxe.table.customConfirm'),
        onClick: confirmCustomEvent
      }) : panel_renderEmptyElement($xeTable)])]) : null]), renderDragTip()])] : []);
    };
    const renderPopupBodys = () => {
      const {
        resizable: allResizable
      } = tableProps;
      const {
        customColumnList
      } = tableReactData;
      const customOpts = computeCustomOpts.value;
      const columnDragOpts = computeColumnDragOpts.value;
      const {
        immediate,
        showSortDragButton,
        showSortMoveButton,
        showSortPutButton,
        allowVisible,
        allowSort,
        allowFixed,
        allowAlign,
        allowHeaderAlign,
        allowFooterAlign,
        allowResizable,
        allowGroup,
        allowValues,
        checkMethod,
        visibleMethod
      } = customOpts;
      const columnOpts = computeColumnOpts.value;
      const resizableOpts = computeResizableOpts.value;
      const {
        minWidth: reMinWidth,
        maxWidth: reMaxWidth
      } = resizableOpts;
      const isMaxFixedColumn = computeIsMaxFixedColumn.value;
      const {
        isCrossDrag,
        isPeerDrag
      } = columnDragOpts;
      const trVNs = [];
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(customColumnList, (column, index, items, path, parentItem) => {
        const isVisible = visibleMethod ? visibleMethod({
          $table: $xeTable,
          column
        }) : true;
        if (isVisible) {
          // 默认继承调整宽度
          let customMinWidth = 0;
          let customMaxWidth = 0;
          if (allowResizable) {
            const resizeParams = {
              $table: $xeTable,
              column,
              columnIndex: $xeTable.getColumnIndex(column),
              $columnIndex: $xeTable.getVMColumnIndex(column),
              _columnIndex: $xeTable.getVTColumnIndex(column),
              rowIndex: -1,
              _rowIndex: -1,
              $rowIndex: -1
            };
            if (reMinWidth) {
              customMinWidth = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(reMinWidth) ? reMinWidth(resizeParams) : reMinWidth);
            }
            if (reMaxWidth) {
              customMaxWidth = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(reMaxWidth) ? reMaxWidth(resizeParams) : reMaxWidth);
            }
          }
          const isChecked = column.renderVisible;
          const isIndeterminate = column.halfVisible;
          const colTitle = formatText(column.getTitle(), 1);
          const isColGroup = column.children && column.children.length;
          const isDisabled = checkMethod ? !checkMethod({
            $table: $xeTable,
            column
          }) : false;
          const isHidden = !isChecked;
          const showSortBtn = (isCrossDrag || isPeerDrag ? immediate : false) || column.level === 1;
          const alignList = [{
            icon: panel_getIcon().TABLE_CUSTOM_ALIGN_LEFT,
            value: 'left',
            title: panel_getI18n('vxe.custom.setting.anLeftTitle'),
            disabled: isHidden
          }, {
            icon: panel_getIcon().TABLE_CUSTOM_ALIGN_CENTER,
            value: 'center',
            title: panel_getI18n('vxe.custom.setting.anCenterTitle'),
            disabled: isHidden
          }, {
            icon: panel_getIcon().TABLE_CUSTOM_ALIGN_RIGHT,
            value: 'right',
            title: panel_getI18n('vxe.custom.setting.anRightTitle'),
            disabled: isHidden
          }];
          const tdVNs = [];
          if (allowVisible) {
            tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
              key: 'av',
              class: 'vxe-table-custom-popup--column-td col--visible'
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: ['vxe-table-custom--checkbox-option', {
                'is--checked': isChecked,
                'is--indeterminate': isIndeterminate,
                'is--disabled': isDisabled
              }],
              title: panel_getI18n('vxe.custom.setting.colVisible'),
              onClick: evnt => {
                if (!isDisabled) {
                  changeCheckboxOption(column, evnt);
                }
              }
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
              class: ['vxe-checkbox--icon', isIndeterminate ? panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? panel_getIcon().TABLE_CHECKBOX_CHECKED : panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
            })])]));
          }
          tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
            key: 'at',
            class: 'vxe-table-custom-popup--column-td col--name'
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom-popup--name'
          }, [allowSort && showSortDragButton || allowGroup || allowValues ? showSortBtn || (allowGroup || allowValues) && !isColGroup ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: ['vxe-table-custom-popup--column-sort-btn', {
              'is--disabled': isHidden
            }],
            title: panel_getI18n('vxe.custom.setting.sortHelpTip'),
            ...(isHidden ? {} : {
              onMousedown: sortMousedownEvent,
              onMouseup: sortMouseupEvent
            })
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
            class: panel_getIcon().TABLE_CUSTOM_SORT
          })]) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom-popup--column-sort-placeholder'
          }) : panel_renderEmptyElement($xeTable), column.type === 'html' ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            key: '1',
            class: 'vxe-table-custom-popup--title',
            innerHTML: colTitle
          }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            key: '0',
            class: 'vxe-table-custom-popup--title',
            title: colTitle
          }, colTitle), showSortBtn && (showSortMoveButton || showSortPutButton) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom-popup--move-btn'
          }, VxeUIButtonComponent ? [showSortMoveButton ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: 'vxe-icon-arrows-up',
            title: panel_getI18n('vxe.custom.setting.moveUpTitle'),
            disabled: index <= 0,
            onClick(evntParame) {
              sortMoveUpEvent(evntParame, column);
            }
          }) : panel_renderEmptyElement($xeTable), showSortMoveButton ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: 'vxe-icon-arrows-down',
            title: panel_getI18n('vxe.custom.setting.moveDnTitle'),
            disabled: index >= items.length - 1,
            onClick(evntParame) {
              sortMoveDnEvent(evntParame, column);
            }
          }) : panel_renderEmptyElement($xeTable), showSortPutButton && !parentItem ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: 'vxe-icon-top',
            title: panel_getI18n('vxe.custom.setting.putTopTitle'),
            disabled: index <= 0,
            onClick(evntParame) {
              sortMoveTopEvent(evntParame, column);
            }
          }) : panel_renderEmptyElement($xeTable), showSortPutButton && !parentItem ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            mode: 'text',
            icon: 'vxe-icon-bottom',
            title: panel_getI18n('vxe.custom.setting.putBottomTitle'),
            disabled: index >= items.length - 1,
            onClick(evntParame) {
              sortMoveBottomEvent(evntParame, column);
            }
          }) : panel_renderEmptyElement($xeTable)] : []) : panel_renderEmptyElement($xeTable)])]));
          if (allowResizable) {
            tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
              key: 'aw',
              class: 'vxe-table-custom-popup--column-td col--resizable'
            }, [column.children && column.children.length || !(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(column.resizable) ? column.resizable : columnOpts.resizable || allResizable) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', '-') : VxeUINumberInputComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUINumberInputComponent, {
              type: 'integer',
              immediate: false,
              disabled: isHidden,
              modelValue: column.renderResizeWidth,
              min: customMinWidth || 0,
              max: customMaxWidth || 9999,
              'onUpdate:modelValue'(value) {
                const width = Math.max(0, Number(value));
                column.renderResizeWidth = width;
              },
              onChange() {
                changeColumnWidth(column);
              }
            }) : panel_renderEmptyElement($xeTable)]));
          }
          if (allowFixed) {
            tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
              key: 'af',
              class: 'vxe-table-custom-popup--column-td col--fixed'
            }, parentItem ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', '-')] : VxeUIRadioGroupComponent ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
              icon: column.renderFixed === 'left' ? panel_getIcon().TOOLBAR_TOOLS_FIXED_LEFT_ACTIVE : panel_getIcon().TOOLBAR_TOOLS_FIXED_LEFT,
              status: column.renderFixed === 'left' ? 'primary' : '',
              disabled: isHidden || isMaxFixedColumn && !column.renderFixed,
              title: panel_getI18n(column.renderFixed === 'left' ? 'vxe.toolbar.cancelFixed' : 'vxe.toolbar.fixedLeft'),
              onClick: ({
                $event
              }) => {
                changeFixedOption(column, 'left', $event);
              }
            }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
              icon: column.renderFixed === 'right' ? panel_getIcon().TOOLBAR_TOOLS_FIXED_RIGHT_ACTIVE : panel_getIcon().TOOLBAR_TOOLS_FIXED_RIGHT,
              status: column.renderFixed === 'right' ? 'primary' : '',
              disabled: isHidden || isMaxFixedColumn && !column.renderFixed,
              title: panel_getI18n(column.renderFixed === 'right' ? 'vxe.toolbar.cancelFixed' : 'vxe.toolbar.fixedRight'),
              onClick: ({
                $event
              }) => {
                changeFixedOption(column, 'right', $event);
              }
            })] : []));
          }
          if (allowAlign) {
            tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
              key: 'aa',
              class: 'vxe-table-custom-popup--column-td col--align'
            }, VxeUIRadioGroupComponent ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIRadioGroupComponent, {
              modelValue: column.renderAlign || 'left',
              type: 'button',
              strict: false,
              disabled: isHidden,
              options: alignList,
              onChange({
                value,
                $event
              }) {
                changeAlignOption(column, value, 'align', 'renderAlign', 'custom-align-change', $event);
              }
            })] : []));
          }
          if (allowHeaderAlign) {
            tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
              key: 'aha',
              class: 'vxe-table-custom-popup--column-td col--header-align'
            }, isColGroup ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', '-')] : VxeUIRadioGroupComponent ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIRadioGroupComponent, {
              modelValue: column.renderHeaderAlign || 'left',
              type: 'button',
              strict: false,
              disabled: isHidden,
              options: alignList,
              onChange({
                value,
                $event
              }) {
                changeAlignOption(column, value, 'headerAlign', 'renderHeaderAlign', 'custom-header-align-change', $event);
              }
            })] : []));
          }
          if (allowFooterAlign) {
            tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
              key: 'afa',
              class: 'vxe-table-custom-popup--column-td col--footer-align'
            }, isColGroup ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', '-')] : VxeUIRadioGroupComponent ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIRadioGroupComponent, {
              modelValue: column.renderFooterAlign || 'left',
              type: 'button',
              strict: false,
              disabled: isHidden,
              options: alignList,
              onChange({
                value,
                $event
              }) {
                changeAlignOption(column, value, 'footerAlign', 'renderFooterAlign', 'custom-footer-align-change', $event);
              }
            })] : []));
          }
          trVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
            key: column.id,
            colid: column.id,
            class: [`vxe-table-custom-popup--row level--${column.level}`, {
              'is--group': isColGroup
            }],
            onDragstart: sortDragstartEvent,
            onDragend: sortDragendEvent,
            onDragover: sortDragoverEvent
          }, tdVNs));
        }
      });
      return trVNs;
    };
    const renderPopupPanel = () => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        customStore
      } = props;
      const {
        treeConfig,
        rowGroupConfig,
        aggregateConfig
      } = tableProps;
      const {
        isCustomStatus,
        customColumnList
      } = tableReactData;
      const vSize = computeSize.value;
      const customOpts = computeCustomOpts.value;
      const aggregateOpts = computeAggregateOpts.value;
      const {
        panePopupStyle
      } = customStore;
      const {
        placement: aggPlacement
      } = aggregateOpts;
      const {
        mode,
        immediate,
        modalOptions,
        drawerOptions,
        allowVisible,
        allowFixed,
        allowAlign,
        allowHeaderAlign,
        allowFooterAlign,
        allowResizable
      } = customOpts;
      const columnOpts = computeColumnOpts.value;
      const {
        maxFixedSize
      } = columnOpts;
      const modalOpts = Object.assign({}, modalOptions);
      const drawerOpts = Object.assign({}, drawerOptions);
      const slots = customOpts.slots || {};
      const headerSlot = slots.header;
      const topSlot = slots.top;
      const bottomSlot = slots.bottom;
      const defaultSlot = slots.default;
      const footerSlot = slots.footer;
      const isAllChecked = customStore.isAll;
      const isAllIndeterminate = customStore.isIndeterminate;
      const isAggRtBmLayout = aggPlacement === 'right' || aggPlacement === 'bottom';
      const params = {
        $table: $xeTable,
        $grid: $xeGrid,
        $gantt: $xeGantt,
        columns: customColumnList,
        isAllChecked,
        isAllIndeterminate,
        isCustomStatus
      };
      const colVNs = [];
      const headVNs = [];
      if (allowVisible) {
        colVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          key: 'av',
          class: 'vxe-table-custom-popup--column-col col--checkbox'
        }));
        headVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
          key: 'av',
          class: 'vxe-table-custom-popup--column-th col--checkbox'
        }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: ['vxe-table-custom--checkbox-option', {
            'is--checked': isAllChecked,
            'is--indeterminate': isAllIndeterminate
          }],
          title: panel_getI18n('vxe.table.allTitle'),
          onClick: allOptionEvent
        }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
          class: ['vxe-checkbox--icon', isAllIndeterminate ? panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? panel_getIcon().TABLE_CHECKBOX_CHECKED : panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
        })
        // h('span', {
        //   class: 'vxe-checkbox--label'
        // }, getI18n('vxe.toolbar.customAll'))
        ])]));
      }
      colVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
        key: 'at',
        class: 'vxe-table-custom-popup--column-col col--title'
      }));
      headVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
        key: 'at',
        class: 'vxe-table-custom-popup--column-th col--title'
      }, panel_getI18n('vxe.custom.setting.colTitle')));
      if (allowResizable) {
        colVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          key: 'aw',
          class: 'vxe-table-custom-popup--column-col col--width'
        }));
        headVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
          key: 'aw',
          class: 'vxe-table-custom-popup--column-th col--width'
        }, panel_getI18n('vxe.custom.setting.colResizable')));
      }
      if (allowFixed) {
        colVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          key: 'af',
          class: 'vxe-table-custom-popup--column-col col--fixed'
        }));
        headVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
          key: 'af',
          class: 'vxe-table-custom-popup--column-th col--fixed'
        }, panel_getI18n(`vxe.custom.setting.${maxFixedSize ? 'colFixedMax' : 'colFixed'}`, [maxFixedSize])));
      }
      if (allowAlign) {
        colVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          key: 'aa',
          class: 'vxe-table-custom-popup--column-col col--align'
        }));
        headVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
          key: 'aa',
          class: 'vxe-table-custom-popup--column-th col--align'
        }, panel_getI18n('vxe.custom.setting.colAlign')));
      }
      if (allowHeaderAlign) {
        colVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          key: 'aha',
          class: 'vxe-table-custom-popup--column-col col--header-align'
        }));
        headVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
          key: 'aha',
          class: 'vxe-table-custom-popup--column-th col--header-align'
        }, panel_getI18n('vxe.custom.setting.colHeadAlign')));
      }
      if (allowFooterAlign) {
        colVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          key: 'afa',
          class: 'vxe-table-custom-popup--column-col col--footer-align'
        }));
        headVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
          key: 'afa',
          class: 'vxe-table-custom-popup--column-th col--footer-align'
        }, panel_getI18n('vxe.custom.setting.colFootAlign')));
      }
      const scopedSlots = {
        default: () => {
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            ref: refBodyWrapperElem,
            class: ['vxe-table-custom-popup--body-wrapper', `agg-layout--${aggPlacement}`, {
              [`size--${vSize}`]: vSize
            }],
            style: panePopupStyle
          }, defaultSlot ? $xeTable.callSlot(defaultSlot, params) : [!isAggRtBmLayout && !treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregatePopupPanel ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)($xeTable.getPivotTableAggregatePopupPanel(), {
            customStore
          }) : panel_renderEmptyElement($xeTable), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            ref: refCustomBodyElem,
            class: 'vxe-table-custom-popup--handle-wrapper'
          }, [topSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom-popup--table-top'
          }, $xeTable.callSlot(topSlot, params)) : panel_renderEmptyElement($xeTable), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom-popup--table-wrapper'
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('table', {}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('colgroup', {}, colVNs), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('thead', {}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {}, headVNs)]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(external_commonjs_vue_commonjs2_vue_root_Vue_.TransitionGroup, {
            class: 'vxe-table-custom--panel-list',
            tag: 'tbody',
            name: 'vxe-table-custom--list'
          }, {
            default: () => renderPopupBodys()
          })])]), bottomSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom-popup--table-bottom'
          }, $xeTable.callSlot(bottomSlot, params)) : panel_renderEmptyElement($xeTable), renderDragTip()]), isAggRtBmLayout && !treeConfig && (aggregateConfig || rowGroupConfig) && $xeTable.getPivotTableAggregatePopupPanel ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)($xeTable.getPivotTableAggregatePopupPanel(), {
            customStore
          }) : panel_renderEmptyElement($xeTable)]);
        },
        footer: () => {
          if (footerSlot) {
            return $xeTable.callSlot(footerSlot, params);
          }
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-custom-popup--footer'
          }, [VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            content: customOpts.resetButtonText || panel_getI18n('vxe.custom.cstmRestore'),
            disabled: !isCustomStatus,
            onClick: resetCustomEvent
          }) : panel_renderEmptyElement($xeTable), immediate ? VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            status: 'primary',
            content: customOpts.closeButtonText || panel_getI18n('vxe.table.customClose'),
            onClick: cancelCloseEvent
          }) : panel_renderEmptyElement($xeTable) : VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            content: customOpts.cancelButtonText || panel_getI18n('vxe.table.customCancel'),
            onClick: cancelCustomEvent
          }) : panel_renderEmptyElement($xeTable), immediate ? panel_renderEmptyElement($xeTable) : VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            status: 'primary',
            content: customOpts.confirmButtonText || panel_getI18n('vxe.custom.cstmConfirm'),
            onClick: confirmCustomEvent
          }) : panel_renderEmptyElement($xeTable)]);
        }
      };
      if (headerSlot) {
        scopedSlots.header = () => $xeTable.callSlot(headerSlot, params);
      }
      if (mode === 'drawer') {
        return VxeUIDrawerComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIDrawerComponent, {
          key: 'drawer',
          className: ['vxe-table-custom-drawer-wrapper', 'vxe-table--ignore-clear', drawerOpts.className || ''].join(' '),
          modelValue: customStore.visible,
          title: drawerOpts.title || panel_getI18n('vxe.custom.cstmTitle'),
          width: drawerOpts.width || Math.min(880, Math.floor(document.documentElement.clientWidth * 0.6)),
          position: drawerOpts.position,
          resize: !!drawerOpts.resize,
          escClosable: !!drawerOpts.escClosable,
          maskClosable: !!drawerOpts.maskClosable,
          destroyOnClose: true,
          showFooter: true,
          'onUpdate:modelValue'(value) {
            customStore.visible = value;
          }
        }, scopedSlots) : panel_renderEmptyElement($xeTable);
      }
      return VxeUIModalComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIModalComponent, {
        key: 'modal',
        className: ['vxe-table-custom-modal-wrapper', 'vxe-table--ignore-clear', modalOpts.className || ''].join(' '),
        modelValue: customStore.visible,
        title: modalOpts.title || panel_getI18n('vxe.custom.cstmTitle'),
        width: modalOpts.width || Math.min(1000, document.documentElement.clientWidth),
        minWidth: modalOpts.minWidth || 800,
        height: modalOpts.height || Math.min(680, document.documentElement.clientHeight),
        minHeight: modalOpts.minHeight || 400,
        showZoom: modalOpts.showZoom,
        showMaximize: modalOpts.showMaximize,
        showMinimize: modalOpts.showMinimize,
        mask: modalOpts.mask,
        lockView: modalOpts.lockView,
        resize: modalOpts.resize,
        transfer: modalOpts.transfer,
        escClosable: !!modalOpts.escClosable,
        maskClosable: !!modalOpts.maskClosable,
        destroyOnClose: true,
        showFooter: true,
        'onUpdate:modelValue'(value) {
          customStore.visible = value;
        }
      }, scopedSlots) : panel_renderEmptyElement($xeTable);
    };
    const renderVN = () => {
      const customOpts = computeCustomOpts.value;
      if (['modal', 'drawer', 'popup'].includes(`${customOpts.mode}`)) {
        return renderPopupPanel();
      }
      return renderSimplePanel();
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
      const customOpts = computeCustomOpts.value;
      const {
        mode
      } = customOpts;
      if (!VxeUIModalComponent && mode === 'modal') {
        panel_errLog('vxe.error.reqComp', ['vxe-modal']);
      }
      if (!VxeUIDrawerComponent && mode === 'drawer') {
        panel_errLog('vxe.error.reqComp', ['vxe-drawer']);
      }
      if (!VxeUIButtonComponent) {
        panel_errLog('vxe.error.reqComp', ['vxe-button']);
      }
      if (!VxeUINumberInputComponent) {
        panel_errLog('vxe.error.reqComp', ['vxe-number-input']);
      }
      if (!VxeUIRadioGroupComponent) {
        panel_errLog('vxe.error.reqComp', ['vxe-radio-group']);
      }
    });
    const $xeTableCustomPanel = {
      xID,
      props,
      context,
      reactData: customPanelReactData,
      internalData: customPanelInternalData,
      xeTable: $xeTable,
      getRefMaps: () => refMaps,
      getComputeMaps: () => computeMaps,
      renderVN
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      customPanelInternalData = panel_createInternalData();
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeTableCustomPanel', $xeTableCustomPanel);
    return $xeTableCustomPanel;
  },
  render() {
    return this.renderVN();
  }
}));
;// ./packages/table/module/filter/panel.ts













const {
  warnLog: panel_warnLog
} = createComponentLog('table');
const {
  getI18n: filter_panel_getI18n,
  getIcon: filter_panel_getIcon,
  renderer: panel_renderer,
  renderEmptyElement: filter_panel_renderEmptyElement
} = core_.VxeUI;
/* harmony default export */ var filter_panel = (defineVxeComponent({
  name: 'VxeTableFilterPanel',
  props: {
    filterStore: {
      type: Object,
      default: () => ({})
    }
  },
  setup(props, context) {
    const xID = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId();
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', {});
    const {
      reactData: tableReactData,
      internalData: tableInternalData,
      getComputeMaps
    } = $xeTable;
    const {
      computeFilterOpts
    } = getComputeMaps();
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refMaps = {
      refElem
    };
    const $xeFilterPanel = {
      xID,
      props,
      context,
      getRefMaps: () => refMaps
    };
    const computeHasCheckOption = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        filterStore
      } = props;
      const {
        column
      } = filterStore;
      return column && column.filters && column.filters.some(option => option.checked);
    });
    // 全部筛选事件
    const filterCheckAllEvent = (evnt, value) => {
      const {
        filterStore
      } = props;
      const {
        column
      } = filterStore;
      if (column && column.filters) {
        column.filters.forEach(option => {
          option._checked = value;
          option.checked = value;
        });
      }
      filterStore.isAllSelected = value;
      filterStore.isIndeterminate = false;
    };
    /*************************
     * Publish methods
     *************************/
    // 确认筛选
    const confirmFilter = evnt => {
      const {
        filterStore
      } = props;
      if (!evnt) {
        panel_warnLog('vxe.error.delFunc', ['confirmFilter', 'saveFilterPanelByEvent']);
      }
      $xeTable.handleFilterConfirmFilter(evnt || new Event('click'), filterStore.column || null);
    };
    // (单选)筛选发生改变
    const changeRadioOption = (evnt, checked, item) => {
      $xeTable.handleFilterChangeRadioOption(evnt, checked, item);
    };
    /**
     * 重置筛选
     * 当筛选面板中的重置按钮被按下时触发
     * @param {Event} evnt 事件
     */
    const resetFilter = evnt => {
      const {
        filterStore
      } = props;
      $xeTable.handleFilterResetFilter(evnt, filterStore.column || null);
    };
    // (多选)筛选发生改变
    const changeMultipleOption = (evnt, checked, item) => {
      $xeTable.handleFilterChangeMultipleOption(evnt, checked, item);
    };
    // 筛选发生改变
    const changeOption = (evnt, checked, item) => {
      $xeTable.handleFilterChangeOption(evnt, checked, item);
    };
    const changeAllOption = (evnt, checked) => {
      const {
        filterStore
      } = props;
      const {
        column
      } = filterStore;
      if (column && column.filterMultiple) {
        filterCheckAllEvent(evnt, checked);
      } else {
        resetFilter(evnt);
      }
    };
    /*************************
     * Publish methods
     *************************/
    const filterPanelMethods = {
      changeRadioOption,
      changeMultipleOption,
      changeAllOption,
      changeOption,
      confirmFilter,
      resetFilter
    };
    Object.assign($xeFilterPanel, filterPanelMethods);
    const renderOptions = (filterRender, compConf) => {
      const {
        filterStore
      } = props;
      const {
        column,
        maxHeight
      } = filterStore;
      if (!column) {
        return [];
      }
      const {
        filterMultiple,
        filters,
        slots
      } = column;
      const filterOptions = filters || [];
      const filterSlot = slots ? slots.filter : null;
      const params = Object.assign({}, tableInternalData._currFilterParams, {
        option: filterOptions[0],
        $panel: $xeFilterPanel,
        $table: $xeTable
      });
      const rtFilter = compConf ? compConf.renderTableFilter || compConf.renderFilter : null;
      if (filterSlot) {
        return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: 'vxe-table--filter-template',
          style: maxHeight ? {
            maxHeight: toCssUnit(maxHeight)
          } : {}
        }, $xeTable.callSlot(filterSlot, params))];
      } else if (filterRender && rtFilter) {
        return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: 'vxe-table--filter-template',
          style: maxHeight ? {
            maxHeight: toCssUnit(maxHeight)
          } : {}
        }, getSlotVNs(rtFilter(filterRender, params)))];
      }
      const isAllChecked = filterMultiple ? filterStore.isAllSelected : !filterOptions.some(item => item._checked);
      const isAllIndeterminate = filterMultiple && filterStore.isIndeterminate;
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('ul', {
        class: 'vxe-table--filter-header'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('li', {
        class: ['vxe-table--filter-option', {
          'is--checked': isAllChecked,
          'is--indeterminate': isAllIndeterminate
        }],
        title: filter_panel_getI18n(filterMultiple ? 'vxe.table.allTitle' : 'vxe.table.allFilter'),
        onClick: evnt => {
          changeAllOption(evnt, !filterStore.isAllSelected);
        }
      }, (filterMultiple ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: ['vxe-checkbox--icon', isAllIndeterminate ? filter_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? filter_panel_getIcon().TABLE_CHECKBOX_CHECKED : filter_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
      })] : []).concat([(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-checkbox--label'
      }, filter_panel_getI18n('vxe.table.allFilter'))]))]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('ul', {
        class: 'vxe-table--filter-body',
        style: maxHeight ? {
          maxHeight: toCssUnit(maxHeight)
        } : {}
      }, filterOptions.map(item => {
        const isChecked = item._checked;
        const isIndeterminate = false;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('li', {
          class: ['vxe-table--filter-option', {
            'is--checked': item._checked
          }],
          title: item.label,
          onClick: evnt => {
            changeOption(evnt, !item._checked, item);
          }
        }, (filterMultiple ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
          class: ['vxe-checkbox--icon', isIndeterminate ? filter_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? filter_panel_getIcon().TABLE_CHECKBOX_CHECKED : filter_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
        })] : []).concat([(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
          class: 'vxe-checkbox--label'
        }, formatText(item.label, 1))]));
      }))];
    };
    const renderFooters = () => {
      const {
        filterStore
      } = props;
      const {
        column
      } = filterStore;
      if (!column) {
        return [];
      }
      const filterOpts = computeFilterOpts.value;
      const hasCheckOption = computeHasCheckOption.value;
      const {
        filterRender,
        filterMultiple
      } = column;
      const {
        confirmButtonText,
        resetButtonText,
        showFooter
      } = filterOpts;
      const compConf = isEnableConf(filterRender) ? panel_renderer.get(filterRender.name) : null;
      const isDisabled = !hasCheckOption && !filterStore.isAllSelected && !filterStore.isIndeterminate;
      let showFlFoot = !!filterMultiple;
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(showFooter)) {
        showFlFoot = showFooter;
      } else if (compConf) {
        showFlFoot = !(compConf.showTableFilterFooter === false || compConf.showFilterFooter === false || compConf.isFooter === false);
      }
      return showFlFoot ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-table--filter-footer'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('button', {
        class: {
          'is--disabled': isDisabled
        },
        disabled: isDisabled,
        onClick: confirmFilter
      }, confirmButtonText || filter_panel_getI18n('vxe.table.confirmFilter')), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('button', {
        onClick: resetFilter
      }, resetButtonText || filter_panel_getI18n('vxe.table.resetFilter'))])] : [];
    };
    const renderVN = () => {
      const {
        filterStore
      } = props;
      const {
        initStore
      } = tableReactData;
      const {
        visible,
        column
      } = filterStore;
      if (!column) {
        return filter_panel_renderEmptyElement($xeFilterPanel);
      }
      const filterRender = column ? column.filterRender : null;
      const compConf = filterRender && isEnableConf(filterRender) ? panel_renderer.get(filterRender.name) : null;
      const filterClassName = compConf ? compConf.tableFilterClassName || compConf.filterClassName : '';
      const params = Object.assign({}, tableInternalData._currFilterParams, {
        $panel: $xeFilterPanel,
        $table: $xeTable
      });
      const tableProps = $xeTable.props;
      const {
        computeSize
      } = $xeTable.getComputeMaps();
      const vSize = computeSize.value;
      const filterOpts = computeFilterOpts.value;
      const {
        transfer,
        destroyOnClose,
        className
      } = filterOpts;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(external_commonjs_vue_commonjs2_vue_root_Vue_.Teleport, {
        to: 'body',
        disabled: !transfer
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-table--filter-wrapper', 'filter--prevent-default', className, getPropClass(filterClassName, params), {
          [`size--${vSize}`]: vSize,
          'is--animat': tableProps.animat,
          'is--multiple': column.filterMultiple,
          'is--active': visible
        }],
        style: filterStore.style
      }, initStore.filter && (destroyOnClose ? visible : true) && column ? renderOptions(filterRender, compConf).concat(renderFooters()) : [])]);
    };
    $xeFilterPanel.renderVN = renderVN;
    return $xeFilterPanel;
  },
  render() {
    return this.renderVN();
  }
}));
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.find.js
var es_iterator_find = __webpack_require__(116);
;// ./packages/table/module/export/import-panel.ts









const {
  errLog: import_panel_errLog
} = createComponentLog('table');
const {
  getI18n: import_panel_getI18n,
  getIcon: import_panel_getIcon,
  renderEmptyElement: import_panel_renderEmptyElement
} = core_.VxeUI;
/* harmony default export */ var import_panel = (defineVxeComponent({
  name: 'VxeTableImportPanel',
  props: {
    defaultOptions: {
      type: Object,
      default: () => ({})
    },
    storeData: {
      type: Object,
      default: () => ({})
    }
  },
  setup(props) {
    const VxeUIModalComponent = core_.VxeUI.getComponent('VxeModal');
    const VxeUIButtonComponent = core_.VxeUI.getComponent('VxeButton');
    const VxeUISelectComponent = core_.VxeUI.getComponent('VxeSelect');
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', {});
    const {
      computeImportOpts
    } = $xeTable.getComputeMaps();
    const reactData = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)({
      loading: false
    });
    const refFileBtn = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const computeSelectName = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        storeData
      } = props;
      return `${storeData.filename}.${storeData.type}`;
    });
    const computeHasFile = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        storeData
      } = props;
      return storeData.file && storeData.type;
    });
    const computeParseTypeLabel = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        storeData
      } = props;
      const {
        type,
        typeList
      } = storeData;
      if (type) {
        const selectItem = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().find(typeList, item => type === item.value);
        return `${selectItem ? selectItem.label : '*.*'}`;
      }
      return `*.${typeList.map(item => item.value).join(', *.')}`;
    });
    const clearFileEvent = () => {
      const {
        storeData
      } = props;
      Object.assign(storeData, {
        filename: '',
        sheetName: '',
        type: ''
      });
    };
    const selectFileEvent = () => {
      const {
        storeData,
        defaultOptions
      } = props;
      $xeTable.readFile(defaultOptions).then(params => {
        const {
          file
        } = params;
        Object.assign(storeData, parseFile(file), {
          file
        });
      }).catch(() => {});
    };
    const showEvent = () => {
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
        const targetElem = refFileBtn.value;
        if (targetElem) {
          targetElem.focus();
        }
      });
    };
    const cancelEvent = () => {
      const {
        storeData
      } = props;
      storeData.visible = false;
    };
    const importEvent = () => {
      const {
        storeData,
        defaultOptions
      } = props;
      const importOpts = computeImportOpts.value;
      reactData.loading = true;
      $xeTable.importByFile(storeData.file, Object.assign({}, importOpts, defaultOptions)).then(() => {
        reactData.loading = false;
        storeData.visible = false;
      }).catch(() => {
        reactData.loading = false;
      });
    };
    const renderVN = () => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        defaultOptions,
        storeData
      } = props;
      const selectName = computeSelectName.value;
      const hasFile = computeHasFile.value;
      const importOpts = computeImportOpts.value;
      const parseTypeLabel = computeParseTypeLabel.value;
      const modelOptions = importOpts.modelOptions || {};
      const settingOptions = importOpts.settingOptions || {};
      const slots = defaultOptions.slots || {};
      const topSlot = slots.top;
      const bottomSlot = slots.bottom;
      const defaultSlot = slots.default;
      const footerSlot = slots.footer;
      return VxeUIModalComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIModalComponent, {
        id: 'VXE_IMPORT_MODAL',
        modelValue: storeData.visible,
        title: modelOptions.title || import_panel_getI18n('vxe.import.impTitle'),
        className: 'vxe-table-export-popup-wrapper',
        width: modelOptions.width || 540,
        height: modelOptions.height,
        minWidth: modelOptions.minWidth || 360,
        minHeight: modelOptions.minHeight || 240,
        mask: getDefaultConfig(modelOptions.mask, true),
        lockView: getDefaultConfig(modelOptions.lockView, true),
        showFooter: true,
        escClosable: true,
        maskClosable: true,
        position: modelOptions.position,
        fullscreen: modelOptions.fullscreen,
        remember: modelOptions.remember,
        showMinimize: modelOptions.showMinimize,
        showMaximize: getDefaultConfig(modelOptions.showMaximize, true),
        resize: getDefaultConfig(modelOptions.resize, true),
        loading: reactData.loading,
        'onUpdate:modelValue'(value) {
          storeData.visible = value;
        },
        onShow: showEvent
      }, {
        default: () => {
          const params = {
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt,
            options: defaultOptions,
            params: defaultOptions.params
          };
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel'
          }, [topSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-top'
          }, $xeTable.callSlot(topSlot, params)) : import_panel_renderEmptyElement($xeTable), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-body'
          }, defaultSlot ? $xeTable.callSlot(defaultSlot, params) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('table', {
            class: 'vxe-table-export--panel-table',
            cellspacing: 0,
            cellpadding: 0,
            border: 0
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tbody', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', import_panel_getI18n('vxe.import.impFile')), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [hasFile ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--selected--file',
            title: selectName
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', selectName), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
            class: import_panel_getIcon().INPUT_CLEAR,
            onClick: clearFileEvent
          })]) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('button', {
            ref: refFileBtn,
            class: 'vxe-table-export--select--file',
            onClick: selectFileEvent
          }, import_panel_getI18n('vxe.import.impSelect'))])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', import_panel_getI18n('vxe.import.impType')), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', parseTypeLabel)]), settingOptions.showMode === false ? import_panel_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', import_panel_getI18n('vxe.import.impMode')), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [VxeUISelectComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUISelectComponent, {
            modelValue: defaultOptions.mode,
            options: storeData.modeList,
            'onUpdate:modelValue'(value) {
              defaultOptions.mode = value;
            }
          }) : import_panel_renderEmptyElement($xeTable)])])])])]), bottomSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-bottom'
          }, $xeTable.callSlot(bottomSlot, params)) : import_panel_renderEmptyElement($xeTable)]);
        },
        footer() {
          const params = {
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt,
            options: defaultOptions,
            params: defaultOptions.params
          };
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-footer'
          }, footerSlot ? $xeTable.callSlot(footerSlot, params) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-btns'
          }, [VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            content: import_panel_getI18n('vxe.import.impCancel'),
            onClick: cancelEvent
          }) : import_panel_renderEmptyElement($xeTable), VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            status: 'primary',
            disabled: !hasFile || reactData.loading,
            content: import_panel_getI18n('vxe.import.impConfirm'),
            onClick: importEvent
          }) : import_panel_renderEmptyElement($xeTable)])]);
        }
      }) : import_panel_renderEmptyElement($xeTable);
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
      if (!VxeUIModalComponent) {
        import_panel_errLog('vxe.error.reqComp', ['vxe-modal']);
      }
      if (!VxeUIButtonComponent) {
        import_panel_errLog('vxe.error.reqComp', ['vxe-button']);
      }
      if (!VxeUISelectComponent) {
        import_panel_errLog('vxe.error.reqComp', ['vxe-select']);
      }
    });
    return renderVN;
  }
}));
;// ./packages/table/module/export/export-panel.ts











const {
  errLog: export_panel_errLog
} = createComponentLog('table');
const {
  getI18n: export_panel_getI18n,
  getIcon: export_panel_getIcon,
  renderEmptyElement: export_panel_renderEmptyElement
} = core_.VxeUI;
/* harmony default export */ var export_panel = (defineVxeComponent({
  name: 'VxeTableExportPanel',
  props: {
    defaultOptions: {
      type: Object,
      default: () => ({})
    },
    storeData: {
      type: Object,
      default: () => ({})
    }
  },
  setup(props) {
    const VxeUIModalComponent = core_.VxeUI.getComponent('VxeModal');
    const VxeUIButtonComponent = core_.VxeUI.getComponent('VxeButton');
    const VxeUISelectComponent = core_.VxeUI.getComponent('VxeSelect');
    const VxeUIInputComponent = core_.VxeUI.getComponent('VxeInput');
    const VxeUICheckboxComponent = core_.VxeUI.getComponent('VxeCheckbox');
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', {});
    const {
      computeExportOpts,
      computePrintOpts
    } = $xeTable.getComputeMaps();
    const reactData = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)({
      isAll: false,
      isIndeterminate: false,
      loading: false
    });
    const xButtonConfirm = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const xInputFilename = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const xInputSheetname = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const computeColWidthModeOptions = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return [{
        value: '',
        label: export_panel_getI18n('vxe.export.wdModes.default')
      }, {
        value: 'auto',
        label: export_panel_getI18n('vxe.export.wdModes.auto')
      }, {
        value: 'scale',
        label: export_panel_getI18n('vxe.export.wdModes.scale')
      }];
    });
    const computeCheckedAll = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        storeData
      } = props;
      return storeData.columns.every(column => column.checked);
    });
    const computeShowSheet = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        defaultOptions
      } = props;
      return ['html', 'xml', 'xlsx', 'pdf'].indexOf(defaultOptions.type) > -1;
    });
    const computeSupportMerge = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        storeData,
        defaultOptions
      } = props;
      return !defaultOptions.original && defaultOptions.mode === 'current' && (storeData.isPrint || ['html', 'xlsx'].indexOf(defaultOptions.type) > -1);
    });
    // const computeSupportGroup = computed(() => {
    //   const { defaultOptions } = props
    //   return ['html', 'xlsx', 'csv', 'txt'].indexOf(defaultOptions.type) > -1
    // })
    const computeSupportStyle = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        defaultOptions
      } = props;
      return !defaultOptions.original && ['xlsx'].indexOf(defaultOptions.type) > -1;
    });
    const handleOptionCheck = column => {
      const {
        storeData
      } = props;
      const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(storeData.columns, item => item === column);
      if (matchObj && matchObj.parent) {
        const {
          parent
        } = matchObj;
        if (parent.children && parent.children.length) {
          parent.checked = parent.children.every(column => column.checked);
          parent.halfChecked = !parent.checked && parent.children.some(column => column.checked || column.halfChecked);
          handleOptionCheck(parent);
        }
      }
    };
    const checkStatus = () => {
      const {
        storeData
      } = props;
      const columns = storeData.columns;
      reactData.isAll = columns.every(column => column.disabled || column.checked);
      reactData.isIndeterminate = !reactData.isAll && columns.some(column => !column.disabled && (column.checked || column.halfChecked));
    };
    const changeOption = column => {
      const isChecked = !column.checked;
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], item => {
        item.checked = isChecked;
        item.halfChecked = false;
      });
      handleOptionCheck(column);
      checkStatus();
    };
    const allColumnEvent = () => {
      const {
        storeData
      } = props;
      const isAll = !reactData.isAll;
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(storeData.columns, column => {
        if (!column.disabled) {
          column.checked = isAll;
          column.halfChecked = false;
        }
      });
      reactData.isAll = isAll;
      checkStatus();
    };
    const showEvent = () => {
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
        const filenameInp = xInputFilename.value;
        const sheetnameInp = xInputSheetname.value;
        const confirmBtn = xButtonConfirm.value;
        const targetElem = filenameInp || sheetnameInp || confirmBtn;
        if (targetElem) {
          targetElem.focus();
        }
      });
      checkStatus();
    };
    const getExportOption = () => {
      const {
        storeData,
        defaultOptions
      } = props;
      const {
        hasMerge,
        columns
      } = storeData;
      const checkedAll = computeCheckedAll.value;
      const supportMerge = computeSupportMerge.value;
      const expColumns = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(columns, column => column.checked, {
        children: 'children',
        mapChildren: 'childNodes',
        original: true
      });
      return Object.assign({}, defaultOptions, {
        columns: expColumns,
        isMerge: hasMerge && supportMerge && checkedAll ? defaultOptions.isMerge : false
      });
    };
    const printEvent = () => {
      const {
        storeData
      } = props;
      const printOpts = computePrintOpts.value;
      storeData.visible = false;
      $xeTable.print(Object.assign({}, printOpts, getExportOption()));
    };
    const exportEvent = () => {
      const {
        storeData
      } = props;
      const exportOpts = computeExportOpts.value;
      reactData.loading = true;
      $xeTable.exportData(Object.assign({}, exportOpts, getExportOption())).then(() => {
        reactData.loading = false;
        storeData.visible = false;
      }).catch(() => {
        reactData.loading = false;
      });
    };
    const cancelEvent = () => {
      const {
        storeData
      } = props;
      storeData.visible = false;
    };
    const confirmEvent = () => {
      const {
        storeData
      } = props;
      if (storeData.isPrint) {
        printEvent();
      } else {
        exportEvent();
      }
    };
    const renderVN = () => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        defaultOptions,
        storeData
      } = props;
      const {
        isAll: isAllChecked,
        isIndeterminate: isAllIndeterminate
      } = reactData;
      const {
        hasTree,
        hasRowGroup,
        hasMerge,
        isPrint,
        hasColgroup,
        columns
      } = storeData;
      const {
        isHeader
      } = defaultOptions;
      const colVNs = [];
      const exportOpts = computeExportOpts.value;
      const printOpts = computePrintOpts.value;
      const modelOptions = (isPrint ? printOpts : exportOpts).modelOptions || {};
      const settingOptions = (isPrint ? printOpts : exportOpts).settingOptions || {};
      const checkedAll = computeCheckedAll.value;
      const showSheet = computeShowSheet.value;
      const supportMerge = computeSupportMerge.value;
      const supportStyle = computeSupportStyle.value;
      const colWidthModeOptions = computeColWidthModeOptions.value;
      // const supportGroup = computeSupportGroup.value
      const slots = defaultOptions.slots || {};
      const topSlot = slots.top;
      const bottomSlot = slots.bottom;
      const defaultSlot = slots.default;
      const footerSlot = slots.footer;
      const parameterSlot = slots.parameter;
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(columns, column => {
        const colTitle = formatText(column.getTitle(), 1);
        const isColGroup = column.children && column.children.length;
        const isChecked = column.checked;
        const indeterminate = column.halfChecked;
        const isHtml = column.type === 'html';
        colVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('li', {
          key: column.id,
          class: ['vxe-table-export--panel-column-option', `level--${column.level}`, {
            'is--group': isColGroup,
            'is--checked': isChecked,
            'is--indeterminate': indeterminate,
            'is--disabled': column.disabled
          }],
          title: isHtml ? '' : colTitle,
          onClick: () => {
            if (!column.disabled) {
              changeOption(column);
            }
          }
        }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
          class: ['vxe-checkbox--icon', indeterminate ? export_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isChecked ? export_panel_getIcon().TABLE_CHECKBOX_CHECKED : export_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
        }), isHtml ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
          key: '1',
          class: 'vxe-checkbox--label',
          innerHTML: colTitle
        }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
          key: '0',
          class: 'vxe-checkbox--label'
        }, colTitle)]));
      });
      return VxeUIModalComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIModalComponent, {
        id: 'VXE_EXPORT_MODAL',
        modelValue: storeData.visible,
        title: modelOptions.title || export_panel_getI18n(isPrint ? 'vxe.export.printTitle' : 'vxe.export.expTitle'),
        className: 'vxe-table-export-popup-wrapper',
        width: modelOptions.width || 660,
        height: modelOptions.height,
        minWidth: modelOptions.minWidth || 500,
        minHeight: modelOptions.minHeight || 400,
        mask: getDefaultConfig(modelOptions.mask, true),
        lockView: getDefaultConfig(modelOptions.lockView, true),
        showFooter: true,
        escClosable: true,
        maskClosable: true,
        position: modelOptions.position,
        fullscreen: modelOptions.fullscreen,
        remember: modelOptions.remember,
        showMinimize: modelOptions.showMinimize,
        showMaximize: getDefaultConfig(modelOptions.showMaximize, true),
        resize: getDefaultConfig(modelOptions.resize, true),
        loading: reactData.loading,
        'onUpdate:modelValue'(value) {
          storeData.visible = value;
        },
        onShow: showEvent
      }, {
        default: () => {
          const params = {
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt,
            options: defaultOptions,
            columns,
            params: defaultOptions.params
          };
          const hasEmptyData = defaultOptions.mode === 'empty';
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel'
          }, [topSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-top'
          }, $xeTable.callSlot(topSlot, params)) : export_panel_renderEmptyElement($xeTable), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-body'
          }, defaultSlot ? $xeTable.callSlot(defaultSlot, params) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('table', {
            class: 'vxe-table-export--panel-table',
            cellspacing: 0,
            cellpadding: 0,
            border: 0
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tbody', [[isPrint || settingOptions.showFileName === false ? export_panel_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', export_panel_getI18n('vxe.export.expName')), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [VxeUIInputComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIInputComponent, {
            ref: xInputFilename,
            modelValue: defaultOptions.filename,
            type: 'text',
            clearable: true,
            placeholder: export_panel_getI18n('vxe.export.expNamePlaceholder'),
            'onUpdate:modelValue'(value) {
              defaultOptions.filename = value;
            }
          }) : export_panel_renderEmptyElement($xeTable)])]), isPrint || settingOptions.showType === false ? export_panel_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', export_panel_getI18n('vxe.export.expType')), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [VxeUISelectComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUISelectComponent, {
            modelValue: defaultOptions.type,
            options: storeData.typeList,
            'onUpdate:modelValue'(value) {
              defaultOptions.type = value;
            }
          }) : export_panel_renderEmptyElement($xeTable)])]), (isPrint || showSheet) && settingOptions.showSheet !== false ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', export_panel_getI18n('vxe.export.expSheetName')), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [VxeUIInputComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIInputComponent, {
            ref: xInputSheetname,
            modelValue: defaultOptions.sheetName,
            type: 'text',
            clearable: true,
            placeholder: export_panel_getI18n('vxe.export.expSheetNamePlaceholder'),
            'onUpdate:modelValue'(value) {
              defaultOptions.sheetName = value;
            }
          }) : export_panel_renderEmptyElement($xeTable)])]) : export_panel_renderEmptyElement($xeTable), settingOptions.showMode === false ? export_panel_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', export_panel_getI18n('vxe.export.expMode')), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [VxeUISelectComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUISelectComponent, {
            modelValue: defaultOptions.mode,
            options: storeData.modeList.map(item => {
              return {
                value: item.value,
                label: export_panel_getI18n(item.label)
              };
            }),
            'onUpdate:modelValue'(value) {
              defaultOptions.mode = value;
            }
          }) : export_panel_renderEmptyElement($xeTable)])]), settingOptions.showColumn === false ? export_panel_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [export_panel_getI18n('vxe.export.expColumn')]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-column'
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('ul', {
            class: 'vxe-table-export--panel-column-header'
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('li', {
            class: ['vxe-table-export--panel-column-option', {
              'is--checked': isAllChecked,
              'is--indeterminate': isAllIndeterminate
            }],
            title: export_panel_getI18n('vxe.table.allTitle'),
            onClick: allColumnEvent
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
            class: ['vxe-checkbox--icon', isAllIndeterminate ? export_panel_getIcon().TABLE_CHECKBOX_INDETERMINATE : isAllChecked ? export_panel_getIcon().TABLE_CHECKBOX_CHECKED : export_panel_getIcon().TABLE_CHECKBOX_UNCHECKED]
          }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
            class: 'vxe-checkbox--label'
          }, export_panel_getI18n('vxe.export.expCurrentColumn'))])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('ul', {
            class: 'vxe-table-export--panel-column-body'
          }, colVNs)])])]), isPrint && settingOptions.showWidthMode !== false ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', export_panel_getI18n('vxe.export.widthMode')), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [VxeUISelectComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUISelectComponent, {
            modelValue: defaultOptions.widthMode,
            options: colWidthModeOptions,
            'onUpdate:modelValue'(value) {
              defaultOptions.widthMode = value;
            }
          }) : export_panel_renderEmptyElement($xeTable)])]) : export_panel_renderEmptyElement($xeTable), settingOptions.showParameter === false ? export_panel_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', export_panel_getI18n('vxe.export.expOpts')), parameterSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-option-row'
          }, $xeTable.callSlot(parameterSlot, params))]) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-option-row'
          }, VxeUICheckboxComponent ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUICheckboxComponent, {
            modelValue: hasEmptyData || isHeader,
            disabled: hasEmptyData,
            title: export_panel_getI18n('vxe.export.expHeaderTitle'),
            content: export_panel_getI18n('vxe.export.expOptHeader'),
            'onUpdate:modelValue'(value) {
              defaultOptions.isHeader = value;
            }
          }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUICheckboxComponent, {
            modelValue: defaultOptions.isFooter,
            disabled: !storeData.hasFooter,
            title: export_panel_getI18n('vxe.export.expFooterTitle'),
            content: export_panel_getI18n('vxe.export.expOptFooter'),
            'onUpdate:modelValue'(value) {
              defaultOptions.isFooter = value;
            }
          }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUICheckboxComponent, {
            modelValue: isHeader ? defaultOptions.isTitle : false,
            disabled: !isHeader,
            title: export_panel_getI18n('vxe.export.expTitleTitle'),
            content: export_panel_getI18n('vxe.export.expOptTitle'),
            'onUpdate:modelValue'(value) {
              defaultOptions.isTitle = value;
            }
          }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUICheckboxComponent, {
            modelValue: isHeader && hasColgroup && supportMerge ? defaultOptions.isColgroup : false,
            title: export_panel_getI18n('vxe.export.expColgroupTitle'),
            disabled: !isHeader || !hasColgroup || !supportMerge,
            content: export_panel_getI18n('vxe.export.expOptColgroup'),
            'onUpdate:modelValue'(value) {
              defaultOptions.isColgroup = value;
            }
          })] : []), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-option-row'
          }, VxeUICheckboxComponent ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUICheckboxComponent, {
            modelValue: hasEmptyData ? false : defaultOptions.original,
            disabled: hasEmptyData,
            title: export_panel_getI18n('vxe.export.expOriginalTitle'),
            content: export_panel_getI18n('vxe.export.expOptOriginal'),
            'onUpdate:modelValue'(value) {
              defaultOptions.original = value;
            }
          }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUICheckboxComponent, {
            modelValue: hasMerge && supportMerge && checkedAll ? defaultOptions.isMerge : false,
            title: export_panel_getI18n('vxe.export.expMergeTitle'),
            disabled: hasEmptyData || !hasMerge || !supportMerge || !checkedAll,
            content: export_panel_getI18n('vxe.export.expOptMerge'),
            'onUpdate:modelValue'(value) {
              defaultOptions.isMerge = value;
            }
          }), isPrint ? export_panel_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUICheckboxComponent, {
            modelValue: supportStyle ? defaultOptions.useStyle : false,
            disabled: !supportStyle,
            title: export_panel_getI18n('vxe.export.expUseStyleTitle'),
            content: export_panel_getI18n('vxe.export.expOptUseStyle'),
            'onUpdate:modelValue'(value) {
              defaultOptions.useStyle = value;
            }
          })] : []), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-option-row'
          }, VxeUICheckboxComponent ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUICheckboxComponent, {
            modelValue: hasTree ? defaultOptions.isTreeAllExpanded : false,
            disabled: hasEmptyData || !hasTree,
            title: export_panel_getI18n('vxe.export.expTreeAllExpandTitle'),
            content: export_panel_getI18n('vxe.export.expOptTreeAllExpand'),
            'onUpdate:modelValue'(value) {
              defaultOptions.isTreeAllExpanded = value;
            }
          }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUICheckboxComponent, {
            modelValue: hasRowGroup ? defaultOptions.isRowGroupAllExpanded : false,
            disabled: hasEmptyData || !hasRowGroup,
            title: export_panel_getI18n('vxe.export.expRowGroupAllExpandTitle'),
            content: export_panel_getI18n('vxe.export.expOptRowGroupAllExpand'),
            'onUpdate:modelValue'(value) {
              defaultOptions.isRowGroupAllExpanded = value;
            }
          })] : [])])])]])])]), bottomSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-bottom'
          }, $xeTable.callSlot(bottomSlot, params)) : export_panel_renderEmptyElement($xeTable)]);
        },
        footer() {
          const params = {
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt,
            options: defaultOptions,
            columns,
            params: defaultOptions.params
          };
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-footer'
          }, footerSlot ? $xeTable.callSlot(footerSlot, params) : [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-table-export--panel-btns'
          }, [VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            content: export_panel_getI18n('vxe.export.expCancel'),
            onClick: cancelEvent
          }) : export_panel_renderEmptyElement($xeTable), VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            ref: xButtonConfirm,
            status: 'primary',
            content: export_panel_getI18n(isPrint ? 'vxe.export.expPrint' : 'vxe.export.expConfirm'),
            onClick: confirmEvent
          }) : export_panel_renderEmptyElement($xeTable)])]);
        }
      }) : export_panel_renderEmptyElement($xeTable);
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
      if (!VxeUIModalComponent) {
        export_panel_errLog('vxe.error.reqComp', ['vxe-modal']);
      }
      if (!VxeUIButtonComponent) {
        export_panel_errLog('vxe.error.reqComp', ['vxe-button']);
      }
      if (!VxeUISelectComponent) {
        export_panel_errLog('vxe.error.reqComp', ['vxe-select']);
      }
      if (!VxeUIInputComponent) {
        export_panel_errLog('vxe.error.reqComp', ['vxe-input']);
      }
      if (!VxeUICheckboxComponent) {
        export_panel_errLog('vxe.error.reqComp', ['vxe-checkbox']);
      }
    });
    return renderVN;
  }
}));
;// ./packages/table/module/menu/panel.ts










const {
  getIcon: menu_panel_getIcon,
  getI18n: menu_panel_getI18n,
  renderEmptyElement: menu_panel_renderEmptyElement
} = core_.VxeUI;
/* harmony default export */ var menu_panel = (defineVxeComponent({
  name: 'VxeTableMenuPanel',
  setup(props, context) {
    const xID = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId();
    const $xeTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable', {});
    const {
      reactData: tableReactData
    } = $xeTable;
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refMaps = {
      refElem
    };
    const $xeMenuPanel = {
      xID,
      props,
      context,
      getRefMaps: () => refMaps
    };
    const renderVN = () => {
      const {
        ctxMenuStore
      } = tableReactData;
      const {
        computeMenuOpts
      } = $xeTable.getComputeMaps();
      const menuOpts = computeMenuOpts.value;
      const {
        transfer,
        destroyOnClose,
        className
      } = menuOpts;
      const {
        visible,
        list
      } = ctxMenuStore;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(external_commonjs_vue_commonjs2_vue_root_Vue_.Teleport, {
        to: 'body',
        disabled: !transfer
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-table--context-menu-wrapper', className, {
          'is--visible': visible
        }],
        style: ctxMenuStore.style
      }, (destroyOnClose ? visible : true) ? list.map((options, gIndex) => {
        return options.every(item => item.visible === false) ? menu_panel_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('ul', {
          class: 'vxe-table--context-menu-group-wrapper',
          key: gIndex
        }, options.map((item, index) => {
          const {
            children,
            loading
          } = item;
          const hasChildMenus = children && children.some(child => child.visible !== false);
          const prefixOpts = Object.assign({}, item.prefixConfig);
          const prefixIcon = prefixOpts.icon || item.prefixIcon;
          const suffixOpts = Object.assign({}, item.suffixConfig);
          const suffixIcon = suffixOpts.icon || item.suffixIcon;
          const menuContent = getFuncText(item.name);
          return item.visible === false ? menu_panel_renderEmptyElement($xeTable) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('li', {
            class: ['vxe-table--context-menu--option', item.className, {
              'link--loading': loading,
              'link--disabled': item.disabled,
              'link--active': item === ctxMenuStore.selected
            }],
            key: `${gIndex}_${index}`
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('a', {
            class: 'vxe-context-menu--link',
            onClick(evnt) {
              $xeTable.ctxMenuLinkEvent(evnt, item);
            },
            onMouseover(evnt) {
              $xeTable.ctxMenuMouseoverEvent(evnt, item);
            },
            onMouseout(evnt) {
              $xeTable.ctxMenuMouseoutEvent(evnt, item);
            }
          }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: ['vxe-context-menu--link-prefix', prefixOpts.className || '']
          }, [loading ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
            class: menu_panel_getIcon('TABLE_MENU_OPTION_LOADING')
          }) : prefixIcon && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(prefixIcon) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {}, getSlotVNs(prefixIcon({}))) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
            class: prefixIcon
          })]), prefixOpts.content ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {}, `${prefixOpts.content}`) : menu_panel_renderEmptyElement($xeTable)]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: 'vxe-context-menu--link-content',
            title: menuContent
          }, loading ? menu_panel_getI18n('vxe.table.menuLoading') : menuContent), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
            class: ['vxe-context-menu--link-suffix', suffixOpts.className || '']
          }, [suffixIcon && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(suffixIcon) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {}, getSlotVNs(suffixIcon({}))) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
            class: suffixIcon || (hasChildMenus ? menu_panel_getIcon().TABLE_MENU_OPTIONS : '')
          }), suffixOpts.content ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', `${suffixOpts.content}`) : menu_panel_renderEmptyElement($xeTable)])]), hasChildMenus && children ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('ul', {
            class: ['vxe-table--context-menu-clild-wrapper', {
              'is--show': item === ctxMenuStore.selected && ctxMenuStore.showChild
            }]
          }, children.map((child, cIndex) => {
            const {
              loading: childLoading
            } = child;
            const childPrefixOpts = Object.assign({}, child.prefixConfig);
            const childPrefixIcon = childPrefixOpts.icon || child.prefixIcon;
            const childSuffixOpts = Object.assign({}, child.suffixConfig);
            const childSuffixIcon = childSuffixOpts.icon || child.suffixIcon;
            const childMenuContent = getFuncText(child.name);
            return child.visible === false ? null : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('li', {
              class: ['vxe-table--context-menu--option', child.className, {
                'link--loading': childLoading,
                'link--disabled': child.disabled,
                'link--active': child === ctxMenuStore.selectChild
              }],
              key: `${gIndex}_${index}_${cIndex}`
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('a', {
              class: 'vxe-context-menu--link',
              onClick(evnt) {
                $xeTable.ctxMenuLinkEvent(evnt, child);
              },
              onMouseover(evnt) {
                $xeTable.ctxMenuMouseoverEvent(evnt, item, child);
              },
              onMouseout(evnt) {
                $xeTable.ctxMenuMouseoutEvent(evnt, item);
              }
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: ['vxe-context-menu--link-prefix', childPrefixOpts.className || '']
            }, [child.loading ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
              class: menu_panel_getIcon('TABLE_MENU_OPTION_LOADING')
            }) : childPrefixIcon && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(childPrefixIcon) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {}, getSlotVNs(childPrefixIcon({}))) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {}, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
              class: childPrefixIcon
            })]), childPrefixOpts.content ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', `${childPrefixOpts.content}`) : menu_panel_renderEmptyElement($xeTable)]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: 'vxe-context-menu--link-content',
              title: childMenuContent
            }, childLoading ? menu_panel_getI18n('vxe.table.menuLoading') : childMenuContent), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: ['vxe-context-menu--link-suffix', childSuffixOpts.className || '']
            }, [childSuffixIcon && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(childSuffixIcon) ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {}, getSlotVNs(childSuffixIcon({}))) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
              class: childSuffixIcon
            }), childSuffixOpts.content ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', `${childSuffixOpts.content}`) : menu_panel_renderEmptyElement($xeTable)])])]);
          })) : null]);
        }));
      }) : [])]);
    };
    $xeMenuPanel.renderVN = renderVN;
    return $xeMenuPanel;
  },
  render() {
    return this.renderVN();
  }
}));
;// ./packages/table/module/filter/hook.ts












const {
  renderer: hook_renderer,
  hooks: hook_hooks
} = core_.VxeUI;
const tableFilterMethodKeys = ['openFilter', 'setFilter', 'clearFilter', 'saveFilter', 'saveFilterByEvent', 'saveFilterPanel', 'saveFilterPanelByEvent', 'resetFilter', 'resetFilterByEvent', 'resetFilterPanel', 'resetFilterPanelByEvent', 'getCheckedFilters', 'updateFilterOptionStatus'];
const hook_sourceType = 'table';
hook_hooks.add('tableFilterModule', {
  setupTable($xeTable) {
    const $xeGrid = $xeTable.xeGrid;
    const $xeGantt = $xeTable.xeGantt;
    const $xeGGWrapper = $xeGrid || $xeGantt;
    const {
      props,
      reactData,
      internalData
    } = $xeTable;
    const {
      refElem,
      refTableFilter
    } = $xeTable.getRefMaps();
    const {
      computeFilterOpts,
      computeMouseOpts
    } = $xeTable.getComputeMaps();
    const filterPrivateMethods = {
      checkFilterOptions() {
        const {
          filterStore
        } = reactData;
        const {
          column
        } = filterStore;
        if (column) {
          const filterOptions = column.filters || [];
          filterStore.isAllSelected = filterOptions.every(item => item._checked);
          filterStore.isIndeterminate = !filterStore.isAllSelected && filterOptions.some(item => item._checked);
        }
      },
      handleOpenFilterColumn(evnt, btnEl, colEl, column, params) {
        const {
          initStore,
          filterStore
        } = reactData;
        const {
          elemStore
        } = internalData;
        if (filterStore.column === column && filterStore.visible) {
          filterStore.visible = false;
        } else {
          const tableEl = refElem.value;
          const {
            scrollTop,
            scrollLeft,
            visibleHeight,
            visibleWidth
          } = getDomNode();
          const filterOpts = computeFilterOpts.value;
          const {
            maxHeight: customMaxHeight,
            transfer,
            zIndex
          } = filterOpts;
          const currEl = btnEl || colEl;
          const tableRect = tableEl.getBoundingClientRect();
          const filterRender = column ? column.filterRender : null;
          const compConf = filterRender && isEnableConf(filterRender) ? hook_renderer.get(filterRender.name) : null;
          $xeTable.handleFilterOptions(column);
          internalData._currFilterParams = params;
          filterStore.style = null;
          filterStore.visible = true;
          initStore.filter = true;
          (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
            const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
            if (!headerScrollElem) {
              return;
            }
            const tableFilter = refTableFilter.value;
            const filterWrapperElem = tableFilter ? tableFilter.getRefMaps().refElem.value : null;
            if (!filterWrapperElem) {
              return;
            }
            const btnRect = currEl.getBoundingClientRect();
            const filterHeadElem = filterWrapperElem.querySelector('.vxe-table--filter-header');
            const filterFootElem = filterWrapperElem.querySelector('.vxe-table--filter-footer');
            const filterWidth = filterWrapperElem.offsetWidth;
            const centerWidth = btnEl ? filterWidth / 2 : (filterWidth - column.renderWidth) / 2;
            let left = 0;
            let top = 0;
            let maxHeight = 0;
            /**
             * 是否显示筛选按钮图标
             * 如果不存在图标,则相对单元格居中显示
             */
            if (transfer) {
              left = btnRect.left - centerWidth + scrollLeft;
              top = btnRect.top + currEl.clientHeight + scrollTop;
              maxHeight = Math.min(Math.max(tableRect.height, Math.floor(visibleHeight / 2)), Math.max(80, visibleHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 28));
              if (left < 16) {
                left = 16;
              } else if (left > visibleWidth - filterWidth - 16) {
                left = visibleWidth - filterWidth - 16;
              }
            } else {
              left = btnRect.left - tableRect.left - centerWidth;
              top = btnRect.top - tableRect.top + currEl.clientHeight;
              maxHeight = Math.max(40, tableEl.clientHeight - top - (filterHeadElem ? filterHeadElem.clientHeight : 0) - (filterFootElem ? filterFootElem.clientHeight : 0) - 14);
              if (left < 1) {
                left = 1;
              } else if (left > tableEl.clientWidth - filterWidth - 1) {
                left = tableEl.clientWidth - filterWidth - 1;
              }
              if ($xeGGWrapper) {
                const wrapperEl = $xeGGWrapper.getRefMaps().refElem.value;
                if (wrapperEl) {
                  const wrapperRect = wrapperEl.getBoundingClientRect();
                  top += tableRect.top - wrapperRect.top;
                }
              }
            }
            const fStys = {
              top: toCssUnit(top),
              left: toCssUnit(left)
            };
            if (zIndex) {
              fStys.zIndex = zIndex;
            }
            filterStore.style = fStys;
            // 筛选面板是自适应表格高度
            if (compConf ? !compConf.tableFilterAutoHeight : false) {
              maxHeight = 0;
            } else {
              if (customMaxHeight) {
                maxHeight = customMaxHeight > maxHeight ? maxHeight : customMaxHeight;
              }
            }
            // 判断面板不能大于表格高度
            filterStore.maxHeight = maxHeight;
          });
        }
        $xeTable.dispatchEvent('filter-visible', {
          column,
          field: column.field,
          property: column.field,
          filterList: $xeTable.getCheckedFilters(),
          visible: filterStore.visible
        }, evnt);
      },
      /**
       * 点击筛选事件
       * 当筛选图标被点击时触发
       * 更新选项是否全部状态
       * 打开筛选面板
       * @param {Event} evnt 事件
       * @param {ColumnInfo} column 列配置
       * @param {Object} params 参数
       */
      triggerFilterEvent(evnt, column, params) {
        const {
          elemStore
        } = internalData;
        const {
          fixed
        } = column;
        const headerWrapperElem = getRefElem(elemStore[`${fixed || 'main'}-header-wrapper`] || elemStore['main-header-wrapper']);
        const btnElem = evnt.currentTarget;
        const colEl = headerWrapperElem ? headerWrapperElem.querySelector(`.vxe-header--column.${column.id}`) : null;
        $xeTable.handleOpenFilterColumn(evnt, btnElem, colEl || btnElem, column, params);
      },
      handleClearFilter(column) {
        if (column) {
          const {
            filters,
            filterRender
          } = column;
          if (filters) {
            const compConf = isEnableConf(filterRender) ? hook_renderer.get(filterRender.name) : null;
            const frMethod = column.filterResetMethod || (compConf ? compConf.tableFilterResetMethod || compConf.filterResetMethod : null);
            filters.forEach(item => {
              item._checked = false;
              item.checked = false;
              if (!frMethod) {
                item.data = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(item.resetValue, true);
              }
            });
            if (frMethod) {
              frMethod({
                options: filters,
                column,
                $table: $xeTable
              });
            }
          }
        }
      },
      handleColumnConfirmFilter(column, evnt) {
        const {
          mouseConfig
        } = props;
        const {
          scrollXLoad: oldScrollXLoad,
          scrollYLoad: oldScrollYLoad
        } = reactData;
        const filterOpts = computeFilterOpts.value;
        const mouseOpts = computeMouseOpts.value;
        const {
          field,
          filters
        } = column;
        const filterOptions = filters || [];
        const values = [];
        const datas = [];
        filterOptions.forEach(item => {
          if (item.checked) {
            values.push(item.value);
            datas.push(item.data);
          }
        });
        const filterList = $xeTable.getCheckedFilters();
        const params = {
          $table: $xeTable,
          $event: evnt,
          column,
          field,
          property: field,
          values,
          datas,
          filters: filterList,
          filterList
        };
        // 如果是服务端筛选,则跳过本地筛选处理
        if (!filterOpts.remote) {
          $xeTable.handleTableData(true);
          $xeTable.checkSelectionStatus();
        }
        if (mouseConfig && mouseOpts.area && $xeTable.handleFilterEvent) {
          $xeTable.handleFilterEvent(evnt, params);
        }
        if (evnt) {
          $xeTable.dispatchEvent('filter-change', params, evnt);
        }
        $xeTable.closeFilter();
        return $xeTable.updateFooter().then(() => {
          const {
            scrollXLoad,
            scrollYLoad
          } = reactData;
          if (oldScrollXLoad || scrollXLoad || oldScrollYLoad || scrollYLoad) {
            if (oldScrollXLoad || scrollXLoad) {
              $xeTable.updateScrollXSpace();
            }
            if (oldScrollYLoad || scrollYLoad) {
              $xeTable.updateScrollYSpace();
            }
            return $xeTable.refreshScroll();
          }
        }).then(() => {
          $xeTable.updateCellAreas();
          return $xeTable.recalculate(true);
        }).then(() => {
          // 存在滚动行为未结束情况
          setTimeout(() => $xeTable.recalculate(), 50);
        });
      },
      /**
       * 确认筛选
       * 当筛选面板中的确定按钮被按下时触发
       */
      confirmFilterEvent(evnt, column) {
        if (column) {
          $xeTable.handleColumnConfirmFilter(column, evnt);
        }
      },
      // (单选)筛选发生改变
      handleFilterChangeRadioOption(evnt, checked, item) {
        const {
          filterStore
        } = reactData;
        const {
          column
        } = filterStore;
        if (column) {
          const filterOptions = column.filters || [];
          filterOptions.forEach(option => {
            option._checked = false;
          });
          item._checked = checked;
          $xeTable.checkFilterOptions();
          $xeTable.handleFilterConfirmFilter(evnt, column);
        }
      },
      // (多选)筛选发生改变
      handleFilterChangeMultipleOption(evnt, checked, item) {
        item._checked = checked;
        $xeTable.checkFilterOptions();
      },
      // 筛选发生改变
      handleFilterChangeOption(evnt, checked, item) {
        const {
          filterStore
        } = reactData;
        const {
          fullColumnIdData
        } = internalData;
        let column = filterStore.column;
        if (!column) {
          const colRest = fullColumnIdData[item._colId];
          if (colRest) {
            column = colRest.column;
            filterStore.column = column;
          }
        }
        if (column) {
          if (column.filterMultiple) {
            $xeTable.handleFilterChangeMultipleOption(evnt, checked, item);
          } else {
            $xeTable.handleFilterChangeRadioOption(evnt, checked, item);
          }
        }
      },
      // 确认筛选
      handleFilterConfirmFilter(evnt, column) {
        if (column) {
          const filterOptions = column.filters || [];
          filterOptions.forEach(option => {
            option.checked = option._checked;
          });
          $xeTable.confirmFilterEvent(evnt, column);
        }
      },
      /**
       * 重置筛选
       * 当筛选面板中的重置按钮被按下时触发
       */
      handleFilterResetFilter(evnt, column) {
        if (column) {
          $xeTable.handleClearFilter(column);
          $xeTable.confirmFilterEvent(evnt, column);
          if (evnt) {
            $xeTable.dispatchEvent('clear-filter', {
              filterList: []
            }, evnt);
          }
        }
      }
    };
    const filterMethods = {
      /**
       * 手动弹出筛选面板
       * @param column
       */
      openFilter(fieldOrColumn) {
        const column = handleFieldOrColumn($xeTable, fieldOrColumn);
        if (column && column.filters) {
          const {
            elemStore
          } = internalData;
          const {
            fixed,
            filters
          } = column;
          return $xeTable.scrollToColumn(column).then(() => {
            const headerWrapperElem = getRefElem(elemStore[`${fixed || 'main'}-header-wrapper`] || elemStore['main-header-wrapper']);
            if (headerWrapperElem) {
              const filterBtnElem = headerWrapperElem.querySelector(`.vxe-header--column.${column.id} .vxe-cell--filter`);
              if (filterBtnElem) {
                triggerEvent(filterBtnElem, 'click');
              } else {
                const colEl = headerWrapperElem.querySelector(`.vxe-header--column.${column.id}`);
                if (colEl) {
                  let firstFilterOption = null;
                  if (filters) {
                    firstFilterOption = filters[0];
                  }
                  const params = {
                    $table: $xeTable,
                    $grid: $xeGrid,
                    $gantt: $xeGantt,
                    $rowIndex: -1,
                    column,
                    columnIndex: $xeTable.getColumnIndex(column),
                    $columnIndex: $xeTable.getVMColumnIndex(column),
                    _columnIndex: $xeTable.getVTColumnIndex(column),
                    firstFilterOption: firstFilterOption,
                    fixed,
                    source: hook_sourceType,
                    type: 'header'
                    // isHidden
                    // hasFilter
                  };
                  $xeTable.handleOpenFilterColumn(new Event('click'), null, colEl, column, params);
                }
              }
            }
          });
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      /**
       * 修改筛选条件列表
       * @param {ColumnInfo} fieldOrColumn 列或字段名
       * @param {Array} options 选项
       */
      setFilter(fieldOrColumn, options, isUpdate) {
        const {
          filterStore
        } = reactData;
        const column = handleFieldOrColumn($xeTable, fieldOrColumn);
        if (column && column.filters) {
          column.filters = toFilters(options || [], column.id);
          if (isUpdate) {
            return $xeTable.handleColumnConfirmFilter(column, null);
          } else {
            if (filterStore.visible) {
              $xeTable.handleFilterOptions(column);
            }
          }
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      /**
       * 清空指定列的筛选条件
       * 如果为空则清空所有列的筛选条件
       * @param {String} fieldOrColumn 列或字段名
       */
      clearFilter(fieldOrColumn) {
        const {
          filterStore
        } = reactData;
        const {
          tableFullColumn
        } = internalData;
        const filterOpts = computeFilterOpts.value;
        let column;
        if (fieldOrColumn) {
          column = handleFieldOrColumn($xeTable, fieldOrColumn);
          if (column) {
            $xeTable.handleClearFilter(column);
          }
        } else {
          tableFullColumn.forEach($xeTable.handleClearFilter);
        }
        if (!fieldOrColumn || column !== filterStore.column) {
          Object.assign(filterStore, {
            isAllSelected: false,
            isIndeterminate: false,
            style: null,
            options: [],
            column: null,
            multiple: false,
            visible: false
          });
        }
        if (!filterOpts.remote) {
          return $xeTable.updateData();
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      saveFilter(fieldOrColumn) {
        if (fieldOrColumn) {
          const column = handleFieldOrColumn($xeTable, fieldOrColumn);
          $xeTable.handleFilterConfirmFilter(null, column);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      saveFilterByEvent(evnt, fieldOrColumn) {
        if (fieldOrColumn) {
          const column = handleFieldOrColumn($xeTable, fieldOrColumn);
          $xeTable.handleFilterConfirmFilter(evnt, column);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      resetFilter(fieldOrColumn) {
        if (fieldOrColumn) {
          const column = handleFieldOrColumn($xeTable, fieldOrColumn);
          $xeTable.handleFilterResetFilter(null, column);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      resetFilterByEvent(evnt, fieldOrColumn) {
        if (fieldOrColumn) {
          const column = handleFieldOrColumn($xeTable, fieldOrColumn);
          $xeTable.handleFilterResetFilter(evnt, column);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      saveFilterPanel() {
        const {
          filterStore
        } = reactData;
        $xeTable.handleFilterConfirmFilter(null, filterStore.column || null);
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      saveFilterPanelByEvent(evnt) {
        const {
          filterStore
        } = reactData;
        $xeTable.handleFilterConfirmFilter(evnt, filterStore.column || null);
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      resetFilterPanel() {
        const {
          filterStore
        } = reactData;
        $xeTable.handleFilterResetFilter(null, filterStore.column || null);
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      resetFilterPanelByEvent(evnt) {
        const {
          filterStore
        } = reactData;
        $xeTable.handleFilterResetFilter(evnt, filterStore.column || null);
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      getCheckedFilters() {
        const {
          tableFullColumn
        } = internalData;
        const filterList = [];
        tableFullColumn.forEach(column => {
          const {
            field,
            filters
          } = column;
          const filterOptions = filters || [];
          const valueList = [];
          const dataList = [];
          if (filterOptions) {
            filterOptions.forEach(item => {
              if (item.checked) {
                valueList.push(item.value);
                dataList.push(item.data);
              }
            });
            if (valueList.length) {
              filterList.push({
                column,
                field,
                property: field,
                values: valueList,
                datas: dataList
              });
            }
          }
        });
        return filterList;
      },
      updateFilterOptionStatus(item, checked) {
        item._checked = checked;
        item.checked = checked;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      }
    };
    return {
      ...filterMethods,
      ...filterPrivateMethods
    };
  },
  setupGrid($xeGrid) {
    return $xeGrid.extendTableMethods(tableFilterMethodKeys);
  },
  setupGantt($xeGantt) {
    return $xeGantt.extendTableMethods(tableFilterMethodKeys);
  }
});
;// ./packages/table/module/menu/hook.ts





const {
  menus: hook_menus,
  hooks: menu_hook_hooks,
  globalEvents: hook_globalEvents,
  GLOBAL_EVENT_KEYS
} = core_.VxeUI;
const tableMenuMethodKeys = ['closeMenu'];
menu_hook_hooks.add('tableMenuModule', {
  setupTable($xeTable) {
    const {
      xID,
      props,
      reactData,
      internalData
    } = $xeTable;
    const {
      refElem,
      refTableFilter,
      refTableMenu
    } = $xeTable.getRefMaps();
    const {
      computeMouseOpts,
      computeIsContentMenu,
      computeMenuOpts
    } = $xeTable.getComputeMaps();
    const $xeGrid = $xeTable.xeGrid;
    const $xeGantt = $xeTable.xeGantt;
    const $xeGGWrapper = $xeGrid || $xeGantt;
    let menuMethods = {};
    let menuPrivateMethods = {};
    /**
     * 显示快捷菜单
     */
    const handleOpenMenuEvent = (evnt, type, params) => {
      const {
        ctxMenuStore
      } = reactData;
      const isContentMenu = computeIsContentMenu.value;
      const menuOpts = computeMenuOpts.value;
      const config = menuOpts[type];
      const {
        zIndex,
        transfer,
        width,
        visibleMethod
      } = menuOpts;
      if (config) {
        const {
          options,
          disabled
        } = config;
        if (disabled) {
          evnt.preventDefault();
        } else if (isContentMenu && options && options.length) {
          params.options = options;
          $xeTable.preventEvent(evnt, 'event.showMenu', params, () => {
            if (!visibleMethod || visibleMethod(params)) {
              evnt.preventDefault();
              $xeTable.updateZindex();
              const el = $xeGGWrapper ? $xeGGWrapper.getRefMaps().refElem.value : refElem.value;
              if (!el) {
                return;
              }
              const tableRect = el.getBoundingClientRect();
              const {
                scrollTop,
                scrollLeft,
                visibleHeight,
                visibleWidth
              } = getDomNode();
              let top = evnt.clientY - tableRect.y;
              let left = evnt.clientX - tableRect.x;
              if (transfer) {
                top = evnt.clientY + scrollTop;
                left = evnt.clientX + scrollLeft;
              }
              const handleVisible = () => {
                internalData._currMenuParams = params;
                const ctxStyle = {
                  zIndex: zIndex || internalData.tZindex,
                  top: `${top}px`,
                  left: `${left}px`
                };
                if (width) {
                  ctxStyle['--vxe-ui-table-menu-item-width'] = toCssUnit(width);
                }
                Object.assign(ctxMenuStore, {
                  visible: true,
                  list: options,
                  selected: null,
                  selectChild: null,
                  showChild: false,
                  style: ctxStyle
                });
                (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
                  const tableMenu = refTableMenu.value;
                  const ctxElem = tableMenu.getRefMaps().refElem.value;
                  const clientHeight = ctxElem.clientHeight;
                  const clientWidth = ctxElem.clientWidth;
                  const {
                    boundingTop,
                    boundingLeft
                  } = getAbsolutePos(ctxElem);
                  const offsetTop = boundingTop + clientHeight - visibleHeight;
                  const offsetLeft = boundingLeft + clientWidth - visibleWidth;
                  if (offsetTop > -10) {
                    ctxMenuStore.style.top = `${Math.max(scrollTop + 2, top - clientHeight - 2)}px`;
                  }
                  if (offsetLeft > -10) {
                    ctxMenuStore.style.left = `${Math.max(scrollLeft + 2, left - clientWidth - 2)}px`;
                  }
                });
              };
              const {
                keyboard,
                row,
                column
              } = params;
              if (keyboard && row && column) {
                $xeTable.scrollToRow(row, column).then(() => {
                  const cell = $xeTable.getCellElement(row, column);
                  if (cell) {
                    const {
                      boundingTop,
                      boundingLeft
                    } = getAbsolutePos(cell);
                    top = boundingTop + scrollTop + Math.floor(cell.offsetHeight / 2);
                    left = boundingLeft + scrollLeft + Math.floor(cell.offsetWidth / 2);
                  }
                  handleVisible();
                });
              } else {
                handleVisible();
              }
            } else {
              menuMethods.closeMenu();
            }
          });
        }
      }
      $xeTable.closeFilter();
    };
    menuMethods = {
      /**
       * 关闭快捷菜单
       */
      closeMenu() {
        Object.assign(reactData.ctxMenuStore, {
          visible: false,
          selected: null,
          selectChild: null,
          showChild: false
        });
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      }
    };
    menuPrivateMethods = {
      /**
       * 处理菜单的移动
       */
      moveCtxMenu(evnt, ctxMenuStore, property, hasOper, operRest, menuList) {
        let selectItem;
        const selectIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(menuList, item => ctxMenuStore[property] === item);
        if (hasOper) {
          if (operRest && hasChildrenList(ctxMenuStore.selected)) {
            ctxMenuStore.showChild = true;
          } else {
            ctxMenuStore.showChild = false;
            ctxMenuStore.selectChild = null;
          }
        } else if (hook_globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_UP)) {
          for (let len = selectIndex - 1; len >= 0; len--) {
            if (menuList[len].visible !== false) {
              selectItem = menuList[len];
              break;
            }
          }
          ctxMenuStore[property] = selectItem || menuList[menuList.length - 1];
        } else if (hook_globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ARROW_DOWN)) {
          for (let index = selectIndex + 1; index < menuList.length; index++) {
            if (menuList[index].visible !== false) {
              selectItem = menuList[index];
              break;
            }
          }
          ctxMenuStore[property] = selectItem || menuList[0];
        } else if (ctxMenuStore[property] && (hook_globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ENTER) || hook_globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.SPACEBAR))) {
          $xeTable.ctxMenuLinkEvent(evnt, ctxMenuStore[property]);
        }
      },
      handleOpenMenuEvent,
      /**
       * 快捷菜单事件处理
       */
      handleGlobalContextmenuEvent(evnt) {
        const $xeGrid = $xeTable.xeGrid;
        const $xeGantt = $xeTable.xeGantt;
        const {
          mouseConfig,
          menuConfig
        } = props;
        const {
          editStore,
          ctxMenuStore
        } = reactData;
        const {
          visibleColumn
        } = internalData;
        const tableFilter = refTableFilter.value;
        const tableMenu = refTableMenu.value;
        const mouseOpts = computeMouseOpts.value;
        const menuOpts = computeMenuOpts.value;
        const el = refElem.value;
        const {
          selected
        } = editStore;
        const layoutList = ['header', 'body', 'footer'];
        if (isEnableConf(menuConfig)) {
          if (ctxMenuStore.visible && tableMenu && getEventTargetNode(evnt, tableMenu.getRefMaps().refElem.value).flag) {
            evnt.preventDefault();
            return;
          }
          if (internalData._keyCtx) {
            const type = 'body';
            const params = {
              source: 'table',
              type,
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt,
              keyboard: true,
              columns: visibleColumn.slice(0),
              $event: evnt
            };
            // 如果开启单元格区域
            if (mouseConfig && mouseOpts.area) {
              const activeArea = $xeTable.getActiveCellArea();
              if (activeArea && activeArea.row && activeArea.column) {
                params.row = activeArea.row;
                params.column = activeArea.column;
                handleOpenMenuEvent(evnt, type, params);
                return;
              }
            } else if (mouseConfig && mouseOpts.selected) {
              // 如果启用键盘导航且已选中单元格
              if (selected.row && selected.column) {
                params.row = selected.row;
                params.column = selected.column;
                handleOpenMenuEvent(evnt, type, params);
                return;
              }
            }
          }
          // 分别匹配表尾、内容、表尾的快捷菜单
          for (let index = 0; index < layoutList.length; index++) {
            const layout = layoutList[index];
            const columnTargetNode = getEventTargetNode(evnt, el, `vxe-${layout}--column`, target => {
              // target=td|th,直接向上找 table 去匹配即可
              return target.parentNode.parentNode.parentNode.getAttribute('xid') === xID;
            });
            const params = {
              source: 'table',
              type: layout,
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt,
              columns: visibleColumn.slice(0),
              $event: evnt
            };
            if (columnTargetNode.flag) {
              const cell = columnTargetNode.targetElem;
              const columnNodeRest = $xeTable.getColumnNode(cell);
              const column = columnNodeRest ? columnNodeRest.item : null;
              let typePrefix = `${layout}-`;
              if (column) {
                Object.assign(params, {
                  column,
                  columnIndex: $xeTable.getColumnIndex(column),
                  cell
                });
              }
              if (layout === 'body') {
                const rowNodeRest = $xeTable.getRowNode(cell.parentNode);
                const row = rowNodeRest ? rowNodeRest.item : null;
                typePrefix = '';
                if (row) {
                  params.row = row;
                  params.rowIndex = $xeTable.getRowIndex(row);
                }
              }
              const eventType = `${typePrefix}cell-menu`;
              handleOpenMenuEvent(evnt, layout, params);
              $xeTable.dispatchEvent(eventType, params, evnt);
              return;
            } else if (getEventTargetNode(evnt, el, `vxe-table--${layout}-wrapper`, target => target.getAttribute('xid') === xID).flag || layout === 'body' && getEventTargetNode(evnt, el, 'vxe-table--empty-place-wrapper', target => target.getAttribute('xid') === xID).flag) {
              if (menuOpts.trigger === 'cell') {
                evnt.preventDefault();
              } else {
                handleOpenMenuEvent(evnt, layout, params);
              }
              return;
            }
          }
        }
        if (tableFilter && !getEventTargetNode(evnt, tableFilter.getRefMaps().refElem.value).flag) {
          $xeTable.closeFilter();
        }
        menuMethods.closeMenu();
      },
      ctxMenuMouseoverEvent(evnt, item, child) {
        const menuElem = evnt.currentTarget;
        const {
          ctxMenuStore
        } = reactData;
        evnt.preventDefault();
        evnt.stopPropagation();
        ctxMenuStore.selected = item;
        ctxMenuStore.selectChild = child;
        if (!child) {
          ctxMenuStore.showChild = hasChildrenList(item);
          if (ctxMenuStore.showChild) {
            (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
              const childWrapperElem = menuElem.nextElementSibling;
              if (childWrapperElem) {
                const {
                  boundingTop,
                  boundingLeft,
                  visibleHeight,
                  visibleWidth
                } = getAbsolutePos(menuElem);
                const posTop = boundingTop + menuElem.offsetHeight;
                const posLeft = boundingLeft + menuElem.offsetWidth;
                let left = '';
                let right = '';
                // 是否超出右侧
                if (posLeft + childWrapperElem.offsetWidth > visibleWidth - 10) {
                  left = 'auto';
                  right = `${menuElem.offsetWidth}px`;
                }
                // 是否超出底部
                let top = '';
                let bottom = '';
                if (posTop + childWrapperElem.offsetHeight > visibleHeight - 10) {
                  top = 'auto';
                  bottom = '0';
                }
                childWrapperElem.style.left = left;
                childWrapperElem.style.right = right;
                childWrapperElem.style.top = top;
                childWrapperElem.style.bottom = bottom;
              }
            });
          }
        }
      },
      ctxMenuMouseoutEvent(evnt, item) {
        const {
          ctxMenuStore
        } = reactData;
        if (!item.children) {
          ctxMenuStore.selected = null;
        }
        ctxMenuStore.selectChild = null;
      },
      /**
       * 快捷菜单点击事件
       */
      ctxMenuLinkEvent(evnt, menu) {
        const $xeGrid = $xeTable.xeGrid;
        const $xeGantt = $xeTable.xeGantt;
        // 如果一级菜单有配置 code 则允许点击,否则不能点击
        if (!menu.loading && !menu.disabled && (menu.code || !menu.children || !menu.children.length)) {
          const gMenuOpts = hook_menus.get(menu.code);
          const params = Object.assign({}, internalData._currMenuParams, {
            menu,
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt,
            $event: evnt
          });
          const tmMethod = gMenuOpts ? gMenuOpts.tableMenuMethod || gMenuOpts.menuMethod : null;
          if (tmMethod) {
            tmMethod(params, evnt);
          }
          $xeTable.dispatchEvent('menu-click', params, evnt);
          menuMethods.closeMenu();
        }
      }
    };
    return {
      ...menuMethods,
      ...menuPrivateMethods
    };
  },
  setupGrid($xeGrid) {
    return $xeGrid.extendTableMethods(tableMenuMethodKeys);
  },
  setupGantt($xeGantt) {
    return $xeGantt.extendTableMethods(tableMenuMethodKeys);
  }
});
;// ./packages/table/module/edit/hook.ts














const {
  warnLog: hook_warnLog,
  errLog: hook_errLog
} = createComponentLog('table');
const {
  getConfig: hook_getConfig,
  renderer: edit_hook_renderer,
  hooks: edit_hook_hooks,
  getI18n: hook_getI18n
} = core_.VxeUI;
const tableEditMethodKeys = ['insert', 'insertAt', 'insertNextAt', 'insertChild', 'insertChildAt', 'insertChildNextAt', 'remove', 'removeCheckboxRow', 'removeRadioRow', 'removeCurrentRow', 'getRecordset', 'getInsertRecords', 'getRemoveRecords', 'getUpdateRecords', 'getEditRecord', 'getActiveRecord', 'getEditCell', 'getSelectedCell', 'clearEdit', 'clearActived', 'clearSelected', 'isEditByRow', 'isActiveByRow', 'setEditRow', 'setActiveRow', 'setEditCell', 'setActiveCell', 'setSelectCell'];
edit_hook_hooks.add('tableEditModule', {
  setupTable($xeTable) {
    const {
      props,
      reactData,
      internalData
    } = $xeTable;
    const {
      refElem
    } = $xeTable.getRefMaps();
    const {
      computeMouseOpts,
      computeEditOpts,
      computeCheckboxOpts,
      computeTreeOpts,
      computeValidOpts
    } = $xeTable.getComputeMaps();
    const browseObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().browse();
    let editMethods = {};
    let editPrivateMethods = {};
    const getEditColumnModel = (row, column) => {
      const {
        model,
        editRender
      } = column;
      if (editRender) {
        model.value = getCellValue(row, column);
        model.update = false;
      }
    };
    const setEditColumnModel = (row, column) => {
      const {
        model,
        editRender
      } = column;
      if (editRender && model.update) {
        setCellValue(row, column, model.value);
        model.update = false;
        model.value = null;
      }
    };
    const removeCellSelectedClass = () => {
      const el = refElem.value;
      if (el) {
        const cell = el.querySelector('.col--selected');
        if (cell) {
          removeClass(cell, 'col--selected');
        }
      }
    };
    const syncActivedCell = () => {
      const {
        editStore,
        tableColumn
      } = reactData;
      const editOpts = computeEditOpts.value;
      const {
        actived
      } = editStore;
      const {
        row,
        column
      } = actived;
      if (row && column) {
        if (editOpts.mode === 'row') {
          tableColumn.forEach(column => setEditColumnModel(row, column));
        } else {
          setEditColumnModel(row, column);
        }
      }
    };
    const insertTreeRow = (newRecords, isAppend) => {
      const {
        tableFullTreeData,
        afterFullData,
        fullDataRowIdData,
        fullAllDataRowIdData
      } = internalData;
      const treeOpts = computeTreeOpts.value;
      const {
        rowField,
        parentField,
        mapChildrenField
      } = treeOpts;
      const childrenField = treeOpts.children || treeOpts.childrenField;
      const funcName = isAppend ? 'push' : 'unshift';
      newRecords.forEach(item => {
        const parentRowId = item[parentField];
        const rowid = getRowid($xeTable, item);
        const matchObj = parentRowId ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(tableFullTreeData, item => parentRowId === item[rowField], {
          children: mapChildrenField
        }) : null;
        if (matchObj) {
          const {
            item: parentRow
          } = matchObj;
          const parentRest = fullAllDataRowIdData[getRowid($xeTable, parentRow)];
          const parentLevel = parentRest ? parentRest.level : 0;
          let pChilds = parentRow[childrenField];
          let pMapChilds = parentRow[mapChildrenField];
          if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(pChilds)) {
            pChilds = parentRow[childrenField] = [];
          }
          if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(pMapChilds)) {
            pMapChilds = parentRow[mapChildrenField] = [];
          }
          pChilds[funcName](item);
          pMapChilds[funcName](item);
          const rest = {
            row: item,
            rowid,
            _seq: -1,
            seq: -1,
            index: -1,
            _index: -1,
            $index: -1,
            treeIndex: -1,
            _tIndex: -1,
            items: pChilds,
            parent: parentRow,
            level: parentLevel + 1,
            height: 0,
            resizeHeight: 0,
            oTop: 0,
            expandHeight: 0
          };
          fullDataRowIdData[rowid] = rest;
          fullAllDataRowIdData[rowid] = rest;
        } else {
          if (parentRowId) {
            hook_warnLog('vxe.error.unableInsert');
          }
          afterFullData[funcName](item);
          tableFullTreeData[funcName](item);
          const rest = {
            row: item,
            rowid,
            _seq: -1,
            seq: -1,
            index: -1,
            _index: -1,
            $index: -1,
            treeIndex: -1,
            _tIndex: -1,
            items: tableFullTreeData,
            parent: null,
            level: 0,
            height: 0,
            resizeHeight: 0,
            oTop: 0,
            expandHeight: 0
          };
          fullDataRowIdData[rowid] = rest;
          fullAllDataRowIdData[rowid] = rest;
        }
      });
    };
    // const insertGroupRow = (newRecords: any[], isAppend: boolean) => {
    // }
    const handleInsertRowAt = (records, targetRowOrRowid, isInsertNextRow) => {
      const {
        treeConfig
      } = props;
      const {
        isRowGroupStatus
      } = reactData;
      const {
        tableFullTreeData,
        afterFullData,
        mergeBodyList,
        tableFullData,
        fullDataRowIdData,
        fullAllDataRowIdData,
        insertRowMaps,
        removeRowMaps
      } = internalData;
      const treeOpts = computeTreeOpts.value;
      const {
        transform,
        parentField,
        rowField,
        mapChildrenField
      } = treeOpts;
      const childrenField = treeOpts.children || treeOpts.childrenField;
      if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(records)) {
        records = [records];
      }
      let targetRow = targetRowOrRowid;
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(targetRowOrRowid) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(targetRowOrRowid)) {
        const rowRest = fullAllDataRowIdData[targetRowOrRowid];
        if (rowRest) {
          targetRow = rowRest.row;
        }
      }
      if (!records.length) {
        return Promise.resolve({
          row: null,
          rows: []
        });
      }
      $xeTable.handlePushStack();
      const newRecords = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)($xeTable.defineField(records.map(record => Object.assign(treeConfig && transform ? {
        [mapChildrenField]: [],
        [childrenField]: []
      } : {}, record))));
      let treeRecords = [];
      if (treeConfig && transform) {
        treeRecords = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toArrayTree(newRecords, {
          key: rowField,
          parentKey: parentField,
          children: childrenField
        });
      }
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(targetRow)) {
        // 如果为虚拟树
        if (treeConfig && transform) {
          insertTreeRow(newRecords, false);
        } else if (isRowGroupStatus) {
          // 如果分组
          if (treeConfig) {
            throw new Error(hook_getI18n('vxe.error.noTree', ['insert']));
          }
          hook_errLog(hook_getI18n('vxe.error.noGroup', ['insert']));
          // insertGroupRow(newRecords, false)
        } else {
          newRecords.forEach(item => {
            const rowid = getRowid($xeTable, item);
            const rest = {
              row: item,
              rowid,
              _seq: -1,
              seq: -1,
              index: -1,
              _index: -1,
              $index: -1,
              treeIndex: -1,
              _tIndex: -1,
              items: afterFullData,
              parent: null,
              level: 0,
              height: 0,
              resizeHeight: 0,
              oTop: 0,
              expandHeight: 0
            };
            fullDataRowIdData[rowid] = rest;
            fullAllDataRowIdData[rowid] = rest;
            afterFullData.unshift(item);
            tableFullData.unshift(item);
          });
          // 刷新单元格合并
          mergeBodyList.forEach(mergeItem => {
            const {
              row: mergeRowIndex
            } = mergeItem;
            if (mergeRowIndex >= 0) {
              mergeItem.row = mergeRowIndex + newRecords.length;
            }
          });
        }
      } else {
        if (targetRow === -1) {
          // 如果为虚拟树
          if (treeConfig && transform) {
            insertTreeRow(newRecords, true);
          } else if (isRowGroupStatus) {
            // 如果分组
            if (treeConfig) {
              throw new Error(hook_getI18n('vxe.error.noTree', ['insert']));
            }
            hook_errLog(hook_getI18n('vxe.error.noGroup', ['insert']));
            // insertGroupRow(newRecords, true)
          } else {
            newRecords.forEach(item => {
              const rowid = getRowid($xeTable, item);
              const rest = {
                row: item,
                rowid,
                _seq: -1,
                seq: -1,
                index: -1,
                _index: -1,
                treeIndex: -1,
                _tIndex: -1,
                $index: -1,
                items: afterFullData,
                parent: null,
                level: 0,
                height: 0,
                resizeHeight: 0,
                oTop: 0,
                expandHeight: 0
              };
              fullDataRowIdData[rowid] = rest;
              fullAllDataRowIdData[rowid] = rest;
              afterFullData.push(item);
              tableFullData.push(item);
            });
          }
        } else {
          // 如果为虚拟树
          if (treeConfig && transform) {
            const matchMapObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(tableFullTreeData, item => targetRow[rowField] === item[rowField], {
              children: mapChildrenField
            });
            if (matchMapObj) {
              const {
                parent: parentRow
              } = matchMapObj;
              const parentMapChilds = parentRow ? parentRow[mapChildrenField] : tableFullTreeData;
              const parentRest = fullAllDataRowIdData[getRowid($xeTable, parentRow)];
              const parentLevel = parentRest ? parentRest.level : 0;
              treeRecords.forEach((row, i) => {
                if (parentRow) {
                  if (row[parentField] !== parentRow[rowField]) {
                    hook_errLog('vxe.error.errProp', [`${parentField}=${row[parentField]}`, `${parentField}=${parentRow[rowField]}`]);
                    row[parentField] = parentRow[rowField];
                  }
                } else {
                  if (row[parentField] !== null) {
                    if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(row[parentField])) {
                      hook_errLog('vxe.error.errProp', [`${parentField}=${row[parentField]}`, 'null']);
                    }
                    row[parentField] = null;
                  }
                }
                let targetIndex = matchMapObj.index + i;
                if (isInsertNextRow) {
                  targetIndex = targetIndex + 1;
                }
                parentMapChilds.splice(targetIndex, 0, row);
              });
              external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(treeRecords, item => {
                const rowid = getRowid($xeTable, item);
                const rest = {
                  row: item,
                  rowid,
                  _seq: -1,
                  seq: -1,
                  index: -1,
                  _index: -1,
                  $index: -1,
                  treeIndex: -1,
                  _tIndex: -1,
                  items: parentMapChilds,
                  parent: parentRow,
                  level: parentLevel + 1,
                  height: 0,
                  resizeHeight: 0,
                  oTop: 0,
                  expandHeight: 0
                };
                if (item[childrenField]) {
                  item[mapChildrenField] = item[childrenField];
                }
                fullDataRowIdData[rowid] = rest;
                fullAllDataRowIdData[rowid] = rest;
              }, {
                children: childrenField
              });
              // 源
              if (parentRow) {
                const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(tableFullTreeData, item => targetRow[rowField] === item[rowField], {
                  children: childrenField
                });
                if (matchObj) {
                  const parentChilds = matchObj.items;
                  let targetIndex = matchObj.index;
                  if (isInsertNextRow) {
                    targetIndex = targetIndex + 1;
                  }
                  parentChilds.splice(targetIndex, 0, ...treeRecords);
                }
              }
            } else {
              hook_warnLog('vxe.error.unableInsert');
              insertTreeRow(newRecords, true);
            }
          } else if (isRowGroupStatus) {
            // 如果分组
            if (treeConfig) {
              throw new Error(hook_getI18n('vxe.error.noTree', ['insert']));
            }
            hook_errLog(hook_getI18n('vxe.error.noGroup', ['insert']));
          } else {
            if (treeConfig) {
              throw new Error(hook_getI18n('vxe.error.noTree', ['insert']));
            }
            let afIndex = -1;
            // 如果是可视索引
            if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(targetRow)) {
              if (targetRow < afterFullData.length) {
                afIndex = targetRow;
              }
            } else {
              afIndex = $xeTable.findRowIndexOf(afterFullData, targetRow);
            }
            // 如果是插入指定行的下一行
            if (isInsertNextRow) {
              afIndex = Math.min(afterFullData.length, afIndex + 1);
            }
            if (afIndex === -1) {
              throw new Error(hook_getI18n('vxe.error.unableInsert'));
            }
            afterFullData.splice(afIndex, 0, ...newRecords);
            const tfIndex = $xeTable.findRowIndexOf(tableFullData, targetRow);
            if (tfIndex > -1) {
              tableFullData.splice(tfIndex + (isInsertNextRow ? 1 : 0), 0, ...newRecords);
            } else {
              tableFullData.push(...newRecords);
            }
            // 刷新单元格合并
            mergeBodyList.forEach(mergeItem => {
              const {
                row: mergeRowIndex,
                rowspan: mergeRowspan
              } = mergeItem;
              if (mergeRowIndex >= afIndex) {
                mergeItem.row = mergeRowIndex + newRecords.length;
              } else if (isInsertNextRow ? mergeRowIndex + mergeRowspan >= afIndex : mergeRowIndex + mergeRowspan > afIndex) {
                mergeItem.rowspan = mergeRowspan + newRecords.length;
              }
            });
          }
        }
      }
      const handleStatus = newRow => {
        const rowid = getRowid($xeTable, newRow);
        // 如果是被删除的数据,则还原状态
        if (removeRowMaps[rowid]) {
          delete removeRowMaps[rowid];
          if (insertRowMaps[rowid]) {
            delete insertRowMaps[rowid];
          }
        } else {
          insertRowMaps[rowid] = newRow;
        }
      };
      // 如果为虚拟树
      if (treeConfig && transform) {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(treeRecords, handleStatus, {
          children: mapChildrenField
        });
      } else {
        newRecords.forEach(handleStatus);
      }
      reactData.removeRowFlag++;
      reactData.insertRowFlag++;
      $xeTable.cacheRowMap(false);
      $xeTable.updateScrollYStatus();
      $xeTable.handleTableData(treeConfig && transform);
      if (!(treeConfig && transform)) {
        $xeTable.updateAfterDataIndex();
      }
      $xeTable.updateFooter();
      $xeTable.handleUpdateBodyMerge();
      $xeTable.checkSelectionStatus();
      if (reactData.scrollYLoad) {
        $xeTable.updateScrollYSpace();
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
        $xeTable.updateCellAreas();
        return $xeTable.recalculate(true);
      }).then(() => {
        return {
          row: newRecords.length ? newRecords[newRecords.length - 1] : null,
          rows: newRecords
        };
      });
    };
    const handleInsertChildRowAt = (records, parentRowOrParentId, targetRow, isInsertNextRow) => {
      const {
        treeConfig
      } = props;
      const {
        fullAllDataRowIdData
      } = internalData;
      const treeOpts = computeTreeOpts.value;
      const {
        transform,
        rowField,
        parentField
      } = treeOpts;
      if (treeConfig && transform) {
        if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(records)) {
          records = [records];
        }
        let parentRow = parentRowOrParentId;
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(parentRowOrParentId) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(parentRowOrParentId)) {
          const rowRest = fullAllDataRowIdData[parentRowOrParentId];
          if (rowRest) {
            parentRow = rowRest.row;
          }
        }
        return handleInsertRowAt(records.map(item => Object.assign({}, item, {
          [parentField]: parentRow[rowField]
        })), targetRow, isInsertNextRow);
      } else {
        hook_errLog('vxe.error.errProp', ['tree-config.transform=false', 'tree-config.transform=true']);
      }
      return Promise.resolve({
        row: null,
        rows: []
      });
    };
    const handleClearEdit = (evnt, targetRow) => {
      const {
        editStore
      } = reactData;
      const {
        actived,
        focused
      } = editStore;
      const {
        row,
        column
      } = actived;
      const validOpts = computeValidOpts.value;
      if (row || column) {
        if (targetRow && getRowid($xeTable, targetRow) !== getRowid($xeTable, row)) {
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
        }
        syncActivedCell();
        $xeTable.updateFooter();
        actived.args = null;
        actived.row = null;
        actived.column = null;
        $xeTable.dispatchEvent('edit-closed', {
          row,
          rowIndex: $xeTable.getRowIndex(row),
          $rowIndex: $xeTable.getVMRowIndex(row),
          column,
          columnIndex: $xeTable.getColumnIndex(column),
          $columnIndex: $xeTable.getVMColumnIndex(column)
        }, evnt || null);
      }
      focused.row = null;
      focused.column = null;
      if (validOpts.autoClear) {
        if (validOpts.msgMode !== 'full' || hook_getConfig().cellVaildMode === 'obsolete') {
          if ($xeTable.clearValidate) {
            return $xeTable.clearValidate();
          }
        }
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => $xeTable.updateCellAreas());
    };
    const handleEditActive = (params, evnt, options) => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        editConfig,
        mouseConfig
      } = props;
      const {
        editStore,
        tableColumn
      } = reactData;
      const editOpts = computeEditOpts.value;
      const {
        mode
      } = editOpts;
      const {
        actived,
        focused
      } = editStore;
      const {
        row,
        column
      } = params;
      const {
        editRender
      } = column;
      const {
        isFocus,
        isPos,
        isClear
      } = options;
      const cell = params.cell || $xeTable.getCellElement(row, column);
      const beforeEditMethod = editOpts.beforeEditMethod || editOpts.activeMethod;
      const editParams = {
        ...params,
        cell
      };
      if (cell && isEnableConf(editConfig) && isEnableConf(editRender)) {
        // 激活编辑
        if (!$xeTable.isPendingByRow(row) && !$xeTable.isAggregateRecord(row)) {
          if (actived.row !== row || (mode === 'cell' ? actived.column !== column : false)) {
            // 判断是否禁用编辑
            let type = 'edit-disabled';
            if (!beforeEditMethod || beforeEditMethod({
              ...editParams,
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt
            })) {
              if (mouseConfig) {
                $xeTable.clearSelected();
                if ($xeTable.clearCellAreas) {
                  $xeTable.clearCellAreas();
                  $xeTable.clearCopyCellArea();
                }
              }
              $xeTable.closeTooltip();
              if (actived.column) {
                handleClearEdit(evnt);
              }
              type = 'edit-activated';
              column.renderHeight = cell.offsetHeight;
              actived.args = editParams;
              actived.row = row;
              actived.column = column;
              $xeTable.handlePushStack();
              if (isClear) {
                setCellValue(row, column, null);
              }
              if (mode === 'row') {
                tableColumn.forEach(column => getEditColumnModel(row, column));
              } else {
                getEditColumnModel(row, column);
              }
              const afterEditMethod = editOpts.afterEditMethod;
              (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
                if (isFocus) {
                  $xeTable.handleFocus(editParams, evnt);
                }
                if (afterEditMethod) {
                  afterEditMethod({
                    ...editParams,
                    $table: $xeTable,
                    $grid: $xeGrid,
                    $gantt: $xeGantt
                  });
                }
              });
            }
            $xeTable.dispatchEvent(type, {
              row,
              rowIndex: $xeTable.getRowIndex(row),
              $rowIndex: $xeTable.getVMRowIndex(row),
              column,
              columnIndex: $xeTable.getColumnIndex(column),
              $columnIndex: $xeTable.getVMColumnIndex(column)
            }, evnt);
            // v4已废弃
            if (type === 'edit-activated') {
              $xeTable.dispatchEvent('edit-actived', {
                row,
                rowIndex: $xeTable.getRowIndex(row),
                $rowIndex: $xeTable.getVMRowIndex(row),
                column,
                columnIndex: $xeTable.getColumnIndex(column),
                $columnIndex: $xeTable.getVMColumnIndex(column)
              }, evnt);
            }
          } else {
            const {
              column: oldColumn
            } = actived;
            if (mouseConfig) {
              $xeTable.clearSelected();
              if ($xeTable.clearCellAreas) {
                $xeTable.clearCellAreas();
                $xeTable.clearCopyCellArea();
              }
            }
            if (oldColumn && oldColumn !== column) {
              const {
                model: oldModel
              } = oldColumn;
              if (oldModel.update) {
                setCellValue(row, oldColumn, oldModel.value);
              }
              if ($xeTable.clearValidate) {
                $xeTable.clearValidate(row, column);
              }
            }
            column.renderHeight = cell.offsetHeight;
            actived.args = editParams;
            actived.column = column;
            if (isPos) {
              setTimeout(() => {
                $xeTable.handleFocus(editParams, evnt);
              });
            }
          }
          focused.column = null;
          focused.row = null;
          $xeTable.focus();
        }
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    const handleEditCell = (row, fieldOrColumn, options) => {
      const {
        editConfig
      } = props;
      const {
        isPos
      } = options;
      const column = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn;
      if (row && column && isEnableConf(editConfig) && isEnableConf(column.editRender) && !$xeTable.isAggregateRecord(row)) {
        return Promise.resolve(isPos ? $xeTable.scrollToRow(row, column) : null).then(() => {
          const cell = $xeTable.getCellElement(row, column);
          if (cell) {
            handleEditActive({
              row,
              rowIndex: $xeTable.getRowIndex(row),
              $rowIndex: $xeTable.getVMRowIndex(row),
              _rowIndex: $xeTable.getVTRowIndex(row),
              column,
              columnIndex: $xeTable.getColumnIndex(column),
              $columnIndex: $xeTable.getVMColumnIndex(column),
              _columnIndex: $xeTable.getVTColumnIndex(column),
              cell,
              $table: $xeTable
            }, null, {
              isFocus: isPos,
              isPos
            });
            internalData._lastCallTime = Date.now();
          }
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
        });
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    editMethods = {
      /**
       * 往表格中插入临时数据
       *
       * @param {*} records
       */
      insert(records) {
        return handleInsertRowAt(records, null);
      },
      /**
       * 往表格指定行中插入临时数据
       * 如果 row 为空则从插入到顶部,如果为树结构,则插入到目标节点顶部
       * 如果 row 为 -1 则从插入到底部,如果为树结构,则插入到目标节点底部
       * 如果 row 为有效行则插入到该行的位置,如果为树结构,则有插入到效的目标节点该行的位置
       */
      insertAt(records, targetRowOrRowid) {
        return handleInsertRowAt(records, targetRowOrRowid);
      },
      insertNextAt(records, targetRowOrRowid) {
        return handleInsertRowAt(records, targetRowOrRowid, true);
      },
      insertChild(records, parentRowOrParentId) {
        return handleInsertChildRowAt(records, parentRowOrParentId, null);
      },
      insertChildAt(records, parentRowOrParentId, targetRow) {
        return handleInsertChildRowAt(records, parentRowOrParentId, targetRow);
      },
      insertChildNextAt(records, parentRowOrParentId, targetRow) {
        return handleInsertChildRowAt(records, parentRowOrParentId, targetRow, true);
      },
      /**
       * 删除指定行数据
       * 如果传 row 则删除一行
       * 如果传 rows 则删除多行
       * 如果为空则删除所有
       */
      remove(rows) {
        const {
          treeConfig
        } = props;
        const {
          editStore,
          isRowGroupStatus
        } = reactData;
        const {
          tableFullTreeData,
          selectCheckboxMaps,
          afterFullData,
          mergeBodyList,
          tableFullData,
          pendingRowMaps,
          insertRowMaps,
          removeRowMaps
        } = internalData;
        const checkboxOpts = computeCheckboxOpts.value;
        const treeOpts = computeTreeOpts.value;
        const {
          transform,
          mapChildrenField
        } = treeOpts;
        const childrenField = treeOpts.children || treeOpts.childrenField;
        const {
          actived
        } = editStore;
        const {
          checkField
        } = checkboxOpts;
        let delList = [];
        if (!rows) {
          rows = tableFullData;
        } else if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)) {
          rows = [rows];
        }
        if (!rows.length) {
          return Promise.resolve({
            row: null,
            rows: []
          });
        }
        $xeTable.handlePushStack();
        // 如果是新增,则保存记录
        rows.forEach(row => {
          if (!$xeTable.isInsertByRow(row)) {
            const rowid = getRowid($xeTable, row);
            removeRowMaps[rowid] = row;
          }
        });
        // 如果绑定了多选属性,则更新状态
        if (!checkField) {
          rows.forEach(row => {
            const rowid = getRowid($xeTable, row);
            if (selectCheckboxMaps[rowid]) {
              delete selectCheckboxMaps[rowid];
            }
          });
          reactData.updateCheckboxFlag++;
        }
        // 从数据源中移除
        if (tableFullData === rows) {
          rows = delList = tableFullData.slice(0);
          internalData.tableFullData = [];
          internalData.afterFullData = [];
          $xeTable.clearMergeCells();
        } else {
          // 如果为虚拟树
          if (treeConfig && transform) {
            rows.forEach(row => {
              const rowid = getRowid($xeTable, row);
              const matchMapObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(tableFullTreeData, item => rowid === getRowid($xeTable, item), {
                children: mapChildrenField
              });
              if (matchMapObj) {
                const rItems = matchMapObj.items.splice(matchMapObj.index, 1);
                delList.push(rItems[0]);
              }
              const matchObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(tableFullTreeData, item => rowid === getRowid($xeTable, item), {
                children: childrenField
              });
              if (matchObj) {
                matchObj.items.splice(matchObj.index, 1);
              }
              const afIndex = $xeTable.findRowIndexOf(afterFullData, row);
              if (afIndex > -1) {
                afterFullData.splice(afIndex, 1);
              }
            });
          } else if (isRowGroupStatus) {
            // 如果分组
            hook_warnLog(hook_getI18n('vxe.error.noGroup', ['remove']));
          } else {
            rows.forEach(row => {
              const tfIndex = $xeTable.findRowIndexOf(tableFullData, row);
              if (tfIndex > -1) {
                const rItems = tableFullData.splice(tfIndex, 1);
                delList.push(rItems[0]);
              }
              const afIndex = $xeTable.findRowIndexOf(afterFullData, row);
              if (afIndex > -1) {
                // 刷新单元格合并
                mergeBodyList.forEach(mergeItem => {
                  const {
                    row: mergeRowIndex,
                    rowspan: mergeRowspan
                  } = mergeItem;
                  if (mergeRowIndex > afIndex) {
                    mergeItem.row = mergeRowIndex - 1;
                  } else if (mergeRowIndex + mergeRowspan > afIndex) {
                    mergeItem.rowspan = mergeRowspan - 1;
                  }
                });
                afterFullData.splice(afIndex, 1);
              }
            });
          }
        }
        // 如果当前行被激活编辑,则清除激活状态
        if (actived.row && $xeTable.findRowIndexOf(rows, actived.row) > -1) {
          editMethods.clearEdit();
        }
        // 从新增中移除已删除的数据
        rows.forEach(row => {
          const rowid = getRowid($xeTable, row);
          if (insertRowMaps[rowid]) {
            delete insertRowMaps[rowid];
          }
          if (pendingRowMaps[rowid]) {
            delete pendingRowMaps[rowid];
          }
        });
        reactData.removeRowFlag++;
        reactData.insertRowFlag++;
        reactData.pendingRowFlag++;
        $xeTable.cacheRowMap(false);
        $xeTable.handleTableData(treeConfig && transform);
        $xeTable.updateFooter();
        $xeTable.handleUpdateBodyMerge();
        if (!(treeConfig && transform)) {
          $xeTable.updateAfterDataIndex();
        }
        $xeTable.checkSelectionStatus();
        if (reactData.scrollYLoad) {
          $xeTable.updateScrollYSpace();
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
          $xeTable.updateCellAreas();
          return $xeTable.recalculate(true);
        }).then(() => {
          return {
            row: delList.length ? delList[delList.length - 1] : null,
            rows: delList
          };
        });
      },
      /**
       * 删除复选框选中的数据
       */
      removeCheckboxRow() {
        return editMethods.remove($xeTable.getCheckboxRecords()).then(params => {
          $xeTable.clearCheckboxRow();
          return params;
        });
      },
      /**
       * 删除单选框选中的数据
       */
      removeRadioRow() {
        const radioRecord = $xeTable.getRadioRecord();
        return editMethods.remove(radioRecord || []).then(params => {
          $xeTable.clearRadioRow();
          return params;
        });
      },
      /**
       * 删除当前行选中的数据
       */
      removeCurrentRow() {
        const currentRecord = $xeTable.getCurrentRecord();
        return editMethods.remove(currentRecord || []).then(params => {
          $xeTable.clearCurrentRow();
          return params;
        });
      },
      /**
       * 获取表格数据集,包含新增、删除、修改、标记
       */
      getRecordset() {
        const removeRecords = editMethods.getRemoveRecords();
        const pendingRecords = $xeTable.getPendingRecords();
        const delRecords = removeRecords.concat(pendingRecords);
        // 如果已经被删除,则无需放到更新数组
        const updateRecords = editMethods.getUpdateRecords().filter(row => {
          return !delRecords.some(item => $xeTable.eqRow(item, row));
        });
        return {
          insertRecords: editMethods.getInsertRecords(),
          removeRecords,
          updateRecords,
          pendingRecords
        };
      },
      /**
       * 获取新增的临时数据
       */
      getInsertRecords() {
        const {
          fullAllDataRowIdData,
          insertRowMaps
        } = internalData;
        const insertRecords = [];
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(insertRowMaps, (row, rowid) => {
          if (fullAllDataRowIdData[rowid]) {
            insertRecords.push(row);
          }
        });
        return insertRecords;
      },
      /**
       * 获取已删除的数据
       */
      getRemoveRecords() {
        const {
          removeRowMaps
        } = internalData;
        const removeRecords = [];
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(removeRowMaps, row => {
          removeRecords.push(row);
        });
        return removeRecords;
      },
      /**
       * 获取更新数据
       * 只精准匹配 row 的更改
       * 如果是树表格,子节点更改状态不会影响父节点的更新状态
       */
      getUpdateRecords() {
        const {
          keepSource,
          treeConfig
        } = props;
        const {
          tableFullData,
          tableFullTreeData
        } = internalData;
        const treeOpts = computeTreeOpts.value;
        const updateRecords = [];
        if (keepSource) {
          syncActivedCell();
          if (treeConfig) {
            const childrenField = treeOpts.children || treeOpts.childrenField;
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullTreeData, row => {
              if ($xeTable.isUpdateByRow(row)) {
                updateRecords.push(row);
              }
            }, {
              children: childrenField
            });
          } else {
            tableFullData.forEach(row => {
              if ($xeTable.isUpdateByRow(row)) {
                updateRecords.push(row);
              }
            });
          }
        }
        return updateRecords;
      },
      getActiveRecord() {
        hook_warnLog('vxe.error.delFunc', ['getActiveRecord', 'getEditCell']);
        const {
          editStore
        } = reactData;
        const {
          fullAllDataRowIdData
        } = internalData;
        const {
          args,
          row
        } = editStore.actived;
        if (args && row && fullAllDataRowIdData[getRowid($xeTable, row)]) {
          return Object.assign({}, args, {
            row
          });
        }
        return null;
      },
      getEditRecord() {
        hook_warnLog('vxe.error.delFunc', ['getEditRecord', 'getEditCell']);
        const {
          editStore
        } = reactData;
        const {
          fullAllDataRowIdData
        } = internalData;
        const {
          args,
          row
        } = editStore.actived;
        if (args && row && fullAllDataRowIdData[getRowid($xeTable, row)]) {
          return Object.assign({}, args, {
            row
          });
        }
        return null;
      },
      getEditCell() {
        const {
          editStore
        } = reactData;
        const {
          row,
          column
        } = editStore.actived;
        if (column && row) {
          return {
            row,
            rowIndex: $xeTable.getRowIndex(row),
            column,
            columnIndex: $xeTable.getColumnIndex(column)
          };
        }
        return null;
      },
      /**
       * 获取选中的单元格
       */
      getSelectedCell() {
        const {
          editStore
        } = reactData;
        const {
          row,
          column
        } = editStore.selected;
        if (row && column) {
          return {
            row,
            column
          };
        }
        return null;
      },
      clearActived(row) {
        // 即将废弃
        hook_warnLog('vxe.error.delFunc', ['clearActived', 'clearEdit']);
        return $xeTable.clearEdit(row);
      },
      /**
       * 清除激活的编辑
       */
      clearEdit(row) {
        return handleClearEdit(null, row);
      },
      /**
       * 清除所选中源状态
       */
      clearSelected() {
        const {
          editStore
        } = reactData;
        const {
          selected
        } = editStore;
        selected.row = null;
        selected.column = null;
        removeCellSelectedClass();
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      isActiveByRow(row) {
        hook_warnLog('vxe.error.delFunc', ['isActiveByRow', 'isEditByRow']);
        // 即将废弃
        return $xeTable.isEditByRow(row);
      },
      /**
       * 判断行是否为激活编辑状态
       * @param {Row} row 行对象
       */
      isEditByRow(row) {
        const {
          editStore
        } = reactData;
        return editStore.actived.row === row;
      },
      setActiveRow(row) {
        hook_warnLog('vxe.error.delFunc', ['setActiveRow', 'setEditRow']);
        // 即将废弃
        return editMethods.setEditRow(row);
      },
      /**
       * 激活行编辑
       */
      setEditRow(row, fieldOrColumn, options) {
        const {
          visibleColumn
        } = internalData;
        let column = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().find(visibleColumn, column => isEnableConf(column.editRender));
        let isPos = false;
        if (fieldOrColumn) {
          isPos = true;
          if (fieldOrColumn !== true) {
            column = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn;
          }
        }
        return handleEditCell(row, column, Object.assign({
          isPos,
          isFocus: isPos
        }, options));
      },
      setActiveCell(row, fieldOrColumn) {
        hook_warnLog('vxe.error.delFunc', ['setActiveCell', 'setEditCell']);
        // 即将废弃
        return editMethods.setEditCell(row, fieldOrColumn);
      },
      /**
       * 激活单元格编辑
       */
      setEditCell(row, fieldOrColumn, options) {
        return handleEditCell(row, fieldOrColumn, Object.assign({
          isFocus: true,
          isPos: true
        }, options));
      },
      /**
       * 只对 trigger=dblclick 有效,选中单元格
       */
      setSelectCell(row, fieldOrColumn) {
        const {
          tableData
        } = reactData;
        const editOpts = computeEditOpts.value;
        const column = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(fieldOrColumn) ? $xeTable.getColumnByField(fieldOrColumn) : fieldOrColumn;
        if (row && column && editOpts.trigger !== 'manual') {
          const rowIndex = $xeTable.findRowIndexOf(tableData, row);
          if (rowIndex > -1 && column) {
            const cell = $xeTable.getCellElement(row, column);
            const params = {
              $table: $xeTable,
              row,
              rowIndex,
              $rowIndex: $xeTable.getVMRowIndex(row),
              _rowIndex: $xeTable.getVTRowIndex(row),
              column,
              columnIndex: $xeTable.getColumnIndex(column),
              $columnIndex: $xeTable.getVMColumnIndex(column),
              _columnIndex: $xeTable.getVTColumnIndex(column),
              cell
            };
            $xeTable.handleSelected(params, null);
          }
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      }
    };
    const handleCellFocus = (cell, params) => {
      const {
        editConfig
      } = props;
      const {
        column
      } = params;
      const {
        editRender
      } = column;
      const editOpts = computeEditOpts.value;
      if (editConfig && isEnableConf(editRender)) {
        const compRender = edit_hook_renderer.get(editRender.name);
        let autoFocus = editRender.autofocus || editRender.autoFocus;
        let autoSelect = editRender.autoSelect || editRender.autoselect;
        let inputElem = null;
        // 是否启用聚焦
        if (editOpts.autoFocus) {
          if (!autoFocus && compRender) {
            autoFocus = compRender.tableAutoFocus || compRender.tableAutofocus || compRender.autofocus;
          }
          if (!autoSelect && compRender) {
            autoSelect = compRender.tableAutoSelect || compRender.autoselect;
          }
          // 如果指定了聚焦 class
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(autoFocus)) {
            inputElem = autoFocus(params);
          } else if (autoFocus) {
            if (autoFocus === true) {
              // 自动匹配模式,会自动匹配第一个可输入元素
              inputElem = cell.querySelector('input,textarea');
            } else {
              inputElem = cell.querySelector(autoFocus);
            }
            if (inputElem) {
              inputElem.focus();
            }
          }
        }
        return inputElem;
      }
      return null;
    };
    editPrivateMethods = {
      /**
       * 处理激活编辑
       */
      handleEdit(params, evnt, options) {
        return handleEditActive(params, evnt, Object.assign({
          isFocus: true,
          isPos: true
        }, options));
      },
      /**
       * @deprecated
       */
      handleActived(params, evnt) {
        return editPrivateMethods.handleEdit(params, evnt);
      },
      /**
       * 处理取消编辑
       * @param evnt
       * @returns
       */
      handleClearEdit,
      handleCellFocus,
      /**
       * 处理聚焦
       */
      handleFocus(params) {
        const {
          row,
          column,
          cell
        } = params;
        const {
          editRender
        } = column;
        const editOpts = computeEditOpts.value;
        if (isEnableConf(editRender)) {
          const autoSelect = editRender.autoSelect || editRender.autoselect;
          const inputElem = handleCellFocus(cell, params);
          if (inputElem) {
            if (autoSelect) {
              inputElem.select();
            } else {
              // 保持一致行为,光标移到末端
              if (browseObj.msie) {
                const textRange = inputElem.createTextRange();
                textRange.collapse(false);
                textRange.select();
              }
            }
          } else {
            // 是否自动定位
            if (editOpts.autoPos) {
              if (!column.fixed) {
                // 显示到可视区中
                $xeTable.scrollToRow(row, column);
              }
            }
          }
        }
      },
      /**
       * 处理选中源
       */
      handleSelected(params, evnt) {
        const {
          mouseConfig,
          editConfig
        } = props;
        const {
          editStore
        } = reactData;
        const mouseOpts = computeMouseOpts.value;
        const editOpts = computeEditOpts.value;
        const {
          actived,
          selected
        } = editStore;
        const {
          row,
          column
        } = params;
        const isMouseSelected = mouseConfig && mouseOpts.selected;
        const selectMethod = () => {
          if (isMouseSelected && (selected.row !== row || selected.column !== column)) {
            if (actived.row !== row || (editOpts.mode === 'cell' ? actived.column !== column : false)) {
              handleClearEdit(evnt);
              $xeTable.clearSelected();
              if ($xeTable.clearCellAreas) {
                $xeTable.clearCellAreas();
                $xeTable.clearCopyCellArea();
              }
              selected.args = params;
              selected.row = row;
              selected.column = column;
              if (isMouseSelected) {
                editPrivateMethods.addCellSelectedClass();
              }
              $xeTable.focus();
              // 如果是支持可复用控件
              if (editConfig && editOpts.isReuseKeep && isEnableConf(editOpts) && isEnableConf(column.editRender)) {
                setTimeout(() => {
                  const cell = $xeTable.getCellElement(row, column);
                  if (cell) {
                    const hasReusekeep = cell.querySelector('.vxe-reusekeep-control');
                    if (hasReusekeep) {
                      handleCellFocus(cell, params);
                    }
                  }
                }, 0);
              }
              if (evnt) {
                $xeTable.dispatchEvent('cell-selected', params, evnt);
              }
            }
          }
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
        };
        return selectMethod();
      },
      addCellSelectedClass() {
        const {
          editStore
        } = reactData;
        const {
          selected
        } = editStore;
        const {
          row,
          column
        } = selected;
        removeCellSelectedClass();
        if (row && column) {
          const cell = $xeTable.getCellElement(row, column);
          if (cell) {
            addClass(cell, 'col--selected');
          }
        }
      }
    };
    return {
      ...editMethods,
      ...editPrivateMethods
    };
  },
  setupGrid($xeGrid) {
    return $xeGrid.extendTableMethods(tableEditMethodKeys);
  },
  setupGantt($xeGantt) {
    return $xeGantt.extendTableMethods(tableEditMethodKeys);
  }
});
;// ./packages/table/module/export/util.ts
// 默认导出或打印的 HTML 样式
const defaultHtmlStyle = 'body{padding:0;color:rgba(0,0,0,0.7);font-family:"Microsoft YaHei",微软雅黑,"MicrosoftJhengHei",华文细黑,STHeiti,MingLiu}body *{-webkit-box-sizing:border-box;box-sizing:border-box}.vxe-table{border-collapse:collapse;text-align:left;border-spacing:0}.vxe-table.is--default-width,.vxe-table.is--auto-width{width:100%}.vxe-table.is--scale-width{table-layout:fixed}.vxe-table,.vxe-table th,.vxe-table td,.vxe-table td{white-space:pre-line;word-break:break-all;border-color:#D0D0D0;border-style:solid;border-width:0}.border--default,.border--full,.border--outer{border-top-width:1px}.border--default,.border--full,.border--outer{border-left-width:1px}.border--outer,.border--default th,.border--default td,.border--full th,.border--full td,.border--outer th,.border--inner th,.border--inner td{border-bottom-width:1px}.border--default,.border--outer,.border--full th,.border--full td{border-right-width:1px}.border--default th,.border--full th,.border--outer th{background-color:#f8f8f9}.vxe-table td>div,.vxe-table th>div{padding:0.5em 0.4em}.col--center{text-align:center}.col--right{text-align:right}.vxe-table .col--ellipsis>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;word-break:break-all}.vxe-table--tree-node{text-align:left}.vxe-table--tree-node-wrapper{position:relative}.vxe-table--tree-icon-wrapper{position:absolute;top:50%;width:1em;height:1em;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:pointer}.vxe-table--tree-unfold-icon,.vxe-table--tree-fold-icon{position:absolute;width:0;height:0;border-style:solid;border-width:0.5em;border-right-color:transparent;border-bottom-color:transparent}.vxe-table--tree-unfold-icon{left:.3em;top:0;border-left-color:#939599;border-top-color:transparent}.vxe-table--tree-fold-icon{left:0;top:.3em;border-left-color:transparent;border-top-color:#939599}.vxe-table--tree-cell{display:block;padding-left:1.5em}.vxe-table input[type="checkbox"]{margin:0}.vxe-table input[type="checkbox"],.vxe-table input[type="radio"],.vxe-table input[type="checkbox"]+span,.vxe-table input[type="radio"]+span{vertical-align:middle;padding-left:0.4em}';
function getExportBlobByContent(content, options) {
  return new Blob([content], {
    type: `text/${options.type};charset=utf-8;`
  });
}
function createHtmlPage(opts, content) {
  const {
    style
  } = opts;
  return ['<!DOCTYPE html><html>', '<head>', '<meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,minimal-ui">', `<title>${opts.sheetName}</title>`, '<style media="print">.vxe-page-break-before{page-break-before:always;}.vxe-page-break-after{page-break-after:always;}</style>', `<style>${defaultHtmlStyle}</style>`, style ? `<style>${style}</style>` : '', '</head>', `<body>${content}</body>`, '</html>'].join('');
}
;// ./packages/table/module/export/hook.ts
















const {
  warnLog: export_hook_warnLog,
  errLog: export_hook_errLog
} = createComponentLog('table');
const {
  getI18n: export_hook_getI18n,
  hooks: export_hook_hooks,
  renderer: export_hook_renderer
} = core_.VxeUI;
let htmlCellElem;
const csvBOM = '\ufeff';
const enterSymbol = '\r\n';
function defaultFilterExportColumn(column) {
  return !!column.field || ['seq', 'checkbox', 'radio'].indexOf(column.type || '') === -1;
}
const getConvertColumns = columns => {
  const result = [];
  columns.forEach(column => {
    if (column.childNodes && column.childNodes.length) {
      result.push(column);
      result.push(...getConvertColumns(column.childNodes));
    } else {
      result.push(column);
    }
  });
  return result;
};
const convertToRows = originColumns => {
  let maxLevel = 1;
  const traverse = (column, parent) => {
    if (parent) {
      column._level = parent._level + 1;
      if (maxLevel < column._level) {
        maxLevel = column._level;
      }
    }
    if (column.childNodes && column.childNodes.length) {
      let colSpan = 0;
      column.childNodes.forEach(subColumn => {
        traverse(subColumn, column);
        colSpan += subColumn._colSpan;
      });
      column._colSpan = colSpan;
    } else {
      column._colSpan = 1;
    }
  };
  originColumns.forEach(column => {
    column._level = 1;
    traverse(column);
  });
  const rows = [];
  for (let i = 0; i < maxLevel; i++) {
    rows.push([]);
  }
  const allColumns = getConvertColumns(originColumns);
  allColumns.forEach(column => {
    if (column.childNodes && column.childNodes.length) {
      column._rowSpan = 1;
    } else {
      column._rowSpan = maxLevel - column._level + 1;
    }
    rows[column._level - 1].push(column);
  });
  return rows;
};
function toTableBorder(border) {
  if (border === true) {
    return 'full';
  }
  if (border) {
    return border;
  }
  return 'default';
}
function getBooleanValue(cellValue) {
  return cellValue === 'TRUE' || cellValue === 'true' || cellValue === true;
}
function getFooterData($xeTable, opts, footerTableData) {
  const $xeGrid = $xeTable.xeGrid;
  const $xeGantt = $xeTable.xeGantt;
  const {
    footerFilterMethod
  } = opts;
  return footerFilterMethod ? footerTableData.filter((items, index) => footerFilterMethod({
    $table: $xeTable,
    $grid: $xeGrid,
    $gantt: $xeGantt,
    items,
    $rowIndex: index
  })) : footerTableData;
}
function getCsvCellTypeLabel(column, cellValue) {
  if (cellValue) {
    if (column.type === 'seq') {
      return `\t${cellValue}`;
    }
    switch (column.cellType) {
      case 'string':
        if (!isNaN(cellValue)) {
          return `\t${cellValue}`;
        }
        break;
      case 'number':
        break;
      default:
        if (cellValue.length >= 12 && !isNaN(cellValue)) {
          return `\t${cellValue}`;
        }
        break;
    }
  }
  return cellValue;
}
function toTxtCellLabel(val) {
  if (/[",\s\n]/.test(val)) {
    return `"${val.replace(/"/g, '""')}"`;
  }
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(val) ? '' : val;
}
function getElementsByTagName(elem, qualifiedName) {
  return elem.getElementsByTagName(qualifiedName);
}
function getTxtCellKey(now) {
  return `#${now}@${external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId()}`;
}
function replaceTxtCell(cell, vMaps) {
  return cell.replace(/#\d+@\d+/g, key => external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().hasOwnProp(vMaps, key) ? vMaps[key] : key);
}
function getTxtCellValue(val, vMaps) {
  const rest = replaceTxtCell(val, vMaps);
  return rest.replace(/^"+$/g, qVal => '"'.repeat(Math.ceil(qVal.length / 2)));
}
function toExportField(tableConf, field) {
  const {
    fieldMaps,
    titleMaps
  } = tableConf;
  // title 转 field
  if (!fieldMaps[field]) {
    const teCol = titleMaps[field];
    if (teCol && teCol.field) {
      field = teCol.field;
    }
  }
  return field;
}
function parseCsvAndTxt(tableConf, content, cellSeparator) {
  const list = content.split(enterSymbol);
  const rows = [];
  let fields = [];
  if (list.length) {
    const vMaps = {};
    const now = Date.now();
    list.forEach(rVal => {
      if (rVal) {
        const item = {};
        rVal = rVal.replace(/("")|(\n)/g, (text, dVal) => {
          const key = getTxtCellKey(now);
          vMaps[key] = dVal ? '"' : '\n';
          return key;
        }).replace(/"(.*?)"/g, (text, cVal) => {
          const key = getTxtCellKey(now);
          vMaps[key] = replaceTxtCell(cVal, vMaps);
          return key;
        });
        const cells = rVal.split(cellSeparator);
        if (!fields.length) {
          fields = cells.map(val => toExportField(tableConf, getTxtCellValue(val.trim(), vMaps)));
        } else {
          cells.forEach((val, colIndex) => {
            if (colIndex < fields.length) {
              item[fields[colIndex]] = getTxtCellValue(val.trim(), vMaps);
            }
          });
          rows.push(item);
        }
      }
    });
  }
  return {
    fields,
    rows
  };
}
function parseCsv(tableConf, content) {
  return parseCsvAndTxt(tableConf, content, ',');
}
function parseTxt(tableConf, content) {
  return parseCsvAndTxt(tableConf, content, '\t');
}
function parseHTML(tableConf, content) {
  const domParser = new DOMParser();
  const xmlDoc = domParser.parseFromString(content, 'text/html');
  const bodyNodes = getElementsByTagName(xmlDoc, 'body');
  const rows = [];
  const fields = [];
  if (bodyNodes.length) {
    const tableNodes = getElementsByTagName(bodyNodes[0], 'table');
    if (tableNodes.length) {
      const theadNodes = getElementsByTagName(tableNodes[0], 'thead');
      if (theadNodes.length) {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(getElementsByTagName(theadNodes[0], 'tr'), rowNode => {
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(getElementsByTagName(rowNode, 'th'), cellNode => {
            fields.push(toExportField(tableConf, cellNode.textContent || ''));
          });
        });
        const tbodyNodes = getElementsByTagName(tableNodes[0], 'tbody');
        if (tbodyNodes.length) {
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(getElementsByTagName(tbodyNodes[0], 'tr'), rowNode => {
            const item = {};
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(getElementsByTagName(rowNode, 'td'), (cellNode, colIndex) => {
              if (fields[colIndex]) {
                item[fields[colIndex]] = cellNode.textContent || '';
              }
            });
            rows.push(item);
          });
        }
      }
    }
  }
  return {
    fields,
    rows
  };
}
function parseXML(tableConf, content) {
  const domParser = new DOMParser();
  const xmlDoc = domParser.parseFromString(content, 'application/xml');
  const sheetNodes = getElementsByTagName(xmlDoc, 'Worksheet');
  const rows = [];
  const fields = [];
  if (sheetNodes.length) {
    const tableNodes = getElementsByTagName(sheetNodes[0], 'Table');
    if (tableNodes.length) {
      const rowNodes = getElementsByTagName(tableNodes[0], 'Row');
      if (rowNodes.length) {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(getElementsByTagName(rowNodes[0], 'Cell'), cellNode => {
          fields.push(toExportField(tableConf, cellNode.textContent || ''));
        });
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(rowNodes, (rowNode, index) => {
          if (index) {
            const item = {};
            const cellNodes = getElementsByTagName(rowNode, 'Cell');
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(cellNodes, (cellNode, colIndex) => {
              if (fields[colIndex]) {
                item[fields[colIndex]] = cellNode.textContent;
              }
            });
            rows.push(item);
          }
        });
      }
    }
  }
  return {
    fields,
    rows
  };
}
function clearColumnConvert(columns) {
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(columns, column => {
    delete column._level;
    delete column._colSpan;
    delete column._rowSpan;
    delete column._children;
    delete column.childNodes;
  }, {
    children: 'children'
  });
}
const tableExportMethodKeys = ['exportData', 'importByFile', 'importData', 'saveFile', 'readFile', 'print', 'getPrintHtml', 'openImport', 'closeImport', 'openExport', 'closeExport', 'openPrint', 'closePrint'];
export_hook_hooks.add('tableExportModule', {
  setupTable($xeTable) {
    const {
      props,
      reactData,
      internalData
    } = $xeTable;
    const {
      computeTreeOpts,
      computePrintOpts,
      computeExportOpts,
      computeImportOpts,
      computeCustomOpts,
      computeSeqOpts,
      computeRadioOpts,
      computeCheckboxOpts,
      computeColumnOpts,
      computeAggregateOpts
    } = $xeTable.getComputeMaps();
    const getSeq = (cellValue, row, $rowIndex, column, $columnIndex) => {
      const seqOpts = computeSeqOpts.value;
      const seqMd = seqOpts.seqMethod || column.seqMethod;
      if (seqMd) {
        return seqMd({
          $table: $xeTable,
          row,
          rowIndex: $xeTable.getRowIndex(row),
          _rowIndex: $xeTable.getVTRowIndex(row),
          $rowIndex,
          column,
          columnIndex: $xeTable.getColumnIndex(column),
          _columnIndex: $xeTable.getVTColumnIndex(column),
          $columnIndex
        });
      }
      return cellValue;
    };
    function getHeaderTitle(opts, column) {
      const columnOpts = computeColumnOpts.value;
      const headExportMethod = column.headerExportMethod || columnOpts.headerExportMethod;
      return headExportMethod ? headExportMethod({
        column,
        options: opts,
        $table: $xeTable
      }) : (opts.isTitle ? $xeTable.getHeaderCellLabel(column) : column.field) || '';
    }
    const toBooleanValue = cellValue => {
      return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(cellValue) ? cellValue ? 'TRUE' : 'FALSE' : cellValue;
    };
    const toStringValue = cellValue => {
      return eqEmptyValue(cellValue) ? '' : `${cellValue}`;
    };
    const getBodyLabelData = (opts, columns, datas) => {
      const {
        isTreeAllExpanded,
        isRowGroupAllExpanded,
        mode: expMode
      } = opts;
      const {
        treeConfig
      } = props;
      const {
        isRowGroupStatus
      } = reactData;
      const {
        fullColumnFieldData
      } = internalData;
      const radioOpts = computeRadioOpts.value;
      const checkboxOpts = computeCheckboxOpts.value;
      const treeOpts = computeTreeOpts.value;
      const columnOpts = computeColumnOpts.value;
      const aggregateOpts = computeAggregateOpts.value;
      if (!htmlCellElem) {
        htmlCellElem = document.createElement('div');
      }
      const {
        handleGetRowId
      } = createHandleGetRowId($xeTable);
      if (isRowGroupStatus) {
        // 如果是数据分组
        const {
          mode: aggMode,
          showTotal,
          totalMethod,
          countFields,
          contentMethod,
          formatValuesMethod,
          mapChildrenField
        } = aggregateOpts;
        const rest = [];
        const expandMaps = {};
        const useMaps = {};
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(datas, (item, $rowIndex, items, path, parentItem, nodes) => {
          const row = item._row || item;
          const rowid = handleGetRowId(row);
          if (useMaps[rowid]) {
            return;
          }
          const parentRow = parentItem && parentItem._row ? parentItem._row : parentItem;
          const pRowid = parentRow ? handleGetRowId(parentRow) : '';
          if (isRowGroupAllExpanded || !parentRow || expandMaps[pRowid] && $xeTable.isRowExpandByRow(parentRow)) {
            const hasRowChild = mapChildrenField && row[mapChildrenField] && row[mapChildrenField].length;
            const item = {
              _row: row,
              _level: nodes.length - 1,
              _hasChild: hasRowChild,
              _expand: hasRowChild && $xeTable.isRowExpandByRow(row)
            };
            columns.forEach((column, $columnIndex) => {
              const {
                field,
                editRender,
                cellRender,
                aggFunc,
                rowGroupNode
              } = column;
              let cellValue = '';
              const renderOpts = editRender || cellRender;
              let bodyExportMethod = column.exportMethod || columnOpts.exportMethod;
              if (!bodyExportMethod && renderOpts && renderOpts.name) {
                const compConf = export_hook_renderer.get(renderOpts.name);
                if (compConf) {
                  bodyExportMethod = compConf.tableExportMethod || compConf.exportMethod;
                }
              }
              if (!bodyExportMethod) {
                bodyExportMethod = columnOpts.exportMethod;
              }
              if (bodyExportMethod) {
                cellValue = bodyExportMethod({
                  $table: $xeTable,
                  row,
                  column,
                  options: opts
                });
              } else {
                switch (column.type) {
                  case 'seq':
                    {
                      const seqVal = path.map((num, i) => i % 2 === 0 ? Number(num) + 1 : '.').join('');
                      cellValue = expMode === 'all' ? seqVal : getSeq(seqVal, row, $rowIndex, column, $columnIndex);
                      break;
                    }
                  case 'checkbox':
                    {
                      cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row));
                      item._checkboxLabel = checkboxOpts.labelField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkboxOpts.labelField) : '';
                      item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({
                        $table: $xeTable,
                        row
                      });
                      break;
                    }
                  case 'radio':
                    {
                      cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row));
                      item._radioLabel = radioOpts.labelField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, radioOpts.labelField) : '';
                      item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({
                        $table: $xeTable,
                        row
                      });
                      break;
                    }
                  default:
                    {
                      if (field && row.isAggregate) {
                        const aggRow = row;
                        const aggData = aggRow.aggData;
                        const currAggData = aggData ? aggData[field] : null;
                        const groupField = aggRow.groupField;
                        const groupContent = aggRow.groupContent;
                        const childList = mapChildrenField ? aggRow[mapChildrenField] || [] : [];
                        const childCount = aggRow.childCount;
                        const colRest = fullColumnFieldData[groupField] || {};
                        const ctParams = {
                          $table: $xeTable,
                          groupField,
                          groupColumn: colRest ? colRest.column : null,
                          column,
                          groupValue: groupContent,
                          childList,
                          childCount,
                          aggValue: null,
                          /**
                           * 已废弃
                           * @deprecated
                           */
                          children: childList,
                          /**
                           * 已废弃
                           * @deprecated
                           */
                          totalValue: childCount
                        };
                        if (aggMode === 'column' ? field === aggRow.groupField : rowGroupNode) {
                          cellValue = groupContent;
                          if (contentMethod) {
                            cellValue = `${contentMethod(ctParams)}`;
                          }
                          if (showTotal) {
                            cellValue = export_hook_getI18n('vxe.table.rowGroupContentTotal', [cellValue, totalMethod ? totalMethod(ctParams) : childCount, childCount]);
                          }
                        } else if ($xeTable.getPivotTableAggregateCellAggValue) {
                          const aggParams = {
                            $table: $xeTable,
                            row,
                            column
                          };
                          cellValue = $xeTable.getPivotTableAggregateCellAggValue(aggParams);
                        } else if (aggFunc === true || countFields && countFields.includes(field)) {
                          cellValue = currAggData ? currAggData.value : childCount;
                          ctParams.aggValue = cellValue;
                          if (formatValuesMethod) {
                            cellValue = formatValuesMethod(ctParams);
                          }
                        }
                      } else if (opts.original) {
                        cellValue = getCellValue(row, column);
                      } else {
                        cellValue = $xeTable.getCellLabel(row, column);
                        if (column.type === 'html') {
                          htmlCellElem.innerHTML = cellValue;
                          cellValue = htmlCellElem.innerText.trim();
                        } else {
                          const cell = $xeTable.getCellElement(row, column);
                          if (cell && !hasClass(cell, 'is--progress')) {
                            cellValue = cell.innerText.trim();
                          }
                        }
                      }
                      break;
                    }
                }
              }
              item[column.id] = toStringValue(cellValue);
            });
            useMaps[rowid] = true;
            if (pRowid) {
              expandMaps[pRowid] = true;
            }
            rest.push(Object.assign(item, row));
          }
        }, {
          children: mapChildrenField
        });
        return rest;
      }
      if (treeConfig) {
        // 如果是树结构
        const childrenField = treeOpts.children || treeOpts.childrenField;
        const rest = [];
        const expandMaps = {};
        const useMaps = {};
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(datas, (item, $rowIndex, items, path, parentItem, nodes) => {
          const row = item._row || item;
          const rowid = handleGetRowId(row);
          if (useMaps[rowid]) {
            return;
          }
          const parentRow = parentItem && parentItem._row ? parentItem._row : parentItem;
          const pRowid = parentRow ? handleGetRowId(parentRow) : '';
          if (isTreeAllExpanded || !parentRow || expandMaps[pRowid] && $xeTable.isTreeExpandByRow(parentRow)) {
            const hasRowChild = row[childrenField] && row[childrenField].length;
            const item = {
              _row: row,
              _level: nodes.length - 1,
              _hasChild: hasRowChild,
              _expand: hasRowChild && $xeTable.isTreeExpandByRow(row)
            };
            columns.forEach((column, $columnIndex) => {
              let cellValue = '';
              const renderOpts = column.editRender || column.cellRender;
              let bodyExportMethod = column.exportMethod || columnOpts.exportMethod;
              if (!bodyExportMethod && renderOpts && renderOpts.name) {
                const compConf = export_hook_renderer.get(renderOpts.name);
                if (compConf) {
                  bodyExportMethod = compConf.tableExportMethod || compConf.exportMethod;
                }
              }
              if (!bodyExportMethod) {
                bodyExportMethod = columnOpts.exportMethod;
              }
              if (bodyExportMethod) {
                cellValue = bodyExportMethod({
                  $table: $xeTable,
                  row,
                  column,
                  options: opts
                });
              } else {
                switch (column.type) {
                  case 'seq':
                    {
                      const seqVal = path.map((num, i) => i % 2 === 0 ? Number(num) + 1 : '.').join('');
                      cellValue = expMode === 'all' ? seqVal : getSeq(seqVal, row, $rowIndex, column, $columnIndex);
                      break;
                    }
                  case 'checkbox':
                    cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row));
                    item._checkboxLabel = checkboxOpts.labelField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkboxOpts.labelField) : '';
                    item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({
                      $table: $xeTable,
                      row
                    });
                    break;
                  case 'radio':
                    cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row));
                    item._radioLabel = radioOpts.labelField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, radioOpts.labelField) : '';
                    item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({
                      $table: $xeTable,
                      row
                    });
                    break;
                  default:
                    if (opts.original) {
                      cellValue = getCellValue(row, column);
                    } else {
                      cellValue = $xeTable.getCellLabel(row, column);
                      if (column.type === 'html') {
                        htmlCellElem.innerHTML = cellValue;
                        cellValue = htmlCellElem.innerText.trim();
                      } else {
                        const cell = $xeTable.getCellElement(row, column);
                        if (cell && !hasClass(cell, 'is--progress')) {
                          cellValue = cell.innerText.trim();
                        }
                      }
                    }
                }
              }
              item[column.id] = toStringValue(cellValue);
            });
            useMaps[rowid] = true;
            if (pRowid) {
              expandMaps[pRowid] = true;
            }
            rest.push(Object.assign(item, row));
          }
        }, {
          children: childrenField
        });
        return rest;
      }
      return datas.map((row, $rowIndex) => {
        const item = {
          _row: row
        };
        columns.forEach((column, $columnIndex) => {
          let cellValue = '';
          const renderOpts = column.editRender || column.cellRender;
          let bodyExportMethod = column.exportMethod || columnOpts.exportMethod;
          if (!bodyExportMethod && renderOpts && renderOpts.name) {
            const compConf = export_hook_renderer.get(renderOpts.name);
            if (compConf) {
              bodyExportMethod = compConf.tableExportMethod || compConf.exportMethod;
            }
          }
          if (bodyExportMethod) {
            cellValue = bodyExportMethod({
              $table: $xeTable,
              row,
              column,
              options: opts
            });
          } else {
            switch (column.type) {
              case 'seq':
                {
                  const seqValue = $rowIndex + 1;
                  cellValue = expMode === 'all' ? seqValue : getSeq(seqValue, row, $rowIndex, column, $columnIndex);
                  break;
                }
              case 'checkbox':
                cellValue = toBooleanValue($xeTable.isCheckedByCheckboxRow(row));
                item._checkboxLabel = checkboxOpts.labelField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, checkboxOpts.labelField) : '';
                item._checkboxDisabled = checkboxOpts.checkMethod && !checkboxOpts.checkMethod({
                  $table: $xeTable,
                  row
                });
                break;
              case 'radio':
                cellValue = toBooleanValue($xeTable.isCheckedByRadioRow(row));
                item._radioLabel = radioOpts.labelField ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, radioOpts.labelField) : '';
                item._radioDisabled = radioOpts.checkMethod && !radioOpts.checkMethod({
                  $table: $xeTable,
                  row
                });
                break;
              default:
                if (opts.original) {
                  cellValue = getCellValue(row, column);
                } else {
                  cellValue = $xeTable.getCellLabel(row, column);
                  if (column.type === 'html') {
                    htmlCellElem.innerHTML = cellValue;
                    cellValue = htmlCellElem.innerText.trim();
                  } else {
                    const cell = $xeTable.getCellElement(row, column);
                    if (cell && !hasClass(cell, 'is--progress')) {
                      cellValue = cell.innerText.trim();
                    }
                  }
                }
            }
          }
          item[column.id] = toStringValue(cellValue);
        });
        return item;
      });
    };
    const getExportData = opts => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        columns,
        dataFilterMethod
      } = opts;
      let datas = opts.data;
      if (dataFilterMethod) {
        datas = datas.filter((row, index) => dataFilterMethod({
          $table: $xeTable,
          $grid: $xeGrid,
          $gantt: $xeGantt,
          row,
          $rowIndex: index
        }));
      }
      return getBodyLabelData(opts, columns, datas);
    };
    const getFooterCellValue = (opts, row, column) => {
      const columnOpts = computeColumnOpts.value;
      const renderOpts = column.editRender || column.cellRender;
      let footLabelMethod = column.footerExportMethod;
      if (!footLabelMethod && renderOpts && renderOpts.name) {
        const compConf = export_hook_renderer.get(renderOpts.name);
        if (compConf) {
          footLabelMethod = compConf.tableFooterExportMethod || compConf.footerExportMethod;
        }
      }
      if (!footLabelMethod) {
        footLabelMethod = columnOpts.footerExportMethod;
      }
      if (footLabelMethod) {
        const _columnIndex = $xeTable.getVTColumnIndex(column);
        return footLabelMethod({
          $table: $xeTable,
          items: row,
          itemIndex: _columnIndex,
          row,
          _columnIndex,
          column,
          options: opts
        });
      }
      const cellValue = $xeTable.getFooterCellLabel(row, column);
      return cellValue;
    };
    const toCsv = ($xeTable, opts, columns, datas) => {
      let content = csvBOM;
      if (opts.isHeader) {
        content += columns.map(column => toTxtCellLabel(getHeaderTitle(opts, column))).join(',') + enterSymbol;
      }
      datas.forEach(row => {
        content += columns.map(column => toTxtCellLabel(getCsvCellTypeLabel(column, row[column.id]))).join(',') + enterSymbol;
      });
      if (opts.isFooter) {
        const {
          footerTableData
        } = reactData;
        const footers = getFooterData($xeTable, opts, footerTableData);
        footers.forEach(row => {
          content += columns.map(column => toTxtCellLabel(getFooterCellValue(opts, row, column))).join(',') + enterSymbol;
        });
      }
      return content;
    };
    const toTxt = ($xeTable, opts, columns, datas) => {
      let content = '';
      if (opts.isHeader) {
        content += columns.map(column => toTxtCellLabel(getHeaderTitle(opts, column))).join('\t') + enterSymbol;
      }
      datas.forEach(row => {
        content += columns.map(column => toTxtCellLabel(row[column.id])).join('\t') + enterSymbol;
      });
      if (opts.isFooter) {
        const {
          footerTableData
        } = reactData;
        const footers = getFooterData($xeTable, opts, footerTableData);
        footers.forEach(row => {
          content += columns.map(column => toTxtCellLabel(getFooterCellValue(opts, row, column))).join('\t') + enterSymbol;
        });
      }
      return content;
    };
    const hasEllipsis = (column, property, allColumnOverflow) => {
      const columnOverflow = column[property];
      const headOverflow = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(columnOverflow) || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNull(columnOverflow) ? allColumnOverflow : columnOverflow;
      const showEllipsis = headOverflow === 'ellipsis';
      const showTitle = headOverflow === 'title';
      const showTooltip = headOverflow === true || headOverflow === 'tooltip';
      let isEllipsis = showTitle || showTooltip || showEllipsis;
      // 虚拟滚动不支持动态高度
      const {
        scrollXLoad,
        scrollYLoad
      } = reactData;
      if ((scrollXLoad || scrollYLoad) && !isEllipsis) {
        isEllipsis = true;
      }
      return isEllipsis;
    };
    const getCustomColKey = conf => {
      return `${conf.field || ''}:${conf.type || ''}`;
    };
    const toHtml = (opts, columns, datas) => {
      const {
        id,
        border,
        treeConfig,
        headerAlign: allHeaderAlign,
        align: allAlign,
        footerAlign: allFooterAlign,
        showOverflow: allColumnOverflow,
        showHeaderOverflow: allColumnHeaderOverflow
      } = props;
      const {
        isAllSelected,
        isIndeterminate
      } = reactData;
      const {
        mergeBodyCellMaps,
        mergeFooterCellMaps
      } = internalData;
      const treeOpts = computeTreeOpts.value;
      const {
        print: isPrint,
        widthMode,
        isHeader,
        isFooter,
        isColgroup,
        isMerge,
        colgroups,
        _columnConfs,
        original
      } = opts;
      const isAutoWidth = widthMode === 'auto';
      const isScaleWidth = widthMode === 'scale';
      const isDefaultWidth = !isAutoWidth && !isScaleWidth;
      const customWidthMaps = {};
      if (_columnConfs) {
        _columnConfs.forEach(conf => {
          if (!isColumnInfo(conf)) {
            if ((conf.field || conf.type) && conf.width) {
              customWidthMaps[getCustomColKey(conf)] = conf.width;
            }
          }
        });
      }
      // 计算宽度
      const colWidthMaps = {};
      const printWidthMaps = {};
      if (isPrint) {
        let tableWidth = 0;
        columns.forEach(column => {
          tableWidth += column.renderWidth;
        });
        if (colgroups) {
          colgroups.forEach(cols => {
            cols.forEach(column => {
              if (!column.childNodes || !column.childNodes.length) {
                return;
              }
              let childWidth = 0;
              let countChild = 0;
              external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column], item => {
                if (!item.childNodes || !column.childNodes.length) {
                  countChild++;
                }
                const ptWidth = printWidthMaps[item.id];
                childWidth += ptWidth || 0;
              }, {
                children: 'childNodes'
              });
              const colWidth = childWidth - countChild;
              colWidthMaps[column.id] = colWidth;
              printWidthMaps[column.id] = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor(colWidth / tableWidth * 180, 2);
            });
          });
        }
        columns.forEach(column => {
          const colWidth = column.renderWidth;
          if (column.width) {
            colWidthMaps[column.id] = colWidth;
          }
          printWidthMaps[column.id] = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor(colWidth / tableWidth * 180, 2);
        });
      }
      const getHeaderWidthStyle = column => {
        const cmColKey = getCustomColKey(column);
        const cmWidthMaps = customWidthMaps[cmColKey];
        if (cmWidthMaps) {
          return 'width:' + toCssUnit(cmWidthMaps);
        }
        if (isAutoWidth) {
          return '';
        }
        if (isScaleWidth) {
          return printWidthMaps[column.id] ? 'width:' + printWidthMaps[column.id] + 'mm' : '';
        }
        return colWidthMaps[column.id] ? 'width:' + toCssUnit(colWidthMaps[column.id]) : '';
      };
      const getCellWidthStyle = column => {
        const cmColKey = getCustomColKey(column);
        const cmWidthMaps = customWidthMaps[cmColKey];
        if (cmWidthMaps) {
          return 'width:' + toCssUnit(cmWidthMaps);
        }
        if (isAutoWidth || isDefaultWidth) {
          return '';
        }
        if (isScaleWidth) {
          return printWidthMaps[column.id] ? 'width:' + printWidthMaps[column.id] + 'mm' : '';
        }
        return colWidthMaps[column.id] ? 'width:' + toCssUnit(colWidthMaps[column.id]) : '';
      };
      const allCls = 'check-all';
      const clss = ['vxe-table', `border--${toTableBorder(border)}`, isPrint ? 'is--print' : '', isAutoWidth ? 'is--auto-width' : '', isScaleWidth ? 'is--scale-width' : '', isDefaultWidth ? 'is--default-width' : '', isHeader ? 'is--header' : ''].filter(cls => cls);
      const tables = [`<table class="${clss.join(' ')}" border="0" cellspacing="0" cellpadding="0">`, `<colgroup>${columns.map(column => `<col style="${getHeaderWidthStyle(column)}">`).join('')}</colgroup>`];
      if (isHeader) {
        tables.push('<thead>');
        if (isColgroup && !original) {
          colgroups.forEach(cols => {
            tables.push(`<tr>${cols.map(column => {
              const headAlign = column.headerAlign || column.align || allHeaderAlign || allAlign;
              const classNames = hasEllipsis(column, 'showHeaderOverflow', allColumnHeaderOverflow) ? ['col--ellipsis'] : [];
              const cellTitle = getHeaderTitle(opts, column);
              if (headAlign) {
                classNames.push(`col--${headAlign}`);
              }
              if (column.type === 'checkbox') {
                return `<th class="${classNames.join(' ')}" colspan="${column._colSpan}" rowspan="${column._rowSpan}"><div style="${getCellWidthStyle(column)}"><input type="checkbox" class="${allCls}" ${isAllSelected ? 'checked' : ''}><span>${cellTitle}</span></div></th>`;
              }
              return `<th class="${classNames.join(' ')}" colspan="${column._colSpan}" rowspan="${column._rowSpan}" title="${cellTitle}"><div style="${getCellWidthStyle(column)}"><span>${formatText(cellTitle, true)}</span></div></th>`;
            }).join('')}</tr>`);
          });
        } else {
          tables.push(`<tr>${columns.map(column => {
            const headAlign = column.headerAlign || column.align || allHeaderAlign || allAlign;
            const classNames = hasEllipsis(column, 'showHeaderOverflow', allColumnHeaderOverflow) ? ['col--ellipsis'] : [];
            const cellTitle = getHeaderTitle(opts, column);
            if (headAlign) {
              classNames.push(`col--${headAlign}`);
            }
            if (column.type === 'checkbox') {
              return `<th class="${classNames.join(' ')}"><div style="${getCellWidthStyle(column)}"><input type="checkbox" class="${allCls}" ${isAllSelected ? 'checked' : ''}><span>${cellTitle}</span></div></th>`;
            }
            return `<th class="${classNames.join(' ')}" title="${cellTitle}"><div style="${getCellWidthStyle(column)}"><span>${formatText(cellTitle, true)}</span></div></th>`;
          }).join('')}</tr>`);
        }
        tables.push('</thead>');
      }
      if (datas.length) {
        tables.push('<tbody>');
        if (treeConfig) {
          datas.forEach(item => {
            tables.push('<tr>' + columns.map(column => {
              const colid = column.id;
              const cellAlign = column.align || allAlign;
              const classNames = hasEllipsis(column, 'showOverflow', allColumnOverflow) ? ['col--ellipsis'] : [];
              const cellValue = item[colid];
              if (cellAlign) {
                classNames.push(`col--${cellAlign}`);
              }
              if (column.treeNode) {
                let treeIcon = '';
                if (item._hasChild) {
                  treeIcon = `<i class="${item._expand ? 'vxe-table--tree-fold-icon' : 'vxe-table--tree-unfold-icon'}"></i>`;
                }
                classNames.push('vxe-table--tree-node');
                if (column.type === 'radio') {
                  return `<td class="${classNames.join(' ')}" title="${cellValue}"><div style="${getCellWidthStyle(column)}"><div class="vxe-table--tree-node-wrapper" style="padding-left: ${item._level * treeOpts.indent}px"><div class="vxe-table--tree-icon-wrapper">${treeIcon}</div><div class="vxe-table--tree-cell"><input type="radio" name="radio_${id}" ${item._radioDisabled ? 'disabled ' : ''}${getBooleanValue(cellValue) ? 'checked' : ''}><span>${item._radioLabel}</span></div></div></div></td>`;
                } else if (column.type === 'checkbox') {
                  return `<td class="${classNames.join(' ')}" title="${cellValue}"><div style="${getCellWidthStyle(column)}"><div class="vxe-table--tree-node-wrapper" style="padding-left: ${item._level * treeOpts.indent}px"><div class="vxe-table--tree-icon-wrapper">${treeIcon}</div><div class="vxe-table--tree-cell"><input type="checkbox" ${item._checkboxDisabled ? 'disabled ' : ''}${getBooleanValue(cellValue) ? 'checked' : ''}><span>${item._checkboxLabel}</span></div></div></div></td>`;
                }
                return `<td class="${classNames.join(' ')}" title="${cellValue}"><div style="${getCellWidthStyle(column)}"><div class="vxe-table--tree-node-wrapper" style="padding-left: ${item._level * treeOpts.indent}px"><div class="vxe-table--tree-icon-wrapper">${treeIcon}</div><div class="vxe-table--tree-cell">${cellValue}</div></div></div></td>`;
              }
              if (column.type === 'radio') {
                return `<td class="${classNames.join(' ')}"><div style="${getCellWidthStyle(column)}"><input type="radio" name="radio_${id}" ${item._radioDisabled ? 'disabled ' : ''}${getBooleanValue(cellValue) ? 'checked' : ''}><span>${item._radioLabel}</span></div></td>`;
              } else if (column.type === 'checkbox') {
                return `<td class="${classNames.join(' ')}"><div style="${getCellWidthStyle(column)}"><input type="checkbox" ${item._checkboxDisabled ? 'disabled ' : ''}${getBooleanValue(cellValue) ? 'checked' : ''}><span>${item._checkboxLabel}</span></div></td>`;
              }
              return `<td class="${classNames.join(' ')}" title="${cellValue}"><div style="${getCellWidthStyle(column)}">${formatText(cellValue, true)}</div></td>`;
            }).join('') + '</tr>');
          });
        } else {
          datas.forEach(item => {
            tables.push('<tr>' + columns.map(column => {
              const cellAlign = column.align || allAlign;
              const classNames = hasEllipsis(column, 'showOverflow', allColumnOverflow) ? ['col--ellipsis'] : [];
              const cellValue = item[column.id];
              let rowSpan = 1;
              let colSpan = 1;
              if (isMerge) {
                const _rowIndex = $xeTable.getVTRowIndex(item._row);
                const _columnIndex = $xeTable.getVTColumnIndex(column);
                const spanRest = mergeBodyCellMaps[`${_rowIndex}:${_columnIndex}`];
                if (spanRest) {
                  const {
                    rowspan,
                    colspan
                  } = spanRest;
                  if (!rowspan || !colspan) {
                    return '';
                  }
                  if (rowspan > 1) {
                    rowSpan = rowspan;
                  }
                  if (colspan > 1) {
                    colSpan = colspan;
                  }
                }
              }
              if (cellAlign) {
                classNames.push(`col--${cellAlign}`);
              }
              if (column.type === 'radio') {
                return `<td class="${classNames.join(' ')}" rowspan="${rowSpan}" colspan="${colSpan}"><div style="${getCellWidthStyle(column)}"><input type="radio" name="radio_${id}" ${item._radioDisabled ? 'disabled ' : ''}${getBooleanValue(cellValue) ? 'checked' : ''}><span>${item._radioLabel}</span></div></td>`;
              } else if (column.type === 'checkbox') {
                return `<td class="${classNames.join(' ')}" rowspan="${rowSpan}" colspan="${colSpan}"><div style="${getCellWidthStyle(column)}"><input type="checkbox" ${item._checkboxDisabled ? 'disabled ' : ''}${getBooleanValue(cellValue) ? 'checked' : ''}><span>${item._checkboxLabel}</span></div></td>`;
              }
              return `<td class="${classNames.join(' ')}" rowspan="${rowSpan}" colspan="${colSpan}" title="${cellValue}"><div style="${getCellWidthStyle(column)}">${formatText(cellValue, true)}</div></td>`;
            }).join('') + '</tr>');
          });
        }
        tables.push('</tbody>');
      }
      if (isFooter) {
        const {
          footerTableData
        } = reactData;
        const footers = getFooterData($xeTable, opts, footerTableData);
        if (footers.length) {
          tables.push('<tfoot>');
          footers.forEach((row, rIndex) => {
            tables.push(`<tr>${columns.map(column => {
              const footAlign = column.footerAlign || column.align || allFooterAlign || allAlign;
              const classNames = hasEllipsis(column, 'showOverflow', allColumnOverflow) ? ['col--ellipsis'] : [];
              const cellValue = getFooterCellValue(opts, row, column);
              let rowSpan = 1;
              let colSpan = 1;
              if (isMerge) {
                const _rowIndex = rIndex;
                const _columnIndex = $xeTable.getVTColumnIndex(column);
                const spanRest = mergeFooterCellMaps[`${_rowIndex}:${_columnIndex}`];
                if (spanRest) {
                  const {
                    rowspan,
                    colspan
                  } = spanRest;
                  if (!rowspan || !colspan) {
                    return '';
                  }
                  if (rowspan > 1) {
                    rowSpan = rowspan;
                  }
                  if (colspan > 1) {
                    colSpan = colspan;
                  }
                }
              }
              if (footAlign) {
                classNames.push(`col--${footAlign}`);
              }
              return `<td class="${classNames.join(' ')}" rowspan="${rowSpan}" colspan="${colSpan}" title="${cellValue}"><div style="${getCellWidthStyle(column)}">${formatText(cellValue, true)}</div></td>`;
            }).join('')}</tr>`);
          });
          tables.push('</tfoot>');
        }
      }
      // 是否半选状态
      const script = !isAllSelected && isIndeterminate ? `<script>(function(){var a=document.querySelector(".${allCls}");if(a){a.indeterminate=true}})()</script>` : '';
      tables.push('</table>', script);
      return isPrint ? tables.join('') : createHtmlPage(opts, tables.join(''));
    };
    const toXML = (opts, columns, datas) => {
      let xml = ['<?xml version="1.0"?>', '<?mso-application progid="Excel.Sheet"?>', '<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:html="http://www.w3.org/TR/REC-html40">', '<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">', '<Version>16.00</Version>', '</DocumentProperties>', '<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">', '<WindowHeight>7920</WindowHeight>', '<WindowWidth>21570</WindowWidth>', '<WindowTopX>32767</WindowTopX>', '<WindowTopY>32767</WindowTopY>', '<ProtectStructure>False</ProtectStructure>', '<ProtectWindows>False</ProtectWindows>', '</ExcelWorkbook>', `<Worksheet ss:Name="${opts.sheetName}">`, '<Table>', columns.map(column => `<Column ss:Width="${column.renderWidth}"/>`).join('')].join('');
      if (opts.isHeader) {
        xml += `<Row>${columns.map(column => `<Cell><Data ss:Type="String">${getHeaderTitle(opts, column)}</Data></Cell>`).join('')}</Row>`;
      }
      datas.forEach(row => {
        xml += '<Row>' + columns.map(column => `<Cell><Data ss:Type="String">${row[column.id]}</Data></Cell>`).join('') + '</Row>';
      });
      if (opts.isFooter) {
        const {
          footerTableData
        } = reactData;
        const footers = getFooterData($xeTable, opts, footerTableData);
        footers.forEach(row => {
          xml += `<Row>${columns.map(column => `<Cell><Data ss:Type="String">${getFooterCellValue(opts, row, column)}</Data></Cell>`).join('')}</Row>`;
        });
      }
      return `${xml}</Table></Worksheet></Workbook>`;
    };
    const getContent = ($xeTable, opts, columns, datas) => {
      if (columns.length) {
        switch (opts.type) {
          case 'csv':
            return toCsv($xeTable, opts, columns, datas);
          case 'txt':
            return toTxt($xeTable, opts, columns, datas);
          case 'html':
            return toHtml(opts, columns, datas);
          case 'xml':
            return toXML(opts, columns, datas);
        }
      }
      return '';
    };
    const downloadFile = (opts, content) => {
      const {
        filename,
        type,
        download
      } = opts;
      if (!download) {
        const blob = getExportBlobByContent(content, opts);
        return Promise.resolve({
          type,
          content,
          blob
        });
      }
      if (core_.VxeUI.saveFile) {
        core_.VxeUI.saveFile({
          filename,
          type,
          content
        }).then(() => {
          if (opts.message !== false) {
            if (core_.VxeUI.modal) {
              core_.VxeUI.modal.message({
                content: export_hook_getI18n('vxe.table.expSuccess'),
                status: 'success'
              });
            }
          }
        });
      }
    };
    const handleExport = opts => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const {
        remote,
        columns,
        colgroups,
        exportMethod,
        afterExportMethod
      } = opts;
      return new Promise(resolve => {
        if (remote) {
          const params = {
            options: opts,
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt
          };
          resolve(exportMethod ? exportMethod(params) : params);
        } else {
          const datas = getExportData(opts);
          resolve($xeTable.preventEvent(null, 'event.export', {
            options: opts,
            columns,
            colgroups,
            datas
          }, () => {
            return downloadFile(opts, getContent($xeTable, opts, columns, datas));
          }));
        }
      }).then(params => {
        clearColumnConvert(columns);
        if (!opts.print) {
          if (afterExportMethod) {
            afterExportMethod({
              status: true,
              options: opts,
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt
            });
          }
        }
        return Object.assign({
          status: true
        }, params);
      }).catch(() => {
        clearColumnConvert(columns);
        if (!opts.print) {
          if (afterExportMethod) {
            afterExportMethod({
              status: false,
              options: opts,
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt
            });
          }
        }
        const params = {
          status: false
        };
        return Promise.reject(params);
      });
    };
    const handleImport = (content, opts) => {
      const {
        tableFullColumn,
        _importResolve,
        _importReject
      } = internalData;
      let rest = {
        fields: [],
        rows: []
      };
      const tableFieldMaps = {};
      const tableTitleMaps = {};
      tableFullColumn.forEach(column => {
        const field = column.field;
        const title = $xeTable.getHeaderCellLabel(column);
        if (field) {
          tableFieldMaps[field] = column;
        }
        if (title) {
          tableTitleMaps[title] = column;
        }
      });
      const tableConf = {
        fieldMaps: tableFieldMaps,
        titleMaps: tableTitleMaps
      };
      switch (opts.type) {
        case 'csv':
          rest = parseCsv(tableConf, content);
          break;
        case 'txt':
          rest = parseTxt(tableConf, content);
          break;
        case 'html':
          rest = parseHTML(tableConf, content);
          break;
        case 'xml':
          rest = parseXML(tableConf, content);
          break;
      }
      const {
        fields,
        rows
      } = rest;
      const status = fields.some(field => tableFieldMaps[field] || tableTitleMaps[field]);
      if (status) {
        $xeTable.createData(rows).then(data => {
          let loadRest;
          if (opts.mode === 'insert' || opts.mode === 'insertBottom') {
            loadRest = $xeTable.insertAt(data, -1);
          } else if (opts.mode === 'insertTop') {
            loadRest = $xeTable.insert(data);
          } else {
            loadRest = $xeTable.reloadData(data);
          }
          if (opts.message !== false) {
            if (core_.VxeUI.modal) {
              core_.VxeUI.modal.message({
                content: export_hook_getI18n('vxe.table.impSuccess', [rows.length]),
                status: 'success'
              });
            }
          }
          return loadRest.then(() => {
            if (_importResolve) {
              _importResolve({
                status: true
              });
            }
          });
        });
      } else if (opts.message !== false) {
        if (core_.VxeUI.modal) {
          core_.VxeUI.modal.message({
            content: export_hook_getI18n('vxe.error.impFields'),
            status: 'error'
          });
        }
        if (_importReject) {
          _importReject({
            status: false,
            msg: 'field mismatching'
          });
        }
      }
    };
    const handleFileImport = (file, opts) => {
      const {
        importMethod,
        afterImportMethod
      } = opts;
      const {
        type,
        filename
      } = parseFile(file);
      const importOpts = computeImportOpts.value;
      // 检查类型,如果为自定义导出,则不需要校验类型
      if (!importMethod && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includes(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps), type)) {
        if (opts.message !== false) {
          if (core_.VxeUI.modal) {
            core_.VxeUI.modal.message({
              content: export_hook_getI18n('vxe.error.notType', [type]),
              status: 'error'
            });
          }
        }
        const params = {
          status: false,
          msg: 'type error'
        };
        return Promise.reject(params);
      }
      const rest = new Promise((resolve, reject) => {
        const _importResolve = params => {
          resolve(params);
          internalData._importResolve = null;
          internalData._importReject = null;
        };
        const _importReject = params => {
          reject(params);
          internalData._importResolve = null;
          internalData._importReject = null;
        };
        internalData._importResolve = _importResolve;
        internalData._importReject = _importReject;
        if (window.FileReader) {
          const options = Object.assign({
            mode: 'insertTop'
          }, opts, {
            type,
            filename
          });
          if (options.remote) {
            if (importMethod) {
              Promise.resolve(importMethod({
                file,
                options,
                $table: $xeTable
              })).then(() => {
                _importResolve({
                  status: true
                });
              }).catch(() => {
                _importResolve({
                  status: true
                });
              });
            } else {
              _importResolve({
                status: true
              });
            }
          } else {
            const {
              tableFullColumn
            } = internalData;
            $xeTable.preventEvent(null, 'event.import', {
              file,
              options,
              columns: tableFullColumn
            }, () => {
              const reader = new FileReader();
              reader.onerror = () => {
                export_hook_errLog('vxe.error.notType', [type]);
                _importReject({
                  status: false,
                  msg: 'reading file error'
                });
              };
              reader.onload = e => {
                handleImport(e.target.result, options);
              };
              reader.readAsText(file, options.encoding || 'UTF-8');
            });
          }
        } else {
          // 不支持的浏览器
          export_hook_errLog('vxe.error.notExp');
          _importResolve({
            status: false,
            msg: 'unsupported browser'
          });
        }
      });
      return rest.then(() => {
        if (afterImportMethod) {
          afterImportMethod({
            status: true,
            options: opts,
            $table: $xeTable
          });
        }
      }).catch(e => {
        if (afterImportMethod) {
          afterImportMethod({
            status: false,
            options: opts,
            $table: $xeTable
          });
        }
        return Promise.reject(e);
      });
    };
    const handleFilterColumns = (exportOpts, column, columns) => {
      return columns.some(item => {
        if (isColumnInfo(item)) {
          return column.id === item.id;
        } else if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(item)) {
          return column.field === item;
        } else {
          const colid = item.id || item.colId;
          const type = item.type;
          const field = item.field;
          if (colid) {
            return column.id === colid;
          } else if (field && type) {
            return column.field === field && column.type === type;
          } else if (field) {
            return column.field === field;
          } else if (type) {
            return column.type === type;
          }
        }
        return false;
      });
    };
    const handleFilterFields = (exportOpts, column, includeFields, includeFdMaps, excludeFdMaps, extraFdMaps) => {
      const {
        field
      } = column;
      if (excludeFdMaps[field]) {
        return false;
      }
      if (includeFields) {
        if (includeFdMaps[field]) {
          return true;
        }
        return false;
      }
      if (extraFdMaps[field]) {
        return true;
      }
      return exportOpts.original ? !!field : defaultFilterExportColumn(column);
    };
    const handleExportAndPrint = (options, isPrint) => {
      const $xeGrid = $xeTable.xeGrid;
      const $xeGantt = $xeTable.xeGantt;
      const $xeGGWrapper = $xeGrid || $xeGantt;
      const {
        treeConfig,
        showHeader,
        showFooter
      } = props;
      const {
        initStore,
        isGroup,
        rowGroupList,
        footerTableData,
        exportStore,
        exportParams
      } = reactData;
      const {
        collectColumn,
        mergeBodyList,
        mergeFooterList
      } = internalData;
      const exportOpts = computeExportOpts.value;
      const hasTree = !!treeConfig;
      const hasRowGroup = rowGroupList.length > 0;
      const customOpts = computeCustomOpts.value;
      const selectRecords = $xeTable.getCheckboxRecords();
      const proxyOpts = $xeGGWrapper ? $xeGGWrapper.getComputeMaps().computeProxyOpts.value : {};
      const hasFooter = !!footerTableData.length;
      const hasMerge = !!(mergeBodyList.length || mergeFooterList.length);
      const defOpts = Object.assign({
        message: true,
        isHeader: showHeader,
        isTitle: showHeader,
        isFooter: showFooter,
        isColgroup: isGroup,
        isMerge: hasMerge,
        useStyle: true,
        current: 'current',
        modes: (proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []).concat(['current', 'selected', 'empty'])
      }, options);
      // 已废弃,参数 isAllExpand
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(defOpts.isAllExpand)) {
        export_hook_warnLog('vxe.error.delProp', ['isAllExpand', 'isTreeAllExpanded']);
        defOpts.isTreeAllExpanded = defOpts.isAllExpand;
      }
      const types = defOpts.types || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps);
      const modes = defOpts.modes || [];
      const checkMethod = customOpts.checkMethod;
      const exportColumns = collectColumn.slice(0);
      const {
        columns,
        excludeFields,
        includeFields,
        extraFields
      } = defOpts;
      // 处理类型
      const typeList = types.map(value => {
        return {
          value,
          label: export_hook_getI18n(`vxe.export.types.${value}`)
        };
      });
      const modeList = modes.map(item => {
        if (item && item.value) {
          return {
            value: item.value,
            label: item.label || item.value
          };
        }
        return {
          value: item,
          label: export_hook_getI18n(`vxe.export.modes.${item}`)
        };
      });
      const excludeFdMaps = {};
      if (excludeFields && excludeFields.length) {
        excludeFields.forEach(field => {
          excludeFdMaps[field] = 1;
        });
      }
      const includeFdMaps = {};
      if (includeFields && includeFields.length) {
        includeFields.forEach(field => {
          includeFdMaps[field] = 1;
        });
      }
      const extraFdMaps = {};
      if (extraFields) {
        extraFields.forEach(field => {
          extraFdMaps[field] = 1;
        });
      }
      // 默认选中
      // 优先级 columns > excludeFields > (includeFields || extraFields)
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(exportColumns, (column, index, items, path, parentColumn) => {
        const isColGroup = column.children && column.children.length > 0;
        let isChecked = false;
        const isExtraChecked = extraFdMaps[column.field];
        if (columns) {
          isChecked = handleFilterColumns(defOpts, column, columns);
        } else if (excludeFields || includeFields) {
          isChecked = handleFilterFields(defOpts, column, includeFields, includeFdMaps, excludeFdMaps, extraFdMaps);
        } else {
          if (isExtraChecked) {
            isChecked = true;
          } else {
            isChecked = column.visible && (isColGroup || defaultFilterExportColumn(column));
          }
        }
        column.checked = isChecked;
        column.halfChecked = false;
        column.disabled = parentColumn && parentColumn.disabled || (checkMethod ? !checkMethod({
          $table: $xeTable,
          column
        }) : false);
      });
      // 更新条件
      exportStore.columns = exportColumns;
      exportStore.typeList = typeList;
      exportStore.modeList = modeList;
      exportStore.hasFooter = hasFooter;
      exportStore.hasMerge = hasMerge;
      exportStore.hasTree = hasTree;
      exportStore.hasRowGroup = hasRowGroup;
      exportStore.isPrint = !!isPrint;
      exportStore.hasColgroup = isGroup;
      exportStore.visible = true;
      // 默认参数
      Object.assign(exportParams, {
        mode: selectRecords.length ? 'selected' : 'current'
      }, defOpts);
      const {
        filename,
        sheetName,
        mode,
        type
      } = exportParams;
      if (filename) {
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(filename)) {
          exportParams.filename = filename({
            options: defOpts,
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt
          });
        } else {
          exportParams.filename = `${filename}`;
        }
      }
      if (sheetName) {
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(sheetName)) {
          exportParams.sheetName = sheetName({
            options: defOpts,
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt
          });
        } else {
          exportParams.sheetName = `${sheetName}`;
        }
      }
      if (!modeList.some(item => item.value === mode)) {
        exportParams.mode = modeList[0].value;
      }
      if (!typeList.some(item => item.value === type)) {
        exportParams.type = typeList[0].value;
      }
      if (!exportParams.widthMode) {
        exportParams.widthMode = '';
      }
      initStore.export = true;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    const handleCloseExport = () => {
      if (core_.VxeUI.modal) {
        return core_.VxeUI.modal.close('VXE_EXPORT_MODAL');
      }
      return Promise.resolve();
    };
    const exportMethods = {
      /**
       * 导出文件,支持 csv/html/xml/txt
       * 如果是树表格,则默认是导出所有节点
       * 如果是启用了虚拟滚动,则只能导出数据源,可以配合 dataFilterMethod 函数转换数据
       * @param {Object} options 参数
       */
      exportData(options) {
        const $xeGrid = $xeTable.xeGrid;
        const $xeGantt = $xeTable.xeGantt;
        const $xeGGWrapper = $xeGrid || $xeGantt;
        const {
          treeConfig,
          showHeader,
          showFooter
        } = props;
        const {
          isGroup
        } = reactData;
        const {
          tableFullColumn,
          afterFullData,
          afterTreeFullData,
          collectColumn,
          mergeBodyList,
          mergeFooterList
        } = internalData;
        const exportOpts = computeExportOpts.value;
        const treeOpts = computeTreeOpts.value;
        const proxyOpts = $xeGGWrapper ? $xeGGWrapper.getComputeMaps().computeProxyOpts.value : {};
        const hasMerge = !!(mergeBodyList.length || mergeFooterList.length);
        const opts = Object.assign({
          message: true,
          isHeader: showHeader,
          isTitle: showHeader,
          isFooter: showFooter,
          isColgroup: isGroup,
          isMerge: hasMerge,
          useStyle: true,
          current: 'current',
          modes: (proxyOpts.ajax && proxyOpts.ajax.queryAll ? ['all'] : []).concat(['current', 'selected', 'empty']),
          download: true,
          type: 'csv'
          // filename: '',
          // sheetName: '',
          // original: false,
          // isTreeAllExpanded: false,
          // isRowGroupAllExpanded: false,
          // data: null,
          // remote: false,
          // dataFilterMethod: null,
          // footerFilterMethod: null,
          // exportMethod: null,
          // columnFilterMethod: null,
          // beforeExportMethod: null,
          // afterExportMethod: null
        }, exportOpts, options);
        // 已废弃,参数 isAllExpand
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(opts.isAllExpand)) {
          export_hook_warnLog('vxe.error.delProp', ['isAllExpand', 'isTreeAllExpanded']);
          opts.isTreeAllExpanded = opts.isAllExpand;
        }
        let {
          filename,
          sheetName,
          type,
          mode,
          columns,
          columnFilterMethod,
          beforeExportMethod,
          includeFields,
          excludeFields,
          extraFields
        } = opts;
        let groups = [];
        const selectRecords = $xeTable.getCheckboxRecords();
        if (!mode) {
          mode = selectRecords.length ? 'selected' : 'current';
        }
        const excludeFdMaps = {};
        if (excludeFields && excludeFields.length) {
          excludeFields.forEach(field => {
            excludeFdMaps[field] = 1;
          });
        }
        const includeFdMaps = {};
        if (includeFields && includeFields.length) {
          includeFields.forEach(field => {
            includeFdMaps[field] = 1;
          });
        }
        const extraFdMaps = {};
        if (extraFields) {
          extraFields.forEach(field => {
            extraFdMaps[field] = 1;
          });
        }
        let isCustomCol = false;
        let customCols = [];
        if (columns) {
          isCustomCol = true;
          customCols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(columns, () => true, {
            children: 'children',
            mapChildren: 'childNodes',
            original: true
          });
        } else {
          customCols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(collectColumn, column => {
            const isColGroup = column.children && column.children.length > 0;
            let isChecked = false;
            const isExtraChecked = extraFdMaps[column.field];
            if (columns) {
              isChecked = handleFilterColumns(opts, column, columns);
            } else if (excludeFields || includeFields) {
              isChecked = handleFilterFields(opts, column, includeFields, includeFdMaps, excludeFdMaps, extraFdMaps);
            } else {
              if (isExtraChecked) {
                isChecked = true;
              } else {
                isChecked = column.visible && (isColGroup || defaultFilterExportColumn(column));
              }
            }
            return isChecked;
          }, {
            children: 'children',
            mapChildren: 'childNodes',
            original: true
          });
        }
        const handleOptions = Object.assign({}, opts, {
          filename: '',
          sheetName: '',
          _columnConfs: columns
        });
        // 如果设置源数据,则默认导出设置了字段的列
        if (!isCustomCol && !columnFilterMethod) {
          columnFilterMethod = ({
            column
          }) => handleFilterFields(handleOptions, column, includeFields, includeFdMaps, excludeFdMaps, extraFdMaps);
          handleOptions.columnFilterMethod = columnFilterMethod;
        }
        if (customCols) {
          handleOptions._isCustomColumn = true;
          groups = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().mapTree(customCols, item => {
            let targetColumn;
            if (item) {
              if (isColumnInfo(item)) {
                targetColumn = item;
              } else if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(item)) {
                targetColumn = $xeTable.getColumnByField(item);
              } else {
                const colid = item.id || item.colId;
                const type = item.type;
                const field = item.field;
                if (colid) {
                  targetColumn = $xeTable.getColumnById(colid);
                } else if (field && type) {
                  targetColumn = tableFullColumn.find(column => column.field === field && column.type === type);
                } else if (field) {
                  targetColumn = $xeTable.getColumnByField(field);
                } else if (type) {
                  targetColumn = tableFullColumn.find(column => column.type === type);
                }
              }
              return targetColumn || {};
            }
          }, {
            children: 'childNodes',
            mapChildren: '_children'
          }), (column, index) => isColumnInfo(column) && (!columnFilterMethod || columnFilterMethod({
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt,
            column: column,
            $columnIndex: index
          })), {
            children: '_children',
            mapChildren: 'childNodes',
            original: true
          });
        } else {
          groups = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(isGroup ? collectColumn : tableFullColumn, (column, index) => column.visible && (!columnFilterMethod || columnFilterMethod({
            $table: $xeTable,
            $grid: $xeGrid,
            $gantt: $xeGantt,
            column,
            $columnIndex: index
          })), {
            children: 'children',
            mapChildren: 'childNodes',
            original: true
          });
        }
        // 获取所有列
        const cols = [];
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(groups, column => {
          const isColGroup = column.children && column.children.length;
          if (!isColGroup) {
            cols.push(column);
          }
        }, {
          children: 'childNodes'
        });
        // 构建分组层级
        handleOptions.columns = cols;
        handleOptions.colgroups = convertToRows(groups);
        if (filename) {
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(filename)) {
            handleOptions.filename = filename({
              options: opts,
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt
            });
          } else {
            handleOptions.filename = `${filename}`;
          }
        }
        if (!handleOptions.filename) {
          handleOptions.filename = export_hook_getI18n(handleOptions.original ? 'vxe.table.expOriginFilename' : 'vxe.table.expFilename', [external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(Date.now(), 'yyyyMMddHHmmss')]);
        }
        if (sheetName) {
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(sheetName)) {
            handleOptions.sheetName = sheetName({
              options: opts,
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt
            });
          } else {
            handleOptions.sheetName = `${sheetName}`;
          }
        }
        if (!handleOptions.sheetName) {
          handleOptions.sheetName = document.title || '';
        }
        // 检查类型,如果为自定义导出,则不需要校验类型
        if (!handleOptions.exportMethod && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includes(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps), type)) {
          export_hook_errLog('vxe.error.notType', [type]);
          if (['xlsx', 'pdf'].includes(type)) {
            export_hook_warnLog('vxe.error.reqPlugin', [4, 'plugin-export-xlsx']);
          }
          const params = {
            status: false,
            msg: 'type error'
          };
          return Promise.reject(params);
        }
        if (!handleOptions.print) {
          if (beforeExportMethod) {
            const beRest = beforeExportMethod({
              options: handleOptions,
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt
            });
            if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(beRest)) {
              if (!beRest) {
                const params = {
                  status: false,
                  msg: 'before prevent'
                };
                return Promise.reject(params);
              }
            } else {
              export_hook_warnLog('vxe.error.returnErr', ['beforeExportMethod', 'boolean', beRest]);
            }
          }
        }
        if (!handleOptions.data) {
          handleOptions.data = [];
          if (mode === 'selected') {
            if (['html', 'pdf'].indexOf(type) > -1 && treeConfig) {
              handleOptions.data = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree($xeTable.getTableData().fullData, item => $xeTable.findRowIndexOf(selectRecords, item) > -1, Object.assign({}, treeOpts, {
                data: '_row'
              }));
            } else {
              handleOptions.data = selectRecords;
            }
          } else if (mode === 'all') {
            if (!$xeGGWrapper) {
              export_hook_errLog('vxe.error.errProp', ['all', 'mode=current,selected']);
            }
            if ($xeGGWrapper && !handleOptions.remote) {
              const gridReactData = $xeGGWrapper.reactData;
              const {
                computeProxyOpts
              } = $xeGGWrapper.getComputeMaps();
              const proxyOpts = computeProxyOpts.value;
              const {
                sortData
              } = gridReactData;
              const {
                beforeQueryAll: oldBeforeQueryAll,
                afterQueryAll: oldAfterQueryAll,
                ajax = {}
              } = proxyOpts;
              const resConfigs = proxyOpts.response || proxyOpts.props || {};
              const beforeQueryAllMethod = ajax.beforeQueryAll;
              const queryAllMethod = ajax.queryAll;
              const afterQueryAllMethod = ajax.afterQueryAll;
              const queryAllSuccessMethod = ajax.queryAllSuccess;
              const queryAllErrorMethod = ajax.queryAllError;
              if (!queryAllMethod) {
                export_hook_errLog('vxe.error.notFunc', ['proxy-config.ajax.queryAll']);
              }
              if (queryAllMethod) {
                const params = {
                  $table: $xeTable,
                  $grid: $xeGrid,
                  $gantt: $xeGantt,
                  sort: sortData.length ? sortData[0] : {},
                  sorts: sortData,
                  filters: gridReactData.filterData,
                  form: gridReactData.formData,
                  options: handleOptions
                };
                const handleQueryAll = () => {
                  return Promise.resolve((oldBeforeQueryAll || queryAllMethod)(params)).then(rest => {
                    if (afterQueryAllMethod) {
                      afterQueryAllMethod({
                        ...params,
                        response: rest,
                        status: 'success'
                      });
                    } else {
                      const listProp = resConfigs.list;
                      let tdData = [];
                      if (listProp) {
                        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(listProp)) {
                          tdData = listProp({
                            data: rest,
                            $table: $xeTable,
                            $grid: $xeGrid,
                            $gantt: $xeGantt
                          });
                        } else {
                          tdData = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rest) ? rest : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rest, listProp);
                        }
                      } else {
                        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rest)) {
                          tdData = rest;
                        }
                      }
                      handleOptions.data = tdData;
                      if (oldAfterQueryAll) {
                        oldAfterQueryAll({
                          ...params,
                          response: rest
                        });
                      }
                    }
                    if (queryAllSuccessMethod) {
                      queryAllSuccessMethod({
                        ...params,
                        response: rest
                      });
                    }
                    return handleExport(handleOptions);
                  }).catch(rest => {
                    if (afterQueryAllMethod) {
                      afterQueryAllMethod({
                        ...params,
                        response: rest,
                        status: 'error'
                      });
                    }
                    if (queryAllErrorMethod) {
                      queryAllErrorMethod({
                        ...params,
                        response: rest
                      });
                    }
                  });
                };
                if (beforeQueryAllMethod) {
                  return Promise.resolve(beforeQueryAllMethod(params)).then(status => {
                    if (status !== false) {
                      return handleQueryAll();
                    }
                  });
                }
                return handleQueryAll();
              }
            }
          }
          if (mode === 'current') {
            handleOptions.data = treeConfig ? afterTreeFullData : afterFullData;
          }
        } else {
          handleOptions._isCustomData = true;
        }
        return handleExport(handleOptions);
      },
      importByFile(file, options) {
        const opts = Object.assign({}, options);
        const {
          beforeImportMethod
        } = opts;
        if (beforeImportMethod) {
          const biRest = beforeImportMethod({
            options: opts,
            $table: $xeTable
          });
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(biRest)) {
            if (!biRest) {
              const params = {
                status: false,
                mas: 'before prevent'
              };
              return Promise.reject(params);
            }
          } else {
            export_hook_warnLog('vxe.error.returnErr', ['beforeImportMethod', 'boolean', biRest]);
          }
        }
        return handleFileImport(file, opts);
      },
      importData(options) {
        const importOpts = computeImportOpts.value;
        const opts = Object.assign({
          types: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps)
          // beforeImportMethod: null,
          // afterImportMethod: null
        }, importOpts, options);
        const {
          beforeImportMethod,
          afterImportMethod
        } = opts;
        if (beforeImportMethod) {
          const biRest = beforeImportMethod({
            options: opts,
            $table: $xeTable
          });
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(biRest)) {
            if (!biRest) {
              const params = {
                status: false,
                mas: 'before prevent'
              };
              return Promise.reject(params);
            }
          } else {
            export_hook_warnLog('vxe.error.returnErr', ['beforeImportMethod', 'boolean', biRest]);
          }
        }
        return core_.VxeUI.readFile(opts).catch(e => {
          if (afterImportMethod) {
            afterImportMethod({
              status: false,
              options: opts,
              $table: $xeTable
            });
          }
          return Promise.reject(e);
        }).then(params => {
          const {
            file
          } = params;
          return handleFileImport(file, opts);
        });
      },
      saveFile(options) {
        return core_.VxeUI.saveFile(options);
      },
      readFile(options) {
        return core_.VxeUI.readFile(options);
      },
      print(options) {
        const $xeGrid = $xeTable.xeGrid;
        const $xeGantt = $xeTable.xeGantt;
        const printOpts = computePrintOpts.value;
        const opts = Object.assign({
          original: false
          // beforePrintMethod
        }, printOpts, options, {
          type: 'html',
          download: false,
          remote: false,
          print: true
        });
        const {
          sheetName
        } = opts;
        let printTitle = '';
        if (sheetName) {
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(sheetName)) {
            printTitle = sheetName({
              options: opts,
              $table: $xeTable,
              $grid: $xeGrid,
              $gantt: $xeGantt
            });
          } else {
            printTitle = `${sheetName}`;
          }
        }
        if (!printTitle) {
          printTitle = document.title || '';
        }
        const beforePrintMethod = opts.beforePrintMethod;
        const printMethod = opts.printMethod;
        const tableHtml = opts.html || opts.content;
        return new Promise((resolve, reject) => {
          if (core_.VxeUI.print) {
            if (tableHtml) {
              resolve(core_.VxeUI.print({
                title: printTitle,
                html: tableHtml,
                customStyle: opts.style,
                beforeMethod: beforePrintMethod ? ({
                  html
                }) => {
                  return beforePrintMethod({
                    html,
                    content: html,
                    options: opts,
                    $table: $xeTable,
                    $grid: $xeGrid,
                    $gantt: $xeGantt
                  });
                } : undefined,
                beforePrintMethod: beforePrintMethod ? ({
                  html
                }) => {
                  return beforePrintMethod({
                    html,
                    content: html,
                    options: opts,
                    $table: $xeTable,
                    $grid: $xeGrid,
                    $gantt: $xeGantt
                  });
                } : undefined,
                printMethod: printMethod ? ({
                  html
                }) => {
                  return printMethod({
                    html,
                    content: html,
                    options: opts,
                    $table: $xeTable,
                    $grid: $xeGrid,
                    $gantt: $xeGantt
                  });
                } : undefined
              }));
            } else {
              resolve(exportMethods.exportData(opts).then(({
                content
              }) => {
                return core_.VxeUI.print({
                  title: printTitle,
                  html: content,
                  customStyle: opts.style,
                  beforeMethod: beforePrintMethod ? ({
                    html
                  }) => {
                    return beforePrintMethod({
                      html,
                      content: html,
                      options: opts,
                      $table: $xeTable,
                      $grid: $xeGrid,
                      $gantt: $xeGantt
                    });
                  } : undefined,
                  beforePrintMethod: beforePrintMethod ? ({
                    html
                  }) => {
                    return beforePrintMethod({
                      html,
                      content: html,
                      options: opts,
                      $table: $xeTable,
                      $grid: $xeGrid,
                      $gantt: $xeGantt
                    });
                  } : undefined,
                  printMethod: printMethod ? ({
                    html
                  }) => {
                    return printMethod({
                      html,
                      content: html,
                      options: opts,
                      $table: $xeTable,
                      $grid: $xeGrid,
                      $gantt: $xeGantt
                    });
                  } : undefined
                });
              }));
            }
          } else {
            export_hook_errLog('vxe.error.reqComp', ['vxe-print']);
            const e = {
              status: false,
              msg: 'print not exist'
            };
            reject(e);
          }
        });
      },
      getPrintHtml(options) {
        const printOpts = computePrintOpts.value;
        const opts = Object.assign({
          original: false
          // beforePrintMethod
        }, printOpts, options, {
          type: 'html',
          download: false,
          remote: false,
          print: true
        });
        return $xeTable.exportData(opts).then(({
          content
        }) => {
          return {
            html: content
          };
        });
      },
      closeImport() {
        if (core_.VxeUI.modal) {
          return core_.VxeUI.modal.close('VXE_IMPORT_MODAL');
        }
        return Promise.resolve();
      },
      openImport(options) {
        const {
          treeConfig,
          importConfig
        } = props;
        const {
          initStore,
          importStore,
          importParams
        } = reactData;
        const importOpts = computeImportOpts.value;
        const defOpts = Object.assign({
          mode: 'insertTop',
          message: true,
          types: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps),
          modes: ['insertTop', 'covering']
        }, importOpts, options);
        const types = defOpts.types || [];
        const modes = defOpts.modes || [];
        const isTree = !!treeConfig;
        if (isTree) {
          if (defOpts.message) {
            if (core_.VxeUI.modal) {
              core_.VxeUI.modal.message({
                content: export_hook_getI18n('vxe.error.treeNotImp'),
                status: 'error'
              });
            }
          }
          return;
        }
        if (!importConfig) {
          export_hook_errLog('vxe.error.reqProp', ['import-config']);
        }
        // 处理类型
        const typeList = types.map(value => {
          return {
            value,
            label: export_hook_getI18n(`vxe.export.types.${value}`)
          };
        });
        const modeList = modes.map(item => {
          if (item && item.value) {
            return {
              value: item.value,
              label: item.label || item.value
            };
          }
          return {
            value: item,
            label: export_hook_getI18n(`vxe.import.modes.${item}`)
          };
        });
        Object.assign(importStore, {
          file: null,
          type: '',
          filename: '',
          modeList,
          typeList,
          visible: true
        });
        Object.assign(importParams, defOpts);
        if (!modeList.some(item => item.value === importParams.mode)) {
          importParams.mode = modeList[0].value;
        }
        initStore.import = true;
      },
      closeExport: handleCloseExport,
      openExport(options) {
        const exportOpts = computeExportOpts.value;
        const defOpts = Object.assign({
          message: true,
          types: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps)
        }, exportOpts, options);
        if (!props.exportConfig) {
          export_hook_errLog('vxe.error.reqProp', ['export-config']);
        }
        return handleExportAndPrint(defOpts);
      },
      closePrint: handleCloseExport,
      openPrint(options) {
        const printOpts = computePrintOpts.value;
        const defOpts = Object.assign({
          message: true
        }, printOpts, options);
        if (!props.printConfig) {
          export_hook_errLog('vxe.error.reqProp', ['print-config']);
        }
        return handleExportAndPrint(defOpts, true);
      }
    };
    return exportMethods;
  },
  setupGrid($xeGrid) {
    return $xeGrid.extendTableMethods(tableExportMethodKeys);
  },
  setupGantt($xeGantt) {
    return $xeGantt.extendTableMethods(tableExportMethodKeys);
  }
});
;// ./packages/table/module/keyboard/hook.ts







const {
  hooks: keyboard_hook_hooks
} = core_.VxeUI;
keyboard_hook_hooks.add('tableKeyboardModule', {
  setupTable($xeTable) {
    const {
      props,
      reactData,
      internalData
    } = $xeTable;
    const {
      refElem,
      refTableBody
    } = $xeTable.getRefMaps();
    const {
      computeEditOpts,
      computeCheckboxOpts,
      computeMouseOpts,
      computeTreeOpts,
      computeRowOpts,
      computeColumnOpts,
      computeCellOpts,
      computeDefaultRowHeight,
      computeCurrentRowOpts,
      computeCurrentColumnOpts
    } = $xeTable.getComputeMaps();
    function getCheckboxRangeRows(evnt, params, targetTrElem, trRect, offsetClientTop, moveRange) {
      const {
        showOverflow
      } = props;
      const {
        fullAllDataRowIdData,
        isResizeCellHeight
      } = internalData;
      const rowOpts = computeRowOpts.value;
      const cellOpts = computeCellOpts.value;
      const defaultRowHeight = computeDefaultRowHeight.value;
      const {
        row
      } = params;
      let countHeight = 0;
      let rangeRows = [];
      let moveSize = 0;
      const isDown = moveRange > 0;
      const {
        scrollYLoad
      } = reactData;
      const {
        afterFullData
      } = internalData;
      if (isDown) {
        moveSize = offsetClientTop + moveRange;
      } else {
        moveSize = trRect.height - offsetClientTop + Math.abs(moveRange);
      }
      if (scrollYLoad) {
        const _rowIndex = $xeTable.getVTRowIndex(row);
        const isCustomCellHeight = isResizeCellHeight || cellOpts.height || rowOpts.height;
        if (!isCustomCellHeight && showOverflow) {
          if (isDown) {
            rangeRows = afterFullData.slice(_rowIndex, _rowIndex + Math.ceil(moveSize / defaultRowHeight));
          } else {
            rangeRows = afterFullData.slice(_rowIndex - Math.floor(moveSize / defaultRowHeight), _rowIndex + 1);
          }
        } else {
          if (isDown) {
            for (let i = _rowIndex; i < afterFullData.length; i++) {
              const item = afterFullData[i];
              const rowid = $xeTable.getRowid(item);
              const rowRest = fullAllDataRowIdData[rowid] || {};
              countHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
              rangeRows.push(item);
              if (countHeight > moveSize) {
                return rangeRows;
              }
            }
          } else {
            for (let len = _rowIndex; len >= 0; len--) {
              const item = afterFullData[len];
              const rowid = $xeTable.getRowid(item);
              const rowRest = fullAllDataRowIdData[rowid] || {};
              countHeight += rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
              rangeRows.push(item);
              if (countHeight > moveSize) {
                return rangeRows;
              }
            }
          }
        }
      } else {
        const siblingProp = isDown ? 'next' : 'previous';
        while (targetTrElem && countHeight < moveSize) {
          const rowNodeRest = $xeTable.getRowNode(targetTrElem);
          if (rowNodeRest) {
            rangeRows.push(rowNodeRest.item);
            countHeight += targetTrElem.offsetHeight;
            targetTrElem = targetTrElem[`${siblingProp}ElementSibling`];
          }
        }
      }
      return rangeRows;
    }
    const handleCheckboxRangeEvent = (evnt, params) => {
      const {
        elemStore
      } = internalData;
      const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
      const leftScrollElem = getRefElem(elemStore['left-body-scroll']);
      const rightScrollElem = getRefElem(elemStore['right-body-scroll']);
      const {
        column,
        cell
      } = params;
      if (column.type === 'checkbox') {
        let bodyWrapperElem = bodyScrollElem;
        if (leftScrollElem && column.fixed === 'left') {
          bodyWrapperElem = leftScrollElem;
        } else if (rightScrollElem && column.fixed === 'right') {
          bodyWrapperElem = rightScrollElem;
        }
        if (!bodyWrapperElem) {
          return;
        }
        const bodyRect = bodyWrapperElem.getBoundingClientRect();
        const el = refElem.value;
        const disX = evnt.clientX;
        const disY = evnt.clientY;
        const checkboxRangeElem = bodyWrapperElem.querySelector('.vxe-table--checkbox-range');
        const trElem = cell.parentElement;
        const selectRecords = $xeTable.getCheckboxRecords();
        let lastRangeRows = [];
        const marginSize = 1;
        const startTop = evnt.clientY - bodyRect.y + bodyWrapperElem.scrollTop;
        const startLeft = evnt.clientX - bodyRect.x + bodyWrapperElem.scrollLeft;
        const startScrollTop = bodyWrapperElem.scrollTop;
        const rowHeight = trElem.offsetHeight;
        const trRect = trElem.getBoundingClientRect();
        const offsetClientTop = disY - trRect.y;
        let mouseScrollTimeout = null;
        let isMouseScrollDown = false;
        let mouseScrollSpaceSize = 1;
        const triggerEvent = (type, evnt) => {
          $xeTable.dispatchEvent(`checkbox-range-${type}`, {
            records: () => $xeTable.getCheckboxRecords(),
            reserves: () => $xeTable.getCheckboxReserveRecords()
          }, evnt);
        };
        const handleChecked = evnt => {
          const {
            clientX,
            clientY
          } = evnt;
          const offsetLeft = clientX - disX;
          const offsetTop = clientY - disY + (bodyWrapperElem.scrollTop - startScrollTop);
          let rangeHeight = Math.abs(offsetTop);
          let rangeWidth = Math.abs(offsetLeft);
          let rangeTop = startTop;
          let rangeLeft = startLeft;
          if (offsetTop < marginSize) {
            // 向上
            rangeTop += offsetTop;
            if (rangeTop < marginSize) {
              rangeTop = marginSize;
              rangeHeight = startTop;
            }
          } else {
            // 向下
            rangeHeight = Math.min(rangeHeight, bodyWrapperElem.scrollHeight - startTop - marginSize);
          }
          if (offsetLeft < marginSize) {
            // 向左
            rangeLeft += offsetLeft;
            if (rangeWidth > startLeft) {
              rangeLeft = marginSize;
              rangeWidth = startLeft;
            }
          } else {
            // 向右
            rangeWidth = Math.min(rangeWidth, bodyWrapperElem.clientWidth - startLeft - marginSize);
          }
          checkboxRangeElem.style.height = `${rangeHeight}px`;
          checkboxRangeElem.style.width = `${rangeWidth}px`;
          checkboxRangeElem.style.left = `${rangeLeft}px`;
          checkboxRangeElem.style.top = `${rangeTop}px`;
          checkboxRangeElem.style.display = 'block';
          const rangeRows = getCheckboxRangeRows(evnt, params, trElem, trRect, offsetClientTop, offsetTop < marginSize ? -rangeHeight : rangeHeight);
          // 至少滑动 10px 才能有效匹配
          if (rangeHeight > 10 && rangeRows.length !== lastRangeRows.length) {
            const isControlKey = hasControlKey(evnt);
            lastRangeRows = rangeRows;
            if (isControlKey) {
              rangeRows.forEach(row => {
                $xeTable.handleBatchSelectRows([row], selectRecords.indexOf(row) === -1);
              });
            } else {
              $xeTable.setAllCheckboxRow(false);
              $xeTable.handleCheckedCheckboxRow(rangeRows, true, false);
            }
            triggerEvent('change', evnt);
          }
        };
        // 停止鼠标滚动
        const stopMouseScroll = () => {
          clearTimeout(mouseScrollTimeout);
          mouseScrollTimeout = null;
        };
        // 开始鼠标滚动
        const startMouseScroll = evnt => {
          stopMouseScroll();
          mouseScrollTimeout = setTimeout(() => {
            if (mouseScrollTimeout) {
              const {
                scrollLeft,
                scrollTop,
                clientHeight,
                scrollHeight
              } = bodyWrapperElem;
              const topSize = Math.ceil(mouseScrollSpaceSize * 50 / rowHeight);
              if (isMouseScrollDown) {
                if (scrollTop + clientHeight < scrollHeight) {
                  $xeTable.scrollTo(scrollLeft, scrollTop + topSize);
                  startMouseScroll(evnt);
                  handleChecked(evnt);
                } else {
                  stopMouseScroll();
                }
              } else {
                if (scrollTop) {
                  $xeTable.scrollTo(scrollLeft, scrollTop - topSize);
                  startMouseScroll(evnt);
                  handleChecked(evnt);
                } else {
                  stopMouseScroll();
                }
              }
            }
          }, 50);
        };
        addClass(el, 'drag--range');
        document.onmousemove = evnt => {
          evnt.preventDefault();
          evnt.stopPropagation();
          const {
            clientY
          } = evnt;
          const {
            boundingTop
          } = getAbsolutePos(bodyWrapperElem);
          // 如果超过可视区,触发滚动
          if (clientY < boundingTop) {
            isMouseScrollDown = false;
            mouseScrollSpaceSize = boundingTop - clientY;
            if (!mouseScrollTimeout) {
              startMouseScroll(evnt);
            }
          } else if (clientY > boundingTop + bodyWrapperElem.clientHeight) {
            isMouseScrollDown = true;
            mouseScrollSpaceSize = clientY - boundingTop - bodyWrapperElem.clientHeight;
            if (!mouseScrollTimeout) {
              startMouseScroll(evnt);
            }
          } else if (mouseScrollTimeout) {
            stopMouseScroll();
          }
          handleChecked(evnt);
        };
        document.onmouseup = evnt => {
          stopMouseScroll();
          removeClass(el, 'drag--range');
          checkboxRangeElem.removeAttribute('style');
          document.onmousemove = null;
          document.onmouseup = null;
          triggerEvent('end', evnt);
        };
        triggerEvent('start', evnt);
      }
    };
    const handleCellMousedownEvent = (evnt, params) => {
      const {
        editConfig,
        checkboxConfig,
        mouseConfig
      } = props;
      const checkboxOpts = computeCheckboxOpts.value;
      const mouseOpts = computeMouseOpts.value;
      const editOpts = computeEditOpts.value;
      if (mouseConfig && mouseOpts.area && $xeTable.triggerClAreaMnEvent) {
        return $xeTable.triggerClAreaMnEvent(evnt, params);
      } else {
        if (checkboxConfig && checkboxOpts.range) {
          handleCheckboxRangeEvent(evnt, params);
        }
        if (mouseConfig && mouseOpts.selected) {
          if (!editConfig || editOpts.mode === 'cell') {
            $xeTable.handleSelected(params, evnt);
          }
        }
      }
    };
    const handleMoveSelected = (evnt, args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow) => {
      const {
        afterFullData,
        visibleColumn
      } = internalData;
      const params = Object.assign({}, args);
      const {
        row,
        column
      } = params;
      const _rowIndex = $xeTable.getVTRowIndex(row);
      const _columnIndex = $xeTable.getVTColumnIndex(column);
      const tableBody = refTableBody.value;
      const tableBodyElem = tableBody ? tableBody.$el : null;
      const tableWidth = tableBodyElem ? tableBodyElem.clientWidth : 0;
      let colAlign = isLeftArrow || isRightArrow || column.renderWidth < tableWidth;
      if (isLeftArrow && _columnIndex >= 0 || isRightArrow && _columnIndex <= visibleColumn.length - 1) {
        colAlign = false;
      } else {
        evnt.preventDefault();
      }
      if (isUpArrow && _rowIndex > 0) {
        // 移动到上一行
        params.rowIndex = _rowIndex - 1;
        params.row = afterFullData[params.rowIndex];
      } else if (isDwArrow && _rowIndex < afterFullData.length - 1) {
        // 移动到下一行
        params.rowIndex = _rowIndex + 1;
        params.row = afterFullData[params.rowIndex];
      } else if (isLeftArrow && _columnIndex) {
        // 移动到左侧单元格
        params.columnIndex = _columnIndex - 1;
        params.column = visibleColumn[params.columnIndex];
      } else if (isRightArrow && _columnIndex < visibleColumn.length - 1) {
        // 移动到右侧单元格
        params.columnIndex = _columnIndex + 1;
        params.column = visibleColumn[params.columnIndex];
      }
      $xeTable.scrollToRow(params.row, params.column, {
        colAlign
      }).then(() => {
        params.cell = $xeTable.getCellElement(params.row, params.column);
        $xeTable.handleSelected(params, evnt);
      });
      return params;
    };
    const keyboardMethods = {
      // 处理 Tab 键移动
      moveTabSelected(args, isLeft, evnt) {
        const {
          editConfig
        } = props;
        const {
          afterFullData,
          visibleColumn
        } = internalData;
        const editOpts = computeEditOpts.value;
        const rowOpts = computeRowOpts.value;
        const currentRowOpts = computeCurrentRowOpts.value;
        const columnOpts = computeColumnOpts.value;
        const currentColumnOpts = computeCurrentColumnOpts.value;
        let targetRow;
        let targetRowIndex;
        let targetColumnIndex;
        const params = Object.assign({}, args);
        const _rowIndex = $xeTable.getVTRowIndex(params.row);
        const _columnIndex = $xeTable.getVTColumnIndex(params.column);
        evnt.preventDefault();
        if (isLeft) {
          // 向左
          if (_columnIndex <= 0) {
            // 如果已经是第一列,则移动到上一行
            if (_rowIndex > 0) {
              targetRowIndex = _rowIndex - 1;
              targetRow = afterFullData[targetRowIndex];
              targetColumnIndex = visibleColumn.length - 1;
            }
          } else {
            targetColumnIndex = _columnIndex - 1;
          }
        } else {
          if (_columnIndex >= visibleColumn.length - 1) {
            // 如果已经是第一列,则移动到上一行
            if (_rowIndex < afterFullData.length - 1) {
              targetRowIndex = _rowIndex + 1;
              targetRow = afterFullData[targetRowIndex];
              targetColumnIndex = 0;
            }
          } else {
            targetColumnIndex = _columnIndex + 1;
          }
        }
        const targetColumn = visibleColumn[targetColumnIndex];
        if (targetColumn) {
          if (targetRow) {
            params.rowIndex = targetRowIndex;
            params.row = targetRow;
          } else {
            params.rowIndex = _rowIndex;
          }
          params.columnIndex = targetColumnIndex;
          params.column = targetColumn;
          params.cell = $xeTable.getCellElement(params.row, params.column);
          if (rowOpts.isCurrent && currentRowOpts.isFollowSelected) {
            $xeTable.triggerCurrentRowEvent(evnt, params);
          }
          if (columnOpts.isCurrent && currentColumnOpts.isFollowSelected) {
            $xeTable.triggerCurrentColumnEvent(evnt, params);
          }
          if (editConfig) {
            if (editOpts.trigger === 'click' || editOpts.trigger === 'dblclick') {
              if (editOpts.mode === 'row') {
                $xeTable.handleEdit(params, evnt);
              } else {
                $xeTable.scrollToRow(params.row, params.column).then(() => {
                  $xeTable.handleSelected(params, evnt);
                });
              }
            }
          } else {
            $xeTable.scrollToRow(params.row, params.column).then(() => {
              $xeTable.handleSelected(params, evnt);
            });
          }
        }
      },
      // 处理当前行方向键移动
      moveCurrentRow(isUpArrow, isDwArrow, evnt) {
        const {
          treeConfig
        } = props;
        const {
          afterFullData,
          currentRow
        } = internalData;
        const treeOpts = computeTreeOpts.value;
        const childrenField = treeOpts.children || treeOpts.childrenField;
        let targetRow;
        if (currentRow) {
          if (treeConfig) {
            const {
              index,
              items
            } = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(afterFullData, item => item === currentRow, {
              children: childrenField
            });
            if (isUpArrow && index > 0) {
              targetRow = items[index - 1];
            } else if (isDwArrow && index < items.length - 1) {
              targetRow = items[index + 1];
            }
          } else {
            const _rowIndex = $xeTable.getVTRowIndex(currentRow);
            if (isUpArrow && _rowIndex > 0) {
              targetRow = afterFullData[_rowIndex - 1];
            } else if (isDwArrow && _rowIndex < afterFullData.length - 1) {
              targetRow = afterFullData[_rowIndex + 1];
            }
          }
        } else {
          targetRow = afterFullData[0];
        }
        if (targetRow) {
          evnt.preventDefault();
          const params = {
            $table: $xeTable,
            row: targetRow,
            rowIndex: $xeTable.getRowIndex(targetRow),
            $rowIndex: $xeTable.getVMRowIndex(targetRow)
          };
          $xeTable.scrollToRow(targetRow).then(() => $xeTable.triggerCurrentRowEvent(evnt, params));
        }
      },
      // 处理当前列方向键移动
      moveCurrentColumn(isLeftArrow, isRightArrow, evnt) {
        const {
          currentColumn
        } = reactData;
        const {
          visibleColumn
        } = internalData;
        let targetCol = null;
        if (currentColumn) {
          const _columnIndex = $xeTable.getVTColumnIndex(currentColumn);
          if (isLeftArrow && _columnIndex > 0) {
            targetCol = visibleColumn[_columnIndex - 1];
          } else if (isRightArrow && _columnIndex < visibleColumn.length - 1) {
            targetCol = visibleColumn[_columnIndex + 1];
          }
        } else {
          targetCol = visibleColumn[0];
        }
        if (targetCol) {
          evnt.preventDefault();
          const params = {
            $table: $xeTable,
            column: targetCol,
            columnIndex: $xeTable.getColumnIndex(targetCol),
            $columnIndex: $xeTable.getVMColumnIndex(targetCol)
          };
          $xeTable.scrollToColumn(targetCol).then(() => $xeTable.triggerCurrentColumnEvent(evnt, params));
        }
      },
      // 处理可编辑方向键移动
      moveArrowSelected(args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt) {
        const {
          highlightCurrentRow,
          highlightCurrentColumn
        } = props;
        const rowOpts = computeRowOpts.value;
        const currentRowOpts = computeCurrentRowOpts.value;
        const columnOpts = computeColumnOpts.value;
        const currentColumnOpts = computeCurrentColumnOpts.value;
        const params = handleMoveSelected(evnt, args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow);
        if (rowOpts.isCurrent || highlightCurrentRow) {
          if (currentRowOpts.isFollowSelected) {
            $xeTable.triggerCurrentRowEvent(evnt, params);
          } else {
            // 当前行按键上下移动
            if ((isUpArrow || isDwArrow) && (rowOpts.isCurrent || highlightCurrentRow)) {
              $xeTable.moveCurrentRow(isUpArrow, isDwArrow, evnt);
            }
          }
        }
        if (columnOpts.isCurrent || highlightCurrentColumn) {
          if (currentColumnOpts.isFollowSelected) {
            $xeTable.triggerCurrentColumnEvent(evnt, params);
          } else {
            // 当前行按键左右移动
            if ((isLeftArrow || isRightArrow) && (columnOpts.isCurrent || highlightCurrentColumn)) {
              $xeTable.moveCurrentColumn(isLeftArrow, isRightArrow, evnt);
            }
          }
        }
      },
      moveEnterSelected(args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt) {
        const {
          highlightCurrentRow,
          highlightCurrentColumn
        } = props;
        const rowOpts = computeRowOpts.value;
        const currentRowOpts = computeCurrentRowOpts.value;
        const columnOpts = computeColumnOpts.value;
        const currentColumnOpts = computeCurrentColumnOpts.value;
        const params = handleMoveSelected(evnt, args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow);
        if ((rowOpts.isCurrent || highlightCurrentRow) && currentRowOpts.isFollowSelected) {
          $xeTable.triggerCurrentRowEvent(evnt, params);
        }
        if ((columnOpts.isCurrent || highlightCurrentColumn) && currentColumnOpts.isFollowSelected) {
          $xeTable.triggerCurrentColumnEvent(evnt, params);
        }
      },
      // 已废弃,待删除
      moveSelected(args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow, evnt) {
        handleMoveSelected(evnt, args, isLeftArrow, isUpArrow, isRightArrow, isDwArrow);
      },
      handleCellMousedownEvent
    };
    return keyboardMethods;
  }
});
;// ./packages/table/module/validator/hook.ts












const {
  warnLog: validator_hook_warnLog,
  errLog: validator_hook_errLog
} = createComponentLog('table');
const {
  getConfig: validator_hook_getConfig,
  validators: hook_validators,
  hooks: validator_hook_hooks
} = core_.VxeUI;
/**
 * 校验规则
 */
class Rule {
  constructor(rule) {
    Object.assign(this, {
      $options: rule,
      required: rule.required,
      min: rule.min,
      max: rule.max,
      type: rule.type,
      pattern: rule.pattern,
      validator: rule.validator,
      trigger: rule.trigger,
      maxWidth: rule.maxWidth
    });
  }
  /**
   * 获取校验不通过的消息
   * 支持国际化翻译
   */
  get content() {
    return getFuncText(this.$options.content || this.$options.message);
  }
  get message() {
    return this.content;
  }
}
// 如果存在 pattern,判断正则
function validREValue(pattern, val) {
  if (pattern && !(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isRegExp(pattern) ? pattern : new RegExp(pattern)).test(val)) {
    return false;
  }
  return true;
}
// 如果存在 max,判断最大值
function validMaxValue(max, num) {
  if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(max) && num > external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(max)) {
    return false;
  }
  return true;
}
// 如果存在 min,判断最小值
function validMinValue(min, num) {
  if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(min) && num < external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(min)) {
    return false;
  }
  return true;
}
function validRuleValue(rule, val, required) {
  const {
    type,
    min,
    max,
    pattern
  } = rule;
  const isArrType = type === 'array';
  const isNumType = type === 'number';
  const isStrType = type === 'string';
  const strVal = `${val}`;
  if (!validREValue(pattern, strVal)) {
    return false;
  }
  if (isArrType) {
    if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(val)) {
      return false;
    }
    if (required) {
      if (!val.length) {
        return false;
      }
    }
    if (!validMinValue(min, val.length)) {
      return false;
    }
    if (!validMaxValue(max, val.length)) {
      return false;
    }
  } else if (isNumType) {
    const numVal = Number(val);
    if (isNaN(numVal)) {
      return false;
    }
    if (!validMinValue(min, numVal)) {
      return false;
    }
    if (!validMaxValue(max, numVal)) {
      return false;
    }
  } else {
    if (isStrType) {
      if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(val)) {
        return false;
      }
    }
    if (required) {
      if (!strVal) {
        return false;
      }
    }
    if (!validMinValue(min, strVal.length)) {
      return false;
    }
    if (!validMaxValue(max, strVal.length)) {
      return false;
    }
  }
  return true;
}
function checkRuleStatus(rule, row, val) {
  const {
    required,
    field
  } = rule;
  const currVal = field ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, field) : val;
  const isEmptyVal = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(currVal) ? !currVal.length : eqEmptyValue(currVal);
  if (required) {
    if (isEmptyVal) {
      return false;
    }
    if (!validRuleValue(rule, currVal, required)) {
      return false;
    }
  } else {
    if (!isEmptyVal) {
      if (!validRuleValue(rule, currVal, required)) {
        return false;
      }
    }
  }
  return true;
}
const tableValidatorMethodKeys = ['fullValidate', 'validate', 'fullValidateField', 'validateField', 'clearValidate'];
validator_hook_hooks.add('tableValidatorModule', {
  setupTable($xeTable) {
    const {
      props,
      reactData,
      internalData
    } = $xeTable;
    const {
      refValidTooltip
    } = $xeTable.getRefMaps();
    const {
      computeValidOpts,
      computeTreeOpts,
      computeEditOpts,
      computeAggregateOpts
    } = $xeTable.getComputeMaps();
    let validatorMethods = {};
    let validatorPrivateMethods = {};
    /**
     * 聚焦到校验通过的单元格并弹出校验错误提示
     */
    const handleValidError = params => {
      return new Promise(resolve => {
        const validOpts = computeValidOpts.value;
        if (validOpts.autoPos === false) {
          $xeTable.dispatchEvent('valid-error', params, null);
          resolve();
        } else {
          $xeTable.handleEdit(params, {
            type: 'valid-error',
            trigger: 'call'
          }).then(() => {
            resolve($xeTable.showValidTooltip(params));
          });
        }
      });
    };
    const handleErrMsgMode = validErrMaps => {
      const validOpts = computeValidOpts.value;
      if (validOpts.msgMode === 'single') {
        const keys = Object.keys(validErrMaps);
        const resMaps = {};
        if (keys.length) {
          const firstKey = keys[0];
          resMaps[firstKey] = validErrMaps[firstKey];
        }
        return resMaps;
      }
      return validErrMaps;
    };
    /**
     * 对表格数据进行校验
     * 如果不指定数据,则默认只校验临时变动的数据,例如新增或修改
     * 如果传 true 则校验当前表格数据
     * 如果传 row 指定行记录,则只验证传入的行
     * 如果传 rows 为多行记录,则只验证传入的行
     * 如果只传 callback 否则默认验证整个表格数据
     * 返回 Promise 对象,或者使用回调方式
     */
    const beginValidate = (rows, cols, cb, isFull) => {
      const validRest = {};
      const {
        editRules,
        treeConfig
      } = props;
      const {
        isRowGroupStatus
      } = reactData;
      const {
        afterFullData,
        pendingRowMaps,
        removeRowMaps
      } = internalData;
      const treeOpts = computeTreeOpts.value;
      const aggregateOpts = computeAggregateOpts.value;
      const validOpts = computeValidOpts.value;
      let validList;
      if (rows === true) {
        validList = afterFullData;
      } else if (rows) {
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(rows)) {
          cb = rows;
        } else {
          validList = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows) ? rows : [rows];
        }
      }
      if (!validList) {
        if ($xeTable.getInsertRecords) {
          validList = $xeTable.getInsertRecords().concat($xeTable.getUpdateRecords());
        } else {
          validList = [];
        }
      }
      const rowValidErrs = [];
      internalData._lastCallTime = Date.now();
      internalData.validRuleErr = false; // 如果为快速校验,当存在某列校验不通过时将终止执行
      $xeTable.clearValidate();
      const validErrMaps = {};
      if (editRules) {
        const columns = cols && cols.length ? cols : $xeTable.getColumns();
        const handleVaild = row => {
          const rowid = getRowid($xeTable, row);
          // 是否删除
          if (removeRowMaps[rowid]) {
            return;
          }
          // 是否标记删除
          if (pendingRowMaps[rowid]) {
            return;
          }
          if ($xeTable.isAggregateRecord(row)) {
            return;
          }
          if (isFull || !internalData.validRuleErr) {
            const colVailds = [];
            columns.forEach(column => {
              const field = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(column) ? column : column.field;
              if ((isFull || !internalData.validRuleErr) && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().has(editRules, field)) {
                colVailds.push(validatorPrivateMethods.validCellRules('all', row, column).catch(({
                  rule,
                  rules
                }) => {
                  const rest = {
                    rule,
                    rules,
                    rowIndex: $xeTable.getRowIndex(row),
                    row,
                    columnIndex: $xeTable.getColumnIndex(column),
                    column,
                    field,
                    $table: $xeTable
                  };
                  if (!validRest[field]) {
                    validRest[field] = [];
                  }
                  validErrMaps[`${getRowid($xeTable, row)}:${column.id}`] = {
                    column,
                    row,
                    rule,
                    content: rule.content
                  };
                  validRest[field].push(rest);
                  if (!isFull) {
                    internalData.validRuleErr = true;
                    return Promise.reject(rest);
                  }
                }));
              }
            });
            rowValidErrs.push(Promise.all(colVailds));
          }
        };
        if (isRowGroupStatus) {
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(validList, handleVaild, {
            children: aggregateOpts.mapChildrenField
          });
        } else if (treeConfig) {
          const childrenField = treeOpts.children || treeOpts.childrenField;
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(validList, handleVaild, {
            children: childrenField
          });
        } else {
          validList.forEach(handleVaild);
        }
        return Promise.all(rowValidErrs).then(() => {
          const ruleProps = Object.keys(validRest);
          reactData.validErrorMaps = handleErrMsgMode(validErrMaps);
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
            if (ruleProps.length) {
              return Promise.reject(validRest[ruleProps[0]][0]);
            }
            if (cb) {
              cb();
            }
          });
        }).catch(firstErrParams => {
          return new Promise((resolve, reject) => {
            const finish = () => {
              (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
                if (cb) {
                  cb(validRest);
                  resolve();
                } else {
                  if (validator_hook_getConfig().validToReject === 'obsolete') {
                    // 已废弃,校验失败将不会执行catch
                    reject(validRest);
                  } else {
                    resolve(validRest);
                  }
                }
              });
            };
            const posAndFinish = () => {
              firstErrParams.cell = $xeTable.getCellElement(firstErrParams.row, firstErrParams.column);
              scrollToView(firstErrParams.cell);
              handleValidError(firstErrParams).then(finish);
            };
            /**
             * 当校验不通过时
             * 将表格滚动到可视区
             * 由于提示信息至少需要占一行,定位向上偏移一行
             */
            if (validOpts.autoPos === false) {
              finish();
            } else {
              const row = firstErrParams.row;
              const column = firstErrParams.column;
              $xeTable.scrollToRow(row, column).then(posAndFinish);
            }
          });
        });
      } else {
        reactData.validErrorMaps = {};
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
        if (cb) {
          cb();
        }
      });
    };
    validatorMethods = {
      /**
       * 完整校验行,和 validate 的区别就是会给有效数据中的每一行进行校验
       */
      fullValidate(rows, cb) {
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(cb)) {
          validator_hook_warnLog('vxe.error.notValidators', ['fullValidate(rows, callback)', 'fullValidate(rows)']);
        }
        return beginValidate(rows, null, cb, true);
      },
      /**
       * 快速校验行,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外)
       */
      validate(rows, cb) {
        return beginValidate(rows, null, cb);
      },
      /**
       * 完整校验单元格,和 validateField 的区别就是会给有效数据中的每一行进行校验
       */
      fullValidateField(rows, fieldOrColumn) {
        const colList = (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map(column => handleFieldOrColumn($xeTable, column));
        if (colList.length) {
          return beginValidate(rows, colList, null, true);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      /**
       * 快速校验单元格,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外)
       */
      validateField(rows, fieldOrColumn) {
        const colList = (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map(column => handleFieldOrColumn($xeTable, column));
        if (colList.length) {
          return beginValidate(rows, colList, null);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      clearValidate(rows, fieldOrColumn) {
        const {
          validErrorMaps
        } = reactData;
        const validTip = refValidTooltip.value;
        const validOpts = computeValidOpts.value;
        const rowList = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows) ? rows : rows ? [rows] : [];
        const colList = (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map(column => handleFieldOrColumn($xeTable, column));
        let validErrMaps = {};
        if (validTip && validTip.reactData.visible) {
          validTip.close();
        }
        // 如果是单个提示模式
        if (validOpts.msgMode === 'single') {
          reactData.validErrorMaps = {};
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
        }
        if (rowList.length && colList.length) {
          validErrMaps = Object.assign({}, validErrorMaps);
          rowList.forEach(row => {
            colList.forEach(column => {
              const validKey = `${getRowid($xeTable, row)}:${column.id}`;
              if (validErrMaps[validKey]) {
                delete validErrMaps[validKey];
              }
            });
          });
        } else if (rowList.length) {
          const rowIdList = rowList.map(row => `${getRowid($xeTable, row)}`);
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(validErrorMaps, (item, key) => {
            if (rowIdList.indexOf(key.split(':')[0]) > -1) {
              validErrMaps[key] = item;
            }
          });
        } else if (colList.length) {
          const colidList = colList.map(column => `${column.id}`);
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(validErrorMaps, (item, key) => {
            if (colidList.indexOf(key.split(':')[1]) > -1) {
              validErrMaps[key] = item;
            }
          });
        }
        reactData.validErrorMaps = validErrMaps;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      }
    };
    validatorPrivateMethods = {
      /**
       * 校验数据
       * 按表格行、列顺序依次校验(同步或异步)
       * 校验规则根据索引顺序依次校验,如果是异步则会等待校验完成才会继续校验下一列
       * 如果校验失败则,触发回调或者Promise<不通过列的错误消息>
       * 如果是传回调方式这返回一个校验不通过列的错误消息
       *
       * rule 配置:
       *  required=Boolean 是否必填
       *  min=Number 最小长度
       *  max=Number 最大长度
       *  validator=Function({ cellValue, rule, rules, row, column, rowIndex, columnIndex }) 自定义校验,接收一个 Promise
       *  trigger=blur|change 触发方式(除非特殊场景,否则默认为空就行)
       */
      validCellRules(validType, row, column, val) {
        const $xeGrid = $xeTable.xeGrid;
        const $xeGantt = $xeTable.xeGantt;
        const {
          editRules
        } = props;
        const {
          field
        } = column;
        const errorRules = [];
        const syncValidList = [];
        if (field && editRules) {
          const rules = column.rules ? column.rules : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(editRules, field);
          if (rules) {
            const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(val) ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, field) : val;
            rules.forEach(rule => {
              const {
                trigger,
                validator
              } = rule;
              if (validType === 'all' || !trigger || validType === trigger) {
                if (validator) {
                  const validParams = {
                    cellValue,
                    rule,
                    rules,
                    row,
                    rowIndex: $xeTable.getRowIndex(row),
                    column,
                    columnIndex: $xeTable.getColumnIndex(column),
                    field: column.field,
                    $table: $xeTable,
                    $grid: $xeGrid,
                    $gantt: $xeGantt
                  };
                  let customValid;
                  if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(validator)) {
                    const gvItem = hook_validators.get(validator);
                    if (gvItem) {
                      const tcvMethod = gvItem.tableCellValidatorMethod || gvItem.cellValidatorMethod;
                      if (tcvMethod) {
                        customValid = tcvMethod(validParams);
                      } else {
                        validator_hook_errLog('vxe.error.notValidators', [validator]);
                      }
                    } else {
                      validator_hook_errLog('vxe.error.notValidators', [validator]);
                    }
                  } else {
                    customValid = validator(validParams);
                  }
                  if (customValid) {
                    if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isError(customValid)) {
                      internalData.validRuleErr = true;
                      errorRules.push(new Rule({
                        type: 'custom',
                        trigger,
                        content: customValid.message,
                        rule: new Rule(rule)
                      }));
                    } else if (customValid.catch) {
                      // 如果为异步校验(注:异步校验是并发无序的)
                      syncValidList.push(customValid.catch(e => {
                        internalData.validRuleErr = true;
                        errorRules.push(new Rule({
                          type: 'custom',
                          trigger,
                          content: e && e.message ? e.message : rule.content || rule.message,
                          rule: new Rule(rule)
                        }));
                      }));
                    }
                  }
                } else {
                  if (!checkRuleStatus(rule, row, cellValue)) {
                    internalData.validRuleErr = true;
                    errorRules.push(new Rule(rule));
                  }
                }
              }
            });
          }
        }
        return Promise.all(syncValidList).then(() => {
          if (errorRules.length) {
            const rest = {
              rules: errorRules,
              rule: errorRules[0]
            };
            return Promise.reject(rest);
          }
        });
      },
      hasCellRules(type, row, column) {
        const {
          editRules
        } = props;
        const {
          field
        } = column;
        if (field && editRules) {
          const rules = column.rules ? column.rules : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(editRules, field);
          return rules && !!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().find(rules, rule => type === 'all' || !rule.trigger || type === rule.trigger);
        }
        return false;
      },
      /**
       * 触发校验
       */
      triggerValidate(type) {
        const {
          editConfig,
          editRules
        } = props;
        const {
          editStore
        } = reactData;
        const {
          actived
        } = editStore;
        const editOpts = computeEditOpts.value;
        const validOpts = computeValidOpts.value;
        // 检查清除校验消息
        if (editRules && validOpts.msgMode === 'single') {
          reactData.validErrorMaps = {};
        }
        // 校验单元格
        if (editConfig && editRules && actived.row) {
          const {
            row,
            column,
            cell
          } = actived.args;
          if ($xeTable.hasCellRules(type, row, column)) {
            return $xeTable.validCellRules(type, row, column).then(() => {
              if (editOpts.mode === 'row') {
                validatorMethods.clearValidate(row, column);
              }
            }).catch(({
              rule
            }) => {
              // 如果校验不通过与触发方式一致,则聚焦提示错误,否则跳过并不作任何处理
              if (!rule.trigger || type === rule.trigger) {
                const rest = {
                  rule,
                  row,
                  column,
                  cell
                };
                $xeTable.showValidTooltip(rest);
                return Promise.reject(rest);
              }
              return Promise.resolve();
            });
          }
        }
        return Promise.resolve();
      },
      /**
       * 弹出校验错误提示
       */
      showValidTooltip(params) {
        const {
          height
        } = props;
        const {
          tableData,
          validStore,
          validErrorMaps
        } = reactData;
        const {
          rule,
          row,
          column,
          cell
        } = params;
        const validOpts = computeValidOpts.value;
        const validTip = refValidTooltip.value;
        const content = rule.content;
        validStore.visible = true;
        if (validOpts.msgMode === 'single') {
          reactData.validErrorMaps = {
            [`${getRowid($xeTable, row)}:${column.id}`]: {
              column,
              row,
              rule,
              content
            }
          };
        } else {
          reactData.validErrorMaps = Object.assign({}, validErrorMaps, {
            [`${getRowid($xeTable, row)}:${column.id}`]: {
              column,
              row,
              rule,
              content
            }
          });
        }
        $xeTable.dispatchEvent('valid-error', params, null);
        if (validTip) {
          if (validTip && (validOpts.message === 'tooltip' || validOpts.message === 'default' && !height && tableData.length < 2)) {
            return validTip.open(cell, content);
          }
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      }
    };
    return {
      ...validatorMethods,
      ...validatorPrivateMethods
    };
  },
  setupGrid($xeGrid) {
    return $xeGrid.extendTableMethods(tableValidatorMethodKeys);
  },
  setupGantt($xeGantt) {
    return $xeGantt.extendTableMethods(tableValidatorMethodKeys);
  }
});
;// ./packages/table/module/custom/hook.ts










const tableCustomMethodKeys = ['openCustom', 'closeCustom', 'getCustomVisible', 'toggleCustom', 'saveCustom', 'cancelCustom', 'resetCustom', 'toggleCustomAllCheckbox', 'setCustomAllCheckbox'];
const customColumnCssKeys = ['checkbox', 'sort', 'title', 'width', 'fixed', 'align', 'header-align', 'footer-align'];
core_.VxeUI.hooks.add('tableCustomModule', {
  setupTable($xeTable) {
    const {
      reactData,
      internalData
    } = $xeTable;
    const {
      computeCustomOpts,
      computeRowGroupFields,
      computeCustomSimpleMode
    } = $xeTable.getComputeMaps();
    const {
      refElem
    } = $xeTable.getRefMaps();
    const $xeGrid = $xeTable.xeGrid;
    const $xeGantt = $xeTable.xeGantt;
    const $xeGGWrapper = $xeGrid || $xeGantt;
    const updatePopupStyle = () => {
      const {
        customStore
      } = reactData;
      const customOpts = computeCustomOpts.value;
      const {
        mode,
        placement,
        popupOptions
      } = customOpts;
      const showSimple = !(mode === 'modal' || mode === 'drawer');
      const {
        transfer,
        minWidth,
        maxWidth,
        maxHeight
      } = popupOptions || {};
      const customSimpleMode = computeCustomSimpleMode.value;
      const showCustomSimpleOutside = customSimpleMode === 'outside';
      const bodyEl = document.documentElement;
      let wrapperEl = refElem.value;
      let popupTop = 0;
      let popupMaxHeight = 0;
      const defPupStys = {};
      const panePupStys = {};
      if ($xeGantt) {
        const {
          refGanttContainerElem
        } = $xeGantt.getRefMaps();
        const ganttContainerElem = refGanttContainerElem.value;
        if (ganttContainerElem) {
          wrapperEl = ganttContainerElem;
        }
      }
      const tableRect = wrapperEl.getBoundingClientRect();
      // 多种模式,指定元素插入
      if (showSimple && transfer) {
        popupTop = tableRect.top + bodyEl.scrollTop;
        popupMaxHeight = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(maxHeight) ? 360 : maxHeight;
      } else if (showCustomSimpleOutside) {
        if ($xeGGWrapper && wrapperEl) {
          popupTop = wrapperEl.offsetTop;
        }
        popupMaxHeight = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(maxHeight) ? 360 : maxHeight;
      } else {
        // 判断面板不能大于表格高度
        if (wrapperEl) {
          popupMaxHeight = wrapperEl.clientHeight - 22;
        }
        popupMaxHeight = Math.max(88, popupMaxHeight);
      }
      let popupMxHeight = 0;
      if (!(placement === 'left' || placement === 'right')) {
        popupMxHeight = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(maxHeight) ? popupMaxHeight : maxHeight;
      }
      if (!placement || !['left', 'right', 'bottom-left', 'bottom-right'].includes(placement)) {
        if (popupTop) {
          defPupStys.top = toCssUnit(popupTop);
        }
      }
      if (showSimple && transfer) {
        if (placement === 'bottom-left' || placement === 'bottom-right') {
          defPupStys.bottom = toCssUnit(bodyEl.scrollHeight - tableRect.top - tableRect.height + 1);
        }
        if (placement === 'top-left' || placement === 'bottom-left') {
          defPupStys.left = toCssUnit(tableRect.left);
        } else if (!placement || placement === 'top-right' || placement === 'bottom-right') {
          defPupStys.right = toCssUnit(bodyEl.scrollWidth - tableRect.left - tableRect.width + 1);
        }
      }
      // 同步表格的css变量到弹窗中
      const bodyComputeStyle = getComputedStyle(bodyEl);
      const tableComputeStyle = getComputedStyle(wrapperEl);
      customColumnCssKeys.forEach(key => {
        const currCssKey = `--vxe-ui-vxe-table-custom-column-${key}-${key === 'title' ? 'min-' : ''}width`;
        const currCssVal = tableComputeStyle.getPropertyValue(currCssKey);
        if (currCssVal && currCssVal !== bodyComputeStyle.getPropertyValue(currCssKey)) {
          panePupStys[currCssKey] = currCssVal;
        }
      });
      if (minWidth) {
        defPupStys['--vxe-ui-vxe-table-custom-default-min-width'] = toCssUnit(minWidth);
      }
      if (maxWidth) {
        defPupStys['--vxe-ui-vxe-table-custom-default-max-width'] = toCssUnit(maxWidth);
      }
      if (popupMxHeight) {
        defPupStys.maxHeight = toCssUnit(popupMxHeight);
      }
      customStore.defPopupStyle = defPupStys;
      customStore.panePopupStyle = panePupStys;
      customStore.maxHeight = popupMxHeight;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    const openCustom = () => {
      const {
        initStore,
        customStore
      } = reactData;
      const customOpts = computeCustomOpts.value;
      const {
        mode,
        popupOptions
      } = customOpts;
      const showSimple = !(mode === 'modal' || mode === 'drawer');
      const {
        transfer
      } = popupOptions || {};
      const customSimpleMode = computeCustomSimpleMode.value;
      const showCustomSimpleOutside = customSimpleMode === 'outside';
      let cpToElem = null;
      // 多种模式,指定元素插入
      if (showSimple && transfer) {
        cpToElem = document.body;
      } else {
        if (showCustomSimpleOutside && $xeGGWrapper) {
          const {
            refPopupContainerElem
          } = $xeGGWrapper.getRefMaps();
          const popupContainerElem = refPopupContainerElem.value;
          if (popupContainerElem) {
            cpToElem = popupContainerElem;
          }
        }
      }
      if (internalData.customPopupToElem !== cpToElem) {
        reactData.ctPopupFlag++;
      }
      internalData.customPopupToElem = cpToElem;
      customStore.visible = true;
      initStore.custom = true;
      handleUpdateCustomColumn();
      checkCustomStatus();
      updatePopupStyle();
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => updatePopupStyle());
    };
    const handleUpdateCustomColumn = () => {
      const {
        customStore
      } = reactData;
      const {
        collectColumn
      } = internalData;
      if (customStore.visible) {
        const sortMaps = {};
        const fixedMaps = {};
        const visibleMaps = {};
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn, column => {
          const colid = column.getKey();
          column.renderFixed = column.fixed;
          column.renderVisible = column.visible;
          column.renderResizeWidth = column.renderWidth;
          column.renderAlign = column.align;
          column.renderHeaderAlign = column.headerAlign;
          column.renderFooterAlign = column.footerAlign;
          sortMaps[colid] = column.renderSortNumber;
          fixedMaps[colid] = column.fixed;
          visibleMaps[colid] = column.visible;
        });
        customStore.oldSortMaps = sortMaps;
        customStore.oldFixedMaps = fixedMaps;
        customStore.oldVisibleMaps = visibleMaps;
        reactData.customColumnList = collectColumn.slice(0);
      }
    };
    const closeCustom = () => {
      const {
        customStore
      } = reactData;
      const customOpts = computeCustomOpts.value;
      if (customStore.visible) {
        customStore.visible = false;
        if (!customOpts.immediate) {
          $xeTable.handleCustom();
        }
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    const toggleCustom = () => {
      const {
        customStore
      } = reactData;
      if (customStore.visible) {
        return closeCustom();
      }
      return openCustom();
    };
    const saveCustom = isDirectly => {
      const {
        customColumnList,
        aggHandleFields,
        rowGroupList
      } = reactData;
      const customOpts = computeCustomOpts.value;
      const {
        allowVisible,
        allowSort,
        allowFixed,
        allowResizable,
        allowAlign,
        allowHeaderAlign,
        allowFooterAlign,
        allowGroup,
        allowValues
      } = customOpts;
      if (isDirectly) {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(customColumnList, column => {
          if (allowResizable) {
            if (column.renderVisible && (!column.children || !column.children.length)) {
              column.resizeWidth = Math.max(0, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(column.renderWidth));
            }
          }
        });
      } else {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(customColumnList, (column, index, items, path, parentColumn) => {
          if (parentColumn) {
            // 更新子列信息
            column.fixed = parentColumn.fixed;
          } else {
            if (allowSort) {
              const sortIndex = index + 1;
              column.renderSortNumber = sortIndex;
            }
            if (allowFixed) {
              column.fixed = column.renderFixed;
            }
          }
          if (allowResizable) {
            if (column.renderVisible && (!column.children || !column.children.length)) {
              if (column.renderResizeWidth !== column.renderWidth) {
                column.resizeWidth = column.renderResizeWidth;
                column.renderWidth = column.renderResizeWidth;
              }
            }
          }
          if (allowVisible) {
            column.visible = column.renderVisible;
          }
          if (allowAlign) {
            column.align = column.renderAlign;
          }
          if (allowHeaderAlign) {
            column.headerAlign = column.renderHeaderAlign;
          }
          if (allowFooterAlign) {
            column.footerAlign = column.renderFooterAlign;
          }
          if (allowGroup && allowValues) {
            column.aggFunc = column.renderAggFn;
          }
        });
      }
      reactData.isCustomStatus = true;
      if (allowGroup && !!$xeTable.handlePivotTableAggData) {
        if (rowGroupList.length !== aggHandleFields.length || rowGroupList.some((conf, i) => conf.field !== aggHandleFields[i])) {
          // 更新数据分组
          if (aggHandleFields.length) {
            $xeTable.setRowGroups(aggHandleFields);
          } else {
            $xeTable.clearRowGroups();
          }
        } else if (allowValues) {
          // 更新聚合函数
          $xeTable.handleUpdateAggData();
        }
      }
      if (allowSort) {
        internalData.collectColumn = customColumnList;
      }
      return $xeTable.saveCustomStore('confirm');
    };
    const cancelCustom = () => {
      const {
        customColumnList,
        customStore
      } = reactData;
      const {
        oldSortMaps,
        oldFixedMaps,
        oldVisibleMaps
      } = customStore;
      const customOpts = computeCustomOpts.value;
      const {
        allowVisible,
        allowSort,
        allowFixed,
        allowAlign,
        allowHeaderAlign,
        allowFooterAlign,
        allowResizable,
        allowGroup,
        allowValues
      } = customOpts;
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(customColumnList, column => {
        const colid = column.getKey();
        const visible = !!oldVisibleMaps[colid];
        const fixed = oldFixedMaps[colid] || '';
        if (allowVisible) {
          column.renderVisible = visible;
          column.visible = visible;
        }
        if (allowFixed) {
          column.renderFixed = fixed;
          column.fixed = fixed;
        }
        if (allowSort) {
          column.renderSortNumber = oldSortMaps[colid] || 0;
        }
        if (allowResizable) {
          column.renderResizeWidth = column.renderWidth;
        }
        if (allowAlign) {
          column.align = column.renderAlign;
        }
        if (allowHeaderAlign) {
          column.headerAlign = column.renderHeaderAlign;
        }
        if (allowFooterAlign) {
          column.footerAlign = column.renderFooterAlign;
        }
        if (allowGroup) {
          // 无
        }
        if (allowValues) {
          // 无
        }
      }, {
        children: 'children'
      });
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    const setCustomAllCheckbox = checked => {
      const {
        customStore
      } = reactData;
      const {
        customColumnList
      } = reactData;
      const customOpts = computeCustomOpts.value;
      const {
        checkMethod,
        visibleMethod
      } = customOpts;
      const isAll = !!checked;
      if (customOpts.immediate) {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(customColumnList, column => {
          if (visibleMethod && !visibleMethod({
            $table: $xeTable,
            column
          })) {
            return;
          }
          if (checkMethod && !checkMethod({
            $table: $xeTable,
            column
          })) {
            return;
          }
          column.visible = isAll;
          column.renderVisible = isAll;
          column.halfVisible = false;
        });
        customStore.isAll = isAll;
        reactData.isCustomStatus = true;
        $xeTable.handleCustom();
        $xeTable.saveCustomStore('update:visible');
      } else {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(customColumnList, column => {
          if (visibleMethod && !visibleMethod({
            $table: $xeTable,
            column
          })) {
            return;
          }
          if (checkMethod && !checkMethod({
            $table: $xeTable,
            column
          })) {
            return;
          }
          column.renderVisible = isAll;
          column.halfVisible = false;
        });
        customStore.isAll = isAll;
      }
      $xeTable.checkCustomStatus();
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    const customMethods = {
      getCustomVisible() {
        const {
          customStore
        } = reactData;
        return customStore.visible;
      },
      openCustom,
      closeCustom,
      toggleCustom,
      saveCustom,
      cancelCustom,
      resetCustom(options) {
        const {
          rowGroupList
        } = reactData;
        const {
          collectColumn
        } = internalData;
        const customOpts = computeCustomOpts.value;
        const {
          checkMethod
        } = customOpts;
        const opts = Object.assign({
          visible: true,
          resizable: options === true,
          fixed: options === true,
          sort: options === true,
          aggFunc: options === true,
          align: options === true,
          headerAlign: options === true,
          footerAlign: options === true
        }, options);
        const allCols = [];
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn, column => {
          if (opts.resizable) {
            column.resizeWidth = 0;
          }
          if (opts.fixed) {
            column.fixed = column.defaultFixed;
            column.renderFixed = column.defaultFixed;
          }
          if (opts.sort) {
            column.renderSortNumber = column.sortNumber;
            column.parentId = column.defaultParentId;
          }
          if (!checkMethod || checkMethod({
            $table: $xeTable,
            column
          })) {
            column.visible = column.defaultVisible;
          }
          if (opts.align) {
            column.align = column.defaultAlign;
            column.renderAlign = column.defaultAlign;
          }
          if (opts.headerAlign) {
            column.headerAlign = column.defaultHeaderAlign;
            column.renderHeaderAlign = column.defaultHeaderAlign;
          }
          if (opts.footerAlign) {
            column.footerAlign = column.defaultFooterAlign;
            column.renderFooterAlign = column.defaultFooterAlign;
          }
          if (opts.aggFunc) {
            column.aggFunc = column.defaultAggFunc;
            column.renderAggFn = column.defaultAggFunc;
          }
          column.renderResizeWidth = column.renderWidth;
          allCols.push(column);
        });
        if (opts.sort) {
          const newCollectCols = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toArrayTree(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(allCols, 'renderSortNumber'), {
            key: 'id',
            parentKey: 'parentId',
            children: 'children'
          });
          internalData.collectColumn = newCollectCols;
          internalData.tableFullColumn = getColumnList(newCollectCols);
        }
        reactData.isCustomStatus = false;
        return $xeTable.handleCustom().then(() => {
          if (opts.aggFunc && !!$xeTable.handlePivotTableAggData) {
            const rowGroupFields = computeRowGroupFields.value;
            if (rowGroupFields ? rowGroupFields.length : rowGroupList.length) {
              if (rowGroupFields && rowGroupFields.length) {
                $xeTable.setRowGroups(rowGroupFields);
              } else {
                $xeTable.clearRowGroups();
              }
            } else {
              $xeTable.handleUpdateAggData();
            }
          }
          $xeTable.saveCustomStore('reset');
        });
      },
      toggleCustomAllCheckbox() {
        const {
          customStore
        } = reactData;
        const isAll = !customStore.isAll;
        return setCustomAllCheckbox(isAll);
      },
      setCustomAllCheckbox
    };
    const checkCustomStatus = () => {
      const {
        customStore
      } = reactData;
      const {
        collectColumn
      } = internalData;
      const customOpts = computeCustomOpts.value;
      const {
        checkMethod
      } = customOpts;
      customStore.isAll = collectColumn.every(column => (checkMethod ? !checkMethod({
        $table: $xeTable,
        column
      }) : false) || column.renderVisible);
      customStore.isIndeterminate = !customStore.isAll && collectColumn.some(column => (!checkMethod || checkMethod({
        $table: $xeTable,
        column
      })) && (column.renderVisible || column.halfVisible));
    };
    const emitCustomEvent = (type, evnt) => {
      $xeTable.dispatchEvent('custom', {
        type
      }, evnt);
    };
    const customPrivateMethods = {
      checkCustomStatus,
      emitCustomEvent,
      triggerCustomEvent(evnt) {
        const reactData = $xeTable.reactData;
        const {
          customStore
        } = reactData;
        if (customStore.visible) {
          closeCustom();
          emitCustomEvent('close', evnt);
          $xeTable.dispatchEvent('custom-close', {}, evnt);
        } else {
          customStore.btnEl = evnt.target;
          openCustom();
          emitCustomEvent('open', evnt);
          $xeTable.dispatchEvent('custom-open', {}, evnt);
        }
      },
      customOpenEvent(evnt) {
        const reactData = $xeTable.reactData;
        const {
          customStore
        } = reactData;
        if (!customStore.visible) {
          customStore.activeBtn = true;
          customStore.btnEl = evnt.target;
          $xeTable.openCustom();
          $xeTable.emitCustomEvent('open', evnt);
          $xeTable.dispatchEvent('custom-open', {}, evnt);
        }
      },
      customCloseEvent(evnt) {
        const reactData = $xeTable.reactData;
        const {
          customStore
        } = reactData;
        if (customStore.visible) {
          customStore.activeBtn = false;
          $xeTable.closeCustom();
          $xeTable.emitCustomEvent('close', evnt);
          $xeTable.dispatchEvent('custom-close', {}, evnt);
        }
      },
      handleUpdateCustomColumn,
      handleCustomStyle() {
        const reactData = $xeTable.reactData;
        reactData.isCustomDragStatus = false;
        return updatePopupStyle();
      }
    };
    return {
      ...customMethods,
      ...customPrivateMethods
    };
  },
  setupGrid($xeGrid) {
    return $xeGrid.extendTableMethods(tableCustomMethodKeys);
  },
  setupGantt($xeGantt) {
    return $xeGantt.extendTableMethods(tableCustomMethodKeys);
  }
});
;// ./packages/table/render/index.ts












const {
  errLog: render_errLog
} = createComponentLog('table');
const {
  getConfig: render_getConfig,
  renderer: render_renderer,
  getI18n: render_getI18n,
  getComponent
} = core_.VxeUI;
const componentDefaultModelProp = 'modelValue';
const defaultCompProps = {};
function handleDefaultValue(value, defaultVal, initVal) {
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(value) ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(defaultVal) ? initVal : defaultVal : value;
}
function parseDate(value, props) {
  return value && props.valueFormat ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toStringDate(value, props.valueFormat) : value;
}
function getFormatDate(value, props, defaultFormat) {
  const {
    dateConfig = {}
  } = props;
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(parseDate(value, props), dateConfig.labelFormat || defaultFormat);
}
function getLabelFormatDate(value, props) {
  return getFormatDate(value, props, render_getI18n(`vxe.input.date.labelFormat.${props.type || 'date'}`));
}
/**
 * 已废弃
 * @deprecated
 */
function getOldComponentName(name) {
  return `vxe-${name.replace('$', '')}`;
}
function getDefaultComponent({
  name
}) {
  return getComponent(name);
}
/**
 * 已废弃
 * @deprecated
 */
function getOldComponent({
  name
}) {
  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.resolveComponent)(getOldComponentName(name));
}
function updateFilterChangeOption(params, checked, option) {
  const {
    $table
  } = params;
  $table.updateFilterOptionStatus(option, checked);
}
function saveFilterEvent(params) {
  const {
    $table,
    column
  } = params;
  $table.saveFilterByEvent(new Event('change'), column);
}
function getNativeAttrs(renderOpts) {
  let {
    name,
    attrs
  } = renderOpts;
  if (name === 'input') {
    attrs = Object.assign({
      type: 'text'
    }, attrs);
  }
  return attrs;
}
function getInputImmediateModel(renderOpts) {
  const {
    name,
    immediate,
    props
  } = renderOpts;
  if (!immediate) {
    if (name === 'VxeInput' || name === '$input') {
      const {
        type
      } = props || {};
      return !(!type || type === 'text' || type === 'number' || type === 'integer' || type === 'float');
    }
    if (name === 'input' || name === 'textarea' || name === '$textarea') {
      return false;
    }
    return true;
  }
  return immediate;
}
function getCellEditProps(renderOpts, params, value, defaultProps) {
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign({
    immediate: getInputImmediateModel(renderOpts)
  }, defaultCompProps, defaultProps, renderOpts.props, {
    [componentDefaultModelProp]: value
  });
}
function getCellEditFilterProps(renderOpts, params, value, defaultProps) {
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign({}, defaultCompProps, defaultProps, renderOpts.props, {
    [componentDefaultModelProp]: value
  });
}
function isImmediateCell(renderOpts, params) {
  return params.$type === 'cell' || getInputImmediateModel(renderOpts);
}
function getCellLabelVNs(renderOpts, params, cellLabel, opts) {
  const {
    placeholder
  } = renderOpts;
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
    key: 1,
    class: ['vxe-cell--label', opts ? opts.class : '']
  }, placeholder && isEmptyValue(cellLabel) ? [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
    class: 'vxe-cell--placeholder'
  }, formatText(getFuncText(placeholder), 1))] : formatText(cellLabel, 1))];
}
/**
 * 原生事件处理
 * @param renderOpts
 * @param params
 * @param modelFunc
 * @param changeFunc
 */
function getNativeElementOns(renderOpts, params, eFns) {
  const {
    events
  } = renderOpts;
  const modelEvent = getModelEvent(renderOpts);
  const changeEvent = getChangeEvent(renderOpts);
  const {
    model: modelFunc,
    change: changeFunc,
    blur: blurFunc
  } = eFns || {};
  const isSameEvent = changeEvent === modelEvent;
  const ons = {};
  if (events) {
    external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().objectEach(events, (func, key) => {
      ons[getOnName(key)] = function (...args) {
        func(params, ...args);
      };
    });
  }
  if (modelFunc) {
    ons[getOnName(modelEvent)] = function (targetEvnt) {
      modelFunc(targetEvnt);
      if (isSameEvent && changeFunc) {
        changeFunc(targetEvnt);
      }
      if (events && events[modelEvent]) {
        events[modelEvent](params, targetEvnt);
      }
    };
  }
  if (!isSameEvent && changeFunc) {
    ons[getOnName(changeEvent)] = function (evnt) {
      changeFunc(evnt);
      if (events && events[changeEvent]) {
        events[changeEvent](params, evnt);
      }
    };
  }
  if (blurFunc) {
    ons[getOnName(blurEvent)] = function (evnt) {
      blurFunc(evnt);
      if (events && events[blurEvent]) {
        events[blurEvent](params, evnt);
      }
    };
  }
  return ons;
}
const blurEvent = 'blur';
const clearEvent = 'clear';
/**
 * 组件事件处理
 * @param renderOpts
 * @param params
 * @param modelFunc
 * @param changeFunc
 */
function getComponentOns(renderOpts, params, eFns, eventOns) {
  const {
    events
  } = renderOpts;
  const modelEvent = getModelEvent(renderOpts);
  const changeEvent = getChangeEvent(renderOpts);
  const {
    model: modelFunc,
    change: changeFunc,
    blur: blurFunc,
    clear: clearFunc
  } = eFns || {};
  const ons = {};
  external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().objectEach(events, (func, key) => {
    ons[getOnName(key)] = function (...args) {
      if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(func)) {
        render_errLog('vxe.error.errFunc', [func]);
      }
      func(params, ...args);
    };
  });
  if (modelFunc) {
    ons[getOnName(modelEvent)] = function (targetEvnt) {
      modelFunc(targetEvnt);
      if (events && events[modelEvent]) {
        events[modelEvent](params, targetEvnt);
      }
    };
  }
  if (changeFunc) {
    ons[getOnName(changeEvent)] = function (...args) {
      changeFunc(...args);
      if (events && events[changeEvent]) {
        events[changeEvent](params, ...args);
      }
    };
  }
  if (blurFunc) {
    ons[getOnName(blurEvent)] = function (...args) {
      blurFunc(...args);
      if (events && events[blurEvent]) {
        events[blurEvent](params, ...args);
      }
    };
  }
  if (clearFunc) {
    ons[getOnName(clearEvent)] = function (...args) {
      clearFunc(...args);
      if (events && events[clearEvent]) {
        events[clearEvent](params, ...args);
      }
    };
  }
  return eventOns ? Object.assign(ons, eventOns) : ons;
}
function getEditOns(renderOpts, params) {
  const {
    $table,
    row,
    column
  } = params;
  const {
    name
  } = renderOpts;
  const {
    model
  } = column;
  const isImmediate = isImmediateCell(renderOpts, params);
  return getComponentOns(renderOpts, params, {
    model(cellValue) {
      // 处理 model 值双向绑定
      model.update = true;
      model.value = cellValue;
      if (isImmediate) {
        setCellValue(row, column, cellValue);
      }
    },
    change(eventParams) {
      // 处理 change 事件相关逻辑
      if (!isImmediate && name && ['VxeInput', 'VxeNumberInput', 'VxeTextarea', '$input', '$textarea'].includes(name)) {
        const cellValue = eventParams.value;
        model.update = true;
        model.value = cellValue;
        $table.updateStatus(params, cellValue);
      } else {
        $table.updateStatus(params);
      }
    },
    blur() {
      if (isImmediate) {
        $table.handleCellRuleUpdateStatus('blur', params);
      } else {
        $table.handleCellRuleUpdateStatus('blur', params, model.value);
      }
    }
  });
}
function getFilterOns(renderOpts, params, option) {
  return getComponentOns(renderOpts, params, {
    model(value) {
      // 处理 model 值双向绑定
      option.data = value;
    },
    change() {
      updateFilterChangeOption(params, !isEmptyValue(option.data), option);
    },
    blur() {
      updateFilterChangeOption(params, !isEmptyValue(option.data), option);
    }
  });
}
function getFloatingFilterOns(renderOpts, params, option) {
  const {
    $table,
    column
  } = params;
  if (hasInputType(renderOpts)) {
    return getComponentOns(renderOpts, params, {
      model(value) {
        // 处理 model 值双向绑定
        option.data = value;
      },
      change() {
        updateFilterChangeOption(params, !isEmptyValue(option.data), option);
      },
      clear() {
        updateFilterChangeOption(params, !isEmptyValue(option.data), option);
        saveFilterEvent(params);
      },
      blur() {
        $table.saveFilterByEvent(new Event('change'), column);
      }
    }, renderOpts.name === 'VxeNumberInput' ? {
      [getOnName('plus-number')]() {
        updateFilterChangeOption(params, !isEmptyValue(option.data), option);
        saveFilterEvent(params);
      },
      [getOnName('minus-number')]() {
        updateFilterChangeOption(params, !isEmptyValue(option.data), option);
        saveFilterEvent(params);
      }
    } : {});
  }
  return getComponentOns(renderOpts, params, {
    model(value) {
      // 处理 model 值双向绑定
      option.data = value;
    },
    clear() {
      updateFilterChangeOption(params, !isEmptyValue(option.data), option);
      $table.saveFilterByEvent(new Event('change'), column);
    },
    change() {
      updateFilterChangeOption(params, !isEmptyValue(option.data), option);
      $table.saveFilterByEvent(new Event('change'), column);
    }
  });
}
function getNativeEditOns(renderOpts, params) {
  const {
    $table,
    row,
    column
  } = params;
  const {
    model
  } = column;
  return getNativeElementOns(renderOpts, params, {
    model(evnt) {
      // 处理 model 值双向绑定
      const targetEl = evnt.target;
      if (targetEl) {
        const cellValue = targetEl.value;
        if (isImmediateCell(renderOpts, params)) {
          setCellValue(row, column, cellValue);
        } else {
          model.update = true;
          model.value = cellValue;
        }
      }
    },
    change(evnt) {
      // 处理 change 事件相关逻辑
      const targetEl = evnt.target;
      if (targetEl) {
        const cellValue = targetEl.value;
        $table.updateStatus(params, cellValue);
      }
    },
    blur(evnt) {
      const targetEl = evnt.target;
      if (targetEl) {
        const cellValue = targetEl.value;
        $table.updateStatus(params, cellValue);
      }
    }
  });
}
function getNativeFilterOns(renderOpts, params, option) {
  return getNativeElementOns(renderOpts, params, {
    model(evnt) {
      // 处理 model 值双向绑定
      const targetEl = evnt.target;
      if (targetEl) {
        option.data = targetEl.value;
      }
    },
    change() {
      updateFilterChangeOption(params, !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(option.data), option);
    },
    blur() {
      updateFilterChangeOption(params, !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(option.data), option);
    }
  });
}
function nativeInputCellRender(renderOpts, renderParams) {
  const {
    row,
    column
  } = renderParams;
  const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
  const cellVNs = [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
    key: 1
  }, cellValue)];
  return getNativeInputRenderCellVNs(cellValue, cellVNs, renderOpts, renderParams);
}
/**
 * 单元格可编辑渲染-原生的标签
 * input、textarea
 */
function nativeInputEditRender(renderOpts, renderParams) {
  const {
    row,
    column
  } = renderParams;
  const {
    name
  } = renderOpts;
  const cellValue = isImmediateCell(renderOpts, renderParams) ? getCellValue(row, column) : column.model.value;
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('' + name, {
    key: 2,
    class: `vxe-default-${name}`,
    ...getNativeAttrs(renderOpts),
    value: cellValue,
    ...getNativeEditOns(renderOpts, renderParams)
  })];
}
function buttonCellRender(renderOpts, params) {
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
    ...getCellEditProps(renderOpts, params, null),
    ...getComponentOns(renderOpts, params)
  })];
}
function defaultInputEditRender(renderOpts, params) {
  const {
    row,
    column
  } = params;
  const cellValue = getCellValue(row, column);
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
    key: 2,
    ...getCellEditProps(renderOpts, params, cellValue),
    ...getEditOns(renderOpts, params)
  })];
}
function defaultEditRender(renderOpts, params) {
  const {
    row,
    column
  } = params;
  const cellValue = getCellValue(row, column);
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
    ...getCellEditProps(renderOpts, params, cellValue),
    ...getEditOns(renderOpts, params)
  })];
}
function checkboxEditRender(renderOpts, params) {
  const {
    row,
    column
  } = params;
  const cellValue = getCellValue(row, column);
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
    ...getCellEditProps(renderOpts, params, cellValue),
    ...getEditOns(renderOpts, params)
  })];
}
function radioAndCheckboxGroupEditRender(renderOpts, params) {
  const {
    options
  } = renderOpts;
  const {
    row,
    column
  } = params;
  const cellValue = getCellValue(row, column);
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
    options,
    ...getCellEditProps(renderOpts, params, cellValue),
    ...getEditOns(renderOpts, params)
  })];
}
/**
 * 已废弃
 * @deprecated
 */
function oldEditRender(renderOpts, params) {
  const {
    row,
    column
  } = params;
  const cellValue = getCellValue(row, column);
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getOldComponent(renderOpts), {
    ...getCellEditProps(renderOpts, params, cellValue),
    ...getEditOns(renderOpts, params)
  })];
}
/**
 * 已废弃
 * @deprecated
 */
function oldButtonEditRender(renderOpts, params) {
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getComponent('vxe-button'), {
    ...getCellEditProps(renderOpts, params, null),
    ...getComponentOns(renderOpts, params)
  })];
}
/**
 * 已废弃
 * @deprecated
 */
function oldButtonsEditRender(renderOpts, params) {
  const {
    children
  } = renderOpts;
  return children ? children.map(childRenderOpts => oldButtonEditRender(childRenderOpts, params)[0]) : [];
}
function renderNativeOptgroups(renderOpts, params, renderOptionsMethods) {
  const {
    optionGroups,
    optionGroupProps = {}
  } = renderOpts;
  const groupOptions = optionGroupProps.options || 'options';
  const groupLabel = optionGroupProps.label || 'label';
  if (optionGroups) {
    return optionGroups.map((group, gIndex) => {
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('optgroup', {
        key: gIndex,
        label: group[groupLabel]
      }, renderOptionsMethods(group[groupOptions], renderOpts, params));
    });
  }
  return [];
}
/**
 * 渲染原生的 option 标签
 */
function renderNativeOptions(options, renderOpts, params) {
  const {
    optionProps = {}
  } = renderOpts;
  const {
    row,
    column
  } = params;
  const labelProp = optionProps.label || 'label';
  const valueProp = optionProps.value || 'value';
  const disabledProp = optionProps.disabled || 'disabled';
  const cellValue = isImmediateCell(renderOpts, params) ? getCellValue(row, column) : column.model.value;
  if (options) {
    return options.map((option, oIndex) => {
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('option', {
        key: oIndex,
        value: option[valueProp],
        disabled: option[disabledProp],
        /* eslint-disable eqeqeq */
        selected: option[valueProp] == cellValue
      }, option[labelProp]);
    });
  }
  return [];
}
function nativeFilterRender(renderOpts, params) {
  const {
    column
  } = params;
  const {
    name
  } = renderOpts;
  const attrs = getNativeAttrs(renderOpts);
  return column.filters.map((option, oIndex) => {
    return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(`${name}`, {
      key: oIndex,
      class: `vxe-default-${name}`,
      ...attrs,
      value: option.data,
      ...getNativeFilterOns(renderOpts, params, option)
    });
  });
}
function defaultFilterRender(renderOpts, params) {
  const {
    column
  } = params;
  return column.filters.map((option, oIndex) => {
    const optionValue = option.data;
    return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
      key: oIndex,
      ...getCellEditFilterProps(renderOpts, renderOpts, optionValue),
      ...getFilterOns(renderOpts, params, option)
    });
  });
}
function defaultFloatingFilterRender(renderOpts, params) {
  const {
    option
  } = params;
  const optionValue = option.data;
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
    ...getCellEditFilterProps(renderOpts, renderOpts, optionValue),
    ...getFloatingFilterOns(renderOpts, params, option)
  })];
}
function defaultFilterOptions() {
  return [{
    data: null
  }];
}
/**
 * 已废弃
 * @deprecated
 */
function oldFilterRender(renderOpts, params) {
  const {
    column
  } = params;
  return column.filters.map((option, oIndex) => {
    const optionValue = option.data;
    return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getOldComponent(renderOpts), {
      key: oIndex,
      ...getCellEditFilterProps(renderOpts, renderOpts, optionValue),
      ...getFilterOns(renderOpts, params, option)
    });
  });
}
function handleFilterMethod({
  option,
  row,
  column
}) {
  const {
    data
  } = option;
  const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
  /* eslint-disable eqeqeq */
  return cellValue == data;
}
function handleInputFilterMethod({
  option,
  row,
  column
}) {
  const {
    data
  } = option;
  const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
  /* eslint-disable eqeqeq */
  return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toValueString(cellValue).indexOf(data) > -1;
}
function nativeSelectEditRender(renderOpts, params) {
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('select', {
    class: 'vxe-default-select',
    ...getNativeAttrs(renderOpts),
    ...getNativeEditOns(renderOpts, params)
  }, renderOpts.optionGroups ? renderNativeOptgroups(renderOpts, params, renderNativeOptions) : renderNativeOptions(renderOpts.options, renderOpts, params))];
}
function defaultSelectEditRender(renderOpts, params) {
  const {
    row,
    column
  } = params;
  const {
    options,
    optionProps,
    optionGroups,
    optionGroupProps
  } = renderOpts;
  const cellValue = getCellValue(row, column);
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
    ...getCellEditProps(renderOpts, params, cellValue, {
      options,
      optionProps,
      optionGroups,
      optionGroupProps
    }),
    ...getEditOns(renderOpts, params)
  })];
}
function defaultTableOrTreeSelectEditRender(renderOpts, params) {
  const {
    row,
    column
  } = params;
  const {
    options,
    optionProps
  } = renderOpts;
  const cellValue = getCellValue(row, column);
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
    ...getCellEditProps(renderOpts, params, cellValue, {
      options,
      optionProps
    }),
    ...getEditOns(renderOpts, params)
  })];
}
/**
 * 已废弃
 * @deprecated
 */
function oldSelectEditRender(renderOpts, params) {
  const {
    row,
    column
  } = params;
  const {
    options,
    optionProps,
    optionGroups,
    optionGroupProps
  } = renderOpts;
  const cellValue = getCellValue(row, column);
  return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getOldComponent(renderOpts), {
    ...getCellEditProps(renderOpts, params, cellValue, {
      options,
      optionProps,
      optionGroups,
      optionGroupProps
    }),
    ...getEditOns(renderOpts, params)
  })];
}
function handleSelectCellValue(cellValue, renderOpts) {
  const {
    options,
    optionGroups,
    optionProps = {},
    optionGroupProps = {},
    props = {}
  } = renderOpts;
  let selectItem;
  const labelProp = optionProps.label || 'label';
  const valueProp = optionProps.value || 'value';
  if (!(cellValue === null || cellValue === undefined)) {
    let vals = [];
    if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(cellValue)) {
      vals = cellValue;
    } else {
      if (props.multiple && `${cellValue}`.indexOf(',') > -1) {
        vals = `${cellValue}`.split(',');
      } else {
        vals = [cellValue];
      }
    }
    return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().map(vals, optionGroups ? value => {
      const groupOptions = optionGroupProps.options || 'options';
      for (let index = 0; index < optionGroups.length; index++) {
        /* eslint-disable eqeqeq */
        selectItem = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().find(optionGroups[index][groupOptions], item => item[valueProp] == value);
        if (selectItem) {
          break;
        }
      }
      return selectItem ? selectItem[labelProp] : value;
    } : value => {
      /* eslint-disable eqeqeq */
      selectItem = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().find(options, item => item[valueProp] == value);
      return selectItem ? selectItem[labelProp] : value;
    }).join(', ');
  }
  return '';
}
function getSelectCellValue(renderOpts, {
  row,
  column
}) {
  const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
  return handleSelectCellValue(cellValue, renderOpts);
}
function handleExportSelectMethod(params) {
  const {
    row,
    column,
    options
  } = params;
  return options.original ? getCellValue(row, column) : getSelectCellValue(column.editRender || column.cellRender, params);
}
function handleTreeSelectCellValue(cellValue, renderOpts) {
  const {
    options,
    optionProps = {}
  } = renderOpts;
  const labelProp = optionProps.label || 'label';
  const valueProp = optionProps.value || 'value';
  const childrenProp = optionProps.children || 'children';
  if (!(cellValue === null || cellValue === undefined)) {
    const keyMaps = {};
    external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(options, item => {
      keyMaps[external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(item, valueProp)] = item;
    }, {
      children: childrenProp
    });
    return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().map(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(cellValue) ? cellValue : [cellValue], value => {
      const item = keyMaps[value];
      return item ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(item, labelProp) : item;
    }).join(', ');
  }
  return '';
}
function getTreeSelectCellValue(renderOpts, {
  row,
  column
}) {
  const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
  return handleTreeSelectCellValue(cellValue, renderOpts);
}
function handleExportTreeSelectMethod(params) {
  const {
    row,
    column,
    options
  } = params;
  return options.original ? getCellValue(row, column) : getTreeSelectCellValue(column.editRender || column.cellRender, params);
}
function handleNumberCell(cellValue, renderOpts, params) {
  const {
    props = {},
    showNegativeStatus
  } = renderOpts;
  const {
    type
  } = props;
  let isNegative = false;
  if (!isEmptyValue(cellValue)) {
    const numberInputConfig = render_getConfig().numberInput || {};
    if (type === 'float') {
      const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true);
      const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 1);
      cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toFixed(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor(cellValue, digits), digits);
      if (!autoFill) {
        cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellValue);
      }
      if (showNegativeStatus) {
        if (cellValue < 0) {
          isNegative = true;
        }
      }
    } else if (type === 'amount') {
      const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true);
      const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 2);
      const showCurrency = handleDefaultValue(props.showCurrency, numberInputConfig.showCurrency, false);
      cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellValue);
      if (showNegativeStatus) {
        if (cellValue < 0) {
          isNegative = true;
        }
      }
      cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().commafy(cellValue, {
        digits
      });
      if (!autoFill) {
        const [iStr, dStr] = cellValue.split('.');
        if (dStr) {
          const dRest = dStr.replace(/0+$/, '');
          cellValue = dRest ? [iStr, '.', dRest].join('') : iStr;
        }
      }
      if (showCurrency) {
        cellValue = `${props.currencySymbol || numberInputConfig.currencySymbol || render_getI18n('vxe.numberInput.currencySymbol') || ''}${cellValue}`;
      }
    } else {
      if (type === 'integer') {
        cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(cellValue);
      }
      if (showNegativeStatus) {
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellValue) < 0) {
          isNegative = true;
        }
      }
    }
  }
  return getCellLabelVNs(renderOpts, params, cellValue, isNegative ? {
    class: 'is--negative'
  } : {});
}
function handleFormatDatePicker(renderOpts, renderParams) {
  const {
    props = {}
  } = renderOpts;
  const {
    cellValue
  } = renderParams;
  if (cellValue) {
    if (props.type !== 'time') {
      return getLabelFormatDate(cellValue, props);
    }
  }
  return cellValue;
}
function handleFormatSelect(renderOpts, renderParams) {
  const {
    cellValue
  } = renderParams;
  return handleSelectCellValue(cellValue, renderOpts);
}
function handleSetSelectValue(renderOpts, renderParams) {
  const {
    row,
    column,
    cellValue
  } = renderParams;
  const {
    field
  } = column;
  if (field) {
    const {
      options,
      optionGroups,
      optionProps = {},
      optionGroupProps = {},
      props
    } = renderOpts;
    if (isEmptyValue(cellValue)) {
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, field, props && props.multiple ? [] : null);
      return;
    }
    const isMultiVal = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().indexOf(`${cellValue}`, ',') > -1;
    const labelProp = optionProps.label || 'label';
    const valueProp = optionProps.value || 'value';
    const labelMpas = {};
    if (optionGroups && optionGroups.length) {
      const groupOptions = optionGroupProps.options || 'options';
      for (let i = 0; i < optionGroups.length; i++) {
        const opts = optionGroups[i][groupOptions] || {};
        for (let j = 0; j < opts.length; j++) {
          const item = opts[j];
          if (isMultiVal) {
            labelMpas[item[labelProp]] = item;
            /* eslint-disable eqeqeq */
          } else if (item[labelProp] == cellValue) {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, field, item[valueProp]);
            return;
          }
        }
      }
    } else {
      if (options) {
        for (let i = 0; i < options.length; i++) {
          const item = options[i];
          if (isMultiVal) {
            labelMpas[item[labelProp]] = item;
            /* eslint-disable eqeqeq */
          } else if (item[labelProp] == cellValue) {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, field, item[valueProp]);
            return;
          }
        }
      }
    }
    if (isMultiVal) {
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, field, (isMultiVal ? cellValue.split(',') : [cellValue]).map(label => {
        const item = labelMpas[label];
        return item ? item[valueProp] : label;
      }));
    } else {
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, field, cellValue);
    }
  }
}
function handleFormatTreeSelect(renderOpts, params) {
  const {
    cellValue
  } = params;
  return handleTreeSelectCellValue(cellValue, renderOpts);
}
function handleSetTreeSelectValue(renderOpts, params) {
  const {
    row,
    column,
    cellValue
  } = params;
  const {
    field
  } = column;
  if (field) {
    const {
      options,
      optionProps = {}
    } = renderOpts;
    const labelProp = optionProps.label || 'label';
    const valueProp = optionProps.value || 'value';
    const childrenProp = optionProps.children || 'children';
    const matchRest = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(options || [], item => external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(item, labelProp) === cellValue, {
      children: childrenProp
    });
    if (matchRest) {
      const selectItem = matchRest.item;
      if (selectItem) {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, field, selectItem[valueProp]);
        return;
      }
    }
    external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, field, cellValue);
  }
}
function getNativeInputRenderCellVNs(cellValue, labelVNs, renderOpts, renderParams) {
  const {
    $table,
    row,
    column
  } = renderParams;
  const {
    name
  } = renderOpts;
  const tableProps = $table.props;
  const {
    editConfig,
    mouseConfig
  } = tableProps;
  let isColSelected = false;
  let isActiveCellArea = false;
  if (editConfig && mouseConfig) {
    const tableReactData = $table.reactData;
    const {
      editStore
    } = tableReactData;
    const {
      selected
    } = editStore;
    isColSelected = row === selected.row && column === selected.column;
    if ($table.getActiveCellArea) {
      const activeCellArea = $table.getActiveCellArea();
      if (activeCellArea) {
        isActiveCellArea = row === activeCellArea.row && column === activeCellArea.column;
      }
    }
  }
  const cellVNs = labelVNs;
  if (isActiveCellArea || isColSelected) {
    cellVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('' + name, {
      key: 2,
      class: `vxe-default-${name} vxe-reusekeep-control`,
      value: cellValue,
      ...getNativeAttrs(renderOpts),
      ...getNativeEditOns(renderOpts, renderParams)
    }));
  }
  return cellVNs;
}
function getInputRenderCellVNs(cellValue, labelVNs, renderOpts, renderParams) {
  const {
    $table,
    row,
    column
  } = renderParams;
  const tableProps = $table.props;
  const {
    editConfig,
    mouseConfig
  } = tableProps;
  let isColSelected = false;
  let isActiveCellArea = false;
  if (editConfig && mouseConfig) {
    const tableReactData = $table.reactData;
    const {
      editStore
    } = tableReactData;
    const {
      computeEditOpts
    } = $table.getComputeMaps();
    const editOpts = computeEditOpts.value;
    if (editOpts.isReuseKeep) {
      const {
        selected
      } = editStore;
      isColSelected = row === selected.row && column === selected.column;
      if ($table.getActiveCellArea) {
        const activeCellArea = $table.getActiveCellArea();
        if (activeCellArea) {
          isActiveCellArea = row === activeCellArea.row && column === activeCellArea.column;
        }
      }
    }
  }
  const cellVNs = labelVNs;
  if (isActiveCellArea || isColSelected) {
    const compProps = getCellEditProps(renderOpts, renderParams, cellValue);
    const {
      className,
      inputClassName
    } = compProps;
    cellVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
      key: 2,
      ...compProps,
      className: 'vxe-reusekeep-control' + (className ? ' ' + className : ''),
      inputClassName: 'vxe-reusekeep-control' + (inputClassName ? ' ' + inputClassName : ''),
      ...getEditOns(renderOpts, renderParams)
    }));
  }
  return cellVNs;
}
/**
 * 表格 - 渲染器
 */
render_renderer.mixin({
  input: {
    tableAutoFocus: true,
    renderTableEdit: nativeInputEditRender,
    renderTableCell: nativeInputCellRender,
    renderTableDefault: nativeInputEditRender,
    createTableFilterOptions: defaultFilterOptions,
    renderTableFilter: nativeFilterRender,
    tableFilterDefaultMethod: handleInputFilterMethod
  },
  textarea: {
    tableAutoFocus: true,
    renderTableEdit: nativeInputEditRender,
    renderTableCell: nativeInputCellRender,
    renderTableDefault: nativeInputEditRender
  },
  select: {
    renderTableEdit: nativeSelectEditRender,
    renderTableDefault: nativeSelectEditRender,
    renderTableCell(renderOpts, params) {
      const {
        options,
        optionGroups
      } = renderOpts;
      const {
        $table,
        row,
        column
      } = params;
      const opSize = options ? options.length : null;
      const ogSize = optionGroups ? optionGroups.length : null;
      const {
        cellResult
      } = $table.effectCellData(row, column, {
        key: 'render_table_cell',
        isChanged({
          oldValue,
          cellValue
        }) {
          return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
        },
        setValue({
          cellValue
        }) {
          return [cellValue, opSize, ogSize];
        },
        getResult({
          cellValue
        }) {
          return handleSelectCellValue(cellValue, renderOpts);
        }
      });
      // const cellResult = getSelectCellValue(renderOpts, params)
      return getCellLabelVNs(renderOpts, params, cellResult);
    },
    createTableFilterOptions: defaultFilterOptions,
    renderTableFilter(renderOpts, params) {
      const {
        column
      } = params;
      return column.filters.map((option, oIndex) => {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('select', {
          key: oIndex,
          class: 'vxe-default-select',
          ...getNativeAttrs(renderOpts),
          ...getNativeFilterOns(renderOpts, params, option)
        }, renderOpts.optionGroups ? renderNativeOptgroups(renderOpts, params, renderNativeOptions) : renderNativeOptions(renderOpts.options, renderOpts, params));
      });
    },
    tableCellFormatter: handleFormatSelect,
    tableCellCopyMethod: handleFormatSelect,
    tableCellPasteMethod: handleSetSelectValue,
    tableFilterDefaultMethod: handleFilterMethod,
    tableExportMethod: handleExportSelectMethod
  },
  VxeInput: {
    tableAutoFocus: true,
    renderTableEdit: defaultInputEditRender,
    renderTableCell(renderOpts, renderParams) {
      const {
        props = {}
      } = renderOpts;
      const {
        row,
        column
      } = renderParams;
      const inputConfig = render_getConfig().input || {};
      const digits = props.digits || inputConfig.digits || 2;
      let cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      if (cellValue) {
        switch (props.type) {
          case 'date':
          case 'week':
          case 'month':
          case 'quarter':
          case 'year':
            cellValue = getLabelFormatDate(cellValue, props);
            break;
          case 'float':
            cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toFixed(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor(cellValue, digits), digits);
            break;
        }
      }
      const cellVNs = getCellLabelVNs(renderOpts, renderParams, cellValue);
      return getInputRenderCellVNs(cellValue, cellVNs, renderOpts, renderParams);
    },
    renderTableDefault: defaultInputEditRender,
    createTableFilterOptions: defaultFilterOptions,
    renderTableFilter: defaultFilterRender,
    renderTableFloatingFilter: defaultFloatingFilterRender,
    tableFilterDefaultMethod: handleInputFilterMethod
  },
  FormatNumberInput: {
    renderTableDefault(renderOpts, renderParams) {
      const {
        row,
        column
      } = renderParams;
      const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      return handleNumberCell(cellValue, renderOpts, renderParams);
    },
    tableFilterDefaultMethod({
      option,
      row,
      column
    }) {
      const {
        data
      } = option;
      const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      /* eslint-disable eqeqeq */
      return cellValue == data;
    },
    tableExportMethod(params) {
      const {
        row,
        column
      } = params;
      const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      return cellValue;
    }
  },
  VxeNumberInput: {
    tableAutoFocus: true,
    renderTableEdit: defaultInputEditRender,
    renderTableCell(renderOpts, renderParams) {
      const {
        row,
        column
      } = renderParams;
      const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      const cellVNs = handleNumberCell(cellValue, renderOpts, renderParams);
      return getInputRenderCellVNs(cellValue, cellVNs, renderOpts, renderParams);
    },
    renderTableFooter(renderOpts, params) {
      const {
        props = {}
      } = renderOpts;
      const {
        row,
        column,
        _columnIndex
      } = params;
      const {
        type
      } = props;
      // 兼容老模式
      const itemValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(row) ? row[_columnIndex] : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(itemValue)) {
        const numberInputConfig = render_getConfig().numberInput || {};
        if (type === 'float') {
          const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true);
          const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 1);
          let amountLabel = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toFixed(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor(itemValue, digits), digits);
          if (!autoFill) {
            amountLabel = '' + external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(amountLabel);
          }
          return amountLabel;
        } else if (type === 'amount') {
          const autoFill = handleDefaultValue(props.autoFill, numberInputConfig.autoFill, true);
          const digits = handleDefaultValue(props.digits, numberInputConfig.digits, 2);
          const showCurrency = handleDefaultValue(props.showCurrency, numberInputConfig.showCurrency, false);
          let amountLabel = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().commafy(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(itemValue), {
            digits
          });
          if (!autoFill) {
            const [iStr, dStr] = amountLabel.split('.');
            if (dStr) {
              const dRest = dStr.replace(/0+$/, '');
              amountLabel = dRest ? [iStr, '.', dRest].join('') : iStr;
            }
          }
          if (showCurrency) {
            amountLabel = `${props.currencySymbol || numberInputConfig.currencySymbol || render_getI18n('vxe.numberInput.currencySymbol') || ''}${amountLabel}`;
          }
          return amountLabel;
        }
      }
      return getFuncText(itemValue, 1);
    },
    renderTableDefault: defaultInputEditRender,
    createTableFilterOptions: defaultFilterOptions,
    renderTableFilter: defaultFilterRender,
    renderTableFloatingFilter: defaultFloatingFilterRender,
    tableFilterDefaultMethod({
      option,
      row,
      column
    }) {
      const {
        data
      } = option;
      const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      /* eslint-disable eqeqeq */
      return cellValue == data;
    },
    tableExportMethod(params) {
      const {
        row,
        column
      } = params;
      const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      return cellValue;
    }
  },
  VxeDatePicker: {
    tableAutoFocus: true,
    renderTableEdit: defaultEditRender,
    renderTableCell(renderOpts, params) {
      const props = renderOpts.props || {};
      const {
        $table,
        row,
        column
      } = params;
      const {
        cellResult
      } = $table.effectCellData(row, column, {
        key: 'render_table_cell',
        getResult({
          cellValue
        }) {
          if (cellValue) {
            if (props.type !== 'time') {
              return getLabelFormatDate(cellValue, props);
            }
          }
          return cellValue;
        }
      });
      return getCellLabelVNs(renderOpts, params, cellResult);
    },
    tableCellFormatter: handleFormatDatePicker,
    renderTableDefault: defaultEditRender,
    createTableFilterOptions: defaultFilterOptions,
    renderTableFilter: defaultFilterRender,
    renderTableFloatingFilter: defaultFloatingFilterRender,
    tableFilterDefaultMethod: handleFilterMethod
  },
  VxeDateRangePicker: {
    tableAutoFocus: true,
    renderTableEdit(renderOpts, params) {
      const {
        startField,
        endField
      } = renderOpts;
      const {
        $table,
        row,
        column
      } = params;
      const {
        model
      } = column;
      const cellValue = getCellValue(row, column);
      const seProps = {};
      const seOs = {};
      if (startField && endField) {
        seProps.startValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, startField);
        seProps.endValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, endField);
        seOs['onUpdate:startValue'] = value => {
          if (startField) {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, startField, value);
          }
        };
        seOs['onUpdate:endValue'] = value => {
          if (endField) {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, endField, value);
          }
        };
      }
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...getCellEditProps(renderOpts, params, cellValue, seProps),
        ...getComponentOns(renderOpts, params, {
          model(cellValue) {
            model.update = true;
            model.value = cellValue;
            setCellValue(row, column, cellValue);
          },
          change() {
            $table.updateStatus(params);
          },
          blur() {
            $table.handleCellRuleUpdateStatus('blur', params);
          }
        }, seOs)
      })];
    },
    renderTableDefault(renderOpts, params) {
      const {
        startField,
        endField
      } = renderOpts;
      const {
        row,
        column
      } = params;
      const {
        model
      } = column;
      const cellValue = getCellValue(row, column);
      const seProps = {};
      const seOs = {};
      if (startField && endField) {
        seProps.startValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, startField);
        seProps.endValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, endField);
        seOs['onUpdate:startValue'] = value => {
          if (startField) {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, startField, value);
          }
        };
        seOs['onUpdate:endValue'] = value => {
          if (endField) {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, endField, value);
          }
        };
      }
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...getCellEditProps(renderOpts, params, cellValue, seProps),
        ...getComponentOns(renderOpts, params, {
          model(cellValue) {
            model.update = true;
            model.value = cellValue;
            setCellValue(row, column, cellValue);
          }
        }, seOs)
      })];
    },
    renderTableCell(renderOpts, params) {
      const {
        startField,
        endField
      } = renderOpts;
      const {
        row,
        column
      } = params;
      let startValue = '';
      let endValue = '';
      if (startField && endField) {
        startValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, startField);
        endValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, endField);
      } else {
        const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
        if (cellValue) {
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(cellValue)) {
            startValue = cellValue[0];
            endValue = cellValue[1];
          } else {
            const strs = `${cellValue}`.split(',');
            startValue = strs[0];
            endValue = strs[1];
          }
        }
      }
      let cellLabel = '';
      if (startValue && endValue) {
        cellLabel = `${startValue} ~ ${endValue}`;
      }
      return getCellLabelVNs(renderOpts, params, cellLabel);
    }
  },
  VxeTextarea: {
    tableAutoFocus: true,
    renderTableDefault: defaultInputEditRender,
    renderTableCell(renderOpts, renderParams) {
      const {
        row,
        column
      } = renderParams;
      const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      const cellVNs = getCellLabelVNs(renderOpts, renderParams, cellValue);
      return getInputRenderCellVNs(cellValue, cellVNs, renderOpts, renderParams);
    },
    renderTableEdit: defaultInputEditRender
  },
  VxeButton: {
    renderTableDefault: buttonCellRender
  },
  VxeButtonGroup: {
    renderTableDefault(renderOpts, params) {
      const {
        options
      } = renderOpts;
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        options,
        ...getCellEditProps(renderOpts, params, null),
        ...getComponentOns(renderOpts, params)
      })];
    }
  },
  VxeSelect: {
    tableAutoFocus: true,
    renderTableEdit: defaultSelectEditRender,
    renderTableDefault: defaultSelectEditRender,
    renderTableCell(renderOpts, params) {
      const {
        options,
        optionGroups
      } = renderOpts;
      const {
        $table,
        row,
        column
      } = params;
      const opSize = options ? options.length : null;
      const ogSize = optionGroups ? optionGroups.length : null;
      const {
        cellResult
      } = $table.effectCellData(row, column, {
        key: 'render_table_cell',
        isChanged({
          oldValue,
          cellValue
        }) {
          return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
        },
        setValue({
          cellValue
        }) {
          return [cellValue, opSize, ogSize];
        },
        getResult({
          cellValue
        }) {
          return handleSelectCellValue(cellValue, renderOpts);
        }
      });
      // const cellResult = getSelectCellValue(renderOpts, params)
      return getCellLabelVNs(renderOpts, params, cellResult);
    },
    createTableFilterOptions: defaultFilterOptions,
    renderTableFilter(renderOpts, params) {
      const {
        column
      } = params;
      const {
        options,
        optionProps,
        optionGroups,
        optionGroupProps
      } = renderOpts;
      return column.filters.map((option, oIndex) => {
        const optionValue = option.data;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
          key: oIndex,
          ...getCellEditFilterProps(renderOpts, params, optionValue, {
            options,
            optionProps,
            optionGroups,
            optionGroupProps
          }),
          ...getFilterOns(renderOpts, params, option)
        });
      });
    },
    renderTableFloatingFilter(renderOpts, params) {
      const {
        option
      } = params;
      const {
        options,
        optionProps,
        optionGroups,
        optionGroupProps
      } = renderOpts;
      const optionValue = option.data;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...getCellEditFilterProps(renderOpts, params, optionValue, {
          options,
          optionProps,
          optionGroups,
          optionGroupProps
        }),
        ...getFloatingFilterOns(renderOpts, params, option)
      });
    },
    tableCellFormatter: handleFormatSelect,
    tableCellCopyMethod: handleFormatSelect,
    tableCellPasteMethod: handleSetSelectValue,
    tableFilterDefaultMethod: handleFilterMethod,
    tableExportMethod: handleExportSelectMethod
  },
  VxeText: {
    renderTableDefault(renderOpts, params) {
      const {
        $table,
        row,
        column
      } = params;
      const {
        props
      } = renderOpts;
      const cellLabel = $table.getCellLabel(row, column);
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...(props || {}),
        content: cellLabel,
        ...getComponentOns(renderOpts, params)
      })];
    }
  },
  VxeLink: {
    renderTableDefault(renderOpts, params) {
      const {
        $table,
        row,
        column
      } = params;
      const {
        props
      } = renderOpts;
      const {
        href
      } = props || {};
      const cellLabel = $table.getCellLabel(row, column);
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...(props || {}),
        content: cellLabel,
        href: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toFormatString(href, params),
        ...getComponentOns(renderOpts, params)
      })];
    }
  },
  /**
   * 已废弃,被 FormatSelect 替换
   * @deprecated
   */
  formatOption: {
    renderTableDefault(renderOpts, params) {
      return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
    }
  },
  FormatSelect: {
    renderTableDefault(renderOpts, params) {
      const {
        options,
        optionGroups
      } = renderOpts;
      const {
        $table,
        row,
        column
      } = params;
      const opSize = options ? options.length : null;
      const ogSize = optionGroups ? optionGroups.length : null;
      const {
        cellResult
      } = $table.effectCellData(row, column, {
        key: 'render_table_cell',
        isChanged({
          oldValue,
          cellValue
        }) {
          return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
        },
        setValue({
          cellValue
        }) {
          return [cellValue, opSize, ogSize];
        },
        getResult({
          cellValue
        }) {
          return handleSelectCellValue(cellValue, renderOpts);
        }
      });
      // const cellResult = getSelectCellValue(renderOpts, params)
      return getCellLabelVNs(renderOpts, params, cellResult);
    },
    tableCellFormatter: handleFormatSelect,
    tableCellCopyMethod: handleFormatSelect,
    tableCellPasteMethod: handleSetSelectValue,
    tableFilterDefaultMethod: handleFilterMethod,
    tableExportMethod: handleExportSelectMethod
  },
  VxeTreeSelect: {
    tableAutoFocus: true,
    renderTableEdit: defaultTableOrTreeSelectEditRender,
    renderTableCell(renderOpts, params) {
      const {
        options,
        optionGroups
      } = renderOpts;
      const {
        $table,
        row,
        column
      } = params;
      const opSize = options ? options.length : null;
      const ogSize = optionGroups ? optionGroups.length : null;
      const {
        cellResult
      } = $table.effectCellData(row, column, {
        key: 'render_table_cell',
        isChanged({
          oldValue,
          cellValue
        }) {
          return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
        },
        setValue({
          cellValue
        }) {
          return [cellValue, opSize, ogSize];
        },
        getResult({
          cellValue
        }) {
          return handleTreeSelectCellValue(cellValue, renderOpts);
        }
      });
      // const cellResult = getTreeSelectCellValue(renderOpts, params)
      return getCellLabelVNs(renderOpts, params, cellResult);
    },
    tableCellFormatter: handleFormatTreeSelect,
    tableCellCopyMethod: handleFormatTreeSelect,
    tableCellPasteMethod: handleSetTreeSelectValue,
    tableExportMethod: handleExportTreeSelectMethod
  },
  /**
   * 已废弃,被 FormatTreeSelect 替换
   * @deprecated
   */
  formatTree: {
    renderTableDefault(renderOpts, params) {
      return getCellLabelVNs(renderOpts, params, getTreeSelectCellValue(renderOpts, params));
    }
  },
  FormatTreeSelect: {
    renderTableDefault(renderOpts, params) {
      const {
        options,
        optionGroups
      } = renderOpts;
      const {
        $table,
        row,
        column
      } = params;
      const opSize = options ? options.length : null;
      const ogSize = optionGroups ? optionGroups.length : null;
      const {
        cellResult
      } = $table.effectCellData(row, column, {
        key: 'render_table_cell',
        isChanged({
          oldValue,
          cellValue
        }) {
          return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
        },
        setValue({
          cellValue
        }) {
          return [cellValue, opSize, ogSize];
        },
        getResult({
          cellValue
        }) {
          return handleTreeSelectCellValue(cellValue, renderOpts);
        }
      });
      // const cellResult = getTreeSelectCellValue(renderOpts, params)
      return getCellLabelVNs(renderOpts, params, cellResult);
    },
    tableCellFormatter: handleFormatTreeSelect,
    tableCellCopyMethod: handleFormatTreeSelect,
    tableCellPasteMethod: handleSetTreeSelectValue,
    tableExportMethod: handleExportTreeSelectMethod
  },
  VxeCascader: {
    tableAutoFocus: true,
    renderTableEdit: defaultTableOrTreeSelectEditRender,
    renderTableCell(renderOpts, params) {
      const {
        options,
        optionGroups
      } = renderOpts;
      const {
        $table,
        row,
        column
      } = params;
      const opSize = options ? options.length : null;
      const ogSize = optionGroups ? optionGroups.length : null;
      const {
        cellResult
      } = $table.effectCellData(row, column, {
        key: 'render_table_cell',
        isChanged({
          oldValue,
          cellValue
        }) {
          return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
        },
        setValue({
          cellValue
        }) {
          return [cellValue, opSize, ogSize];
        },
        getResult({
          cellValue
        }) {
          return handleTreeSelectCellValue(cellValue, renderOpts);
        }
      });
      // const cellResult = getTreeSelectCellValue(renderOpts, params)
      return getCellLabelVNs(renderOpts, params, cellResult);
    },
    tableCellFormatter: handleFormatTreeSelect,
    tableCellCopyMethod: handleFormatTreeSelect,
    tableCellPasteMethod: handleSetTreeSelectValue,
    tableExportMethod: handleExportTreeSelectMethod
  },
  VxeTableSelect: {
    tableAutoFocus: true,
    renderTableEdit: defaultTableOrTreeSelectEditRender,
    renderTableCell(renderOpts, params) {
      const {
        options,
        optionGroups
      } = renderOpts;
      const {
        $table,
        row,
        column
      } = params;
      const opSize = options ? options.length : null;
      const ogSize = optionGroups ? optionGroups.length : null;
      const {
        cellResult
      } = $table.effectCellData(row, column, {
        key: 'render_table_cell',
        isChanged({
          oldValue,
          cellValue
        }) {
          return oldValue && oldValue[0] === cellValue && oldValue[1] === opSize && oldValue[2] === ogSize;
        },
        setValue({
          cellValue
        }) {
          return [cellValue, opSize, ogSize];
        },
        getResult({
          cellValue
        }) {
          return handleTreeSelectCellValue(cellValue, renderOpts);
        }
      });
      // const cellResult = getTreeSelectCellValue(renderOpts, params)
      return getCellLabelVNs(renderOpts, params, cellResult);
    },
    tableCellFormatter: handleFormatTreeSelect,
    tableCellCopyMethod: handleFormatTreeSelect,
    tableCellPasteMethod: handleSetTreeSelectValue,
    tableExportMethod: handleExportTreeSelectMethod
  },
  VxeColorPicker: {
    tableAutoFocus: true,
    renderTableEdit(renderOpts, params) {
      const {
        row,
        column
      } = params;
      const {
        options
      } = renderOpts;
      const cellValue = getCellValue(row, column);
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...getCellEditProps(renderOpts, params, cellValue, {
          colors: options
        }),
        ...getEditOns(renderOpts, params)
      })];
    },
    renderTableCell(renderOpts, params) {
      const {
        row,
        column
      } = params;
      const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
        class: 'vxe-color-picker--readonly'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-color-picker--readonly-color',
        style: {
          backgroundColor: cellValue
        }
      })]);
    }
  },
  VxeIconPicker: {
    tableAutoFocus: true,
    renderTableEdit(renderOpts, params) {
      const {
        row,
        column
      } = params;
      const {
        options
      } = renderOpts;
      const cellValue = getCellValue(row, column);
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...getCellEditProps(renderOpts, params, cellValue, {
          icons: options
        }),
        ...getEditOns(renderOpts, params)
      })];
    },
    renderTableCell(renderOpts, params) {
      const {
        row,
        column
      } = params;
      const cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
        class: cellValue
      });
    }
  },
  VxeRadioGroup: {
    renderTableDefault: radioAndCheckboxGroupEditRender
  },
  VxeCheckbox: {
    renderTableDefault: checkboxEditRender
  },
  VxeCheckboxGroup: {
    renderTableDefault: radioAndCheckboxGroupEditRender
  },
  VxeSwitch: {
    tableAutoFocus: 'button',
    renderTableEdit: defaultEditRender,
    renderTableDefault: defaultEditRender
  },
  VxeUpload: {
    renderTableEdit: defaultEditRender,
    renderTableCell: defaultEditRender,
    renderTableDefault: defaultEditRender
  },
  VxeImage: {
    renderTableDefault(renderOpts, params) {
      const {
        row,
        column
      } = params;
      const {
        props
      } = renderOpts;
      const cellValue = getCellValue(row, column);
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...props,
        src: cellValue,
        ...getEditOns(renderOpts, params)
      })];
    }
  },
  VxeImageGroup: {
    renderTableDefault(renderOpts, params) {
      const {
        row,
        column
      } = params;
      const {
        props
      } = renderOpts;
      const cellValue = getCellValue(row, column);
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...props,
        urlList: cellValue,
        ...getEditOns(renderOpts, params)
      })];
    }
  },
  VxeTextEllipsis: {
    renderTableDefault(renderOpts, params) {
      const {
        row,
        column
      } = params;
      const {
        props
      } = renderOpts;
      const cellValue = getCellValue(row, column);
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getDefaultComponent(renderOpts), {
        ...props,
        content: cellValue,
        ...getEditOns(renderOpts, params)
      })];
    }
  },
  VxeRate: {
    renderTableDefault: defaultEditRender
  },
  VxeSlider: {
    renderTableDefault: defaultEditRender
  },
  // 以下已废弃
  $input: {
    tableAutoFocus: 'input',
    renderTableEdit: oldEditRender,
    renderTableCell(renderOpts, params) {
      const {
        props = {}
      } = renderOpts;
      const {
        row,
        column
      } = params;
      const digits = props.digits || render_getConfig().input?.digits || 2;
      let cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
      if (cellValue) {
        switch (props.type) {
          case 'date':
          case 'week':
          case 'month':
          case 'year':
            cellValue = getLabelFormatDate(cellValue, props);
            break;
          case 'float':
            cellValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toFixed(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor(cellValue, digits), digits);
            break;
        }
      }
      return getCellLabelVNs(renderOpts, params, cellValue);
    },
    renderTableDefault: oldEditRender,
    renderTableFilter: oldFilterRender,
    tableFilterDefaultMethod: handleInputFilterMethod
  },
  $textarea: {
    tableAutoFocus: 'textarea'
  },
  $button: {
    renderTableDefault: oldButtonEditRender
  },
  $buttons: {
    renderTableDefault: oldButtonsEditRender
  },
  $select: {
    tableAutoFocus: 'input',
    renderTableEdit: oldSelectEditRender,
    renderTableDefault: oldSelectEditRender,
    renderTableCell(renderOpts, params) {
      return getCellLabelVNs(renderOpts, params, getSelectCellValue(renderOpts, params));
    },
    renderTableFilter(renderOpts, params) {
      const {
        column
      } = params;
      const {
        options,
        optionProps,
        optionGroups,
        optionGroupProps
      } = renderOpts;
      return column.filters.map((option, oIndex) => {
        const optionValue = option.data;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(getOldComponent(renderOpts), {
          key: oIndex,
          ...getCellEditFilterProps(renderOpts, params, optionValue, {
            options,
            optionProps,
            optionGroups,
            optionGroupProps
          }),
          ...getFilterOns(renderOpts, params, option)
        });
      });
    },
    tableFilterDefaultMethod: handleFilterMethod,
    tableExportMethod: handleExportSelectMethod
  },
  $radio: {
    tableAutoFocus: 'input'
  },
  $checkbox: {
    tableAutoFocus: 'input'
  },
  $switch: {
    tableAutoFocus: 'button',
    renderTableEdit: oldEditRender,
    renderTableDefault: oldEditRender
  }
  // 以上已废弃
});
;// ./packages/table/src/table.ts
const{warnLog: table_warnLog,errLog: table_errLog}=createComponentLog('table');const{getConfig: table_getConfig,getIcon: table_getIcon,getI18n: table_getI18n,renderer: table_renderer,formats: table_formats,createEvent,globalResize: table_globalResize,interceptor: table_interceptor,hooks: table_hooks,globalEvents: table_globalEvents,GLOBAL_EVENT_KEYS: table_GLOBAL_EVENT_KEYS,useFns,renderEmptyElement: table_renderEmptyElement}=core_.VxeUI;const supportMaxRow=5e6;const customStorageKey='VXE_CUSTOM_STORE';const maxYHeight=5e6;const maxXWidth=5e6;const table_sourceType='table';let crossTableDragRowObj=null;/* harmony default export */ var table = (defineVxeComponent({name:'VxeTable',props:tableProps,emits:tableEmits,setup(props,context){const{slots,emit}=context;const xID=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId();const browseObj=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().browse();// 使用已安装的组件,如果未安装则不渲染
const VxeUILoadingComponent=core_.VxeUI.getComponent('VxeLoading');const VxeUITooltipComponent=core_.VxeUI.getComponent('VxeTooltip');const $xeModal=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeModal',null);const $xeTabs=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTabs',null);const $xeParentTable=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeTable',null);const $xeSplitter=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeSplitter',null);const $xeGrid=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGrid',null);const $xeGantt=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGantt',null);const $xeGGWrapper=$xeGrid||$xeGantt;const{computeSize}=useFns.useSize(props);const crossTableDragRowInfo=getCrossTableDragRowInfo();const reactData=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)(createReactData());const internalData=createInternalData();let tableMethods={};let tablePrivateMethods={};const refElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refVarElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTooltip=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refCommTooltip=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refValidTooltip=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableMenu=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableFilter=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableCustom=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableViewportElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableHeader=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableBody=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableFooter=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableLeftHeader=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableLeftBody=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableLeftFooter=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableRightHeader=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableRightBody=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTableRightFooter=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refTeleportWrapper=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refPopupWrapperElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refCustomContainerElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refLeftContainer=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refRightContainer=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refColResizeBar=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refRowResizeBar=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refEmptyPlaceholder=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refDragTipElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refDragRowLineElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refDragColLineElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refRowExpandElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refRowExpandYSpaceElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollXVirtualElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollYVirtualElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollXHandleElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollXLeftCornerElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollXRightCornerElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollYHandleElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollYTopCornerElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollXWrapperElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollYWrapperElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollYBottomCornerElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollXSpaceElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();const refScrollYSpaceElem=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();let $xeToolbar;const computeTableId=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{id}=props;if(id){if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(id)){return`${id({$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt})||''}`;}return`${id}`;}return'';});const computeRowField=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const rowOpts=computeRowOpts.value;return`${props.rowId||rowOpts.keyField||'_X_ROW_KEY'}`;});const computeValidOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const opts=Object.assign({},table_getConfig().table.validConfig,props.validConfig);// 兼容老版本
if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(opts.showMessage)){opts.showErrorMessage=opts.showMessage;}return opts;});/**
         * @deprecated
         */const computeSXOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const virtualXOpts=computeVirtualXOpts.value;return virtualXOpts;});const computeScrollXThreshold=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const virtualXOpts=computeVirtualXOpts.value;const{threshold}=virtualXOpts;if(threshold){return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(threshold);}return 0;});/**
         * @deprecated
         */const computeSYOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const virtualYOpts=computeVirtualYOpts.value;return virtualYOpts;});const computeVirtualXOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{virtualXConfig,scrollX}=props;const globalVirtualXConfig=table_getConfig().table.virtualXConfig;const globalScrollX=table_getConfig().table.scrollX;if(virtualXConfig){return Object.assign({},globalVirtualXConfig,virtualXConfig);}if(scrollX){// 已废弃,保留兼容
return Object.assign({},globalScrollX,scrollX);}if(globalVirtualXConfig){return Object.assign({},globalVirtualXConfig,virtualXConfig);}// 已废弃,保留兼容
return Object.assign({},globalScrollX,scrollX);});const computeVirtualYOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{virtualYConfig,scrollY}=props;const globalVirtualYConfig=table_getConfig().table.virtualYConfig;const globalScrollY=table_getConfig().table.scrollY;if(virtualYConfig){return Object.assign({},globalVirtualYConfig,virtualYConfig);}if(scrollY){// 已废弃,保留兼容
return Object.assign({},globalScrollY,scrollY);}if(globalVirtualYConfig){return Object.assign({},globalVirtualYConfig,virtualYConfig);}// 已废弃,保留兼容
return Object.assign({},globalScrollY,scrollY);});const computeScrollbarOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.scrollbarConfig,props.scrollbarConfig);});const computeScrollbarXOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const scrollbarOpts=computeScrollbarOpts.value;return Object.assign({},scrollbarOpts.x,props.scrollbarConfig?.x||{});});const computeScrollbarYOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const scrollbarOpts=computeScrollbarOpts.value;return Object.assign({},scrollbarOpts.y,props.scrollbarConfig?.y||{});});const computeScrollbarXToTop=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const scrollbarXOpts=computeScrollbarXOpts.value;return scrollbarXOpts.position==='top';});const computeScrollbarYToLeft=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const scrollbarYOpts=computeScrollbarYOpts.value;return scrollbarYOpts.position==='left';});const computeScrollYThreshold=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const virtualYOpts=computeVirtualYOpts.value;const{threshold}=virtualYOpts;if(threshold){return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(threshold);}return 0;});const computeRowHeightMaps=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return reactData.rowHeightStore;});const computeDefaultRowHeight=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const vSize=computeSize.value;const rowHeightMaps=computeRowHeightMaps.value;return rowHeightMaps[vSize||'default']||18;});const computeColumnOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.columnConfig,props.columnConfig);});const computeCurrentColumnOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.currentColumnConfig,props.currentColumnConfig);});const computeCellOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const cellOpts=Object.assign({},table_getConfig().table.cellConfig,props.cellConfig);if(cellOpts.height){cellOpts.height=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellOpts.height);}return cellOpts;});const computeHeaderCellOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const headerCellOpts=Object.assign({},table_getConfig().table.headerCellConfig,props.headerCellConfig);const defaultRowHeight=computeDefaultRowHeight.value;const cellOpts=computeCellOpts.value;let headCellHeight=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(getCalcHeight(headerCellOpts.height||cellOpts.height));if($xeGantt){const{computeTaskViewScales}=$xeGantt.getComputeMaps();const taskViewScales=computeTaskViewScales.value;if(taskViewScales&&taskViewScales.length>2){const ganttMinHeadCellHeight=defaultRowHeight/2*taskViewScales.length;headCellHeight=Math.max(ganttMinHeadCellHeight,headCellHeight);}}headerCellOpts.height=headCellHeight;return headerCellOpts;});const computeFooterCellOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const footerCellOpts=Object.assign({},table_getConfig().table.footerCellConfig,props.footerCellConfig);const cellOpts=computeCellOpts.value;footerCellOpts.height=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(getCalcHeight(footerCellOpts.height||cellOpts.height));return footerCellOpts;});const computeRowOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.rowConfig,props.rowConfig);});const computeAggregateOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.aggregateConfig||table_getConfig().table.rowGroupConfig,props.aggregateConfig||props.rowGroupConfig);});const computeRowGroupOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return computeAggregateOpts.value;});const computeAggregateMode=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const aggregateOpts=computeAggregateOpts.value;return aggregateOpts.mode;});const computeAggregateAccuracyOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.aggregateAccuracyConfig,props.aggregateAccuracyConfig);});const computeCurrentRowOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.currentRowConfig,props.currentRowConfig);});const computeRowDragOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.rowDragConfig,props.rowDragConfig);});const computeColumnDragOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.columnDragConfig,props.columnDragConfig);});const computeResizeOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.resizeConfig,props.resizeConfig);});const computeResizableOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.resizableConfig,props.resizableConfig);});const computeSeqOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({startIndex:0},table_getConfig().table.seqConfig,props.seqConfig);});const computeRadioOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.radioConfig,props.radioConfig);});const computeCheckboxOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.checkboxConfig,props.checkboxConfig);});const computeTooltipOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().tooltip,table_getConfig().table.tooltipConfig,props.tooltipConfig);});const computeHeaderTooltipOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().tooltip,table_getConfig().table.headerTooltipConfig,props.headerTooltipConfig);});const computeFooterTooltipOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().tooltip,table_getConfig().table.footerTooltipConfig,props.footerTooltipConfig);});const computeTableTipConfig=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{tooltipStore}=reactData;const tooltipOpts=computeTooltipOpts.value;return Object.assign({},tooltipOpts,tooltipStore.currOpts);});const computeValidTipConfig=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const tooltipOpts=computeTooltipOpts.value;return Object.assign({},tooltipOpts);});const computeEditOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.editConfig,props.editConfig);});const computeEditDirtyOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.editDirtyConfig,props.editDirtyConfig);});const computeSortOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({orders:['asc','desc',null]},table_getConfig().table.sortConfig,props.sortConfig);});const computeFilterOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.filterConfig,props.filterConfig);});const computeFloatingFilterOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.floatingFilterConfig,props.floatingFilterConfig);});const computeMouseOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.mouseConfig,props.mouseConfig);});const computeAreaOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.areaConfig,props.areaConfig);});const computeKeyboardOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.keyboardConfig,props.keyboardConfig);});const computeClipOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.clipConfig,props.clipConfig);});const computeUndoRedoHistoryOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.undoRedoHistoryConfig,props.undoRedoHistoryConfig);});const computeFNROpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const fnrOpts=computeFnrOpts.value;return fnrOpts;});const computeFnrOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.fnrConfig,props.fnrConfig);});const computeMenuOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.menuConfig,props.menuConfig);});const computeLeftFixedWidth=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{columnStore}=reactData;const{leftList}=columnStore;let leftWidth=0;for(let i=0;i<leftList.length;i++){const column=leftList[i];leftWidth+=column.renderWidth;}return leftWidth;});const computeRightFixedWidth=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{columnStore}=reactData;const{rightList}=columnStore;let leftWidth=0;for(let i=0;i<rightList.length;i++){const column=rightList[i];leftWidth+=column.renderWidth;}return leftWidth;});// 合并列是否超越冻结列
const computeBodyMergeCoverFixed=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{columnStore,mergeBodyFlag}=reactData;const{mergeBodyList,visibleColumn}=internalData;const{leftList,rightList}=columnStore;const rscIndex=visibleColumn.length-rightList.length;if(mergeBodyFlag&&(leftList.length||rightList.length)){const lecIndex=leftList.length;for(let i=0;i<mergeBodyList.length;i++){const{col,colspan}=mergeBodyList[i];if(col<lecIndex&&col+colspan>lecIndex){return true;}else if(col<rscIndex&&col+colspan>rscIndex){return true;}}}return false;});const computeIsHeaderRenderOptimize=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{spanMethod,footerSpanMethod,showHeaderOverflow:allColumnHeaderOverflow}=props;const{isGroup,scrollXLoad}=reactData;let isOptimizeMode=false;if(isGroup){// 分组表头
}else{// 如果是使用优化模式
if(scrollXLoad&&allColumnHeaderOverflow){if(spanMethod||footerSpanMethod){// 如果不支持优化模式
}else{isOptimizeMode=true;}}}return isOptimizeMode;});const computeIsBodyRenderOptimize=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{spanMethod,footerSpanMethod}=props;const{scrollXLoad,scrollYLoad,isAllOverflow,expandColumn}=reactData;const bodyMergeCoverFixed=computeBodyMergeCoverFixed.value;const expandOpts=computeExpandOpts.value;let isOptimizeMode=false;// 如果是使用优化模式
if(scrollXLoad||scrollYLoad||isAllOverflow){// 如果是展开行,内联模式,不支持优化
// 如果是方法合并,不支持优化
// 如果固定列且配置式合并,不支持优化
if(expandColumn&&expandOpts.mode!=='fixed'||bodyMergeCoverFixed||spanMethod||footerSpanMethod){// 如果不支持优化模式
}else{isOptimizeMode=true;}}return isOptimizeMode;});const computeIsFooterRenderOptimize=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{spanMethod,footerSpanMethod,showFooterOverflow:allColumnFooterOverflow}=props;const{scrollXLoad}=reactData;let isOptimizeMode=false;// 如果是使用优化模式
if(scrollXLoad&&allColumnFooterOverflow){if(spanMethod||footerSpanMethod){// 如果不支持优化模式
}else{isOptimizeMode=true;}}return isOptimizeMode;});const computeHeaderMenu=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const menuOpts=computeMenuOpts.value;const headerOpts=menuOpts.header;return headerOpts&&headerOpts.options?headerOpts.options:[];});const computeBodyMenu=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const menuOpts=computeMenuOpts.value;const bodyOpts=menuOpts.body;return bodyOpts&&bodyOpts.options?bodyOpts.options:[];});const computeFooterMenu=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const menuOpts=computeMenuOpts.value;const footerOpts=menuOpts.footer;return footerOpts&&footerOpts.options?footerOpts.options:[];});const computeIsMenu=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const isContentMenu=computeIsContentMenu.value;return isContentMenu;});const computeIsContentMenu=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const menuOpts=computeMenuOpts.value;const headerMenu=computeHeaderMenu.value;const bodyMenu=computeBodyMenu.value;const footerMenu=computeFooterMenu.value;return!!(props.menuConfig&&isEnableConf(menuOpts)&&(headerMenu.length||bodyMenu.length||footerMenu.length));});const computeMenuList=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{ctxMenuStore}=reactData;const rest=[];ctxMenuStore.list.forEach(list=>{list.forEach(item=>{rest.push(item);});});return rest;});const computeExportOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.exportConfig,props.exportConfig);});const computeImportOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.importConfig,props.importConfig);});const computePrintOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.printConfig,props.printConfig);});const computeExpandOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.expandConfig,props.expandConfig);});const computeTreeOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.treeConfig,props.treeConfig);});const computeEmptyOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.emptyRender,props.emptyRender);});const computeLoadingOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.loadingConfig,props.loadingConfig);});const computeCellOffsetWidth=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return props.border?Math.max(2,Math.ceil(reactData.scrollbarWidth/reactData.tableColumn.length)):1;});const computeCustomOpts=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return Object.assign({},table_getConfig().table.customConfig,props.customConfig);});const computeCustomSimpleMode=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{minHeight,height}=props;const customOpts=computeCustomOpts.value;const{mode,popupOptions,placement}=customOpts;if(!placement||placement==='top-left'||placement==='top-right'){if(!(mode==='modal'||mode==='drawer')){const{mode}=popupOptions||{};if(!mode||mode==='auto'){if(height||minHeight){return'inside';}return'outside';}if(mode){return mode;}}}return'';});const computeTableStyle=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const scrollbarOpts=computeScrollbarOpts.value;const{width,height}=scrollbarOpts;const tStys={};if(width){tStys['--vxe-ui-table-view-scrollbar-width']=toCssUnit(width);}if(height){tStys['--vxe-ui-table-view-scrollbar-height']=toCssUnit(height);}return tStys;});const computeTableRowExpandedList=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{tableData,rowExpandedFlag,expandColumn,rowGroupExpandedFlag,treeExpandedFlag}=reactData;const{visibleDataRowIdData,rowExpandedMaps}=internalData;const expandList=[];if(tableData.length&&expandColumn&&rowExpandedFlag&&rowGroupExpandedFlag&&treeExpandedFlag){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(rowExpandedMaps,(row,rowid)=>{if(visibleDataRowIdData[rowid]){expandList.push(row);}});}return expandList;});const computeAutoWidthColumnList=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{visibleColumn}=internalData;const{tableColumn}=reactData;return tableColumn.length||visibleColumn.length?visibleColumn.filter(column=>column.width==='auto'||column.minWidth==='auto'):[];});const computeFixedColumnSize=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{tableColumn}=reactData;const{collectColumn}=internalData;let fixedSize=0;// 只判断第一层
if(tableColumn.length&&collectColumn.length){collectColumn.forEach(column=>{if(column.renderFixed){fixedSize++;}});}return fixedSize;});const computeIsMaxFixedColumn=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const fixedColumnSize=computeFixedColumnSize.value;const columnOpts=computeColumnOpts.value;const{maxFixedSize}=columnOpts;if(maxFixedSize){return fixedColumnSize>=maxFixedSize;}return false;});const computeKeepFields=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{tableFullColumn}=internalData;const{updateColFlag}=reactData;const editDirtyOpts=computeEditDirtyOpts.value;const{extraFields,includeFields,excludeFields}=editDirtyOpts;const kpFields=[];if(updateColFlag){// 优先级 excludeFields > (includeFields || extraFields)
const excludeFdMaps={};if(excludeFields&&excludeFields.length){excludeFields.forEach(field=>{excludeFdMaps[field]=1;});}if(includeFields&&includeFields.length){return excludeFields&&excludeFields.length?includeFields.filter(field=>!excludeFdMaps[field]):includeFields;}const addFdMaps={};if(extraFields&&extraFields.length){extraFields.forEach(field=>{if(!addFdMaps[field]){addFdMaps[field]=1;kpFields.push(field);}});}for(let i=0;i<tableFullColumn.length;i++){const column=tableFullColumn[i];const{field,type,editRender,cellRender}=column;if(field&&!type&&(editRender||cellRender)&&!addFdMaps[field]&&!excludeFdMaps[field]){addFdMaps[field]=1;kpFields.push(field);}}}return kpFields;});const computeTableBorder=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{border}=props;if(border===true){return'full';}if(border){return border;}return'default';});const computeIsAllCheckboxDisabled=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{treeConfig}=props;const{tableData}=reactData;const{tableFullData}=internalData;const checkboxOpts=computeCheckboxOpts.value;const{strict,checkMethod}=checkboxOpts;if(strict){if(tableData.length||tableFullData.length){if(checkMethod){if(treeConfig){// 暂时不支持树形结构
}// 如果所有行都被禁用
return tableFullData.every(row=>!checkMethod({$table:$xeTable,row}));}return false;}return true;}return false;});const computeVirtualScrollBars=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{overflowX,scrollXLoad,overflowY,scrollYLoad}=reactData;return{x:overflowX&&scrollXLoad,y:overflowY&&scrollYLoad};});const computeRowGroupFields=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const rowGroupOpts=computeRowGroupOpts.value;return rowGroupOpts.groupFields;});const computeRowGroupColumns=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{rowGroupList}=reactData;const{fullColumnFieldData}=internalData;const rgColumns=[];rowGroupList.forEach(aggConf=>{const colRest=fullColumnFieldData[aggConf.field];if(colRest){rgColumns.push(colRest.column);}});return rgColumns;});const computeAggFuncColumns=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{const{rowGroupList,tableColumn}=reactData;if(rowGroupList.length){return tableColumn.filter(column=>column.aggFunc);}return[];});const combineTabsResizeFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return $xeTabs?$xeTabs.reactData.resizeFlag:null;});const combineModalResizeFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return $xeModal?$xeModal.reactData.resizeFlag:null;});const combineSplitterResizeFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(()=>{return $xeSplitter?$xeSplitter.reactData.resizeFlag:null;});const refMaps={refElem,refTooltip,refValidTooltip,refTableFilter,refTableCustom,refTableMenu,refTableHeader,refTableBody,refTableFooter,refTableLeftHeader,refTableLeftBody,refTableLeftFooter,refTableRightHeader,refTableRightBody,refTableRightFooter,refLeftContainer,refRightContainer,refColResizeBar,refRowResizeBar,refCustomContainerElem,refScrollXVirtualElem,refScrollYVirtualElem,refScrollXHandleElem,refScrollYHandleElem,refScrollXSpaceElem,refScrollYSpaceElem};const computeMaps={computeSize,computeTableId,computeValidOpts,computeRowField,computeVirtualXOpts,computeVirtualYOpts,computeScrollbarOpts,computeScrollbarXOpts,computeScrollbarYOpts,computeScrollbarXToTop,computeScrollbarYToLeft,computeColumnOpts,computeCurrentColumnOpts,computeScrollXThreshold,computeScrollYThreshold,computeRowHeightMaps,computeDefaultRowHeight,computeCellOpts,computeHeaderCellOpts,computeFooterCellOpts,computeRowOpts,computeAggregateOpts,computeAggregateAccuracyOpts,computeRowGroupOpts,computeCurrentRowOpts,computeRowDragOpts,computeColumnDragOpts,computeResizeOpts,computeResizableOpts,computeSeqOpts,computeRadioOpts,computeCheckboxOpts,computeTooltipOpts,computeHeaderTooltipOpts,computeFooterTooltipOpts,computeEditOpts,computeEditDirtyOpts,computeSortOpts,computeFilterOpts,computeFloatingFilterOpts,computeMouseOpts,computeAreaOpts,computeKeyboardOpts,computeClipOpts,computeFnrOpts,computeHeaderMenu,computeBodyMenu,computeFooterMenu,computeIsMenu,computeIsContentMenu,computeMenuList,computeMenuOpts,computeExportOpts,computeImportOpts,computePrintOpts,computeExpandOpts,computeTreeOpts,computeEmptyOpts,computeLoadingOpts,computeCellOffsetWidth,computeCustomOpts,computeCustomSimpleMode,computeLeftFixedWidth,computeRightFixedWidth,computeBodyMergeCoverFixed,computeFixedColumnSize,computeIsMaxFixedColumn,computeKeepFields,computeIsAllCheckboxDisabled,computeIsHeaderRenderOptimize,computeIsBodyRenderOptimize,computeIsFooterRenderOptimize,computeVirtualScrollBars,computeRowGroupFields,computeRowGroupColumns,computeAggFuncColumns,computeUndoRedoHistoryOpts,computeFNROpts,computeSXOpts,computeSYOpts};const $xeTable={xID,props:props,context,reactData,internalData,getRefMaps:()=>refMaps,getComputeMaps:()=>computeMaps,xeGrid:$xeGrid,xeGantt:$xeGantt,// 已废弃
xegrid:$xeGrid};const eqCellValue=(newRow,oldRow,field)=>{const val1=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(newRow,field);const val2=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(oldRow,field);let result=false;if(eqEmptyValue(val1)&&eqEmptyValue(val2)){result=true;}else if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(val1)||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(val1)){result=''+val1===''+val2;}else{result=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isEqual(val1,val2);}return{newValue:val1,oldValue:val2,result};};const handleKeyField=()=>{const keyField=computeRowField.value;internalData.currKeyField=keyField;internalData.isCurrDeepKey=hasDeepKey(keyField);};const getNextSortOrder=column=>{const sortOpts=computeSortOpts.value;const{orders=[]}=sortOpts;const currOrder=column.order||null;const oIndex=orders.indexOf(currOrder)+1;return orders[oIndex<orders.length?oIndex:0];};const getCustomStorageMap=id=>{const version=table_getConfig().version;const rest=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toStringJSON(localStorage.getItem(customStorageKey)||'');const maps=rest&&rest._v===version?rest:{_v:version};return(id?maps[id]:maps)||{};};const setCustomStorageMap=(id,data)=>{const version=table_getConfig().version;const maps=getCustomStorageMap();maps[id]=data||undefined;maps._v=version;localStorage.setItem(customStorageKey,external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toJSONString(maps));};const getRecoverRowMaps=keyMaps=>{const{fullAllDataRowIdData}=internalData;const restKeys={};external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(keyMaps,(row,rowid)=>{if(fullAllDataRowIdData[rowid]){restKeys[rowid]=row;}});return restKeys;};const handleReserveRow=reserveRowMap=>{const{fullDataRowIdData}=internalData;const reserveList=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(reserveRowMap,(item,rowid)=>{if(fullDataRowIdData[rowid]&&$xeTable.findRowIndexOf(reserveList,fullDataRowIdData[rowid].row)===-1){reserveList.push(fullDataRowIdData[rowid].row);}});return reserveList;};const handleVirtualXVisible=()=>{const{isScrollXBig,scrollXWidth}=reactData;const{elemStore,visibleColumn,fullColumnIdData}=internalData;const leftFixedWidth=computeLeftFixedWidth.value;const rightFixedWidth=computeRightFixedWidth.value;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);if(bodyScrollElem){const clientWidth=bodyScrollElem.clientWidth;let scrollLeft=bodyScrollElem.scrollLeft;if(isScrollXBig){scrollLeft=Math.ceil((scrollXWidth-clientWidth)*Math.min(1,scrollLeft/(maxXWidth-clientWidth)));}const startLeft=scrollLeft+leftFixedWidth;const endLeft=scrollLeft+clientWidth-rightFixedWidth;let leftIndex=0;let rightIndex=visibleColumn.length;while(leftIndex<rightIndex){const cIndex=Math.floor((leftIndex+rightIndex)/2);const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};if(colRest.oLeft<=startLeft){leftIndex=cIndex+1;}else{rightIndex=cIndex;}}let visibleSize=0;const toVisibleIndex=leftIndex===visibleColumn.length?leftIndex:Math.max(0,leftIndex<visibleColumn.length?leftIndex-2:0);for(let cIndex=toVisibleIndex,cLen=visibleColumn.length;cIndex<cLen;cIndex++){const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid]||{};visibleSize++;if(colRest.oLeft>endLeft||visibleSize>=60){break;}}return{toVisibleIndex:Math.max(0,toVisibleIndex),visibleSize:Math.max(1,visibleSize)};}return{toVisibleIndex:0,visibleSize:6};};const calcVarRowHeightConfig=(sizeKey,sizeEl)=>{const{rowHeightStore}=reactData;if(sizeEl&&sizeEl.clientHeight){rowHeightStore[sizeKey]=sizeEl.clientHeight;}};const computeRowHeight=()=>{const{isAllOverflow}=reactData;const tableHeader=refTableHeader.value;const tableBody=refTableBody.value;const tableBodyElem=tableBody?tableBody.$el:null;const defaultRowHeight=computeDefaultRowHeight.value;let rowHeight=0;if(isAllOverflow){if(tableBodyElem){const tableHeaderElem=tableHeader?tableHeader.$el:null;let firstTrElem;firstTrElem=tableBodyElem.querySelector('tr');if(!firstTrElem&&tableHeaderElem){firstTrElem=tableHeaderElem.querySelector('tr');}if(firstTrElem){rowHeight=firstTrElem.clientHeight;}}if(!rowHeight){rowHeight=defaultRowHeight;}}else{rowHeight=defaultRowHeight;}// 最低支持 18px 行高
return Math.max(18,rowHeight);};const handleVirtualYVisible=()=>{const{isAllOverflow,expandColumn,isScrollYBig,scrollYHeight}=reactData;const{elemStore,isResizeCellHeight,afterFullData,fullAllDataRowIdData}=internalData;const rowOpts=computeRowOpts.value;const cellOpts=computeCellOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);if(bodyScrollElem){const clientHeight=bodyScrollElem.clientHeight;let scrollTop=bodyScrollElem.scrollTop;if(isScrollYBig){scrollTop=Math.ceil((scrollYHeight-clientHeight)*Math.min(1,scrollTop/(maxYHeight-clientHeight)));}const startTop=scrollTop;const endTop=scrollTop+clientHeight;let toVisibleIndex=-1;let visibleSize=0;const isCustomCellHeight=isResizeCellHeight||cellOpts.height||rowOpts.height;if(!isCustomCellHeight&&!expandColumn&&isAllOverflow){toVisibleIndex=Math.floor(startTop/defaultRowHeight)-1;visibleSize=Math.ceil(clientHeight/defaultRowHeight)+1;}else{const{handleGetRowId}=createHandleGetRowId($xeTable);let leftIndex=0;let rightIndex=afterFullData.length;while(leftIndex<rightIndex){const rIndex=Math.floor((leftIndex+rightIndex)/2);const row=afterFullData[rIndex];const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid]||{};if(rowRest.oTop<=startTop){leftIndex=rIndex+1;}else{rightIndex=rIndex;}}toVisibleIndex=leftIndex===afterFullData.length?leftIndex:Math.max(0,leftIndex<afterFullData.length?leftIndex-2:0);for(let rIndex=toVisibleIndex,rLen=afterFullData.length;rIndex<rLen;rIndex++){const row=afterFullData[rIndex];const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid]||{};visibleSize++;if(rowRest.oTop>endTop||visibleSize>=100){break;}}}return{toVisibleIndex:Math.max(0,toVisibleIndex),visibleSize:Math.max(6,visibleSize)};}return{toVisibleIndex:0,visibleSize:6};};const calculateMergerOffsetIndex=(list,mergeMaps,offsetItem,type)=>{const mKey=`${offsetItem.startIndex}:${offsetItem.endIndex}`;const mObj=mergeMaps[mKey];// 缓存
if(mObj){offsetItem.startIndex=mObj.startIndex;offsetItem.endIndex=mObj.endIndex;}else{for(let mcIndex=0,len=list.length;mcIndex<len;mcIndex++){const mergeItem=list[mcIndex];const{startIndex,endIndex}=offsetItem;const mergeStartIndex=mergeItem[type];const mergeSpanNumber=mergeItem[type+'span'];const mergeEndIndex=mergeStartIndex+mergeSpanNumber;if(mergeStartIndex<startIndex&&startIndex<mergeEndIndex){offsetItem.startIndex=mergeStartIndex;}if(mergeStartIndex<endIndex&&endIndex<mergeEndIndex){offsetItem.endIndex=mergeEndIndex;}if(offsetItem.startIndex!==startIndex||offsetItem.endIndex!==endIndex){mcIndex=-1;}}mergeMaps[mKey]=offsetItem;}};function buildMergeData(mergeConfigs){const mergeMaps={};const mergeRowMaps={};const mergeColMaps={};if(mergeConfigs&&mergeConfigs.length){for(let mIndex=0;mIndex<mergeConfigs.length;mIndex++){const{row:_rowIndex,col:_columnIndex,rowspan:mergeRowspan,colspan:mergeColspan}=mergeConfigs[mIndex];for(let i=0;i<mergeRowspan;i++){const currRIndex=_rowIndex+i;for(let j=0;j<mergeColspan;j++){const currCIndex=_columnIndex+j;mergeMaps[`${currRIndex}:${currCIndex}`]=!i&&!j?{rowspan:mergeRowspan,colspan:mergeColspan}:{rowspan:0,colspan:0};}}}}return{mergeMaps,mergeRowMaps,mergeColMaps};}const handleUpdateMergeBodyCells=merges=>{internalData.mergeBodyList=[];internalData.mergeBodyMaps={};internalData.mergeBodyCellMaps={};internalData.mergeBodyRowMaps={};internalData.mergeBodyColMaps={};$xeTable.setMergeCells(merges);};const handleBodyMerge=merges=>{const{fullAllDataRowIdData,fullColumnIdData,visibleColumn,afterFullData,mergeBodyList,mergeBodyMaps}=internalData;if(merges){const{handleGetRowId}=createHandleGetRowId($xeTable);if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(merges)){merges=[merges];}merges.forEach(item=>{let{row:margeRow,col:margeCol,rowspan,colspan}=item;let mergeRowIndex=-1;let mergeColumnIndex=-1;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow)){mergeRowIndex=margeRow;}else{const rowid=margeRow?handleGetRowId(margeRow):null;const rowRest=rowid?fullAllDataRowIdData[rowid]:null;if(rowRest){mergeRowIndex=rowRest._index;}}if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}if(mergeRowIndex>-1&&mergeColumnIndex>-1&&(rowspan||colspan)){rowspan=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(rowspan)||1;colspan=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(colspan)||1;if(rowspan>1||colspan>1){const row=afterFullData[mergeRowIndex];const column=visibleColumn[mergeColumnIndex];let mergeItem=mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];if(mergeItem){mergeItem.rowspan=rowspan;mergeItem.colspan=colspan;mergeItem._rowspan=rowspan;mergeItem._colspan=colspan;}else{mergeItem={row:mergeRowIndex,col:mergeColumnIndex,rowspan,colspan,_row:row,_col:column,_rowspan:rowspan,_colspan:colspan};mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]=mergeItem;mergeBodyList.push(mergeItem);}}}});}};const removeBodyMerges=merges=>{const{mergeBodyList,fullColumnIdData,fullAllDataRowIdData,mergeBodyMaps}=internalData;const rest=[];if(merges){const{handleGetRowId}=createHandleGetRowId($xeTable);if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(merges)){merges=[merges];}merges.forEach(item=>{const{row:margeRow,col:margeCol}=item;let mergeRowIndex=-1;let mergeColumnIndex=-1;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow)){mergeRowIndex=margeRow;}else{const rowid=margeRow?handleGetRowId(margeRow):null;const rowRest=rowid?fullAllDataRowIdData[rowid]:null;if(rowRest){mergeRowIndex=rowRest._index;}}if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}const mcIndex=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(mergeBodyList,item=>item.row===mergeRowIndex&&item.col===mergeColumnIndex);if(mcIndex>-1){const rItems=mergeBodyList.splice(mcIndex,1);const item=rItems[0];if(item){rest.push(rItems[0]);if(mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`]){delete mergeBodyMaps[`${mergeRowIndex}:${mergeColumnIndex}`];}}}});}return rest;};const handleUpdateMergeHeaderCells=merges=>{internalData.mergeHeaderList=[];internalData.mergeHeaderMaps={};internalData.mergeHeaderCellMaps={};internalData.mergeHeaderRowMaps={};internalData.mergeBodyColMaps={};$xeTable.setMergeHeaderCells(merges);};const handleHeaderMerge=merges=>{const{showCustomHeader}=props;const{footerTableData}=reactData;const{mergeHeaderList,mergeHeaderMaps,fullColumnIdData}=internalData;if(merges){const{visibleColumn}=internalData;if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(merges)){merges=[merges];}merges.forEach(item=>{let{row:margeRow,col:margeCol,rowspan,colspan}=item;const mergeRowIndex=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}if(mergeRowIndex>-1&&mergeColumnIndex>-1&&(rowspan||colspan)){rowspan=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(rowspan)||1;colspan=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(colspan)||1;if(!showCustomHeader&&rowspan>1){table_errLog('vxe.error.notSupportProp',['[table] show-custom-header=false',`rowspan=${rowspan}`,'rowspan=1']);return;}if(rowspan>1||colspan>1){const row=footerTableData[mergeRowIndex];const column=visibleColumn[mergeColumnIndex];let mergeItem=mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];if(mergeItem){mergeItem.rowspan=rowspan;mergeItem.colspan=colspan;mergeItem._rowspan=rowspan;mergeItem._colspan=colspan;}else{mergeItem={row:mergeRowIndex,col:mergeColumnIndex,rowspan,colspan,_row:row,_col:column,_rowspan:rowspan,_colspan:colspan};mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]=mergeItem;mergeHeaderList.push(mergeItem);}}}});}};const removeHeaderMerges=merges=>{const{mergeHeaderList,fullColumnIdData,mergeHeaderMaps}=internalData;const rest=[];if(merges){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(merges)){merges=[merges];}merges.forEach(item=>{const{row:margeRow,col:margeCol}=item;const mergeRowIndex=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}const mcIndex=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(mergeHeaderList,item=>item.row===mergeRowIndex&&item.col===mergeColumnIndex);if(mcIndex>-1){const rItems=mergeHeaderList.splice(mcIndex,1);const item=rItems[0];if(item){rest.push(item);if(mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`]){delete mergeHeaderMaps[`${mergeRowIndex}:${mergeColumnIndex}`];}}}});}return rest;};const handleUpdateMergeFooterCells=merges=>{internalData.mergeFooterList=[];internalData.mergeFooterMaps={};internalData.mergeFooterCellMaps={};internalData.mergeFooterRowMaps={};internalData.mergeFooterColMaps={};$xeTable.setMergeFooterCells(merges);};const handleFooterMerge=merges=>{const{footerTableData}=reactData;const{mergeFooterList,mergeFooterMaps,fullColumnIdData}=internalData;if(merges){const{visibleColumn}=internalData;if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(merges)){merges=[merges];}merges.forEach(item=>{let{row:margeRow,col:margeCol,rowspan,colspan}=item;const mergeRowIndex=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}if(mergeRowIndex>-1&&mergeColumnIndex>-1&&(rowspan||colspan)){rowspan=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(rowspan)||1;colspan=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(colspan)||1;if(rowspan>1||colspan>1){const row=footerTableData[mergeRowIndex];const column=visibleColumn[mergeColumnIndex];let mergeItem=mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];if(mergeItem){mergeItem.rowspan=rowspan;mergeItem.colspan=colspan;mergeItem._rowspan=rowspan;mergeItem._colspan=colspan;}else{mergeItem={row:mergeRowIndex,col:mergeColumnIndex,rowspan,colspan,_row:row,_col:column,_rowspan:rowspan,_colspan:colspan};mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`]=mergeItem;mergeFooterList.push(mergeItem);}}}});}};const removeFooterMerges=merges=>{const{mergeFooterList,fullColumnIdData,mergeFooterMaps}=internalData;const rest=[];if(merges){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(merges)){merges=[merges];}merges.forEach(item=>{const{row:margeRow,col:margeCol}=item;const mergeRowIndex=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeRow)?margeRow:-1;let mergeColumnIndex=-1;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(margeCol)){mergeColumnIndex=margeCol;}else{const colid=margeCol?margeCol.id:null;const colRest=colid?fullColumnIdData[colid]:null;if(colRest){mergeColumnIndex=colRest._index;}}const mcIndex=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(mergeFooterList,item=>item.row===mergeRowIndex&&item.col===mergeColumnIndex);if(mcIndex>-1){const rItems=mergeFooterList.splice(mcIndex,1);const item=rItems[0];if(item){rest.push(item);if(mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`]){delete mergeFooterMaps[`${mergeRowIndex}:${mergeColumnIndex}`];}}}});}return rest;};const handleSortEvent=(evnt,sortConfs,isUpdate)=>{const{tableFullColumn}=internalData;const sortOpts=computeSortOpts.value;const{multiple,remote,orders}=sortOpts;if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(sortConfs)){sortConfs=[sortConfs];}if(sortConfs&&sortConfs.length){const orderActiveMaps={};if(!multiple){sortConfs=[sortConfs[0]];tableFullColumn.forEach(column=>{if(column.order){orderActiveMaps[column.id]=column;}});}const sortColMpps={};let firstColumn=null;sortConfs.forEach((confs,index)=>{let{field,order}=confs;let column=field;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(field)){column=$xeTable.getColumnByField(field);}if(!firstColumn){firstColumn=column;}if(column&&column.sortable){if(orders&&orders.indexOf(order)===-1){order=getNextSortOrder(column);}if(column.order!==order){column.order=order;}column.sortTime=Date.now()+index;sortColMpps[column.id]=column;}});if(!multiple){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(orderActiveMaps,(oaCol,oaId)=>{if(!sortColMpps[oaId]){oaCol.order=null;}});}if(isUpdate){if(!remote){$xeTable.handleTableData(true);}}if(evnt){$xeTable.handleColumnSortEvent(evnt,firstColumn);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{updateRowOffsetTop();$xeTable.updateCellAreas();return updateStyle();});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();};const clearAllSort=()=>{const{tableFullColumn}=internalData;tableFullColumn.forEach(column=>{column.order=null;});};const calcTableHeight=key=>{const{editConfig,editRules}=props;const{parentHeight,tableColumn}=reactData;let val=props[key];if(key==='minHeight'){const defMinHeight=table_getConfig().table.minHeight;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(val)){if(eqEmptyValue(defMinHeight)){if(!tableColumn.length){// 如果全部列被隐藏
val=40;}else if(editRules&&isEnableConf(editConfig)){// 编辑模式默认最小高度
val=144;}}else{val=defMinHeight;}}}let num=0;if(val){if(val==='100%'||val==='auto'){num=parentHeight;}else{const excludeHeight=$xeTable.getExcludeHeight();if(isScale(val)){num=Math.floor((external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(val)||1)/100*parentHeight);}else{num=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(val);}num=Math.max(40,num-excludeHeight);}}return num;};const handleCustomRestore=storeData=>{const{aggregateConfig,rowGroupConfig}=props;const{collectColumn}=internalData;const{isCustomAlign,isCustomHeaderAlign,isCustomFooterAlign,isCustomResizable,isCustomVisible,isCustomFixed,isCustomSort,isCustomAggGroup,isCustomAggFunc,isCustomPager}=handleCustomStoreConfig($xeTable);let{alignData,headerAlignData,footerAlignData,resizableData,sortData,visibleData,fixedData,aggGroupData,aggFuncData,pagerData}=storeData;// 处理还原
if(isCustomAlign&&alignData||isCustomHeaderAlign&&headerAlignData||isCustomFooterAlign&&footerAlignData||isCustomResizable&&resizableData||isCustomSort&&sortData||isCustomVisible&&visibleData||isCustomFixed&&fixedData||isCustomAggGroup&&aggGroupData||isCustomAggFunc&&aggFuncData||isCustomPager&&pagerData&&$xeGGWrapper){const sortColMaps={};if(isCustomSort&&sortData){// 转换兼容老版本数据,即将废弃兼容
if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(sortData)){const sortRests=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(sortData,(index,colKey)=>{sortRests.push({key:colKey,index});});sortData=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(sortRests,{field:'index',order:'asc'}).map(item=>({k:item.key}));}let colNum=1;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(sortData,(sObj,index,sOjs,path,pSObj)=>{sortColMaps[sObj.k]={key:sObj.k,sNum:colNum++,pKey:pSObj?pSObj.k:null};},{children:'c'});}const colKeyMaps={};const allCols=[];const aggGroupConfs=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const colKey=column.getKey();// 支持一级
if(!parentColumn){if(isCustomFixed&&fixedData&&fixedData[colKey]!==undefined){column.fixed=fixedData[colKey];}}if(isCustomResizable&&resizableData&&external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(resizableData[colKey])){column.resizeWidth=resizableData[colKey];}if(isCustomVisible&&visibleData&&external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(visibleData[colKey])){column.visible=visibleData[colKey];}if(isCustomAggFunc&&aggFuncData&&(aggregateConfig||rowGroupConfig)&&aggFuncData[colKey]){column.aggFunc=aggFuncData[colKey];}if(isCustomAggGroup&&aggGroupData&&aggGroupData[colKey]){aggGroupConfs.push({field:column.field});}colKeyMaps[colKey]=column;allCols.push(column);});if((aggregateConfig||rowGroupConfig)&&aggGroupConfs.length){const groupRest=handleGroupData(internalData.tableFullData,aggGroupConfs);internalData.tableFullTreeData=[];internalData.tableFullGroupData=groupRest.treeData;reactData.isRowGroupStatus=true;reactData.rowGroupList=aggGroupConfs;$xeTable.cacheRowMap(false);}// 如果自定义了顺序
if(isCustomSort&&sortData){allCols.forEach(column=>{const colKey=column.getKey();const scItem=sortColMaps[colKey];if(scItem){const parentColumn=scItem.pKey?colKeyMaps[scItem.pKey]:null;column.parentId=parentColumn?parentColumn.id:null;column.renderSortNumber=scItem.sNum;}});const newCollectCols=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toArrayTree(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(allCols,'renderSortNumber'),{key:'id',parentKey:'parentId',children:'children'});internalData.collectColumn=newCollectCols;internalData.tableFullColumn=getColumnList(newCollectCols);reactData.updateColFlag++;}reactData.isCustomStatus=true;}else{reactData.isCustomStatus=false;}};/**
         * 还原自定义列操作状态
         */const restoreCustomStorage=()=>{const{customConfig}=props;const tableId=computeTableId.value;const customOpts=computeCustomOpts.value;const{storage,restoreStore}=customOpts;const{isCustomAlign,isCustomHeaderAlign,isCustomFooterAlign,isCustomResizable,isCustomVisible,isCustomFixed,isCustomSort,isCustomAggGroup,isCustomAggFunc}=handleCustomStoreConfig($xeTable);if(storage&&(customConfig?isEnableConf(customOpts):customOpts.enabled)&&(isCustomAlign||isCustomHeaderAlign||isCustomFooterAlign||isCustomResizable||isCustomVisible||isCustomFixed||isCustomSort||isCustomAggGroup||isCustomAggFunc)){if(!tableId){table_errLog('vxe.error.reqProp',['id']);return;}const storeData=getCustomStorageMap(tableId);if(restoreStore){return Promise.resolve(restoreStore({$table:$xeTable,id:tableId,type:'restore',storeData})).then(storeData=>{if(!storeData){return;}return handleCustomRestore(storeData);}).catch(e=>e);}else{return handleCustomRestore(storeData);}}};const updateColumnAllOverflow=()=>{const{showOverflow}=props;const{isGroup}=reactData;const{fullAllDataRowIdData,tableFullColumn,collectColumn}=internalData;let isAllOverflow=!!showOverflow;const handleFunc=column=>{if(isAllOverflow&&column.showOverflow===false){isAllOverflow=false;}};if(isGroup){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn,handleFunc);}else{tableFullColumn.forEach(handleFunc);}external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(fullAllDataRowIdData,rowRest=>{rowRest.height=0;});reactData.isAllOverflow=isAllOverflow;};/**
         * 更新数据列的 Map
         * 牺牲数据组装的耗时,用来换取使用过程中的流畅
         */const cacheColumnMap=()=>{const{treeConfig,showOverflow}=props;const{tableFullColumn,collectColumn}=internalData;const fullColIdData=internalData.fullColumnIdData={};const fullColFieldData=internalData.fullColumnFieldData={};const mouseOpts=computeMouseOpts.value;const expandOpts=computeExpandOpts.value;const columnOpts=computeColumnOpts.value;const columnDragOpts=computeColumnDragOpts.value;const virtualYOpts=computeVirtualYOpts.value;const{isCrossDrag,isSelfToChildDrag}=columnDragOpts;const customOpts=computeCustomOpts.value;const treeOpts=computeTreeOpts.value;const{storage}=customOpts;const rowOpts=computeRowOpts.value;const isGroup=collectColumn.some(hasChildrenList);let isAllOverflow=!!showOverflow;let rowGroupColumn;let expandColumn;let treeNodeColumn;let checkboxColumn;let radioColumn;let htmlColumn;let hasFixed;const handleFunc=(column,index,items,path,parentColumn)=>{const{id:colid,field,fixed,type,treeNode,rowGroupNode}=column;const rest={$index:-1,_index:-1,column,colid,index,items,parent:parentColumn||null,width:0,oLeft:0};if(field){if(fullColFieldData[field]){table_errLog('vxe.error.colRepet',['field',field]);}fullColFieldData[field]=rest;}else{if(storage&&!type){table_errLog('vxe.error.reqSupportProp',['storage',`[${type?`type=${type}`:`title=${column.getTitle()}`}]field=?`]);}if(columnOpts.drag&&(isCrossDrag||isSelfToChildDrag)){table_errLog('vxe.error.reqSupportProp',['column-drag-config.isCrossDrag | column-drag-config.isSelfToChildDrag',`${column.getTitle()||type||''} -> field=?`]);}}if(!hasFixed&&fixed){hasFixed=fixed;}if(!htmlColumn&&type==='html'){htmlColumn=column;}if(treeNode){if(treeNodeColumn){table_warnLog('vxe.error.colRepet',['tree-node',treeNode]);}if(!treeNodeColumn){treeNodeColumn=column;}}if(rowGroupNode){if(treeNodeColumn){table_warnLog('vxe.error.colRepet',['row-group-node',rowGroupNode]);}if(!rowGroupColumn){rowGroupColumn=column;}}if(type==='expand'){if(expandColumn){table_warnLog('vxe.error.colRepet',['type',type]);}if(!expandColumn){expandColumn=column;}}if(type==='checkbox'){if(checkboxColumn){table_warnLog('vxe.error.colRepet',['type',type]);}if(!checkboxColumn){checkboxColumn=column;}}else if(type==='radio'){if(radioColumn){table_warnLog('vxe.error.colRepet',['type',type]);}if(!radioColumn){radioColumn=column;}}if(isAllOverflow&&column.showOverflow===false){isAllOverflow=false;}if(fullColIdData[colid]){table_errLog('vxe.error.colRepet',['colId',colid]);}fullColIdData[colid]=rest;};if(isGroup){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn,(column,index,items,path,parentColumn,nodes)=>{column.level=nodes.length;handleFunc(column,index,items,path,parentColumn);});}else{tableFullColumn.forEach(handleFunc);}if(expandColumn){if(expandOpts.mode!=='fixed'&&virtualYOpts.enabled){table_warnLog('vxe.error.notConflictProp',['column.type="expand','virtual-y-config.enabled=false']);}if(expandOpts.mode!=='fixed'&&mouseOpts.area){table_errLog('vxe.error.errConflicts',['mouse-config.area','column.type=expand']);}if(expandOpts.mode!=='inside'&&treeConfig&&!treeOpts.transform){table_errLog('vxe.error.notConflictProp',['tree-config.transform=false','expand-config.mode=inside']);}// if (props.spanMethod) {
//   warnLog('vxe.error.notSupportProp', ['column.type=expand', 'span-method', 'span-method=null'])
// }
}if(htmlColumn){if(!columnOpts.useKey){table_errLog('vxe.error.notSupportProp',['column.type=html','column-config.useKey=false','column-config.useKey=true']);}if(!rowOpts.useKey){table_errLog('vxe.error.notSupportProp',['column.type=html','row-config.useKey=false','row-config.useKey=true']);}}reactData.isGroup=isGroup;reactData.rowGroupColumn=rowGroupColumn;reactData.treeNodeColumn=treeNodeColumn;reactData.expandColumn=expandColumn;reactData.checkboxColumn=checkboxColumn;reactData.radioColumn=radioColumn;reactData.isAllOverflow=isAllOverflow;};const updateHeight=()=>{internalData.customHeight=calcTableHeight('height');internalData.customMinHeight=calcTableHeight('minHeight');internalData.customMaxHeight=calcTableHeight('maxHeight');// 如果启用虚拟滚动,纠正高度
if(reactData.scrollYLoad&&!(internalData.customHeight||internalData.customMinHeight||internalData.customMaxHeight)){internalData.customHeight=300;}};/**
         * 计算自适应列宽
         */const calcColumnAutoWidth=(column,wrapperEl)=>{const{scrollYLoad}=reactData;const columnOpts=computeColumnOpts.value;const{autoOptions}=columnOpts;const{isCalcHeader,isCalcBody,isCalcFooter}=autoOptions||{};const querySelections=[];if(isCalcHeader){querySelections.push(`.vxe-header-cell--wrapper[colid="${column.id}"]`);}if(isCalcBody){querySelections.push(`.vxe-body-cell--wrapper[colid="${column.id}"]`);}if(isCalcFooter){querySelections.push(`.vxe-footer-cell--wrapper[colid="${column.id}"]`);}const cellElemList=querySelections.length?wrapperEl.querySelectorAll(querySelections.join(',')):[];let leftRightPadding=0;const firstCellEl=cellElemList[0];if(firstCellEl&&firstCellEl.parentElement){const cellStyle=getComputedStyle(firstCellEl.parentElement);leftRightPadding=Math.ceil(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellStyle.paddingLeft)+external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellStyle.paddingRight));}let colWidth=(scrollYLoad?column.renderAutoWidth:0)-leftRightPadding;for(let i=0;i<cellElemList.length;i++){const celEl=cellElemList[i];colWidth=Math.max(colWidth,celEl?Math.ceil(celEl.scrollWidth)+4:0);}return colWidth+leftRightPadding;};/**
         * 自适应列宽
         */const calcCellWidth=()=>{const autoWidthColumnList=computeAutoWidthColumnList.value;const{fullColumnIdData}=internalData;const el=refElem.value;if(el&&autoWidthColumnList.length){el.setAttribute('data-calc-col','Y');autoWidthColumnList.forEach(column=>{const colid=column.id;const colRest=fullColumnIdData[colid];const colWidth=calcColumnAutoWidth(column,el);if(colRest){colRest.width=Math.max(colWidth,colRest.width);}column.renderAutoWidth=colWidth;});$xeTable.analyColumnWidth();el.removeAttribute('data-calc-col');}};/**
         * 列宽算法,计算单元格列宽,动态分配可用剩余空间
         * 支持 px、%、固定 混合分配
         * 支持动态列表调整分配
         * 支持自动分配偏移量
         * 支持 width=60 width=60px width=10% min-width=60 min-width=60px min-width=10%
         */const autoCellWidth=()=>{const{elemStore}=internalData;const bodyWrapperElem=getRefElem(elemStore['main-body-wrapper']);if(!bodyWrapperElem){return;}const yHandleEl=refScrollYHandleElem.value;if(!yHandleEl){return;}const xHandleEl=refScrollXHandleElem.value;if(!xHandleEl){return;}const columnOpts=computeColumnOpts.value;let tWidth=0;const minCellWidth=40;// 列宽最少限制 40px
const bodyWidth=bodyWrapperElem.clientWidth;let remainWidth=bodyWidth;let meanWidth=remainWidth/100;const{fit}=props;const{columnStore}=reactData;const{resizeList,pxMinList,autoMinList,pxList,scaleList,scaleMinList,autoList,remainList}=columnStore;const parseColumnMaxWidth=column=>{const maxWidth=column.maxWidth||columnOpts.maxWidth;if(maxWidth&&maxWidth!=='auto'){if(isScale(maxWidth)){return Math.floor(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(maxWidth)*meanWidth);}return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(maxWidth);}return 0;};// 最小宽
pxMinList.forEach(column=>{let miWidth=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(column.minWidth);const mxWidth=parseColumnMaxWidth(column);if(mxWidth){miWidth=Math.min(miWidth,mxWidth);}tWidth+=miWidth;column.renderWidth=miWidth;});// 最小自适应
autoMinList.forEach(column=>{let caWidth=Math.max(60,external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(column.renderAutoWidth));const mxWidth=parseColumnMaxWidth(column);if(mxWidth){caWidth=Math.min(caWidth,mxWidth);}tWidth+=caWidth;column.renderWidth=caWidth;});// 最小百分比
scaleMinList.forEach(column=>{let smWidth=Math.floor(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(column.minWidth)*meanWidth);const mxWidth=parseColumnMaxWidth(column);if(mxWidth){smWidth=Math.min(smWidth,mxWidth);}tWidth+=smWidth;column.renderWidth=smWidth;});// 固定百分比
scaleList.forEach(column=>{let sfWidth=Math.floor(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(column.width)*meanWidth);const mxWidth=parseColumnMaxWidth(column);if(mxWidth){sfWidth=Math.min(sfWidth,mxWidth);}tWidth+=sfWidth;column.renderWidth=sfWidth;});// 固定宽
pxList.forEach(column=>{let pWidth=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(column.width);const mxWidth=parseColumnMaxWidth(column);if(mxWidth){pWidth=Math.min(pWidth,mxWidth);}tWidth+=pWidth;column.renderWidth=pWidth;});// 自适应宽
autoList.forEach(column=>{let aWidth=Math.max(60,external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(column.renderAutoWidth));const mxWidth=parseColumnMaxWidth(column);if(mxWidth){aWidth=Math.min(aWidth,mxWidth);}tWidth+=aWidth;column.renderWidth=aWidth;});// 调整了列宽
resizeList.forEach(column=>{const reWidth=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(column.resizeWidth);tWidth+=reWidth;column.renderWidth=reWidth;});const zoomColumnList=scaleMinList.concat(pxMinList).concat(autoMinList).filter(column=>!parseColumnMaxWidth(column));remainWidth-=tWidth;meanWidth=remainWidth>0?Math.floor(remainWidth/(zoomColumnList.length+remainList.length)):0;if(fit){if(remainWidth>0){zoomColumnList.forEach(column=>{tWidth+=meanWidth;column.renderWidth+=meanWidth;});}}else{meanWidth=minCellWidth;}// 剩余均分
remainList.forEach(column=>{const width=Math.max(meanWidth,minCellWidth);column.renderWidth=width;tWidth+=width;});if(fit){/**
                 * 偏移量算法
                 * 如果所有列足够放的情况下,从最后动态列开始分配
                 * 排除已设置 max-width
                 */const dynamicList=scaleList.concat(scaleMinList).concat(pxMinList).concat(autoMinList).concat(remainList).filter(column=>!parseColumnMaxWidth(column));let dynamicSize=dynamicList.length-1;if(dynamicSize>0){let i=bodyWidth-tWidth;if(i>0){while(i>0&&dynamicSize>=0){i--;dynamicList[dynamicSize--].renderWidth++;}tWidth=bodyWidth;}}}reactData.scrollXWidth=tWidth;reactData.resizeWidthFlag++;updateColumnOffsetLeft();updateHeight();};/**
         * 计算自适应行高
         */const calcCellAutoHeight=(rowid,rowRest,wrapperEl)=>{const{fullCellHeightMaps}=internalData;let chRest=fullCellHeightMaps[rowid];if(!chRest){chRest={};fullCellHeightMaps[rowid]=chRest;}const wrapperElemList=wrapperEl.querySelectorAll(`.vxe-cell--wrapper[rowid="${rowRest.rowid}"]`);let firstCellStyle=null;let topBottomPadding=0;let changeCH=false;for(let i=0;i<wrapperElemList.length;i++){const wrapperElem=wrapperElemList[i];const cellElem=wrapperElem.parentElement;const cellStyle=cellElem.style;const orHeight=cellStyle.height;const colid=wrapperElem.getAttribute('colid')||'';cellStyle.height='';if(!firstCellStyle){firstCellStyle=getComputedStyle(cellElem);topBottomPadding=firstCellStyle?Math.ceil(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(firstCellStyle.paddingTop)+external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(firstCellStyle.paddingBottom)):0;}const cellHeight=wrapperElem?wrapperElem.clientHeight:0;const colHeight=Math.ceil(cellHeight+topBottomPadding);if(chRest[colid]!==colHeight){changeCH=true;chRest[colid]=colHeight;}cellStyle.height=orHeight;}const cellMaxHeight=getRowMaxHeight(chRest,changeCH);return cellMaxHeight;};/**
         * 自适应行高
         */const calcCellHeight=()=>{const{treeConfig}=props;const{tableData,isAllOverflow,scrollYLoad,scrollXLoad}=reactData;const{fullAllDataRowIdData}=internalData;const el=refElem.value;if(!el||!el.clientWidth){return;}const treeOpts=computeTreeOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;if(!isAllOverflow&&(scrollYLoad||scrollXLoad||treeConfig&&treeOpts.showLine)){const{handleGetRowId}=createHandleGetRowId($xeTable);el.setAttribute('data-calc-row','Y');tableData.forEach(row=>{const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const reHeight=calcCellAutoHeight(rowid,rowRest,el);rowRest.height=Math.max(defaultRowHeight,reHeight);}el.removeAttribute('data-calc-row');});reactData.calcCellHeightFlag++;}};const getOrderField=column=>{const{isRowGroupStatus}=reactData;const{sortBy,sortType,aggFunc}=column;return isRowGroupStatus&&aggFunc?row=>{if(row.isAggregate){const aggData=row.aggData;const currAggData=aggData?aggData[column.field]:null;return currAggData?currAggData.value:null;}let cellValue;if(sortBy){cellValue=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(sortBy)?sortBy({row,column}):external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,sortBy);}else{cellValue=$xeTable.getCellLabel(row,column);}if(!sortType||sortType==='auto'){return eqEmptyValue(cellValue)||isNaN(cellValue)?cellValue:external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellValue);}else if(sortType==='number'){return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellValue);}else if(sortType==='string'){return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toValueString(cellValue);}return cellValue;}:row=>{let cellValue;if(sortBy){cellValue=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(sortBy)?sortBy({row,column}):external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,sortBy);}else{cellValue=$xeTable.getCellLabel(row,column);}if(!sortType||sortType==='auto'){return eqEmptyValue(cellValue)||isNaN(cellValue)?cellValue:external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellValue);}else if(sortType==='number'){return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellValue);}else if(sortType==='string'){return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toValueString(cellValue);}return cellValue;};};const updateAfterTreeIndex=()=>{const{fullDataRowIdData,fullAllDataRowIdData,afterFullData,afterTreeFullData}=internalData;const treeOpts=computeTreeOpts.value;const{transform,mapChildrenField}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const fullMaps={};let rowNum=0;const{handleGetRowId}=createHandleGetRowId($xeTable);external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterTreeFullData,(row,index,items,path,parentRow)=>{const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid];const seq=path.map((num,i)=>i%2===0?Number(num)+1:'.').join('');if(rowRest){rowRest.seq=seq;rowRest._seq=rowNum;rowRest.treeIndex=index;rowRest._index=rowNum;rowRest._tIndex=rowNum;}else{const rest={row,rowid,_seq:rowNum,seq,index,$index:-1,_index:rowNum,treeIndex:index,_tIndex:rowNum,items,parent:parentRow,level:0,height:0,resizeHeight:0,oTop:0,expandHeight:0};fullAllDataRowIdData[rowid]=rest;fullDataRowIdData[rowid]=rest;}rowNum++;fullMaps[rowid]=row;},{children:transform?mapChildrenField:childrenField});if(transform){afterFullData.forEach((row,index)=>{const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){rowRest._index=index;}});}internalData.afterFullRowMaps=fullMaps;};const updateAfterListIndex=()=>{const{afterFullData,fullDataRowIdData,fullAllDataRowIdData}=internalData;const{handleGetRowId}=createHandleGetRowId($xeTable);const fullMaps={};let rowNum=0;afterFullData.forEach((row,index)=>{const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid];const seq=index+1;if(rowRest){rowRest.seq=seq;rowRest._seq=rowNum;rowRest._index=index;}else{const rest={row,rowid,_seq:rowNum,seq,index:-1,$index:-1,_index:index,treeIndex:-1,_tIndex:-1,items:[],parent:null,level:0,height:0,resizeHeight:0,oTop:0,expandHeight:0};fullAllDataRowIdData[rowid]=rest;fullDataRowIdData[rowid]=rest;}rowNum++;fullMaps[rowid]=row;});internalData.afterFullRowMaps=fullMaps;};/**
         * 预编译
         * 对渲染中的数据提前解析序号及索引。牺牲提前编译耗时换取渲染中额外损耗,使运行时更加流畅
         */const updateAfterDataIndex=()=>{const{treeConfig}=props;if(treeConfig){updateAfterTreeIndex();}else{updateAfterListIndex();}};/**
         * 如果为虚拟树、行分组、则将树结构拍平
         * @returns
         */const handleVirtualTreeToList=()=>{const{treeConfig}=props;const{isRowGroupStatus}=reactData;const{fullAllDataRowIdData,treeExpandedMaps,rowGroupExpandedMaps}=internalData;const aggregateOpts=computeAggregateOpts.value;const treeOpts=computeTreeOpts.value;const{handleGetRowId}=createHandleGetRowId($xeTable);const fullData=[];const expandMaps={};if(treeConfig&&treeOpts.transform){const childrenField=treeOpts.children||treeOpts.childrenField;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(internalData.afterTreeFullData,(row,index,items,path,parentRow)=>{const rowid=handleGetRowId(row);const parentRowid=handleGetRowId(parentRow);if(!parentRow||expandMaps[parentRowid]&&treeExpandedMaps[parentRowid]){const rowRest=fullAllDataRowIdData[rowid];if(rowRest){rowRest._index=fullData.length;}expandMaps[rowid]=1;fullData.push(row);}},{children:childrenField});internalData.afterFullData=fullData;updateScrollYStatus(fullData);return fullData;}else if(isRowGroupStatus){const{childrenField}=aggregateOpts;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(internalData.afterGroupFullData,(row,index,items,path,parentRow)=>{const rowid=handleGetRowId(row);const parentRowid=handleGetRowId(parentRow);if(!parentRow||expandMaps[parentRowid]&&rowGroupExpandedMaps[parentRowid]){const rowRest=fullAllDataRowIdData[rowid];if(rowRest){rowRest._index=fullData.length;}expandMaps[rowid]=1;fullData.push(row);}},{children:childrenField});internalData.afterFullData=fullData;updateScrollYStatus(fullData);return fullData;}return internalData.afterFullData;};/**
         * 编译处理后全量的表格数据
         * 如果存在筛选条件,继续处理
         */const updateAfterFullData=()=>{const{treeConfig}=props;const{isRowGroupStatus}=reactData;const{tableFullColumn,tableFullData,tableFullTreeData,tableFullGroupData}=internalData;const filterOpts=computeFilterOpts.value;const sortOpts=computeSortOpts.value;const aggregateOpts=computeAggregateOpts.value;const treeOpts=computeTreeOpts.value;const childrenField=treeOpts.children||treeOpts.childrenField;const{transform,rowField,parentField,mapChildrenField}=treeOpts;const{isEvery,remote:allRemoteFilter,filterMethod:allFilterMethod,isDeep:isFilterDeep}=filterOpts;const{remote:allRemoteSort,sortMethod:allSortMethod,multiple:sortMultiple,chronological,isDeep:isSortDeep}=sortOpts;let tableData=[];let tableTree=[];// 处理数据
if(!allRemoteFilter||!allRemoteSort){const filterColumns=[];let orderColumns=[];tableFullColumn.forEach(column=>{const{field,sortable,order,filters}=column;if(!allRemoteFilter&&filters&&filters.length){const valueList=[];const itemList=[];filters.forEach(item=>{if(item.checked){itemList.push(item);valueList.push(item.value);}});if(itemList.length){filterColumns.push({column,valueList,itemList});}}if(!allRemoteSort&&sortable&&order){orderColumns.push({column,field,property:field,order:order,sortTime:column.sortTime});}});if(sortMultiple&&chronological&&orderColumns.length>1){orderColumns=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(orderColumns,'sortTime');}// 处理筛选
// 支持单列、多列、组合筛选
if(!allRemoteFilter&&filterColumns.length){const handleFilter=row=>{return filterColumns.every(({column,valueList,itemList})=>{const{filterMethod,filterRender}=column;const compConf=isEnableConf(filterRender)?table_renderer.get(filterRender.name):null;const compFilterMethod=compConf?compConf.tableFilterMethod||compConf.filterMethod:null;const tdFilterMethod=compConf?compConf.tableFilterDefaultMethod||compConf.defaultTableFilterMethod||compConf.defaultFilterMethod:null;const cellValue=getCellValue(row,column);if(filterMethod){return itemList.some(item=>filterMethod({value:item.value,option:item,cellValue,row,column,$table:$xeTable}));}else if(compFilterMethod){return itemList.some(item=>compFilterMethod({value:item.value,option:item,cellValue,row,column,$table:$xeTable}));}else if(allFilterMethod){return allFilterMethod({$table:$xeTable,options:itemList,values:valueList,cellValue,row,column});}else if(tdFilterMethod){return itemList.some(item=>tdFilterMethod({value:item.value,option:item,cellValue,row,column,$table:$xeTable}));}return valueList.indexOf(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,column.field))>-1;});};if(isRowGroupStatus){// 行分组
tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(tableFullGroupData,handleFilter,{original:true,isEvery:true,children:aggregateOpts.mapChildrenField,mapChildren:aggregateOpts.childrenField});tableData=tableTree;}else if(treeConfig&&transform&&isFilterDeep!==false){// 筛选虚拟树
tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(tableFullTreeData,handleFilter,{original:true,isEvery,children:mapChildrenField,mapChildren:childrenField});tableData=tableTree;}else{tableData=treeConfig?tableFullTreeData.filter(handleFilter):tableFullData.filter(handleFilter);tableTree=tableData;}}else{if(isRowGroupStatus){// 还原行分组
tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(tableFullGroupData,()=>true,{original:true,isEvery:true,children:aggregateOpts.mapChildrenField,mapChildren:aggregateOpts.childrenField});tableData=tableTree;}else if(treeConfig&&transform&&isFilterDeep!==false){// 还原虚拟树
tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(tableFullTreeData,()=>true,{original:true,isEvery,children:mapChildrenField,mapChildren:childrenField});tableData=tableTree;}else{tableData=treeConfig?tableFullTreeData.slice(0):tableFullData.slice(0);tableTree=tableData;}}// 处理排序
// 支持单列、多列、组合排序
if(!allRemoteSort&&orderColumns.length){if(isRowGroupStatus){// 行分组的排序
if(allSortMethod){const sortRests=allSortMethod({data:tableTree,sortList:orderColumns,$table:$xeTable});tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(sortRests)?sortRests:tableTree;}else{const treeList=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toTreeArray(tableTree,{key:aggregateOpts.rowField,parentKey:aggregateOpts.parentField,children:aggregateOpts.mapChildrenField});tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toArrayTree(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(treeList,orderColumns.map(({column,order})=>[getOrderField(column),order])),{key:aggregateOpts.rowField,parentKey:aggregateOpts.parentField,children:aggregateOpts.childrenField,mapChildren:aggregateOpts.mapChildrenField});}tableData=tableTree;}else if(treeConfig&&transform&&isSortDeep!==false){// 虚拟树的排序
if(allSortMethod){const sortRests=allSortMethod({data:tableTree,sortList:orderColumns,$table:$xeTable});tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(sortRests)?sortRests:tableTree;}else{const treeList=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toTreeArray(tableTree,{children:mapChildrenField});tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toArrayTree(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(treeList,orderColumns.map(({column,order})=>[getOrderField(column),order])),{key:rowField,parentKey:parentField,children:childrenField,mapChildren:mapChildrenField});}tableData=tableTree;}else{if(allSortMethod){const sortRests=allSortMethod({data:tableData,sortList:orderColumns,$table:$xeTable});tableData=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(sortRests)?sortRests:tableData;}else{tableData=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(tableData,orderColumns.map(({column,order})=>[getOrderField(column),order]));}tableTree=tableData;}}}else{if(isRowGroupStatus){// 还原行分组
// 还原虚拟树
tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(tableFullGroupData,()=>true,{original:true,isEvery:true,children:aggregateOpts.mapChildrenField,mapChildren:aggregateOpts.childrenField});tableData=tableTree;}else if(treeConfig&&transform&&isSortDeep!==false){// 还原虚拟树
tableTree=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().searchTree(tableFullTreeData,()=>true,{original:true,isEvery,children:mapChildrenField,mapChildren:childrenField});tableData=tableTree;}else{tableData=treeConfig?tableFullTreeData.slice(0):tableFullData.slice(0);tableTree=tableData;}}internalData.afterFullData=tableData;internalData.afterTreeFullData=tableTree;internalData.afterGroupFullData=tableTree;updateAfterDataIndex();};const updateStyle=()=>{const{mouseConfig}=props;const{isGroup,tableColumn,overflowX,scrollbarWidth,overflowY,scrollbarHeight,scrollXWidth,columnStore,editStore,isColLoading}=reactData;const{visibleColumn,tableHeight,elemStore,currentRow,customHeight,customMinHeight,customMaxHeight,tHeaderHeight,tFooterHeight}=internalData;const $xeGanttView=internalData.xeGanttView;const el=refElem.value;if(!el||internalData.tBodyHeight&&!el.clientHeight){return;}const containerList=['main','left','right'];const{leftList,rightList}=columnStore;let osbWidth=overflowY?scrollbarWidth:0;let osbHeight=overflowX?scrollbarHeight:0;const emptyPlaceholderElem=refEmptyPlaceholder.value;const isHeaderRenderOptimize=computeIsHeaderRenderOptimize.value;const isBodyRenderOptimize=computeIsBodyRenderOptimize.value;const isFooterRenderOptimize=computeIsFooterRenderOptimize.value;const scrollbarOpts=computeScrollbarOpts.value;const mouseOpts=computeMouseOpts.value;const bodyWrapperElem=getRefElem(elemStore['main-body-wrapper']);const bodyTableElem=getRefElem(elemStore['main-body-table']);if(emptyPlaceholderElem){emptyPlaceholderElem.style.top=`${tHeaderHeight}px`;emptyPlaceholderElem.style.height=bodyWrapperElem?`${bodyWrapperElem.offsetHeight-osbHeight}px`:'';}const scrollbarXConf=scrollbarOpts.x||{};const scrollbarYConf=scrollbarOpts.y||{};const scrollbarYToLeft=computeScrollbarYToLeft.value;let xScrollbarVisible=overflowX?'visible':'hidden';if(scrollbarXConf.visible==='visible'||$xeGanttView){osbHeight=scrollbarHeight;xScrollbarVisible='visible';}else if(scrollbarXConf.visible==='hidden'||scrollbarXConf.visible===false){osbHeight=0;xScrollbarVisible='hidden';}let yScrollbarVisible=overflowY?'visible':'hidden';if(scrollbarYConf.visible==='hidden'||scrollbarYConf.visible===false||$xeGantt&&$xeGanttView&&$xeGantt.reactData.showRightView&&!scrollbarYToLeft){osbWidth=0;yScrollbarVisible='hidden';}else if(scrollbarYConf.visible==='visible'){osbWidth=scrollbarWidth;yScrollbarVisible='visible';}let tbHeight=0;let bodyMaxHeight=0;const bodyMinHeight=customMinHeight-tHeaderHeight-tFooterHeight-osbHeight;if(customMaxHeight){bodyMaxHeight=Math.max(bodyMinHeight,customMaxHeight-tHeaderHeight-tFooterHeight-osbHeight);}if(customHeight){tbHeight=customHeight-tHeaderHeight-tFooterHeight-osbHeight;}if(!tbHeight){if(bodyTableElem){tbHeight=bodyTableElem.clientHeight;}}if(tbHeight){if(bodyMaxHeight){tbHeight=Math.min(bodyMaxHeight,tbHeight);}tbHeight=Math.max(bodyMinHeight,tbHeight);}const xLeftCornerEl=refScrollXLeftCornerElem.value;const xRightCornerEl=refScrollXRightCornerElem.value;const scrollXVirtualEl=refScrollXVirtualElem.value;if(scrollXVirtualEl){scrollXVirtualEl.style.height=`${osbHeight}px`;scrollXVirtualEl.style.visibility=xScrollbarVisible;}const xWrapperEl=refScrollXWrapperElem.value;if(xWrapperEl){xWrapperEl.style.width=`${el.clientWidth-osbWidth}px`;if(scrollbarYToLeft){xWrapperEl.style.left=`${osbWidth}px`;}else{xWrapperEl.style.left='';}}if(xLeftCornerEl){if(scrollbarYToLeft){xLeftCornerEl.style.width=`${osbWidth}px`;xLeftCornerEl.style.display=overflowY&&osbWidth?'block':'';}else{xLeftCornerEl.style.display='';}}if(xRightCornerEl){if(scrollbarYToLeft){xRightCornerEl.style.display='';}else{xRightCornerEl.style.width=`${osbWidth}px`;xRightCornerEl.style.display=xScrollbarVisible==='visible'?'block':'';}}const scrollYVirtualEl=refScrollYVirtualElem.value;if(scrollYVirtualEl){scrollYVirtualEl.style.width=`${osbWidth}px`;scrollYVirtualEl.style.height=`${tbHeight+tHeaderHeight+tFooterHeight}px`;scrollYVirtualEl.style.visibility=yScrollbarVisible;}const yTopCornerEl=refScrollYTopCornerElem.value;if(yTopCornerEl){yTopCornerEl.style.height=`${tHeaderHeight}px`;yTopCornerEl.style.display=tHeaderHeight&&yScrollbarVisible==='visible'?'block':'';}const yWrapperEl=refScrollYWrapperElem.value;if(yWrapperEl){yWrapperEl.style.height=`${tbHeight}px`;yWrapperEl.style.top=`${tHeaderHeight}px`;}const yBottomCornerEl=refScrollYBottomCornerElem.value;if(yBottomCornerEl){yBottomCornerEl.style.height=`${tFooterHeight}px`;yBottomCornerEl.style.top=`${tHeaderHeight+tbHeight}px`;yBottomCornerEl.style.display=tFooterHeight&&yScrollbarVisible==='visible'?'block':'';}const rowExpandEl=refRowExpandElem.value;if(rowExpandEl){rowExpandEl.style.height=`${tbHeight}px`;rowExpandEl.style.top=`${tHeaderHeight}px`;}internalData.tBodyHeight=tbHeight;containerList.forEach((name,index)=>{const fixedType=index>0?name:'';const layoutList=['header','body','footer'];const isFixedLeft=fixedType==='left';let fixedColumn=[];let fixedWrapperElem;if(fixedType){fixedColumn=isFixedLeft?leftList:rightList;fixedWrapperElem=isFixedLeft?refLeftContainer.value:refRightContainer.value;}layoutList.forEach(layout=>{const wrapperElem=getRefElem(elemStore[`${name}-${layout}-wrapper`]);const currScrollElem=getRefElem(elemStore[`${name}-${layout}-scroll`]);const tableElem=getRefElem(elemStore[`${name}-${layout}-table`]);if(layout==='header'){// 表头体样式处理
// 横向滚动渲染
let renderColumnList=tableColumn;const isOptimizeMode=isHeaderRenderOptimize;if(isGroup){renderColumnList=visibleColumn;}else{if(!isOptimizeMode||!isColLoading&&(fixedType||!overflowX)){renderColumnList=visibleColumn;}if(fixedType){// 如果是使用优化模式
if(isOptimizeMode){renderColumnList=fixedColumn||[];}}}const tWidth=renderColumnList.reduce((previous,column)=>previous+column.renderWidth,0);if(fixedType){if(isGroup){if(wrapperElem){wrapperElem.style.width=scrollXWidth?`${scrollXWidth}px`:'';}}else{if(isOptimizeMode){if(wrapperElem){wrapperElem.style.width=tWidth?`${tWidth}px`:'';}}else{if(wrapperElem){wrapperElem.style.width=scrollXWidth?`${scrollXWidth}px`:'';}}}}if(currScrollElem){currScrollElem.style.height=`${tHeaderHeight}px`;}if(tableElem){tableElem.style.width=tWidth?`${tWidth}px`:'';}}else if(layout==='body'){if(currScrollElem){currScrollElem.style.maxHeight=customMaxHeight?`${bodyMaxHeight}px`:'';currScrollElem.style.height=customHeight?`${tbHeight}px`:'';currScrollElem.style.minHeight=`${bodyMinHeight}px`;}// 如果是固定列
if(fixedWrapperElem){if(wrapperElem){wrapperElem.style.top=`${tHeaderHeight}px`;}fixedWrapperElem.style.height=`${customHeight>0?customHeight:tableHeight+tHeaderHeight+tFooterHeight+osbHeight}px`;fixedWrapperElem.style.width=`${fixedColumn.reduce((previous,column)=>previous+column.renderWidth,0)}px`;}let renderColumnList=tableColumn;const isOptimizeMode=isBodyRenderOptimize;if(fixedType){renderColumnList=visibleColumn;if(isOptimizeMode){renderColumnList=fixedColumn||[];}}const tWidth=renderColumnList.reduce((previous,column)=>previous+column.renderWidth,0);if(fixedType){if(isOptimizeMode){if(wrapperElem){wrapperElem.style.width=tWidth?`${tWidth}px`:'';}}else{if(wrapperElem){wrapperElem.style.width=scrollXWidth?`${scrollXWidth}px`:'';}}}if(tableElem){tableElem.style.width=tWidth?`${tWidth}px`:'';// 兼容性处理
tableElem.style.paddingRight=osbWidth&&fixedType&&(browseObj.firefox||browseObj.safari)?`${osbWidth}px`:'';}const emptyBlockElem=getRefElem(elemStore[`${name}-${layout}-emptyBlock`]);if(emptyBlockElem){emptyBlockElem.style.width=tWidth?`${tWidth}px`:'';}}else if(layout==='footer'){let renderColumnList=tableColumn;const isOptimizeMode=isFooterRenderOptimize;if(!isOptimizeMode||!isColLoading&&(fixedType||!overflowX)){renderColumnList=visibleColumn;}if(fixedType){if(isOptimizeMode){renderColumnList=fixedColumn||[];}}const tWidth=renderColumnList.reduce((previous,column)=>previous+column.renderWidth,0);if(fixedType){if(isOptimizeMode){if(wrapperElem){wrapperElem.style.width=tWidth?`${tWidth}px`:'';}}else{if(wrapperElem){wrapperElem.style.width=scrollXWidth?`${scrollXWidth}px`:'';}}}if(currScrollElem){currScrollElem.style.height=`${tFooterHeight}px`;// 如果是固定列
if(fixedWrapperElem){if(wrapperElem){wrapperElem.style.top=`${customHeight>0?customHeight-tFooterHeight-osbHeight:tableHeight+tHeaderHeight}px`;}}}if(tableElem){tableElem.style.width=tWidth?`${tWidth}px`:'';}}});});if(currentRow){$xeTable.setCurrentRow(currentRow);}if(mouseConfig&&mouseOpts.selected&&editStore.selected.row&&editStore.selected.column){$xeTable.addCellSelectedClass();}if($xeGanttView&&$xeGanttView.handleUpdateStyle){$xeGanttView.handleUpdateStyle();}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();};const checkValidate=type=>{if($xeTable.triggerValidate){return $xeTable.triggerValidate(type);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();};/**
         * 当单元格发生改变时
         * 如果存在规则,则校验
         */const handleChangeCell=(evnt,params)=>{checkValidate('blur').catch(e=>e).then(()=>{$xeTable.handleEdit(params,evnt).then(()=>checkValidate('change')).catch(e=>e);});};const handleDefaultSort=()=>{const{sortConfig}=props;if(sortConfig){const sortOpts=computeSortOpts.value;let{defaultSort}=sortOpts;if(defaultSort){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(defaultSort)){defaultSort=[defaultSort];}if(defaultSort.length){(sortConfig.multiple?defaultSort:defaultSort.slice(0,1)).forEach((item,index)=>{const{field,order}=item;if(field&&order){const column=$xeTable.getColumnByField(field);if(column&&column.sortable){column.order=order;column.sortTime=Date.now()+index;}}});if(!sortOpts.remote){$xeTable.handleTableData(true).then(updateStyle);}}}}};/**
         * 处理默认勾选
         */const handleDefaultSelectionChecked=()=>{const{checkboxConfig}=props;if(checkboxConfig){const{fullDataRowIdData}=internalData;const checkboxOpts=computeCheckboxOpts.value;const{checkAll,checkRowKeys}=checkboxOpts;if(checkAll){handleCheckedAllCheckboxRow(true,true);}else if(checkRowKeys){const defSelection=[];checkRowKeys.forEach(rowKey=>{const rowid=encodeRowid(rowKey);if(fullDataRowIdData[rowid]){defSelection.push(fullDataRowIdData[rowid].row);}});handleCheckedCheckboxRow(defSelection,true,true);}}};/**
         * 处理单选框默认勾选
         */const handleDefaultRadioChecked=()=>{const{radioConfig}=props;if(radioConfig){const{fullDataRowIdData}=internalData;const radioOpts=computeRadioOpts.value;const{checkRowKey:rowKey,reserve}=radioOpts;const rowid=rowKey?encodeRowid(rowKey):null;if(rowid){if(fullDataRowIdData[rowid]){handleCheckedRadioRow(fullDataRowIdData[rowid].row,true);}if(reserve){const rowkey=getRowkey($xeTable);internalData.radioReserveRow={[rowkey]:rowid};}}}};/**
         * 处理默认展开行
         */const handleDefaultRowExpand=()=>{const{expandConfig}=props;if(expandConfig){const{fullDataRowIdData}=internalData;const expandOpts=computeExpandOpts.value;const{expandAll,expandRowKeys}=expandOpts;if(expandAll){$xeTable.setAllRowExpand(true);}else if(expandRowKeys){const defExpandeds=[];expandRowKeys.forEach(rowKey=>{const rowid=encodeRowid(rowKey);if(fullDataRowIdData[rowid]){defExpandeds.push(fullDataRowIdData[rowid].row);}});$xeTable.setRowExpand(defExpandeds,true);}}};const handleRadioReserveRow=row=>{const radioOpts=computeRadioOpts.value;if(radioOpts.reserve){internalData.radioReserveRow=row;}};const handleCheckboxReserveRow=(row,checked)=>{const{checkboxReserveRowMap}=internalData;const checkboxOpts=computeCheckboxOpts.value;if(checkboxOpts.reserve){const rowid=getRowid($xeTable,row);if(checked){checkboxReserveRowMap[rowid]=row;}else if(checkboxReserveRowMap[rowid]){delete checkboxReserveRowMap[rowid];}}};const handleCheckedRadioRow=(row,isForce)=>{const radioOpts=computeRadioOpts.value;const{checkMethod}=radioOpts;if(row&&(isForce||!checkMethod||checkMethod({$table:$xeTable,row}))){reactData.selectRadioRow=row;handleRadioReserveRow(row);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();};const handleCheckedCheckboxRow=(rows,value,isForce)=>{if(rows&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rows=[rows];}$xeTable.handleBatchSelectRows(rows,!!value,isForce);$xeTable.checkSelectionStatus();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();};const handleCheckedAllCheckboxRow=(checked,isForce)=>{const{treeConfig}=props;const{isRowGroupStatus}=reactData;const{afterFullData,afterTreeFullData,afterGroupFullData,checkboxReserveRowMap,selectCheckboxMaps}=internalData;const treeOpts=computeTreeOpts.value;const aggregateOpts=computeAggregateOpts.value;const childrenField=treeOpts.children||treeOpts.childrenField;const checkboxOpts=computeCheckboxOpts.value;const{checkField,reserve,checkMethod}=checkboxOpts;const{handleGetRowId}=createHandleGetRowId($xeTable);// indeterminateField 仅支持读取
const indeterminateField=checkboxOpts.indeterminateField||checkboxOpts.halfField;const selectRowMaps={};/**
             * 绑定属性方式(有污染)
             * 必须在行数据存在对应的属性,否则将不响应
             */if(checkField){const checkValFn=row=>{if(isForce||!checkMethod||checkMethod({$table:$xeTable,row})){if(checked){selectRowMaps[handleGetRowId(row)]=row;}external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,checkField,checked);}if((treeConfig||isRowGroupStatus)&&indeterminateField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,indeterminateField,false);}};// 如果存在选中方法
// 如果方法成立,则更新值,否则忽略该数据
if(treeConfig||isRowGroupStatus){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterFullData,checkValFn,{children:childrenField});}else{afterFullData.forEach(checkValFn);}}else{/**
                 * 默认方式(无污染)
                 * 无需任何属性,直接绑定
                 */if(isRowGroupStatus){if(checked){/**
                         * 如果是行分组勾选
                         * 如果方法成立,则添加到临时集合中
                         */external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterGroupFullData,row=>{if(isForce||!checkMethod||checkMethod({$table:$xeTable,row})){const rowid=handleGetRowId(row);selectRowMaps[rowid]=row;}},{children:aggregateOpts.mapChildrenField});}else{/**
                         * 如果是树取消
                         * 如果方法成立,则不添加到临时集合中
                         */if(!isForce&&checkMethod){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterGroupFullData,row=>{const rowid=handleGetRowId(row);if(checkMethod({$table:$xeTable,row})?false:selectCheckboxMaps[rowid]){selectRowMaps[rowid]=row;}},{children:aggregateOpts.mapChildrenField});}}}else if(treeConfig){if(checked){/**
                         * 如果是树勾选
                         * 如果方法成立,则添加到临时集合中
                         */external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterTreeFullData,row=>{if(isForce||!checkMethod||checkMethod({$table:$xeTable,row})){const rowid=handleGetRowId(row);selectRowMaps[rowid]=row;}},{children:childrenField});}else{/**
                         * 如果是树取消
                         * 如果方法成立,则不添加到临时集合中
                         */if(!isForce&&checkMethod){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterTreeFullData,row=>{const rowid=handleGetRowId(row);if(checkMethod({$table:$xeTable,row})?false:selectCheckboxMaps[rowid]){selectRowMaps[rowid]=row;}},{children:childrenField});}}}else{if(checked){/**
                         * 如果是行勾选
                         * 如果存在选中方法且成立或者本身已勾选,则添加到临时集合中
                         * 如果不存在选中方法,则添加所有数据到临时集合中
                         */if(!isForce&&checkMethod){afterFullData.forEach(row=>{const rowid=handleGetRowId(row);if(selectCheckboxMaps[rowid]||checkMethod({$table:$xeTable,row})){selectRowMaps[rowid]=row;}});}else{afterFullData.forEach(row=>{const rowid=handleGetRowId(row);selectRowMaps[rowid]=row;});}}else{/**
                         * 如果是行取消
                         * 如果方法成立,则不添加到临时集合中;如果方法不成立则判断当前是否已勾选,如果已被勾选则添加到新集合中
                         * 如果不存在选中方法,无需处理,临时集合默认为空
                         */if(!isForce&&checkMethod){afterFullData.forEach(row=>{const rowid=handleGetRowId(row);if(checkMethod({$table:$xeTable,row})?false:selectCheckboxMaps[rowid]){selectRowMaps[rowid]=row;}});}}}}if(reserve){if(checked){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(selectRowMaps,(row,rowid)=>{checkboxReserveRowMap[rowid]=row;});}else{afterFullData.forEach(row=>handleCheckboxReserveRow(row,false));}}reactData.updateCheckboxFlag++;internalData.selectCheckboxMaps=checkField?{}:selectRowMaps;reactData.isAllSelected=checked;reactData.isIndeterminate=false;internalData.treeIndeterminateRowMaps={};$xeTable.checkSelectionStatus();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();};// 还原展开、选中等相关状态
const handleReserveStatus=()=>{const{treeConfig}=props;const{expandColumn,selectRadioRow}=reactData;const{fullDataRowIdData,fullAllDataRowIdData,radioReserveRow,selectCheckboxMaps,treeExpandedMaps,rowExpandedMaps,currentRow}=internalData;const expandOpts=computeExpandOpts.value;const treeOpts=computeTreeOpts.value;const radioOpts=computeRadioOpts.value;const checkboxOpts=computeCheckboxOpts.value;// 单选框
if(selectRadioRow&&!fullAllDataRowIdData[getRowid($xeTable,selectRadioRow)]){reactData.selectRadioRow=null;// 刷新单选行状态
}// 还原保留选中状态
if(radioOpts.reserve&&radioReserveRow){const rowid=getRowid($xeTable,radioReserveRow);if(fullDataRowIdData[rowid]){handleCheckedRadioRow(fullDataRowIdData[rowid].row,true);}}// 复选框
internalData.selectCheckboxMaps=getRecoverRowMaps(selectCheckboxMaps);// 刷新多选行状态
reactData.updateCheckboxFlag++;// 还原保留选中状态
if(checkboxOpts.reserve){handleCheckedCheckboxRow(handleReserveRow(internalData.checkboxReserveRowMap),true,true);}if(currentRow&&!fullAllDataRowIdData[getRowid($xeTable,currentRow)]){internalData.currentRow=null;// 刷新当前行状态
}// 行展开
internalData.rowExpandedMaps=expandColumn?getRecoverRowMaps(rowExpandedMaps):{};// 刷新行展开状态
reactData.rowExpandedFlag++;// 还原保留状态
if(expandColumn&&expandOpts.reserve){$xeTable.setRowExpand(handleReserveRow(internalData.rowExpandedReserveRowMap),true);}// 树展开
internalData.treeExpandedMaps=treeConfig?getRecoverRowMaps(treeExpandedMaps):{};// 刷新树展开状态
reactData.treeExpandedFlag++;if(treeConfig&&treeOpts.reserve){$xeTable.setTreeExpand(handleReserveRow(internalData.treeExpandedReserveRowMap),true);}};/**
         * 处理默认展开树节点
         */const handleDefaultTreeExpand=()=>{const{treeConfig}=props;if(treeConfig){const{fullAllDataRowIdData}=internalData;const treeOpts=computeTreeOpts.value;const{expandAll,expandRowKeys}=treeOpts;if(expandAll){$xeTable.setAllTreeExpand(true);}else if(expandRowKeys){const defExpandeds=[];expandRowKeys.forEach(rowKey=>{const rowid=encodeRowid(rowKey);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){defExpandeds.push(rowRest.row);}});$xeTable.setTreeExpand(defExpandeds,true);}}};const handleAsyncTreeExpandChilds=row=>{const treeOpts=computeTreeOpts.value;const checkboxOpts=computeCheckboxOpts.value;const{transform,loadMethod}=treeOpts;const{checkStrictly}=checkboxOpts;return new Promise(resolve=>{if(loadMethod){const{fullAllDataRowIdData,treeExpandLazyLoadedMaps}=internalData;const rowid=getRowid($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];treeExpandLazyLoadedMaps[rowid]=row;Promise.resolve(loadMethod({$table:$xeTable,row})).then(childRecords=>{if(rowRest){rowRest.treeLoaded=true;}if(treeExpandLazyLoadedMaps[rowid]){delete treeExpandLazyLoadedMaps[rowid];}if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(childRecords)){childRecords=[];}if(childRecords){return $xeTable.loadTreeChildren(row,childRecords).then(childRows=>{const{treeExpandedMaps}=internalData;if(childRows.length&&!treeExpandedMaps[rowid]){treeExpandedMaps[rowid]=row;}reactData.treeExpandedFlag++;// 如果当前节点已选中,则展开后子节点也被选中
if(!checkStrictly&&$xeTable.isCheckedByCheckboxRow(row)){handleCheckedCheckboxRow(childRows,true);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{if(transform){$xeTable.handleTableData();updateAfterDataIndex();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}});});}}).catch(()=>{const{treeExpandLazyLoadedMaps}=internalData;if(rowRest){rowRest.treeLoaded=false;}if(treeExpandLazyLoadedMaps[rowid]){delete treeExpandLazyLoadedMaps[rowid];}}).finally(()=>{reactData.treeExpandedFlag++;(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>$xeTable.recalculate()).then(()=>resolve());});}else{resolve();}});};const handleTreeExpandReserve=(row,expanded)=>{const{treeExpandedReserveRowMap}=internalData;const treeOpts=computeTreeOpts.value;if(treeOpts.reserve){const rowid=getRowid($xeTable,row);if(expanded){treeExpandedReserveRowMap[rowid]=row;}else if(treeExpandedReserveRowMap[rowid]){delete treeExpandedReserveRowMap[rowid];}}};const handleAsyncRowExpand=row=>{return new Promise(resolve=>{const expandOpts=computeExpandOpts.value;const{loadMethod}=expandOpts;if(loadMethod){const{fullAllDataRowIdData,rowExpandLazyLoadedMaps}=internalData;const rowid=getRowid($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];rowExpandLazyLoadedMaps[rowid]=row;loadMethod({$table:$xeTable,row,rowIndex:$xeTable.getRowIndex(row),$rowIndex:$xeTable.getVMRowIndex(row)}).then(()=>{const{rowExpandedMaps}=internalData;if(rowRest){rowRest.expandLoaded=true;}rowExpandedMaps[rowid]=row;reactData.rowExpandedFlag++;}).catch(()=>{if(rowRest){rowRest.expandLoaded=false;}}).finally(()=>{const{rowExpandLazyLoadedMaps}=internalData;if(rowExpandLazyLoadedMaps[rowid]){delete rowExpandLazyLoadedMaps[rowid];}reactData.rowExpandedFlag++;(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>$xeTable.recalculate()).then(()=>$xeTable.updateCellAreas()).then(()=>resolve());});}else{resolve();}});};const handleRowExpandReserve=(row,expanded)=>{const{rowExpandedReserveRowMap}=internalData;const expandOpts=computeExpandOpts.value;if(expandOpts.reserve){const rowid=getRowid($xeTable,row);if(expanded){rowExpandedReserveRowMap[rowid]=row;}else if(rowExpandedReserveRowMap[rowid]){delete rowExpandedReserveRowMap[rowid];}}};const handleDefaultMergeCells=()=>{const{mergeCells}=props;if(mergeCells){$xeTable.setMergeCells(mergeCells);}};const handleDefaultMergeHeaderItems=()=>{const{mergeHeaderCells}=props;if(mergeHeaderCells){$xeTable.setMergeHeaderCells(mergeHeaderCells);}};const handleDefaultMergeFooterItems=()=>{const{mergeFooterCells,mergeFooterItems}=props;const mFooterCells=mergeFooterCells||mergeFooterItems;if(mFooterCells){$xeTable.setMergeFooterCells(mFooterCells);}};// 计算可视渲染相关数据
const computeScrollLoad=()=>{return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{const{scrollXLoad,scrollYLoad}=reactData;const{scrollXStore,scrollYStore}=internalData;const virtualYOpts=computeVirtualYOpts.value;const virtualXOpts=computeVirtualXOpts.value;// 计算 X 逻辑
if(scrollXLoad){const{toVisibleIndex:toXVisibleIndex,visibleSize:visibleXSize}=handleVirtualXVisible();const offsetXSize=Math.max(0,virtualXOpts.oSize?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(virtualXOpts.oSize):0);scrollXStore.preloadSize=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(virtualXOpts.preSize);scrollXStore.offsetSize=offsetXSize;scrollXStore.visibleSize=visibleXSize;scrollXStore.endIndex=Math.max(scrollXStore.startIndex+scrollXStore.visibleSize+offsetXSize,scrollXStore.endIndex);scrollXStore.visibleStartIndex=Math.max(scrollXStore.startIndex,toXVisibleIndex);scrollXStore.visibleEndIndex=Math.min(scrollXStore.endIndex,toXVisibleIndex+visibleXSize);$xeTable.updateScrollXData().then(()=>{loadScrollXData();});}else{$xeTable.updateScrollXSpace();}// 计算 Y 逻辑
const rowHeight=computeRowHeight();scrollYStore.rowHeight=rowHeight;// 已废弃
reactData.rowHeight=rowHeight;const{toVisibleIndex:toYVisibleIndex,visibleSize:visibleYSize}=handleVirtualYVisible();if(scrollYLoad){const offsetYSize=Math.max(0,virtualYOpts.oSize?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(virtualYOpts.oSize):0);scrollYStore.preloadSize=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(virtualYOpts.preSize);scrollYStore.offsetSize=offsetYSize;scrollYStore.visibleSize=visibleYSize;scrollYStore.endIndex=Math.max(scrollYStore.startIndex+visibleYSize+offsetYSize,scrollYStore.endIndex);scrollYStore.visibleStartIndex=Math.max(scrollYStore.startIndex,toYVisibleIndex);scrollYStore.visibleEndIndex=Math.min(scrollYStore.endIndex,toYVisibleIndex+visibleYSize);$xeTable.updateScrollYData().then(()=>{loadScrollYData();});}else{$xeTable.updateScrollYSpace();}});};const calcScrollbar=()=>{const{scrollXWidth,scrollYHeight}=reactData;const{elemStore}=internalData;const scrollbarOpts=computeScrollbarOpts.value;const el=refElem.value;if(!el||!el.clientWidth){return;}const bodyWrapperElem=getRefElem(elemStore['main-body-wrapper']);const headerTableElem=getRefElem(elemStore['main-header-table']);const footerTableElem=getRefElem(elemStore['main-footer-table']);const xHandleEl=refScrollXHandleElem.value;const yHandleEl=refScrollYHandleElem.value;let overflowY=false;let overflowX=false;if(bodyWrapperElem){overflowY=scrollYHeight>bodyWrapperElem.clientHeight;if(yHandleEl){reactData.scrollbarWidth=scrollbarOpts.width||yHandleEl.offsetWidth-yHandleEl.clientWidth||14;}reactData.overflowY=overflowY;overflowX=scrollXWidth>bodyWrapperElem.clientWidth;if(xHandleEl){reactData.scrollbarHeight=scrollbarOpts.height||xHandleEl.offsetHeight-xHandleEl.clientHeight||14;}const hHeight=headerTableElem?headerTableElem.clientHeight:0;const fHeight=footerTableElem?footerTableElem.clientHeight:0;internalData.tableHeight=bodyWrapperElem.offsetHeight;internalData.tHeaderHeight=hHeight;internalData.tFooterHeight=fHeight;reactData.overflowX=overflowX;reactData.parentHeight=Math.max(hHeight+fHeight+20,$xeTable.getParentHeight());}if(overflowX){$xeTable.checkScrolling();}};const handleRecalculateStyle=(reFull,reWidth,reHeight)=>{const el=refElem.value;if(!el||!el.clientWidth){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}const varEl=refVarElem.value;if(varEl){const[defEl,mediumEl,smallEl,miniEl]=varEl.children;calcVarRowHeightConfig('default',defEl);calcVarRowHeightConfig('medium',mediumEl);calcVarRowHeightConfig('small',smallEl);calcVarRowHeightConfig('mini',miniEl);}if(reWidth){calcCellWidth();}if(reWidth||reFull){autoCellWidth();}calcScrollbar();updateStyle();updateRowExpandStyle();if(reFull){updateTreeLineStyle();}internalData.rceRunTime=Date.now();return computeScrollLoad().then(()=>{// 初始化时需要在列计算之后再执行优化运算,达到最优显示效果
if(reWidth){calcCellWidth();}if(reWidth||reFull){autoCellWidth();}if(reHeight){calcCellHeight();}updateStyle();calcScrollbar();if(reFull){updateRowOffsetTop();}updateRowExpandStyle();if(reFull){updateTreeLineStyle();}internalData.rceRunTime=Date.now();if(reFull){return computeScrollLoad();}});};const defaultMinRunDelay=50;const handleLazyRecalculate=(reFull,reWidth,reHeight,options)=>{const minRunDelay=(options?options.minRunDelay:defaultMinRunDelay)||defaultMinRunDelay;return new Promise(resolve=>{const $xeGanttView=internalData.xeGanttView;const{customStore,tableData,tableColumn}=reactData;const{rceTimeout,rceRunTime}=internalData;const resizeOpts=computeResizeOpts.value;let rceDelay=internalData.rceDelay;// 如果在500毫秒内频繁执行,则执行次数减缓
if(rceRunTime&&rceRunTime>Date.now()-500){rceDelay=Math.min(Math.max(60,Math.min(800,tableData.length/8)),rceDelay+50);}else{rceDelay=0;}internalData.rceDelay=rceDelay;const refreshDelay=resizeOpts.refreshDelay||30;const reDelay=rceDelay+refreshDelay;const el=refElem.value;if(el&&el.clientWidth){autoCellWidth();updateRowExpandStyle();}if(customStore.visible&&$xeTable.handleCustomStyle){$xeTable.handleCustomStyle();}const renderCellSize=tableData.length*tableColumn.length;// 渲染量低的场景
if(renderCellSize<400){rceDelay=20;}else if(renderCellSize<600){rceDelay=40;}else if(renderCellSize<800){rceDelay=80;}if(rceTimeout){clearTimeout(rceTimeout);// 多少毫秒内至少执行一次
if(rceRunTime&&rceRunTime+minRunDelay<Date.now()){resolve(handleRecalculateStyle(reFull,reWidth,reHeight));}else{(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{resolve();});}}else{resolve(handleRecalculateStyle(reFull,reWidth,reHeight));}if($xeGanttView&&$xeGanttView.handleLazyRecalculate){$xeGanttView.handleLazyRecalculate();}internalData.rceTimeout=setTimeout(()=>{internalData.rceDelay=0;internalData.rceTimeout=undefined;handleRecalculateStyle(reFull,reWidth,reHeight);if($xeGanttView&&$xeGanttView.handleLazyRecalculate){$xeGanttView.handleLazyRecalculate();}},reDelay);});};const handleResizeEvent=()=>{if(internalData.rsePending){return;}internalData.rsePending=true;handleLazyRecalculate(true,true,true,{minRunDelay:200}).then(()=>{internalData.rsePending=false;}).catch(()=>{internalData.rsePending=false;});};const handleUpdateAggValues=()=>{const{visibleColumn}=internalData;const aggCols=[];visibleColumn.forEach(column=>{if(column.aggFunc){aggCols.push(column);}});reactData.aggHandleAggColumns=aggCols;};const handleUpdateRowGroup=groupFields=>{const aggGroupFields=[];const aggGroupConfs=[];if(groupFields){(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(groupFields)?groupFields:[groupFields]).forEach(field=>{aggGroupFields.push(field);aggGroupConfs.push({field});});}reactData.rowGroupList=aggGroupConfs;reactData.aggHandleFields=aggGroupFields;handleUpdateAggValues();};const handleeGroupSummary=aggList=>{const{fullColumnFieldData}=internalData;const aggregateOpts=computeAggregateOpts.value;const aggFuncColumns=computeAggFuncColumns.value;const{mapChildrenField}=aggregateOpts;const aggCalcMethod=aggregateOpts.calcValuesMethod||aggregateOpts.countMethod||aggregateOpts.aggregateMethod;if(mapChildrenField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().lastEach(aggList,aggRow=>{let count=0;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(aggRow[mapChildrenField],row=>{if(row.isAggregate){count+=row.childCount||0;}else{count++;}});aggRow.childCount=count;});if($xeTable.handlePivotTableAggData){$xeTable.handlePivotTableAggData(aggList);}else{if(aggFuncColumns.length){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().lastEach(aggList,aggRow=>{const aggDtObj={};const aggData=aggRow.aggData;const groupField=aggRow.groupField;const groupContent=aggRow.groupContent;const childList=mapChildrenField?aggRow[mapChildrenField]||[]:[];const childCount=aggRow.childCount;const colRest=fullColumnFieldData[groupField]||{};aggFuncColumns.forEach(column=>{const{field}=column;const currAggData=aggData?aggData[field]:null;const ctParams={$table:$xeTable,groupField,groupColumn:colRest?colRest.column:null,column,groupValue:groupContent,childList,childCount,aggValue:currAggData?currAggData.value:0,/**
                                   * 已废弃
                                   * @deprecated
                                   */children:childList,/**
                                   * 已废弃
                                   * @deprecated
                                   */totalValue:childCount};let aggVal=0;// 如果下层同时也是分组
if(childList.length&&childList[0].isAggregate){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(childList,row=>{if(row.isAggregate){const currAggData=row.aggData[field];if(currAggData){aggVal+=currAggData.value;}}});}else{aggVal=aggCalcMethod?aggCalcMethod(ctParams):aggRow.childCount;}aggDtObj[field]={type:'count',value:aggVal,label:aggVal};});aggRow.aggData=aggDtObj;});}}}};const updateGroupData=()=>{const{aggregateConfig,rowGroupConfig}=props;const{isRowGroupStatus}=reactData;const{tableFullGroupData}=internalData;const aggregateOpts=computeAggregateOpts.value;const{mapChildrenField}=aggregateOpts;if((aggregateConfig||rowGroupConfig)&&isRowGroupStatus){const aggList=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullGroupData,row=>{if(row.isAggregate){aggList.push(row);}},{children:mapChildrenField});handleeGroupSummary(aggList);}};const handleGroupData=(list,rowGroups,isCombinedField)=>{let fullData=list;let treeData=list;if(rowGroups){const aggregateOpts=computeAggregateOpts.value;const{rowField,parentField,separator,childrenField,mapChildrenField}=aggregateOpts;const rowOpts=computeRowOpts.value;const checkboxOpts=computeCheckboxOpts.value;const{checkField}=checkboxOpts;const indeterminateField=checkboxOpts.indeterminateField||checkboxOpts.halfField;const rgItem=rowGroups[0];if(rgItem&&rowField&&parentField&&childrenField&&mapChildrenField){fullData=[];treeData=[];const groupField=rgItem.field;const groupColumn=$xeTable.getColumnByField(groupField);const groupMaps={};const groupCombinedMaps={};const aggList=[];const rowkey=getRowkey($xeTable);list.forEach(row=>{const cellValue=groupColumn?$xeTable.getCellLabel(row,groupColumn):external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,groupField);let groupValue=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(cellValue)?'':cellValue;if(isCombinedField){const groupVals=[groupValue];rowGroups.slice(1).forEach(ogItem=>{const ogField=ogItem.field;const ogColumn=$xeTable.getColumnByField(ogField);const ocValue=ogColumn?$xeTable.getCellLabel(row,ogColumn):external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,ogField);const ogValue=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(ocValue)?'':ocValue;groupValue+=(separator||' / ')+ogValue;groupVals.push(ogValue);});if(!groupCombinedMaps[groupValue]){groupCombinedMaps[groupValue]=groupVals;}}let childList=groupMaps[groupValue];if(!childList){childList=[];groupMaps[groupValue]=childList;}if(row.isAggregate){row.isAggregate=undefined;}childList.push(row);});if(isCombinedField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().objectEach(groupMaps,(childList,groupValue)=>{const aggRow={isAggregate:true,aggData:{},groupContent:groupValue,groupCombineds:groupCombinedMaps[groupValue],groupField,childCount:0,[rowField]:getRowUniqueId(),[parentField]:null,[childrenField]:childList,[mapChildrenField]:childList};aggRow[rowkey]=createRowId(rowOpts,aggRow,rowkey);if(checkField){aggRow[checkField]=false;}if(indeterminateField){aggRow[indeterminateField]=false;}aggList.push(aggRow);treeData.push(aggRow);fullData.push(aggRow);});}else{external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().objectEach(groupMaps,(childList,groupValue)=>{const{fullData:childFullData,treeData:childTreeData}=handleGroupData(childList,rowGroups.slice(1));const aggRow={isAggregate:true,aggData:{},groupContent:groupValue,groupCombineds:[],groupField,childCount:0,[rowField]:getRowUniqueId(),[parentField]:null,[childrenField]:childTreeData,[mapChildrenField]:childTreeData};aggRow[rowkey]=createRowId(rowOpts,aggRow,rowkey);if(checkField){aggRow[checkField]=false;}if(indeterminateField){aggRow[indeterminateField]=false;}aggList.push(aggRow);treeData.push(aggRow);fullData.push(aggRow);if(childFullData.length){fullData.push(...childFullData);}});}handleeGroupSummary(aggList);}}return{treeData,fullData};};const initGroupData=(list,rowGroups)=>{const aggregateOpts=computeAggregateOpts.value;const{mode}=aggregateOpts;const isCombinedField=mode==='combined';const groupRest=handleGroupData(list,rowGroups,isCombinedField);return groupRest;};const initData=()=>{const{data}=props;loadTableData(data||[],true,true).then(()=>{if(data&&data.length){internalData.inited=true;internalData.initStatus=true;handleLoadDefaults();}handleInitDefaults();updateStyle();if(!reactData.isAllOverflow){calcCellHeight();updateRowOffsetTop();}});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{dispatchEvent('ready',{},null);});};/**
         * 加载表格数据
         * @param {Array} datas 数据
         */const loadTableData=(datas,isReload,isReset)=>{const{keepSource,treeConfig,rowGroupConfig,aggregateConfig}=props;const{rowGroupList,scrollYLoad:oldScrollYLoad}=reactData;const{initStatus,scrollYStore,scrollXStore,lastScrollLeft,lastScrollTop}=internalData;const rowOpts=computeRowOpts.value;const treeOpts=computeTreeOpts.value;const expandOpts=computeExpandOpts.value;const{transform}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;let treeData=[];let fullData=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)(datas?datas.slice(0):[]);// 转为响应式数据
if(fullData.length>supportMaxRow){table_errLog('vxe.error.errMaxRow',[supportMaxRow]);}if(treeConfig&&rowGroupList.length){table_errLog('vxe.error.noTree',['aggregate-config']);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}if(rowOpts.drag&&rowGroupList.length){table_errLog('vxe.error.errConflicts',['row-config.drag','aggregate-config']);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}let isRGroup=false;if(treeConfig){if(transform){// 树结构自动转换
if(!treeOpts.rowField){table_errLog('vxe.error.reqProp',['tree-config.rowField']);}if(!treeOpts.parentField){table_errLog('vxe.error.reqProp',['tree-config.parentField']);}if(!childrenField){table_errLog('vxe.error.reqProp',['tree-config.childrenField']);}if(!treeOpts.mapChildrenField){table_errLog('vxe.error.reqProp',['tree-config.mapChildrenField']);}if(childrenField===treeOpts.mapChildrenField){table_errLog('vxe.error.errConflicts',['tree-config.childrenField','tree-config.mapChildrenField']);}// fullData.forEach(row => {
//   if (row[treeOpts.children] && row[treeOpts.children].length) {
//     warnLog('vxe.error.errConflicts', ['tree-config.transform', `row.${treeOpts.children}`])
//   }
// })
treeData=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toArrayTree(fullData,{key:treeOpts.rowField,parentKey:treeOpts.parentField,children:childrenField,mapChildren:treeOpts.mapChildrenField});fullData=treeData.slice(0);}else{treeData=fullData.slice(0);}}else if((aggregateConfig||rowGroupConfig)&&rowGroupList.length){const groupRest=initGroupData(fullData,rowGroupList);treeData=groupRest.treeData;fullData=groupRest.fullData;isRGroup=true;}reactData.isRowGroupStatus=isRGroup;scrollYStore.startIndex=0;scrollYStore.endIndex=1;scrollXStore.startIndex=0;scrollXStore.endIndex=1;internalData.cvCacheMaps={};reactData.isRowLoading=true;reactData.scrollVMLoading=false;reactData.treeExpandedFlag++;reactData.rowExpandedFlag++;internalData.insertRowMaps={};reactData.insertRowFlag++;internalData.removeRowMaps={};reactData.removeRowFlag++;internalData.fullCellHeightMaps={};internalData.fullCellStoreMaps={};const sYLoad=updateScrollYStatus(fullData);// 全量数据
internalData.tableFullData=fullData;internalData.tableFullTreeData=isRGroup?[]:treeData;internalData.tableFullGroupData=isRGroup?treeData:[];// 缓存数据
$xeTable.cacheRowMap(isReset);// 原始数据
internalData.tableSynchData=datas;if(isReset){internalData.isResizeCellHeight=false;}// 克隆原数据,用于显示编辑状态,与编辑值做对比
if(keepSource){$xeTable.cacheSourceMap(fullData);}if($xeTable.clearCellAreas&&props.mouseConfig){$xeTable.clearCellAreas();$xeTable.clearCopyCellArea();}$xeTable.clearMergeCells();$xeTable.clearMergeFooterItems();$xeTable.clearHistory();$xeTable.handleTableData(true);$xeTable.updateFooter();$xeTable.handleUpdateBodyMerge();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{updateHeight();updateStyle();}).then(()=>{computeScrollLoad();syncGanttScrollYStatus();}).then(()=>{const virtualYOpts=computeVirtualYOpts.value;// 是否启用了虚拟滚动
if(sYLoad){scrollYStore.endIndex=scrollYStore.visibleSize;}if(sYLoad){if(reactData.expandColumn&&expandOpts.mode!=='fixed'){table_errLog('vxe.error.notConflictProp',['column.type="expand','expand-config.mode="fixed"']);}if(virtualYOpts.mode==='scroll'&&reactData.expandColumn&&expandOpts.mode==='fixed'){table_warnLog('vxe.error.notConflictProp',['virtual-y-config.mode=scroll','expand-config.mode=inside']);}// if (showOverflow) {
//   if (!rowOpts.height) {
//     const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
//     if (errColumn) {
//       errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
//     }
//   }
// }
if(!(props.height||props.maxHeight)){table_errLog('vxe.error.reqSupportProp',['virtual-y-config.enabled = true','height | max-height']);}// if (!props.showOverflow) {
//   warnLog('vxe.error.reqProp', ['table.show-overflow'])
// }
// if (props.spanMethod) {
//   warnLog('vxe.error.scrollErrProp', ['span-method'])
// }
}handleReserveStatus();$xeTable.checkSelectionStatus();$xeTable.dispatchEvent('data-change',{visibleColumn:internalData.visibleColumn,visibleData:internalData.afterFullData},null);return new Promise(resolve=>{(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>handleRecalculateStyle(false,false,false)).then(()=>{handleRecalculateStyle(false,true,true);updateRowOffsetTop();}).then(()=>{let targetScrollLeft=lastScrollLeft;let targetScrollTop=lastScrollTop;const virtualXOpts=computeVirtualXOpts.value;const virtualYOpts=computeVirtualYOpts.value;// 是否在更新数据之后自动滚动重置滚动条
if(virtualXOpts.scrollToLeftOnChange){targetScrollLeft=0;}if(virtualYOpts.scrollToTopOnChange){targetScrollTop=0;}reactData.isRowLoading=false;handleRecalculateStyle(false,false,false);updateTreeLineStyle();syncGanttScrollYStatus();// 如果是自动行高,特殊情况需调用 recalculate 手动刷新
if(!props.showOverflow){setTimeout(()=>{handleLazyRecalculate(false,true,true);setTimeout(()=>handleLazyRecalculate(false,true,true),3000);},2000);}// 是否变更虚拟滚动
if(oldScrollYLoad===sYLoad){restoreScrollLocation($xeTable,targetScrollLeft,targetScrollTop).then(()=>{handleRecalculateStyle(false,true,true);updateRowOffsetTop();updateTreeLineStyle();(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>resolve());});}else{setTimeout(()=>{restoreScrollLocation($xeTable,targetScrollLeft,targetScrollTop).then(()=>{handleRecalculateStyle(false,true,true);updateRowOffsetTop();updateTreeLineStyle();(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>resolve());});});}});}).then(()=>{if(initStatus){dispatchEvent('data-rendered',{isReload,visibleColumn:internalData.visibleColumn,visibleData:internalData.afterFullData},null);}else{dispatchEvent('init-rendered',{visibleColumn:internalData.visibleColumn,visibleData:internalData.afterFullData},null);}});});};/**
         * 处理数据加载默认行为
         * 默认执行一次,除非被重置
         */const handleLoadDefaults=()=>{handleDefaultSelectionChecked();handleDefaultRadioChecked();handleDefaultRowExpand();handleDefaultTreeExpand();handleDefaultRowGroupExpand();handleDefaultMergeCells();handleDefaultMergeHeaderItems();handleDefaultMergeFooterItems();(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{setTimeout(()=>$xeTable.recalculate());});};/**
         * 处理初始化的默认行为
         * 只会执行一次
         */const handleInitDefaults=()=>{handleDefaultSort();};const handleTableColumn=()=>{const{scrollXLoad}=reactData;const{visibleColumn,scrollXStore,fullColumnIdData}=internalData;const tableColumn=scrollXLoad?visibleColumn.slice(scrollXStore.startIndex,scrollXStore.endIndex):visibleColumn.slice(0);tableColumn.forEach((column,$index)=>{const colid=column.id;const colRest=fullColumnIdData[colid];if(colRest){colRest.$index=$index;}});reactData.tableColumn=tableColumn;};const handleUpdateColumn=()=>{const columnList=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(internalData.collectColumn,'renderSortNumber');internalData.collectColumn=columnList;const tFullColumn=getColumnList(columnList);internalData.tableFullColumn=tFullColumn;reactData.updateColFlag++;cacheColumnMap();};const loadScrollXData=()=>{const{isScrollXBig}=reactData;const{mergeBodyList,mergeFooterList,mergeBodyRowMaps,scrollXStore}=internalData;const{preloadSize,startIndex,endIndex,offsetSize}=scrollXStore;const{toVisibleIndex,visibleSize}=handleVirtualXVisible();const offsetItem={startIndex:Math.max(0,isScrollXBig?toVisibleIndex-1:toVisibleIndex-1-offsetSize-preloadSize),endIndex:isScrollXBig?toVisibleIndex+visibleSize:toVisibleIndex+visibleSize+offsetSize+preloadSize};scrollXStore.visibleStartIndex=toVisibleIndex-1;scrollXStore.visibleEndIndex=toVisibleIndex+visibleSize+1;calculateMergerOffsetIndex(mergeBodyList.concat(mergeFooterList),mergeBodyRowMaps,offsetItem,'col');const{startIndex:offsetStartIndex,endIndex:offsetEndIndex}=offsetItem;if(toVisibleIndex<=startIndex||toVisibleIndex>=endIndex-visibleSize-1){if(startIndex!==offsetStartIndex||endIndex!==offsetEndIndex){scrollXStore.startIndex=offsetStartIndex;scrollXStore.endIndex=offsetEndIndex;$xeTable.updateScrollXData();}}$xeTable.closeTooltip();};const parseColumns=isReset=>{// const { showOverflow } = props
// const rowOpts = computeRowOpts.value
const leftList=[];const centerList=[];const rightList=[];const{isGroup,columnStore}=reactData;const{collectColumn,tableFullColumn,scrollXStore,fullColumnIdData}=internalData;// 如果是分组表头,如果子列全部被隐藏,则根列也隐藏
if(isGroup){const leftGroupList=[];const centerGroupList=[];const rightGroupList=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const isColGroup=hasChildrenList(column);// 如果是分组,必须按组设置固定列,不允许给子列设置固定
if(parentColumn&&parentColumn.fixed){column.fixed=parentColumn.fixed;}if(parentColumn&&(column.fixed||'')!==(parentColumn.fixed||'')){table_errLog('vxe.error.groupFixed');}if(isColGroup){column.visible=!!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(column.children,subColumn=>hasChildrenList(subColumn)?false:subColumn.visible);}else if(column.visible){if(column.fixed==='left'){leftList.push(column);}else if(column.fixed==='right'){rightList.push(column);}else{centerList.push(column);}}});collectColumn.forEach(column=>{if(column.visible){if(column.fixed==='left'){leftGroupList.push(column);}else if(column.fixed==='right'){rightGroupList.push(column);}else{centerGroupList.push(column);}}});reactData.tableGroupColumn=leftGroupList.concat(centerGroupList).concat(rightGroupList);}else{// 重新分配列
tableFullColumn.forEach(column=>{if(column.visible){if(column.fixed==='left'){leftList.push(column);}else if(column.fixed==='right'){rightList.push(column);}else{centerList.push(column);}}});}const visibleColumn=leftList.concat(centerList).concat(rightList);internalData.visibleColumn=visibleColumn;updateColumnOffsetLeft();const sXLoad=updateScrollXStatus();reactData.hasFixedColumn=leftList.length>0||rightList.length>0;Object.assign(columnStore,{leftList,centerList,rightList});if(sXLoad){// if (showOverflow) {
//   if (!rowOpts.height) {
//     const errColumn = internalData.tableFullColumn.find(column => column.showOverflow === false)
//     if (errColumn) {
//       errLog('vxe.error.errProp', [`column[field="${errColumn.field}"].show-overflow=false`, 'show-overflow=true'])
//     }
//   }
// }
// if (props.showHeader && !props.showHeaderOverflow) {
//   warnLog('vxe.error.reqProp', ['show-header-overflow'])
// }
// if (props.showFooter && !props.showFooterOverflow) {
//   warnLog('vxe.error.reqProp', ['show-footer-overflow'])
// }
if(props.spanMethod){table_warnLog('vxe.error.scrollErrProp',['span-method']);}if(props.footerSpanMethod){table_warnLog('vxe.error.scrollErrProp',['footer-span-method']);}if(isReset){const{visibleSize}=handleVirtualXVisible();scrollXStore.startIndex=0;scrollXStore.endIndex=visibleSize;scrollXStore.visibleSize=visibleSize;scrollXStore.visibleStartIndex=0;scrollXStore.visibleEndIndex=visibleSize;}}// 如果列被显示/隐藏,则清除合并状态
// 如果列被设置为固定,则清除合并状态
if(visibleColumn.length!==internalData.visibleColumn.length||!internalData.visibleColumn.every((column,index)=>column===visibleColumn[index])){$xeTable.clearMergeCells();$xeTable.clearMergeFooterItems();}visibleColumn.forEach((column,index)=>{const colid=column.id;const colRest=fullColumnIdData[colid];if(colRest){colRest._index=index;}});handleTableColumn();handleUpdateAggValues();if(isReset){updateColumnOffsetLeft();return $xeTable.updateFooter().then(()=>{return $xeTable.recalculate();}).then(()=>{$xeTable.updateCellAreas();return $xeTable.recalculate();});}return $xeTable.updateFooter();};const initColumnHierarchy=()=>{const{collectColumn}=internalData;const fullColIdData={};const fullColFieldData={};let sortIndex=1;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const{id:colid,field}=column;const parentId=parentColumn?parentColumn.id:null;const rest={$index:-1,_index:-1,column,colid,index,items,parent:parentColumn||null,width:0,oLeft:0};column.parentId=parentId;column.defaultParentId=parentId;column.sortNumber=sortIndex;column.renderSortNumber=sortIndex;sortIndex++;if(field){if(fullColFieldData[field]){table_errLog('vxe.error.colRepet',['field',field]);}fullColFieldData[field]=rest;}fullColIdData[colid]=rest;});internalData.fullColumnIdData=fullColIdData;internalData.fullColumnFieldData=fullColFieldData;};const buildColumnInfo=()=>{const{scrollXLoad,scrollYLoad,expandColumn}=reactData;const expandOpts=computeExpandOpts.value;cacheColumnMap();parseColumns(true).then(()=>{if(reactData.scrollXLoad){loadScrollXData();}});$xeTable.clearHeaderFormatterCache();$xeTable.clearMergeCells();$xeTable.clearMergeFooterItems();$xeTable.handleTableData(true);$xeTable.handleAggregateSummaryData();if((scrollXLoad||scrollYLoad)&&expandColumn&&expandOpts.mode!=='fixed'){table_warnLog('vxe.error.scrollErrProp',['column.type=expand']);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{if($xeToolbar){$xeToolbar.syncUpdate({collectColumn:internalData.collectColumn,$table:$xeTable});}if($xeTable.handleUpdateCustomColumn){$xeTable.handleUpdateCustomColumn();}const columnOpts=computeColumnOpts.value;if(props.showCustomHeader&&reactData.isGroup&&(columnOpts.resizable||props.resizable)){table_warnLog('vxe.error.notConflictProp',['show-custom-header & colgroup','column-config.resizable=false']);}reactData.isColLoading=false;return handleLazyRecalculate(false,true,true);});};const handleInitColumn=collectColumn=>{internalData.collectColumn=collectColumn;const tFullColumn=getColumnList(collectColumn);internalData.tableFullColumn=tFullColumn;reactData.updateColFlag++;reactData.isColLoading=true;initColumnHierarchy();return Promise.resolve(restoreCustomStorage()).then(()=>{return buildColumnInfo();});};const updateScrollXStatus=fullColumn=>{const virtualXOpts=computeVirtualXOpts.value;const allCols=fullColumn||internalData.tableFullColumn;// 如果gt为0,则总是启用
const scrollXLoad=!!virtualXOpts.enabled&&virtualXOpts.gt>-1&&(virtualXOpts.gt===0||virtualXOpts.gt<allCols.length);reactData.scrollXLoad=scrollXLoad;return scrollXLoad;};const syncGanttScrollYStatus=()=>{const $xeGanttView=internalData.xeGanttView;if($xeGanttView&&$xeGanttView.handleUpdateSYStatus){$xeGanttView.handleUpdateSYStatus(reactData.scrollYLoad);}};const updateScrollYStatus=fullData=>{const{treeConfig}=props;const virtualYOpts=computeVirtualYOpts.value;const treeOpts=computeTreeOpts.value;const{transform}=treeOpts;const allList=fullData||internalData.tableFullData;// 如果gt为0,则总是启用
let scrollYLoad=!!virtualYOpts.enabled&&virtualYOpts.gt>-1&&(virtualYOpts.gt===0||virtualYOpts.gt<allList.length);if(scrollYLoad&&treeConfig&&!transform){table_errLog('vxe.error.notSupportProp',['[table] virtual-y-config.enabled=true','tree-config.transform=false','tree-config.transform=true']);scrollYLoad=false;}reactData.scrollYLoad=scrollYLoad;syncGanttScrollYStatus();return scrollYLoad;};/**
         * 展开与收起树节点
         * @param rows
         * @param expanded
         * @returns
         */const handleBaseTreeExpand=(rows,expanded)=>{const{treeNodeColumn}=reactData;const{fullAllDataRowIdData,tableFullTreeData,treeExpandedMaps,treeExpandLazyLoadedMaps}=internalData;const treeOpts=computeTreeOpts.value;const{reserve,lazy,accordion,toggleMethod}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const hasChildField=treeOpts.hasChild||treeOpts.hasChildField;const result=[];const columnIndex=$xeTable.getColumnIndex(treeNodeColumn);const $columnIndex=$xeTable.getVMColumnIndex(treeNodeColumn);const _columnIndex=$xeTable.getVTColumnIndex(treeNodeColumn);const{handleGetRowId}=createHandleGetRowId($xeTable);let validRows=toggleMethod?rows.filter(row=>toggleMethod({$table:$xeTable,expanded,column:treeNodeColumn,columnIndex,$columnIndex,_columnIndex,row})):rows;if(accordion){validRows=validRows.length?[validRows[validRows.length-1]]:[];// 同一级只能展开一个
const matchObj=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(tableFullTreeData,item=>item===validRows[0],{children:childrenField});if(matchObj){matchObj.items.forEach(item=>{const rowid=handleGetRowId(item);if(treeExpandedMaps[rowid]){delete treeExpandedMaps[rowid];}});}}if(expanded){validRows.forEach(row=>{const rowid=handleGetRowId(row);if(!treeExpandedMaps[rowid]){const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const isLoad=lazy&&row[hasChildField]&&!rowRest.treeLoaded&&!treeExpandLazyLoadedMaps[rowid];// 是否使用懒加载
if(isLoad){result.push(handleAsyncTreeExpandChilds(row));}else{if(row[childrenField]&&row[childrenField].length){treeExpandedMaps[rowid]=row;}}}}});}else{validRows.forEach(item=>{const rowid=handleGetRowId(item);if(treeExpandedMaps[rowid]){delete treeExpandedMaps[rowid];}});}if(reserve){validRows.forEach(row=>handleTreeExpandReserve(row,expanded));}reactData.treeExpandedFlag++;return Promise.all(result).then(()=>{updateTreeLineStyle();return $xeTable.recalculate();});};/**
         * 虚拟树的展开与收起
         * @param rows
         * @param expanded
         * @returns
         */const handleVirtualTreeExpand=(rows,expanded)=>{const{lastScrollLeft,lastScrollTop}=internalData;return handleBaseTreeExpand(rows,expanded).then(()=>{handleVirtualTreeToList();$xeTable.handleTableData();reactData.treeExpandedFlag++;updateAfterDataIndex();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}).then(()=>{return handleRecalculateStyle(true,true,true);}).then(()=>{restoreScrollLocation($xeTable,lastScrollLeft,lastScrollTop);updateTreeLineStyle();setTimeout(()=>{$xeTable.updateCellAreas();},30);});};/**
         * 展开与收起行分组节点
         * @param rows
         * @param expanded
         * @returns
         */const handleRowGroupBaseExpand=(rows,expanded)=>{const{fullAllDataRowIdData,tableFullGroupData,rowGroupExpandedMaps}=internalData;const aggregateOpts=computeAggregateOpts.value;const{mapChildrenField,accordion}=aggregateOpts;const{handleGetRowId}=createHandleGetRowId($xeTable);let validRows=rows;if(mapChildrenField){if(accordion){validRows=validRows.length?[validRows[validRows.length-1]]:[];// 同一级只能展开一个
const matchObj=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(tableFullGroupData,item=>getRowid($xeTable,item)===getRowid($xeTable,validRows[0]),{children:mapChildrenField});if(matchObj){matchObj.items.forEach(item=>{const rowid=handleGetRowId(item);if(rowGroupExpandedMaps[rowid]){delete rowGroupExpandedMaps[rowid];}});}}if(expanded){validRows.forEach(row=>{const rowid=handleGetRowId(row);if(!rowGroupExpandedMaps[rowid]){const rowRest=fullAllDataRowIdData[rowid];if(rowRest){if(row[mapChildrenField]&&row[mapChildrenField].length){rowGroupExpandedMaps[rowid]=row;}}}});}else{validRows.forEach(item=>{const rowid=handleGetRowId(item);if(rowGroupExpandedMaps[rowid]){delete rowGroupExpandedMaps[rowid];}});}}reactData.rowGroupExpandedFlag++;return $xeTable.recalculate();};/**
         * 行分组的展开与收起
         * @param rows
         * @param expanded
         * @returns
         */const handleRowGroupVirtualExpand=(rows,expanded)=>{return handleRowGroupBaseExpand(rows,expanded).then(()=>{handleVirtualTreeToList();$xeTable.handleTableData();reactData.rowGroupExpandedFlag++;updateAfterDataIndex();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}).then(()=>{return handleLazyRecalculate(true,true,true);}).then(()=>{setTimeout(()=>{$xeTable.updateCellAreas();},30);});};/**
         * 处理默认展开分组行
         */const handleDefaultRowGroupExpand=()=>{const{isRowGroupStatus}=reactData;if(isRowGroupStatus){const aggregateOpts=computeAggregateOpts.value;const{expandAll,expandGroupFields}=aggregateOpts;if(expandAll){$xeTable.setAllRowGroupExpand(true);}else if(expandGroupFields&&expandGroupFields.length){$xeTable.setRowGroupExpandByField(expandGroupFields,true);}}};const handleCheckAllEvent=(evnt,value)=>{handleCheckedAllCheckboxRow(value);if(evnt){dispatchEvent('checkbox-all',{records:()=>$xeTable.getCheckboxRecords(),reserves:()=>$xeTable.getCheckboxReserveRecords(),indeterminates:()=>$xeTable.getCheckboxIndeterminateRecords(),checked:value},evnt);}};/**
         * 纵向 Y 可视渲染处理
         */const loadScrollYData=()=>{const{isAllOverflow,isScrollYBig}=reactData;const{mergeBodyList,mergeBodyColMaps,scrollYStore}=internalData;const{preloadSize,startIndex,endIndex,offsetSize}=scrollYStore;const autoOffsetYSize=isAllOverflow?offsetSize:offsetSize+1;const{toVisibleIndex,visibleSize}=handleVirtualYVisible();const offsetItem={startIndex:Math.max(0,isScrollYBig?toVisibleIndex-1:toVisibleIndex-1-offsetSize-preloadSize),endIndex:isScrollYBig?toVisibleIndex+visibleSize:toVisibleIndex+visibleSize+autoOffsetYSize+preloadSize};scrollYStore.visibleStartIndex=toVisibleIndex-1;scrollYStore.visibleEndIndex=toVisibleIndex+visibleSize+1;calculateMergerOffsetIndex(mergeBodyList,mergeBodyColMaps,offsetItem,'row');const{startIndex:offsetStartIndex,endIndex:offsetEndIndex}=offsetItem;if(toVisibleIndex<=startIndex||toVisibleIndex>=endIndex-visibleSize-1){if(startIndex!==offsetStartIndex||endIndex!==offsetEndIndex){scrollYStore.startIndex=offsetStartIndex;scrollYStore.endIndex=offsetEndIndex;$xeTable.updateScrollYData();}}};const createGetRowCacheProp=prop=>{return function(row){const{fullAllDataRowIdData}=internalData;if(row){const rowid=getRowid($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){return rowRest[prop];}}return-1;};};const createGetColumnCacheProp=prop=>{return function(column){const{fullColumnIdData}=internalData;if(column){const colRest=fullColumnIdData[column.id];if(colRest){return colRest[prop];}}return-1;};};const lazyScrollXData=()=>{const{lxTimeout,lxRunTime,scrollXStore}=internalData;const{visibleSize}=scrollXStore;const fpsTime=visibleSize>26?26:visibleSize>16?14:6;if(lxTimeout){clearTimeout(lxTimeout);}if(!lxRunTime||lxRunTime+fpsTime<Date.now()){internalData.lxRunTime=Date.now();loadScrollXData();}internalData.lxTimeout=setTimeout(()=>{internalData.lxTimeout=undefined;internalData.lxRunTime=undefined;loadScrollXData();},fpsTime);};const lazyScrollYData=()=>{const{lyTimeout,lyRunTime,scrollYStore}=internalData;const{visibleSize}=scrollYStore;const fpsTime=visibleSize>30?32:visibleSize>20?18:8;if(lyTimeout){clearTimeout(lyTimeout);}if(!lyRunTime||lyRunTime+fpsTime<Date.now()){internalData.lyRunTime=Date.now();loadScrollYData();}internalData.lyTimeout=setTimeout(()=>{internalData.lyTimeout=undefined;internalData.lyRunTime=undefined;loadScrollYData();},fpsTime);};const handleSyncScroll=(isRollX,isRollY)=>{const{scrollXLoad,scrollYLoad,isAllOverflow}=reactData;const autoWidthColumnList=computeAutoWidthColumnList.value;internalData.lcsRunTime=Date.now();internalData.lcsTimeout=undefined;internalData.intoRunScroll=false;internalData.inVirtualScroll=false;internalData.inWheelScroll=false;internalData.inHeaderScroll=false;internalData.inBodyScroll=false;internalData.inFooterScroll=false;reactData.lazScrollLoading=false;internalData.scrollRenderType='';let xRest=null;let yRest=null;if(!isAllOverflow){calcCellHeight();updateRowOffsetTop();}if(isRollX&&scrollXLoad){xRest=$xeTable.updateScrollXData();}if(isRollY&&scrollYLoad){if(autoWidthColumnList.length){calcCellWidth();}yRest=$xeTable.updateScrollYData().then(()=>{if(autoWidthColumnList.length){calcCellWidth();autoCellWidth();}if(!isAllOverflow){calcCellHeight();updateRowOffsetTop();}return $xeTable.updateScrollYSpace();});}updateRowExpandStyle();return Promise.all([xRest,yRest,scrollXLoad||scrollYLoad?$xeTable.updateCellAreas():null]);};const checkLastSyncScroll=(isRollX,isRollY)=>{const{lcsTimeout}=internalData;reactData.lazScrollLoading=true;if(lcsTimeout){clearTimeout(lcsTimeout);}internalData.lcsTimeout=setTimeout(()=>{handleSyncScroll(isRollX,isRollY).then(()=>{if(reactData.scrollXLoad||reactData.scrollYLoad){(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{updateRowExpandStyle();if(!internalData.lcsTimeout){handleSyncScroll(isRollX,isRollY);}});}});},240);};const getWheelSpeed=lastScrollTime=>{let multiple=1;const currTime=Date.now();if(lastScrollTime+25>currTime){multiple=1.18;}else if(lastScrollTime+30>currTime){multiple=1.15;}else if(lastScrollTime+40>currTime){multiple=1.12;}else if(lastScrollTime+55>currTime){multiple=1.09;}else if(lastScrollTime+75>currTime){multiple=1.06;}else if(lastScrollTime+100>currTime){multiple=1.03;}return multiple;};const syncGanttScrollTop=scrollTop=>{const $xeGanttView=internalData.xeGanttView;if($xeGanttView){const ganttInternalData=$xeGanttView.internalData;const{elemStore:ganttElemStore}=ganttInternalData;const ganttBodyScrollElem=getRefElem(ganttElemStore['main-body-scroll']);if(ganttBodyScrollElem){ganttBodyScrollElem.scrollTop=scrollTop;}}};const dispatchEvent=(type,params,evnt)=>{emit(type,createEvent(evnt,{$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt},params));};const handleScrollToRowColumn=(fieldOrColumn,row,options)=>{const{fullColumnIdData}=internalData;const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(column&&fullColumnIdData[column.id]){return colToVisible($xeTable,options?options.colAlign!==false:true,column,row);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();};const handleUpdateResize=()=>{const el=refElem.value;if(el&&el.clientWidth&&el.clientHeight){$xeTable.recalculate();}};const handleUpdateColResize=(evnt,params)=>{$xeTable.analyColumnWidth();$xeTable.recalculate().then(()=>{$xeTable.saveCustomStore('update:width');$xeTable.refreshScroll().then(()=>{$xeTable.updateCellAreas();});$xeTable.dispatchEvent('column-resizable-change',params,evnt);// 已废弃 resizable-change
$xeTable.dispatchEvent('resizable-change',params,evnt);setTimeout(()=>{$xeTable.recalculate(true);},300);});};const handleUpdateRowResize=(evnt,params)=>{reactData.resizeHeightFlag++;$xeTable.recalculate().then(()=>{$xeTable.refreshScroll().then(()=>{$xeTable.updateCellAreas();});$xeTable.dispatchEvent('row-resizable-change',params,evnt);setTimeout(()=>{$xeTable.recalculate(true);},300);});};const updateColumnOffsetLeft=()=>{const{visibleColumn,fullColumnIdData}=internalData;const el=refElem.value;if(!el||!el.clientWidth){return;}let offsetLeft=0;for(let cIndex=0,rLen=visibleColumn.length;cIndex<rLen;cIndex++){const column=visibleColumn[cIndex];const colid=column.id;const colRest=fullColumnIdData[colid];if(colRest){colRest.oLeft=offsetLeft;}offsetLeft+=column.renderWidth;}};const updateRowOffsetTop=()=>{const{expandColumn}=reactData;const{afterFullData,fullAllDataRowIdData,rowExpandedMaps}=internalData;const el=refElem.value;if(!el||!el.clientWidth){return;}const expandOpts=computeExpandOpts.value;const rowOpts=computeRowOpts.value;const cellOpts=computeCellOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const{handleGetRowId}=createHandleGetRowId($xeTable);let offsetTop=0;for(let rIndex=0,rLen=afterFullData.length;rIndex<rLen;rIndex++){const row=afterFullData[rIndex];const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid]||{};rowRest.oTop=offsetTop;offsetTop+=getCellRestHeight(rowRest,cellOpts,rowOpts,defaultRowHeight);// 是否展开行
if(expandColumn&&rowExpandedMaps[rowid]){offsetTop+=rowRest.expandHeight||expandOpts.height||0;}}};/**
         * 更新展开行样式
         */const updateRowExpandStyle=()=>{const{expandColumn,scrollYLoad,scrollYTop,isScrollYBig}=reactData;const el=refElem.value;if(!el||!el.clientWidth){return;}const expandOpts=computeExpandOpts.value;const{mode}=expandOpts;if(expandColumn&&mode==='fixed'){const{elemStore,fullAllDataRowIdData}=internalData;const rowOpts=computeRowOpts.value;const cellOpts=computeCellOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const rowExpandEl=refRowExpandElem.value;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);if(rowExpandEl&&bodyScrollElem){let isUpdateHeight=false;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(rowExpandEl.children,reEl=>{const expandEl=reEl;const rowid=expandEl.getAttribute('rowid')||'';const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const expandHeight=expandEl.offsetHeight;const trEl=bodyScrollElem.querySelector(`.vxe-body--row[rowid="${rowid}"]`);let offsetTop=0;if(scrollYLoad){if(isScrollYBig&&trEl){offsetTop=trEl.offsetTop+trEl.offsetHeight;}else{offsetTop=rowRest.oTop+getCellRestHeight(rowRest,cellOpts,rowOpts,defaultRowHeight);}}else{if(trEl){offsetTop=trEl.offsetTop+trEl.offsetHeight;}}if(isScrollYBig){offsetTop+=scrollYTop;}expandEl.style.top=toCssUnit(offsetTop);if(!isUpdateHeight){if(rowRest.expandHeight!==expandHeight){isUpdateHeight=true;}}rowRest.expandHeight=expandHeight;}});if(isUpdateHeight){reactData.rowExpandHeightFlag++;(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{updateRowOffsetTop();});}}}};/**
         * 更新树连接线样式
         */const updateTreeLineStyle=()=>{const{treeConfig}=props;if(!treeConfig){return;}const{tableData}=reactData;const{fullAllDataRowIdData,treeExpandedMaps}=internalData;const el=refElem.value;if(!el||!el.clientWidth){return;}const cellOpts=computeCellOpts.value;const rowOpts=computeRowOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const treeOpts=computeTreeOpts.value;const{transform,mapChildrenField}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const{handleGetRowId}=createHandleGetRowId($xeTable);const expParentList=[];const handleNodeRow=(row,rIndex,rows)=>{const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid]||{};const childList=row[transform?mapChildrenField:childrenField];const prevRow=rows[rIndex-1]||null;const nextRow=rows[rIndex+1]||null;if(childList&&childList.length&&treeExpandedMaps[rowid]){expParentList.push({row,prevRow,nextRow});childList.forEach((childRow,crIndex)=>{const childRowid=handleGetRowId(childRow);if(treeExpandedMaps[childRowid]){handleNodeRow(childRow,crIndex,childList);}});}else{if(nextRow){const nextRowid=handleGetRowId(nextRow);const nextRowRest=fullAllDataRowIdData[nextRowid]||{};const currCellHeight=getCellRestHeight(rowRest,cellOpts,rowOpts,defaultRowHeight);const nextCellHeight=getCellRestHeight(nextRowRest,cellOpts,rowOpts,defaultRowHeight);rowRest.oHeight=currCellHeight;rowRest.lineHeight=Math.floor(currCellHeight/2+nextCellHeight/2);}else{rowRest.oHeight=0;rowRest.lineHeight=0;}}};tableData.forEach((row,rIndex)=>{handleNodeRow(row,rIndex,tableData);});external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().lastArrayEach(expParentList,({row,nextRow})=>{const rowid=handleGetRowId(row);const childList=row[transform?mapChildrenField:childrenField];const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const currCellHeight=getCellRestHeight(rowRest,cellOpts,rowOpts,defaultRowHeight);let countOffsetHeight=currCellHeight;let countLineHeight=0;childList.forEach(childRow=>{const childRowid=handleGetRowId(childRow);const childRowRest=fullAllDataRowIdData[childRowid]||{};const childList=childRow[transform?mapChildrenField:childrenField];if(treeExpandedMaps[childRowid]&&childList&&childList.length){countOffsetHeight+=childRowRest.oHeight||0;countLineHeight+=childRowRest.oHeight||0;}else{const cellHeight=getCellRestHeight(childRowRest,cellOpts,rowOpts,defaultRowHeight);childRowRest.oHeight=cellHeight;childRowRest.lineHeight=cellHeight;countOffsetHeight+=cellHeight;countLineHeight+=cellHeight;}});if(nextRow){const nextRowid=handleGetRowId(nextRow);const nextRowRest=fullAllDataRowIdData[nextRowid]||{};const currCellHeight=getCellRestHeight(rowRest,cellOpts,rowOpts,defaultRowHeight);const nextCellHeight=getCellRestHeight(nextRowRest,cellOpts,rowOpts,defaultRowHeight);countOffsetHeight+=currCellHeight;countLineHeight+=Math.floor(currCellHeight/2+nextCellHeight/2);}rowRest.lineHeight=countLineHeight;rowRest.oHeight=countOffsetHeight;}});};const handleRowExpandScroll=()=>{const{elemStore}=internalData;const rowExpandEl=refRowExpandElem.value;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);if(rowExpandEl&&bodyScrollElem){rowExpandEl.scrollTop=bodyScrollElem.scrollTop;}};const handleColumnVisible=visible=>{return function(fieldOrColumn){let status=false;const cols=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn)?fieldOrColumn:[fieldOrColumn];cols.forEach(item=>{const column=handleFieldOrColumn($xeTable,item);if(column){if(column.children&&column.children.length){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column],item=>{item.visible=visible;item.renderVisible=visible;});}else{column.visible=visible;column.renderVisible=visible;}if(!status){status=true;}}});if(status){return $xeTable.handleCustom();}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();};};tableMethods={dispatchEvent,getEl(){return refElem.value;},/**
             * 重置表格的一切数据状态
             */clearAll(){return clearTableAllStatus($xeTable);},/**
             * 同步 data 数据(即将废弃)
             * 如果用了该方法,那么组件将不再记录增删改的状态,只能自行实现对应逻辑
             * 对于某些特殊的场景,比如深层树节点元素发生变动时可能会用到
             */syncData(){table_errLog('vxe.error.delFunc',['syncData','getData']);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{reactData.tableData=[];emit('update:data',internalData.tableFullData);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();});},/**
             * 手动处理数据,用于手动排序与筛选
             * 对于手动更改了排序、筛选...等条件后需要重新处理数据时可能会用到
             */updateData(){const{scrollXLoad,scrollYLoad}=reactData;return $xeTable.handleTableData(true).then(()=>{$xeTable.updateFooter();if(scrollXLoad||scrollYLoad){if(scrollXLoad){$xeTable.updateScrollXSpace();}if(scrollYLoad){$xeTable.updateScrollYSpace();}return $xeTable.refreshScroll();}}).then(()=>{$xeTable.updateCellAreas();return handleLazyRecalculate(true,true,true);}).then(()=>{// 存在滚动行为未结束情况
setTimeout(()=>handleLazyRecalculate(false,true,true),50);});},/**
             * 重新加载数据,不会清空表格状态
             * @param {Array} datas 数据
             */loadData(datas){const{initStatus}=internalData;return loadTableData(datas,false,false).then(()=>{internalData.inited=true;internalData.initStatus=true;if(!initStatus){handleLoadDefaults();}return handleLazyRecalculate(false,true,true);});},/**
             * 重新加载数据,会清空表格状态
             * @param {Array} datas 数据
             */reloadData(datas){return $xeTable.clearAll().then(()=>{internalData.inited=true;internalData.initStatus=true;return loadTableData(datas,true,true);}).then(()=>{handleLoadDefaults();return handleLazyRecalculate(false,true,true);});},/**
             * 修改行数据
             */setRow(rows,record){if(rows&&record){let rest=rows;if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rest=[rows];}const rowkey=getRowkey($xeTable);rest.forEach(row=>{const rowid=getRowid($xeTable,row);const newRecord=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(Object.assign({},record),true);external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(newRecord,rowkey,rowid);Object.assign(row,newRecord);});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 局部加载行数据并恢复到初始状态
             * 对于行数据需要局部更改的场景中可能会用到
             * @param {Row} row 行对象
             * @param {Object} record 新数据
             * @param {String} field 字段名
             */reloadRow(row,record,field){const{keepSource}=props;const{tableData}=reactData;const{sourceDataRowIdData}=internalData;if(keepSource){if($xeTable.isAggregateRecord(row)){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}const rowkey=getRowkey($xeTable);const rowid=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,rowkey);const oRow=sourceDataRowIdData[rowid];if(oRow&&row){if(field){const newValue=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(record||row,field),true);external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,field,newValue);external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(oRow,field,newValue);}else{const newRecord=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(Object.assign({},record),true);external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(newRecord,rowkey,rowid);external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().destructuring(oRow,Object.assign(row,newRecord));}}reactData.tableData=tableData.slice(0);}else{table_errLog('vxe.error.reqProp',['keep-source']);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},getParams(){return props.params;},/**
             * 用于树结构,给行数据加载子节点
             */loadTreeChildren(row,childRecords){const{keepSource}=props;const{tableSourceData,fullDataRowIdData,fullAllDataRowIdData,sourceDataRowIdData}=internalData;const treeOpts=computeTreeOpts.value;const{transform,mapChildrenField}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const parentRest=fullAllDataRowIdData[getRowid($xeTable,row)];const parentLevel=parentRest?parentRest.level:0;return $xeTable.createData(childRecords).then(rows=>{if(keepSource){const rowid=getRowid($xeTable,row);const matchObj=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(tableSourceData,item=>rowid===getRowid($xeTable,item),{children:childrenField});if(matchObj){matchObj.item[childrenField]=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(rows,true);}rows.forEach(childRow=>{const rowid=getRowid($xeTable,childRow);sourceDataRowIdData[rowid]=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(childRow,true);});}external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(rows,(childRow,index,items,path,parentItem,nodes)=>{const rowid=getRowid($xeTable,childRow);const parentRow=parentItem||parentRest.row;const rest={row:childRow,rowid,_seq:-1,seq:-1,index,_index:-1,$index:-1,treeIndex:-1,_tIndex:-1,items,parent:parentRow,level:parentLevel+nodes.length,height:0,resizeHeight:0,oTop:0,expandHeight:0};fullDataRowIdData[rowid]=rest;fullAllDataRowIdData[rowid]=rest;},{children:childrenField});row[childrenField]=rows;if(transform){row[mapChildrenField]=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(rows,false);}updateAfterDataIndex();return rows;});},/**
             * 加载列配置
             * 对于表格列需要重载、局部递增场景下可能会用到
             * @param {ColumnInfo} columns 列配置
             */loadColumn(columns){const{lastScrollLeft,lastScrollTop}=internalData;const collectColumn=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().mapTree(columns,column=>(0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)(cell.createColumn($xeTable,column)));return handleInitColumn(collectColumn).then(()=>{let targetScrollLeft=lastScrollLeft;let targetScrollTop=lastScrollTop;const virtualXOpts=computeVirtualXOpts.value;const virtualYOpts=computeVirtualYOpts.value;// 是否在更新数据之后自动滚动重置滚动条
if(virtualXOpts.scrollToLeftOnChange){targetScrollLeft=0;}if(virtualYOpts.scrollToTopOnChange){targetScrollTop=0;}restoreScrollLocation($xeTable,targetScrollLeft,targetScrollTop);});},/**
             * 加载列配置并恢复到初始状态
             * 对于表格列需要重载、局部递增场景下可能会用到
             * @param {ColumnInfo} columns 列配置
             */reloadColumn(columns){return $xeTable.clearAll().then(()=>{return $xeTable.loadColumn(columns);});},/**
             * 根据 tr 元素获取对应的 row 信息
             * @param {Element} tr 元素
             */getRowNode(tr){if(tr){const{fullAllDataRowIdData}=internalData;const rowid=tr.getAttribute('rowid');if(rowid){const rowRest=fullAllDataRowIdData[rowid];if(rowRest){return{rowid:rowRest.rowid,item:rowRest.row,index:rowRest.index,items:rowRest.items,parent:rowRest.parent};}}}return null;},/**
             * 根据 th/td 元素获取对应的 column 信息
             * @param {Element} cell 元素
             */getColumnNode(cell){if(cell){const{fullColumnIdData}=internalData;const colid=cell.getAttribute('colid');if(colid){const colRest=fullColumnIdData[colid];if(colRest){return{colid:colRest.colid,item:colRest.column,index:colRest.index,items:colRest.items,parent:colRest.parent};}}}return null;},/**
             * 根据 row 获取序号
             * @param {Row} row 行对象
             */getRowSeq:createGetRowCacheProp('seq'),/**
             * 根据 row 获取相对于 data 中的索引
             * @param {Row} row 行对象
             */getRowIndex:createGetRowCacheProp('index'),/**
             * 根据 row 获取相对于当前数据中的索引
             * @param {Row} row 行对象
             */getVTRowIndex:createGetRowCacheProp('_index'),/**
             * 根据 row 获取渲染中的虚拟索引
             * @param {Row} row 行对象
             */getVMRowIndex:createGetRowCacheProp('$index'),/**
             * 根据 column 获取相对于 columns 中的索引
             * @param {ColumnInfo} column 列配置
             */getColumnIndex:createGetColumnCacheProp('index'),/**
             * 根据 column 获取相对于当前表格列中的索引
             * @param {ColumnInfo} column 列配置
             */getVTColumnIndex:createGetColumnCacheProp('_index'),/**
             * 根据 column 获取渲染中的虚拟索引
             * @param {ColumnInfo} column 列配置
             */getVMColumnIndex:createGetColumnCacheProp('$index'),/**
             * 创建 data 对象
             * 对于某些特殊场景可能会用到,会自动对数据的字段名进行检测,如果不存在就自动定义
             * @param {Array} records 新数据
             */createData(records){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)($xeTable.defineField(records));});},/**
             * 创建 Row|Rows 对象
             * 对于某些特殊场景需要对数据进行手动插入时可能会用到
             * @param {Array/Object} records 新数据
             */createRow(records){const isArr=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(records);if(!isArr){records=[records||{}];}return $xeTable.createData(records).then(rows=>isArr?rows:rows[0]);},/**
             * 还原数据
             * 如果不传任何参数,则还原整个表格
             * 如果传 row 则还原一行
             * 如果传 rows 则还原多行
             * 如果还额外传了 field 则还原指定的单元格数据
             */revertData(rows,field){const{keepSource,treeConfig}=props;const{fullAllDataRowIdData,fullDataRowIdData,tableSourceData,sourceDataRowIdData,tableFullData,afterFullData,removeRowMaps}=internalData;const treeOpts=computeTreeOpts.value;const{transform}=treeOpts;const{handleGetRowId}=createHandleGetRowId($xeTable);if(!keepSource){table_errLog('vxe.error.reqProp',['keep-source']);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}let targetRows=rows;if(rows){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){targetRows=[rows];}}else{targetRows=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toArray($xeTable.getUpdateRecords());}let reDelFlag=false;if(targetRows.length){targetRows.forEach(item=>{const rowid=handleGetRowId(item);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const row=rowRest.row;if(!$xeTable.isInsertByRow(row)){const oRow=sourceDataRowIdData[rowid];if(oRow&&row){if(field){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,field,external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(oRow,field),true));}else{external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().destructuring(row,external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(oRow,true));}if(!fullDataRowIdData[rowid]&&$xeTable.isRemoveByRow(row)){if(removeRowMaps[rowid]){delete removeRowMaps[rowid];}tableFullData.unshift(row);afterFullData.unshift(row);reDelFlag=true;}}}}});}if(rows){if(reDelFlag){reactData.removeRowFlag++;$xeTable.updateFooter();$xeTable.cacheRowMap(false);$xeTable.handleTableData(treeConfig&&transform);if(!(treeConfig&&transform)){$xeTable.updateAfterDataIndex();}$xeTable.checkSelectionStatus();if(reactData.scrollYLoad){$xeTable.updateScrollYSpace();}}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{$xeTable.updateCellAreas();return handleLazyRecalculate(false,true,true);});}return $xeTable.reloadData(tableSourceData);},/**
             * 清空单元格内容
             * 如果不创参数,则清空整个表格内容
             * 如果传 row 则清空一行内容
             * 如果传 rows 则清空多行内容
             * 如果还额外传了 field 则清空指定单元格内容
             * @param {Array/Row} rows 行数据
             * @param {String} field 字段名
             */clearData(rows,field){const{tableFullData,visibleColumn}=internalData;if(!arguments.length){rows=tableFullData;}else if(rows&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rows=[rows];}if(field){rows.forEach(row=>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,field,null));}else{rows.forEach(row=>{visibleColumn.forEach(column=>{if(column.field){setCellValue(row,column,null);}});});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},effectCellData(row,column,options){const{fullCellStoreMaps}=internalData;const editOpts=computeEditOpts.value;const{key,isChanged,setValue,getResult}=options;const rowid=getRowid($xeTable,row);const colid=column.id;let rowStore=fullCellStoreMaps[rowid];const cellValue=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,column.field);const restParams={$table:$xeTable,row,rowid,column,colid,cellValue,oldValue:null};if(editOpts.cache===false&&key==='render_table_cell'){const rest=restParams;rest.cellResult=getResult?getResult(restParams):cellValue;return rest;}if(!rowStore){rowStore={};fullCellStoreMaps[rowid]=rowStore;}let cellStore=rowStore[colid];if(!cellStore){cellStore={value:undefined,result:{}};rowStore[colid]=cellStore;}const restData=rowStore[colid];const oldValue=restData.value;restParams.oldValue=oldValue;if(isChanged?!isChanged(restParams):oldValue!==cellValue){restData.value=setValue?setValue(restParams):cellValue;restData.result={};}const storeData=restData.result;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(storeData[key])){storeData[key]=getResult?getResult(restParams):cellValue;}const cellResult=storeData[key];const rest=restParams;rest.cellResult=cellResult;return rest;},getCellElement(row,fieldOrColumn){const{elemStore}=internalData;const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(!column){return null;}const rowid=getRowid($xeTable,row);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);let bodyElem;if(column){if(column.fixed){if(column.fixed==='left'){if(leftScrollElem){bodyElem=leftScrollElem;}}else{if(rightScrollElem){bodyElem=rightScrollElem;}}}if(!bodyElem){bodyElem=bodyScrollElem;}if(bodyElem){return bodyElem.querySelector(`.vxe-body--row[rowid="${rowid}"] .${column.id}`);}}return null;},getCellLabel(row,fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(!column){return null;}const{editConfig}=props;const{formatter,editRender,cellRender}=column;let etOpSize=null;let etOgSize=null;let clOpSize=null;let clOgSize=null;if(editRender){etOpSize=editRender.options?editRender.options.length:0;etOgSize=editRender.optionGroups?editRender.optionGroups.length:0;}if(cellRender){clOpSize=cellRender.options?cellRender.options.length:0;clOgSize=cellRender.optionGroups?cellRender.optionGroups.length:0;}// formatter > tableCellFormatter
const renderOpts=formatter?null:editConfig&&isEnableConf(editRender)?editRender:isEnableConf(cellRender)?cellRender:null;const compConf=renderOpts?table_renderer.get(renderOpts.name):null;const tcFormatter=compConf?compConf.tableCellFormatter:null;const cellValue=getCellValue(row,column);let cellLabel=cellValue;if(formatter||tcFormatter){let formatData;const{fullAllDataRowIdData}=internalData;const rowid=getRowid($xeTable,row);const colid=column.id;const rowRest=fullAllDataRowIdData[rowid];if(rowRest){formatData=rowRest.formatData;if(!formatData){formatData=fullAllDataRowIdData[rowid].formatData={};}if(rowRest&&formatData[colid]){const ftValue=formatData[colid].value;if(ftValue&&ftValue[0]===cellValue&&ftValue[1]===etOpSize&&ftValue[2]===etOgSize&&ftValue[3]===clOpSize&&ftValue[4]===clOgSize){return formatData[colid].label;}}}const formatParams={$table:$xeTable,cellValue,row,rowIndex:$xeTable.getRowIndex(row),column,columnIndex:$xeTable.getColumnIndex(column)};if(formatter){if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(formatter)){const gFormatOpts=table_formats.get(formatter);const tcFormatMethod=gFormatOpts?gFormatOpts.tableCellFormatMethod||gFormatOpts.cellFormatMethod:null;cellLabel=tcFormatMethod?tcFormatMethod(formatParams):'';}else if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(formatter)){const gFormatOpts=table_formats.get(formatter[0]);const tcFormatMethod=gFormatOpts?gFormatOpts.tableCellFormatMethod||gFormatOpts.cellFormatMethod:null;cellLabel=tcFormatMethod?tcFormatMethod(formatParams,...formatter.slice(1)):'';}else{cellLabel=formatter(formatParams);}}else if(renderOpts&&tcFormatter){cellLabel=tcFormatter(renderOpts,formatParams);}if(formatData){const ftValue=[cellValue,etOpSize,etOgSize,clOpSize,clOgSize];formatData[colid]={value:ftValue,label:cellLabel};}}return cellLabel;},updateCellLabel(row,fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(!column){return null;}const{fullAllDataRowIdData}=internalData;const rowid=getRowid($xeTable,row);if(rowid){const colid=column.id;const rowid=getRowid($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const formatData=rowRest.formatData;if(formatData){delete formatData[colid];}}}return $xeTable.getFooterCellLabel(row,column);},clearFormatterCache(isUpdate){const{tableData,tableColumn}=reactData;const{fullAllDataRowIdData}=internalData;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(fullAllDataRowIdData,rowRest=>{if(rowRest.formatData){rowRest.formatData=undefined;}});if(isUpdate){tableData.forEach(row=>{tableColumn.forEach(column=>{$xeTable.getCellLabel(row,column);});});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},getHeaderCellLabel(fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(!column){return null;}const{headerFormatter}=column;const _columnIndex=$xeTable.getVTColumnIndex(column);let cellLabel=column.getTitle();if(headerFormatter){let formatData;const{headerFullDataColData}=internalData;const colid=column.id;let colRest=headerFullDataColData[colid];if(!colRest){colRest=headerFullDataColData[colid]={};}const formatObj=colRest.formatObj;if(formatObj&&formatObj.value===cellLabel){return formatObj.label;}const headFormatParams={$table:$xeTable,cellTitle:cellLabel,cellValue:cellLabel,column,_columnIndex,columnIndex:$xeTable.getColumnIndex(column)};if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(headerFormatter)){const gFormatOpts=table_formats.get(headerFormatter);const fcFormatMethod=gFormatOpts?gFormatOpts.tableHeaderCellFormatMethod:null;cellLabel=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toValueString(fcFormatMethod?fcFormatMethod(headFormatParams):'');}else if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(headerFormatter)){const gFormatOpts=table_formats.get(headerFormatter[0]);const fcFormatMethod=gFormatOpts?gFormatOpts.tableHeaderCellFormatMethod:null;cellLabel=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toValueString(fcFormatMethod?fcFormatMethod(headFormatParams,...headerFormatter.slice(1)):'');}else{cellLabel=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toValueString(headerFormatter(headFormatParams));}if(formatData){colRest.formatObj={value:cellLabel,label:cellLabel};}}return cellLabel;},updateHeaderCellLabel(fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(!column){return'';}const{headerFullDataColData}=internalData;const colid=column.id;const colRest=headerFullDataColData[colid];if(colRest){colRest.formatObj=undefined;}return $xeTable.getHeaderCellLabel(column);},clearHeaderFormatterCache(isUpdate){const{tableColumn}=reactData;const{headerFullDataColData}=internalData;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(headerFullDataColData,colRest=>{if(colRest.formatObj){colRest.formatObj=undefined;}});if(isUpdate){tableColumn.forEach(column=>{$xeTable.getHeaderCellLabel(column);});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},getFooterCellLabel(row,fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(!column){return null;}const{footerFormatter}=column;const _columnIndex=$xeTable.getVTColumnIndex(column);let itemValue='';// 兼容老模式
if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(row)){itemValue=row[_columnIndex];}else{itemValue=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,column.field);}let cellLabel=itemValue;if(footerFormatter){let formatData;const{footerTableData}=reactData;const{footerFullDataRowData}=internalData;const colid=column.id;const $rowIndex=footerTableData.indexOf(row);let rowRest=null;if($rowIndex>-1){rowRest=footerFullDataRowData[$rowIndex];if(!rowRest){rowRest=footerFullDataRowData[$rowIndex]={};}formatData=rowRest.formatData;if(!formatData){formatData=footerFullDataRowData[$rowIndex].formatData={};}if(rowRest&&formatData[colid]){if(formatData[colid].value===itemValue){return formatData[colid].label;}}}const footerFormatParams={$table:$xeTable,cellValue:itemValue,itemValue,row,items:row,$rowIndex,column,_columnIndex,columnIndex:$xeTable.getColumnIndex(column)};if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(footerFormatter)){const gFormatOpts=table_formats.get(footerFormatter);const fcFormatMethod=gFormatOpts?gFormatOpts.tableFooterCellFormatMethod:null;cellLabel=fcFormatMethod?fcFormatMethod(footerFormatParams):'';}else if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(footerFormatter)){const gFormatOpts=table_formats.get(footerFormatter[0]);const fcFormatMethod=gFormatOpts?gFormatOpts.tableFooterCellFormatMethod:null;cellLabel=fcFormatMethod?fcFormatMethod(footerFormatParams,...footerFormatter.slice(1)):'';}else{cellLabel=footerFormatter(footerFormatParams);}if(formatData){formatData[colid]={value:itemValue,label:cellLabel};}}return cellLabel;},updateFooterCellLabel(row,fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(!column){return null;}const{footerTableData}=reactData;const{footerFullDataRowData}=internalData;const colid=column.id;const $rowIndex=footerTableData.indexOf(row);const rowRest=footerFullDataRowData[$rowIndex];if(rowRest){const formatData=rowRest.formatData;if(formatData){delete formatData[colid];}}return $xeTable.getFooterCellLabel(row,column);},clearFooterFormatterCache(isUpdate){const{tableData,tableColumn}=reactData;const{footerFullDataRowData}=internalData;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(footerFullDataRowData,rowRest=>{if(rowRest.formatData){rowRest.formatData=undefined;}});if(isUpdate){tableData.forEach(row=>{tableColumn.forEach(column=>{$xeTable.getFooterCellLabel(row,column);});});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 检查是否为临时行数据
             */isInsertByRow(row){const rowid=getRowid($xeTable,row);return!!reactData.insertRowFlag&&!!internalData.insertRowMaps[rowid];},isRemoveByRow(row){const rowid=getRowid($xeTable,row);return!!reactData.removeRowFlag&&!!internalData.removeRowMaps[rowid];},/**
             * 删除所有新增的临时数据
             */removeInsertRow(){const{insertRowMaps}=internalData;return $xeTable.remove(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().values(insertRowMaps));},/**
             * 检查行或列数据是否发生改变
             */isUpdateByRow(rowidOrRow,field){const{keepSource}=props;const{fullDataRowIdData,sourceDataRowIdData}=internalData;const keepFields=computeKeepFields.value;if(keepSource){const rowid=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(rowidOrRow)||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(rowidOrRow)?rowidOrRow:getRowid($xeTable,rowidOrRow);const rowRest=fullDataRowIdData[rowid];// 新增的数据不需要检测
if(!rowRest){return false;}const row=rowRest.row;const oRow=sourceDataRowIdData[rowid];if(!oRow){return false;}if(arguments.length>1){return!eqCellValue(row,oRow,field).result;}for(let i=0;i<keepFields.length;i++){if(!eqCellValue(row,oRow,keepFields[i]).result){return true;}}}return false;},getUpdateCells(){const{keepSource,treeConfig}=props;const{tableFullData,tableFullTreeData,fullDataRowIdData,sourceDataRowIdData,fullColumnFieldData}=internalData;const treeOpts=computeTreeOpts.value;const keepFields=computeKeepFields.value;const cellList=[];if(keepSource){const{handleGetRowId}=createHandleGetRowId($xeTable);const handleCell=item=>{const rowid=handleGetRowId(item);const rowRest=fullDataRowIdData[rowid];// 新增的数据不需要检测
if(!rowRest){return;}const row=rowRest.row;const oRow=sourceDataRowIdData[rowid];if(!oRow){return;}for(let i=0;i<keepFields.length;i++){const field=keepFields[i];const{result,newValue,oldValue}=eqCellValue(row,oRow,field);if(!result){const column=fullColumnFieldData[field]?fullColumnFieldData[field].column:null;cellList.push({row,rowid,column,field,newValue,oldValue});}}};if(treeConfig){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullTreeData,handleCell,treeOpts);}else{tableFullData.forEach(handleCell);}}return cellList;},/**
             * 获取表格的可视列,也可以指定索引获取列
             * @param {Number} columnIndex 索引
             */getColumns(columnIndex){const{visibleColumn}=internalData;return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(columnIndex)?visibleColumn.slice(0):visibleColumn[columnIndex];},/**
             * 根据列获取列的唯一主键
             */getColid(fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);return column?column.id:null;},/**
             * 根据列的唯一主键获取列
             * @param {String} colid 列主键
             */getColumnById(colid){const{fullColumnIdData}=internalData;return colid&&fullColumnIdData[colid]?fullColumnIdData[colid].column:null;},/**
             * 根据列的字段名获取列
             * @param {String} field 字段名
             */getColumnByField(field){const fullColumnFieldData=internalData.fullColumnFieldData;return field&&fullColumnFieldData[field]?fullColumnFieldData[field].column:null;},getParentColumn(fieldOrColumn){const{fullColumnIdData}=internalData;const column=handleFieldOrColumn($xeTable,fieldOrColumn);return column&&column.parentId&&fullColumnIdData[column.parentId]?fullColumnIdData[column.parentId].column:null;},/**
             * 获取当前表格的列
             * 收集到的全量列、全量表头列、处理条件之后的全量表头列、当前渲染中的表头列
             */getTableColumn(){return{collectColumn:internalData.collectColumn.slice(0),fullColumn:internalData.tableFullColumn.slice(0),visibleColumn:internalData.visibleColumn.slice(0),tableColumn:reactData.tableColumn.slice(0)};},/**
             * 移动列到指定列的位置
             * @param fieldOrColumn
             * @param targetFieldOrColumn
             * @param options
             */moveColumnTo(fieldOrColumn,targetFieldOrColumn,options){const{fullColumnIdData,visibleColumn}=internalData;const{dragToChild,dragPos,isCrossDrag}=Object.assign({},options);const dragCol=handleFieldOrColumn($xeTable,fieldOrColumn);let prevDragCol=null;const colRest=dragCol?fullColumnIdData[dragCol.id]:null;let defPos='left';if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(targetFieldOrColumn)){if(colRest&&targetFieldOrColumn){let currList=colRest.items;let offsetIndex=colRest._index+targetFieldOrColumn;if(isCrossDrag){currList=visibleColumn;offsetIndex=colRest._index+targetFieldOrColumn;}if(offsetIndex>0&&offsetIndex<currList.length-1){prevDragCol=currList[offsetIndex];}if(targetFieldOrColumn>0){defPos='right';}}}else{prevDragCol=handleFieldOrColumn($xeTable,targetFieldOrColumn);const targetColRest=prevDragCol?fullColumnIdData[prevDragCol.id]:null;if(colRest&&targetColRest){if(targetColRest._index>colRest._index){defPos='right';}}}return $xeTable.handleColDragSwapEvent(null,true,dragCol,prevDragCol,dragPos||defPos,dragToChild===true);},/**
             * 移动行到指定行的位置
             * @param rowidOrRow
             * @param targetRowidOrRow
             * @param options
             */moveRowTo(rowidOrRow,targetRowidOrRow,options){const{treeConfig}=props;const{fullAllDataRowIdData,afterFullData}=internalData;const{dragToChild,dragPos,isCrossDrag}=Object.assign({},options);const treeOpts=computeTreeOpts.value;const dragRow=handleRowidOrRow($xeTable,rowidOrRow);let prevDragRow=null;let defPos='top';const rowRest=dragRow?fullAllDataRowIdData[getRowid($xeTable,dragRow)]:null;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(targetRowidOrRow)){if(rowRest&&targetRowidOrRow){let currList=afterFullData;let offsetIndex=rowRest._index+targetRowidOrRow;if(treeConfig){currList=rowRest.items;if(treeOpts.transform){offsetIndex=rowRest.treeIndex+targetRowidOrRow;if(isCrossDrag){currList=afterFullData;offsetIndex=rowRest._index+targetRowidOrRow;}}}if(offsetIndex>=0&&offsetIndex<=currList.length-1){prevDragRow=currList[offsetIndex];}if(targetRowidOrRow>0){defPos='bottom';}}}else{prevDragRow=handleRowidOrRow($xeTable,targetRowidOrRow);const targetRowRest=prevDragRow?fullAllDataRowIdData[getRowid($xeTable,prevDragRow)]:null;if(rowRest&&targetRowRest){if(targetRowRest._index>rowRest._index){defPos='bottom';}}}const rest=$xeTable.handleRowDragSwapEvent(null,true,dragRow,prevDragRow,dragPos||defPos,dragToChild===true);return rest;},/**
             * 获取表格的全量列
             */getFullColumns(){const{collectColumn}=internalData;return collectColumn.slice(0);},/**
             * 获取数据,和 data 的行为一致,也可以指定索引获取数据
             */getData(rowIndex){const tableSynchData=props.data||internalData.tableSynchData;return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(rowIndex)?tableSynchData.slice(0):tableSynchData[rowIndex];},/**
             * 用于多选行,获取已选中的数据
             */getCheckboxRecords(isFull){const{treeConfig}=props;const{updateCheckboxFlag}=reactData;const{tableFullData,afterFullData,tableFullTreeData,fullDataRowIdData,afterFullRowMaps,selectCheckboxMaps}=internalData;const treeOpts=computeTreeOpts.value;const checkboxOpts=computeCheckboxOpts.value;const{transform,mapChildrenField}=treeOpts;const{checkField}=checkboxOpts;const childrenField=treeOpts.children||treeOpts.childrenField;let rowList=[];if(updateCheckboxFlag){if(checkField){if(treeConfig){// 如果开启 transform 默认就是完整数据
const currTableData=isFull?transform?tableFullTreeData:tableFullData:transform?tableFullTreeData:afterFullData;rowList=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().filterTree(currTableData,row=>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,checkField),{children:transform?mapChildrenField:childrenField});}else{const currTableData=isFull?tableFullData:afterFullData;rowList=currTableData.filter(row=>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,checkField));}}else{const currMaps=isFull||treeConfig&&!transform?fullDataRowIdData:afterFullRowMaps;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(selectCheckboxMaps,(row,rowid)=>{if(currMaps[rowid]){rowList.push(fullDataRowIdData[rowid].row);}});}}return rowList;},/**
             * 只对 tree-config 有效,获取行的子级
             */getTreeRowChildren(rowOrRowid){const{treeConfig}=props;const{fullAllDataRowIdData}=internalData;const treeOpts=computeTreeOpts.value;const{transform,mapChildrenField}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;if(rowOrRowid&&treeConfig){let rowid;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(rowOrRowid)){rowid=rowOrRowid;}else{rowid=getRowid($xeTable,rowOrRowid);}if(rowid){const rest=fullAllDataRowIdData[rowid];const row=rest?rest.row:null;if(row){return row[transform?mapChildrenField:childrenField]||[];}}}return[];},/**
             * 只对 tree-config 有效,用于树形结构,获取指定行的层级
             */getTreeRowLevel(rowOrRowid){const{treeConfig}=props;const{fullAllDataRowIdData}=internalData;if(rowOrRowid&&treeConfig){let rowid;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(rowOrRowid)){rowid=rowOrRowid;}else{rowid=getRowid($xeTable,rowOrRowid);}if(rowid){const rest=fullAllDataRowIdData[rowid];if(rest){return rest.level;}}}return-1;},/**
             * 只对 tree-config 有效,获取行的父级
             */getTreeParentRow(rowOrRowid){const{treeConfig}=props;const{fullAllDataRowIdData}=internalData;if(rowOrRowid&&treeConfig){let rowid;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(rowOrRowid)){rowid=rowOrRowid;}else{rowid=getRowid($xeTable,rowOrRowid);}if(rowid){const rest=fullAllDataRowIdData[rowid];if(rest){return rest.parent;}}}return null;},getParentRow(rowOrRowid){table_warnLog('vxe.error.delFunc',['getParentRow','getTreeParentRow']);return $xeTable.getTreeParentRow(rowOrRowid);},/**
             * 根据行的唯一主键获取行
             * @param {String/Number} rowid 行主键
             */getRowById(cellValue){const{fullAllDataRowIdData}=internalData;const rowid=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(cellValue)?'':encodeURIComponent(cellValue||'');return fullAllDataRowIdData[rowid]?fullAllDataRowIdData[rowid].row:null;},/**
             * 根据行获取行的唯一主键
             * @param {Row} row 行对象
             */getRowid(row){return getRowid($xeTable,row);},/**
             * 获取处理后的表格数据
             * 如果存在筛选条件,继续处理
             * 如果存在排序,继续处理
             */getTableData(){const{tableData,footerTableData}=reactData;const{tableFullData,afterFullData,tableFullTreeData}=internalData;return{fullData:props.treeConfig?tableFullTreeData.slice(0):tableFullData.slice(0),visibleData:afterFullData.slice(0),tableData:tableData.slice(0),footerData:footerTableData.slice(0)};},/**
             * 获取表格的全量数据,如果是 tree-config 则返回带层级的树结构
             */getFullData(){const{treeConfig}=props;const{tableFullData,tableFullTreeData}=internalData;if(treeConfig){return tableFullTreeData.slice(0);}return tableFullData.slice(0);},/**
             * 设置为固定列
             */setColumnFixed(fieldOrColumn,fixed){let status=false;const cols=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn)?fieldOrColumn:[fieldOrColumn];const columnOpts=computeColumnOpts.value;const isMaxFixedColumn=computeIsMaxFixedColumn.value;for(let i=0;i<cols.length;i++){const item=cols[i];const column=handleFieldOrColumn($xeTable,item);const targetColumn=getRootColumn($xeTable,column);if(targetColumn&&targetColumn.fixed!==fixed){// 是否超过最大固定列数量
if(!targetColumn.fixed&&isMaxFixedColumn){if(core_.VxeUI.modal){core_.VxeUI.modal.message({status:'error',content:table_getI18n('vxe.table.maxFixedCol',[columnOpts.maxFixedSize])});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([targetColumn],column=>{column.fixed=fixed;column.renderFixed=fixed;});$xeTable.saveCustomStore('update:fixed');if(!status){status=true;}}}if(status){return $xeTable.refreshColumn();}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 取消指定固定列
             */clearColumnFixed(fieldOrColumn){let status=false;const cols=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn)?fieldOrColumn:[fieldOrColumn];cols.forEach(item=>{const column=handleFieldOrColumn($xeTable,item);const targetColumn=getRootColumn($xeTable,column);if(targetColumn&&targetColumn.fixed){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([targetColumn],column=>{column.fixed=null;column.renderFixed=null;});$xeTable.saveCustomStore('update:fixed');if(!status){status=true;}}});if(status){return $xeTable.refreshColumn();}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 隐藏指定列
             */hideColumn:handleColumnVisible(false),/**
             * 显示指定列
             */showColumn:handleColumnVisible(true),setColumnWidth(fieldOrColumn,width){const{elemStore}=internalData;let status=false;const cols=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumn)?fieldOrColumn:[fieldOrColumn];let cWidth=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(width);if(isScale(width)){const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const bodyWidth=bodyScrollElem?bodyScrollElem.clientWidth-1:0;cWidth=Math.floor(cWidth*bodyWidth);}if(cWidth){cols.forEach(item=>{const column=handleFieldOrColumn($xeTable,item);if(column){column.resizeWidth=cWidth;if(!status){status=true;}}});if(status){return $xeTable.refreshColumn().then(()=>{return{status};});}}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{return{status};});},getColumnWidth(fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(column){return column.renderWidth;}return 0;},/**
             * 手动重置列的显示隐藏、列宽拖动的状态、固定列、排序列;
             * 如果为 true 则重置所有状态
             * 如果已关联工具栏,则会同步更新
             */resetColumn(options){table_warnLog('vxe.error.delFunc',['resetColumn','resetCustom']);return $xeTable.resetCustom(options);},/**
             * 刷新列信息
             * 将固定的列左边、右边分别靠边
             * 如果传 true 则会检查列顺序并排序
             */refreshColumn(initSort){if(initSort){handleUpdateColumn();}return parseColumns(true).then(()=>{return $xeTable.refreshScroll();}).then(()=>{return handleLazyRecalculate(false,true,true);});},setRowHeightConf(heightConf){const{fullAllDataRowIdData}=internalData;let status=false;if(heightConf){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(heightConf,(height,rowid)=>{const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const rHeight=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(height);if(rHeight){rowRest.resizeHeight=rHeight;if(!status){status=true;}}}});if(status){internalData.isResizeCellHeight=true;reactData.resizeHeightFlag++;}}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{updateRowOffsetTop();return{status};});},getRowHeightConf(isFull){const{fullAllDataRowIdData,afterFullData}=internalData;const{handleGetRowId}=createHandleGetRowId($xeTable);const rowOpts=computeRowOpts.value;const cellOpts=computeCellOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const rest={};afterFullData.forEach(row=>{const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const resizeHeight=rowRest.resizeHeight;if(resizeHeight||isFull){const currCellHeight=getCellRestHeight(rowRest,cellOpts,rowOpts,defaultRowHeight);rest[rowid]=currCellHeight;}}});return rest;},recalcRowHeight(rowOrId){const{fullAllDataRowIdData}=internalData;const rows=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rowOrId)?rowOrId:[rowOrId];const el=refElem.value;if(el){const{handleGetRowId}=createHandleGetRowId($xeTable);el.setAttribute('data-calc-row','Y');rows.forEach(row=>{const rowid=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(row)||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(row)?row:handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){rowRest.resizeHeight=calcCellAutoHeight(rowid,rowRest,el);}el.removeAttribute('data-calc-row');});reactData.calcCellHeightFlag++;}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},setRowHeight(rowOrId,height){const{fullAllDataRowIdData}=internalData;let status=false;const rows=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rowOrId)?rowOrId:[rowOrId];let rHeight=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toInteger(height);if(isScale(height)){const tableBody=refTableBody.value;const bodyElem=tableBody?tableBody.$el:null;const bodyHeight=bodyElem?bodyElem.clientHeight-1:0;rHeight=Math.floor(rHeight*bodyHeight);}if(rHeight){const{handleGetRowId}=createHandleGetRowId($xeTable);rows.forEach(row=>{const rowid=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(row)||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(row)?row:handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){rowRest.resizeHeight=rHeight;if(!status){status=true;}}});if(status){internalData.isResizeCellHeight=true;reactData.resizeHeightFlag++;}}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{return{status};});},getRowHeight(rowOrId){const{fullAllDataRowIdData}=internalData;const rowOpts=computeRowOpts.value;const cellOpts=computeCellOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const rowid=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(rowOrId)||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(rowOrId)?rowOrId:getRowid($xeTable,rowOrId);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){return getCellRestHeight(rowRest,cellOpts,rowOpts,defaultRowHeight);}return 0;},/**
             * 刷新滚动操作,手动同步滚动相关位置(对于某些特殊的操作,比如滚动条错位、固定列不同步)
             */refreshScroll(){const{elemStore,lastScrollLeft,lastScrollTop}=internalData;const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);const xHandleEl=refScrollXHandleElem.value;const yHandleEl=refScrollYHandleElem.value;return new Promise(resolve=>{// 还原滚动条位置
if(lastScrollLeft||lastScrollTop){return restoreScrollLocation($xeTable,lastScrollLeft,lastScrollTop).then(()=>{// 存在滚动行为未结束情况
setTimeout(resolve,10);});}internalData.intoRunScroll=true;// 重置
setScrollTop(yHandleEl,lastScrollTop);setScrollTop(bodyScrollElem,lastScrollTop);setScrollTop(leftScrollElem,lastScrollTop);setScrollTop(rightScrollElem,lastScrollTop);setScrollLeft(xHandleEl,lastScrollLeft);setScrollLeft(bodyScrollElem,lastScrollLeft);setScrollLeft(headerScrollElem,lastScrollLeft);setScrollLeft(footerScrollElem,lastScrollLeft);// 存在滚动行为未结束情况
setTimeout(()=>{internalData.intoRunScroll=false;resolve();},10);});},/**
             * 重新渲染布局
             * 刷新布局
             */recalculate(reFull){const isForce=!!reFull;return handleLazyRecalculate(isForce,isForce,isForce);},openTooltip(target,content){const $commTip=refCommTooltip.value;if($commTip&&$commTip.open){return $commTip.open(target,content);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 关闭 tooltip
             */closeTooltip(){const{tooltipStore}=reactData;const $tooltip=refTooltip.value;const $commTip=refCommTooltip.value;if(tooltipStore.visible){Object.assign(tooltipStore,{row:null,column:null,content:null,visible:false,type:null,currOpts:{}});if($tooltip&&$tooltip.close){$tooltip.close();}}if($commTip&&$commTip.close){$commTip.close();}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 判断列头复选框是否被选中
             */isAllCheckboxChecked(){return reactData.isAllSelected;},/**
             * 判断列头复选框是否被半选
             */isAllCheckboxIndeterminate(){return!reactData.isAllSelected&&reactData.isIndeterminate;},/**
             * 获取复选框半选状态的行数据
             */getCheckboxIndeterminateRecords(isFull){const{treeConfig}=props;const{fullDataRowIdData,treeIndeterminateRowMaps}=internalData;if(treeConfig){const fullRest=[];const defRest=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(treeIndeterminateRowMaps,(item,rowid)=>{if(item){fullRest.push(item);if(fullDataRowIdData[rowid]){defRest.push(item);}}});if(isFull){return fullRest;}return defRest;}return[];},/**
             * 用于多选行,设置行为选中状态,第二个参数为选中与否
             * @param {Array/Row} rows 行数据
             * @param {Boolean} value 是否选中
             */setCheckboxRow(rows,checked){if(rows&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rows=[rows];}return handleCheckedCheckboxRow(rows,checked,true);},setCheckboxRowByKey(keys,checked){const{fullAllDataRowIdData}=internalData;if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(keys)){keys=[keys];}const rows=[];keys.forEach(rowKey=>{const rowid=encodeRowid(rowKey);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){rows.push(rowRest.row);}});return handleCheckedCheckboxRow(rows,checked,true);},setCheckboxRowKey(keys,checked){return $xeTable.setCheckboxRowByKey(keys,checked);},isCheckedByCheckboxRow(row){const{updateCheckboxFlag}=reactData;const{selectCheckboxMaps}=internalData;const checkboxOpts=computeCheckboxOpts.value;const{checkField}=checkboxOpts;if(checkField){return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,checkField);}return!!updateCheckboxFlag&&!!selectCheckboxMaps[getRowid($xeTable,row)];},isCheckedByCheckboxRowKey(rowKey){const{updateCheckboxFlag}=reactData;const{fullAllDataRowIdData,selectCheckboxMaps}=internalData;const checkboxOpts=computeCheckboxOpts.value;const{checkField}=checkboxOpts;const rowid=encodeRowid(rowKey);if(checkField){const rowRest=fullAllDataRowIdData[rowid];if(rowRest){return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rowRest.row,checkField);}return false;}return!!updateCheckboxFlag&&!!selectCheckboxMaps[rowid];},isIndeterminateByCheckboxRow(row){const{treeIndeterminateRowMaps}=internalData;return!!treeIndeterminateRowMaps[getRowid($xeTable,row)]&&!$xeTable.isCheckedByCheckboxRow(row);},isIndeterminateByCheckboxRowKey(rowKey){const{treeIndeterminateRowMaps}=internalData;const rowid=encodeRowid(rowKey);return!!treeIndeterminateRowMaps[rowid]&&!$xeTable.isCheckedByCheckboxRowKey(rowid);},/**
             * 多选,切换某一行的选中状态
             */toggleCheckboxRow(row){const{selectCheckboxMaps}=internalData;const checkboxOpts=computeCheckboxOpts.value;const{checkField}=checkboxOpts;const checked=checkField?!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,checkField):!selectCheckboxMaps[getRowid($xeTable,row)];$xeTable.handleBatchSelectRows([row],checked,true);$xeTable.checkSelectionStatus();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 用于多选行,设置所有行的选中状态
             * @param {Boolean} value 是否选中
             */setAllCheckboxRow(value){return handleCheckedAllCheckboxRow(value,true);},/**
             * 获取单选框保留选中的行
             */getRadioReserveRecord(isFull){const{treeConfig}=props;const{fullDataRowIdData,radioReserveRow,afterFullData}=internalData;const radioOpts=computeRadioOpts.value;const treeOpts=computeTreeOpts.value;const childrenField=treeOpts.children||treeOpts.childrenField;if(radioOpts.reserve&&radioReserveRow){const rowid=getRowid($xeTable,radioReserveRow);if(isFull){if(!fullDataRowIdData[rowid]){return radioReserveRow;}}else{const rowkey=getRowkey($xeTable);if(treeConfig){const matchObj=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(afterFullData,row=>rowid===external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,rowkey),{children:childrenField});if(matchObj){return radioReserveRow;}}else{if(!afterFullData.some(row=>rowid===external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,rowkey))){return radioReserveRow;}}}}return null;},clearRadioReserve(){internalData.radioReserveRow=null;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 获取复选框保留选中的行
             */getCheckboxReserveRecords(isFull){const{treeConfig}=props;const{afterFullData,fullDataRowIdData,checkboxReserveRowMap}=internalData;const checkboxOpts=computeCheckboxOpts.value;const treeOpts=computeTreeOpts.value;const childrenField=treeOpts.children||treeOpts.childrenField;const reserveSelection=[];if(checkboxOpts.reserve){const{handleGetRowId}=createHandleGetRowId($xeTable);const afterFullIdMaps={};if(treeConfig){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterFullData,row=>{afterFullIdMaps[handleGetRowId(row)]=1;},{children:childrenField});}else{afterFullData.forEach(row=>{afterFullIdMaps[handleGetRowId(row)]=1;});}external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(checkboxReserveRowMap,(oldRow,oldRowid)=>{if(oldRow){if(isFull){if(!fullDataRowIdData[oldRowid]){reserveSelection.push(oldRow);}}else{if(!afterFullIdMaps[oldRowid]){reserveSelection.push(oldRow);}}}});}return reserveSelection;},clearCheckboxReserve(){internalData.checkboxReserveRowMap={};return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 多选,切换所有行的选中状态
             */toggleAllCheckboxRow(){handleCheckAllEvent(null,!reactData.isAllSelected);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 用于多选行,手动清空用户的选择
             * 清空行为不管是否被禁用还是保留记录,都将彻底清空选中状态
             */clearCheckboxRow(){const{treeConfig}=props;const{tableFullData}=internalData;const treeOpts=computeTreeOpts.value;const childrenField=treeOpts.children||treeOpts.childrenField;const checkboxOpts=computeCheckboxOpts.value;const{checkField,reserve}=checkboxOpts;// indeterminateField 仅支持读取
const indeterminateField=checkboxOpts.indeterminateField||checkboxOpts.halfField;if(checkField){const handleClearChecked=item=>{if(treeConfig&&indeterminateField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(item,indeterminateField,false);}external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(item,checkField,false);};if(treeConfig){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullData,handleClearChecked,{children:childrenField});}else{tableFullData.forEach(handleClearChecked);}}if(reserve){tableFullData.forEach(row=>handleCheckboxReserveRow(row,false));}reactData.isAllSelected=false;reactData.isIndeterminate=false;internalData.selectCheckboxMaps={};internalData.treeIndeterminateRowMaps={};reactData.updateCheckboxFlag++;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 用于当前行,设置某一行为高亮状态
             * @param {Row} row 行对象
             */setCurrentRow(row){const $xeGanttView=internalData.xeGanttView;const rowOpts=computeRowOpts.value;const el=refElem.value;$xeTable.clearCurrentRow();// $xeTable.clearCurrentColumn()
internalData.currentRow=row;if(rowOpts.isCurrent||props.highlightCurrentRow){if(el){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll(`[rowid="${getRowid($xeTable,row)}"]`),elem=>addClass(elem,'row--current'));}}if($xeGanttView&&$xeGanttView.handleUpdateCurrentRow){$xeGanttView.handleUpdateCurrentRow(row);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},isCheckedByRadioRow(row){const{selectRadioRow}=reactData;if(row&&selectRadioRow){return $xeTable.eqRow(selectRadioRow,row);}return false;},isCheckedByRadioRowKey(key){const{selectRadioRow}=reactData;if(selectRadioRow){return key===getRowid($xeTable,selectRadioRow);}return false;},/**
             * 用于单选行,设置某一行为选中状态
             * @param {Row} row 行对象
             */setRadioRow(row){return handleCheckedRadioRow(row,true);},/**
             * 用于单选行,设置某一行为选中状态
             * @param key 行主键
             */setRadioByRowKey(rowKey){const{fullAllDataRowIdData}=internalData;const rowid=encodeRowid(rowKey);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){return handleCheckedRadioRow(rowRest.row,true);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},setRadioRowKey(rowKey){return $xeTable.setRadioByRowKey(rowKey);},/**
             * 用于当前行,手动清空当前高亮的状态
             */clearCurrentRow(){const $xeGanttView=internalData.xeGanttView;const el=refElem.value;internalData.currentRow=null;internalData.hoverRow=null;if(el){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll('.row--current'),elem=>removeClass(elem,'row--current'));}if($xeGanttView&&$xeGanttView.handleUpdateCurrentRow){$xeGanttView.handleUpdateCurrentRow();}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 用于单选行,手动清空用户的选择
             */clearRadioRow(){reactData.selectRadioRow=null;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 用于当前行,获取当前行的数据
             */getCurrentRecord(isFull){const{fullDataRowIdData,afterFullRowMaps,currentRow}=internalData;const rowOpts=computeRowOpts.value;if(rowOpts.isCurrent||props.highlightCurrentRow){const rowid=getRowid($xeTable,currentRow);if(isFull){if(fullDataRowIdData[rowid]){return currentRow;}}else{if(afterFullRowMaps[rowid]){return currentRow;}}}return null;},/**
             * 用于单选行,获取当已选中的数据
             */getRadioRecord(isFull){const{fullDataRowIdData,afterFullRowMaps}=internalData;const{selectRadioRow}=reactData;if(selectRadioRow){const rowid=getRowid($xeTable,selectRadioRow);if(isFull){if(fullDataRowIdData[rowid]){return selectRadioRow;}}else{if(afterFullRowMaps[rowid]){return selectRadioRow;}}}return null;},getCurrentColumn(){const columnOpts=computeColumnOpts.value;return columnOpts.isCurrent||props.highlightCurrentColumn?reactData.currentColumn:null;},/**
             * 用于当前列,设置某列行为高亮状态
             */setCurrentColumn(fieldOrColumn){const{mouseConfig}=props;const mouseOpts=computeMouseOpts.value;const isMouseSelected=mouseConfig&&mouseOpts.selected;const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(column){$xeTable.clearCurrentColumn();reactData.currentColumn=column;}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{// 更新状选中态
if(isMouseSelected){$xeTable.addCellSelectedClass();}});},/**
             * 用于当前列,手动清空当前高亮的状态
             */clearCurrentColumn(){reactData.currentColumn=null;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},setPendingRow(rows,status){const{handleGetRowId}=createHandleGetRowId($xeTable);const{pendingRowMaps}=internalData;if(rows&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rows=[rows];}if(status){rows.forEach(row=>{const rowid=handleGetRowId(row);if(rowid&&!pendingRowMaps[rowid]){pendingRowMaps[rowid]=row;}});}else{rows.forEach(row=>{const rowid=handleGetRowId(row);if(rowid&&pendingRowMaps[rowid]){delete pendingRowMaps[rowid];}});}reactData.pendingRowFlag++;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},togglePendingRow(rows){const{handleGetRowId}=createHandleGetRowId($xeTable);const{pendingRowMaps}=internalData;if(rows&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rows=[rows];}rows.forEach(row=>{const rowid=handleGetRowId(row);if(rowid){if(pendingRowMaps[rowid]){delete pendingRowMaps[rowid];}else{pendingRowMaps[rowid]=row;}}});reactData.pendingRowFlag++;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},hasPendingByRow(row){return $xeTable.isPendingByRow(row);},isPendingByRow(row){const{pendingRowMaps}=internalData;const rowid=getRowid($xeTable,row);return!!pendingRowMaps[rowid];},getPendingRecords(){const{fullAllDataRowIdData,pendingRowMaps}=internalData;const insertRecords=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(pendingRowMaps,(row,rowid)=>{if(fullAllDataRowIdData[rowid]){insertRecords.push(row);}});return insertRecords;},clearPendingRow(){internalData.pendingRowMaps={};reactData.pendingRowFlag++;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},sort(sortConfs,sortOrder){const sortOpts=computeSortOpts.value;const{multiple,remote,orders}=sortOpts;if(sortConfs){if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(sortConfs)){sortConfs=[{field:sortConfs,order:sortOrder}];}}if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(sortConfs)){sortConfs=[sortConfs];}if(sortConfs.length){if(!multiple){clearAllSort();}(multiple?sortConfs:[sortConfs[0]]).forEach((confs,index)=>{let{field,order}=confs;let column=field;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(field)){column=$xeTable.getColumnByField(field);}if(column&&column.sortable){if(orders&&orders.indexOf(order)===-1){order=getNextSortOrder(column);}if(column.order!==order){column.order=order;}column.sortTime=Date.now()+index;}});// 如果是服务端排序,则跳过本地排序处理
if(!remote){$xeTable.handleTableData(true);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{updateRowOffsetTop();$xeTable.updateCellAreas();return updateStyle();});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},setSort(sortConfs,isUpdate){return handleSortEvent(null,sortConfs,isUpdate);},setSortByEvent(evnt,sortConfs){return handleSortEvent(evnt,sortConfs,true);},/**
             * 清空指定列的排序条件
             * 如果为空则清空所有列的排序条件
             * @param {String} fieldOrColumn 列或字段名
             */clearSort(fieldOrColumn){const sortOpts=computeSortOpts.value;if(fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(column){column.order=null;}}else{clearAllSort();}if(!sortOpts.remote){$xeTable.handleTableData(true);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{updateRowOffsetTop();return updateStyle();});},clearSortByEvent(evnt,fieldOrColumn){const{tableFullColumn}=internalData;const sortOpts=computeSortOpts.value;const{multiple}=sortOpts;const sortCols=[];let column=null;if(evnt){if(fieldOrColumn){column=handleFieldOrColumn($xeTable,fieldOrColumn);if(column){column.order=null;}}else{tableFullColumn.forEach(column=>{if(column.order){column.order=null;sortCols.push(column);}});}if(!sortOpts.remote){$xeTable.handleTableData(true);}if(!multiple){column=sortCols[0];}if(column){$xeTable.handleColumnSortEvent(evnt,column);}if(multiple&&sortCols.length){const params={$table:$xeTable,$event:evnt,cols:sortCols,sortList:[]};dispatchEvent('clear-all-sort',params,evnt);}}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{updateRowOffsetTop();return updateStyle();});},isSort(fieldOrColumn){if(fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);return column?column.sortable&&!!column.order:false;}return $xeTable.getSortColumns().length>0;},getSortColumns(){const sortOpts=computeSortOpts.value;const{multiple,chronological}=sortOpts;const sortList=[];const{tableFullColumn}=internalData;tableFullColumn.forEach(column=>{const{field,order}=column;if(column.sortable&&order){sortList.push({column,field,property:field,order:order,sortTime:column.sortTime});}});if(multiple&&chronological&&sortList.length>1){return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(sortList,'sortTime');}return sortList;},setFilterByEvent(evnt,fieldOrColumn,options){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(column&&column.filters){column.filters=toFilters(options||[],column.id);return $xeTable.handleColumnConfirmFilter(column,evnt);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 关闭筛选
             * @param {Event} evnt 事件
             */closeFilter(){const{filterStore}=reactData;const{column,visible}=filterStore;filterStore.isAllSelected=false;filterStore.isIndeterminate=false;filterStore.visible=false;if(visible){const field=column?column.field:null;dispatchEvent('filter-visible',{column,property:field,field,filterList:()=>$xeTable.getCheckedFilters(),visible:false},null);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 判断指定列是否为筛选状态,如果为空则判断所有列
             * @param {String} fieldOrColumn 字段名
             */isActiveFilterByColumn(fieldOrColumn){const column=handleFieldOrColumn($xeTable,fieldOrColumn);if(column){return column.filters&&column.filters.some(option=>option.checked);}return $xeTable.getCheckedFilters().length>0;},isFilter(fieldOrColumn){return $xeTable.isActiveFilterByColumn(fieldOrColumn);},clearFilterByEvent(evnt,fieldOrColumn){const{filterStore}=reactData;const{tableFullColumn}=internalData;const filterOpts=computeFilterOpts.value;const{multiple}=filterOpts;const filterCols=[];let column=null;if(fieldOrColumn){column=handleFieldOrColumn($xeTable,fieldOrColumn);if(column){$xeTable.handleClearFilter(column);}}else{tableFullColumn.forEach(column=>{if(column.filters){filterCols.push(column);$xeTable.handleClearFilter(column);}});}if(!fieldOrColumn||column!==filterStore.column){Object.assign(filterStore,{isAllSelected:false,isIndeterminate:false,style:null,options:[],column:null,multiple:false,// 选项是覅多选
visible:false});}if(!filterOpts.remote){$xeTable.updateData();}if(!multiple){column=filterCols[0];}if(column){const filterList=()=>$xeTable.getCheckedFilters();const values=[];const datas=[];column.filters.forEach(item=>{if(item.checked){values.push(item.value);datas.push(item.data);}});const params={$table:$xeTable,$event:evnt,column,field:column.field,property:column.field,values,datas,filters:filterList,filterList};$xeTable.dispatchEvent('filter-change',params,evnt);$xeTable.dispatchEvent('clear-filter',params,evnt);}if(multiple&&filterCols.length){const params={$table:$xeTable,$event:evnt,cols:filterCols,filterList:[]};dispatchEvent('clear-all-filter',params,evnt);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 判断展开行是否懒加载完成
             * @param {Row} row 行对象
             */isRowExpandLoaded(row){const{fullAllDataRowIdData}=internalData;const rowRest=fullAllDataRowIdData[getRowid($xeTable,row)];return rowRest&&!!rowRest.expandLoaded;},clearRowExpandLoaded(row){const{fullAllDataRowIdData,rowExpandLazyLoadedMaps}=internalData;const expandOpts=computeExpandOpts.value;const{lazy}=expandOpts;const rowid=getRowid($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];if(lazy&&rowRest){rowRest.expandLoaded=false;delete rowExpandLazyLoadedMaps[rowid];}reactData.rowExpandedFlag++;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 重新懒加载展开行,并展开内容
             * @param {Row} row 行对象
             */reloadRowExpand(row){const{rowExpandLazyLoadedMaps}=internalData;const expandOpts=computeExpandOpts.value;const{lazy}=expandOpts;const rowid=getRowid($xeTable,row);if(lazy&&!rowExpandLazyLoadedMaps[rowid]){$xeTable.clearRowExpandLoaded(row).then(()=>handleAsyncRowExpand(row));}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},reloadExpandContent(row){table_warnLog('vxe.error.delFunc',['reloadExpandContent','reloadRowExpand']);// 即将废弃
return $xeTable.reloadRowExpand(row);},/**
             * 切换展开行
             */toggleRowExpand(row){return $xeTable.setRowExpand(row,!$xeTable.isRowExpandByRow(row));},/**
             * 设置所有行的展开与否
             * @param {Boolean} expanded 是否展开
             */setAllRowExpand(expanded){const treeOpts=computeTreeOpts.value;const{tableFullData,tableFullTreeData}=internalData;const childrenField=treeOpts.children||treeOpts.childrenField;let expandedRows=[];if(props.treeConfig){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullTreeData,row=>{expandedRows.push(row);},{children:childrenField});}else{expandedRows=tableFullData;}return $xeTable.setRowExpand(expandedRows,expanded);},/**
             * 设置展开行,二个参数设置这一行展开与否
             * 支持单行
             * 支持多行
             * @param {Array/Row} rows 行数据
             * @param {Boolean} expanded 是否展开
             */setRowExpand(rows,expanded){const{expandColumn}=reactData;let{fullAllDataRowIdData,rowExpandedMaps,rowExpandLazyLoadedMaps}=internalData;const{handleGetRowId}=createHandleGetRowId($xeTable);const expandOpts=computeExpandOpts.value;const{reserve,lazy,accordion,toggleMethod}=expandOpts;const lazyRests=[];const columnIndex=expandColumn?$xeTable.getColumnIndex(expandColumn):-1;const $columnIndex=expandColumn?$xeTable.getVMColumnIndex(expandColumn):-1;if(rows){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rows=[rows];}if(accordion){// 只能同时展开一个
rowExpandedMaps={};internalData.rowExpandedMaps=rowExpandedMaps;rows=rows.slice(rows.length-1,rows.length);}const validRows=toggleMethod?rows.filter(row=>toggleMethod({$table:$xeTable,expanded,column:expandColumn,columnIndex,$columnIndex,row,rowIndex:$xeTable.getRowIndex(row),$rowIndex:$xeTable.getVMRowIndex(row)})):rows;if(expanded){validRows.forEach(row=>{const rowid=handleGetRowId(row);if(!rowExpandedMaps[rowid]){const rowRest=fullAllDataRowIdData[rowid];const isLoad=lazy&&!rowRest.expandLoaded&&!rowExpandLazyLoadedMaps[rowid];if(isLoad){lazyRests.push(handleAsyncRowExpand(row));}else{rowExpandedMaps[rowid]=row;}}});}else{validRows.forEach(item=>{const rowid=handleGetRowId(item);if(rowExpandedMaps[rowid]){delete rowExpandedMaps[rowid];}});}if(reserve){validRows.forEach(row=>handleRowExpandReserve(row,expanded));}}reactData.rowExpandedFlag++;return Promise.all(lazyRests).then(()=>(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)()).then(()=>handleLazyRecalculate(true,true,true)).then(()=>{updateRowOffsetTop();updateRowExpandStyle();handleRowExpandScroll();return $xeTable.updateCellAreas();});},/**
             * 判断行是否为展开状态
             * @param {Row} row 行对象
             */isRowExpandByRow(row){const{rowExpandedFlag}=reactData;const{rowExpandedMaps}=internalData;const rowid=getRowid($xeTable,row);return!!rowExpandedFlag&&!!rowExpandedMaps[rowid];},isExpandByRow(row){// 已废弃
table_warnLog('vxe.error.delFunc',['isExpandByRow','isRowExpandByRow']);return $xeTable.isRowExpandByRow(row);},/**
             * 手动清空展开行状态,数据会恢复成未展开的状态
             */clearRowExpand(){const{tableFullData,scrollYStore}=internalData;const expandOpts=computeExpandOpts.value;const{reserve}=expandOpts;const expList=$xeTable.getRowExpandRecords();internalData.rowExpandedMaps={};if(reserve){tableFullData.forEach(row=>handleRowExpandReserve(row,false));}reactData.rowExpandedFlag++;scrollYStore.startIndex=0;scrollYStore.endIndex=1;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{if(expList.length){return handleLazyRecalculate(true,true,true);}}).then(()=>{updateRowOffsetTop();updateRowExpandStyle();handleRowExpandScroll();return $xeTable.updateCellAreas();});},clearRowExpandReserve(){internalData.rowExpandedReserveRowMap={};return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},getRowExpandRecords(){const rest=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(internalData.rowExpandedMaps,item=>{if(item){rest.push(item);}});return rest;},setRowGroups(fieldOrColumns){const{aggregateConfig,rowGroupConfig}=props;const aggregateOpts=computeAggregateOpts.value;const{maxGroupSize}=aggregateOpts;if(!(aggregateConfig||rowGroupConfig)){table_errLog('vxe.error.reqProp',['aggregate-config']);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}const confList=fieldOrColumns?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(fieldOrColumns)?fieldOrColumns:[fieldOrColumns]:[];if(maxGroupSize&&confList.length>maxGroupSize){if(core_.VxeUI.modal){core_.VxeUI.modal.message({status:'error',content:table_getI18n('vxe.table.maxGroupCol',[maxGroupSize])});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}if(confList.length){handleUpdateRowGroup(confList.map(fieldOrColumn=>{return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(fieldOrColumn)?fieldOrColumn:fieldOrColumn.field;}));return loadTableData(internalData.tableSynchData,false,true);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},getRowGroups(){const{aggregateConfig,rowGroupConfig}=props;const{fullColumnFieldData}=internalData;if(aggregateConfig||rowGroupConfig){const{rowGroupList}=reactData;return rowGroupList.map(({field})=>{const colRet=fullColumnFieldData[field];if(colRet){return colRet.column;}return{field};});}return[];},getRowGroupFields(){return $xeTable.getRowGroups().map(item=>item.field);},clearRowGroups(){const{aggregateConfig,rowGroupConfig}=props;if(!(aggregateConfig||rowGroupConfig)){table_errLog('vxe.error.reqProp',['aggregate-config']);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}handleUpdateRowGroup([]);return loadTableData(internalData.tableSynchData,false,true);},isRowGroupRecord(row){table_warnLog('vxe.error.delFunc',['isRowGroupRecord','isAggregateRecord']);return $xeTable.isAggregateRecord(row);},isRowGroupExpandByRow(row){table_warnLog('vxe.error.delFunc',['isRowGroupExpandByRow','isAggregateExpandByRow']);return $xeTable.isAggregateExpandByRow(row);},isAggregateRecord(row){const{isRowGroupStatus}=reactData;return isRowGroupStatus&&row.isAggregate;},getAggregateContentByRow(row){const{isRowGroupStatus}=reactData;return isRowGroupStatus&&row&&row.isAggregate?row.groupContent:'';},getAggregateRowChildren(row){const aggregateOpts=computeAggregateOpts.value;const{childrenField,mapChildrenField}=aggregateOpts;const{isRowGroupStatus}=reactData;return isRowGroupStatus&&row&&row.isAggregate&&childrenField&&mapChildrenField?row[mapChildrenField]||[]:[];},refreshAggregateCalcValues(){updateGroupData();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},isAggregateExpandByRow(row){const{rowGroupExpandedFlag}=reactData;const{rowGroupExpandedMaps}=internalData;return!!rowGroupExpandedFlag&&!!rowGroupExpandedMaps[getRowid($xeTable,row)];},setRowGroupExpand(rows,expanded){if(rows){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rows=[rows];}return handleRowGroupVirtualExpand(rows,expanded);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},setRowGroupExpandByField(groupFields,expanded){const{isRowGroupStatus}=reactData;const aggregateOpts=computeAggregateOpts.value;const{childrenField}=aggregateOpts;if(groupFields){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(groupFields)){groupFields=[groupFields];}if(isRowGroupStatus){const rows=[];const gfKeys={};groupFields.forEach(groupField=>{gfKeys[groupField]=true;});external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(internalData.afterGroupFullData,row=>{if(row.isAggregate&&gfKeys[row.groupField]){rows.push(row);}},{children:childrenField});if(rows.length){return handleRowGroupVirtualExpand(rows,expanded);}}}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},setAllRowGroupExpand(expanded){const{tableFullGroupData}=internalData;const aggregateOpts=computeAggregateOpts.value;const{mapChildrenField}=aggregateOpts;const rgExpandedMaps={};if(expanded&&mapChildrenField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullGroupData,row=>{if(row[mapChildrenField]&&row[mapChildrenField].length){rgExpandedMaps[getRowid($xeTable,row)]=row;}},{children:mapChildrenField});}internalData.rowGroupExpandedMaps=rgExpandedMaps;handleVirtualTreeToList();$xeTable.handleTableData();updateAfterDataIndex();reactData.rowGroupExpandedFlag++;return handleLazyRecalculate(true,true,true);},clearRowGroupExpand(){internalData.rowGroupExpandedMaps={};handleVirtualTreeToList();$xeTable.handleTableData();updateAfterDataIndex();reactData.rowGroupExpandedFlag++;return handleLazyRecalculate(true,true,true);},getTreeExpandRecords(){const rest=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(internalData.treeExpandedMaps,item=>{if(item){rest.push(item);}});return rest;},/**
             * 判断树节点是否懒加载完成
             * @param {Row} row 行对象
             */isTreeExpandLoaded(row){const{fullAllDataRowIdData}=internalData;const rowRest=fullAllDataRowIdData[getRowid($xeTable,row)];return rowRest&&!!rowRest.treeLoaded;},clearTreeExpandLoaded(rows){const{fullAllDataRowIdData,treeExpandedMaps}=internalData;const treeOpts=computeTreeOpts.value;const{transform}=treeOpts;if(rows){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rows=[rows];}rows.forEach(row=>{const rowid=getRowid($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){rowRest.treeLoaded=false;if(treeExpandedMaps[rowid]){delete treeExpandedMaps[rowid];}}});}else{external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(fullAllDataRowIdData,rowRest=>{rowRest.treeLoaded=false;});internalData.treeExpandedMaps={};}if(transform){handleVirtualTreeToList();$xeTable.handleTableData();}reactData.treeExpandedFlag++;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 重新懒加载树节点,并展开该节点
             * @param {Row} row 行对象
             */reloadTreeExpand(row){const{treeExpandLazyLoadedMaps}=internalData;const treeOpts=computeTreeOpts.value;const hasChildField=treeOpts.hasChild||treeOpts.hasChildField;const{transform,lazy}=treeOpts;const rowid=getRowid($xeTable,row);if(lazy&&row[hasChildField]&&!treeExpandLazyLoadedMaps[rowid]){return $xeTable.clearTreeExpandLoaded(row).then(()=>{return handleAsyncTreeExpandChilds(row);}).then(()=>{if(transform){handleVirtualTreeToList();$xeTable.handleTableData();}reactData.treeExpandedFlag++;}).then(()=>{return $xeTable.recalculate();});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},reloadTreeChilds(row){table_warnLog('vxe.error.delFunc',['reloadTreeChilds','reloadTreeExpand']);// 即将废弃
return $xeTable.reloadTreeExpand(row);},/**
             * 切换/展开树节点
             */toggleTreeExpand(row){return $xeTable.setTreeExpand(row,!$xeTable.isTreeExpandByRow(row));},/**
             * 设置所有树节点的展开与否
             * @param {Boolean} expanded 是否展开
             */setAllTreeExpand(expanded){const{tableFullTreeData}=internalData;const treeOpts=computeTreeOpts.value;const{transform,lazy}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const expandeds=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullTreeData,row=>{const rowChildren=row[childrenField];if(lazy||rowChildren&&rowChildren.length){expandeds.push(row);}},{children:childrenField});return $xeTable.setTreeExpand(expandeds,expanded).then(()=>{if(transform){handleVirtualTreeToList();reactData.treeExpandedFlag++;return $xeTable.recalculate();}});},/**
             * 设置展开树形节点,二个参数设置这一行展开与否
             * 支持单行
             * 支持多行
             * @param {Array/Row} rows 行数据
             * @param {Boolean} expanded 是否展开
             */setTreeExpand(rows,expanded){const treeOpts=computeTreeOpts.value;const{transform}=treeOpts;if(rows){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rows)){rows=[rows];}if(rows.length){// 如果为虚拟树
if(transform){return handleVirtualTreeExpand(rows,expanded);}else{return handleBaseTreeExpand(rows,expanded);}}}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 判断行是否为树形节点展开状态
             * @param {Row} row 行对象
             */isTreeExpandByRow(row){const{treeExpandedFlag}=reactData;const{treeExpandedMaps}=internalData;return!!treeExpandedFlag&&!!treeExpandedMaps[getRowid($xeTable,row)];},/**
             * 手动清空树形节点的展开状态,数据会恢复成未展开的状态
             */clearTreeExpand(){const{tableFullTreeData}=internalData;const treeOpts=computeTreeOpts.value;const childrenField=treeOpts.children||treeOpts.childrenField;const{transform,reserve}=treeOpts;const expList=$xeTable.getTreeExpandRecords();internalData.treeExpandedMaps={};if(reserve){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullTreeData,row=>handleTreeExpandReserve(row,false),{children:childrenField});}return $xeTable.handleTableData().then(()=>{if(transform){handleVirtualTreeToList();$xeTable.handleTableData();}reactData.treeExpandedFlag++;}).then(()=>{updateTreeLineStyle();if(expList.length){return $xeTable.recalculate();}});},clearTreeExpandReserve(){internalData.treeExpandedReserveRowMap={};return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 获取表格的滚动状态
             */getScroll(){return $xeTable.getScrollData();},/**
             * 获取表格的滚动数据
             */getScrollData(){const{scrollXLoad,scrollYLoad,scrollbarHeight,scrollbarWidth}=reactData;const{elemStore}=internalData;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const scrollTop=bodyScrollElem?bodyScrollElem.scrollTop:0;const scrollLeft=bodyScrollElem?bodyScrollElem.scrollLeft:0;const clientHeight=bodyScrollElem?bodyScrollElem.clientHeight:0;const clientWidth=bodyScrollElem?bodyScrollElem.clientWidth:0;const scrollHeight=bodyScrollElem?bodyScrollElem.scrollHeight:0;const scrollWidth=bodyScrollElem?bodyScrollElem.scrollWidth:0;const isTop=scrollTop<=0;const isBottom=scrollTop+clientHeight>=scrollHeight;const isLeft=scrollLeft<=0;const isRight=scrollLeft+clientWidth>=scrollWidth;return{virtualX:scrollXLoad,virtualY:scrollYLoad,isTop,isBottom,isLeft,isRight,scrollbarHeight,scrollbarWidth,scrollTop,scrollLeft,scrollHeight,scrollWidth,clientHeight,clientWidth};},/**
             * 如果有滚动条,则滚动到对应的位置
             */scrollTo(scrollLeft,scrollTop){const{elemStore}=internalData;const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);const xHandleEl=refScrollXHandleElem.value;const yHandleEl=refScrollYHandleElem.value;internalData.intoRunScroll=true;if(scrollLeft){if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(scrollLeft)){scrollTop=scrollLeft.top;scrollLeft=scrollLeft.left;}}if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(scrollLeft)){setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(bodyScrollElem,scrollLeft);setScrollLeft(headerScrollElem,scrollLeft);setScrollLeft(footerScrollElem,scrollLeft);if(reactData.scrollXLoad){loadScrollXData();}}if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(scrollTop)){setScrollTop(yHandleEl,scrollTop);setScrollTop(bodyScrollElem,scrollTop);setScrollTop(leftScrollElem,scrollTop);setScrollTop(rightScrollElem,scrollTop);if(reactData.scrollYLoad){loadScrollYData();}}return new Promise(resolve=>{setTimeout(()=>{(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{internalData.intoRunScroll=false;resolve();});},reactData.scrollXLoad||reactData.scrollYLoad?30:0);});},/**
             * 如果有滚动条,则滚动到对应的行
             */scrollToRow(rowOrRowid,fieldOrColumn,options){const{isAllOverflow,scrollYLoad,scrollXLoad}=reactData;const{fullAllDataRowIdData,_sToTime}=internalData;const rest=[];let row;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(rowOrRowid)||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(rowOrRowid)){const rowid=rowOrRowid;const rowRest=rowid?fullAllDataRowIdData[rowid]:null;if(rowRest){row=rowRest.row;}}else{row=rowOrRowid;}if(row){if(props.treeConfig){rest.push($xeTable.scrollToTreeRow(row));}else{rest.push(rowToVisible($xeTable,row));}}if(fieldOrColumn){rest.push(handleScrollToRowColumn(fieldOrColumn,row,options));}if(_sToTime){clearTimeout(_sToTime);}return Promise.all(rest).then(()=>{if(row){if(!isAllOverflow&&(scrollYLoad||scrollXLoad)){calcCellHeight();calcCellWidth();// 可视区被渲染后位置被偏移
internalData._sToTime=setTimeout(()=>{internalData._sToTime=undefined;if(scrollYLoad){if(props.treeConfig){$xeTable.scrollToTreeRow(row);}else{rowToVisible($xeTable,row);}}if(scrollXLoad&&fieldOrColumn){handleScrollToRowColumn(fieldOrColumn,row,options);}},350);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}});},/**
             * 如果有滚动条,则滚动到第一行
             */scrollToStartRow(fieldOrColumn,options){const{afterFullData}=internalData;return $xeTable.scrollToRow(afterFullData[0],fieldOrColumn,options);},/**
             * 如果有滚动条,则滚动到最后一行
             */scrollToEndRow(fieldOrColumn,options){const{afterFullData}=internalData;return $xeTable.scrollToRow(afterFullData[afterFullData.length-1],fieldOrColumn,options);},/**
             * 如果有滚动条,则滚动到对应的列
             */scrollToColumn(fieldOrColumn,options){return handleScrollToRowColumn(fieldOrColumn,null,options);},/**
             * 如果有滚动条,则滚动到第一列
             */scrollToStartColumn(options){const{visibleColumn}=internalData;return $xeTable.scrollToColumn(visibleColumn[0],options);},/**
             * 如果有滚动条,则滚动到最后一列
             */scrollToEndColumn(options){const{visibleColumn}=internalData;return $xeTable.scrollToColumn(visibleColumn[visibleColumn.length-1],options);},/**
             * 手动清除滚动相关信息,还原到初始状态
             */clearScroll(){const{elemStore,scrollXStore,scrollYStore}=internalData;const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);const xHandleEl=refScrollXHandleElem.value;const yHandleEl=refScrollYHandleElem.value;internalData.intoRunScroll=true;setScrollLeft(xHandleEl,0);setScrollLeft(bodyScrollElem,0);setScrollLeft(headerScrollElem,0);setScrollLeft(footerScrollElem,0);setScrollTop(yHandleEl,0);setScrollTop(bodyScrollElem,0);setScrollTop(leftScrollElem,0);setScrollTop(rightScrollElem,0);scrollXStore.startIndex=0;scrollXStore.visibleStartIndex=0;scrollXStore.endIndex=scrollXStore.visibleSize;scrollXStore.visibleEndIndex=scrollXStore.visibleSize;scrollYStore.startIndex=0;scrollYStore.visibleStartIndex=0;scrollYStore.endIndex=scrollYStore.visibleSize;scrollYStore.visibleEndIndex=scrollYStore.visibleSize;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{internalData.lastScrollLeft=0;internalData.lastScrollTop=0;internalData.intoRunScroll=false;});},/**
             * 更新表尾合计
             */updateFooter(){const{showFooter,footerData,footerMethod}=props;const{visibleColumn,afterFullData}=internalData;let footData=[];if(showFooter&&footerData&&footerData.length){footData=footerData.slice(0);}else if(showFooter&&footerMethod){footData=visibleColumn.length?footerMethod({columns:visibleColumn,data:afterFullData,$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt}):[];}reactData.footerTableData=footData;$xeTable.clearFooterFormatterCache();$xeTable.handleUpdateFooterMerge();$xeTable.dispatchEvent('footer-data-change',{visibleColumn:internalData.visibleColumn,footData},null);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 更新列状态 updateStatus({ row, column }, cellValue)
             * 如果组件值 v-model 发生 change 时,调用改函数用于更新某一列编辑状态
             * 如果单元格配置了校验规则,则会进行校验
             */updateStatus(slotParams,cellValue){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{const{editRules}=props;const{isActivated}=internalData;if(isActivated&&slotParams&&editRules){return $xeTable.handleCellRuleUpdateStatus('change',slotParams,cellValue);}});},/**
             * 设置合并单元格 [{ row: Row|number, column: ColumnInfo|number, rowspan: number, colspan: number }]
             */setMergeCells(merges){if(props.spanMethod){table_errLog('vxe.error.errConflicts',['merge-cells','span-method']);}handleBodyMerge(merges);$xeTable.handleUpdateBodyMerge();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{const{expandColumn}=reactData;const{mergeBodyList}=internalData;if(expandColumn&&mergeBodyList.length){table_warnLog('vxe.error.errConflicts',['type=expand','merge-cells | span-method']);}$xeTable.updateCellAreas();return updateStyle();});},/**
             * 移除单元格合并 [{row:Row|number, col:ColumnInfo|number}]
             */removeMergeCells(merges){if(props.spanMethod){table_errLog('vxe.error.errConflicts',['merge-cells','span-method']);}const rest=removeBodyMerges(merges);$xeTable.handleUpdateBodyMerge();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{$xeTable.updateCellAreas();updateStyle();return rest;});},/**
             * 获取所有被合并的单元格
             */getMergeCells(){return internalData.mergeBodyList.slice(0);},/**
             * 清除所有单元格合并
             */clearMergeCells(){internalData.mergeBodyList=[];internalData.mergeBodyMaps={};internalData.mergeBodyCellMaps={};internalData.mergeBodyRowMaps={};internalData.mergeBodyColMaps={};reactData.mergeBodyFlag++;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{return updateStyle();});},setMergeHeaderCells(merges){handleHeaderMerge(merges);$xeTable.handleUpdateHeaderMerge();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{return updateStyle();});},/**
             * 移除表头单元格合并 [{row:Row|number, col:ColumnInfo|number}]
             */removeMergeHeaderCells(merges){const rest=removeHeaderMerges(merges);$xeTable.handleUpdateHeaderMerge();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{updateStyle();return rest;});},/**
             * 获取所有被合并的表头单元格
             */getMergeHeaderCells(){return internalData.mergeHeaderList.slice(0);},/**
             * 清除所有表头单元格合并
             */clearMergeHeaderCells(){internalData.mergeHeaderList=[];internalData.mergeHeaderMaps={};internalData.mergeHeaderCellMaps={};internalData.mergeHeaderRowMaps={};internalData.mergeBodyColMaps={};reactData.mergeHeadFlag++;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{return updateStyle();});},setMergeFooterCells(merges){if(props.footerSpanMethod){table_errLog('vxe.error.errConflicts',['merge-footer-cells | merge-footer-items','footer-span-method']);}handleFooterMerge(merges);$xeTable.handleUpdateFooterMerge();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{return updateStyle();});},setMergeFooterItems(merges){// errLog('vxe.error.delFunc', ['setMergeFooterItems', 'setMergeFooterCells'])
return $xeTable.setMergeFooterCells(merges);},removeMergeFooterCells(merges){if(props.footerSpanMethod){table_errLog('vxe.error.errConflicts',['merge-footer-cells | merge-footer-items','footer-span-method']);}const rest=removeFooterMerges(merges);$xeTable.handleUpdateFooterMerge();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{updateStyle();return rest;});},removeMergeFooterItems(merges){// errLog('vxe.error.delFunc', ['removeMergeFooterItems', 'removeMergeFooterCells'])
return $xeTable.removeMergeFooterCells(merges);},/**
             * 获取所有被合并的表尾
             */getMergeFooterCells(){return internalData.mergeFooterList.slice(0);},getMergeFooterItems(){// errLog('vxe.error.delFunc', ['getMergeFooterItems', 'getMergeFooterCells'])
return $xeTable.getMergeFooterCells();},/**
             * 清除所有表尾合并
             */clearMergeFooterCells(){internalData.mergeFooterList=[];internalData.mergeFooterMaps={};internalData.mergeFooterCellMaps={};internalData.mergeFooterRowMaps={};internalData.mergeFooterColMaps={};reactData.mergeFootFlag++;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{return updateStyle();});},clearMergeFooterItems(){// errLog('vxe.error.delFunc', ['clearMergeFooterItems', 'clearMergeFooterCells'])
return $xeTable.clearMergeFooterCells();},updateCellAreas(){const{mouseConfig}=props;const mouseOpts=computeMouseOpts.value;if(mouseConfig&&mouseOpts.area&&$xeTable.handleRecalculateCellAreaEvent){return $xeTable.handleRecalculateCellAreaEvent();}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},undo(){return $xeTable.handleUndoStackEvent(null);},redo(){return $xeTable.handleRedoStackEvent(null);},clearHistory(){return $xeTable.handleClearStack();},/**
             * 用于 custom-config,用于手动恢复自定义列设置信息,恢复表格重置为初始状态
             * @param storeData
             * @returns
             */setCustomStoreData(storeData){if(!storeData){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}const customOpts=computeCustomOpts.value;const{checkMethod}=customOpts;// 重置状态
clearTableAllStatus($xeTable);// 恢复列
const allCols=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(internalData.collectColumn,column=>{column.resizeWidth=0;column.fixed=column.defaultFixed;column.renderSortNumber=column.sortNumber;column.parentId=column.defaultParentId;if(!checkMethod||checkMethod({$table:$xeTable,column})){column.visible=column.defaultVisible;}column.align=column.defaultAlign;column.headerAlign=column.defaultHeaderAlign;column.footerAlign=column.defaultFooterAlign;column.aggFunc=column.defaultAggFunc;column.renderAggFn=column.defaultAggFunc;column.renderResizeWidth=column.renderWidth;allCols.push(column);});const newCollectCols=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toArrayTree(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(allCols,'renderSortNumber'),{key:'id',parentKey:'parentId',children:'children'});internalData.collectColumn=newCollectCols;internalData.tableFullColumn=getColumnList(newCollectCols);reactData.updateColFlag++;reactData.isColLoading=true;initColumnHierarchy();return Promise.resolve(handleCustomRestore(storeData)).then(()=>{return buildColumnInfo();}).then(()=>{// 恢复数据聚合分组
const{isRowGroupStatus,rowGroupList}=reactData;if(isRowGroupStatus&&!!$xeTable.handlePivotTableAggData){const rowGroupFields=computeRowGroupFields.value;if(rowGroupFields?rowGroupFields.length:rowGroupList.length){if(rowGroupFields&&rowGroupFields.length){$xeTable.setRowGroups(rowGroupFields);}else{$xeTable.clearRowGroups();}}else{$xeTable.handleUpdateAggData();}}});},/**
             * 用于 custom-config,用于获取自定义列设置信息,用于自定义保持
             * @returns
             */getCustomStoreData(){const{id}=props;const customOpts=computeCustomOpts.value;const{isRowGroupStatus,rowGroupList}=reactData;const{fullColumnFieldData,collectColumn}=internalData;const{storage,checkMethod}=customOpts;const{isCustomAlign,isCustomHeaderAlign,isCustomFooterAlign,isCustomResizable,isCustomVisible,isCustomFixed,isCustomSort,isCustomAggGroup,isCustomAggFunc,isCustomPager}=handleCustomStoreConfig($xeTable);const alignData={};const headerAlignData={};const footerAlignData={};const resizableData={};const sortData=[];const visibleData={};const fixedData={};const aggGroupData={};const aggFuncData={};const storeData={pagerData:isCustomPager&&$xeGGWrapper&&$xeGGWrapper.getCustomPagerData?$xeGGWrapper.getCustomPagerData():undefined,alignData:undefined,headerAlignData:undefined,footerAlignData:undefined,resizableData:undefined,sortData:undefined,visibleData:undefined,fixedData:undefined,aggGroupData:undefined,aggFuncData:undefined};if(!id){if(storage){table_errLog('vxe.error.reqProp',['id']);}return storeData;}let hasAlign=0;let hasHeaderAlign=0;let hasFooterAlign=0;let hasResizable=0;let hasSort=0;let hasFixed=0;let hasVisible=0;let hasAggFunc=0;const sortMaps={};external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn,(column,index,items,path,parentColumn)=>{const colKey=column.getKey();if(!colKey){table_errLog('vxe.error.reqProp',[`${column.getTitle()||column.type||''} -> column.field=?`]);return;}if(parentColumn){if(isCustomSort){const pColKey=parentColumn.getKey();const psObj=sortMaps[pColKey];hasSort=1;if(psObj){const sObj={k:colKey};sortMaps[colKey]=sObj;if(!psObj.c){psObj.c=[];}psObj.c.push(sObj);}}}else{if(isCustomSort){hasSort=1;const sObj={k:colKey};sortMaps[colKey]=sObj;sortData.push(sObj);}// 只支持一级
if(isCustomFixed&&(column.fixed||'')!==(column.defaultFixed||'')){hasFixed=1;fixedData[colKey]=column.fixed;}}if(isCustomAlign&&column.align){hasAlign=1;alignData[colKey]=column.align;}if(isCustomHeaderAlign&&column.headerAlign){hasHeaderAlign=1;headerAlignData[colKey]=column.headerAlign;}if(isCustomFooterAlign&&column.footerAlign){hasFooterAlign=1;footerAlignData[colKey]=column.footerAlign;}if(isCustomResizable&&column.resizeWidth){hasResizable=1;resizableData[colKey]=column.renderWidth;}if(isCustomVisible&&(!checkMethod||checkMethod({$table:$xeTable,column}))){if(!column.visible&&column.defaultVisible){hasVisible=1;visibleData[colKey]=false;}else if(column.visible&&!column.defaultVisible){hasVisible=1;visibleData[colKey]=true;}}if(isCustomAggFunc&&(column.aggFunc||'')!==(column.defaultAggFunc||'')){hasAggFunc=1;aggFuncData[colKey]=column.aggFunc;}});if(hasAlign){storeData.alignData=alignData;}if(hasHeaderAlign){storeData.headerAlignData=headerAlignData;}if(hasFooterAlign){storeData.footerAlignData=footerAlignData;}if(hasResizable){storeData.resizableData=resizableData;}if(hasSort){storeData.sortData=sortData;}if(hasFixed){storeData.fixedData=fixedData;}if(hasVisible){storeData.visibleData=visibleData;}if(isCustomAggGroup&&isRowGroupStatus){rowGroupList.forEach(aggConf=>{const colRest=fullColumnFieldData[aggConf.field];if(colRest){aggGroupData[colRest.column.getKey()]=true;}});storeData.aggGroupData=aggGroupData;}if(hasAggFunc){storeData.aggFuncData=aggFuncData;}return storeData;},focus(){internalData.isActivated=true;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},blur(){internalData.isActivated=false;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 已废弃,被 connectToolbar 替换
             * @deprecated
             */connect($toolbar){return $xeTable.connectToolbar($toolbar);},/**
             * 连接工具栏
             * @param $toolbar
             */connectToolbar($toolbar){if($toolbar){$xeToolbar=$toolbar;$xeToolbar.syncUpdate({collectColumn:internalData.collectColumn,$table:$xeTable});}else{table_errLog('vxe.error.barUnableLink');}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}};/**
         * 全局按下事件处理
         */const handleGlobalMousedownEvent=evnt=>{const{editStore,ctxMenuStore,customStore}=reactData;const{mouseConfig,editRules}=props;const el=refElem.value;const editOpts=computeEditOpts.value;const validOpts=computeValidOpts.value;const areaOpts=computeAreaOpts.value;const{actived}=editStore;const $validTooltip=refValidTooltip.value;const tableFilter=refTableFilter.value;const tableCustom=refTableCustom.value;const tableMenu=refTableMenu.value;// 筛选
if(tableFilter){if(getEventTargetNode(evnt,el,'vxe-cell--filter').flag){// 如果点击了筛选按钮
}else if(getEventTargetNode(evnt,tableFilter.getRefMaps().refElem.value).flag){// 如果点击筛选容器
}else{if(!getEventTargetNode(evnt,document.body,'vxe-table--ignore-clear').flag){$xeTable.preventEvent(evnt,'event.clearFilter',internalData._currFilterParams,$xeTable.closeFilter);}}}// 自定义列
if(tableCustom){if(customStore.btnEl===evnt.target||getEventTargetNode(evnt,document.body,'vxe-toolbar-custom-target').flag){// 如果点击了自定义列按钮
}else if(getEventTargetNode(evnt,tableCustom.getRefMaps().refElem.value).flag){// 如果点击自定义列容器
}else{if(!getEventTargetNode(evnt,document.body,'vxe-table--ignore-clear').flag){if(customStore.visible&&$xeTable.closeCustom){$xeTable.preventEvent(evnt,'event.clearCustom',{},()=>{$xeTable.closeCustom();$xeTable.dispatchEvent('custom',{type:'close'},evnt);});}}}}// 如果已激活了编辑状态
if(actived.row){if(!(editOpts.autoClear===false)){// 如果是激活状态,点击了单元格之外
const cell=actived.args.cell;if(!cell||!getEventTargetNode(evnt,cell).flag){if($validTooltip&&getEventTargetNode(evnt,$validTooltip.$el).flag){// 如果是激活状态,且点击了校验提示框
}else if(!internalData._lastCallTime||internalData._lastCallTime+50<Date.now()){// 如果是激活状态,点击了单元格之外
if(!getEventTargetNode(evnt,document.body,'vxe-table--ignore-clear').flag){// 如果手动调用了激活单元格,避免触发源被移除后导致重复关闭
$xeTable.preventEvent(evnt,'event.clearEdit',actived.args,()=>{let isClear;if(editOpts.mode==='row'){const rowTargetNode=getEventTargetNode(evnt,el,'vxe-body--row');const rowNodeRest=rowTargetNode.flag?$xeTable.getRowNode(rowTargetNode.targetElem):null;// row 方式,如果点击了不同行
isClear=rowNodeRest?!$xeTable.eqRow(rowNodeRest.item,actived.args.row):false;}else{// cell 方式,如果是非编辑列
isClear=!getEventTargetNode(evnt,el,'col--edit').flag;}// 如果点击表头行,则清除激活状态
if(!isClear){isClear=getEventTargetNode(evnt,el,'vxe-header--row').flag;}// 如果点击表尾行,则清除激活状态
if(!isClear){isClear=getEventTargetNode(evnt,el,'vxe-footer--row').flag;}// 如果固定了高度且点击了行之外的空白处,则清除激活状态
if(!isClear&&props.height&&!reactData.overflowY){const bodyWrapperElem=evnt.target;if(hasClass(bodyWrapperElem,'vxe-table--body-wrapper')){isClear=evnt.offsetY<bodyWrapperElem.clientHeight;}}if(isClear||// 如果点击了当前表格之外
!getEventTargetNode(evnt,el).flag){setTimeout(()=>{$xeTable.handleClearEdit(evnt).then(()=>{// 如果存在校验,点击了表格之外则清除
if(!internalData.isActivated&&editRules&&validOpts.autoClear){reactData.validErrorMaps={};}});});}});}}}}}else if(mouseConfig){if(!getEventTargetNode(evnt,el).flag&&!($xeGGWrapper&&getEventTargetNode(evnt,$xeGGWrapper.getRefMaps().refElem.value).flag)&&!(tableMenu&&getEventTargetNode(evnt,tableMenu.getRefMaps().refElem.value).flag)&&!($xeToolbar&&getEventTargetNode(evnt,$xeToolbar.getRefMaps().refElem.value).flag)){if($xeTable.clearSelected){$xeTable.clearSelected();}if(areaOpts.autoClear){if($xeTable.getCellAreas){const cellAreas=$xeTable.getCellAreas();if(cellAreas&&cellAreas.length&&!getEventTargetNode(evnt,document.body,'vxe-table--ignore-areas-clear').flag){$xeTable.preventEvent(evnt,'event.clearAreas',{},()=>{$xeTable.clearCellAreas();$xeTable.clearCopyCellArea();dispatchEvent('clear-cell-area-selection',{cellAreas},evnt);});}}}}}// 如果配置了快捷菜单且,点击了其他地方则关闭
if($xeTable.closeMenu){if(ctxMenuStore.visible&&tableMenu&&!getEventTargetNode(evnt,tableMenu.getRefMaps().refElem.value).flag){$xeTable.closeMenu();}}if(!(actived.row&&getEventTargetNode(evnt,document.body,'vxe-table--ignore-clear').flag)){const isActivated=getEventTargetNode(evnt,$xeGGWrapper?$xeGGWrapper.getRefMaps().refElem.value:el).flag;// 如果存在校验,点击了表格之外则清除
if(!isActivated&&editRules&&validOpts.autoClear){reactData.validErrorMaps={};}// 最后激活的表格
internalData.isActivated=isActivated;}};/**
         * 窗口失焦事件处理
         */const handleGlobalBlurEvent=()=>{$xeTable.closeFilter();if($xeTable.closeMenu){$xeTable.closeMenu();}};const reUpdateCustomStyleEvent=evnt=>{const{customStore}=reactData;const customOpts=computeCustomOpts.value;const{popupOptions}=customOpts;const{transfer}=popupOptions||{};if(transfer&&customStore.visible){const tableCustom=refTableCustom.value;if(tableCustom&&$xeTable.handleCustomStyle&&!checkTargetElement(evnt.target,[tableCustom.getRefMaps().refElem.value],evnt.currentTarget)){$xeTable.handleCustomStyle().then(()=>{$xeTable.handleCustomStyle();});}}};const handleGlobalScrollEvent=evnt=>{reUpdateCustomStyleEvent(evnt);};/**
         * 全局滚动事件
         */const handleGlobalMousewheelEvent=()=>{$xeTable.closeTooltip();if($xeTable.closeMenu){$xeTable.closeMenu();}};/**
         * 表格键盘事件
         */const keydownEvent=evnt=>{const{mouseConfig,keyboardConfig}=props;const{filterStore,ctxMenuStore,editStore}=reactData;const mouseOpts=computeMouseOpts.value;const keyboardOpts=computeKeyboardOpts.value;const{actived}=editStore;const isEsc=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.ESCAPE);if(isEsc){$xeTable.preventEvent(evnt,'event.keydown',null,()=>{dispatchEvent('keydown-start',{},evnt);if(keyboardConfig&&mouseConfig&&mouseOpts.area&&$xeTable.handleKdClAreaEvent){$xeTable.handleKdClAreaEvent(evnt);}else if(actived.row||filterStore.visible||ctxMenuStore.visible){evnt.stopPropagation();// 如果按下了 Esc 键,关闭快捷菜单、筛选
if($xeTable.closeMenu){$xeTable.closeMenu();}$xeTable.closeFilter();if(keyboardConfig&&keyboardOpts.isEsc){// 如果是激活编辑状态,则取消编辑
if(actived.row){const params=actived.args;$xeTable.handleClearEdit(evnt);// 如果配置了选中功能,则为选中状态
if(mouseOpts.selected){(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>$xeTable.handleSelected(params,evnt));}}}}dispatchEvent('keydown',{},evnt);dispatchEvent('keydown-end',{},evnt);});}};const contextMenuEvent=evnt=>{dispatchEvent('context-menu',{},evnt);};/**
         * 全局键盘事件
         */const handleGlobalKeydownEvent=evnt=>{// 该行为只对当前激活的表格有效
if(internalData.isActivated){$xeTable.preventEvent(evnt,'event.keydown',null,()=>{const{mouseConfig,keyboardConfig,treeConfig,editConfig,highlightCurrentRow,highlightCurrentColumn}=props;const{ctxMenuStore,editStore}=reactData;const{afterFullData,visibleColumn,currentRow}=internalData;const isContentMenu=computeIsContentMenu.value;const bodyMenu=computeBodyMenu.value;const keyboardOpts=computeKeyboardOpts.value;const mouseOpts=computeMouseOpts.value;const editOpts=computeEditOpts.value;const treeOpts=computeTreeOpts.value;const menuList=computeMenuList.value;const rowOpts=computeRowOpts.value;const columnOpts=computeColumnOpts.value;const{isLastEnterAppendRow,beforeEnterMethod,enterMethod,isLastTabAppendRow,beforeTabMethod,tabMethod}=keyboardOpts;const{selected,actived}=editStore;const childrenField=treeOpts.children||treeOpts.childrenField;const keyCode=evnt.keyCode;const isProcess=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.PROCESS);const isEsc=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.ESCAPE);const hasBackspaceKey=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.BACKSPACE);const isTab=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.TAB);const isEnter=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.ENTER);const isSpacebar=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.SPACEBAR);const isLeftArrow=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.ARROW_LEFT);const isUpArrow=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.ARROW_UP);const isRightArrow=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.ARROW_RIGHT);const isDwArrow=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.ARROW_DOWN);const hasDeleteKey=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.DELETE);const isY=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.Y);const isZ=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.Z);const isF2=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.F2);const isContextMenu=table_globalEvents.hasKey(evnt,table_GLOBAL_EVENT_KEYS.CONTEXT_MENU);const isControlKey=hasControlKey(evnt);const hasShiftKey=evnt.shiftKey;const isAltKey=evnt.altKey;const operArrow=isLeftArrow||isUpArrow||isRightArrow||isDwArrow;const operCtxMenu=isContentMenu&&ctxMenuStore.visible&&(isEnter||isSpacebar||operArrow);const isEditStatus=isEnableConf(editConfig)&&actived.column&&actived.row;const beforeEditMethod=editOpts.beforeEditMethod||editOpts.activeMethod;const selectRow=selected.row;const selectColumn=selected.column;if(operCtxMenu){// 如果配置了右键菜单; 支持方向键操作、回车
evnt.preventDefault();if(ctxMenuStore.showChild&&hasChildrenList(ctxMenuStore.selected)){$xeTable.moveCtxMenu(evnt,ctxMenuStore,'selectChild',isLeftArrow,false,ctxMenuStore.selected.children);}else{$xeTable.moveCtxMenu(evnt,ctxMenuStore,'selected',isRightArrow,true,menuList);}}else if(keyboardConfig&&mouseConfig&&mouseOpts.area&&$xeTable.handleKdClAreaEvent){$xeTable.handleKdClAreaEvent(evnt);}else if(isEsc){// 如果按下了 Esc 键,关闭快捷菜单、筛选
if($xeTable.closeMenu){$xeTable.closeMenu();}$xeTable.closeFilter();if(keyboardConfig&&keyboardOpts.isEsc){// 如果是激活编辑状态,则取消编辑
if(actived.row){const params=actived.args;$xeTable.handleClearEdit(evnt);// 如果配置了选中功能,则为选中状态
if(mouseOpts.selected){(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>$xeTable.handleSelected(params,evnt));}}}}else if(isSpacebar&&keyboardConfig&&keyboardOpts.isChecked&&selectRow&&selectColumn&&(selectColumn.type==='checkbox'||selectColumn.type==='radio')){// 空格键支持选中复选框
evnt.preventDefault();if(selectColumn.type==='checkbox'){$xeTable.handleToggleCheckRowEvent(evnt,selected.args);}else{$xeTable.triggerRadioRowEvent(evnt,selected.args);}}else if(isF2&&isEnableConf(editConfig)){if(!isEditStatus){// 如果按下了 F2 键
if(selectRow&&selectColumn){evnt.preventDefault();$xeTable.handleEdit(selected.args,evnt);}}}else if(isContextMenu){// 如果按下上下文键
internalData._keyCtx=selectRow&&selectColumn&&bodyMenu.length;clearTimeout(internalData.keyCtxTimeout);internalData.keyCtxTimeout=setTimeout(()=>{internalData._keyCtx=false;},1000);}else if(isEnter&&!isAltKey&&keyboardConfig&&keyboardOpts.isEnter&&(selectRow||actived.row||treeConfig&&(rowOpts.isCurrent||highlightCurrentRow)&&currentRow)){// 退出选中
if(isControlKey){// 如果是激活编辑状态,则取消编辑
if(actived.row){const params=actived.args;$xeTable.handleClearEdit(evnt);// 如果配置了选中功能,则为选中状态
if(mouseOpts.selected){(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{$xeTable.handleSelected(params,evnt);});}}}else{// 如果是激活状态,退则出到上一行/下一行
if(selectRow||actived.row){const activeRow=selectRow||actived.row;const activeColumn=selectColumn||actived.column;if(activeColumn){const activeParams=selectRow?selected.args:actived.args;if(hasShiftKey){if(keyboardOpts.enterToTab){$xeTable.moveTabSelected(activeParams,hasShiftKey,evnt);}else{$xeTable.moveEnterSelected(activeParams,isLeftArrow,true,isRightArrow,false,evnt);}}else{const _rowIndex=$xeTable.getVTRowIndex(activeRow);const _columnIndex=$xeTable.getVTColumnIndex(activeColumn);if(keyboardOpts.enterToTab){const ttrParams={row:activeRow,rowIndex:$xeTable.getRowIndex(activeRow),$rowIndex:$xeTable.getVMRowIndex(activeRow),_rowIndex,column:activeColumn,columnIndex:$xeTable.getColumnIndex(activeColumn),$columnIndex:$xeTable.getVMColumnIndex(activeColumn),_columnIndex,$table:$xeTable};if(!beforeTabMethod||beforeTabMethod(ttrParams)!==false){evnt.preventDefault();// 最后一行按下Tab键,自动追加一行
if(isLastTabAppendRow){const newColumn=visibleColumn[0];if(_rowIndex>=afterFullData.length-1&&_columnIndex>=visibleColumn.length-1){if(actived.row){$xeTable.handleClearEdit(evnt);}$xeTable.insertAt({},-1).then(({row:newRow})=>{$xeTable.scrollToRow(newRow,newColumn);$xeTable.handleSelected({...activeParams,row:newRow,column:newColumn},evnt);});$xeTable.dispatchEvent('tab-append-row',ttrParams,evnt);return;}}if(tabMethod){tabMethod(ttrParams);}else{$xeTable.moveTabSelected(activeParams,hasShiftKey,evnt);}}}else{const etrParams={row:activeRow,rowIndex:$xeTable.getRowIndex(activeRow),$rowIndex:$xeTable.getVMRowIndex(activeRow),_rowIndex,column:activeColumn,columnIndex:$xeTable.getColumnIndex(activeColumn),$columnIndex:$xeTable.getVMColumnIndex(activeColumn),_columnIndex,$table:$xeTable};if(!beforeEnterMethod||beforeEnterMethod(etrParams)!==false){evnt.preventDefault();// 最后一行按下回车键,自动追加一行
if(isLastEnterAppendRow){if(_rowIndex>=afterFullData.length-1){$xeTable.insertAt({},-1).then(({row:newRow})=>{$xeTable.scrollToRow(newRow,activeColumn);$xeTable.handleSelected({...activeParams,row:newRow},evnt);});$xeTable.dispatchEvent('enter-append-row',etrParams,evnt);return;}}if(enterMethod){enterMethod(etrParams);}else{if(actived.row){$xeTable.handleClearEdit(evnt);}$xeTable.moveEnterSelected(activeParams,isLeftArrow,false,isRightArrow,true,evnt);}}}}}}else if(treeConfig&&(rowOpts.isCurrent||highlightCurrentRow)&&currentRow){// 如果是树形表格当前行回车移动到子节点
const childrens=currentRow[childrenField];if(childrens&&childrens.length){evnt.preventDefault();const targetRow=childrens[0];const params={$table:$xeTable,row:targetRow,rowIndex:$xeTable.getRowIndex(targetRow),$rowIndex:$xeTable.getVMRowIndex(targetRow)};$xeTable.setTreeExpand(currentRow,true).then(()=>$xeTable.scrollToRow(targetRow)).then(()=>$xeTable.triggerCurrentRowEvent(evnt,params));}}}}else if(operArrow&&keyboardConfig&&keyboardOpts.isArrow){if(!isEditStatus){// 如果按下了方向键
if(mouseOpts.selected&&selectRow&&selectColumn){$xeTable.moveArrowSelected(selected.args,isLeftArrow,isUpArrow,isRightArrow,isDwArrow,evnt);}else{// 当前行按键上下移动
if((isUpArrow||isDwArrow)&&(rowOpts.isCurrent||highlightCurrentRow)){$xeTable.moveCurrentRow(isUpArrow,isDwArrow,evnt);}// 当前行按键左右移动
if((isLeftArrow||isRightArrow)&&(columnOpts.isCurrent||highlightCurrentColumn)){$xeTable.moveCurrentColumn(isLeftArrow,isRightArrow,evnt);}}}}else if(isTab&&keyboardConfig&&keyboardOpts.isTab){// 如果按下了 Tab 键切换
if(selectRow||actived.row){const activeRow=selectRow||actived.row;const activeColumn=selectColumn||actived.column;if(activeColumn){const activeParams=selectRow?selected.args:actived.args;const _rowIndex=$xeTable.getVTRowIndex(activeRow);const _columnIndex=$xeTable.getVTColumnIndex(activeColumn);const ttrParams={row:activeRow,rowIndex:$xeTable.getRowIndex(activeRow),$rowIndex:$xeTable.getVMRowIndex(activeRow),_rowIndex,column:activeColumn,columnIndex:$xeTable.getColumnIndex(activeColumn),$columnIndex:$xeTable.getVMColumnIndex(activeColumn),_columnIndex,$table:$xeTable};if(!beforeTabMethod||beforeTabMethod(ttrParams)!==false){evnt.preventDefault();// 最后一行按下Tab键,自动追加一行
if(isLastTabAppendRow){const newColumn=visibleColumn[0];if(_rowIndex>=afterFullData.length-1&&_columnIndex>=visibleColumn.length-1){if(actived.row){$xeTable.handleClearEdit(evnt);}$xeTable.insertAt({},-1).then(({row:newRow})=>{$xeTable.scrollToRow(newRow,newColumn);$xeTable.handleSelected({...activeParams,row:newRow,column:newColumn},evnt);});$xeTable.dispatchEvent('tab-append-row',ttrParams,evnt);return;}}if(tabMethod){tabMethod(ttrParams);}else{if(actived.row){$xeTable.handleClearEdit(evnt);}$xeTable.moveTabSelected(activeParams,hasShiftKey,evnt);}}}}}else if(keyboardConfig&&keyboardOpts.isDel&&hasDeleteKey&&isEnableConf(editConfig)&&(selectRow||selectColumn)){// 如果是删除键
if(!isEditStatus){const{delMethod}=keyboardOpts;const params={row:selectRow,rowIndex:$xeTable.getRowIndex(selectRow),column:selectColumn,columnIndex:$xeTable.getColumnIndex(selectColumn),$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt};// 是否被禁用
if(!beforeEditMethod||beforeEditMethod(params)){if(delMethod){delMethod(params);}else{const selectCellValue=getCellValue(selectRow,selectColumn);if(selectCellValue!==null){$xeTable.handlePushStack();setCellValue(selectRow,selectColumn,null);}}// 如果按下 del 键,更新表尾数据
$xeTable.updateFooter();dispatchEvent('cell-delete-value',params,evnt);}}}else if(hasBackspaceKey&&keyboardConfig&&keyboardOpts.isBack&&isEnableConf(editConfig)&&(selectRow||selectColumn)){if(!isEditStatus){const{backMethod}=keyboardOpts;// 如果是删除键
if(keyboardOpts.isDel&&isEnableConf(editConfig)&&(selectRow||selectColumn)){const params={row:selectRow,rowIndex:$xeTable.getRowIndex(selectRow),$rowIndex:$xeTable.getVMRowIndex(selectRow),_rowIndex:$xeTable.getVTRowIndex(selectRow),column:selectColumn,columnIndex:$xeTable.getColumnIndex(selectColumn),$columnIndex:$xeTable.getVMColumnIndex(selectColumn),_columnIndex:$xeTable.getVTColumnIndex(selectColumn),$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt};// 是否被禁用
if(!beforeEditMethod||beforeEditMethod(params)){if(backMethod){backMethod(params);}else{$xeTable.handleEdit(params,evnt,{isClear:true});}dispatchEvent('cell-backspace-value',params,evnt);}}}}else if(hasBackspaceKey&&keyboardConfig&&treeConfig&&keyboardOpts.isBack&&(rowOpts.isCurrent||highlightCurrentRow)&&currentRow){// 如果树形表格回退键关闭当前行返回父节点
const{parent:parentRow}=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(internalData.afterTreeFullData,item=>item===currentRow,{children:childrenField});if(parentRow){evnt.preventDefault();const params={row:parentRow,rowIndex:$xeTable.getRowIndex(parentRow),$rowIndex:$xeTable.getVMRowIndex(parentRow),$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt};$xeTable.setTreeExpand(parentRow,false).then(()=>$xeTable.scrollToRow(parentRow)).then(()=>$xeTable.triggerCurrentRowEvent(evnt,params));}}else if(keyboardConfig&&keyboardOpts.isUndoRedo&&isControlKey&&(isZ||isY)&&!hasEventInputTarget(evnt.target)){if(evnt.target){if(isY||hasShiftKey&&isZ){// 恢复被撤销的操作:Ctrl + Y 或 Ctrl + Shift + Z
evnt.preventDefault();$xeTable.handleRedoStackEvent(evnt);}else if(isZ){// ‌撤销上一步操作‌:Ctrl + Z
evnt.preventDefault();$xeTable.handleUndoStackEvent(evnt);}}}else if(keyboardConfig&&isEnableConf(editConfig)&&keyboardOpts.isEdit&&!isControlKey&&(isSpacebar||isProcess||evnt.key==='Process'||keyCode>=48&&keyCode<=57||keyCode>=65&&keyCode<=90||keyCode>=96&&keyCode<=111||keyCode>=186&&keyCode<=192||keyCode>=219&&keyCode<=222)){const{editMode,editMethod}=keyboardOpts;// 启用编辑后,空格键功能将失效
// if (isSpacebar) {
//   evnt.preventDefault()
// }
// 如果是按下非功能键之外允许直接编辑
if(selectColumn&&selectRow&&isEnableConf(selectColumn.editRender)){const beforeEditMethod=editOpts.beforeEditMethod||editOpts.activeMethod;const params={row:selectRow,rowIndex:$xeTable.getRowIndex(selectRow),$rowIndex:$xeTable.getVMRowIndex(selectRow),_rowIndex:$xeTable.getVTRowIndex(selectRow),column:selectColumn,columnIndex:$xeTable.getColumnIndex(selectColumn),$columnIndex:$xeTable.getVMColumnIndex(selectColumn),_columnIndex:$xeTable.getVTColumnIndex(selectColumn),$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt};if(!beforeEditMethod||beforeEditMethod(params)){if(editMethod){editMethod(params);}else{let isClearValue=false;// 追加方式与覆盖式
if(editMode!=='insert'){isClearValue=true;}$xeTable.handleEdit(params,evnt,{isClear:isClearValue});}}}}dispatchEvent('keydown',{},evnt);});}};const handleGlobalPasteEvent=evnt=>{const{keyboardConfig,mouseConfig}=props;const{editStore,filterStore}=reactData;const{isActivated}=internalData;const mouseOpts=computeMouseOpts.value;const keyboardOpts=computeKeyboardOpts.value;const{actived}=editStore;if(isActivated&&!filterStore.visible){if(!(actived.row||actived.column)){if(keyboardConfig&&keyboardOpts.isClip&&mouseConfig&&mouseOpts.area&&$xeTable.handlePeClAreaEvent){$xeTable.handlePeClAreaEvent(evnt);}}dispatchEvent('paste',{},evnt);}};const handleGlobalCopyEvent=evnt=>{const{keyboardConfig,mouseConfig}=props;const{editStore,filterStore}=reactData;const{isActivated}=internalData;const mouseOpts=computeMouseOpts.value;const keyboardOpts=computeKeyboardOpts.value;const{actived}=editStore;if(isActivated&&!filterStore.visible){if(!(actived.row||actived.column)){if(keyboardConfig&&keyboardOpts.isClip&&mouseConfig&&mouseOpts.area&&$xeTable.handleCyClAreaEvent){$xeTable.handleCyClAreaEvent(evnt);}}dispatchEvent('copy',{},evnt);}};const handleGlobalCutEvent=evnt=>{const{keyboardConfig,mouseConfig}=props;const{editStore,filterStore}=reactData;const{isActivated}=internalData;const mouseOpts=computeMouseOpts.value;const keyboardOpts=computeKeyboardOpts.value;const{actived}=editStore;if(isActivated&&!filterStore.visible){if(!(actived.row||actived.column)){if(keyboardConfig&&keyboardOpts.isClip&&mouseConfig&&mouseOpts.area&&$xeTable.handleCutCellAreaEvent){$xeTable.handleCutCellAreaEvent(evnt);}}dispatchEvent('cut',{},evnt);}};const handleGlobalResizeEvent=()=>{if($xeTable.closeMenu){$xeTable.closeMenu();}const el=refElem.value;if(!el||!el.clientWidth){return;}if(internalData.rsePending){return;}handleResizeEvent();};const handleTargetEnterEvent=isClear=>{const $tooltip=refTooltip.value;clearTimeout(internalData.tooltipTimeout);if(isClear){$xeTable.closeTooltip();}else{if($tooltip&&$tooltip.setActived){$tooltip.setActived(true);}}};const clearCrossTableDragStatus=()=>{crossTableDragRowObj=null;crossTableDragRowInfo.row=null;};const clearDragStatus=()=>{const{dragRow,dragCol}=reactData;if(dragRow||dragCol){clearColDropOrigin();clearRowDropOrigin();hideDropTip();clearCrossTableDragStatus();reactData.dragRow=null;reactData.dragCol=null;}};const handleRowDragEndClearStatus=()=>{clearRowDragData();clearCrossTableDragStatus();handleRecalculateStyle(false,true,true);};const handleColDragEndClearStatus=()=>{clearColDragData();clearCrossTableDragStatus();handleRecalculateStyle(true,true,true);};const clearRowDropOrigin=()=>{const el=refElem.value;if(el){const clss='row--drag-origin';external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll(`.${clss}`),elem=>{elem.draggable=false;removeClass(elem,clss);});}};const updateRowDropOrigin=row=>{const el=refElem.value;if(el){const clss='row--drag-origin';const rowid=getRowid($xeTable,row);external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll(`[rowid="${rowid}"]`),elem=>{addClass(elem,clss);});}};const updateRowDropTipContent=tdEl=>{const{dragConfig}=props;const{dragRow}=reactData;const rowDragOpts=computeRowDragOpts.value;const{tooltipMethod}=rowDragOpts;const rTooltipMethod=tooltipMethod||(dragConfig?dragConfig.rowTooltipMethod:null);let tipContent='';if(rTooltipMethod){const rtParams={$table:$xeTable,row:dragRow};tipContent=`${rTooltipMethod(rtParams)||''}`;}else{tipContent=table_getI18n('vxe.table.dragTip',[tdEl.textContent||'']);}reactData.dragTipText=tipContent;};const updateColDropOrigin=column=>{const el=refElem.value;if(el){const colQuerys=[];external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([column],item=>{colQuerys.push(`[colid="${item.id}"]`);});const clss='col--drag-origin';external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll(colQuerys.join(',')),elem=>{addClass(elem,clss);});}};const clearColDropOrigin=()=>{const el=refElem.value;if(el){const clss='col--drag-origin';external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll(`.${clss}`),elem=>{elem.draggable=false;removeClass(elem,clss);});}};const updateColDropTipContent=tdEl=>{const{dragCol}=reactData;const columnDragOpts=computeColumnDragOpts.value;const{tooltipMethod}=columnDragOpts;let tipContent='';if(tooltipMethod){const dtParams={$table:$xeTable,column:dragCol};tipContent=`${tooltipMethod(dtParams)||''}`;}else{tipContent=table_getI18n('vxe.table.dragTip',[tdEl.textContent||'']);}reactData.dragTipText=tipContent;};const showDropTip=(evnt,trEl,thEl,showLine,dragPos)=>{let wrapperEl=refElem.value;if($xeGantt&&trEl){const{refGanttContainerElem}=$xeGantt.getRefMaps();const ganttContainerElem=refGanttContainerElem.value;if(ganttContainerElem){wrapperEl=ganttContainerElem;}}if(!wrapperEl){return;}const{overflowX,scrollbarWidth,overflowY,scrollbarHeight}=reactData;const{prevDragToChild}=internalData;const wrapperRect=wrapperEl.getBoundingClientRect();const osbWidth=overflowY?scrollbarWidth:0;const osbHeight=overflowX?scrollbarHeight:0;const tableWrapperWidth=wrapperEl.clientWidth;const tableWrapperHeight=wrapperEl.clientHeight;if(trEl){const rdLineEl=refDragRowLineElem.value;if(rdLineEl){if(showLine){const scrollbarYToLeft=computeScrollbarYToLeft.value;const trRect=trEl.getBoundingClientRect();let trHeight=trEl.clientHeight;const offsetTop=Math.max(1,trRect.y-wrapperRect.y);if(offsetTop+trHeight>tableWrapperHeight-osbHeight){trHeight=tableWrapperHeight-offsetTop-osbHeight;}rdLineEl.style.display='block';rdLineEl.style.left=`${scrollbarYToLeft?osbWidth:0}px`;rdLineEl.style.top=`${offsetTop}px`;rdLineEl.style.height=`${trHeight}px`;rdLineEl.style.width=`${tableWrapperWidth-osbWidth}px`;rdLineEl.setAttribute('drag-pos',dragPos);rdLineEl.setAttribute('drag-to-child',prevDragToChild?'y':'n');}else{rdLineEl.style.display='';}}}else if(thEl){const cdLineEl=refDragColLineElem.value;if(cdLineEl){if(showLine){const scrollbarXToTop=computeScrollbarXToTop.value;const leftContainerElem=refLeftContainer.value;const leftContainerWidth=leftContainerElem?leftContainerElem.clientWidth:0;const rightContainerElem=refRightContainer.value;const rightContainerWidth=rightContainerElem?rightContainerElem.clientWidth:0;const thRect=thEl.getBoundingClientRect();let thWidth=thEl.clientWidth;const offsetTop=Math.max(0,thRect.y-wrapperRect.y);const startX=leftContainerWidth;let offsetLeft=thRect.x-wrapperRect.x;if(offsetLeft<startX){thWidth-=startX-offsetLeft;offsetLeft=startX;}const endX=tableWrapperWidth-rightContainerWidth-(rightContainerWidth?0:osbWidth);if(offsetLeft+thWidth>endX){thWidth=endX-offsetLeft;}cdLineEl.style.display='block';cdLineEl.style.top=`${offsetTop}px`;cdLineEl.style.left=`${offsetLeft}px`;cdLineEl.style.width=`${thWidth}px`;if(prevDragToChild){cdLineEl.style.height=`${thRect.height}px`;}else{cdLineEl.style.height=`${tableWrapperHeight-offsetTop-(scrollbarXToTop?0:osbHeight)}px`;}cdLineEl.setAttribute('drag-pos',dragPos);cdLineEl.setAttribute('drag-to-child',prevDragToChild?'y':'n');}else{cdLineEl.style.display='';}}}const rdTipEl=refDragTipElem.value;if(rdTipEl){rdTipEl.style.display='block';rdTipEl.style.top=`${Math.min(wrapperEl.clientHeight-wrapperEl.scrollTop-rdTipEl.clientHeight,evnt.clientY-wrapperRect.y)}px`;rdTipEl.style.left=`${Math.min(wrapperEl.clientWidth-wrapperEl.scrollLeft-rdTipEl.clientWidth-16,evnt.clientX-wrapperRect.x)}px`;rdTipEl.setAttribute('drag-status',showLine?prevDragToChild?'sub':'normal':'disabled');}};const hideDropTip=()=>{const rdTipEl=refDragTipElem.value;const rdLineEl=refDragRowLineElem.value;const cdLineEl=refDragColLineElem.value;if(rdTipEl){rdTipEl.style.display='';}if(rdLineEl){rdLineEl.style.display='';}if(cdLineEl){cdLineEl.style.display='';}};const clearRowDragData=()=>{let wrapperEl=refElem.value;const dtClss=['.vxe-body--row'];if($xeGantt){const{refGanttContainerElem}=$xeGantt.getRefMaps();const ganttContainerElem=refGanttContainerElem.value;if(ganttContainerElem){wrapperEl=ganttContainerElem;}dtClss.push('.vxe-gantt-view--body-row','.vxe-gantt-view--chart-row');}hideDropTip();clearRowDropOrigin();clearRowAnimate(wrapperEl,dtClss);internalData.prevDragToChild=false;reactData.dragRow=null;reactData.dragCol=null;};const clearColDragData=()=>{const el=refElem.value;hideDropTip();clearColDropOrigin();clearColAnimate(el,['.vxe-table--column']);internalData.prevDragToChild=false;reactData.dragRow=null;reactData.dragCol=null;};/**
         * 处理显示 tooltip
         * @param {Event} evnt 事件
         * @param {Row} row 行对象
         */const handleTooltip=(evnt,tipOpts,type,tdEl,overflowElem,tipElem,params)=>{const tipOverEl=overflowElem||tdEl;if(!tipOverEl){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}params.cell=tdEl;const{tooltipStore}=reactData;const{column,row}=params;const{showAll,contentMethod}=tipOpts;const cellText=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toString(column.type==='html'?tipOverEl.innerText:tipOverEl.textContent).trim();const isOver=tipOverEl.scrollWidth>tipOverEl.clientWidth;let isShow=false;let customContent=null;let content='';if(contentMethod){customContent=contentMethod(params);}// 是否全部展示
if(showAll){// 如果为 null 默认显示
if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(customContent)){isShow=true;content=cellText;}else if(customContent!==''&&customContent!==false){// 如果为 '' | false 则不显示
isShow=true;content=''+customContent;}}else{// 如果为 null 使用默认逻辑
if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(customContent)){isShow=isOver;content=cellText;}else if(customContent!==''&&customContent!==false){// 如果为 '' | false 则不显示
isShow=true;content=customContent;}else{content=cellText;}}if(isShow&&content){const tipContent=formatText(content);Object.assign(tooltipStore,{row,column,visible:true,content:tipContent,type,currOpts:tipOpts});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{const $tooltip=refTooltip.value;if($tooltip&&$tooltip.open){$tooltip.open(isOver?tipOverEl:tipElem,tipContent);}});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();};const truncateStackHistory=()=>{const{stackHistoryStore}=internalData;const{undoStacks}=stackHistoryStore;const undoRedoHistoryOpts=computeUndoRedoHistoryOpts.value;const{stackSize}=undoRedoHistoryOpts;if(undoStacks.length>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(stackSize)){undoStacks.shift();}};/**
         * 生成快照数据
         */const getSnapshotStackData=()=>{const{editStore}=reactData;const{afterFullData,elemStore,insertRowMaps,removeRowMaps}=internalData;const{selected,actived}=editStore;const{row:selectRow,column:selectColumn}=selected;const{row:editRow,column:editColumn}=actived;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const stackObj={selectActiveInfo:selectRow&&selectColumn?{rowid:getRowid($xeTable,selectRow),colid:selectColumn.id}:undefined,editActiveInfo:editRow&&editColumn?{rowid:getRowid($xeTable,editRow),colid:editColumn.id}:undefined,scrollInfo:{top:bodyScrollElem?bodyScrollElem.scrollTop:0,left:bodyScrollElem?bodyScrollElem.scrollLeft:0},insertData:external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().values(insertRowMaps),true),removeData:external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().values(removeRowMaps),true),visibleData:external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(afterFullData,true),visibleTreeData:[],visibleColumn:[]};return $xeTable.getCellAreaPushStackObj?$xeTable.getCellAreaPushStackObj(stackObj):stackObj;};/**
         * 刷新栈视图
         */const handleUpdateSnapshotStackData=stackObj=>{const{treeConfig}=props;const{editStore}=reactData;const{fullAllDataRowIdData,fullColumnIdData}=internalData;if(!stackObj){return;}const treeOpts=computeTreeOpts.value;const{transform}=treeOpts;const{visibleData,editActiveInfo,selectActiveInfo,scrollInfo,insertData,removeData}=stackObj;const iRowMaps={};insertData.forEach(item=>{const rowid=getRowid($xeTable,item);const rest=fullAllDataRowIdData[rowid];let row=item;if(rest){row=rest.row;Object.assign(row,item);}iRowMaps[rowid]=row;});const rRowMaps={};removeData.forEach(item=>{const rowid=getRowid($xeTable,item);const rest=fullAllDataRowIdData[rowid];let row=item;if(rest){row=rest.row;Object.assign(row,item);}rRowMaps[rowid]=row;});const afterFullList=visibleData.map(item=>{const rowid=getRowid($xeTable,item);const rest=fullAllDataRowIdData[rowid];let row=item;if(rest){row=rest.row;Object.assign(row,item);}return row;});internalData.insertRowMaps=iRowMaps;internalData.removeRowMaps=rRowMaps;internalData.afterFullData=afterFullList;$xeTable.cacheRowMap(false);$xeTable.handleTableData(treeConfig&&transform);$xeTable.updateFooter();$xeTable.handleUpdateBodyMerge();if(!(treeConfig&&transform)){$xeTable.updateAfterDataIndex();}$xeTable.checkSelectionStatus();if(reactData.scrollYLoad){$xeTable.updateScrollYSpace();}if($xeTable.handleCellAreaSnapshotStackData){$xeTable.handleCellAreaSnapshotStackData(stackObj);}else{const{selected}=editStore;const mouseOpts=computeMouseOpts.value;let selectRowid='';let selectColid='';if(editActiveInfo){selectRowid=editActiveInfo.rowid;selectColid=editActiveInfo.colid;}else if(selectActiveInfo){selectRowid=selectActiveInfo.rowid;selectColid=selectActiveInfo.colid;}if(selectRowid&&selectColid&&mouseOpts.selected){const editRow=fullAllDataRowIdData[selectRowid]?fullAllDataRowIdData[selectRowid].row:null;const editColumn=fullColumnIdData[selectColid]?fullColumnIdData[selectColid].column:null;if(editRow&&editColumn){const params={row:editRow,column:editColumn};selected.row=editRow;selected.column=editColumn;selected.args=params;(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{$xeTable.addCellSelectedClass();$xeTable.scrollTo(scrollInfo);});}}}};const callSlot=(slotFunc,params)=>{if(slotFunc){if($xeGGWrapper){return $xeGGWrapper.callSlot(slotFunc,params);}// if (XEUtils.isString(slotFunc)) {
//   slotFunc = slots[slotFunc] || null
// }
if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(slotFunc)){return getSlotVNs(slotFunc(params));}}return[];};/**
         * 内部方法
         */tablePrivateMethods={getSetupOptions(){return table_getConfig();},updateAfterDataIndex,callSlot,/**
             * 获取父容器元素
             */getParentElem(){const el=refElem.value;if($xeGGWrapper){const gridEl=$xeGGWrapper.getRefMaps().refElem.value;return gridEl?gridEl.parentNode:null;}return el?el.parentNode:null;},/**
             * 获取父容器的高度
             */getParentHeight(){const{height}=props;const el=refElem.value;if(el){const parentElem=el.parentNode;let parentPaddingSize=0;let parentWrapperHeight=0;if(parentElem){if($xeGantt&&hasClass(parentElem,'vxe-gantt--table-wrapper')){parentWrapperHeight=$xeGantt.getParentHeight();}else if($xeGrid&&hasClass(parentElem,'vxe-grid--table-wrapper')){parentWrapperHeight=$xeGrid.getParentHeight();}else{parentWrapperHeight=parentElem.clientHeight;parentPaddingSize=height==='100%'||height==='auto'?getPaddingTopBottomSize(parentElem):0;}}return Math.floor(parentWrapperHeight-parentPaddingSize);}return 0;},/**
             * 获取需要排除的高度
             * 但渲染表格高度时,需要排除工具栏或分页等相关组件的高度
             * 如果存在表尾合计滚动条,则需要排除滚动条高度
             */getExcludeHeight(){return $xeGGWrapper?$xeGGWrapper.getExcludeHeight():0;},/**
             * 定义行数据中的列属性,如果不存在则定义
             * @param {Row} records 行数据
             */defineField(records){const{treeConfig}=props;const expandOpts=computeExpandOpts.value;const treeOpts=computeTreeOpts.value;const radioOpts=computeRadioOpts.value;const rowOpts=computeRowOpts.value;const checkboxOpts=computeCheckboxOpts.value;const childrenField=treeOpts.children||treeOpts.childrenField;const rowkey=getRowkey($xeTable);if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(records)){records=[records];}return records.map(record=>{internalData.tableFullColumn.forEach(column=>{const{field,editRender}=column;if(field&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().has(record,field)&&!record[field]){let cellValue=null;if(editRender){const{defaultValue}=editRender;if(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(defaultValue)){cellValue=defaultValue({column});}else if(!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(defaultValue)){cellValue=defaultValue;}}external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(record,field,cellValue);}});const otherFields=[radioOpts.labelField,checkboxOpts.checkField,checkboxOpts.labelField,expandOpts.labelField];otherFields.forEach(key=>{if(key&&eqEmptyValue(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(record,key))){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(record,key,null);}});if(treeConfig&&treeOpts.lazy&&external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(record[childrenField])){record[childrenField]=null;}// 必须有行数据的唯一主键,可以自行设置;也可以默认生成一个随机数
if(eqEmptyValue(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(record,rowkey))){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(record,rowkey,createRowId(rowOpts,record,rowkey));}return record;});},handleTableData(force){const{scrollYLoad}=reactData;const{scrollYStore,fullDataRowIdData}=internalData;const $xeGanttView=internalData.xeGanttView;let fullList=internalData.afterFullData;// 是否进行数据处理
if(force){// 更新数据,处理筛选和排序
updateAfterFullData();// 如果为虚拟树,将树结构拍平
fullList=handleVirtualTreeToList();// 更新数据后清除合并缓存,涉及分组、筛选、排序等
internalData.mergeHeaderRowMaps={};internalData.mergeHeaderColMaps={};internalData.mergeBodyRowMaps={};internalData.mergeBodyColMaps={};internalData.mergeFooterRowMaps={};internalData.mergeFooterColMaps={};}const tableData=scrollYLoad?fullList.slice(scrollYStore.startIndex,scrollYStore.endIndex):fullList.slice(0);const visibleDataRowIdMaps={};tableData.forEach((row,$index)=>{const rowid=getRowid($xeTable,row);const rest=fullDataRowIdData[rowid];if(rest){rest.$index=$index;}visibleDataRowIdMaps[rowid]=row;});reactData.tableData=tableData;internalData.visibleDataRowIdData=visibleDataRowIdMaps;if($xeGanttView&&$xeGanttView.updateViewData){$xeGanttView.updateViewData(force);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 更新数据行的 Map
             */cacheRowMap(isReset){const{treeConfig}=props;const{isRowGroupStatus}=reactData;const{currKeyField,fullAllDataRowIdData,tableFullData,tableFullTreeData,tableFullGroupData,treeExpandedMaps,rowExpandedMaps,selectCheckboxMaps}=internalData;const fullAllDataRowIdMaps=isReset?{}:{...fullAllDataRowIdData};// 存在已删除数据
const fullDataRowIdMaps={};const idMaps={};const{handleUpdateRowId}=createHandleUpdateRowId($xeTable);let rowNum=0;const handleRowCache=(row,index,items,currIndex,parentRow,rowid,level,seq)=>{let rowRest=fullAllDataRowIdMaps[rowid];if(idMaps[rowid]){table_errLog('vxe.error.repeatKey',[currKeyField,rowid]);}if(!rowRest){rowRest={row,rowid,_seq:-1,seq,index:-1,_index:-1,$index:-1,treeIndex:index,_tIndex:-1,items,parent:parentRow,level,height:0,resizeHeight:0,oTop:0,expandHeight:0};fullDataRowIdMaps[rowid]=rowRest;fullAllDataRowIdMaps[rowid]=rowRest;}rowRest.treeLoaded=false;rowRest.expandLoaded=false;rowRest._seq=rowNum++;rowRest.row=row;rowRest.items=items;rowRest.parent=parentRow;rowRest.level=level;rowRest.index=currIndex;rowRest.treeIndex=index;// 更新缓存
if(selectCheckboxMaps[rowid]){selectCheckboxMaps[rowid]=row;}if(rowExpandedMaps[rowid]){rowExpandedMaps[rowid]=row;}rowNum++;idMaps[rowid]=true;fullDataRowIdMaps[rowid]=rowRest;fullAllDataRowIdMaps[rowid]=rowRest;};if(treeConfig){const treeOpts=computeTreeOpts.value;const{lazy}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const hasChildField=treeOpts.hasChild||treeOpts.hasChildField;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullTreeData,(row,index,items,path,parentRow,nodes)=>{const rowid=handleUpdateRowId(row);if(lazy){if(row[hasChildField]&&row[childrenField]===undefined){row[childrenField]=null;}if(treeExpandedMaps[rowid]){if(!row[childrenField]||!row[childrenField].length){delete treeExpandedMaps[rowid];}}}handleRowCache(row,index,items,parentRow?-1:index,parentRow,rowid,nodes.length-1,toTreePathSeq(path));},{children:childrenField});}else if(isRowGroupStatus){const aggregateOpts=computeAggregateOpts.value;const{mapChildrenField}=aggregateOpts;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(tableFullGroupData,(row,index,items,path,parentRow,nodes)=>{const rowid=handleUpdateRowId(row);handleRowCache(row,index,items,parentRow?-1:index,parentRow,rowid,nodes.length-1,toTreePathSeq(path));},{children:mapChildrenField});}else{tableFullData.forEach((row,index,items)=>{handleRowCache(row,index,items,index,null,handleUpdateRowId(row),0,index+1);});}internalData.fullDataRowIdData=fullDataRowIdMaps;internalData.fullAllDataRowIdData=fullAllDataRowIdMaps;reactData.treeExpandedFlag++;},cacheSourceMap(fullData){const{treeConfig}=props;const treeOpts=computeTreeOpts.value;const sourceData=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(fullData,true);const{handleUpdateRowId}=createHandleUpdateRowId($xeTable);const sourceRowIdData={};const handleSourceRow=row=>{const rowid=handleUpdateRowId(row);sourceRowIdData[rowid]=row;};// 源数据缓存
if(treeConfig){const childrenField=treeOpts.children||treeOpts.childrenField;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(sourceData,handleSourceRow,{children:treeOpts.transform?treeOpts.mapChildrenField:childrenField});}else{sourceData.forEach(handleSourceRow);}internalData.sourceDataRowIdData=sourceRowIdData;internalData.tableSourceData=sourceData;},/**
             * 指定列宽的列进行拆分
             */analyColumnWidth(){const{tableFullColumn}=internalData;const columnOpts=computeColumnOpts.value;const{width:defaultWidth,minWidth:defaultMinWidth}=columnOpts;const resizeList=[];const pxList=[];const pxMinList=[];const autoMinList=[];const scaleList=[];const scaleMinList=[];const autoList=[];const remainList=[];tableFullColumn.forEach(column=>{if(defaultWidth&&!column.width){column.width=defaultWidth;}if(defaultMinWidth&&!column.minWidth){column.minWidth=defaultMinWidth;}if(column.visible){if(column.resizeWidth){resizeList.push(column);}else if(column.width==='auto'){autoList.push(column);}else if(isPx(column.width)){pxList.push(column);}else if(isScale(column.width)){scaleList.push(column);}else if(isPx(column.minWidth)){pxMinList.push(column);}else if(column.minWidth==='auto'){autoMinList.push(column);}else if(isScale(column.minWidth)){scaleMinList.push(column);}else{remainList.push(column);}}});Object.assign(reactData.columnStore,{resizeList,pxList,pxMinList,autoMinList,scaleList,scaleMinList,autoList,remainList});},handleColResizeMousedownEvent(evnt,fixedType,params){const isLeftBtn=evnt.button===0;if(!isLeftBtn){return;}evnt.stopPropagation();evnt.preventDefault();const{column}=params;const{columnStore,overflowX,scrollbarHeight}=reactData;const{visibleColumn}=internalData;const{leftList,rightList}=columnStore;const resizableOpts=computeResizableOpts.value;const osbHeight=overflowX?scrollbarHeight:0;const tableEl=refElem.value;const leftContainerElem=refLeftContainer.value;const rightContainerElem=refRightContainer.value;const resizeBarElem=refColResizeBar.value;if(!resizeBarElem){return;}const isLeftFixed=fixedType==='left';const isRightFixed=fixedType==='right';const resizeTipElem=resizeBarElem.firstElementChild;const scrollbarXToTop=computeScrollbarXToTop.value;const{clientX:dragClientX}=evnt;const dragBtnElem=evnt.target;let cell=dragBtnElem.parentElement;let resizeColumn=column;const isDragGroupCol=column.children&&column.children.length;if(isDragGroupCol){resizeColumn=getLastChildColumn(column);if(isDragGroupCol){const trEl=cell?cell.parentElement:null;const theadEl=trEl?trEl.parentElement:null;cell=theadEl?theadEl.querySelector(`.vxe-header--column[colid="${resizeColumn.id}"]`):null;}}if(!cell){return;}const cellParams=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(params,{cell,$table:$xeTable});let dragLeft=0;const tableRect=tableEl.getBoundingClientRect();const rightContainerRect=rightContainerElem?rightContainerElem.getBoundingClientRect():null;const cellRect=cell.getBoundingClientRect();const dragBtnRect=dragBtnElem.getBoundingClientRect();const dragBtnWidth=dragBtnElem.clientWidth;const dragBtnOffsetWidth=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor(dragBtnWidth/2);const dragPosLeft=dragBtnRect.x-tableRect.x+dragBtnOffsetWidth;const minInterval=getColReMinWidth(cellParams)-dragBtnOffsetWidth;// 列之间的最小间距
const maxInterval=getColReMaxWidth(cellParams);// 列之间的最大间距
const dragMinLeft=isRightFixed?0:cellRect.x-tableRect.x+dragBtnWidth+minInterval;const dragMaxLeft=cellRect.x-tableRect.x+cell.clientWidth-minInterval;let fixedLeftRemainWidth=0;let fixedRightRemainWidth=0;if(isLeftFixed||isRightFixed){let isMach=false;const fixedColumn=isLeftFixed?leftList:rightList;for(let i=0;i<fixedColumn.length;i++){const item=fixedColumn[i];if(isMach){fixedLeftRemainWidth+=item.renderWidth;}else{isMach=item.id===resizeColumn.id;if(!isMach){fixedRightRemainWidth+=item.renderWidth;}}}}// 处理拖动事件
const updateEvent=evnt=>{evnt.stopPropagation();evnt.preventDefault();const tableHeight=tableEl.clientHeight;const offsetX=evnt.clientX-dragClientX;let left=dragPosLeft+offsetX;if(isLeftFixed){if(rightContainerRect){left=Math.min(left,rightContainerRect.x-tableRect.x-fixedLeftRemainWidth-minInterval);}}else if(isRightFixed){if(leftContainerElem){left=Math.max(left,leftContainerElem.clientWidth+fixedRightRemainWidth+minInterval);}left=Math.min(left,dragMaxLeft);}dragLeft=Math.max(left,dragMinLeft);// 最大宽
if(maxInterval>1){dragLeft=Math.min(dragLeft,maxInterval+dragMinLeft-minInterval);}const resizeBarLeft=Math.max(1,dragLeft);resizeBarElem.style.left=`${resizeBarLeft}px`;resizeBarElem.style.top=`${scrollbarXToTop?osbHeight:0}px`;resizeBarElem.style.height=`${scrollbarXToTop?tableHeight-osbHeight:tableHeight}px`;if(resizableOpts.showDragTip&&resizeTipElem){resizeTipElem.textContent=table_getI18n('vxe.table.resizeColTip',[Math.floor(resizeColumn.renderWidth+(isRightFixed?dragPosLeft-dragLeft:dragLeft-dragPosLeft))]);const tableWrapperWidth=tableEl.clientWidth;const resizeBarWidth=resizeBarElem.clientWidth;const resizeTipWidth=resizeTipElem.clientWidth;const resizeTipHeight=resizeTipElem.clientHeight;let resizeTipLeft=-resizeTipWidth;if(resizeBarLeft<resizeTipWidth+resizeBarWidth){resizeTipLeft=0;}else if(resizeBarLeft>tableWrapperWidth){resizeTipLeft+=tableWrapperWidth-resizeBarLeft;}resizeTipElem.style.left=`${resizeTipLeft}px`;resizeTipElem.style.top=`${Math.min(tableHeight-resizeTipHeight,Math.max(0,evnt.clientY-tableRect.y-resizeTipHeight/2))}px`;}reactData.isDragResize=true;};reactData.isDragResize=true;addClass(tableEl,'col-drag--resize');resizeBarElem.style.display='block';document.onmousemove=updateEvent;document.onmouseup=function(evnt){document.onmousemove=null;document.onmouseup=null;resizeBarElem.style.display='none';internalData._lastResizeTime=Date.now();setTimeout(()=>{reactData.isDragResize=false;},50);const resizeWidth=resizeColumn.renderWidth+(isRightFixed?dragPosLeft-dragLeft:dragLeft-dragPosLeft);const resizeParams={...params,resizeWidth,resizeColumn};if(resizableOpts.dragMode==='fixed'){visibleColumn.forEach(item=>{if(item.id!==resizeColumn.id){if(!item.resizeWidth){item.resizeWidth=item.renderWidth;}}});}if($xeTable.handleColResizeCellAreaEvent){$xeTable.handleColResizeCellAreaEvent(evnt,resizeParams);}else{resizeColumn.resizeWidth=resizeWidth;handleUpdateColResize(evnt,resizeParams);}removeClass(tableEl,'col-drag--resize');};updateEvent(evnt);if($xeTable.closeMenu){$xeTable.closeMenu();}},handleColResizeDblclickEvent(evnt,params){const resizableOpts=computeResizableOpts.value;const{isDblclickAutoWidth}=resizableOpts;const el=refElem.value;if(isDblclickAutoWidth&&el){evnt.stopPropagation();evnt.preventDefault();const{fullColumnIdData}=internalData;const{column}=params;let resizeColumn=column;if(column.children&&column.children.length){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(column.children,childColumn=>{resizeColumn=childColumn;});}const colid=resizeColumn.id;const colRest=fullColumnIdData[colid];const dragBtnElem=evnt.target;const cell=dragBtnElem.parentNode;const cellParams=Object.assign(params,{cell,$table:$xeTable});const colMinWidth=getColReMinWidth(cellParams);const colMaxWidth=getColReMaxWidth(cellParams);el.setAttribute('data-calc-col','Y');let resizeWidth=calcColumnAutoWidth(resizeColumn,el);el.removeAttribute('data-calc-col');if(colRest){resizeWidth=Math.max(resizeWidth,colRest.width);}resizeWidth=Math.max(colMinWidth,resizeWidth);if(colMaxWidth>1){resizeWidth=Math.min(colMaxWidth,resizeWidth);}const resizeParams={...params,resizeWidth,resizeColumn};reactData.isDragResize=false;internalData._lastResizeTime=Date.now();if($xeTable.handleColResizeDblclickCellAreaEvent){$xeTable.handleColResizeDblclickCellAreaEvent(evnt,resizeParams);}else{resizeColumn.resizeWidth=resizeWidth;handleUpdateColResize(evnt,resizeParams);}}},/**
             * @private
             */handleRowResizeMousedownEvent(evnt,params){evnt.stopPropagation();evnt.preventDefault();const{row}=params;const{showOverflow}=props;const{overflowX,scrollbarWidth,overflowY,scrollbarHeight}=reactData;const{elemStore,fullAllDataRowIdData}=internalData;const osbWidth=overflowY?scrollbarWidth:0;const osbHeight=overflowX?scrollbarHeight:0;const scrollbarYToLeft=computeScrollbarYToLeft.value;const resizableOpts=computeResizableOpts.value;const rowOpts=computeRowOpts.value;const cellOpts=computeCellOpts.value;let tableEl=refElem.value;if($xeGantt){const{refGanttContainerElem}=$xeGantt.getRefMaps();const ganttContainerElem=refGanttContainerElem.value;if(ganttContainerElem){tableEl=ganttContainerElem;}}const resizeBarElem=refRowResizeBar.value;if(!resizeBarElem){return;}const{clientY:dragClientY}=evnt;const resizeTipElem=resizeBarElem.firstElementChild;const dragBtnElem=evnt.currentTarget;const tdEl=dragBtnElem.parentNode;const trEl=tdEl.parentNode;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);if(!bodyScrollElem){return;}const rowid=getRowid($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];if(!rowRest){return;}const defaultRowHeight=computeDefaultRowHeight.value;let currCellHeight=getCellRestHeight(rowRest,cellOpts,rowOpts,defaultRowHeight);if(!showOverflow){currCellHeight=tdEl.clientHeight;}const tableRect=tableEl.getBoundingClientRect();const trRect=trEl.getBoundingClientRect();const targetOffsetY=dragClientY-trRect.y-trEl.clientHeight;let resizeHeight=currCellHeight;const cellEl=tdEl.querySelector('.vxe-cell');let cellMinHeight=0;if(cellEl){const cellStyle=getComputedStyle(cellEl);cellMinHeight=Math.max(1,Math.ceil(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellStyle.paddingTop)+external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(cellStyle.paddingBottom)));}const minTop=trRect.y-tableRect.y+cellMinHeight;// 处理拖动事件
const updateEvent=evnt=>{evnt.stopPropagation();evnt.preventDefault();const rtWidth=tableEl.clientWidth-osbWidth;const tableHeight=tableEl.clientHeight-osbHeight;let dragTop=evnt.clientY-tableRect.y-targetOffsetY;if(dragTop<minTop){dragTop=minTop;}else{resizeHeight=Math.max(cellMinHeight,currCellHeight+evnt.clientY-dragClientY);}resizeBarElem.style.left=`${scrollbarYToLeft?osbWidth:0}px`;resizeBarElem.style.top=`${dragTop}px`;resizeBarElem.style.width=`${rtWidth}px`;if(resizableOpts.showDragTip&&resizeTipElem){resizeTipElem.textContent=table_getI18n('vxe.table.resizeRowTip',[resizeHeight]);const resizeTipWidth=resizeTipElem.clientWidth;const resizeTipHeight=resizeTipElem.clientHeight;let resizeBarLeft=Math.max(2,evnt.clientX-tableRect.x);let resizeBarTop=0;if(resizeBarLeft+resizeTipWidth>=rtWidth-2){resizeBarLeft=rtWidth-resizeTipWidth-2;}if(dragTop+resizeTipHeight>=tableHeight){resizeBarTop=tableHeight-(dragTop+resizeTipHeight);}resizeTipElem.style.left=`${resizeBarLeft}px`;resizeTipElem.style.top=`${resizeBarTop}px`;}reactData.isDragResize=true;};reactData.isDragResize=true;addClass(tableEl,'row-drag--resize');resizeBarElem.style.display='block';document.onmousemove=updateEvent;document.onmouseup=function(evnt){document.onmousemove=null;document.onmouseup=null;resizeBarElem.style.display='none';internalData._lastResizeTime=Date.now();setTimeout(()=>{reactData.isDragResize=false;},50);if(resizeHeight!==currCellHeight){const resizeParams={...params,resizeHeight,resizeRow:row};internalData.isResizeCellHeight=true;if($xeTable.handleRowResizeCellAreaEvent){$xeTable.handleRowResizeCellAreaEvent(evnt,resizeParams);}else{rowRest.resizeHeight=resizeHeight;handleUpdateRowResize(evnt,resizeParams);updateRowOffsetTop();}}removeClass(tableEl,'row-drag--resize');};updateEvent(evnt);},/**
             * @private
             */handleRowResizeDblclickEvent(evnt,params){const resizableOpts=computeResizableOpts.value;const{isDblclickAutoHeight}=resizableOpts;const el=refElem.value;if(isDblclickAutoHeight&&el){evnt.stopPropagation();evnt.preventDefault();const{editStore}=reactData;const{fullAllDataRowIdData}=internalData;const{actived}=editStore;const{row}=params;const rowid=getRowid($xeTable,row);const rowRest=fullAllDataRowIdData[rowid];if(!rowRest){return;}const handleRsHeight=()=>{el.setAttribute('data-calc-row','Y');const resizeHeight=calcCellAutoHeight(rowid,rowRest,el);el.removeAttribute('data-calc-row');const resizeParams={...params,resizeHeight,resizeRow:row};reactData.isDragResize=false;internalData._lastResizeTime=Date.now();if($xeTable.handleRowResizeDblclickCellAreaEvent){$xeTable.handleRowResizeDblclickCellAreaEvent(evnt,resizeParams);}else{rowRest.resizeHeight=resizeHeight;handleUpdateRowResize(evnt,resizeParams);}};if(actived.row||actived.column){$xeTable.clearEdit().then(handleRsHeight);}else{handleRsHeight();}}},/**
             * @private
             */saveCustomStore(type){const{customConfig}=props;const tableId=computeTableId.value;const customOpts=computeCustomOpts.value;const{updateStore,storage}=customOpts;const{isCustomAlign,isCustomHeaderAlign,isCustomFooterAlign,isCustomResizable,isCustomVisible,isCustomFixed,isCustomSort,isCustomAggGroup,isCustomAggFunc,isCustomPager}=handleCustomStoreConfig($xeTable);if(type!=='reset'){// fix:修复拖动列宽,重置按钮无法点击的问题
reactData.isCustomStatus=true;}if(storage&&(customConfig?isEnableConf(customOpts):customOpts.enabled)&&(isCustomAlign||isCustomHeaderAlign||isCustomFooterAlign||isCustomResizable||isCustomVisible||isCustomFixed||isCustomSort||isCustomAggGroup||isCustomAggFunc||isCustomPager)){if(!tableId){table_errLog('vxe.error.reqProp',['id']);return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}const storeData=type==='reset'?{pagerData:{},alignData:{},headerAlignData:{},footerAlignData:{},resizableData:{},sortData:[],visibleData:{},fixedData:{},aggGroupData:{},aggFuncData:{}}:$xeTable.getCustomStoreData();if(updateStore){return updateStore({$table:$xeTable,id:tableId,type,storeData});}else{setCustomStorageMap(tableId,type==='reset'?null:storeData);}}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * @private
             */handleCustom(){const{mouseConfig}=props;if(mouseConfig){if($xeTable.clearSelected){$xeTable.clearSelected();}if($xeTable.clearCellAreas){$xeTable.clearCellAreas();$xeTable.clearCopyCellArea();}}$xeTable.analyColumnWidth();return $xeTable.refreshColumn(true);},handleUpdateDataQueue(){reactData.upDataFlag++;},handleRefreshColumnQueue(){reactData.reColumnFlag++;},handleFilterOptions(column){if(column){const{filterStore}=reactData;const{filterRender,filters}=column;const filterOptions=filters||[];const compConf=isEnableConf(filterRender)?table_renderer.get(filterRender.name):null;const frMethod=column.filterRecoverMethod||(compConf?compConf.tableFilterRecoverMethod||compConf.filterRecoverMethod:null);filterStore.column=column;// 复原状态
filterOptions.forEach(option=>{const{_checked,checked}=option;option._checked=checked;if(!checked&&_checked!==checked){if(frMethod){frMethod({option,column,$table:$xeTable});}}});$xeTable.checkFilterOptions();}},preventEvent(evnt,type,args,next,end){let evntList=table_interceptor.get(type);// 兼容老版本
if(!evntList.length&&type==='event.clearEdit'){evntList=table_interceptor.get('event.clearActived');if(evntList.length){table_warnLog('vxe.error.delEvent',['event.clearActived','event.clearEdit']);}}// 兼容老版本
let rest=null;let isStop=false;for(let i=0;i<evntList.length;i++){const func=evntList[i];const fnRest=func(Object.assign({$table:$xeTable,$grid:$xeGrid,gantt:$xeGantt,$event:evnt},args));if(fnRest===false){isStop=true;break;}else if(fnRest&&fnRest.status===false){rest=fnRest.result;isStop=true;break;}}if(!isStop){if(next){rest=next();}}if(end){end();}return rest;},updateCheckboxStatus(){const{treeConfig}=props;const{isRowGroupStatus}=reactData;const{afterTreeFullData,afterGroupFullData,selectCheckboxMaps,treeIndeterminateRowMaps}=internalData;const aggregateOpts=computeAggregateOpts.value;const treeOpts=computeTreeOpts.value;const childrenField=treeOpts.children||treeOpts.childrenField;const checkboxOpts=computeCheckboxOpts.value;const{checkField,indeterminateField,checkStrictly,checkMethod}=checkboxOpts;if(checkStrictly){return;}if(isRowGroupStatus||treeConfig){const{handleGetRowId}=createHandleGetRowId($xeTable);const childRowMaps={};const childRowList=[];if(isRowGroupStatus){// 行分组
const mapChildrenField=aggregateOpts.mapChildrenField;if(mapChildrenField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterGroupFullData,row=>{const rowid=handleGetRowId(row);const childList=row[mapChildrenField];if(childList&&childList.length&&!childRowMaps[rowid]){childRowMaps[rowid]=1;childRowList.unshift([row,rowid,childList]);}},{children:mapChildrenField});}}else if(treeConfig){// 树结构
const{transform,mapChildrenField}=treeOpts;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterTreeFullData,row=>{const rowid=handleGetRowId(row);const childList=row[transform?mapChildrenField:childrenField];if(childList&&childList.length&&!childRowMaps[rowid]){childRowMaps[rowid]=1;childRowList.unshift([row,rowid,childList]);}else{if(indeterminateField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,indeterminateField,false);}}},{children:transform?mapChildrenField:childrenField});}childRowList.forEach(vals=>{const row=vals[0];const rowid=vals[1];const childList=vals[2];let sLen=0;// 已选
let hLen=0;// 半选
let vLen=0;// 有效子行
const cLen=childList.length;// 子行
childList.forEach(checkMethod?item=>{const childRowid=handleGetRowId(item);const isSelect=checkField?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(item,checkField):selectCheckboxMaps[childRowid];if(checkMethod({$table:$xeTable,row:item})){if(isSelect){sLen++;}else if(treeIndeterminateRowMaps[childRowid]){hLen++;}vLen++;}else{if(isSelect){sLen++;}else if(treeIndeterminateRowMaps[childRowid]){hLen++;}}}:item=>{const childRowid=handleGetRowId(item);const isSelect=checkField?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(item,checkField):selectCheckboxMaps[childRowid];if(isSelect){sLen++;}else if(treeIndeterminateRowMaps[childRowid]){hLen++;}vLen++;});let isSelected=false;if(cLen>0){if(vLen>0){isSelected=(sLen>0||hLen>0)&&sLen>=vLen;}else{// 如果存在子项禁用
if(sLen>0&&sLen>=vLen){isSelected=true;}else if(selectCheckboxMaps[rowid]){isSelected=true;}else{isSelected=false;}}}else{// 如果无子项
isSelected=selectCheckboxMaps[rowid];}const halfSelect=!isSelected&&(sLen>0||hLen>0);if(checkField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,checkField,isSelected);}if(indeterminateField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,indeterminateField,halfSelect);}if(isSelected){if(!checkField){selectCheckboxMaps[rowid]=row;}if(treeIndeterminateRowMaps[rowid]){delete treeIndeterminateRowMaps[rowid];}}else{if(!checkField){if(selectCheckboxMaps[rowid]){delete selectCheckboxMaps[rowid];}}if(halfSelect){treeIndeterminateRowMaps[rowid]=row;}else{if(treeIndeterminateRowMaps[rowid]){delete treeIndeterminateRowMaps[rowid];}}}});}reactData.updateCheckboxFlag++;},updateAllCheckboxStatus(){const{treeConfig}=props;const{isRowGroupStatus}=reactData;const{afterFullData,afterTreeFullData,afterGroupFullData,checkboxReserveRowMap,selectCheckboxMaps,treeIndeterminateRowMaps}=internalData;const aggregateOpts=computeAggregateOpts.value;const{mapChildrenField}=aggregateOpts;const checkboxOpts=computeCheckboxOpts.value;const{checkField,checkMethod,showReserveStatus}=checkboxOpts;const{handleGetRowId}=createHandleGetRowId($xeTable);let sLen=0;// 已选
let dsLen=0;// 禁用的已选
let hLen=0;// 半选
let dhLen=0;// 禁用的半选
let vLen=0;// 有效行
const rootList=treeConfig?afterTreeFullData:isRowGroupStatus?afterGroupFullData:afterFullData;rootList.forEach(checkMethod?row=>{const childRowid=handleGetRowId(row);const selected=checkField?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,checkField):selectCheckboxMaps[childRowid];if(isRowGroupStatus&&$xeTable.isAggregateRecord(row)){const childList=row[mapChildrenField||''];if(selected){vLen++;sLen++;}else if(treeIndeterminateRowMaps[childRowid]){vLen++;hLen++;}else if(childList&&childList.length&&childList.some(item=>checkMethod({$table:$xeTable,row:item}))){vLen++;}}else if(checkMethod({$table:$xeTable,row})){if(selected){sLen++;}else if(treeIndeterminateRowMaps[childRowid]){hLen++;}vLen++;}else{if(selected){dsLen++;}else if(treeIndeterminateRowMaps[childRowid]){dhLen++;}}}:row=>{const childRowid=handleGetRowId(row);const selected=checkField?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,checkField):selectCheckboxMaps[childRowid];if(selected){sLen++;}else if(treeIndeterminateRowMaps[childRowid]){hLen++;}vLen++;});const isSelected=rootList.length>0?vLen>0?sLen>=vLen:sLen>=rootList.length:false;let halfSelect=!isSelected&&(sLen>0||hLen>0||dsLen>0||dhLen>0);// 如果复选框启用保留记录,当保留数据存在时显示半选
if(!isSelected&&!halfSelect&&showReserveStatus){halfSelect=!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isEmpty(checkboxReserveRowMap);}reactData.isAllSelected=isSelected;reactData.isIndeterminate=halfSelect;},checkSelectionStatus(){$xeTable.updateCheckboxStatus();$xeTable.updateAllCheckboxStatus();},/**
             * 切换选中
             * 多选,行选中事件
             */handleBatchSelectRows(rows,checked,isForce){const{treeConfig}=props;const{isRowGroupStatus}=reactData;const{selectCheckboxMaps}=internalData;const aggregateOpts=computeAggregateOpts.value;const treeOpts=computeTreeOpts.value;const{transform,mapChildrenField}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const checkboxOpts=computeCheckboxOpts.value;const{checkField,checkStrictly,checkMethod}=checkboxOpts;const{handleGetRowId}=createHandleGetRowId($xeTable);// indeterminateField 仅支持读取
const indeterminateField=checkboxOpts.indeterminateField||checkboxOpts.halfField;if(checkField){// 树结构
if((treeConfig||isRowGroupStatus)&&!checkStrictly){// 更新子节点状态
external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(rows,row=>{if(isForce||!checkMethod||checkMethod({$table:$xeTable,row})){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,checkField,checked);if(indeterminateField){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,indeterminateField,false);}handleCheckboxReserveRow(row,checked);}},{children:transform?mapChildrenField:childrenField});reactData.updateCheckboxFlag++;return;}// 列表
rows.forEach(row=>{if(isForce||!checkMethod||checkMethod({$table:$xeTable,row})){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row,checkField,checked);handleCheckboxReserveRow(row,checked);}});reactData.updateCheckboxFlag++;return;}// 树结构
if(!checkStrictly){if(isRowGroupStatus){// 更新行分组节点状态
external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(rows,row=>{const rowid=handleGetRowId(row);if(isForce||!checkMethod||checkMethod({$table:$xeTable,row})){if(checked){selectCheckboxMaps[rowid]=row;}else{if(selectCheckboxMaps[rowid]){delete selectCheckboxMaps[rowid];}}handleCheckboxReserveRow(row,checked);}},{children:aggregateOpts.mapChildrenField});reactData.updateCheckboxFlag++;return;}else if(treeConfig){// 更新子节点状态
external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(rows,row=>{const rowid=handleGetRowId(row);if(isForce||!checkMethod||checkMethod({$table:$xeTable,row})){if(checked){selectCheckboxMaps[rowid]=row;}else{if(selectCheckboxMaps[rowid]){delete selectCheckboxMaps[rowid];}}handleCheckboxReserveRow(row,checked);}},{children:transform?mapChildrenField:childrenField});reactData.updateCheckboxFlag++;return;}}// 列表
rows.forEach(row=>{const rowid=handleGetRowId(row);if(isForce||!checkMethod||checkMethod({$table:$xeTable,row})){if(checked){if(!selectCheckboxMaps[rowid]){selectCheckboxMaps[rowid]=row;}}else{if(selectCheckboxMaps[rowid]){delete selectCheckboxMaps[rowid];}}handleCheckboxReserveRow(row,checked);reactData.updateCheckboxFlag++;}});},/**
             * 即将移除
             * @deprecated
             */handleSelectRow({row},checked,isForce){$xeTable.handleBatchSelectRows([row],checked,isForce);},handleUpdateHeaderMerge(){const{mergeHeaderList}=internalData;const{mergeMaps,mergeRowMaps,mergeColMaps}=buildMergeData(mergeHeaderList);internalData.mergeHeaderCellMaps=mergeMaps;internalData.mergeHeaderRowMaps=mergeRowMaps;internalData.mergeHeaderColMaps=mergeColMaps;reactData.mergeHeadFlag++;},/**
             * 处理合并
             */handleUpdateBodyMerge(){const{mergeBodyList}=internalData;const{mergeMaps,mergeRowMaps,mergeColMaps}=buildMergeData(mergeBodyList);internalData.mergeBodyCellMaps=mergeMaps;internalData.mergeBodyRowMaps=mergeRowMaps;internalData.mergeBodyColMaps=mergeColMaps;reactData.mergeBodyFlag++;},handleUpdateFooterMerge(){const{mergeFooterList}=internalData;const{mergeMaps,mergeRowMaps,mergeColMaps}=buildMergeData(mergeFooterList);internalData.mergeFooterCellMaps=mergeMaps;internalData.mergeFooterRowMaps=mergeRowMaps;internalData.mergeFooterColMaps=mergeColMaps;reactData.mergeFootFlag++;},handleAggregateSummaryData(){return $xeTable.refreshAggregateCalcValues();},triggerHeaderTitleEvent(evnt,iconParams,params){const tipContent=iconParams.content||iconParams.message;if(tipContent){const{tooltipStore}=reactData;const{column}=params;const content=getFuncText(tipContent);handleTargetEnterEvent(true);tooltipStore.row=null;tooltipStore.column=column;tooltipStore.visible=true;tooltipStore.currOpts=iconParams;(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{const $tooltip=refTooltip.value;if($tooltip&&$tooltip.open){$tooltip.open(evnt.currentTarget,content);}});}},/**
             * 触发表头 tooltip 事件
             */triggerHeaderTooltipEvent(evnt,params){const{tooltipStore}=reactData;const headerTooltipOpts=computeHeaderTooltipOpts.value;const{column}=params;handleTargetEnterEvent(true);const titleElem=evnt.currentTarget;if(!titleElem){return;}const cWrapperEl=titleElem.parentElement;if(!cWrapperEl){return;}const cellEl=cWrapperEl.parentElement;if(!cellEl){return;}const thEl=cellEl.parentElement;if(!thEl){return;}if(tooltipStore.column!==column||!tooltipStore.visible){const ctEl=thEl.querySelector('.vxe-cell--title');handleTooltip(evnt,headerTooltipOpts,'header',thEl,(hasClass(thEl,'col--ellipsis')?ctEl:cWrapperEl)||cWrapperEl,ctEl||cellEl,params);}},/**
             * 触发单元格 tooltip 事件
             */triggerBodyTooltipEvent(evnt,params){const{editConfig}=props;const{editStore}=reactData;const{tooltipStore}=reactData;const tooltipOpts=computeTooltipOpts.value;const editOpts=computeEditOpts.value;const{actived}=editStore;const{row,column}=params;const tdEl=evnt.currentTarget;handleTargetEnterEvent(tooltipStore.column!==column||tooltipStore.row!==row);// 单元格处于编辑状态时不触发提示框
if(column.editRender&&isEnableConf(editConfig)){// 如果是行编辑模式
if(editOpts.mode==='row'&&actived.row===row){return;}// 如果是单元格编辑模式
if(actived.row===row&&actived.column===column){return;}}if(tooltipStore.column!==column||tooltipStore.row!==row||!tooltipStore.visible){const ctEl=tdEl.querySelector('.vxe-cell--wrapper');let ovEl=null;let tipEl=tdEl.querySelector(column.type==='html'?'.vxe-cell--html':'.vxe-cell--label');if(column.treeNode){ovEl=tdEl.querySelector('.vxe-tree-cell');}if(!tipEl){tipEl=ctEl;}handleTooltip(evnt,tooltipOpts,'body',tdEl,ovEl||ctEl,tipEl,params);}},/**
             * 触发表尾 tooltip 事件
             */triggerFooterTooltipEvent(evnt,params){const{column}=params;const{tooltipStore}=reactData;const footerTooltipOpts=computeFooterTooltipOpts.value;const tdEl=evnt.currentTarget;handleTargetEnterEvent(tooltipStore.column!==column||!!tooltipStore.row);if(tooltipStore.column!==column||!tooltipStore.visible){const ctEl=tdEl.querySelector('.vxe-cell--wrapper');let ovEl=null;let tipEl=tdEl.querySelector(column.type==='html'?'.vxe-cell--html':'.vxe-cell--label');if(column.type==='html'){ovEl=tdEl.querySelector('.vxe-cell--html');}if(!tipEl){tipEl=ctEl;}handleTooltip(evnt,footerTooltipOpts,'footer',tdEl,ovEl||ctEl,tipEl,params);}},handleTargetLeaveEvent(){const tooltipOpts=computeTooltipOpts.value;let $tooltip=refTooltip.value;if($tooltip&&$tooltip.setActived){$tooltip.setActived(false);}if(tooltipOpts.enterable){internalData.tooltipTimeout=setTimeout(()=>{$tooltip=refTooltip.value;if($tooltip&&$tooltip.isActived&&!$tooltip.isActived()){$xeTable.closeTooltip();}},tooltipOpts.leaveDelay);}else{$xeTable.closeTooltip();}},triggerHeaderCellClickEvent(evnt,params){const{_lastResizeTime}=internalData;const sortOpts=computeSortOpts.value;const columnOpts=computeColumnOpts.value;const currentColumnOpts=computeCurrentColumnOpts.value;const{column}=params;const cell=evnt.currentTarget;const triggerResizable=_lastResizeTime&&_lastResizeTime>Date.now()-300;const triggerSort=getEventTargetNode(evnt,cell,'vxe-cell--sort').flag;const triggerFilter=getEventTargetNode(evnt,cell,'vxe-cell--filter').flag;if(sortOpts.trigger==='cell'&&!(triggerResizable||triggerSort||triggerFilter)){$xeTable.triggerSortEvent(evnt,column,getNextSortOrder(column));}if($xeGantt){const ganttReactData=$xeGantt.reactData;ganttReactData.activeBarRowid=null;}dispatchEvent('header-cell-click',Object.assign({triggerResizable,triggerSort,triggerFilter,cell},params),evnt);if((columnOpts.isCurrent||props.highlightCurrentColumn)&&(!currentColumnOpts.trigger||['header','default'].includes(currentColumnOpts.trigger))){$xeTable.triggerCurrentColumnEvent(evnt,params);}},triggerHeaderCellDblclickEvent(evnt,params){dispatchEvent('header-cell-dblclick',Object.assign({cell:evnt.currentTarget},params),evnt);},/**
             * 列点击事件
             * 如果是单击模式,则激活为编辑状态
             * 如果是双击模式,则单击后选中状态
             */triggerCellClickEvent(evnt,params){const{treeConfig,highlightCurrentRow,highlightCurrentColumn,editConfig,aggregateConfig,rowGroupConfig}=props;const{editStore,isDragResize,expandColumn,checkboxColumn,radioColumn}=reactData;if(isDragResize){return;}const expandOpts=computeExpandOpts.value;const editOpts=computeEditOpts.value;const treeOpts=computeTreeOpts.value;const radioOpts=computeRadioOpts.value;const checkboxOpts=computeCheckboxOpts.value;const keyboardOpts=computeKeyboardOpts.value;const aggregateOpts=computeAggregateOpts.value;const rowOpts=computeRowOpts.value;const columnOpts=computeColumnOpts.value;const currentColumnOpts=computeCurrentColumnOpts.value;const{actived,focused}=editStore;const{row,column}=params;const{type,treeNode,rowGroupNode}=column;const isRadioType=type==='radio';const isCheckboxType=type==='checkbox';const isExpandType=type==='expand';const cell=evnt.currentTarget;const triggerRadio=isRadioType&&getEventTargetNode(evnt,cell,'vxe-cell--radio').flag;const triggerCheckbox=isCheckboxType&&getEventTargetNode(evnt,cell,'vxe-cell--checkbox').flag;const triggerTreeNode=treeNode&&getEventTargetNode(evnt,cell,'vxe-cell--tree-btn').flag;const triggerExpandNode=isExpandType&&getEventTargetNode(evnt,cell,'vxe-table--expanded').flag;const triggerRowGroupNode=isExpandType&&getEventTargetNode(evnt,cell,'vxe-row-group--node-btn').flag;params=Object.assign({cell,triggerRadio,triggerCheckbox,triggerTreeNode,triggerExpandNode},params);if(!triggerCheckbox&&!triggerRadio){// 如果是展开行
if(!triggerExpandNode&&(expandColumn&&expandOpts.trigger==='row'||isExpandType&&expandOpts.trigger==='cell')){$xeTable.triggerRowExpandEvent(evnt,params);}// 如果是树形表格
if(treeConfig&&(treeOpts.trigger==='row'||treeNode&&treeOpts.trigger==='cell')){$xeTable.triggerTreeExpandEvent(evnt,params);}// 如果是行分组
if((aggregateConfig||rowGroupConfig)&&(aggregateOpts.trigger==='row'||rowGroupNode&&aggregateOpts.trigger==='cell')){$xeTable.triggerRowGroupExpandEvent(evnt,params);}}// 如果点击了树节点
if(!triggerTreeNode){if(!triggerExpandNode&&!triggerRowGroupNode){// 如果是当前行
if(rowOpts.isCurrent||highlightCurrentRow){if(!triggerCheckbox&&!triggerRadio){$xeTable.triggerCurrentRowEvent(evnt,params);}}// 如果是当前列
if((columnOpts.isCurrent||highlightCurrentColumn)&&(!currentColumnOpts.trigger||['cell','default'].includes(currentColumnOpts.trigger))){if(!triggerCheckbox&&!triggerRadio){$xeTable.triggerCurrentColumnEvent(evnt,params);}}// 如果是单选框
if(!triggerRadio&&(radioColumn&&radioOpts.trigger==='row'||isRadioType&&radioOpts.trigger==='cell')){$xeTable.triggerRadioRowEvent(evnt,params);}// 如果是复选框
if(!triggerCheckbox&&(checkboxColumn&&checkboxOpts.trigger==='row'||isCheckboxType&&checkboxOpts.trigger==='cell')){$xeTable.handleToggleCheckRowEvent(evnt,params);}}// 如果设置了单元格选中功能,则不会使用点击事件去处理(只能支持双击模式)
if(isEnableConf(editConfig)){// 记录点击输入框聚焦状态
if(keyboardOpts.arrowCursorLock&&evnt&&editOpts.mode==='cell'&&evnt.target&&/^input|textarea$/i.test(evnt.target.tagName)){focused.column=column;focused.row=row;}if(editOpts.trigger==='manual'){if(actived.args&&actived.row===row&&column!==actived.column){if(editOpts.mode==='row'){handleChangeCell(evnt,params);}else{checkValidate('blur').catch(e=>e);}}}else if(!actived.args||row!==actived.row||column!==actived.column){if(editOpts.trigger==='click'){handleChangeCell(evnt,params);}else if(editOpts.trigger==='dblclick'){if(editOpts.mode==='row'&&actived.row===row){handleChangeCell(evnt,params);}}}}}// 如果是双击编辑模式
if(isEnableConf(editConfig)&&editOpts.trigger==='dblclick'){if(actived.row&&actived.column){if(editOpts.mode==='row'){if(!$xeTable.eqRow(actived.row,row)){$xeTable.handleClearEdit(evnt);}}else if(editOpts.mode==='cell'){if(!$xeTable.eqRow(actived.row,row)||actived.column.id!==column.id){$xeTable.handleClearEdit(evnt);}}}}if($xeGantt){const ganttReactData=$xeGantt.reactData;ganttReactData.activeBarRowid=null;}dispatchEvent('cell-click',params,evnt);},/**
             * 列双击点击事件
             * 如果是双击模式,则激活为编辑状态
             */triggerCellDblclickEvent(evnt,params){const{editConfig}=props;const{editStore,isDragResize}=reactData;if(isDragResize){return;}const editOpts=computeEditOpts.value;const{actived}=editStore;const cell=evnt.currentTarget;params=Object.assign({cell},params);if(isEnableConf(editConfig)&&editOpts.trigger==='dblclick'){if(!actived.args||evnt.currentTarget!==actived.args.cell){if(editOpts.mode==='row'){checkValidate('blur').catch(e=>e).then(()=>{$xeTable.handleEdit(params,evnt).then(()=>checkValidate('change')).catch(e=>e);});}else if(editOpts.mode==='cell'){$xeTable.handleEdit(params,evnt).then(()=>checkValidate('change')).catch(e=>e);}}}dispatchEvent('cell-dblclick',params,evnt);},triggerFooterCellClickEvent(evnt,params){const cell=evnt.currentTarget;params=Object.assign({cell},params);if($xeGantt){const ganttReactData=$xeGantt.reactData;ganttReactData.activeBarRowid=null;}$xeTable.dispatchEvent('footer-cell-click',params,evnt);},triggerFooterCellDblclickEvent(evnt,params){const cell=evnt.currentTarget;params=Object.assign({cell},params);$xeTable.dispatchEvent('footer-cell-dblclick',params,evnt);},handleToggleCheckRowEvent(evnt,params){const{selectCheckboxMaps}=internalData;const checkboxOpts=computeCheckboxOpts.value;const{checkField,trigger}=checkboxOpts;const{row}=params;if(trigger==='manual'){return;}let checked=false;if(checkField){checked=!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row,checkField);}else{checked=!selectCheckboxMaps[getRowid($xeTable,row)];}if(evnt){$xeTable.triggerCheckRowEvent(evnt,params,checked);}else{$xeTable.handleBatchSelectRows([row],checked);$xeTable.checkSelectionStatus();}},triggerCheckRowEvent(evnt,params,checked){const{treeConfig}=props;const{row}=params;const{isRowGroupStatus}=reactData;const{fullAllDataRowIdData,afterFullData,afterTreeFullData,afterGroupFullData}=internalData;const checkboxOpts=computeCheckboxOpts.value;const aggregateOpts=computeAggregateOpts.value;const treeOpts=computeTreeOpts.value;const{checkMethod,trigger,checkStrictly}=checkboxOpts;if(trigger==='manual'){return;}evnt.stopPropagation();if(checkboxOpts.isShiftKey&&evnt.shiftKey){const{handleGetRowId}=createHandleGetRowId($xeTable);const checkboxRecords=$xeTable.getCheckboxRecords();let currSeq=-1;let currRow=null;const currRowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[currRowid];if(rowRest){currRow=rowRest.row;currSeq=rowRest._seq;}if(currRow&&checkboxRecords.length){let rangeRows=[];let firstSeq=-1;let firstRow=null;let firstRowid='';let lastSeq=-1;let lastRow=null;let lastRowid='';// 根据序号取出范围最小/最大的行
const selectMaps={};checkboxRecords.forEach(item=>{const rowid=handleGetRowId(item);const rowRest=fullAllDataRowIdData[rowid];if(rowRest){if(!firstRow||firstSeq>rowRest._seq){firstRowid=rowRest.rowid;firstRow=rowRest.row;firstSeq=rowRest._seq;}if(!lastRow||lastSeq<rowRest._seq){lastRowid=rowRest.rowid;lastRow=rowRest.row;lastSeq=rowRest._seq;}}selectMaps[rowid]=item;});// 如果已选只有一条并选择当前则跳过
if(firstRow&&lastRow&&(checkboxRecords.length>1||currRowid!==firstRowid)&&(Math.abs(firstSeq-lastSeq)>1||Math.abs(currSeq-firstSeq)>1||Math.abs(currSeq-lastSeq)>1)){// 树与分组
if(treeConfig||isRowGroupStatus){const{transform}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const iteratorChildField=treeConfig?transform?treeOpts.mapChildrenField:childrenField:aggregateOpts.mapChildrenField;let isMatchFirst=false;let matchStartRowid='';let matchEndRowid='';const handleGetChildRowid=(rowid,isLast)=>{const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const item=rowRest.row;const childList=item[iteratorChildField];if(childList&&childList.length){const targetRow=isLast?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().last(childList):external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().first(childList);return handleGetChildRowid(handleGetRowId(targetRow),isLast);}}return rowid;};const handleGetSelectParentRowid=rowid=>{const rowRest=fullAllDataRowIdData[rowid];if(rowRest){const parentItem=rowRest.parent;if(parentItem){const parentRowid=handleGetRowId(parentItem);if(selectMaps[parentRowid]){return handleGetSelectParentRowid(parentRowid);}}}return rowid;};const handleGetRootRow=row=>{const rowid=handleGetRowId(row);if(rowid){const rest=fullAllDataRowIdData[rowid];if(rest){return rest.parent?handleGetRootRow(rest.parent):rest;}}return null;};if(currSeq<firstSeq){matchStartRowid=handleGetChildRowid(currRowid,0);matchEndRowid=handleGetChildRowid(firstRowid,1);}else{if(currSeq>lastSeq){matchStartRowid=handleGetSelectParentRowid(lastRowid);}else{matchStartRowid=handleGetChildRowid(firstRowid,0);}matchEndRowid=handleGetChildRowid(currRowid,1);}const handleRangeRow=item=>{const rowid=handleGetRowId(item);const childList=item[iteratorChildField];if(!isMatchFirst&&rowid===matchStartRowid){isMatchFirst=true;}// 如果是父子关联,则排除父节点
if(isMatchFirst&&(checkStrictly||!childList||!childList.length)){rangeRows.push(item);}// break
return rowid===matchEndRowid;};if(treeConfig){const matchStartRowRest=fullAllDataRowIdData[matchStartRowid];const firstRootRowRest=matchStartRowRest?handleGetRootRow(matchStartRowRest.row):null;if(firstRootRowRest){// 优化查找复杂度
external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(afterTreeFullData.slice(firstRootRowRest.treeIndex),handleRangeRow,{children:iteratorChildField});}else{external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(afterTreeFullData,handleRangeRow,{children:iteratorChildField});}}else{external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(afterGroupFullData,handleRangeRow,{children:iteratorChildField});}}else{const _currRowIndex=$xeTable.getVTRowIndex(currRow);const _firstRowIndex=$xeTable.getVTRowIndex(firstRow);const _lastRowIndex=$xeTable.getVTRowIndex(lastRow);if(_currRowIndex<_firstRowIndex){rangeRows=afterFullData.slice(_currRowIndex,_firstRowIndex+1);}else if(_currRowIndex>_lastRowIndex){rangeRows=afterFullData.slice(_lastRowIndex,_currRowIndex+1);}else{rangeRows=afterFullData.slice(_firstRowIndex,_currRowIndex+1);}}$xeTable.setAllCheckboxRow(false);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{handleCheckedCheckboxRow(rangeRows,true,false);});dispatchEvent('checkbox-range-select',Object.assign({rangeRecords:rangeRows},params),evnt);}}}if(!checkMethod||checkMethod({$table:$xeTable,row})){$xeTable.handleBatchSelectRows([row],checked);$xeTable.checkSelectionStatus();dispatchEvent('checkbox-change',Object.assign({records:()=>$xeTable.getCheckboxRecords(),reserves:()=>$xeTable.getCheckboxReserveRecords(),indeterminates:()=>$xeTable.getCheckboxIndeterminateRecords(),checked},params),evnt);}},/**
             * 多选,选中所有事件
             */triggerCheckAllEvent(evnt,value){const checkboxOpts=computeCheckboxOpts.value;const{trigger}=checkboxOpts;if(trigger==='manual'){return;}if(evnt){evnt.stopPropagation();}handleCheckAllEvent(evnt,value);},/**
             * 单选,行选中事件
             */triggerRadioRowEvent(evnt,params){const{selectRadioRow:oldValue}=reactData;const{row}=params;const radioOpts=computeRadioOpts.value;const{trigger,strict,checkMethod}=radioOpts;if(trigger==='manual'){return;}evnt.stopPropagation();if(!checkMethod||checkMethod({$table:$xeTable,row})){let newValue=row;let isChange=oldValue!==newValue;if(strict){handleCheckedRadioRow(newValue,false);}else{if(oldValue===newValue){newValue=null;}isChange=oldValue!==newValue;if(isChange&&newValue){handleCheckedRadioRow(newValue,false);}else{newValue=null;$xeTable.clearRadioRow();}}if(isChange){dispatchEvent('radio-change',{oldValue,newValue,selected:!!newValue,...params},evnt);}}},triggerCurrentColumnEvent(evnt,params){const{currentColumn:oldValue}=reactData;const columnOpts=computeColumnOpts.value;const currentColumnOpts=computeCurrentColumnOpts.value;const beforeRowMethod=currentColumnOpts.beforeSelectMethod||columnOpts.currentMethod;let newValue=params.column;const{trigger,strict}=currentColumnOpts;if(trigger==='manual'){return;}let isChange=oldValue!==newValue;if(!beforeRowMethod||beforeRowMethod({column:newValue,$table:$xeTable})){if(strict){$xeTable.setCurrentColumn(newValue);}else{if(oldValue===newValue){newValue=null;}isChange=oldValue!==newValue;if(isChange&&newValue){$xeTable.setCurrentColumn(newValue);}else{newValue=null;$xeTable.clearCurrentColumn();}}if(isChange){dispatchEvent('current-column-change',{oldValue,newValue,selected:!!newValue,...params},evnt);}}else{dispatchEvent('current-column-disabled',params,evnt);}},triggerCurrentRowEvent(evnt,params){const{currentRow:oldValue}=internalData;const rowOpts=computeRowOpts.value;const currentRowOpts=computeCurrentRowOpts.value;const beforeRowMethod=currentRowOpts.beforeSelectMethod||rowOpts.currentMethod;let{row:newValue}=params;const{trigger,strict}=currentRowOpts;if(trigger==='manual'){return;}let isChange=oldValue!==newValue;if(!beforeRowMethod||beforeRowMethod({row:newValue,$table:$xeTable})){if(strict){$xeTable.setCurrentRow(newValue);}else{if(oldValue===newValue){newValue=null;}isChange=oldValue!==newValue;if(isChange&&newValue){$xeTable.setCurrentRow(newValue);}else{newValue=null;$xeTable.clearCurrentRow();}}if(isChange){dispatchEvent('current-row-change',{oldValue,newValue,selected:!!newValue,...params},evnt);// 已废弃
dispatchEvent('current-change',{oldValue,newValue,...params},evnt);}}else{dispatchEvent('current-row-disabled',params,evnt);}},/**
             * 展开行事件
             */triggerRowExpandEvent(evnt,params){const{expandColumn}=reactData;const{rowExpandLazyLoadedMaps}=internalData;const expandOpts=computeExpandOpts.value;const{row}=params;const{lazy,trigger}=expandOpts;if(trigger==='manual'){return;}evnt.stopPropagation();const rowid=getRowid($xeTable,row);if(!lazy||!rowExpandLazyLoadedMaps[rowid]){const expanded=!$xeTable.isRowExpandByRow(row);const columnIndex=expandColumn?$xeTable.getColumnIndex(expandColumn):-1;const $columnIndex=expandColumn?$xeTable.getVMColumnIndex(expandColumn):-1;$xeTable.setRowExpand(row,expanded);dispatchEvent('toggle-row-expand',{expanded,column:expandColumn,columnIndex,$columnIndex,row,rowIndex:$xeTable.getRowIndex(row),$rowIndex:$xeTable.getVMRowIndex(row)},evnt);}},/**
             * 行分组事件
             */triggerRowGroupExpandEvent(evnt,params){const{rowGroupExpandedMaps}=internalData;const aggregateOpts=computeAggregateOpts.value;const{row,column}=params;const{trigger}=aggregateOpts;if(trigger==='manual'){return;}evnt.stopPropagation();const rowid=getRowid($xeTable,row);const expanded=!rowGroupExpandedMaps[rowid];const columnIndex=$xeTable.getColumnIndex(column);const $columnIndex=$xeTable.getVMColumnIndex(column);$xeTable.setRowGroupExpand(row,expanded);dispatchEvent('toggle-row-group-expand',{expanded,column,columnIndex,$columnIndex,row},evnt);},/**
             * 展开树节点事件
             */triggerTreeExpandEvent(evnt,params){const{treeExpandLazyLoadedMaps,treeEATime}=internalData;const treeOpts=computeTreeOpts.value;const{row,column}=params;const{lazy,trigger,accordion}=treeOpts;if(trigger==='manual'){return;}evnt.stopPropagation();const rowid=getRowid($xeTable,row);if(!lazy||!treeExpandLazyLoadedMaps[rowid]){const expanded=!$xeTable.isTreeExpandByRow(row);const columnIndex=$xeTable.getColumnIndex(column);const $columnIndex=$xeTable.getVMColumnIndex(column);if(treeEATime){clearTimeout(treeEATime);}$xeTable.setTreeExpand(row,expanded).then(()=>{if(accordion){internalData.treeEATime=setTimeout(()=>{internalData.treeEATime=undefined;$xeTable.scrollToRow(row);},30);}});dispatchEvent('toggle-tree-expand',{expanded,column,columnIndex,$columnIndex,row},evnt);}},handleColumnSortEvent(evnt,column){const{mouseConfig}=props;const mouseOpts=computeMouseOpts.value;const{field,sortable,order}=column;if(sortable){const params={$table:$xeTable,$event:evnt,column,field,property:field,order,sortList:$xeTable.getSortColumns(),sortTime:column.sortTime};if(mouseConfig&&mouseOpts.area&&$xeTable.handleSortEvent){$xeTable.handleSortEvent(evnt,params);}if(!order){dispatchEvent('clear-sort',params,evnt);}dispatchEvent('sort-change',params,evnt);}},/**
             * 点击排序事件
             */triggerSortEvent(evnt,column,order){const sortOpts=computeSortOpts.value;const{multiple,allowClear}=sortOpts;const{field,sortable}=column;if(sortable){if(!order||column.order===order){if(allowClear){$xeTable.clearSort(multiple?column:null);}}else{$xeTable.sort({field,order});}$xeTable.handleColumnSortEvent(evnt,column);}},handleCellRuleUpdateStatus(type,cellParams,cellValue){const{validStore}=reactData;const{row,column}=cellParams;if($xeTable.hasCellRules){if($xeTable.hasCellRules(type,row,column)){const cell=$xeTable.getCellElement(row,column);if(cell){const customVal=!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(cellValue);return $xeTable.validCellRules(type,row,column,cellValue).then(()=>{if(customVal&&validStore.visible){setCellValue(row,column,cellValue);}$xeTable.clearValidate(row,column);}).catch(({rule})=>{if(customVal){setCellValue(row,column,cellValue);}$xeTable.showValidTooltip({rule,row,column,cell});});}}}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},/**
             * 表头单元格按下事件
             */triggerHeaderCellMousedownEvent(evnt,params){const{mouseConfig}=props;const mouseOpts=computeMouseOpts.value;const columnOpts=computeColumnOpts.value;const columnDragOpts=computeColumnDragOpts.value;const{trigger,isCrossDrag,isPeerDrag,disabledMethod}=columnDragOpts;const cell=evnt.currentTarget;const triggerInput=cell&&cell.tagName&&cell.tagName.toLowerCase()==='input';const triggerCheckbox=getEventTargetNode(evnt,cell,'vxe-cell--checkbox').flag;const triggerSort=getEventTargetNode(evnt,cell,'vxe-cell--sort').flag;const triggerFilter=getEventTargetNode(evnt,cell,'vxe-cell--filter').flag;let triggerDrag=false;const isColDragCell=columnOpts.drag&&trigger==='cell';if(!(triggerInput||triggerCheckbox||triggerSort||triggerFilter)){const{column}=params;if(isColDragCell&&!column.fixed&&(isCrossDrag||isPeerDrag||!column.parentId)&&!(disabledMethod&&disabledMethod(params))){triggerDrag=true;$xeTable.handleHeaderCellDragMousedownEvent(evnt,params);}}if(!triggerDrag&&mouseConfig&&mouseOpts.area&&$xeTable.handleHeaderCellAreaMouseDnEvent){$xeTable.handleHeaderCellAreaMouseDnEvent(evnt,Object.assign({cell,triggerSort,triggerFilter},params));}$xeTable.focus();if($xeTable.closeMenu){$xeTable.closeMenu();}},/**
             * 单元格按下事件
             */triggerCellMousedownEvent(evnt,params){const{column}=params;const{type,treeNode}=column;const isRadioType=type==='radio';const isCheckboxType=type==='checkbox';const isExpandType=type==='expand';const rowOpts=computeRowOpts.value;const rowDragOpts=computeRowDragOpts.value;const{trigger,isCrossDrag,isPeerDrag,disabledMethod}=rowDragOpts;const cell=evnt.currentTarget;params.cell=cell;const triggerInput=cell&&cell.tagName&&cell.tagName.toLowerCase()==='input';const triggerRadio=isRadioType&&getEventTargetNode(evnt,cell,'vxe-cell--radio').flag;const triggerCheckbox=isCheckboxType&&getEventTargetNode(evnt,cell,'vxe-cell--checkbox').flag;const triggerTreeNode=treeNode&&getEventTargetNode(evnt,cell,'vxe-cell--tree-btn').flag;const triggerExpandNode=isExpandType&&getEventTargetNode(evnt,cell,'vxe-table--expanded').flag;let isColDragCell=false;if(rowOpts.drag){isColDragCell=trigger==='row'||column.dragSort&&trigger==='cell';}let triggerDrag=false;if(!(triggerInput||triggerRadio||triggerCheckbox||triggerTreeNode||triggerExpandNode)){if(isColDragCell&&(isCrossDrag||isPeerDrag||!params.level)&&!(disabledMethod&&disabledMethod(params))){triggerDrag=true;$xeTable.handleCellDragMousedownEvent(evnt,params);}}if(!triggerDrag&&$xeTable.handleCellMousedownEvent){$xeTable.handleCellMousedownEvent(evnt,params);}$xeTable.focus();$xeTable.closeFilter();if($xeTable.closeMenu){$xeTable.closeMenu();}},triggerCellMouseupEvent(){clearDragStatus();},/**
             * 行拖拽
             */handleRowDragDragstartEvent(evnt){if(evnt.dataTransfer){evnt.dataTransfer.setDragImage(getTpImg(),0,0);}$xeTable.closeTooltip();},handleRowDragSwapEvent(evnt,isSyncRow,dragRow,prevDragRow,prevDragPos,prevDragToChild){const{treeConfig,dragConfig}=props;const rowDragOpts=computeRowDragOpts.value;const{afterFullData,tableFullData,fullAllDataRowIdData}=internalData;const $xeGanttView=internalData.xeGanttView;const{animation,isPeerDrag,isCrossDrag,isSelfToChildDrag,dragEndMethod,dragToChildMethod}=rowDragOpts;const treeOpts=computeTreeOpts.value;const cellOpts=computeCellOpts.value;const rowOpts=computeRowOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const{transform,rowField,mapChildrenField,parentField}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;const dEndMethod=dragEndMethod||(dragConfig?dragConfig.dragEndMethod:null);const dragOffsetIndex=prevDragPos==='bottom'?1:0;const el=refElem.value;const errRest={status:false};if(!(el&&prevDragRow&&dragRow)){handleRowDragEndClearStatus();return Promise.resolve(errRest);}// 判断是否有拖动
if(prevDragRow!==dragRow){const dragParams={oldRow:dragRow,newRow:prevDragRow,dragRow,dragPos:prevDragPos,dragToChild:!!prevDragToChild,offsetIndex:dragOffsetIndex};const dragRowid=getRowid($xeTable,dragRow);const dragRowRest=fullAllDataRowIdData[dragRowid]||{};const _dragRowIndex=dragRowRest._index;let dragRowHeight=0;let dragOffsetTop=-1;if(animation){dragRowHeight=getCellRestHeight(dragRowRest,cellOpts,rowOpts,defaultRowHeight);const oldTrEl=el.querySelector(`.vxe-body--row[rowid="${dragRowid}"]`);if(oldTrEl){dragOffsetTop=oldTrEl.offsetTop;}}let oafIndex=-1;let nafIndex=-1;const oldRest=dragRowRest;const newRowid=getRowid($xeTable,prevDragRow);const newRest=fullAllDataRowIdData[newRowid];const oldAllMaps={};let isSelfToChildStatus=false;// 如果为树结构
if(treeConfig){if(transform){if(oldRest&&newRest){const{level:oldLevel}=oldRest;const{level:newLevel}=newRest;external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([dragRow],item=>{oldAllMaps[getRowid($xeTable,item)]=item;},{children:mapChildrenField});if(oldLevel&&newLevel){// 子到子
if(isPeerDrag&&!isCrossDrag){if(oldRest.row[parentField]!==newRest.row[parentField]){// 非同级
handleRowDragEndClearStatus();return Promise.resolve(errRest);}}else{if(!isCrossDrag){handleRowDragEndClearStatus();return Promise.resolve(errRest);}if(oldAllMaps[newRowid]){isSelfToChildStatus=true;if(!(isCrossDrag&&isSelfToChildDrag)){if(core_.VxeUI.modal){core_.VxeUI.modal.message({status:'error',content:table_getI18n('vxe.error.treeDragChild')});}handleRowDragEndClearStatus();return Promise.resolve(errRest);}}}}else if(oldLevel){// 子到根
if(!isCrossDrag){handleRowDragEndClearStatus();return Promise.resolve(errRest);}}else if(newLevel){// 根到子
if(!isCrossDrag){handleRowDragEndClearStatus();return Promise.resolve(errRest);}if(oldAllMaps[newRowid]){isSelfToChildStatus=true;if(!(isCrossDrag&&isSelfToChildDrag)){if(core_.VxeUI.modal){core_.VxeUI.modal.message({status:'error',content:table_getI18n('vxe.error.treeDragChild')});}handleRowDragEndClearStatus();return Promise.resolve(errRest);}}}else{// 根到根
}}}}const isDragToChildFlag=isSelfToChildDrag&&dragToChildMethod?dragToChildMethod(dragParams):prevDragToChild;if(dEndMethod){handleRowDragEndClearStatus();}return Promise.resolve(dEndMethod?dEndMethod(dragParams):true).then(status=>{if(!status){return errRest;}// 如果为树结构
if(treeConfig){if(transform){// 移出源位置
if(oldRest&&newRest){const fullList=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toTreeArray(internalData.afterTreeFullData,{updated:false,key:rowField,parentKey:parentField,children:mapChildrenField});// 移出
const otfIndex=$xeTable.findRowIndexOf(fullList,dragRow);fullList.splice(otfIndex,1);// 插入
const ptfIndex=$xeTable.findRowIndexOf(fullList,prevDragRow);const ntfIndex=ptfIndex+dragOffsetIndex;fullList.splice(ntfIndex,0,dragRow);// 改变层级
if(isSelfToChildStatus&&isCrossDrag&&isSelfToChildDrag){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(dragRow[childrenField],childRow=>{childRow[parentField]=dragRow[parentField];});}dragRow[parentField]=isDragToChildFlag?prevDragRow[rowField]:prevDragRow[parentField];internalData.tableFullTreeData=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toArrayTree(fullList,{key:rowField,parentKey:parentField,children:childrenField,mapChildren:mapChildrenField});}}}else{// 移出
oafIndex=$xeTable.findRowIndexOf(afterFullData,dragRow);const otfIndex=$xeTable.findRowIndexOf(tableFullData,dragRow);afterFullData.splice(oafIndex,1);tableFullData.splice(otfIndex,1);// 插入
const pafIndex=$xeTable.findRowIndexOf(afterFullData,prevDragRow);const ptfIndex=$xeTable.findRowIndexOf(tableFullData,prevDragRow);nafIndex=pafIndex+dragOffsetIndex;const ntfIndex=ptfIndex+dragOffsetIndex;afterFullData.splice(nafIndex,0,dragRow);tableFullData.splice(ntfIndex,0,dragRow);}$xeTable.handleClearStack();$xeTable.handleTableData(treeConfig&&transform);$xeTable.cacheRowMap(false);updateScrollYStatus();if(!(treeConfig&&transform)){$xeTable.updateAfterDataIndex();}$xeTable.checkSelectionStatus();if(reactData.scrollYLoad){$xeTable.updateScrollYSpace();}if(evnt){dispatchEvent('row-dragend',{oldRow:dragRow,newRow:prevDragRow,dragRow,dragPos:prevDragPos,dragToChild:isDragToChildFlag,offsetIndex:dragOffsetIndex,_index:{newIndex:nafIndex,oldIndex:oafIndex}},evnt);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{if(animation){const{tableData}=reactData;const{fullAllDataRowIdData}=internalData;const dragRowRest=fullAllDataRowIdData[dragRowid];const _newRowIndex=dragRowRest._index;const firstRow=tableData[0];const firstRowRest=fullAllDataRowIdData[getRowid($xeTable,firstRow)];let wrapperEl=el;if($xeGantt&&$xeGanttView){const{refGanttContainerElem}=$xeGantt.getRefMaps();const ganttContainerElem=refGanttContainerElem.value;if(ganttContainerElem){wrapperEl=ganttContainerElem;}}if(firstRowRest){const _firstRowIndex=firstRowRest._index;const _lastRowIndex=_firstRowIndex+tableData.length;let rsIndex=-1;let reIndex=-1;let offsetRate=1;if(_dragRowIndex<_firstRowIndex){// 从上往下虚拟拖拽
rsIndex=0;reIndex=_newRowIndex-_firstRowIndex;}else if(_dragRowIndex>_lastRowIndex){// 从下往上虚拟拖拽
const $newRowIndex=dragRowRest.$index;rsIndex=$newRowIndex+1;reIndex=tableData.length;offsetRate=-1;}else{if(_newRowIndex>_dragRowIndex){// 从上往下拖拽
rsIndex=_dragRowIndex-_firstRowIndex;reIndex=rsIndex+_newRowIndex-_dragRowIndex;}else{// 从下往上拖拽
rsIndex=_newRowIndex-_firstRowIndex;reIndex=rsIndex+_dragRowIndex-_newRowIndex+1;offsetRate=-1;}}const dragRangeList=tableData.slice(rsIndex,reIndex);if(dragRangeList.length){const dtClss=[];dragRangeList.forEach(row=>{const rowid=getRowid($xeTable,row);dtClss.push(`.vxe-body--row[rowid="${rowid}"]`);if($xeGantt){dtClss.push(`.vxe-gantt-view--body-row[rowid="${rowid}"]`,`.vxe-gantt-view--chart-row[rowid="${rowid}"]`);}});const dtTrList=wrapperEl.querySelectorAll(dtClss.join(','));moveRowAnimateToTb(dtTrList,offsetRate*dragRowHeight);}}const drClss=[`.vxe-body--row[rowid="${dragRowid}"]`];if($xeGantt){drClss.push(`.vxe-gantt-view--body-row[rowid="${dragRowid}"]`,`.vxe-gantt-view--chart-row[rowid="${dragRowid}"]`);}const newDtTrList=wrapperEl.querySelectorAll(drClss.join(','));const newTrEl=newDtTrList[0];if(dragOffsetTop>-1&&newTrEl){moveRowAnimateToTb(newDtTrList,dragOffsetTop-newTrEl.offsetTop);}}updateRowOffsetTop();updateRowExpandStyle();$xeTable.updateCellAreas();$xeTable.recalculate();}).then(()=>{return{status:true};});}).catch(()=>{return errRest;}).then(rest=>{handleRowDragEndClearStatus();return rest;});}handleRowDragEndClearStatus();return Promise.resolve(errRest);},handleCrossTableRowDragCancelEvent(){handleRowDragEndClearStatus();},/**
             * 处理跨表拖拽完成
             */handleCrossTableRowDragFinishEvent(evnt){const{tableData}=reactData;const{fullAllDataRowIdData}=internalData;const rowOpts=computeRowOpts.value;const cellOpts=computeCellOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const rowDragOpts=computeRowDragOpts.value;const{animation,isCrossTableDrag}=rowDragOpts;const treeOpts=computeTreeOpts.value;const{mapChildrenField}=treeOpts;const el=refElem.value;if(isCrossTableDrag&&crossTableDragRowObj&&crossTableDragRowInfo){const{row:dragRow}=crossTableDragRowInfo;if(dragRow){const dragRowid=getRowid($xeTable,dragRow);const dragRowRest=fullAllDataRowIdData[dragRowid];let dragRowHeight=0;let rsIndex=-1;if(dragRowRest){if(animation){dragRowHeight=getCellRestHeight(dragRowRest,cellOpts,rowOpts,defaultRowHeight);}rsIndex=dragRowRest.$index;}const dragRangeList=rsIndex>-1&&rsIndex<tableData.length-1?tableData.slice(rsIndex+1):[];const dragList=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toTreeArray([dragRow],{updated:true,children:mapChildrenField});$xeTable.remove(dragList).then(()=>{if(animation&&dragRowHeight&&dragRangeList.length){const $xeGanttView=internalData.xeGanttView;let wrapperEl=el;if($xeGantt&&$xeGanttView){const{refGanttContainerElem}=$xeGantt.getRefMaps();const ganttContainerElem=refGanttContainerElem.value;if(ganttContainerElem){wrapperEl=ganttContainerElem;}}const dtClss=[];dragRangeList.forEach(row=>{const rowid=getRowid($xeTable,row);dtClss.push(`.vxe-body--row[rowid="${rowid}"]`);if($xeGantt){dtClss.push(`.vxe-gantt-view--body-row[rowid="${rowid}"]`,`.vxe-gantt-view--chart-row[rowid="${rowid}"]`);}});const dtTrList=wrapperEl.querySelectorAll(dtClss.join(','));moveRowAnimateToTb(dtTrList,dragRowHeight);}});dispatchEvent('row-remove-dragend',{row:dragRow},evnt);handleRowDragEndClearStatus();}}},/**
             * 处理跨表拖至新的空表
             */handleCrossTableRowDragoverEmptyEvent(evnt){const{tableData}=reactData;const rowDragOpts=computeRowDragOpts.value;const{isCrossTableDrag}=rowDragOpts;if(isCrossTableDrag&&crossTableDragRowObj&&!tableData.length){const{$oldTable,$newTable}=crossTableDragRowObj;if($oldTable){const oldTableReactData=$oldTable.reactData;if($oldTable.xID!==$xeTable.xID){if($newTable&&$newTable.xID!==$xeTable.xID){$newTable.hideCrossTableRowDropClearStatus();}evnt.preventDefault();$oldTable.hideCrossTableRowDropClearStatus();crossTableDragRowObj.$newTable=$xeTable;internalData.prevDragRow=null;reactData.dragTipText=oldTableReactData.dragTipText;showDropTip(evnt,evnt.currentTarget,null,true,'');}}}},/**
             * 处理跨表拖插入
             */handleCrossTableRowDragInsertEvent(evnt){const{treeConfig}=props;const{prevDragRow,prevDragPos,prevDragToChild}=internalData;const rowDragOpts=computeRowDragOpts.value;const{animation,isSelfToChildDrag,isCrossTableDrag,dragEndMethod,dragToChildMethod}=rowDragOpts;const rowOpts=computeRowOpts.value;const cellOpts=computeCellOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const treeOpts=computeTreeOpts.value;const{parentField,mapChildrenField}=treeOpts;const childrenField=treeOpts.children||treeOpts.childrenField;// 跨表拖拽
if(isCrossTableDrag&&crossTableDragRowObj&&crossTableDragRowInfo){const{row:oldRow}=crossTableDragRowInfo;const{$oldTable}=crossTableDragRowObj;const el=refElem.value;if($oldTable&&oldRow){const dragRow=oldRow;let dragOffsetIndex=-1;if(prevDragRow){dragOffsetIndex=prevDragPos==='bottom'?1:0;}const dragParams={oldRow:dragRow,newRow:prevDragRow,dragRow,dragPos:prevDragPos,dragToChild:!!prevDragToChild,offsetIndex:dragOffsetIndex};const isDragToChildFlag=isSelfToChildDrag&&dragToChildMethod?dragToChildMethod(dragParams):prevDragToChild;const errRest={status:false};if(dragEndMethod){handleRowDragEndClearStatus();}Promise.resolve(dragEndMethod?dragEndMethod(dragParams):true).then(status=>{if(!status){if($oldTable){if($oldTable.xID!==$xeTable.xID){$oldTable.handleCrossTableRowDragCancelEvent(evnt);}}handleRowDragEndClearStatus();return errRest;}let insertRest=Promise.resolve();if(treeConfig){const dragList=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toTreeArray([dragRow],{updated:true,children:mapChildrenField});$oldTable.handleCrossTableRowDragFinishEvent(evnt);if(prevDragRow){dragRow[parentField]=prevDragRow[parentField];}else{dragRow[parentField]=null;}dragList.forEach(row=>{row[childrenField]=undefined;row[mapChildrenField]=undefined;});if(prevDragRow){if(prevDragPos==='bottom'){insertRest=$xeTable.insertNextAt(dragList,prevDragRow);}else{insertRest=$xeTable.insertAt(dragList,prevDragRow);}}else{insertRest=$xeTable.insert(dragList);}}else{$oldTable.handleCrossTableRowDragFinishEvent(evnt);if(prevDragRow){if(prevDragPos==='bottom'){insertRest=$xeTable.insertNextAt(dragRow,prevDragRow);}else{insertRest=$xeTable.insertAt(dragRow,prevDragRow);}}else{insertRest=$xeTable.insert(dragRow);}}dispatchEvent('row-insert-dragend',{oldRow,newRow:prevDragRow,dragRow,dragPos:prevDragPos,dragToChild:isDragToChildFlag,offsetIndex:dragOffsetIndex},evnt);clearRowDragData();insertRest.then(()=>{const{tableData}=reactData;const{fullAllDataRowIdData}=internalData;const oldRowid=getRowid($xeTable,dragRow);const oldRowRest=fullAllDataRowIdData[oldRowid];let dragRowHeight=0;let rsIndex=-1;if(oldRowRest){if(animation){dragRowHeight=getCellRestHeight(oldRowRest,cellOpts,rowOpts,defaultRowHeight);}rsIndex=oldRowRest.$index;}const dragRangeList=rsIndex>-1?tableData.slice(rsIndex):[];if(animation&&dragRowHeight&&dragRangeList.length){const $xeGanttView=internalData.xeGanttView;let wrapperEl=el;if($xeGantt&&$xeGanttView){const{refGanttContainerElem}=$xeGantt.getRefMaps();const ganttContainerElem=refGanttContainerElem.value;if(ganttContainerElem){wrapperEl=ganttContainerElem;}}const dtClss=[];dragRangeList.forEach(row=>{const rowid=getRowid($xeTable,row);dtClss.push(`.vxe-body--row[rowid="${rowid}"]`);if($xeGantt){dtClss.push(`.vxe-gantt-view--body-row[rowid="${rowid}"]`,`.vxe-gantt-view--chart-row[rowid="${rowid}"]`);}});const dtTrList=wrapperEl.querySelectorAll(dtClss.join(','));moveRowAnimateToTb(dtTrList,-dragRowHeight);}});});}}},hideCrossTableRowDropClearStatus(){hideDropTip();},handleRowDragDragendEvent(evnt){const{treeConfig}=props;const{fullAllDataRowIdData,prevDragToChild}=internalData;const{dragRow}=reactData;const treeOpts=computeTreeOpts.value;const{lazy}=treeOpts;const hasChildField=treeOpts.hasChild||treeOpts.hasChildField;const{prevDragRow,prevDragPos}=internalData;const rowDragOpts=computeRowDragOpts.value;const{isCrossTableDrag}=rowDragOpts;// 跨表拖拽
if(isCrossTableDrag&&crossTableDragRowObj){const{$newTable}=crossTableDragRowObj;if($newTable&&$newTable.xID!==$xeTable.xID){$newTable.handleCrossTableRowDragInsertEvent(evnt);return;}}if(treeConfig&&lazy&&prevDragToChild){// 懒加载
const newRowid=getRowid($xeTable,prevDragRow);const rowRest=fullAllDataRowIdData[newRowid];if(prevDragRow[hasChildField]){if(rowRest&&rowRest.treeLoaded){$xeTable.handleRowDragSwapEvent(evnt,true,dragRow,prevDragRow,prevDragPos,prevDragToChild);}}else{$xeTable.handleRowDragSwapEvent(evnt,true,dragRow,prevDragRow,prevDragPos,prevDragToChild);}}else{$xeTable.handleRowDragSwapEvent(evnt,true,dragRow,prevDragRow,prevDragPos,prevDragToChild);}},handleRowDragDragoverEvent(evnt){const{treeConfig}=props;const{fullAllDataRowIdData}=internalData;const{dragRow}=reactData;const treeOpts=computeTreeOpts.value;const{lazy,transform,parentField}=treeOpts;const hasChildField=treeOpts.hasChild||treeOpts.hasChildField;const rowDragOpts=computeRowDragOpts.value;const{isPeerDrag,isCrossDrag,isToChildDrag,isCrossTableDrag}=rowDragOpts;if(!dragRow&&!(isCrossTableDrag&&(!treeConfig||isCrossDrag)&&crossTableDragRowObj)){evnt.preventDefault();return;}const isControlKey=hasControlKey(evnt);const trEl=evnt.currentTarget;const rowid=trEl.getAttribute('rowid')||'';const rowRest=fullAllDataRowIdData[rowid];if(rowRest){evnt.preventDefault();const row=rowRest.row;const offsetY=evnt.clientY-trEl.getBoundingClientRect().y;const dragPos=offsetY<trEl.clientHeight/2?'top':'bottom';internalData.prevDragToChild=!!(treeConfig&&transform&&isCrossDrag&&isToChildDrag&&isControlKey);internalData.prevDragRow=row;internalData.prevDragPos=dragPos;// 跨表拖拽
if(isCrossTableDrag&&(!treeConfig||isCrossDrag)&&crossTableDragRowObj){const{$oldTable,$newTable}=crossTableDragRowObj;if($oldTable){const oldTableReactData=$oldTable.reactData;if($oldTable.xID===$xeTable.xID){if($newTable){$newTable.hideCrossTableRowDropClearStatus();}reactData.isCrossDragRow=false;oldTableReactData.isCrossDragRow=false;crossTableDragRowObj.$newTable=null;}else{if($newTable&&$newTable.xID!==$xeTable.xID){$newTable.hideCrossTableRowDropClearStatus();}$oldTable.hideCrossTableRowDropClearStatus();oldTableReactData.isCrossDragRow=true;reactData.dragTipText=oldTableReactData.dragTipText;crossTableDragRowObj.$newTable=$xeTable;showDropTip(evnt,trEl,null,true,dragPos);return;}}}if($xeTable.eqRow(dragRow,row)||isControlKey&&treeConfig&&lazy&&row[hasChildField]&&rowRest&&!rowRest.treeLoaded||!isCrossDrag&&treeConfig&&transform&&(isPeerDrag?dragRow[parentField]!==row[parentField]:rowRest.level)){showDropTip(evnt,trEl,null,false,dragPos);return;}showDropTip(evnt,trEl,null,true,dragPos);dispatchEvent('row-dragover',{oldRow:dragRow,targetRow:row,dragPos},evnt);}},handleCellDragMousedownEvent(evnt,params){evnt.stopPropagation();const{dragConfig}=props;const rowDragOpts=computeRowDragOpts.value;const{isCrossTableDrag,trigger,dragStartMethod}=rowDragOpts;const{row}=params;const dragEl=evnt.currentTarget;const tdEl=trigger==='cell'||trigger==='row'?dragEl:dragEl.parentElement?.parentElement;const trEl=tdEl.parentElement;const dStartMethod=dragStartMethod||(dragConfig?dragConfig.dragStartMethod:null);clearRowDropOrigin();if(dStartMethod&&!dStartMethod(params)){trEl.draggable=false;reactData.dragRow=null;reactData.dragCol=null;clearCrossTableDragStatus();hideDropTip();return;}if(isCrossTableDrag){crossTableDragRowInfo.row=row;crossTableDragRowObj={$oldTable:$xeTable,$newTable:null};}reactData.dragRow=row;reactData.isCrossDragRow=false;reactData.dragCol=null;trEl.draggable=true;updateRowDropOrigin(row);updateRowDropTipContent(tdEl);dispatchEvent('row-dragstart',params,evnt);},handleCellDragMouseupEvent(){clearDragStatus();},/**
             * 列拖拽
             */handleHeaderCellDragDragstartEvent(evnt){if(evnt.dataTransfer){evnt.dataTransfer.setDragImage(getTpImg(),0,0);}$xeTable.closeTooltip();},handleColDragSwapColumn(){handleUpdateColumn();return parseColumns(false).then(()=>{$xeTable.updateCellAreas();$xeTable.saveCustomStore('update:sort');});},handleColDragSwapEvent(evnt,isSyncColumn,dragCol,prevDragCol,prevDragPos,prevDragToChild){const{mouseConfig}=props;const columnDragOpts=computeColumnDragOpts.value;const{animation,isPeerDrag,isCrossDrag,isSelfToChildDrag,isToChildDrag,dragEndMethod,dragToChildMethod}=columnDragOpts;const{collectColumn,fullColumnIdData}=internalData;const el=refElem.value;const dragOffsetIndex=prevDragPos==='right'?1:0;const errRest={status:false};if(!(el&&prevDragCol&&dragCol)){return Promise.resolve(errRest);}// 判断是否有拖动
if(prevDragCol!==dragCol){const dragColumn=dragCol;const newColumn=prevDragCol;const dragParams={oldColumn:dragColumn,newColumn,dragColumn,dragPos:prevDragPos,dragToChild:!!prevDragToChild,offsetIndex:dragOffsetIndex};let dragTargetColumn=null;const dragAllTargetCols=[];let dragColWidth=0;if(animation){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([dragColumn],column=>{if(!dragTargetColumn&&(!column.children||!column.children.length)){dragTargetColumn=column;dragColWidth+=column.renderWidth;}dragAllTargetCols.push(column);});}if(!dragTargetColumn){dragTargetColumn=dragColumn;}const dragColRest=fullColumnIdData[dragTargetColumn.id]||{};const _dragColIndex=dragColRest._index;let dragOffsetLeft=-1;if(animation){const oldTrEl=el.querySelector(`.vxe-table--column[colid="${dragTargetColumn.id}"]`);if(oldTrEl){dragOffsetLeft=oldTrEl.offsetLeft;}}let oafIndex=-1;let nafIndex=-1;const oldAllMaps={};external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([dragColumn],column=>{oldAllMaps[column.id]=column;});let isSelfToChildStatus=false;if(dragColumn.parentId&&newColumn.parentId){// 子到子
if(isPeerDrag&&!isCrossDrag){if(dragColumn.parentId!==newColumn.parentId){// 非同级
handleColDragEndClearStatus();return Promise.resolve(errRest);}}else{if(!isCrossDrag){handleColDragEndClearStatus();return Promise.resolve(errRest);}if(oldAllMaps[newColumn.id]){isSelfToChildStatus=true;if(!(isCrossDrag&&isSelfToChildDrag)){if(core_.VxeUI.modal){core_.VxeUI.modal.message({status:'error',content:table_getI18n('vxe.error.treeDragChild')});}handleColDragEndClearStatus();return Promise.resolve(errRest);}}}}else if(dragColumn.parentId){// 子到根
if(!isCrossDrag){handleColDragEndClearStatus();return Promise.resolve(errRest);}}else if(newColumn.parentId){// 根到子
if(!isCrossDrag){handleColDragEndClearStatus();return Promise.resolve(errRest);}if(oldAllMaps[newColumn.id]){isSelfToChildStatus=true;if(!(isCrossDrag&&isSelfToChildDrag)){if(core_.VxeUI.modal){core_.VxeUI.modal.message({status:'error',content:table_getI18n('vxe.error.treeDragChild')});}handleColDragEndClearStatus();return Promise.resolve(errRest);}}}else{// 根到根
}const isDragToChildFlag=isSelfToChildDrag&&dragToChildMethod?dragToChildMethod(dragParams):prevDragToChild;return Promise.resolve(dragEndMethod?dragEndMethod(dragParams):true).then(status=>{if(!status){return errRest;}const oldewMatchRest=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(collectColumn,item=>item.id===dragColumn.id);// 改变层级
if(isSelfToChildStatus&&isCrossDrag&&isSelfToChildDrag){if(oldewMatchRest){const{items:oCols,index:oIndex}=oldewMatchRest;const childList=dragColumn.children||[];childList.forEach(column=>{column.parentId=dragColumn.parentId;});oCols.splice(oIndex,1,...childList);dragColumn.children=[];}}else{if(oldewMatchRest){const{items:oCols,index:oIndex,parent:oParent}=oldewMatchRest;oCols.splice(oIndex,1);if(!oParent){oafIndex=oIndex;}}}const newMatchRest=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(collectColumn,item=>item.id===newColumn.id);if(newMatchRest){const{items:nCols,index:nIndex,parent:nParent}=newMatchRest;// 转子级
if(isCrossDrag&&isToChildDrag&&isDragToChildFlag){dragColumn.parentId=newColumn.id;newColumn.children=(newColumn.children||[]).concat([dragColumn]);}else{dragColumn.parentId=newColumn.parentId;nCols.splice(nIndex+dragOffsetIndex,0,dragColumn);}if(!nParent){nafIndex=nIndex;}}external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(collectColumn,(column,index,items,path,parentColumn)=>{if(!parentColumn){const sortIndex=index+1;column.renderSortNumber=sortIndex;}});$xeTable.handleClearStack();if(mouseConfig){if($xeTable.clearSelected){$xeTable.clearSelected();}if($xeTable.clearCellAreas){$xeTable.clearCellAreas();$xeTable.clearCopyCellArea();}}if(evnt){dispatchEvent('column-dragend',{oldColumn:dragColumn,newColumn,dragColumn,dragPos:prevDragPos,dragToChild:isDragToChildFlag,offsetIndex:dragOffsetIndex,_index:{newIndex:nafIndex,oldIndex:oafIndex}},evnt);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{if(isSyncColumn){return $xeTable.handleColDragSwapColumn();}}).then(()=>{if(animation){const{tableColumn}=reactData;const{visibleColumn,fullColumnIdData}=internalData;let dragNewColumn=null;const dragNewColMaps={};external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([dragColumn],column=>{if(!dragNewColumn&&(!column.children||!column.children.length)){dragNewColumn=column;}dragNewColMaps[column.id]=column;});if(!dragNewColumn){dragNewColumn=dragColumn;}if(dragColWidth&&dragAllTargetCols.length){const _newColIndex=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(visibleColumn,column=>!!dragNewColumn&&column.id===dragNewColumn.id);const firstCol=tableColumn[0];const firstColRest=fullColumnIdData[firstCol.id];if(firstColRest){const _firstColIndex=firstColRest._index;const _lastColIndex=_firstColIndex+tableColumn.length;let csIndex=-1;let ceIndex=-1;let offsetRate=1;if(_dragColIndex<_firstColIndex){// 从左往右虚拟拖拽
csIndex=0;ceIndex=_newColIndex-_firstColIndex;}else if(_dragColIndex>_lastColIndex){// 从右往左虚拟拖拽
const $newRowIndex=dragColRest.$index;csIndex=$newRowIndex+1;ceIndex=tableColumn.length;offsetRate=-1;}else{if(_newColIndex>_dragColIndex){// 从左往右拖拽
csIndex=_dragColIndex-_firstColIndex;ceIndex=csIndex+_newColIndex-_dragColIndex;}else{// 从右往左拖拽
csIndex=_newColIndex-_firstColIndex+1;ceIndex=csIndex+_dragColIndex-_newColIndex;offsetRate=-1;}}const dragRangeList=[];const dragRangeMaps={};for(let i=csIndex;i<ceIndex;i++){const column=tableColumn[i];if(!dragRangeMaps[column.id]&&!dragNewColMaps[column.id]){dragRangeMaps[column.id]=column;dragRangeList.push(column);}}external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree([newColumn],column=>{if(!dragRangeMaps[column.id]){dragRangeMaps[column.id]=column;dragRangeList.push(column);}});if(dragRangeList.length){const dtTrList=el.querySelectorAll(dragRangeList.map(column=>`.vxe-table--column[colid="${column.id}"]`).join(','));moveColAnimateToLr(dtTrList,offsetRate*dragColWidth);}}const newTrList=el.querySelectorAll(dragAllTargetCols.map(column=>`.vxe-table--column[colid="${column.id}"]`).join(','));const newTdEl=newTrList[0];if(dragOffsetLeft>-1&&newTdEl){moveColAnimateToLr(newTrList,dragOffsetLeft-newTdEl.offsetLeft);}}}updateColumnOffsetLeft();loadScrollXData();$xeTable.updateCellAreas();return{status:true};});}).catch(()=>{return errRest;}).then(rest=>{handleColDragEndClearStatus();return rest;});}handleColDragEndClearStatus();return Promise.resolve(errRest);},handleHeaderCellDragDragendEvent(evnt){const{dragCol}=reactData;const{prevDragCol,prevDragPos,prevDragToChild}=internalData;$xeTable.handleColDragSwapEvent(evnt,true,dragCol,prevDragCol,prevDragPos,prevDragToChild);},handleHeaderCellDragDragoverEvent(evnt){const{dragCol}=reactData;const columnDragOpts=computeColumnDragOpts.value;const{isToChildDrag,isPeerDrag,isCrossDrag}=columnDragOpts;if(!dragCol){evnt.preventDefault();return;}const isControlKey=hasControlKey(evnt);const thEl=evnt.currentTarget;const colid=thEl.getAttribute('colid');const column=$xeTable.getColumnById(colid);if(column){evnt.preventDefault();const{clientX}=evnt;const offsetX=clientX-thEl.getBoundingClientRect().x;const dragPos=offsetX<thEl.clientWidth/2?'left':'right';internalData.prevDragToChild=!!(isCrossDrag&&isToChildDrag&&isControlKey);internalData.prevDragCol=column;internalData.prevDragPos=dragPos;if(column.fixed||dragCol&&dragCol.id===column.id||!isCrossDrag&&(isPeerDrag?dragCol.parentId!==column.parentId:column.parentId)){showDropTip(evnt,null,thEl,false,dragPos);return;}showDropTip(evnt,null,thEl,true,dragPos);dispatchEvent('column-dragover',{oldColumn:dragCol,targetColumn:column,dragPos},evnt);// 边缘滚动
const el=refElem.value;if(!el){return;}const xHandleEl=refScrollXHandleElem.value;const tableBody=refTableBody.value;const tableBodyElem=tableBody?tableBody.$el:null;const scrollTargetEl=xHandleEl||tableBodyElem;if(scrollTargetEl){const wrapperRect=el.getBoundingClientRect();const tableWrapperWidth=el.clientWidth;const leftContainerElem=refLeftContainer.value;const leftContainerWidth=leftContainerElem?leftContainerElem.clientWidth:0;const rightContainerElem=refRightContainer.value;const rightContainerWidth=rightContainerElem?rightContainerElem.clientWidth:0;const srartX=wrapperRect.x+leftContainerWidth;const endX=wrapperRect.x+tableWrapperWidth-rightContainerWidth;const distSize=28;const startDistSize=clientX-srartX;const endDistSize=endX-clientX;if(startDistSize>0&&startDistSize<=distSize){const scrollRatio=Math.floor(tableWrapperWidth/(startDistSize>distSize/2?240:120));scrollTargetEl.scrollLeft-=scrollRatio*(distSize-startDistSize);}else if(endDistSize>0&&endDistSize<=distSize){const scrollRatio=Math.floor(tableWrapperWidth/(endDistSize>distSize/2?240:120));scrollTargetEl.scrollLeft+=scrollRatio*(distSize-endDistSize);}}}},handleHeaderCellDragMousedownEvent(evnt,params){evnt.stopPropagation();const columnDragOpts=computeColumnDragOpts.value;const{trigger,dragStartMethod}=columnDragOpts;const{column}=params;const dragEl=evnt.currentTarget;const thEl=trigger==='cell'?dragEl:dragEl.parentElement?.parentElement;clearColDropOrigin();if(dragStartMethod&&!dragStartMethod(params)){thEl.draggable=false;reactData.dragRow=null;reactData.dragCol=null;clearCrossTableDragStatus();hideDropTip();return;}reactData.dragCol=column;reactData.dragRow=null;thEl.draggable=true;clearCrossTableDragStatus();updateColDropOrigin(column);updateColDropTipContent(thEl);dispatchEvent('column-dragstart',params,evnt);},handleHeaderCellDragMouseupEvent(){clearColDropOrigin();hideDropTip();clearCrossTableDragStatus();reactData.dragRow=null;reactData.dragCol=null;},handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,params){const{highlightHoverRow}=props;const{lastScrollLeft,lastScrollTop}=internalData;const xHandleEl=refScrollXHandleElem.value;const yHandleEl=refScrollYHandleElem.value;if(!xHandleEl||!yHandleEl){return;}const rowOpts=computeRowOpts.value;const validTip=refValidTooltip.value;const tooltip=refTooltip.value;const bodyHeight=yHandleEl.clientHeight;const bodyWidth=xHandleEl.clientWidth;const scrollHeight=yHandleEl.scrollHeight;const scrollWidth=xHandleEl.scrollWidth;let isTop=false;let isBottom=false;let isLeft=false;let isRight=false;let direction='';let isTopBoundary=false;let isBottomBoundary=false;let isLeftBoundary=false;let isRightBoundary=false;if(isRollX){const xThreshold=computeScrollXThreshold.value;isLeft=scrollLeft<=0;if(!isLeft){isRight=scrollLeft+bodyWidth>=scrollWidth;}if(scrollLeft>lastScrollLeft){direction='right';if(scrollLeft+bodyWidth>=scrollWidth-xThreshold){isRightBoundary=true;}}else{direction='left';if(scrollLeft<=xThreshold){isLeftBoundary=true;}}$xeTable.checkScrolling();internalData.lastScrollLeft=scrollLeft;}if(isRollY){const yThreshold=computeScrollYThreshold.value;isTop=scrollTop<=1;if(!isTop){isBottom=scrollTop+bodyHeight>=scrollHeight-1;}if(scrollTop>lastScrollTop){direction='bottom';if(scrollTop+bodyHeight>=scrollHeight-yThreshold){isBottomBoundary=true;}}else{direction='top';if(scrollTop<=yThreshold){isTopBoundary=true;}}internalData.lastScrollTop=scrollTop;}internalData.lastSTime=Date.now();const evntParams={source:table_sourceType,scrollTop,scrollLeft,bodyHeight,bodyWidth,scrollHeight,scrollWidth,isX:isRollX,isY:isRollY,isTop,isBottom,isLeft,isRight,direction,...params};updateRowExpandStyle();checkLastSyncScroll(isRollX,isRollY);if(isRollX){$xeTable.closeFilter();}if(rowOpts.isHover||highlightHoverRow){$xeTable.clearHoverRow();}if(validTip&&validTip.reactData.visible){validTip.close();}if(tooltip&&tooltip.reactData.visible){tooltip.close();}if(isBottomBoundary||isTopBoundary||isRightBoundary||isLeftBoundary){dispatchEvent('scroll-boundary',evntParams,evnt);}dispatchEvent('scroll',evntParams,evnt);},/**
             * 横向 X 可视渲染事件处理
             */triggerScrollXEvent(){const virtualXOpts=computeVirtualXOpts.value;if(virtualXOpts.immediate){loadScrollXData();}else{lazyScrollXData();}},/**
             * 纵向 Y 可视渲染事件处理
             */triggerScrollYEvent(){const virtualYOpts=computeVirtualYOpts.value;if(virtualYOpts.immediate){loadScrollYData();}else{lazyScrollYData();}},triggerBodyScrollEvent(evnt,fixedType){const{scrollYLoad,scrollXLoad}=reactData;const{elemStore,intoRunScroll,lastScrollTop,lastScrollLeft,inWheelScroll,inVirtualScroll,inHeaderScroll,inBodyScroll,scrollRenderType,inFooterScroll}=internalData;if(inWheelScroll||inVirtualScroll||inHeaderScroll||inFooterScroll){return;}const xHandleEl=refScrollXHandleElem.value;const yHandleEl=refScrollYHandleElem.value;const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);const rowExpandEl=refRowExpandElem.value;if(intoRunScroll){return;}if(!bodyScrollElem){return;}if(!xHandleEl){return;}if(!yHandleEl){return;}if(inBodyScroll){if(scrollRenderType!==fixedType){return;}}let scrollTop=yHandleEl.scrollTop;let scrollLeft=xHandleEl.scrollLeft;if(leftScrollElem&&fixedType==='left'){scrollTop=leftScrollElem.scrollTop;}else if(rightScrollElem&&fixedType==='right'){scrollTop=rightScrollElem.scrollTop;}else{scrollTop=bodyScrollElem.scrollTop;scrollLeft=bodyScrollElem.scrollLeft;}const isRollX=scrollLeft!==lastScrollLeft;const isRollY=scrollTop!==lastScrollTop;internalData.inBodyScroll=true;internalData.scrollRenderType=fixedType;if(isRollY){if(fixedType==='left'){setScrollTop(bodyScrollElem,scrollTop);setScrollTop(rightScrollElem,scrollTop);}else if(fixedType==='right'){setScrollTop(bodyScrollElem,scrollTop);setScrollTop(leftScrollElem,scrollTop);}else{setScrollTop(leftScrollElem,scrollTop);setScrollTop(rightScrollElem,scrollTop);}setScrollTop(yHandleEl,scrollTop);setScrollTop(rowExpandEl,scrollTop);syncGanttScrollTop(scrollTop);if(scrollYLoad){$xeTable.triggerScrollYEvent(evnt);}}if(isRollX){setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(headerScrollElem,scrollLeft);setScrollLeft(footerScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'body',fixed:fixedType});},triggerHeaderScrollEvent(evnt,fixedType){const{scrollXLoad}=reactData;const{elemStore,intoRunScroll,inWheelScroll,inVirtualScroll,inBodyScroll,inFooterScroll}=internalData;if(inWheelScroll||inVirtualScroll||inBodyScroll||inFooterScroll){return;}const yHandleEl=refScrollYHandleElem.value;const xHandleEl=refScrollXHandleElem.value;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);if(intoRunScroll){return;}if(!headerScrollElem){return;}if(!xHandleEl){return;}if(!yHandleEl){return;}const scrollTop=yHandleEl.scrollTop;const scrollLeft=headerScrollElem.scrollLeft;const isRollX=true;const isRollY=false;internalData.inHeaderScroll=true;setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(footerScrollElem,scrollLeft);setScrollLeft(bodyScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'header',fixed:fixedType});},triggerFooterScrollEvent(evnt,fixedType){const{scrollXLoad}=reactData;const{elemStore,intoRunScroll,inWheelScroll,inVirtualScroll,inHeaderScroll,inBodyScroll}=internalData;if(inWheelScroll||inVirtualScroll||inHeaderScroll||inBodyScroll){return;}const yHandleEl=refScrollYHandleElem.value;const xHandleEl=refScrollXHandleElem.value;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);if(intoRunScroll){return;}if(!footerScrollElem){return;}if(!xHandleEl){return;}if(!yHandleEl){return;}const scrollTop=yHandleEl.scrollTop;const scrollLeft=footerScrollElem.scrollLeft;const isRollX=true;const isRollY=false;internalData.inFooterScroll=true;setScrollLeft(xHandleEl,scrollLeft);setScrollLeft(headerScrollElem,scrollLeft);setScrollLeft(bodyScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'footer',fixed:fixedType});},triggerBodyWheelEvent(evnt){const{target,deltaY,deltaX,shiftKey}=evnt;if(target&&/^textarea$/i.test(target.tagName)){return;}// 如果滚轮未移动或者触摸板未变化位置
if(!deltaY&&!deltaX){return;}const{highlightHoverRow}=tableProps;const{scrollXLoad,scrollYLoad,overflowX,overflowY,expandColumn}=reactData;const leftFixedWidth=computeLeftFixedWidth.value;const rightFixedWidth=computeRightFixedWidth.value;const{elemStore,lastScrollTop,lastScrollLeft}=internalData;const rowOpts=computeRowOpts.value;const scrollbarXOpts=computeScrollbarXOpts.value;const scrollbarYOpts=computeScrollbarYOpts.value;const xHandleEl=refScrollXHandleElem.value;const yHandleEl=refScrollYHandleElem.value;const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);const rowExpandEl=refRowExpandElem.value;if(!bodyScrollElem){return;}const wheelSpeed=getWheelSpeed(internalData.lastSTime);const deltaTop=shiftKey?0:deltaY*wheelSpeed;const deltaLeft=(shiftKey?deltaX||deltaY:deltaX)*wheelSpeed;const currScrollTop=bodyScrollElem.scrollTop;const currScrollLeft=bodyScrollElem.scrollLeft;const scrollTop=Math.max(0,currScrollTop+deltaTop);const scrollLeft=Math.max(0,currScrollLeft+deltaLeft);const isRollX=overflowX&&scrollLeft!==lastScrollLeft;const isRollY=overflowY&&scrollTop!==lastScrollTop;if(isRollX){// 如果禁用滚动
if(scrollbarXOpts.visible==='hidden'){evnt.preventDefault();return;}}if(isRollY){// 如果禁用滚动
if(scrollbarYOpts.visible==='hidden'){evnt.preventDefault();return;}const isTopWheel=deltaTop<0;// 如果滚动位置已经是顶部或底部,则不需要触发
if(isTopWheel?currScrollTop<=0:currScrollTop>=bodyScrollElem.scrollHeight-bodyScrollElem.clientHeight){return;}}// 展开行处理,如果展开行嵌入表格中
if($xeParentTable){if(isRollY){if(checkTargetElement(evnt.target,[leftScrollElem,bodyScrollElem,rightScrollElem],evnt.currentTarget)){evnt.stopPropagation();return;}}if(isRollX){if(checkTargetElement(evnt.target,[headerScrollElem,bodyScrollElem,footerScrollElem],evnt.currentTarget)){evnt.stopPropagation();return;}}}if(!(isRollX||leftFixedWidth||rightFixedWidth||expandColumn)){return;}if(rowOpts.isHover||highlightHoverRow){$xeTable.clearHoverRow();}// 用于鼠标纵向滚轮处理
if(isRollX){evnt.preventDefault();internalData.inWheelScroll=true;wheelScrollLeftTo(scrollLeft,offsetLeft=>{internalData.inWheelScroll=true;const currLeftNum=offsetLeft;setScrollLeft(xHandleEl,currLeftNum);setScrollLeft(bodyScrollElem,currLeftNum);setScrollLeft(headerScrollElem,currLeftNum);setScrollLeft(footerScrollElem,currLeftNum);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,bodyScrollElem.scrollTop,currLeftNum,{type:'table',fixed:''});});}if(isRollY){evnt.preventDefault();internalData.inWheelScroll=true;wheelScrollTopTo(scrollTop,offsetTop=>{internalData.inWheelScroll=true;const currTopNum=offsetTop;setScrollTop(yHandleEl,currTopNum);setScrollTop(bodyScrollElem,currTopNum);setScrollTop(leftScrollElem,currTopNum);setScrollTop(rightScrollElem,currTopNum);setScrollTop(rowExpandEl,currTopNum);syncGanttScrollTop(currTopNum);if(scrollYLoad){$xeTable.triggerScrollYEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,offsetTop,bodyScrollElem.scrollLeft,{type:'table',fixed:''});});}},triggerVirtualScrollXEvent(evnt){const{scrollXLoad}=reactData;const{elemStore,inWheelScroll,lastScrollTop,inHeaderScroll,inBodyScroll,inFooterScroll}=internalData;if(inHeaderScroll||inBodyScroll||inFooterScroll){return;}if(inWheelScroll){return;}const headerScrollElem=getRefElem(elemStore['main-header-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const footerScrollElem=getRefElem(elemStore['main-footer-scroll']);const yHandleEl=refScrollYHandleElem.value;const wrapperEl=evnt.currentTarget;const{scrollLeft}=wrapperEl;const yBodyEl=yHandleEl||bodyScrollElem;let scrollTop=0;if(yBodyEl){scrollTop=yBodyEl.scrollTop;}const isRollX=true;const isRollY=scrollTop!==lastScrollTop;internalData.inVirtualScroll=true;setScrollLeft(bodyScrollElem,scrollLeft);setScrollLeft(headerScrollElem,scrollLeft);setScrollLeft(footerScrollElem,scrollLeft);if(scrollXLoad){$xeTable.triggerScrollXEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'table',fixed:''});},triggerVirtualScrollYEvent(evnt){const{scrollYLoad}=reactData;const{elemStore,inWheelScroll,lastScrollLeft,inHeaderScroll,inBodyScroll,inFooterScroll}=internalData;if(inHeaderScroll||inBodyScroll||inFooterScroll){return;}if(inWheelScroll){return;}const leftScrollElem=getRefElem(elemStore['left-body-scroll']);const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const rightScrollElem=getRefElem(elemStore['right-body-scroll']);const rowExpandEl=refRowExpandElem.value;const xHandleEl=refScrollXHandleElem.value;const wrapperEl=evnt.currentTarget;const{scrollTop}=wrapperEl;const xBodyEl=xHandleEl||bodyScrollElem;let scrollLeft=0;if(xBodyEl){scrollLeft=xBodyEl.scrollLeft;}const isRollX=scrollLeft!==lastScrollLeft;const isRollY=true;internalData.inVirtualScroll=true;setScrollTop(bodyScrollElem,scrollTop);setScrollTop(leftScrollElem,scrollTop);setScrollTop(rightScrollElem,scrollTop);setScrollTop(rowExpandEl,scrollTop);syncGanttScrollTop(scrollTop);if(scrollYLoad){$xeTable.triggerScrollYEvent(evnt);}$xeTable.handleScrollEvent(evnt,isRollY,isRollX,scrollTop,scrollLeft,{type:'table',fixed:''});},/**
             * 对于树形结构中,可以直接滚动到指定深层节点中
             * 对于某些特定的场景可能会用到,比如定位到某一节点
             * @param {Row} row 行对象
             */scrollToTreeRow(row){const{treeConfig}=props;const{isRowGroupStatus}=reactData;const{tableFullData}=internalData;const rests=[];if(treeConfig||isRowGroupStatus){const aggregateOpts=computeAggregateOpts.value;const treeOpts=computeTreeOpts.value;const childrenField=treeOpts.children||treeOpts.childrenField;const matchObj=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(tableFullData,item=>$xeTable.eqRow(item,row),{children:isRowGroupStatus?aggregateOpts.mapChildrenField:childrenField});if(matchObj){const nodes=matchObj.nodes;nodes.forEach((row,index)=>{if(index<nodes.length-1&&!$xeTable.isTreeExpandByRow(row)){rests.push($xeTable.setTreeExpand(row,true));}});}}return Promise.all(rests).then(()=>rowToVisible($xeTable,row));},updateScrollYStatus,// 更新横向 X 可视渲染上下剩余空间大小
updateScrollXSpace(){const{scrollXLoad,overflowX,scrollXWidth}=reactData;const{visibleColumn,scrollXStore,elemStore,fullColumnIdData}=internalData;const $xeGanttView=internalData.xeGanttView;const mouseOpts=computeMouseOpts.value;const tableBody=refTableBody.value;const tableBodyElem=tableBody?tableBody.$el:null;if(tableBodyElem){const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const bodyTableElem=getRefElem(elemStore['main-body-table']);const headerTableElem=getRefElem(elemStore['main-header-table']);const footerTableElem=getRefElem(elemStore['main-footer-table']);let xSpaceLeft=0;const firstColumn=visibleColumn[scrollXStore.startIndex];if(firstColumn){const colRest=fullColumnIdData[firstColumn.id]||{};xSpaceLeft=colRest.oLeft;}let clientWidth=0;if(bodyScrollElem){clientWidth=bodyScrollElem.clientWidth;}// 虚拟渲染
let isScrollXBig=false;let ySpaceWidth=scrollXWidth;if(scrollXWidth>maxXWidth){// 触右
if(bodyScrollElem&&bodyTableElem&&bodyScrollElem.scrollLeft+clientWidth>=maxXWidth){xSpaceLeft=maxXWidth-bodyTableElem.clientWidth;}else{xSpaceLeft=(maxXWidth-clientWidth)*(xSpaceLeft/(scrollXWidth-clientWidth));}ySpaceWidth=maxXWidth;isScrollXBig=true;}if(!(scrollXLoad&&overflowX)){xSpaceLeft=0;}if(table_getConfig().scrollMarginStyle){// 已废弃方式
if(headerTableElem){headerTableElem.style.marginLeft=headerTableElem.getAttribute('xvm')?`${xSpaceLeft}px`:'';}if(bodyTableElem){bodyTableElem.style.marginLeft=`${xSpaceLeft}px`;}if(footerTableElem){footerTableElem.style.marginLeft=footerTableElem.getAttribute('xvm')?`${xSpaceLeft}px`:'';}}else{if(headerTableElem){headerTableElem.style.transform=headerTableElem.getAttribute('xvm')?`translate(${xSpaceLeft}px, 0px)`:'';}if(bodyTableElem){bodyTableElem.style.transform=`translate(${xSpaceLeft}px, ${reactData.scrollYTop||0}px)`;}if(footerTableElem){footerTableElem.style.transform=footerTableElem.getAttribute('xvm')?`translate(${xSpaceLeft}px, 0px)`:'';}}const containerList=['main'];containerList.forEach(name=>{const layoutList=['header','body','footer'];layoutList.forEach(layout=>{const xSpaceElem=getRefElem(elemStore[`${name}-${layout}-xSpace`]);if(xSpaceElem){xSpaceElem.style.width=scrollXLoad?`${ySpaceWidth}px`:'';}});});reactData.scrollXLeft=xSpaceLeft;reactData.scrollXWidth=ySpaceWidth;reactData.isScrollXBig=isScrollXBig;const scrollXSpaceEl=refScrollXSpaceElem.value;if(scrollXSpaceEl){scrollXSpaceEl.style.width=`${ySpaceWidth}px`;}calcScrollbar();if(isScrollXBig&&mouseOpts.area){table_errLog('vxe.error.notProp',['mouse-config.area']);}if($xeGanttView&&$xeGanttView.handleUpdateSXSpace){$xeGanttView.handleUpdateSXSpace();}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{updateStyle();});}},// 更新纵向 Y 可视渲染上下剩余空间大小
updateScrollYSpace(){const{isAllOverflow,overflowY,scrollYLoad,scrollYHeight,expandColumn}=reactData;const{scrollYStore,elemStore,isResizeCellHeight,afterFullData,fullAllDataRowIdData,rowExpandedMaps}=internalData;const $xeGanttView=internalData.xeGanttView;const{startIndex}=scrollYStore;const mouseOpts=computeMouseOpts.value;const expandOpts=computeExpandOpts.value;const rowOpts=computeRowOpts.value;const cellOpts=computeCellOpts.value;const defaultRowHeight=computeDefaultRowHeight.value;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const bodyTableElem=getRefElem(elemStore['main-body-table']);const leftBodyTableElem=getRefElem(elemStore['left-body-table']);const rightbodyTableElem=getRefElem(elemStore['right-body-table']);const containerList=['main','left','right'];let ySpaceTop=0;let sYHeight=scrollYHeight;let isScrollYBig=false;if(scrollYLoad){const isCustomCellHeight=isResizeCellHeight||cellOpts.height||rowOpts.height;if(!isCustomCellHeight&&!expandColumn&&isAllOverflow){sYHeight=afterFullData.length*defaultRowHeight;if(sYHeight>maxYHeight){isScrollYBig=true;}ySpaceTop=Math.max(0,startIndex*defaultRowHeight);}else{const firstRow=afterFullData[startIndex];if(firstRow){let rowid=getRowid($xeTable,firstRow);let rowRest=fullAllDataRowIdData[rowid]||{};ySpaceTop=rowRest.oTop||0;const lastRow=afterFullData[afterFullData.length-1];rowid=getRowid($xeTable,lastRow);rowRest=fullAllDataRowIdData[rowid]||{};if(rowRest){const rHeight=getCellRestHeight(rowRest,cellOpts,rowOpts,defaultRowHeight);// 如果为空时还没计算完数据,保持原高度不变
if(rHeight){sYHeight=(rowRest.oTop||0)+rHeight;// 是否展开行
if(expandColumn&&rowExpandedMaps[rowid]){sYHeight+=rowRest.expandHeight||expandOpts.height||0;}}}if(sYHeight>maxYHeight){isScrollYBig=true;}}else{sYHeight=bodyTableElem?bodyTableElem.clientHeight:0;}}}else{if(bodyTableElem){sYHeight=bodyTableElem.clientHeight;}}let clientHeight=0;if(bodyScrollElem){clientHeight=bodyScrollElem.clientHeight;}// 虚拟渲染
let ySpaceHeight=sYHeight;let scrollYTop=ySpaceTop;if(isScrollYBig){// 触底
if(bodyScrollElem&&bodyTableElem&&bodyScrollElem.scrollTop+clientHeight>=maxYHeight){scrollYTop=maxYHeight-bodyTableElem.clientHeight;}else{scrollYTop=(maxYHeight-clientHeight)*(ySpaceTop/(scrollYHeight-clientHeight));}ySpaceHeight=maxYHeight;}if(!(scrollYLoad&&overflowY)){scrollYTop=0;}if(table_getConfig().scrollMarginStyle){if(leftBodyTableElem){leftBodyTableElem.style.marginTop=`${scrollYTop}px`;}if(bodyTableElem){bodyTableElem.style.marginTop=`${scrollYTop}px`;}if(rightbodyTableElem){rightbodyTableElem.style.marginTop=`${scrollYTop}px`;}}else{if(leftBodyTableElem){leftBodyTableElem.style.transform=`translate(0px, ${scrollYTop}px)`;}if(bodyTableElem){bodyTableElem.style.transform=`translate(${reactData.scrollXLeft||0}px, ${scrollYTop}px)`;}if(rightbodyTableElem){rightbodyTableElem.style.transform=`translate(0px, ${scrollYTop}px)`;}}containerList.forEach(name=>{const layoutList=['header','body','footer'];layoutList.forEach(layout=>{const ySpaceElem=getRefElem(elemStore[`${name}-${layout}-ySpace`]);if(ySpaceElem){ySpaceElem.style.height=ySpaceHeight?`${ySpaceHeight}px`:'';}});});const scrollYSpaceEl=refScrollYSpaceElem.value;if(scrollYSpaceEl){scrollYSpaceEl.style.height=ySpaceHeight?`${ySpaceHeight}px`:'';}const rowExpandYSpaceEl=refRowExpandYSpaceElem.value;if(rowExpandYSpaceEl){rowExpandYSpaceEl.style.height=ySpaceHeight?`${ySpaceHeight}px`:'';}reactData.scrollYTop=scrollYTop;reactData.scrollYHeight=isScrollYBig?sYHeight:ySpaceHeight;reactData.isScrollYBig=isScrollYBig;calcScrollbar();if(isScrollYBig&&mouseOpts.area){table_errLog('vxe.error.notProp',['mouse-config.area']);}if($xeGanttView&&$xeGanttView.handleUpdateSYSpace){$xeGanttView.handleUpdateSYSpace();}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{return updateStyle();});},updateScrollXData(){const{isAllOverflow}=reactData;handleTableColumn();$xeTable.updateScrollXSpace();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{handleTableColumn();$xeTable.updateScrollXSpace();if(!isAllOverflow){$xeTable.updateScrollYSpace();}});},updateScrollYData(){$xeTable.handleTableData();$xeTable.updateScrollYSpace();return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(()=>{$xeTable.handleTableData();$xeTable.updateScrollYSpace();});},/**
             * 处理固定列的显示状态
             */checkScrolling(){const{elemStore}=internalData;const bodyScrollElem=getRefElem(elemStore['main-body-scroll']);const leftContainerElem=refLeftContainer.value;const rightContainerElem=refRightContainer.value;const xHandleEl=refScrollXHandleElem.value;const bodtTargetEl=xHandleEl||bodyScrollElem;if(bodtTargetEl){if(leftContainerElem){if(bodtTargetEl.scrollLeft>0){addClass(leftContainerElem,'scrolling--middle');}else{removeClass(leftContainerElem,'scrolling--middle');}}if(rightContainerElem){if(bodtTargetEl.clientWidth<bodtTargetEl.scrollWidth-Math.ceil(bodtTargetEl.scrollLeft)){addClass(rightContainerElem,'scrolling--middle');}else{removeClass(rightContainerElem,'scrolling--middle');}}}},handleUpdateAggData(){return loadTableData(internalData.tableSynchData,false,true);},handlePushStack(){const keyboardOpts=computeKeyboardOpts.value;if(!keyboardOpts.isUndoRedo){return;}const{stackHistoryStore}=internalData;const stackObj=getSnapshotStackData();stackHistoryStore.undoStacks.push(stackObj);stackHistoryStore.redoStacks=[];truncateStackHistory();},handleUndoStackEvent(evnt){const{stackHistoryStore}=internalData;const{undoStacks,redoStacks}=stackHistoryStore;if(undoStacks.length){const stackObj=getSnapshotStackData();redoStacks.push(stackObj);handleUpdateSnapshotStackData(undoStacks.pop());if(evnt){dispatchEvent('undo',{},evnt);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{return{status:true};});}return Promise.resolve({status:false});},handleRedoStackEvent(evnt){const{stackHistoryStore}=internalData;const{undoStacks,redoStacks}=stackHistoryStore;if(redoStacks.length){const stackObj=getSnapshotStackData();undoStacks.push(stackObj);handleUpdateSnapshotStackData(redoStacks.pop());if(evnt){dispatchEvent('redo',{},evnt);}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{return{status:true};});}return Promise.resolve({status:false});},handleClearStack(){const{stackHistoryStore}=internalData;stackHistoryStore.undoStacks=[];stackHistoryStore.redoStacks=[];return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();},updateZindex(){if(props.zIndex){internalData.tZindex=props.zIndex;}else if(internalData.tZindex<getLastZIndex()){internalData.tZindex=nextZIndex();}},handleCheckedCheckboxRow,/**
             * 行 hover 事件
             */triggerHoverEvent(evnt,{row}){$xeTable.setHoverRow(row);},setHoverRow(row){const $xeGanttView=internalData.xeGanttView;const rowid=getRowid($xeTable,row);const el=refElem.value;$xeTable.clearHoverRow();if(el){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll(`.vxe-body--row[rowid="${rowid}"]`),elem=>addClass(elem,'row--hover'));}internalData.hoverRow=row;if($xeGanttView&&$xeGanttView.handleUpdateHoverRow){$xeGanttView.handleUpdateHoverRow(row);}},clearHoverRow(){const $xeGanttView=internalData.xeGanttView;const el=refElem.value;if(el){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll('.vxe-body--row.row--hover'),elem=>removeClass(elem,'row--hover'));}internalData.hoverRow=null;if($xeGanttView&&$xeGanttView.handleUpdateHoverRow){$xeGanttView.handleUpdateHoverRow();}},/**
             * 已废弃,被 getCellElement 替换
             * @deprecated
             */getCell(row,column){return $xeTable.getCellElement(row,column);},findRowIndexOf(list,row){return row?external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(list,item=>$xeTable.eqRow(item,row)):-1;},eqRow(row1,row2){if(row1&&row2){if(row1===row2){return true;}return getRowid($xeTable,row1)===getRowid($xeTable,row2);}return false;},handleConnectGanttView($ganttView){if($ganttView&&$ganttView.connectUpdate){$ganttView.connectUpdate({$table:$xeTable});internalData.xeGanttView=$ganttView;}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();}};// 检测对应模块是否安装
// 'openExport,openPrint,exportData,openImport,importData,saveFile,readFile,importByFile,print'.split(',').forEach(name => {
//   ($xeTable as any)[name] = function () {
//     errLog('vxe.error.reqModule', ['Export'])
//   }
// })
// 'clearValidate,fullValidate,validate'.split(',').forEach(name => {
//   ($xeTable as any)[name] = function () {
//     errLog('vxe.error.reqModule', ['Validator'])
//   }
// })
Object.assign($xeTable,tableMethods,tablePrivateMethods);/**
         * 渲染浮固定列
         * 分别渲染左边固定列和右边固定列
         * 如果宽度足够情况下,则不需要渲染固定列
         * @param {String} fixedType 固定列类型
         */const renderViewFixed=fixedType=>{const{showHeader,showFooter}=props;const{tableData,tableColumn,tableGroupColumn,columnStore,footerTableData}=reactData;const scrollbarOpts=computeScrollbarOpts.value;const scrollbarXOpts=computeScrollbarXOpts.value;const scrollbarYOpts=computeScrollbarYOpts.value;const{overscrollBehavior:overscrollXBehavior}=scrollbarXOpts;const{overscrollBehavior:overscrollYBehavior}=scrollbarYOpts;const isFixedLeft=fixedType==='left';const fixedColumn=isFixedLeft?columnStore.leftList:columnStore.rightList;const osXBehavior=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(overscrollXBehavior)?scrollbarOpts.overscrollBehavior:overscrollXBehavior;const osYBehavior=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(overscrollYBehavior)?scrollbarOpts.overscrollBehavior:overscrollYBehavior;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:isFixedLeft?refLeftContainer:refRightContainer,class:[`vxe-table--fixed-${fixedType}-wrapper`,`sx--${scrollbarXOpts.visible}`,`sy--${scrollbarYOpts.visible}`,{[`x-ob--${osXBehavior}`]:osXBehavior,[`y-ob--${osYBehavior}`]:osYBehavior}]},[showHeader?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(header,{ref:isFixedLeft?refTableLeftHeader:refTableRightHeader,fixedType,tableData,tableColumn,tableGroupColumn,fixedColumn}):table_renderEmptyElement($xeTable),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(body,{ref:isFixedLeft?refTableLeftBody:refTableRightBody,fixedType,tableData,tableColumn,fixedColumn}),showFooter?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(footer,{ref:isFixedLeft?refTableLeftFooter:refTableRightFooter,footerTableData,tableColumn,fixedColumn,fixedType}):table_renderEmptyElement($xeTable)]);};const renderEmptyBody=()=>{const emptyOpts=computeEmptyOpts.value;const emptySlot=slots.empty;const emptyParams={$table:$xeTable,$grid:$xeGrid,gantt:$xeGantt};if(emptySlot){return emptySlot(emptyParams);}else{const compConf=emptyOpts.name?table_renderer.get(emptyOpts.name):null;const rtEmptyView=compConf?compConf.renderTableEmpty||compConf.renderTableEmptyView||compConf.renderEmpty:null;if(rtEmptyView){return getSlotVNs(rtEmptyView(emptyOpts,emptyParams));}}return getFuncText(props.emptyText)||table_getI18n('vxe.table.emptyText');};const renderDragTipContents=()=>{const{dragConfig}=props;const{dragRow,dragCol,dragTipText}=reactData;const columnDragOpts=computeColumnDragOpts.value;const rowDragOpts=computeRowDragOpts.value;const rowDragSlots=rowDragOpts.slots||{};const rTipSlot=rowDragSlots.tip||(dragConfig&&dragConfig.slots?dragConfig.slots.rowTip:null);const columnDragSlots=columnDragOpts.slots||{};const cTipSlot=columnDragSlots.tip;const dRow=dragRow||(rowDragOpts.isCrossTableDrag?crossTableDragRowInfo.row:null);if(dRow&&rTipSlot){return callSlot(rTipSlot,{row:dRow});}if(dragCol&&cTipSlot){return callSlot(cTipSlot,{column:dragCol});}return[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span',dragTipText)];};const renderDragTip=()=>{const{dragRow,dragCol}=reactData;const rowOpts=computeRowOpts.value;const columnOpts=computeColumnOpts.value;const rowDragOpts=computeRowDragOpts.value;const columnDragOpts=computeColumnDragOpts.value;const dRow=dragRow||(rowDragOpts.isCrossTableDrag?crossTableDragRowInfo.row:null);if(rowOpts.drag||columnOpts.drag){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--drag-wrapper'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refDragRowLineElem,class:['vxe-table--drag-row-line',{'is--guides':rowDragOpts.showGuidesStatus}]}),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refDragColLineElem,class:['vxe-table--drag-col-line',{'is--guides':columnDragOpts.showGuidesStatus}]}),dRow&&rowDragOpts.showDragTip||dragCol&&columnDragOpts.showDragTip?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refDragTipElem,class:'vxe-table--drag-sort-tip'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--drag-sort-tip-wrapper'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--drag-sort-tip-status'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span',{class:['vxe-table--drag-sort-tip-normal-status',dRow?table_getIcon().TABLE_DRAG_STATUS_ROW:table_getIcon().TABLE_DRAG_STATUS_COLUMN]}),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span',{class:['vxe-table--drag-sort-tip-sub-status',table_getIcon().TABLE_DRAG_STATUS_SUB_ROW]}),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span',{class:['vxe-table--drag-sort-tip-disabled-status',table_getIcon().TABLE_DRAG_DISABLED]})]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--drag-sort-tip-content'},renderDragTipContents())])]):table_renderEmptyElement($xeTable)]);}return table_renderEmptyElement($xeTable);};const renderRowExpandedVNs=()=>{const{treeConfig}=props;const{expandColumn,isRowGroupStatus}=reactData;const tableRowExpandedList=computeTableRowExpandedList.value;const expandOpts=computeExpandOpts.value;const{mode}=expandOpts;if(mode!=='fixed'){return table_renderEmptyElement($xeTable);}const expandVNs=[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'repY',ref:refRowExpandYSpaceElem})];if(expandColumn){const{handleGetRowId}=createHandleGetRowId($xeTable);tableRowExpandedList.forEach(row=>{const expandOpts=computeExpandOpts.value;const{height:expandHeight,padding,indent}=expandOpts;const{fullAllDataRowIdData,fullColumnIdData}=internalData;const treeOpts=computeTreeOpts.value;const{transform,seqMode}=treeOpts;const cellStyle={};const rowid=handleGetRowId(row);const rowRest=fullAllDataRowIdData[rowid];const colid=expandColumn.id;const colRest=fullColumnIdData[colid]||{};let rowLevel=0;let seq=-1;let _rowIndex=-1;let rowIndex=-1;let $rowIndex=-1;if(rowRest){rowIndex=rowRest.index;$rowIndex=rowRest.$index;_rowIndex=rowRest._index;rowLevel=rowRest.level;seq=rowRest.seq;if(isRowGroupStatus||treeConfig&&transform&&seqMode==='increasing'){seq=rowRest._index+1;}else if(treeConfig&&seqMode==='fixed'){seq=rowRest._tIndex+1;}}if(expandHeight){cellStyle.height=`${expandHeight}px`;}if(isRowGroupStatus||treeConfig){cellStyle.paddingLeft=`${rowLevel*(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isNumber(indent)?indent:treeOpts.indent)+30}px`;}let columnIndex=-1;let $columnIndex=-1;let _columnIndex=-1;if(colRest){columnIndex=colRest.index;$columnIndex=colRest.$index;_columnIndex=colRest._index;}const expandParams={$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt,seq,column:expandColumn,columnIndex,$columnIndex,_columnIndex,fixed:'',source:'table',type:'body',level:rowLevel,rowid,row,rowIndex,$rowIndex,_rowIndex,isHidden:false,isEdit:false,visibleData:[],data:[],items:[]};expandVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:rowid,class:['vxe-body--row-expanded-cell',{'is--padding':padding,'is--ellipsis':expandHeight}],rowid,style:cellStyle},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-body--row-expanded-content'},expandColumn.renderData(expandParams))]));});}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refRowExpandElem,class:'vxe-table--row-expanded-wrapper'},expandVNs);};const renderScrollX=()=>{return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'vsx',ref:refScrollXVirtualElem,class:'vxe-table--scroll-x-virtual'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollXLeftCornerElem,class:'vxe-table--scroll-x-left-corner'}),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollXWrapperElem,class:'vxe-table--scroll-x-wrapper'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollXHandleElem,class:'vxe-table--scroll-x-handle',onScroll:$xeTable.triggerVirtualScrollXEvent},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollXSpaceElem,class:'vxe-table--scroll-x-space'})]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--scroll-x-handle-appearance'})]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollXRightCornerElem,class:'vxe-table--scroll-x-right-corner'})]);};const renderScrollY=()=>{return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollYVirtualElem,class:'vxe-table--scroll-y-virtual'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollYTopCornerElem,class:'vxe-table--scroll-y-top-corner'}),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollYWrapperElem,class:'vxe-table--scroll-y-wrapper'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollYHandleElem,class:'vxe-table--scroll-y-handle',onScroll:$xeTable.triggerVirtualScrollYEvent},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollYSpaceElem,class:'vxe-table--scroll-y-space'})]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--scroll-y-handle-appearance'})]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refScrollYBottomCornerElem,class:'vxe-table--scroll-y-bottom-corner'})]);};const renderViewport=()=>{const{showHeader,showFooter}=props;const{overflowX,tableData,tableColumn,tableGroupColumn,footerTableData,columnStore}=reactData;const scrollbarOpts=computeScrollbarOpts.value;const scrollbarXOpts=computeScrollbarXOpts.value;const scrollbarYOpts=computeScrollbarYOpts.value;const{overscrollBehavior:overscrollXBehavior}=scrollbarXOpts;const{overscrollBehavior:overscrollYBehavior}=scrollbarYOpts;const{leftList,rightList}=columnStore;const osXBehavior=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(overscrollXBehavior)?scrollbarOpts.overscrollBehavior:overscrollXBehavior;const osYBehavior=external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(overscrollYBehavior)?scrollbarOpts.overscrollBehavior:overscrollYBehavior;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refTableViewportElem,class:['vxe-table--viewport-wrapper',{[`x-ob--${osXBehavior}`]:osXBehavior,[`y-ob--${osYBehavior}`]:osYBehavior}]},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:['vxe-table--main-wrapper',`sx--${scrollbarXOpts.visible}`,`sy--${scrollbarYOpts.visible}`]},[/**
                     * 表头
                     */showHeader?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(header,{ref:refTableHeader,tableData,tableColumn,tableGroupColumn}):table_renderEmptyElement($xeTable),/**
                     * 表体
                     */(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(body,{ref:refTableBody,tableData,tableColumn}),/**
                     * 表尾
                     */showFooter?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(footer,{ref:refTableFooter,footerTableData,tableColumn}):table_renderEmptyElement($xeTable)]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--fixed-wrapper'},[leftList&&leftList.length&&overflowX?renderViewFixed('left'):table_renderEmptyElement($xeTable),rightList&&rightList.length&&overflowX?renderViewFixed('right'):table_renderEmptyElement($xeTable)]),renderRowExpandedVNs()]);};const renderBody=()=>{const scrollbarYToLeft=computeScrollbarYToLeft.value;return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--layout-wrapper'},scrollbarYToLeft?[renderScrollY(),renderViewport()]:[renderViewport(),renderScrollY()]);};const renderVN=()=>{const{loading,stripe,showHeader,height,treeConfig,mouseConfig,showFooter,highlightCell,highlightHoverRow,highlightHoverColumn,editConfig,editRules}=props;const{isGroup,overflowX,overflowY,scrollXLoad,scrollYLoad,tableData,initStore,isRowGroupStatus,columnStore,filterStore,customStore,tooltipStore}=reactData;const{teleportToWrapperElem,popupToWrapperElem,customPopupToElem}=internalData;const{leftList,rightList}=columnStore;const loadingSlot=slots.loading;const tipSlots={header:slots.headerTooltip||slots['header-tooltip'],body:slots.tooltip,footer:slots.footerTooltip||slots['footer-tooltip']};const currTooltipSlot=tooltipStore.visible&&tooltipStore.type?tipSlots[tooltipStore.type]:null;const tableStyle=computeTableStyle.value;const rowDragOpts=computeRowDragOpts.value;const tableTipConfig=computeTableTipConfig.value;const validTipConfig=computeValidTipConfig.value;const validOpts=computeValidOpts.value;const checkboxOpts=computeCheckboxOpts.value;const treeOpts=computeTreeOpts.value;const rowOpts=computeRowOpts.value;const columnOpts=computeColumnOpts.value;const vSize=computeSize.value;const tableBorder=computeTableBorder.value;const mouseOpts=computeMouseOpts.value;const areaOpts=computeAreaOpts.value;const loadingOpts=computeLoadingOpts.value;const isContentMenu=computeIsContentMenu.value;const currLoading=reactData.isColLoading||reactData.isRowLoading||loading;const resizableOpts=computeResizableOpts.value;const isArea=mouseConfig&&mouseOpts.area;const columnDragOpts=computeColumnDragOpts.value;const scrollbarXToTop=computeScrollbarXToTop.value;const scrollbarYToLeft=computeScrollbarYToLeft.value;const{isCrossTableDrag}=rowDragOpts;const tbOns={onKeydown:keydownEvent,onContextmenu:contextMenuEvent};if(isCrossTableDrag&&!tableData.length){tbOns.onDragover=$xeTable.handleCrossTableRowDragoverEmptyEvent;}return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refElem,class:['vxe-table','vxe-table--render-default',`tid_${xID}`,`border--${tableBorder}`,`sx-pos--${scrollbarXToTop?'top':'bottom'}`,`sy-pos--${scrollbarYToLeft?'left':'right'}`,{[`size--${vSize}`]:vSize,[`valid-msg--${validOpts.msgMode}`]:!!editRules,'vxe-editable':!!editConfig,'old-cell-valid':editRules&&table_getConfig().cellVaildMode==='obsolete','cell--highlight':highlightCell,'cell--selected':mouseConfig&&mouseOpts.selected,'cell--area':isArea,'header-cell--area':isArea&&areaOpts.selectCellByHeader,'body-cell--area':isArea&&areaOpts.selectCellByBody,'row--highlight':rowOpts.isHover||highlightHoverRow,'column--highlight':columnOpts.isHover||highlightHoverColumn,'checkbox--range':checkboxOpts.range,'col--drag-cell':columnOpts.drag&&columnDragOpts.trigger==='cell','is--header':showHeader,'not--header':!showHeader,'is--footer':showFooter,'not--footer':!showFooter,'is--group':isGroup,'is-row-group':isRowGroupStatus,'is--tree-line':treeConfig&&(treeOpts.showLine||treeOpts.line),'is--fixed-left':leftList.length,'is--fixed-right':rightList.length,'is--animat':!!props.animat,'is--round':props.round,'is--stripe':!treeConfig&&stripe,'is--loading':currLoading,'is--empty':!currLoading&&!tableData.length,'is--scroll-y':overflowY,'not--scroll-y':!overflowY,'is--scroll-x':overflowX,'not--scroll-x':!overflowX,'is--virtual-x':scrollXLoad,'is--virtual-y':scrollYLoad}],style:tableStyle,spellcheck:false,...tbOns},[/**
                 * 隐藏列
                 */(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table-slots'},slots.default?slots.default({}):[]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refVarElem,class:'vxe-table-vars'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table-var-default'}),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table-var-medium'}),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table-var-small'}),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table-var-mini'})]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'tw',class:'vxe-table--render-wrapper'},scrollbarXToTop?[renderScrollX(),renderBody()]:[renderBody(),renderScrollX()]),/**
                 * 空数据
                 */(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'tn',ref:refEmptyPlaceholder,class:'vxe-table--empty-place-wrapper',xid:xID},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--empty-placeholder'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--empty-content'},renderEmptyBody())])]),/**
                 * 边框线
                 */(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'tl',class:'vxe-table--border-line'}),/**
                 * 列宽线
                 */(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'tcl',ref:refColResizeBar,class:'vxe-table--resizable-col-bar'},resizableOpts.showDragTip?[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--resizable-number-tip'})]:[]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'ttw'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(external_commonjs_vue_commonjs2_vue_root_Vue_.Teleport,{to:teleportToWrapperElem,disabled:!($xeGantt&&teleportToWrapperElem)},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refTeleportWrapper},[/**
                             * 行高线
                             */(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'trl',ref:refRowResizeBar,class:'vxe-table--resizable-row-bar'},resizableOpts.showDragTip?[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:'vxe-table--resizable-number-tip'})]:[]),/**
                             * 加载中
                             */VxeUILoadingComponent?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUILoadingComponent,{key:'lg',class:'vxe-table--loading',modelValue:currLoading,icon:loadingOpts.icon,text:loadingOpts.text},loadingSlot?{default:()=>callSlot(loadingSlot,{$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt,loading:currLoading})}:{}):loadingSlot?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{class:['vxe-loading--custom-wrapper',{'is--visible':currLoading}]},callSlot(loadingSlot,{$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt,loading:currLoading})):table_renderEmptyElement($xeTable),/**
                             * 拖拽排序提示
                             */renderDragTip()])])]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'fpw',ref:refCustomContainerElem},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(external_commonjs_vue_commonjs2_vue_root_Vue_.Teleport,{to:customPopupToElem,disabled:!!reactData.ctPopupFlag&&!customPopupToElem},[/**
                         * 自定义列
                         */initStore.custom?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(panel,{key:'cs',ref:refTableCustom,customStore}):table_renderEmptyElement($xeTable)])]),(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:'tpw'},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(external_commonjs_vue_commonjs2_vue_root_Vue_.Teleport,{to:popupToWrapperElem,disabled:!($xeGGWrapper&&popupToWrapperElem)},[(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{ref:refPopupWrapperElem},[/**
                             * 筛选
                             */initStore.filter?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(filter_panel,{key:'tf',ref:refTableFilter,filterStore}):table_renderEmptyElement($xeTable),/**
                             * 快捷菜单
                             */isContentMenu?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(menu_panel,{key:'tm',ref:refTableMenu}):table_renderEmptyElement($xeTable)])])]),/**
                 * 导入
                 */initStore.import&&props.importConfig?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(import_panel,{key:'it',defaultOptions:reactData.importParams,storeData:reactData.importStore}):table_renderEmptyElement($xeTable),/**
                 * 导出
                 */initStore.export&&(props.exportConfig||props.printConfig)?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(export_panel,{key:'et',defaultOptions:reactData.exportParams,storeData:reactData.exportStore}):table_renderEmptyElement($xeTable),/**
                 * 提示相关
                 */VxeUITooltipComponent?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{},[/**
                         * 通用提示
                         */(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUITooltipComponent,{key:'ctp',ref:refCommTooltip,isArrow:false,enterable:false}),/**
                          * 工具提示
                          */(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUITooltipComponent,{key:'btp',ref:refTooltip,theme:tableTipConfig.theme,enterable:tableTipConfig.enterable,enterDelay:tableTipConfig.enterDelay,leaveDelay:tableTipConfig.leaveDelay,useHtml:external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(tableTipConfig.useHtml)?tableTipConfig.useHtml:undefined,// 已废弃
useHTML:external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(tableTipConfig.useHTML)?tableTipConfig.useHTML:undefined,width:tableTipConfig.width,height:tableTipConfig.height,minWidth:tableTipConfig.minWidth,minHeight:tableTipConfig.minHeight,maxWidth:tableTipConfig.maxWidth,maxHeight:tableTipConfig.maxHeight,placement:tableTipConfig.placement,defaultPlacement:tableTipConfig.defaultPlacement,popupClassName:tableTipConfig.popupClassName},currTooltipSlot?{content:()=>{const{type,row,column,content:tooltipContent}=tooltipStore;if(currTooltipSlot){if(column&&type==='header'){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:type},currTooltipSlot({column,tooltipContent,$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt}));}if(row&&column&&type==='body'){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:type},currTooltipSlot({row,column,tooltipContent,$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt}));}if(row&&column&&type==='footer'){return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div',{key:type},currTooltipSlot({row,column,tooltipContent,$table:$xeTable,$grid:$xeGrid,$gantt:$xeGantt}));}}return table_renderEmptyElement($xeTable);}}:{}),/**
                          * 校验提示
                          */props.editRules&&validOpts.showErrorMessage&&(validOpts.message==='default'?!height:validOpts.message==='tooltip')?(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUITooltipComponent,{key:'vtp',ref:refValidTooltip,class:[{'old-cell-valid':editRules&&table_getConfig().cellVaildMode==='obsolete'},'vxe-table--valid-error'],theme:validTipConfig.theme,enterable:validTipConfig.enterable,enterDelay:validTipConfig.enterDelay,leaveDelay:validTipConfig.leaveDelay}):table_renderEmptyElement($xeTable)]):table_renderEmptyElement($xeTable)]);};const dataFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.data?props.data.length:-1,()=>{dataFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.data,()=>{dataFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(dataFlag,()=>{const{initStatus}=internalData;const value=props.data||[];if(value&&value.length>=20000){table_warnLog('vxe.error.errLargeData',['loadData(data), reloadData(data)']);}loadTableData(value,false,true).then(()=>{const{scrollXLoad,scrollYLoad,expandColumn}=reactData;const expandOpts=computeExpandOpts.value;internalData.inited=true;internalData.initStatus=true;if(!initStatus){handleLoadDefaults();}// const checkboxOpts = computeCheckboxOpts.value
// const checkboxColumn = internalData.tableFullColumn.find(column => column.type === 'checkbox')
// if (checkboxColumn && internalData.tableFullData.length > 300 && !checkboxOpts.checkField) {
//   warnLog('vxe.error.checkProp', ['checkbox-config.checkField'])
// }
if((scrollXLoad||scrollYLoad)&&expandColumn&&expandOpts.mode!=='fixed'){table_warnLog('vxe.error.scrollErrProp',['column.type=expand']);}return $xeTable.recalculate();});});const staticColumnFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>reactData.staticColumns.length,()=>{staticColumnFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>reactData.staticColumns,()=>{staticColumnFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(staticColumnFlag,()=>{(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>handleInitColumn(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(reactData.staticColumns)));});const tableColumnFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>reactData.tableColumn.length,()=>{tableColumnFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>reactData.tableColumn,()=>{tableColumnFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(tableColumnFlag,()=>{$xeTable.analyColumnWidth();});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>reactData.upDataFlag,()=>{(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{$xeTable.updateData();});});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>reactData.reColumnFlag,()=>{(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{$xeTable.refreshColumn();});});const reLayoutFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeSize,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.showHeader,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.showFooter,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.showHeaderOverflow,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.showOverflow,()=>{updateColumnAllOverflow();reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.showFooterOverflow,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>reactData.overflowX,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>reactData.overflowY,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.height,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.maxHeight,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeScrollbarXToTop,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeScrollbarYToLeft,()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>core_.VxeUI.getLanguage(),()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>{const scrollbarXOpts=computeScrollbarXOpts.value;return scrollbarXOpts.visible;},()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>{const scrollbarYOpts=computeScrollbarYOpts.value;return scrollbarYOpts.visible;},()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>{const cellOpts=computeCellOpts.value;return cellOpts.height;},()=>{reLayoutFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(reLayoutFlag,()=>{$xeTable.recalculate(true);});const footFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.footerData?props.footerData.length:-1,()=>{footFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.footerData,()=>{footFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(footFlag,()=>{internalData.footerFullDataRowData={};$xeTable.updateFooter();});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.syncResize,value=>{if(value){handleUpdateResize();(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{handleUpdateResize();setTimeout(()=>handleUpdateResize());});}});const mergeCellFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.mergeCells?props.mergeCells.length:-1,()=>{mergeCellFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.mergeCells,()=>{mergeCellFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(mergeCellFlag,()=>{handleUpdateMergeBodyCells(props.mergeCells||[]);});const mergeHeaderItemFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.mergeHeaderCells?props.mergeHeaderCells.length:-1,()=>{mergeHeaderItemFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.mergeHeaderCells,()=>{mergeHeaderItemFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(mergeHeaderItemFlag,()=>{handleUpdateMergeHeaderCells(props.mergeHeaderCells||[]);});const mergeFooteCellFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.mergeFooterCells?props.mergeFooterCells.length:-1,()=>{mergeFooteCellFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.mergeFooterCells,()=>{mergeFooteCellFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.mergeFooterItems?props.mergeFooterItems.length:-1,()=>{mergeFooteCellFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>props.mergeFooterItems,()=>{mergeFooteCellFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(mergeFooteCellFlag,()=>{const mFooterCells=props.mergeFooterCells||props.mergeFooterItems;handleUpdateMergeFooterCells(mFooterCells||[]);});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeRowGroupFields,val=>{handleUpdateRowGroup(val);});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeRowField,()=>{const{inited,tableFullData}=internalData;// 行主键被改变,重载表格
if(inited){handleKeyField();reactData.tableData=[];(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{$xeTable.reloadData(tableFullData);});}});const kfFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(()=>reactData.updateColFlag,()=>{kfFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeKeepFields,()=>{kfFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(kfFlag,()=>{const keepFields=computeKeepFields.value;const kpfMaps={};keepFields.forEach(field=>{kpfMaps[field]=1;});internalData.keepUpdateFieldMaps=kpfMaps;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeAggregateMode,()=>{if(reactData.isRowGroupStatus){loadTableData(internalData.tableSynchData,false,true);}});const layoutReFlag=(0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(combineTabsResizeFlag,()=>{layoutReFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(combineModalResizeFlag,()=>{layoutReFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(combineSplitterResizeFlag,()=>{layoutReFlag.value++;});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(layoutReFlag,()=>{handleGlobalResizeEvent();});handleKeyField();table_hooks.forEach(options=>{const{setupTable}=options;if(setupTable){const hookRest=setupTable($xeTable);if(hookRest&&external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isObject(hookRest)){Object.assign($xeTable,hookRest);}}});$xeTable.preventEvent(null,'created',{$table:$xeTable});let resizeObserver;(0,external_commonjs_vue_commonjs2_vue_root_Vue_.onActivated)(()=>{$xeTable.recalculate().then(()=>$xeTable.refreshScroll());$xeTable.preventEvent(null,'activated',{$table:$xeTable});});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.onDeactivated)(()=>{const{filterStore}=reactData;if(filterStore.visible){$xeTable.clearFilter();}$xeTable.closeTooltip();internalData.isActivated=false;$xeTable.preventEvent(null,'deactivated',{$table:$xeTable});});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(()=>{const{editConfig,exportConfig,importConfig,treeConfig,minHeight,keepSource}=props;const{scrollXStore,scrollYStore}=internalData;const columnOpts=computeColumnOpts.value;const columnDragOpts=computeColumnDragOpts.value;const aggregateOpts=computeAggregateOpts.value;const virtualYOpts=computeVirtualYOpts.value;const editOpts=computeEditOpts.value;const treeOpts=computeTreeOpts.value;const radioOpts=computeRadioOpts.value;const checkboxOpts=computeCheckboxOpts.value;const expandOpts=computeExpandOpts.value;const rowOpts=computeRowOpts.value;const customOpts=computeCustomOpts.value;const mouseOpts=computeMouseOpts.value;const exportOpts=computeExportOpts.value;const importOpts=computeImportOpts.value;// const currentRowOpts = computeCurrentRowOpts.value
// const currentColumnOpts = computeCurrentColumnOpts.value
// const keyboardOpts = computeKeyboardOpts.value
const rowDragOpts=computeRowDragOpts.value;const areaOpts=computeAreaOpts.value;const sortOpts=computeSortOpts.value;const filterOpts=computeFilterOpts.value;const{groupFields}=aggregateOpts;if($xeGantt){const{refClassifyWrapperElem}=$xeGantt.getRefMaps();const classifyWrapperEl=refClassifyWrapperElem.value;if(classifyWrapperEl){internalData.teleportToWrapperElem=classifyWrapperEl;}}if($xeGGWrapper){const{refPopupContainerElem}=$xeGGWrapper.getRefMaps();const popupContainerEl=refPopupContainerElem.value;if(popupContainerEl){internalData.popupToWrapperElem=popupContainerEl;}}if(columnOpts.drag||rowOpts.drag||customOpts.allowSort){initTpImg();}if(props.rowId){table_warnLog('vxe.error.delProp',['row-id','row-config.keyField']);}if(props.rowKey){table_warnLog('vxe.error.delProp',['row-key','row-config.useKey']);}if(props.columnKey){table_warnLog('vxe.error.delProp',['column-id','column-config.useKey']);}if(!(props.rowId||rowOpts.keyField)&&(checkboxOpts.reserve||checkboxOpts.checkRowKeys||radioOpts.reserve||radioOpts.checkRowKey||expandOpts.expandRowKeys||treeOpts.expandRowKeys)){table_warnLog('vxe.error.reqProp',['row-config.keyField']);}if(editConfig){if(!keepSource){if(editOpts.showStatus||editOpts.showUpdateStatus||editOpts.showInsertStatus){table_warnLog('vxe.error.reqSupportProp',['edit-config.showStatus | showUpdateStatus | showInsertStatus','keep-source']);}// if (keyboardOpts.isUndoRedo) {
//   warnLog('vxe.error.reqSupportProp', ['keyboard-config.isUndoRedo', 'keep-source'])
// }
}}// if (treeConfig && (treeOpts.showLine || treeOpts.line) && !showOverflow) {
//   warnLog('vxe.error.reqProp', ['show-overflow'])
// }
// if (treeConfig && !treeOpts.transform && props.stripe) {
//   warnLog('vxe.error.noTree', ['stripe'])
// }
if(treeConfig&&!treeOpts.transform){if(sortOpts.isDeep){table_warnLog('vxe.error.reqSupportProp',['transform=false','sort-config.isDeep=false']);}if(filterOpts.isDeep){table_warnLog('vxe.error.reqSupportProp',['transform=false','filter-config.isDeep=false']);}}if(props.showFooter&&!(props.footerMethod||props.footerData)){table_warnLog('vxe.error.reqProp',['footer-data | footer-method']);}if(rowOpts.height){table_warnLog('vxe.error.delProp',['row-config.height','cell-config.height']);}if(props.highlightCurrentRow){table_warnLog('vxe.error.delProp',['highlight-current-row','row-config.isCurrent']);}if(props.highlightHoverRow){table_warnLog('vxe.error.delProp',['highlight-hover-row','row-config.isHover']);}if(props.highlightCurrentColumn){table_warnLog('vxe.error.delProp',['highlight-current-column','column-config.isCurrent']);}if(props.highlightHoverColumn){table_warnLog('vxe.error.delProp',['highlight-hover-column','column-config.isHover']);}if(props.resizable){table_warnLog('vxe.error.delProp',['resizable','column-config.resizable']);}// if (props.virtualXConfig && props.scrollX) {
//   warnLog('vxe.error.notSupportProp', ['virtual-x-config', 'scroll-x', 'scroll-x=null'])
// }
// if (props.virtualYConfig && props.scrollY) {
//   warnLog('vxe.error.notSupportProp', ['virtual-y-config', 'scroll-y', 'scroll-y=null'])
// }
if(props.aggregateConfig&&props.rowGroupConfig){table_warnLog('vxe.error.notSupportProp',['aggregate-config','row-group-config','row-group-config=null']);}// if (props.scrollY) {
//   warnLog('vxe.error.delProp', ['scroll-y', 'virtual-y-config'])
// }
// if (props.scrollX) {
//   warnLog('vxe.error.delProp', ['scroll-x', 'virtual-x-config'])
// }
// 检查导入导出类型,如果自定义导入导出方法,则不校验类型
if(importConfig&&importOpts.types&&!importOpts.importMethod&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includeArrays(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps),importOpts.types)){table_warnLog('vxe.error.errProp',[`export-config.types=${importOpts.types.join(',')}`,importOpts.types.filter(type=>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includes(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps),type)).join(',')||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(importOpts._typeMaps).join(',')]);}if(exportConfig&&exportOpts.types&&!exportOpts.exportMethod&&!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includeArrays(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps),exportOpts.types)){table_warnLog('vxe.error.errProp',[`export-config.types=${exportOpts.types.join(',')}`,exportOpts.types.filter(type=>external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().includes(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps),type)).join(',')||external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(exportOpts._typeMaps).join(',')]);}if(exportConfig&&external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(exportOpts.isAllExpand)){table_warnLog('vxe.error.delProp',['isAllExpand','isTreeAllExpanded']);}if(!props.id){if((props.customConfig?isEnableConf(customOpts):customOpts.enabled)&&customOpts.storage){table_errLog('vxe.error.reqProp',['id']);}}if(props.treeConfig&&checkboxOpts.range){table_errLog('vxe.error.noTree',['checkbox-config.range']);}if(rowOpts.height&&!props.showOverflow){table_warnLog('vxe.error.notProp',['table.show-overflow']);}if(!$xeTable.triggerClAreaMnEvent){if(props.areaConfig){table_warnLog('vxe.error.notProp',['area-config']);}if(props.clipConfig){table_warnLog('vxe.error.notProp',['clip-config']);}if(props.fnrConfig){table_warnLog('vxe.error.notProp',['fnr-config']);}if(mouseOpts.area){table_errLog('vxe.error.notProp',['mouse-config.area']);return;}if(mouseOpts.area&&areaOpts.selectCellByHeader&&columnOpts.drag&&columnDragOpts.trigger==='cell'){table_errLog('vxe.error.notSupportProp',['area-config.selectCellByHeader & column-config.drag','column-drag-config.trigger=cell','column-drag-config.trigger=default | area-config.selectCellByHeader=false']);}}if(!$xeTable.handlePivotTableAggData){if(customOpts.allowGroup){table_errLog('vxe.error.notProp',['custom-config.allowGroup']);return;}if(customOpts.allowValues){table_errLog('vxe.error.notProp',['custom-config.allowValues']);return;}}if(treeConfig&&rowOpts.drag&&!treeOpts.transform){table_errLog('vxe.error.notSupportProp',['row-config.drag','tree-config.transform=false','tree-config.transform=true']);}if(treeConfig&&rowDragOpts.isCrossTableDrag&&!rowDragOpts.isCrossDrag){table_errLog('vxe.error.reqSupportProp',['tree-config & row-drag-config.isCrossTableDrag','row-drag-config.isCrossDrag']);}if(props.dragConfig){table_warnLog('vxe.error.delProp',['drag-config','row-drag-config']);}if(props.rowGroupConfig){table_warnLog('vxe.error.delProp',['row-group-config','aggregate-config']);}if(aggregateOpts.countFields){table_warnLog('vxe.error.delProp',['row-group-config.countFields','column.agg-func']);}if(aggregateOpts.aggregateMethod){table_warnLog('vxe.error.delProp',['row-group-config.aggregateMethod','aggregate-config.calcValuesMethod']);}if(aggregateOpts.countMethod){table_warnLog('vxe.error.delProp',['aggregate-config.countMethod','aggregate-config.calcValuesMethod']);}if(props.treeConfig&&treeOpts.children){table_warnLog('vxe.error.delProp',['tree-config.children','tree-config.childrenField']);}if(props.treeConfig&&treeOpts.line){table_warnLog('vxe.error.delProp',['tree-config.line','tree-config.showLine']);}if(mouseOpts.area&&mouseOpts.selected){table_warnLog('vxe.error.errConflicts',['mouse-config.area','mouse-config.selected']);}if(mouseOpts.area&&props.treeConfig&&!treeOpts.transform){table_errLog('vxe.error.notSupportProp',['mouse-config.area','tree-config.transform=false','tree-config.transform=true']);}if(props.editConfig&&editOpts.activeMethod){table_warnLog('vxe.error.delProp',['edit-config.activeMethod','edit-config.beforeEditMethod']);}if(checkboxOpts.halfField){table_warnLog('vxe.error.delProp',['checkbox-config.halfField','checkbox-config.indeterminateField']);}if(props.editConfig&&isEnableConf(editOpts)&&props.editRules&&(minHeight===0||minHeight==='0')){table_warnLog('vxe.error.reqSupportProp',['edit-config & edit-rules','min-height']);}if(treeConfig){external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(['rowField','parentField','childrenField','hasChildField','mapChildrenField'],key=>{const val=treeOpts[key];if(val&&val.indexOf('.')>-1){table_errLog('vxe.error.errProp',[`${key}=${val}`,`${key}=${val.split('.')[0]}`]);}});}if(rowOpts.currentMethod){table_warnLog('vxe.error.delProp',['row-config.currentMethod','current-row-config.beforeSelectMethod']);}if(columnOpts.currentMethod){table_warnLog('vxe.error.delProp',['row-config.currentMethod','current-column-config.beforeSelectMethod']);}// if ((rowOpts.isCurrent || highlightCurrentRow) && props.keyboardConfig && keyboardOpts.isArrow && !XEUtils.isBoolean(currentRowOpts.isFollowSelected)) {
//   warnLog('vxe.error.notConflictProp', ['row-config.isCurrent & keyboard-config.isArrow', 'current-row-config.isFollowSelected'])
// }
// if ((columnOpts.isCurrent || highlightCurrentColumn) && props.keyboardConfig && keyboardOpts.isArrow && !XEUtils.isBoolean(currentColumnOpts.isFollowSelected)) {
//   warnLog('vxe.error.notConflictProp', ['column-config.isCurrent & keyboard-config.isArrow', 'current-column-config.isFollowSelected'])
// }
// 如果不支持虚拟滚动
// if (props.spanMethod) {
//   if (virtualXOpts.enabled) {
//     warnLog('vxe.error.notConflictProp', ['span-method', 'virtual-x-config.enabled=false'])
//   }
//   if (virtualYOpts.enabled) {
//     warnLog('vxe.error.notConflictProp', ['span-method', 'virtual-y-config.enabled=false'])
//   }
// }
// if (props.footerSpanMethod) {
//   if (virtualXOpts.enabled) {
//     warnLog('vxe.error.notConflictProp', ['footer-span-method', 'virtual-x-config.enabled=false'])
//   }
// }
// 检查是否有安装需要的模块
// if (props.editConfig && !$xeTable.insert) {
//   errLog('vxe.error.reqModule', ['Edit'])
// }
// if (props.editRules && !$xeTable.validate) {
//   errLog('vxe.error.reqModule', ['Validator'])
// }
// if ((checkboxOpts.range || props.keyboardConfig || props.mouseConfig) && !$xeTable.handleCellMousedownEvent) {
//   errLog('vxe.error.reqModule', ['Keyboard'])
// }
// if ((props.printConfig || props.importConfig || props.exportConfig) && !$xeTable.exportData) {
//   errLog('vxe.error.reqModule', ['Export'])
// }
Object.assign(scrollYStore,{startIndex:0,endIndex:0,visibleSize:0});Object.assign(scrollXStore,{startIndex:0,endIndex:0,visibleSize:0});handleUpdateRowGroup(groupFields);initData();(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{if(props.autoResize){const el=refElem.value;const parentEl=$xeTable.getParentElem();resizeObserver=table_globalResize.create(()=>{if(props.autoResize){handleResizeEvent();}});if(el){resizeObserver.observe(el);}if(parentEl){resizeObserver.observe(parentEl);}}});if(virtualYOpts.mode!=='scroll'){const tableViewportEl=refTableViewportElem.value;if(tableViewportEl){tableViewportEl.addEventListener('wheel',$xeTable.triggerBodyWheelEvent,{passive:false});}}table_globalEvents.on($xeTable,'paste',handleGlobalPasteEvent);table_globalEvents.on($xeTable,'copy',handleGlobalCopyEvent);table_globalEvents.on($xeTable,'cut',handleGlobalCutEvent);table_globalEvents.on($xeTable,'mousedown',handleGlobalMousedownEvent);table_globalEvents.on($xeTable,'blur',handleGlobalBlurEvent);table_globalEvents.on($xeTable,'mousewheel',handleGlobalMousewheelEvent);table_globalEvents.on($xeTable,'keydown',handleGlobalKeydownEvent);table_globalEvents.on($xeTable,'resize',handleGlobalResizeEvent);table_globalEvents.on($xeTable,'scroll',handleGlobalScrollEvent);table_globalEvents.on($xeTable,'contextmenu',$xeTable.handleGlobalContextmenuEvent);$xeTable.preventEvent(null,'mounted',{$table:$xeTable});});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.onBeforeUnmount)(()=>{const{_sToTime}=internalData;if(_sToTime){clearTimeout(_sToTime);}const tableViewportEl=refTableViewportElem.value;if(tableViewportEl){tableViewportEl.removeEventListener('wheel',$xeTable.triggerBodyWheelEvent);}internalData.cvCacheMaps={};internalData.prevDragRow=null;internalData.prevDragCol=null;if(resizeObserver){resizeObserver.disconnect();}$xeTable.closeTooltip();$xeTable.closeFilter();if($xeTable.closeMenu){$xeTable.closeMenu();}table_globalEvents.off($xeTable,'paste');table_globalEvents.off($xeTable,'copy');table_globalEvents.off($xeTable,'cut');table_globalEvents.off($xeTable,'mousedown');table_globalEvents.off($xeTable,'blur');table_globalEvents.off($xeTable,'mousewheel');table_globalEvents.off($xeTable,'keydown');table_globalEvents.off($xeTable,'resize');table_globalEvents.off($xeTable,'scroll');table_globalEvents.off($xeTable,'contextmenu');$xeTable.preventEvent(null,'beforeUnmount',{$table:$xeTable});external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(reactData,createReactData());external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(internalData,createInternalData());});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(()=>{$xeTable.preventEvent(null,'unmounted',{$table:$xeTable});});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(()=>{const{showOverflow,showHeaderOverflow,showFooterOverflow}=props;const tooltipOpts=computeTooltipOpts.value;const headerTooltipOpts=computeHeaderTooltipOpts.value;const footerTooltipOpts=computeFooterTooltipOpts.value;if(props.loading){if(!VxeUILoadingComponent&&!slots.loading){table_errLog('vxe.error.reqComp',['vxe-loading']);table_errLog('vxe.error.errProp',['loading=true','loading=false | <template #loading>...</template>']);}}if(!VxeUITooltipComponent){let useOvTip=false;if(showOverflow==='tooltip'){useOvTip=true;table_errLog('vxe.error.errProp',['show-overflow='+showOverflow,'show-overflow=false,title,ellipsis']);}if(showOverflow===true&&tooltipOpts.mode==='tooltip'){useOvTip=true;table_errLog('vxe.error.notSupportProp',['show-overflow='+showOverflow,'tooltip-config.mode=tooltip','tooltip-config.mode=title,ellipsis']);}if(showHeaderOverflow==='tooltip'){useOvTip=true;table_errLog('vxe.error.errProp',['show-header-overflow='+showHeaderOverflow,'show-header-overflow=false,title,ellipsis']);}if(showHeaderOverflow===true&&headerTooltipOpts.mode==='tooltip'){useOvTip=true;table_errLog('vxe.error.notSupportProp',['show-header-overflow='+showHeaderOverflow,'header-tooltip-config.mode=tooltip','header-tooltip-config.mode=title,ellipsis']);}if(showFooterOverflow==='tooltip'){useOvTip=true;table_errLog('vxe.error.errProp',['show-footer-overflow='+showFooterOverflow,'show-footer-overflow=false,title,ellipsis']);}if(showFooterOverflow===true&&footerTooltipOpts.mode==='tooltip'){useOvTip=true;table_errLog('vxe.error.notSupportProp',['show-footer-overflow='+showFooterOverflow,'footer-tooltip-config.mode=tooltip','footer-tooltip-config.mode=title,ellipsis']);}if(useOvTip){table_errLog('vxe.error.reqComp',['vxe-tooltip']);}}});(0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeColgroup',null);(0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeTable',$xeTable);$xeTable.renderVN=renderVN;return $xeTable;},render(){return this.renderVN();}}));
;// ./packages/toolbar/src/toolbar.ts










const {
  warnLog: toolbar_warnLog,
  errLog: toolbar_errLog
} = createComponentLog('toolbar');
const {
  getConfig: toolbar_getConfig,
  getIcon: toolbar_getIcon,
  getI18n: toolbar_getI18n,
  renderer: toolbar_renderer,
  commands: toolbar_commands,
  createEvent: toolbar_createEvent,
  useFns: toolbar_useFns
} = core_.VxeUI;
function toolbar_createReactData() {
  return {
    isRefresh: false,
    connectFlag: 0,
    columns: []
  };
}
function toolbar_createInternalData() {
  return {
    connectTable: null
  };
}
/* harmony default export */ var toolbar = (defineVxeComponent({
  name: 'VxeToolbar',
  props: {
    loading: Boolean,
    refresh: [Boolean, Object],
    refreshOptions: Object,
    import: [Boolean, Object],
    importOptions: Object,
    export: [Boolean, Object],
    exportOptions: Object,
    print: [Boolean, Object],
    printOptions: Object,
    zoom: [Boolean, Object],
    zoomOptions: Object,
    custom: [Boolean, Object],
    customOptions: Object,
    buttons: {
      type: Array,
      default: () => toolbar_getConfig().toolbar.buttons
    },
    tools: {
      type: Array,
      default: () => toolbar_getConfig().toolbar.tools
    },
    perfect: {
      type: Boolean,
      default: () => toolbar_getConfig().toolbar.perfect
    },
    size: {
      type: String,
      default: () => toolbar_getConfig().toolbar.size || toolbar_getConfig().size
    },
    className: [String, Function]
  },
  emits: ['button-click', 'tool-click'],
  setup(props, context) {
    const {
      slots,
      emit
    } = context;
    const xID = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId();
    // 使用已安装的组件,如果未安装则不渲染
    const VxeUIButtonComponent = core_.VxeUI.getComponent('VxeButton');
    const $xeGrid = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGrid', null);
    const $xeGantt = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGantt', null);
    const $xeGGWrapper = $xeGrid || $xeGantt;
    const {
      computeSize
    } = toolbar_useFns.useSize(props);
    const reactData = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)(toolbar_createReactData());
    const internalData = toolbar_createInternalData();
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refMaps = {
      refElem
    };
    const $xeToolbar = {
      xID,
      props,
      context,
      reactData,
      internalData,
      getRefMaps: () => refMaps
    };
    let toolbarMethods = {};
    const computeRefreshOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(toolbar_getConfig().toolbar.refresh, true), props.refreshOptions, props.refresh);
    });
    const computeImportOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(toolbar_getConfig().toolbar.import, true), props.importOptions, props.import);
    });
    const computeExportOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(toolbar_getConfig().toolbar.export, true), props.exportOptions, props.export);
    });
    const computePrintOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(toolbar_getConfig().toolbar.print, true), props.printOptions, props.print);
    });
    const computeZoomOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(toolbar_getConfig().toolbar.zoom, true), props.zoomOptions, props.zoom);
    });
    const computeCustomOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(toolbar_getConfig().toolbar.custom, true), props.customOptions, props.custom);
    });
    const computeTableCustomOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        connectTable
      } = internalData;
      const $table = connectTable;
      if (reactData.connectFlag || $table) {
        if ($table) {
          const {
            computeCustomOpts
          } = $table.getComputeMaps();
          return computeCustomOpts.value;
        }
      }
      return {
        trigger: ''
      };
    });
    const computeTrigger = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const tableCustomOpts = computeTableCustomOpts.value;
      return tableCustomOpts.trigger;
    });
    const checkTable = () => {
      const {
        connectTable
      } = internalData;
      const $table = connectTable;
      if ($table) {
        return true;
      }
      toolbar_errLog('vxe.error.barUnableLink');
    };
    const handleClickSettingEvent = ({
      $event
    }) => {
      const {
        connectTable
      } = internalData;
      const $table = connectTable;
      if ($table) {
        if ($table.triggerCustomEvent) {
          $table.triggerCustomEvent($event);
        }
      }
    };
    const handleMouseenterSettingEvent = ({
      $event
    }) => {
      const {
        connectTable
      } = internalData;
      const $table = connectTable;
      if ($table) {
        $table.customOpenEvent($event);
      }
    };
    const handleMouseleaveSettingEvent = ({
      $event
    }) => {
      const {
        connectTable
      } = internalData;
      const $table = connectTable;
      if ($table) {
        const {
          customStore
        } = $table.reactData;
        customStore.activeBtn = false;
        setTimeout(() => {
          if (!customStore.activeBtn && !customStore.activeWrapper) {
            $table.customCloseEvent($event);
          }
        }, 350);
      }
    };
    const refreshEvent = ({
      $event
    }) => {
      const {
        isRefresh
      } = reactData;
      const refreshOpts = computeRefreshOpts.value;
      if (!isRefresh) {
        const queryMethod = refreshOpts.queryMethod || refreshOpts.query;
        if (queryMethod) {
          reactData.isRefresh = true;
          try {
            Promise.resolve(queryMethod({})).catch(e => e).then(() => {
              reactData.isRefresh = false;
            });
          } catch (e) {
            reactData.isRefresh = false;
          }
        } else if ($xeGGWrapper) {
          reactData.isRefresh = true;
          $xeGGWrapper.triggerToolbarCommitEvent({
            code: refreshOpts.code || 'reload'
          }, $event).catch(() => {}).then(() => {
            reactData.isRefresh = false;
          });
        }
      }
    };
    const zoomEvent = ({
      $event
    }) => {
      if ($xeGGWrapper) {
        $xeGGWrapper.triggerZoomEvent($event);
      } else {
        toolbar_warnLog('vxe.error.notProp', ['zoom']);
      }
    };
    const importEvent = () => {
      if (checkTable()) {
        const {
          connectTable
        } = internalData;
        const $table = connectTable;
        if ($table) {
          $table.importData();
        }
      }
    };
    const openImportEvent = () => {
      if (checkTable()) {
        const {
          connectTable
        } = internalData;
        const $table = connectTable;
        if ($table) {
          $table.openImport();
        }
      }
    };
    const exportEvent = () => {
      if (checkTable()) {
        const {
          connectTable
        } = internalData;
        const $table = connectTable;
        if ($table) {
          $table.exportData();
        }
      }
    };
    const openExportEvent = () => {
      if (checkTable()) {
        const {
          connectTable
        } = internalData;
        const $table = connectTable;
        if ($table) {
          $table.openExport();
        }
      }
    };
    const printEvent = () => {
      if (checkTable()) {
        const {
          connectTable
        } = internalData;
        const $table = connectTable;
        if ($table) {
          $table.print();
        }
      }
    };
    const openPrintEvent = () => {
      if (checkTable()) {
        const {
          connectTable
        } = internalData;
        const $table = connectTable;
        if ($table) {
          $table.openPrint();
        }
      }
    };
    const handleDefaultCodeEvent = (eventParams, item, cb) => {
      switch (item.code) {
        case 'print':
          printEvent();
          break;
        case 'open_print':
          openPrintEvent();
          break;
        case 'custom':
          handleClickSettingEvent(eventParams);
          break;
        case 'export':
          exportEvent();
          break;
        case 'open_export':
          openExportEvent();
          break;
        case 'import':
          importEvent();
          break;
        case 'open_import':
          openImportEvent();
          break;
        case 'zoom':
          zoomEvent(eventParams);
          break;
        case 'refresh':
          refreshEvent(eventParams);
          break;
        default:
          cb();
          break;
      }
    };
    const btnEvent = (eventParams, item) => {
      const {
        $event
      } = eventParams;
      const {
        connectTable
      } = internalData;
      const $table = connectTable;
      const {
        code
      } = item;
      if (code) {
        handleDefaultCodeEvent(eventParams, item, () => {
          if ($xeGGWrapper) {
            $xeGGWrapper.triggerToolbarBtnEvent(item, $event);
          } else {
            const gCommandOpts = toolbar_commands.get(code);
            const params = {
              code,
              button: item,
              $table: $table,
              $grid: $xeGrid,
              $gantt: $xeGantt,
              $event
            };
            if (gCommandOpts) {
              const tCommandMethod = gCommandOpts.tableCommandMethod || gCommandOpts.commandMethod;
              if (tCommandMethod) {
                tCommandMethod(params);
              } else {
                toolbar_errLog('vxe.error.notCommands', [code]);
              }
            }
            $xeToolbar.dispatchEvent('button-click', params, $event);
          }
        });
      }
    };
    const tolEvent = (eventParams, item) => {
      const {
        $event
      } = eventParams;
      const {
        connectTable
      } = internalData;
      const $table = connectTable;
      const {
        code
      } = item;
      if (code) {
        handleDefaultCodeEvent(eventParams, item, () => {
          if ($xeGGWrapper) {
            $xeGGWrapper.triggerToolbarTolEvent(item, $event);
          } else {
            const gCommandOpts = toolbar_commands.get(code);
            const params = {
              code,
              button: null,
              tool: item,
              $table: $table,
              $grid: $xeGrid,
              $gantt: $xeGantt,
              $event
            };
            if (gCommandOpts) {
              const tCommandMethod = gCommandOpts.tableCommandMethod || gCommandOpts.commandMethod;
              if (tCommandMethod) {
                tCommandMethod(params);
              } else {
                toolbar_errLog('vxe.error.notCommands', [code]);
              }
            }
            $xeToolbar.dispatchEvent('tool-click', params, $event);
          }
        });
      }
    };
    const dispatchEvent = (type, params, evnt) => {
      emit(type, toolbar_createEvent(evnt, {
        $toolbar: $xeToolbar
      }, params));
    };
    toolbarMethods = {
      dispatchEvent,
      syncUpdate(params) {
        internalData.connectTable = params.$table;
        reactData.columns = params.collectColumn;
        reactData.connectFlag++;
      }
    };
    Object.assign($xeToolbar, toolbarMethods);
    const renderDropdowns = (item, isBtn) => {
      const {
        dropdowns
      } = item;
      const downVNs = [];
      if (dropdowns) {
        return dropdowns.map((child, index) => {
          if (child.visible === false) {
            return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
          }
          return VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
            key: index,
            ...Object.assign({}, child, {
              content: child.content || child.name,
              options: undefined
            }),
            onClick: eventParams => isBtn ? btnEvent(eventParams, child) : tolEvent(eventParams, child)
          }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
        });
      }
      return downVNs;
    };
    /**
     * 渲染按钮
     */
    const renderLeftBtns = () => {
      const {
        buttons
      } = props;
      const {
        connectTable
      } = internalData;
      const $table = connectTable;
      const buttonsSlot = slots.buttons;
      const buttonPrefixSlot = slots.buttonPrefix || slots['button-prefix'];
      const buttonSuffixSlot = slots.buttonSuffix || slots['button-suffix'];
      const btnVNs = [];
      if (buttons) {
        buttons.forEach((item, index) => {
          const {
            dropdowns,
            buttonRender
          } = item;
          if (item.visible !== false) {
            const compConf = buttonRender ? toolbar_renderer.get(buttonRender.name) : null;
            if (buttonRender && compConf && compConf.renderToolbarButton) {
              const toolbarButtonClassName = compConf.toolbarButtonClassName;
              const params = {
                $grid: $xeGrid,
                $gantt: $xeGantt,
                $table: $table,
                button: item
              };
              btnVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
                key: `br${item.code || index}`,
                class: ['vxe-button--item', toolbarButtonClassName ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(toolbarButtonClassName) ? toolbarButtonClassName(params) : toolbarButtonClassName : '']
              }, getSlotVNs(compConf.renderToolbarButton(buttonRender, params))));
            } else {
              if (VxeUIButtonComponent) {
                btnVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
                  key: `bd${item.code || index}`,
                  ...Object.assign({}, item, {
                    content: item.content || item.name,
                    options: undefined
                  }),
                  onClick: eventParams => btnEvent(eventParams, item)
                }, dropdowns && dropdowns.length ? {
                  dropdowns: () => renderDropdowns(item, true)
                } : {}));
              }
            }
          }
        });
      }
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-button--prefix-wrapper'
      }, buttonPrefixSlot ? getSlotVNs(buttonPrefixSlot({
        buttons: buttons || [],
        $grid: $xeGrid,
        $gantt: $xeGantt,
        $table: $table
      })) : []), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-button--item-wrapper'
      }, buttonsSlot ? getSlotVNs(buttonsSlot({
        buttons: buttons || [],
        $grid: $xeGrid,
        $gantt: $xeGantt,
        $table: $table
      })) : btnVNs), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-button--suffix-wrapper'
      }, buttonSuffixSlot ? getSlotVNs(buttonSuffixSlot({
        buttons: buttons || [],
        $grid: $xeGrid,
        $gantt: $xeGantt,
        $table: $table
      })) : [])];
    };
    /**
     * 渲染右侧工具
     */
    const renderRightTools = () => {
      const {
        tools
      } = props;
      const {
        connectTable
      } = internalData;
      const $table = connectTable;
      const toolsSlot = slots.tools;
      const toolPrefixSlot = slots.toolPrefix || slots['tool-prefix'];
      const toolSuffixSlot = slots.toolSuffix || slots['tool-suffix'];
      const btnVNs = [];
      if (tools) {
        tools.forEach((item, tIndex) => {
          const {
            dropdowns,
            toolRender
          } = item;
          if (item.visible !== false) {
            const rdName = toolRender ? toolRender.name : null;
            const compConf = toolRender ? toolbar_renderer.get(rdName) : null;
            if (toolRender && compConf && compConf.renderToolbarTool) {
              const toolbarToolClassName = compConf.toolbarToolClassName;
              const params = {
                $grid: $xeGrid,
                $gantt: $xeGantt,
                $table: $table,
                tool: item
              };
              btnVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('span', {
                key: rdName,
                class: ['vxe-tool--item', toolbarToolClassName ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(toolbarToolClassName) ? toolbarToolClassName(params) : toolbarToolClassName : '']
              }, getSlotVNs(compConf.renderToolbarTool(toolRender, params))));
            } else {
              if (VxeUIButtonComponent) {
                btnVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
                  key: tIndex,
                  ...Object.assign({}, item, {
                    content: item.content || item.name,
                    options: undefined
                  }),
                  onClick: eventParams => tolEvent(eventParams, item)
                }, dropdowns && dropdowns.length ? {
                  dropdowns: () => renderDropdowns(item, false)
                } : {}));
              }
            }
          }
        });
      }
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-tool--prefix-wrapper'
      }, toolPrefixSlot ? getSlotVNs(toolPrefixSlot({
        tools: tools || [],
        $grid: $xeGrid,
        $gantt: $xeGantt,
        $table: $table
      })) : []), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-tool--item-wrapper'
      }, toolsSlot ? getSlotVNs(toolsSlot({
        tools: tools || [],
        $grid: $xeGrid,
        $gantt: $xeGantt,
        $table: $table
      })) : btnVNs), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-tool--suffix-wrapper'
      }, toolSuffixSlot ? getSlotVNs(toolSuffixSlot({
        tools: tools || [],
        $grid: $xeGrid,
        $gantt: $xeGantt,
        $table: $table
      })) : [])];
    };
    const renderToolImport = () => {
      const importOpts = computeImportOpts.value;
      return VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        key: 'import',
        circle: true,
        icon: importOpts.icon || toolbar_getIcon().TOOLBAR_TOOLS_IMPORT,
        title: toolbar_getI18n('vxe.toolbar.import'),
        onClick: openImportEvent
      }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
    };
    const renderToolExport = () => {
      const exportOpts = computeExportOpts.value;
      return VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        key: 'export',
        circle: true,
        icon: exportOpts.icon || toolbar_getIcon().TOOLBAR_TOOLS_EXPORT,
        title: toolbar_getI18n('vxe.toolbar.export'),
        onClick: openExportEvent
      }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
    };
    const renderToolPrint = () => {
      const printOpts = computePrintOpts.value;
      return VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        key: 'print',
        circle: true,
        icon: printOpts.icon || toolbar_getIcon().TOOLBAR_TOOLS_PRINT,
        title: toolbar_getI18n('vxe.toolbar.print'),
        onClick: openPrintEvent
      }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
    };
    const renderToolRefresh = () => {
      const refreshOpts = computeRefreshOpts.value;
      return VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        key: 'refresh',
        circle: true,
        icon: reactData.isRefresh ? refreshOpts.iconLoading || toolbar_getIcon().TOOLBAR_TOOLS_REFRESH_LOADING : refreshOpts.icon || toolbar_getIcon().TOOLBAR_TOOLS_REFRESH,
        title: toolbar_getI18n('vxe.toolbar.refresh'),
        onClick: refreshEvent
      }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
    };
    const renderToolZoom = () => {
      const zoomOpts = computeZoomOpts.value;
      return $xeGGWrapper && VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        key: 'zoom',
        circle: true,
        icon: $xeGGWrapper.isMaximized() ? zoomOpts.iconOut || toolbar_getIcon().TOOLBAR_TOOLS_MINIMIZE : zoomOpts.iconIn || toolbar_getIcon().TOOLBAR_TOOLS_FULLSCREEN,
        title: toolbar_getI18n(`vxe.toolbar.zoom${$xeGGWrapper.isMaximized() ? 'Out' : 'In'}`),
        onClick: zoomEvent
      }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
    };
    const renderToolCustom = () => {
      const customOpts = computeCustomOpts.value;
      const btnTrigger = computeTrigger.value;
      const customBtnOns = {};
      if (btnTrigger === 'manual') {
        // 手动触发
      } else if (btnTrigger === 'hover') {
        // hover 触发
        customBtnOns.onMouseenter = handleMouseenterSettingEvent;
        customBtnOns.onMouseleave = handleMouseleaveSettingEvent;
      } else {
        // 点击触发
        customBtnOns.onClick = handleClickSettingEvent;
      }
      return VxeUIButtonComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIButtonComponent, {
        key: 'custom',
        circle: true,
        icon: customOpts.icon || toolbar_getIcon().TOOLBAR_TOOLS_CUSTOM,
        title: toolbar_getI18n('vxe.toolbar.custom'),
        className: 'vxe-toolbar-custom-target',
        ...customBtnOns
      }) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)();
    };
    const renderVN = () => {
      const {
        perfect,
        loading,
        refresh,
        zoom,
        custom,
        className
      } = props;
      const vSize = computeSize.value;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-toolbar', className ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(className) ? className({
          $toolbar: $xeToolbar
        }) : className : '', {
          [`size--${vSize}`]: vSize,
          'is--perfect': perfect,
          'is--loading': loading
        }]
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-buttons--wrapper'
      }, renderLeftBtns()), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-tools--wrapper'
      }, renderRightTools()), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-tools--operate'
      }, [props.import ? renderToolImport() : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)(), props.export ? renderToolExport() : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)(), props.print ? renderToolPrint() : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)(), refresh ? renderToolRefresh() : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)(), zoom && $xeGGWrapper ? renderToolZoom() : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)(), custom ? renderToolCustom() : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.createCommentVNode)()])]);
    };
    $xeToolbar.renderVN = renderVN;
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
      const refreshOpts = computeRefreshOpts.value;
      const queryMethod = refreshOpts.queryMethod || refreshOpts.query;
      if (props.refresh && !$xeGGWrapper && !queryMethod) {
        toolbar_warnLog('vxe.error.notFunc', ['queryMethod']);
      }
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isPlainObject(props.custom)) {
        toolbar_warnLog('vxe.error.delProp', ['custom={...}', 'custom=boolean & custom-options={...}']);
      }
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isPlainObject(props.print)) {
        toolbar_warnLog('vxe.error.delProp', ['print={...}', 'print=boolean & print-options={...}']);
      }
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isPlainObject(props.export)) {
        toolbar_warnLog('vxe.error.delProp', ['export={...}', 'export=boolean & export-options={...}']);
      }
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isPlainObject(props.import)) {
        toolbar_warnLog('vxe.error.delProp', ['import={...}', 'import=boolean & import-options={...}']);
      }
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isPlainObject(props.refresh)) {
        toolbar_warnLog('vxe.error.delProp', ['refresh={...}', 'refresh=boolean & refresh-options={...}']);
      }
      if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isPlainObject(props.refresh)) {
        toolbar_warnLog('vxe.error.delProp', ['zoom={...}', 'zoom=boolean & zoom-options={...}']);
      }
      const customOpts = computeCustomOpts.value;
      if (customOpts.isFooter) {
        toolbar_warnLog('vxe.error.delProp', ['toolbar.custom.isFooter', 'table.custom-config.showFooter']);
      }
      if (customOpts.showFooter) {
        toolbar_warnLog('vxe.error.delProp', ['toolbar.custom.showFooter', 'table.custom-config.showFooter']);
      }
      if (customOpts.immediate) {
        toolbar_warnLog('vxe.error.delProp', ['toolbar.custom.immediate', 'table.custom-config.immediate']);
      }
      if (customOpts.trigger) {
        toolbar_warnLog('vxe.error.delProp', ['toolbar.custom.trigger', 'table.custom-config.trigger']);
      }
      if (props.refresh || props.import || props.export || props.print || props.zoom) {
        if (!VxeUIButtonComponent) {
          toolbar_errLog('vxe.error.reqComp', ['vxe-button']);
        }
      }
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onBeforeUnmount)(() => {
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(reactData, toolbar_createReactData());
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(internalData, toolbar_createInternalData());
    });
    return $xeToolbar;
  },
  render() {
    return this.renderVN();
  }
}));
;// ./packages/grid/src/grid.ts




















const {
  warnLog: grid_warnLog,
  errLog: grid_errLog
} = createComponentLog('grid');
const {
  getConfig: grid_getConfig,
  getI18n: grid_getI18n,
  commands: grid_commands,
  hooks: grid_hooks,
  useFns: grid_useFns,
  createEvent: grid_createEvent,
  globalEvents: grid_globalEvents,
  GLOBAL_EVENT_KEYS: grid_GLOBAL_EVENT_KEYS,
  renderEmptyElement: grid_renderEmptyElement
} = core_.VxeUI;
const tableComponentPropKeys = Object.keys(tableProps);
const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadData', 'reloadData', 'reloadRow', 'loadColumn', 'reloadColumn', 'getRowNode', 'getColumnNode', 'getRowIndex', 'getVTRowIndex', 'getVMRowIndex', 'getColumnIndex', 'getVTColumnIndex', 'getVMColumnIndex', 'setRow', 'createData', 'createRow', 'revertData', 'clearData', 'isRemoveByRow', 'isInsertByRow', 'isUpdateByRow', 'getColumns', 'getColumnById', 'getColumnByField', 'getTableColumn', 'getFullColumns', 'getData', 'getCheckboxRecords', 'getParentRow', 'getTreeRowChildren', 'getTreeRowLevel', 'getTreeParentRow', 'getRowSeq', 'getRowById', 'getRowid', 'getTableData', 'getFullData', 'setColumnFixed', 'clearColumnFixed', 'setColumnWidth', 'getColumnWidth', 'recalcRowHeight', 'setRowHeightConf', 'getRowHeightConf', 'setRowHeight', 'getRowHeight', 'hideColumn', 'showColumn', 'resetColumn', 'refreshColumn', 'refreshScroll', 'recalculate', 'closeTooltip', 'isAllCheckboxChecked', 'isAllCheckboxIndeterminate', 'getCheckboxIndeterminateRecords', 'setCheckboxRow', 'setCheckboxRowKey', 'isCheckedByCheckboxRow', 'isCheckedByCheckboxRowKey', 'isIndeterminateByCheckboxRow', 'isIndeterminateByCheckboxRowKey', 'toggleCheckboxRow', 'setAllCheckboxRow', 'getRadioReserveRecord', 'clearRadioReserve', 'getCheckboxReserveRecords', 'clearCheckboxReserve', 'toggleAllCheckboxRow', 'clearCheckboxRow', 'setCurrentRow', 'isCheckedByRadioRow', 'isCheckedByRadioRowKey', 'setRadioRow', 'setRadioRowKey', 'clearCurrentRow', 'clearRadioRow', 'getCurrentRecord', 'getRadioRecord', 'getCurrentColumn', 'setCurrentColumn', 'clearCurrentColumn', 'setPendingRow', 'togglePendingRow', 'hasPendingByRow', 'isPendingByRow', 'getPendingRecords', 'clearPendingRow', 'setFilterByEvent', 'sort', 'setSort', 'setSortByEvent', 'clearSort', 'clearSortByEvent', 'isSort', 'getSortColumns', 'closeFilter', 'isFilter', 'clearFilterByEvent', 'isActiveFilterByColumn', 'isRowExpandLoaded', 'clearRowExpandLoaded', 'reloadRowExpand', 'reloadRowExpand', 'toggleRowExpand', 'setAllRowExpand', 'setRowExpand', 'isExpandByRow', 'isRowExpandByRow', 'clearRowExpand', 'clearRowExpandReserve', 'getRowExpandRecords', 'getTreeExpandRecords', 'isTreeExpandLoaded', 'clearTreeExpandLoaded', 'reloadTreeExpand', 'reloadTreeChilds', 'toggleTreeExpand', 'setAllTreeExpand', 'setTreeExpand', 'isTreeExpandByRow', 'clearTreeExpand', 'clearTreeExpandReserve', 'getScroll', 'getScrollData', 'scrollTo', 'scrollToStartRow', 'scrollToEndRow', 'scrollToRow', 'scrollToStartColumn', 'scrollToEndColumn', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'setMergeHeaderCells', 'removeMergeHeaderCells', 'getMergeHeaderCells', 'clearMergeHeaderCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'setCustomStoreData', 'getCustomStoreData', 'setRowGroupExpand', 'setRowGroupExpandByField', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'isAggregateRecord', 'isAggregateExpandByRow', 'getAggregateContentByRow', 'getAggregateRowChildren', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'updateCellLabel', 'clearFormatterCache', 'getFooterCellLabel', 'updateFooterCellLabel', 'clearFooterFormatterCache', 'getUpdateCells', 'undo', 'redo', 'effectCellData', 'getCellElement', 'focus', 'blur', 'connect', 'connectToolbar'];
function grid_createReactData() {
  return {
    tableLoading: false,
    proxyInited: false,
    isZMax: false,
    tableData: [],
    filterData: [],
    formData: {},
    sortData: [],
    footerData: [],
    tZindex: 0,
    tablePage: {
      total: 0,
      pageSize: grid_getConfig().pager?.pageSize || 10,
      currentPage: 1
    }
  };
}
function grid_createInternalData() {
  return {
    uFoot: false
  };
}
/* harmony default export */ var grid = (defineVxeComponent({
  name: 'VxeGrid',
  props: gridProps,
  emits: gridEmits,
  setup(props, context) {
    const {
      slots,
      emit
    } = context;
    const xID = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId();
    // 使用已安装的组件,如果未安装则不渲染
    const VxeUIFormComponent = core_.VxeUI.getComponent('VxeForm');
    const VxeUIPagerComponent = core_.VxeUI.getComponent('VxePager');
    const defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Table', 'Bottom', 'Pager']];
    const {
      computeSize
    } = grid_useFns.useSize(props);
    const reactData = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)(grid_createReactData());
    const internalData = grid_createInternalData();
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refTable = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refForm = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refToolbar = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refPager = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refPopupContainerElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refFormWrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refToolbarWrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refTopWrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBottomWrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refPagerWrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const extendTableMethods = methodKeys => {
      const funcs = {};
      methodKeys.forEach(name => {
        funcs[name] = (...args) => {
          const $xeTable = refTable.value;
          if ($xeTable && $xeTable[name]) {
            return $xeTable[name](...args);
          }
        };
      });
      return funcs;
    };
    const gridExtendTableMethods = extendTableMethods(tableComponentMethodKeys);
    tableComponentMethodKeys.forEach(name => {
      gridExtendTableMethods[name] = (...args) => {
        const $xeTable = refTable.value;
        if ($xeTable && $xeTable[name]) {
          return $xeTable && $xeTable[name](...args);
        }
      };
    });
    const computeProxyOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().merge({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().clone(grid_getConfig().grid.proxyConfig, true), props.proxyConfig);
    });
    const computeIsRespMsg = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const proxyOpts = computeProxyOpts.value;
      return !!(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(proxyOpts.message) ? proxyOpts.message : proxyOpts.showResponseMsg);
    });
    const computeIsActiveMsg = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const proxyOpts = computeProxyOpts.value;
      return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(proxyOpts.showActionMsg) ? proxyOpts.showActionMsg : !!proxyOpts.showActiveMsg;
    });
    const computePagerOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, grid_getConfig().grid.pagerConfig, props.pagerConfig);
    });
    const computeFormOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, grid_getConfig().grid.formConfig, props.formConfig);
    });
    const computeToolbarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, grid_getConfig().grid.toolbarConfig, props.toolbarConfig);
    });
    const computeZoomOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, grid_getConfig().grid.zoomConfig, props.zoomConfig);
    });
    const computeStyles = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        height,
        maxHeight
      } = props;
      const {
        isZMax,
        tZindex
      } = reactData;
      const stys = {};
      if (isZMax) {
        stys.zIndex = tZindex;
      } else {
        if (height) {
          stys.height = height === 'auto' || height === '100%' ? '100%' : toCssUnit(height);
        }
        if (maxHeight) {
          stys.maxHeight = maxHeight === 'auto' || maxHeight === '100%' ? '100%' : toCssUnit(maxHeight);
        }
      }
      return stys;
    });
    const computeTableExtendProps = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const rest = {};
      tableComponentPropKeys.forEach(key => {
        if (props[key] !== undefined) {
          rest[key] = props[key];
        }
      });
      return rest;
    });
    const computeTableProps = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        showFooter,
        seqConfig,
        pagerConfig,
        editConfig,
        proxyConfig
      } = props;
      const {
        isZMax,
        tablePage,
        footerData
      } = reactData;
      const tableExtendProps = computeTableExtendProps.value;
      const proxyOpts = computeProxyOpts.value;
      const pagerOpts = computePagerOpts.value;
      const isLoading = computeIsLoading.value;
      const tProps = Object.assign({}, tableExtendProps);
      if (showFooter && !tProps.footerData) {
        // 如果未设置自己的标位数据,则使用代理的
        tProps.footerData = footerData;
      } else if (proxyOpts.footer && footerData.length) {
        // 如果代理标为数据,且未请求到数据,则用自己的
        tProps.footerData = footerData;
      }
      if (isZMax) {
        if (tProps.maxHeight) {
          tProps.maxHeight = '100%';
        } else {
          tProps.height = '100%';
        }
      }
      if (proxyConfig && isEnableConf(proxyOpts)) {
        tProps.loading = isLoading;
        if (pagerConfig && proxyOpts.seq && isEnableConf(pagerOpts)) {
          tProps.seqConfig = Object.assign({}, seqConfig, {
            startIndex: (tablePage.currentPage - 1) * tablePage.pageSize
          });
        }
      }
      if (editConfig) {
        tProps.editConfig = Object.assign({}, editConfig);
      }
      return tProps;
    });
    const computeCurrLayoutConf = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        layouts
      } = props;
      let confs = [];
      if (layouts && layouts.length) {
        confs = layouts;
      } else {
        confs = grid_getConfig().grid.layouts || defaultLayouts;
      }
      let headKeys = [];
      let bodyKeys = [];
      let footKeys = [];
      if (confs.length) {
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(confs[0])) {
          headKeys = confs[0];
          bodyKeys = confs[1] || [];
          footKeys = confs[2] || [];
        } else {
          bodyKeys = confs;
        }
      }
      return {
        headKeys,
        bodyKeys,
        footKeys
      };
    });
    const computeCustomCurrentPageFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const pagerOpts = computePagerOpts.value;
      return pagerOpts.currentPage;
    });
    const computeCustomPageSizeFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const pagerOpts = computePagerOpts.value;
      return pagerOpts.pageSize;
    });
    const computeCustomTotalFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const pagerOpts = computePagerOpts.value;
      return pagerOpts.total;
    });
    const computePageCount = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        tablePage
      } = reactData;
      return Math.max(Math.ceil(tablePage.total / tablePage.pageSize), 1);
    });
    const computeIsLoading = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        loading,
        proxyConfig
      } = props;
      const {
        tableLoading
      } = reactData;
      const proxyOpts = computeProxyOpts.value;
      const {
        showLoading
      } = proxyOpts;
      return loading || tableLoading && showLoading && proxyConfig && isEnableConf(proxyOpts);
    });
    const refMaps = {
      refElem,
      refTable,
      refForm,
      refToolbar,
      refPager,
      refPopupContainerElem
    };
    const computeMaps = {
      computeProxyOpts,
      computePagerOpts,
      computeFormOpts,
      computeToolbarOpts,
      computeZoomOpts
    };
    const $xeGrid = {
      xID,
      props: props,
      context,
      reactData,
      internalData,
      getRefMaps: () => refMaps,
      getComputeMaps: () => computeMaps
    };
    const initToolbar = () => {
      const toolbarOpts = computeToolbarOpts.value;
      if (props.toolbarConfig && isEnableConf(toolbarOpts)) {
        (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
          const $xeTable = refTable.value;
          const $xeToolbar = refToolbar.value;
          if ($xeTable && $xeToolbar) {
            $xeTable.connectToolbar($xeToolbar);
          }
        });
      }
    };
    const getFormData = () => {
      const {
        proxyConfig
      } = props;
      const {
        formData
      } = reactData;
      const proxyOpts = computeProxyOpts.value;
      const formOpts = computeFormOpts.value;
      return proxyConfig && isEnableConf(proxyOpts) && proxyOpts.form ? formData : formOpts.data;
    };
    const initPages = propKey => {
      const {
        tablePage
      } = reactData;
      const {
        pagerConfig
      } = props;
      const pagerOpts = computePagerOpts.value;
      if (pagerConfig && isEnableConf(pagerOpts)) {
        if (propKey) {
          if (pagerOpts[propKey]) {
            tablePage[propKey] = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(pagerOpts[propKey]);
          }
        } else {
          const {
            currentPage,
            pageSize,
            total
          } = pagerOpts;
          if (currentPage) {
            tablePage.currentPage = currentPage;
          }
          if (pageSize) {
            tablePage.pageSize = pageSize;
          }
          if (total) {
            tablePage.total = total;
          }
        }
      }
    };
    const triggerPendingEvent = code => {
      const isActiveMsg = computeIsActiveMsg.value;
      const $xeTable = refTable.value;
      const selectRecords = $xeTable ? $xeTable.getCheckboxRecords() : [];
      if (selectRecords.length) {
        if ($xeTable) {
          $xeTable.togglePendingRow(selectRecords);
        }
        $xeGrid.clearCheckboxRow();
      } else {
        if (isActiveMsg) {
          if (core_.VxeUI.modal) {
            core_.VxeUI.modal.message({
              id: code,
              content: grid_getI18n('vxe.grid.selectOneRecord'),
              status: 'warning'
            });
          }
        }
      }
    };
    const getRespMsg = (rest, defaultMsg) => {
      const proxyOpts = computeProxyOpts.value;
      const resConfigs = proxyOpts.response || proxyOpts.props || {};
      const messageProp = resConfigs.message;
      const $xeTable = refTable.value;
      let msg;
      if (rest && messageProp) {
        msg = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(messageProp) ? messageProp({
          data: rest,
          $table: $xeTable,
          $grid: $xeGrid,
          $gantt: null
        }) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rest, messageProp);
      }
      return msg || grid_getI18n(defaultMsg);
    };
    const handleDeleteRow = (code, alertKey, callback) => {
      const isActiveMsg = computeIsActiveMsg.value;
      const selectRecords = $xeGrid.getCheckboxRecords();
      if (isActiveMsg) {
        if (selectRecords.length) {
          if (core_.VxeUI.modal) {
            return core_.VxeUI.modal.confirm({
              id: `cfm_${code}`,
              content: grid_getI18n(alertKey),
              escClosable: true
            }).then(type => {
              if (type === 'confirm') {
                return callback();
              }
            });
          }
        } else {
          if (core_.VxeUI.modal) {
            core_.VxeUI.modal.message({
              id: `msg_${code}`,
              content: grid_getI18n('vxe.grid.selectOneRecord'),
              status: 'warning'
            });
          }
        }
      } else {
        if (selectRecords.length) {
          callback();
        }
      }
      return Promise.resolve();
    };
    const pageChangeEvent = params => {
      const {
        proxyConfig
      } = props;
      const {
        tablePage
      } = reactData;
      const {
        $event,
        currentPage,
        pageSize
      } = params;
      const proxyOpts = computeProxyOpts.value;
      tablePage.currentPage = currentPage;
      tablePage.pageSize = pageSize;
      $xeGrid.dispatchEvent('page-change', params, $event);
      if (proxyConfig && isEnableConf(proxyOpts)) {
        $xeGrid.commitProxy('query').then(rest => {
          $xeGrid.dispatchEvent('proxy-query', rest, $event);
        });
      }
    };
    const handleSortEvent = params => {
      const $xeTable = refTable.value;
      const {
        proxyConfig
      } = props;
      if (!$xeTable) {
        return;
      }
      const {
        computeSortOpts
      } = $xeTable.getComputeMaps();
      const proxyOpts = computeProxyOpts.value;
      const sortOpts = computeSortOpts.value;
      // 如果是服务端排序
      if (sortOpts.remote) {
        reactData.sortData = params.sortList;
        if (proxyConfig && isEnableConf(proxyOpts)) {
          reactData.tablePage.currentPage = 1;
          $xeGrid.commitProxy('query').then(rest => {
            $xeGrid.dispatchEvent('proxy-query', rest, params.$event);
          });
        }
      }
    };
    const sortChangeEvent = params => {
      handleSortEvent(params);
      $xeGrid.dispatchEvent('sort-change', params, params.$event);
    };
    const clearAllSortEvent = params => {
      handleSortEvent(params);
      $xeGrid.dispatchEvent('clear-all-sort', params, params.$event);
    };
    const handleFilterEvent = params => {
      const $xeTable = refTable.value;
      const {
        proxyConfig
      } = props;
      if (!$xeTable) {
        return;
      }
      const {
        computeFilterOpts
      } = $xeTable.getComputeMaps();
      const proxyOpts = computeProxyOpts.value;
      const filterOpts = computeFilterOpts.value;
      // 如果是服务端过滤
      if (filterOpts.remote) {
        reactData.filterData = params.filterList;
        if (proxyConfig && isEnableConf(proxyOpts)) {
          reactData.tablePage.currentPage = 1;
          internalData.uFoot = true;
          $xeGrid.commitProxy('query').then(rest => {
            $xeGrid.dispatchEvent('proxy-query', rest, params.$event);
          });
          internalData.uFoot = false;
          updateQueryFooter();
        }
      }
    };
    const filterChangeEvent = params => {
      handleFilterEvent(params);
      $xeGrid.dispatchEvent('filter-change', params, params.$event);
    };
    const clearAllFilterEvent = params => {
      handleFilterEvent(params);
      $xeGrid.dispatchEvent('clear-all-filter', params, params.$event);
    };
    const submitFormEvent = params => {
      const {
        proxyConfig
      } = props;
      const proxyOpts = computeProxyOpts.value;
      if (reactData.tableLoading) {
        return;
      }
      if (proxyConfig && isEnableConf(proxyOpts)) {
        $xeGrid.dispatchEvent('form-submit', params, params.$event);
        internalData.uFoot = true;
        $xeGrid.commitProxy('reload').then(rest => {
          $xeGrid.dispatchEvent('proxy-query', {
            ...rest,
            isReload: true
          }, params.$event);
        });
        internalData.uFoot = false;
        updateQueryFooter();
      } else {
        $xeGrid.dispatchEvent('form-submit', params, params.$event);
      }
    };
    const resetFormEvent = params => {
      const $xeTable = refTable.value;
      const {
        proxyConfig
      } = props;
      const {
        $event
      } = params;
      const proxyOpts = computeProxyOpts.value;
      if (proxyConfig && isEnableConf(proxyOpts)) {
        $xeGrid.dispatchEvent('form-reset', params, $event);
        if ($xeTable) {
          $xeTable.clearScroll();
        }
        internalData.uFoot = true;
        $xeGrid.commitProxy('reload').then(rest => {
          $xeGrid.dispatchEvent('proxy-query', {
            ...rest,
            isReload: true
          }, $event);
        });
        internalData.uFoot = false;
        updateQueryFooter();
      } else {
        $xeGrid.dispatchEvent('form-reset', params, $event);
      }
    };
    const submitInvalidEvent = params => {
      $xeGrid.dispatchEvent('form-submit-invalid', params, params.$event);
    };
    const collapseEvent = params => {
      const {
        $event
      } = params;
      $xeGrid.dispatchEvent('form-toggle-collapse', params, $event);
      $xeGrid.dispatchEvent('form-collapse', params, $event);
    };
    const handleZoom = isMax => {
      const {
        isZMax
      } = reactData;
      if (isMax ? !isZMax : isZMax) {
        reactData.isZMax = !isZMax;
        if (reactData.tZindex < getLastZIndex()) {
          reactData.tZindex = nextZIndex();
        }
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => $xeGrid.recalculate(true)).then(() => {
        setTimeout(() => $xeGrid.recalculate(true), 15);
        return reactData.isZMax;
      });
    };
    const getFuncSlot = (optSlots, slotKey) => {
      const funcSlot = optSlots[slotKey];
      if (funcSlot) {
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(funcSlot)) {
          if (slots[funcSlot]) {
            return slots[funcSlot];
          } else {
            grid_errLog('vxe.error.notSlot', [funcSlot]);
          }
        } else {
          return funcSlot;
        }
      }
      return null;
    };
    const getConfigSlot = slotConfigs => {
      const slotConf = {};
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().objectMap(slotConfigs, (slotFunc, slotKey) => {
        if (slotFunc) {
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(slotFunc)) {
            if (slots[slotFunc]) {
              slotConf[slotKey] = slots[slotFunc];
            } else {
              grid_errLog('vxe.error.notSlot', [slotFunc]);
            }
          } else {
            slotConf[slotKey] = slotFunc;
          }
        }
      });
      return slotConf;
    };
    /**
     * 渲染表单
     */
    const renderForm = () => {
      const {
        formConfig,
        proxyConfig
      } = props;
      const {
        formData
      } = reactData;
      const proxyOpts = computeProxyOpts.value;
      const formOpts = computeFormOpts.value;
      if (formConfig && isEnableConf(formOpts) || slots.form) {
        let slotVNs = [];
        if (slots.form) {
          slotVNs = slots.form({
            $grid: $xeGrid,
            $gantt: null
          });
        } else {
          if (formOpts.items) {
            const formSlots = {};
            if (!formOpts.inited) {
              formOpts.inited = true;
              const beforeItem = proxyOpts.beforeItem;
              if (proxyOpts && beforeItem) {
                formOpts.items.forEach(item => {
                  beforeItem({
                    $grid: $xeGrid,
                    $gantt: null,
                    item
                  });
                });
              }
            }
            // 处理插槽
            formOpts.items.forEach(item => {
              external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(item.slots, func => {
                if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(func)) {
                  if (slots[func]) {
                    formSlots[func] = slots[func];
                  }
                }
              });
            });
            if (VxeUIFormComponent) {
              slotVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIFormComponent, {
                ref: refForm,
                ...Object.assign({}, formOpts, {
                  data: proxyConfig && isEnableConf(proxyOpts) && proxyOpts.form ? formData : formOpts.data
                }),
                onSubmit: submitFormEvent,
                onReset: resetFormEvent,
                onSubmitInvalid: submitInvalidEvent,
                onCollapse: collapseEvent
              }, formSlots));
            }
          }
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          ref: refFormWrapper,
          key: 'form',
          class: 'vxe-grid--form-wrapper'
        }, slotVNs);
      }
      return grid_renderEmptyElement($xeGrid);
    };
    /**
     * 渲染工具栏
     */
    const renderToolbar = () => {
      const {
        toolbarConfig
      } = props;
      const toolbarOpts = computeToolbarOpts.value;
      const toolbarSlot = slots.toolbar;
      if (toolbarConfig && isEnableConf(toolbarOpts) || toolbarSlot) {
        let slotVNs = [];
        if (toolbarSlot) {
          slotVNs = toolbarSlot({
            $grid: $xeGrid,
            $gantt: null
          });
        } else {
          const toolbarOptSlots = toolbarOpts.slots;
          const toolbarSlots = {};
          if (toolbarOptSlots) {
            const buttonsSlot = getFuncSlot(toolbarOptSlots, 'buttons');
            const buttonPrefixSlot = getFuncSlot(toolbarOptSlots, 'buttonPrefix');
            const buttonSuffixSlot = getFuncSlot(toolbarOptSlots, 'buttonSuffix');
            const toolsSlot = getFuncSlot(toolbarOptSlots, 'tools');
            const toolPrefixSlot = getFuncSlot(toolbarOptSlots, 'toolPrefix');
            const toolSuffixSlot = getFuncSlot(toolbarOptSlots, 'toolSuffix');
            if (buttonsSlot) {
              toolbarSlots.buttons = buttonsSlot;
            }
            if (buttonPrefixSlot) {
              toolbarSlots.buttonPrefix = buttonPrefixSlot;
            }
            if (buttonSuffixSlot) {
              toolbarSlots.buttonSuffix = buttonSuffixSlot;
            }
            if (toolsSlot) {
              toolbarSlots.tools = toolsSlot;
            }
            if (toolPrefixSlot) {
              toolbarSlots.toolPrefix = toolPrefixSlot;
            }
            if (toolSuffixSlot) {
              toolbarSlots.toolSuffix = toolSuffixSlot;
            }
          }
          slotVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(toolbar, {
            ref: refToolbar,
            ...toolbarOpts,
            slots: undefined
          }, toolbarSlots));
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          ref: refToolbarWrapper,
          key: 'toolbar',
          class: 'vxe-grid--toolbar-wrapper'
        }, slotVNs);
      }
      return grid_renderEmptyElement($xeGrid);
    };
    /**
     * 渲染表格顶部区域
     */
    const renderTop = () => {
      const topSlot = slots.top;
      if (topSlot) {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          ref: refTopWrapper,
          key: 'top',
          class: 'vxe-grid--top-wrapper'
        }, topSlot({
          $grid: $xeGrid,
          $gantt: null
        }));
      }
      return grid_renderEmptyElement($xeGrid);
    };
    const renderTableLeft = () => {
      const leftSlot = slots.left;
      if (leftSlot) {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: 'vxe-grid--left-wrapper'
        }, leftSlot({
          $grid: $xeGrid,
          $gantt: null
        }));
      }
      return grid_renderEmptyElement($xeGrid);
    };
    const renderTableRight = () => {
      const rightSlot = slots.right;
      if (rightSlot) {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: 'vxe-grid--right-wrapper'
        }, rightSlot({
          $grid: $xeGrid,
          $gantt: null
        }));
      }
      return grid_renderEmptyElement($xeGrid);
    };
    /**
     * 渲染表格
     */
    const renderTable = () => {
      const {
        proxyConfig
      } = props;
      const tableProps = computeTableProps.value;
      const proxyOpts = computeProxyOpts.value;
      const tableOns = Object.assign({}, tableCompEvents);
      const emptySlot = slots.empty;
      const loadingSlot = slots.loading;
      const rowDragIconSlot = slots.rowDragIcon || slots['row-drag-icon'];
      const columnDragIconSlot = slots.columnDragIcon || slots['column-drag-icon'];
      const headerTooltipSlot = slots.headerTooltip || slots['header-tooltip'];
      const tooltipSlot = slots.tooltip;
      const footerTooltipSlot = slots.footerTooltip || slots['footer-tooltip'];
      if (proxyConfig && isEnableConf(proxyOpts)) {
        if (proxyOpts.sort) {
          tableOns.onSortChange = sortChangeEvent;
          tableOns.onClearAllSort = clearAllSortEvent;
        }
        if (proxyOpts.filter) {
          tableOns.onFilterChange = filterChangeEvent;
          tableOns.onClearAllFilter = clearAllFilterEvent;
        }
      }
      const slotObj = {};
      if (emptySlot) {
        slotObj.empty = emptySlot;
      }
      if (loadingSlot) {
        slotObj.loading = loadingSlot;
      }
      if (rowDragIconSlot) {
        slotObj.rowDragIcon = rowDragIconSlot;
      }
      if (columnDragIconSlot) {
        slotObj.columnDragIcon = columnDragIconSlot;
      }
      if (headerTooltipSlot) {
        slotObj.headerTooltip = headerTooltipSlot;
      }
      if (tooltipSlot) {
        slotObj.tooltip = tooltipSlot;
      }
      if (footerTooltipSlot) {
        slotObj.footerTooltip = footerTooltipSlot;
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-grid--table-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(table, {
        ref: refTable,
        ...tableProps,
        ...tableOns
      }, slotObj)]);
    };
    /**
     * 渲染表格底部区域
     */
    const renderBottom = () => {
      if (slots.bottom) {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          ref: refBottomWrapper,
          key: 'bottom',
          class: 'vxe-grid--bottom-wrapper'
        }, slots.bottom({
          $grid: $xeGrid,
          $gantt: null
        }));
      }
      return grid_renderEmptyElement($xeGrid);
    };
    /**
     * 渲染分页
     */
    const renderPager = () => {
      const {
        proxyConfig,
        pagerConfig
      } = props;
      const proxyOpts = computeProxyOpts.value;
      const pagerOpts = computePagerOpts.value;
      const pagerSlot = slots.pager;
      if (pagerConfig && isEnableConf(pagerOpts) || slots.pager) {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          ref: refPagerWrapper,
          key: 'pager',
          class: 'vxe-grid--pager-wrapper'
        }, pagerSlot ? pagerSlot({
          $grid: $xeGrid,
          $gantt: null
        }) : [VxeUIPagerComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIPagerComponent, {
          ref: refPager,
          ...pagerOpts,
          ...(proxyConfig && isEnableConf(proxyOpts) ? reactData.tablePage : {}),
          onPageChange: pageChangeEvent
        }, getConfigSlot(pagerOpts.slots)) : grid_renderEmptyElement($xeGrid)]);
      }
      return grid_renderEmptyElement($xeGrid);
    };
    const renderChildLayout = layoutKeys => {
      const childVNs = [];
      layoutKeys.forEach(key => {
        switch (key) {
          case 'Form':
            childVNs.push(renderForm());
            break;
          case 'Toolbar':
            childVNs.push(renderToolbar());
            break;
          case 'Top':
            childVNs.push(renderTop());
            break;
          case 'Table':
            childVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              key: 'table',
              class: 'vxe-grid--table-container'
            }, [renderTableLeft(), renderTable(), renderTableRight()]));
            break;
          case 'Bottom':
            childVNs.push(renderBottom());
            break;
          case 'Pager':
            childVNs.push(renderPager());
            break;
          default:
            grid_errLog('vxe.error.notProp', [`layouts -> ${key}`]);
            break;
        }
      });
      return childVNs;
    };
    const renderLayout = () => {
      const currLayoutConf = computeCurrLayoutConf.value;
      const {
        headKeys,
        bodyKeys,
        footKeys
      } = currLayoutConf;
      const asideLeftSlot = slots.asideLeft || slots['aside-left'];
      const asideRightSlot = slots.asideRight || slots['aside-right'];
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-grid--layout-header-wrapper'
      }, renderChildLayout(headKeys)), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-grid--layout-body-wrapper'
      }, [asideLeftSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-grid--layout-aside-left-wrapper'
      }, asideLeftSlot({})) : grid_renderEmptyElement($xeGrid), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-grid--layout-body-content-wrapper'
      }, renderChildLayout(bodyKeys)), asideRightSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-grid--layout-aside-right-wrapper'
      }, asideRightSlot({})) : grid_renderEmptyElement($xeGrid)]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-grid--layout-footer-wrapper'
      }, renderChildLayout(footKeys)), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refPopupContainerElem
      })];
    };
    const tableCompEvents = {};
    tableEmits.forEach(name => {
      const type = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().camelCase(`on-${name}`);
      tableCompEvents[type] = (...args) => emit(name, ...args);
    });
    const getDefaultFormData = () => {
      const formOpts = computeFormOpts.value;
      if (formOpts.items) {
        const fData = {};
        formOpts.items.forEach(item => {
          const {
            field,
            itemRender
          } = item;
          if (field) {
            let itemValue = null;
            if (itemRender) {
              const {
                startField,
                endField,
                defaultValue
              } = itemRender;
              if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(defaultValue)) {
                itemValue = defaultValue({
                  item
                });
              } else if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(defaultValue)) {
                itemValue = defaultValue;
              }
              if (startField && endField) {
                external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(fData, startField, null);
                external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(fData, endField, null);
              }
            }
            fData[field] = itemValue;
          }
        });
        return fData;
      }
      return {};
    };
    const initProxy = () => {
      const {
        proxyConfig,
        formConfig
      } = props;
      const {
        proxyInited
      } = reactData;
      const proxyOpts = computeProxyOpts.value;
      const formOpts = computeFormOpts.value;
      if (proxyConfig && isEnableConf(proxyOpts)) {
        if (formConfig && isEnableConf(formOpts) && proxyOpts.form && formOpts.items) {
          reactData.formData = getDefaultFormData();
        }
        if (!proxyInited) {
          reactData.proxyInited = true;
          if (proxyOpts.autoLoad !== false) {
            (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
              internalData.uFoot = true;
              const rest = $xeGrid.commitProxy('initial');
              internalData.uFoot = false;
              updateQueryFooter();
              return rest;
            }).then(rest => {
              dispatchEvent('proxy-query', {
                ...rest,
                isInited: true
              }, new Event('initial'));
            });
          }
        }
      }
    };
    const updateQueryFooter = () => {
      const proxyOpts = computeProxyOpts.value;
      const {
        ajax
      } = proxyOpts;
      if (ajax && ajax.queryFooter) {
        return $xeGrid.commitProxy('queryFooter');
      }
    };
    const handleGlobalKeydownEvent = evnt => {
      const zoomOpts = computeZoomOpts.value;
      const isEsc = grid_globalEvents.hasKey(evnt, grid_GLOBAL_EVENT_KEYS.ESCAPE);
      if (isEsc && reactData.isZMax && zoomOpts.escRestore !== false) {
        $xeGrid.triggerZoomEvent(evnt);
      }
    };
    const dispatchEvent = (type, params, evnt) => {
      emit(type, grid_createEvent(evnt, {
        $grid: $xeGrid,
        $gantt: null
      }, params));
    };
    const gridMethods = {
      dispatchEvent,
      getEl() {
        return refElem.value;
      },
      /**
       * 提交指令,支持 code 或 button
       * @param {String/Object} code 字符串或对象
       */
      commitProxy(proxyTarget, ...args) {
        const {
          showFooter,
          proxyConfig,
          toolbarConfig,
          pagerConfig,
          editRules,
          validConfig
        } = props;
        const {
          tablePage
        } = reactData;
        const isActiveMsg = computeIsActiveMsg.value;
        const isRespMsg = computeIsRespMsg.value;
        const proxyOpts = computeProxyOpts.value;
        const pagerOpts = computePagerOpts.value;
        const toolbarOpts = computeToolbarOpts.value;
        const {
          beforeQuery: oldBeforeQuery,
          afterQuery: oldAfterQuery,
          beforeQueryFooter: oldBeforeQueryFooter,
          afterQueryFooter: oldAfterQueryFooter,
          beforeDelete: oldBeforeDelete,
          afterDelete: oldAfterDelete,
          beforeSave: oldBeforeSave,
          afterSave: oldAfterSave,
          ajax = {}
        } = proxyOpts;
        const resConfigs = proxyOpts.response || proxyOpts.props || {};
        const $xeTable = refTable.value;
        if (!$xeTable) {
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
        }
        let formData = getFormData();
        let button = null;
        let code = null;
        if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(proxyTarget)) {
          const {
            buttons
          } = toolbarOpts;
          const matchObj = toolbarConfig && isEnableConf(toolbarOpts) && buttons ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findTree(buttons, item => item.code === proxyTarget, {
            children: 'dropdowns'
          }) : null;
          button = matchObj ? matchObj.item : null;
          code = proxyTarget;
        } else {
          button = proxyTarget;
          code = button.code;
        }
        const btnParams = button ? button.params : null;
        switch (code) {
          case 'insert':
            return $xeTable.insert({});
          case 'insert_edit':
            return $xeTable.insert({}).then(({
              row
            }) => $xeTable.setEditRow(row, true));
          // 已废弃
          case 'insert_actived':
            return $xeTable.insert({}).then(({
              row
            }) => $xeTable.setEditRow(row, true));
          // 已废弃
          case 'mark_cancel':
            triggerPendingEvent(code);
            break;
          case 'remove':
            return handleDeleteRow(code, 'vxe.grid.removeSelectRecord', () => $xeTable.removeCheckboxRow());
          case 'import':
            $xeTable.importData(btnParams);
            break;
          case 'open_import':
            $xeTable.openImport(btnParams);
            break;
          case 'export':
            $xeTable.exportData(btnParams);
            break;
          case 'open_export':
            $xeTable.openExport(btnParams);
            break;
          case 'reset_custom':
            return $xeTable.resetCustom(true);
          case 'initial':
          case 'reload':
          case 'query':
            {
              const bqMethod = ajax.beforeQuery;
              const qMethod = ajax.query;
              const aqMethod = ajax.afterQuery;
              const qsMethod = ajax.querySuccess;
              const qeMethod = ajax.queryError;
              if (qMethod) {
                const isInited = code === 'initial';
                const isReload = code === 'reload';
                if (!isInited && reactData.tableLoading) {
                  return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
                }
                let operPromise = null;
                let sortList = [];
                let filterList = [];
                let pageParams = {};
                if (pagerConfig) {
                  if (isInited || isReload) {
                    // 重置分页
                    tablePage.currentPage = 1;
                  }
                  if (isEnableConf(pagerOpts)) {
                    pageParams = {
                      ...tablePage
                    };
                  }
                }
                if (isInited) {
                  // 重置代理表单数据
                  if (proxyConfig && isEnableConf(proxyOpts) && proxyOpts.form) {
                    formData = getDefaultFormData();
                    reactData.formData = formData;
                  }
                  if ($xeTable) {
                    const tableInternalData = $xeTable.internalData;
                    const {
                      tableFullColumn,
                      fullColumnFieldData
                    } = tableInternalData;
                    const {
                      computeSortOpts
                    } = $xeTable.getComputeMaps();
                    const sortOpts = computeSortOpts.value;
                    let defaultSort = sortOpts.defaultSort;
                    tableFullColumn.forEach(column => {
                      column.order = null;
                    });
                    // 如果使用默认排序
                    if (defaultSort) {
                      if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(defaultSort)) {
                        defaultSort = [defaultSort];
                      }
                      sortList = defaultSort.map(item => {
                        const {
                          field,
                          order
                        } = item;
                        const colRest = fullColumnFieldData[field];
                        if (colRest) {
                          const column = colRest.column;
                          if (column) {
                            column.order = order;
                          }
                        }
                        return {
                          field,
                          property: field,
                          order
                        };
                      });
                    }
                    filterList = $xeTable.getCheckedFilters();
                  }
                } else {
                  if ($xeTable) {
                    if (isReload) {
                      operPromise = $xeTable.clearAll();
                    } else {
                      sortList = $xeTable.getSortColumns();
                      filterList = $xeTable.getCheckedFilters();
                    }
                  }
                }
                const commitParams = {
                  $table: $xeTable,
                  $grid: $xeGrid,
                  $gantt: null,
                  code,
                  button,
                  isInited,
                  isReload,
                  page: pageParams,
                  sort: sortList.length ? sortList[0] : {},
                  sorts: sortList,
                  filters: filterList,
                  form: formData,
                  options: qMethod
                };
                const handleQuery = () => {
                  reactData.sortData = sortList;
                  reactData.filterData = filterList;
                  reactData.tableLoading = true;
                  return Promise.all([Promise.resolve((oldBeforeQuery || qMethod)(commitParams, ...args)), operPromise]).then(([rest]) => {
                    reactData.tableLoading = false;
                    if (aqMethod) {
                      aqMethod({
                        ...commitParams,
                        response: rest,
                        status: 'success'
                      }, ...args);
                    } else {
                      let tableData = [];
                      if (rest) {
                        const listProp = resConfigs.list;
                        const resultProp = resConfigs.result;
                        const reParams = {
                          data: rest,
                          $table: $xeTable,
                          $grid: $xeGrid,
                          $gantt: null
                        };
                        if (pagerConfig && isEnableConf(pagerOpts)) {
                          const totalProp = resConfigs.total;
                          const total = (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(totalProp) ? totalProp(reParams) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rest, totalProp || 'page.total')) || 0;
                          tablePage.total = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(total);
                          tableData = (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(resultProp) ? resultProp(reParams) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rest, resultProp || 'result')) || [];
                          // 检验当前页码,不能超出当前最大页数
                          const pageCount = Math.max(Math.ceil(total / tablePage.pageSize), 1);
                          if (tablePage.currentPage > pageCount) {
                            tablePage.currentPage = pageCount;
                          }
                        } else {
                          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rest)) {
                            tableData = rest;
                          } else if (listProp) {
                            tableData = (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(listProp) ? listProp(reParams) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rest, listProp)) || [];
                          }
                        }
                        if (showFooter) {
                          const fdProp = resConfigs.footerData;
                          const footerList = fdProp ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(fdProp) ? fdProp(reParams) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rest, fdProp) : [];
                          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(footerList)) {
                            reactData.footerData = footerList;
                          }
                        }
                      }
                      if ($xeTable) {
                        $xeTable.loadData(tableData);
                      } else {
                        (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
                          const $xeTable = refTable.value;
                          if ($xeTable) {
                            $xeTable.loadData(tableData);
                          }
                        });
                      }
                      if (oldAfterQuery) {
                        oldAfterQuery({
                          ...commitParams,
                          response: rest
                        }, ...args);
                      }
                    }
                    if (qsMethod) {
                      qsMethod({
                        ...commitParams,
                        response: rest
                      });
                    }
                    return {
                      status: true
                    };
                  }).catch(rest => {
                    reactData.tableLoading = false;
                    if (aqMethod) {
                      aqMethod({
                        ...commitParams,
                        response: rest,
                        status: 'error'
                      }, ...args);
                    }
                    if (qeMethod) {
                      qeMethod({
                        ...commitParams,
                        response: rest
                      });
                    }
                    return {
                      status: false
                    };
                  });
                };
                if (bqMethod) {
                  return Promise.resolve(bqMethod(commitParams, ...args)).then(status => {
                    if (status !== false) {
                      return handleQuery();
                    }
                  });
                }
                return handleQuery();
              } else {
                grid_errLog('vxe.error.notFunc', ['proxy-config.ajax.query']);
              }
              break;
            }
          case 'queryFooter':
            {
              const bqfMethod = ajax.beforeQueryFooter;
              const qfMethod = ajax.queryFooter;
              const aqfMethod = ajax.afterQueryFooter;
              const qfSuccessMethod = ajax.queryFooterSuccess;
              const qfErrorMethod = ajax.queryFooterError;
              if (qfMethod) {
                let filterList = [];
                if ($xeTable) {
                  filterList = $xeTable.getCheckedFilters();
                }
                let pageParams = {};
                if (pagerConfig) {
                  if (isEnableConf(pagerOpts)) {
                    pageParams = {
                      ...tablePage
                    };
                  }
                }
                const commitParams = {
                  $table: $xeTable,
                  $grid: $xeGrid,
                  $gantt: null,
                  code,
                  button,
                  page: pageParams,
                  filters: filterList,
                  form: formData,
                  options: qfMethod
                };
                const handleQueryFooter = () => {
                  return Promise.resolve((oldBeforeQueryFooter || qfMethod)(commitParams, ...args)).then(rest => {
                    if (aqfMethod) {
                      aqfMethod({
                        ...commitParams,
                        response: rest,
                        status: 'success'
                      }, ...args);
                    } else {
                      reactData.footerData = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(rest) ? rest : [];
                      if (oldAfterQueryFooter) {
                        oldAfterQueryFooter({
                          ...commitParams,
                          response: rest
                        }, ...args);
                      }
                    }
                    if (qfSuccessMethod) {
                      qfSuccessMethod({
                        ...commitParams,
                        response: rest
                      });
                    }
                    return {
                      status: true
                    };
                  }).catch(rest => {
                    if (aqfMethod) {
                      aqfMethod({
                        ...commitParams,
                        response: rest,
                        status: 'error'
                      }, ...args);
                    }
                    if (qfErrorMethod) {
                      qfErrorMethod({
                        ...commitParams,
                        response: rest
                      });
                    }
                    return {
                      status: false
                    };
                  });
                };
                if (bqfMethod) {
                  return Promise.resolve(bqfMethod(commitParams, ...args)).then(status => {
                    if (status !== false) {
                      return handleQueryFooter();
                    }
                  });
                }
                return handleQueryFooter();
              } else {
                grid_errLog('vxe.error.notFunc', ['proxy-config.ajax.queryFooter']);
              }
              break;
            }
          case 'delete':
            {
              const bdMethod = ajax.beforeDelete;
              const dMethod = ajax.delete;
              const adMethod = ajax.afterDelete;
              const deleteSuccessMethods = ajax.deleteSuccess;
              const deleteErrorMethods = ajax.deleteError;
              if (dMethod) {
                const selectRecords = $xeGrid.getCheckboxRecords();
                const removeRecords = selectRecords.filter(row => !$xeTable.isInsertByRow(row));
                const body = {
                  removeRecords
                };
                const commitParams = {
                  $table: $xeTable,
                  $grid: $xeGrid,
                  $gantt: null,
                  code,
                  button,
                  body,
                  form: formData,
                  options: dMethod
                };
                if (selectRecords.length) {
                  return handleDeleteRow(code, 'vxe.grid.deleteSelectRecord', () => {
                    if (!removeRecords.length) {
                      return $xeTable.remove(selectRecords);
                    }
                    const handleDelete = () => {
                      reactData.tableLoading = true;
                      return Promise.resolve((oldBeforeDelete || dMethod)(commitParams, ...args)).then(rest => {
                        reactData.tableLoading = false;
                        if (adMethod) {
                          adMethod({
                            ...commitParams,
                            response: rest,
                            status: 'success'
                          }, ...args);
                        } else {
                          $xeTable.setPendingRow(removeRecords, false);
                          if (isRespMsg) {
                            if (core_.VxeUI.modal) {
                              core_.VxeUI.modal.message({
                                content: getRespMsg(rest, 'vxe.grid.delSuccess'),
                                status: 'success'
                              });
                            }
                          }
                          if (oldAfterDelete) {
                            oldAfterDelete({
                              ...commitParams,
                              response: rest
                            }, ...args);
                          } else {
                            internalData.uFoot = true;
                            $xeGrid.commitProxy('query');
                            internalData.uFoot = false;
                            updateQueryFooter();
                          }
                        }
                        if (deleteSuccessMethods) {
                          deleteSuccessMethods({
                            ...commitParams,
                            response: rest
                          });
                        }
                        return {
                          status: true
                        };
                      }).catch(rest => {
                        reactData.tableLoading = false;
                        if (adMethod) {
                          adMethod({
                            ...commitParams,
                            response: rest,
                            status: 'error'
                          }, ...args);
                        } else {
                          if (isRespMsg) {
                            if (core_.VxeUI.modal) {
                              core_.VxeUI.modal.message({
                                id: code,
                                content: getRespMsg(rest, 'vxe.grid.operError'),
                                status: 'error'
                              });
                            }
                          }
                        }
                        if (deleteErrorMethods) {
                          deleteErrorMethods({
                            ...commitParams,
                            response: rest
                          });
                        }
                        return {
                          status: false
                        };
                      });
                    };
                    if (bdMethod) {
                      return Promise.resolve(bdMethod(commitParams, ...args)).then(status => {
                        if (status !== false) {
                          return handleDelete();
                        }
                      });
                    }
                    return handleDelete();
                  });
                } else {
                  if (isActiveMsg) {
                    if (core_.VxeUI.modal) {
                      core_.VxeUI.modal.message({
                        id: code,
                        content: grid_getI18n('vxe.grid.selectOneRecord'),
                        status: 'warning'
                      });
                    }
                  }
                }
              } else {
                grid_errLog('vxe.error.notFunc', ['proxy-config.ajax.delete']);
              }
              break;
            }
          case 'save':
            {
              const bSaveMethod = ajax.beforeSave;
              const sMethod = ajax.save;
              const aSaveMethod = ajax.afterSave;
              const sSuccessMethod = ajax.saveSuccess;
              const sErrorMethod = ajax.saveError;
              if (sMethod) {
                const body = $xeTable.getRecordset();
                const {
                  insertRecords,
                  removeRecords,
                  updateRecords,
                  pendingRecords
                } = body;
                const commitParams = {
                  $table: $xeTable,
                  $grid: $xeGrid,
                  $gantt: null,
                  code,
                  button,
                  body,
                  form: formData,
                  options: sMethod
                };
                // 排除掉新增且标记为删除的数据
                if (insertRecords.length) {
                  body.pendingRecords = pendingRecords.filter(row => $xeTable.findRowIndexOf(insertRecords, row) === -1);
                }
                // 排除已标记为删除的数据
                if (pendingRecords.length) {
                  body.insertRecords = insertRecords.filter(row => $xeTable.findRowIndexOf(pendingRecords, row) === -1);
                }
                let restPromise = Promise.resolve();
                if (editRules) {
                  // 只校验新增和修改的数据
                  restPromise = $xeTable[validConfig && validConfig.msgMode === 'full' ? 'fullValidate' : 'validate'](body.insertRecords.concat(updateRecords));
                }
                return restPromise.then(errMap => {
                  if (errMap) {
                    // 如果校验不通过
                    return;
                  }
                  if (body.insertRecords.length || removeRecords.length || updateRecords.length || body.pendingRecords.length) {
                    const handleSave = () => {
                      reactData.tableLoading = true;
                      return Promise.resolve((oldBeforeSave || sMethod)(commitParams, ...args)).then(rest => {
                        reactData.tableLoading = false;
                        if (aSaveMethod) {
                          aSaveMethod({
                            ...commitParams,
                            response: rest,
                            status: 'success'
                          }, ...args);
                        } else {
                          $xeTable.clearPendingRow();
                          if (isRespMsg) {
                            if (core_.VxeUI.modal) {
                              core_.VxeUI.modal.message({
                                content: getRespMsg(rest, 'vxe.grid.saveSuccess'),
                                status: 'success'
                              });
                            }
                          }
                          if (oldAfterSave) {
                            oldAfterSave({
                              ...commitParams,
                              response: rest
                            }, ...args);
                          } else {
                            internalData.uFoot = true;
                            $xeGrid.commitProxy('query');
                            internalData.uFoot = false;
                            updateQueryFooter();
                          }
                        }
                        if (sSuccessMethod) {
                          sSuccessMethod({
                            ...commitParams,
                            response: rest
                          });
                        }
                        return {
                          status: true
                        };
                      }).catch(rest => {
                        reactData.tableLoading = false;
                        if (aSaveMethod) {
                          aSaveMethod({
                            ...commitParams,
                            response: rest,
                            status: 'error'
                          }, ...args);
                        } else {
                          if (isRespMsg) {
                            if (core_.VxeUI.modal) {
                              core_.VxeUI.modal.message({
                                id: code,
                                content: getRespMsg(rest, 'vxe.grid.operError'),
                                status: 'error'
                              });
                            }
                          }
                        }
                        if (sErrorMethod) {
                          sErrorMethod({
                            ...commitParams,
                            response: rest
                          });
                        }
                        return {
                          status: false
                        };
                      });
                    };
                    if (bSaveMethod) {
                      return Promise.resolve(bSaveMethod(commitParams, ...args)).then(status => {
                        if (status !== false) {
                          return handleSave();
                        }
                      });
                    }
                    return handleSave();
                  } else {
                    if (isActiveMsg) {
                      if (core_.VxeUI.modal) {
                        core_.VxeUI.modal.message({
                          id: code,
                          content: grid_getI18n('vxe.grid.dataUnchanged'),
                          status: 'info'
                        });
                      }
                    }
                  }
                });
              } else {
                grid_errLog('vxe.error.notFunc', ['proxy-config.ajax.save']);
              }
              break;
            }
          default:
            {
              const gCommandOpts = grid_commands.get(code);
              if (gCommandOpts) {
                const tCommandMethod = gCommandOpts.tableCommandMethod || gCommandOpts.commandMethod;
                if (tCommandMethod) {
                  tCommandMethod({
                    code,
                    button,
                    $grid: $xeGrid,
                    $table: $xeTable,
                    $gantt: null
                  }, ...args);
                } else {
                  grid_errLog('vxe.error.notCommands', [code]);
                }
              }
            }
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      getParams() {
        return props.params;
      },
      zoom() {
        if (reactData.isZMax) {
          return $xeGrid.revert();
        }
        return $xeGrid.maximize();
      },
      isMaximized() {
        return reactData.isZMax;
      },
      maximize() {
        return handleZoom(true);
      },
      revert() {
        return handleZoom();
      },
      getFormData,
      getFormItems(itemIndex) {
        const formOpts = computeFormOpts.value;
        const {
          formConfig
        } = props;
        const {
          items
        } = formOpts;
        const itemList = [];
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(formConfig && isEnableConf(formOpts) && items ? items : [], item => {
          itemList.push(item);
        }, {
          children: 'children'
        });
        return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(itemIndex) ? itemList : itemList[itemIndex];
      },
      resetForm() {
        const $form = refForm.value;
        if ($form) {
          return $form.reset();
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      validateForm() {
        const $form = refForm.value;
        if ($form) {
          return $form.validate();
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      validateFormField(field) {
        const $form = refForm.value;
        if ($form) {
          return $form.validateField(field);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      clearFormValidate(field) {
        const $form = refForm.value;
        if ($form) {
          return $form.clearValidate(field);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      homePage() {
        const {
          tablePage
        } = reactData;
        tablePage.currentPage = 1;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      homePageByEvent(evnt) {
        const $pager = refPager.value;
        if ($pager) {
          $pager.homePageByEvent(evnt);
        }
      },
      endPage() {
        const {
          tablePage
        } = reactData;
        const pageCount = computePageCount.value;
        tablePage.currentPage = pageCount;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      endPageByEvent(evnt) {
        const $pager = refPager.value;
        if ($pager) {
          $pager.endPageByEvent(evnt);
        }
      },
      getCurrentPage() {
        const {
          tablePage
        } = reactData;
        return tablePage.currentPage;
      },
      setCurrentPage(currentPage) {
        const {
          tablePage
        } = reactData;
        const pageCount = computePageCount.value;
        tablePage.currentPage = Math.min(pageCount, Math.max(1, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(currentPage)));
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      setCurrentPageByEvent(evnt, currentPage) {
        const $pager = refPager.value;
        if ($pager) {
          $pager.setCurrentPageByEvent(evnt, currentPage);
        }
      },
      getPageSize() {
        const {
          tablePage
        } = reactData;
        return tablePage.pageSize;
      },
      setPageSize(pageSize) {
        const {
          tablePage
        } = reactData;
        tablePage.pageSize = Math.max(1, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(pageSize));
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      setPageSizeByEvent(evnt, pageSize) {
        const $pager = refPager.value;
        if ($pager) {
          $pager.setPageSizeByEvent(evnt, pageSize);
        }
      },
      getProxyInfo() {
        const $xeTable = refTable.value;
        if (props.proxyConfig) {
          const {
            sortData
          } = reactData;
          return {
            data: $xeTable ? $xeTable.getFullData() : [],
            filter: reactData.filterData,
            form: getFormData(),
            sort: sortData.length ? sortData[0] : {},
            sorts: sortData,
            pager: reactData.tablePage,
            pendingRecords: $xeTable ? $xeTable.getPendingRecords() : []
          };
        }
        return null;
      },
      getCustomPagerData() {
        const {
          pagerConfig
        } = props;
        const {
          tablePage
        } = reactData;
        const pagerOpts = computePagerOpts.value;
        if (pagerConfig && isEnableConf(pagerOpts)) {
          return {
            pSize: tablePage.pageSize
          };
        }
        return {};
      }
      // setProxyInfo (options) {
      //   if (props.proxyConfig && options) {
      //     const { pager, form } = options
      //     const proxyOpts = computeProxyOpts.value
      //     if (pager) {
      //       if (pager.currentPage) {
      //         reactData.tablePage.currentPage = Number(pager.currentPage)
      //       }
      //       if (pager.pageSize) {
      //         reactData.tablePage.pageSize = Number(pager.pageSize)
      //       }
      //     }
      //     if (proxyOpts.form && form) {
      //       Object.assign(reactData.formData, form)
      //     }
      //   }
      //   return nextTick()
      // }
    };
    const gridPrivateMethods = {
      extendTableMethods,
      callSlot(slotFunc, params) {
        if (slotFunc) {
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(slotFunc)) {
            slotFunc = slots[slotFunc] || null;
          }
          if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(slotFunc)) {
            return getSlotVNs(slotFunc(params));
          }
        }
        return [];
      },
      /**
       * 获取需要排除的高度
       */
      getExcludeHeight() {
        const {
          height
        } = props;
        const {
          isZMax
        } = reactData;
        const el = refElem.value;
        if (el) {
          const formWrapper = refFormWrapper.value;
          const toolbarWrapper = refToolbarWrapper.value;
          const topWrapper = refTopWrapper.value;
          const bottomWrapper = refBottomWrapper.value;
          const pagerWrapper = refPagerWrapper.value;
          const parentEl = el.parentElement;
          let parentPaddingSize = 0;
          if (parentEl && (height === '100%' || height === 'auto')) {
            parentPaddingSize = isZMax ? 0 : getPaddingTopBottomSize(parentEl);
          }
          return parentPaddingSize + getPaddingTopBottomSize(el) + getOffsetHeight(formWrapper) + getOffsetHeight(toolbarWrapper) + getOffsetHeight(topWrapper) + getOffsetHeight(bottomWrapper) + getOffsetHeight(pagerWrapper);
        }
        return 0;
      },
      getParentHeight() {
        const el = refElem.value;
        if (el) {
          const parentEl = el.parentElement;
          return (reactData.isZMax ? getDomNode().visibleHeight : parentEl ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(getComputedStyle(parentEl).height) : 0) - gridPrivateMethods.getExcludeHeight();
        }
        return 0;
      },
      triggerToolbarCommitEvent(params, evnt) {
        const {
          code
        } = params;
        if (code) {
          const isUf = ['reload', 'delete', 'save'].includes(code);
          if (isUf) {
            internalData.uFoot = true;
          }
          const rest = $xeGrid.commitProxy(params, evnt).then(rest => {
            if (rest && rest.status && ['query', 'reload', 'delete', 'save'].includes(code)) {
              $xeGrid.dispatchEvent(code === 'delete' || code === 'save' ? `proxy-${code}` : 'proxy-query', {
                ...rest,
                isReload: code === 'reload'
              }, evnt);
            }
          });
          internalData.uFoot = false;
          if (isUf) {
            updateQueryFooter();
          }
          return rest;
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      triggerToolbarBtnEvent(button, evnt) {
        $xeGrid.triggerToolbarCommitEvent(button, evnt);
        $xeGrid.dispatchEvent('toolbar-button-click', {
          code: button.code,
          button
        }, evnt);
      },
      triggerToolbarTolEvent(tool, evnt) {
        $xeGrid.triggerToolbarCommitEvent(tool, evnt);
        $xeGrid.dispatchEvent('toolbar-tool-click', {
          code: tool.code,
          tool
        }, evnt);
      },
      triggerZoomEvent(evnt) {
        $xeGrid.zoom();
        $xeGrid.dispatchEvent('zoom', {
          type: reactData.isZMax ? 'max' : 'revert'
        }, evnt);
      }
    };
    Object.assign($xeGrid, gridExtendTableMethods, gridMethods, gridPrivateMethods, {
      // 检查插槽
      loadColumn(columns) {
        const $xeTable = refTable.value;
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(columns, column => {
          if (column.slots) {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(column.slots, func => {
              if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(func)) {
                if (!slots[func]) {
                  grid_errLog('vxe.error.notSlot', [func]);
                }
              }
            });
          }
        });
        if ($xeTable) {
          return $xeTable.loadColumn(columns);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      reloadColumn(columns) {
        $xeGrid.clearAll();
        return $xeGrid.loadColumn(columns);
      }
    });
    const renderVN = () => {
      const vSize = computeSize.value;
      const styles = computeStyles.value;
      const isLoading = computeIsLoading.value;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-grid', {
          [`size--${vSize}`]: vSize,
          'is--animat': !!props.animat,
          'is--round': props.round,
          'is--maximize': reactData.isZMax,
          'is--loading': isLoading
        }],
        style: styles
      }, renderLayout());
    };
    const columnFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.columns ? props.columns.length : -1, () => {
      columnFlag.value++;
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.columns, () => {
      columnFlag.value++;
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(columnFlag, () => {
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => $xeGrid.loadColumn(props.columns || []));
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.toolbarConfig, () => {
      initToolbar();
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeCustomCurrentPageFlag, () => {
      initPages('currentPage');
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeCustomPageSizeFlag, () => {
      initPages('pageSize');
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeCustomTotalFlag, () => {
      initPages('total');
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(() => props.proxyConfig, () => {
      initProxy();
    });
    grid_hooks.forEach(options => {
      const {
        setupGrid
      } = options;
      if (setupGrid) {
        const hookRest = setupGrid($xeGrid);
        if (hookRest && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isObject(hookRest)) {
          Object.assign($xeGrid, hookRest);
        }
      }
    });
    initPages();
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
        const {
          columns
        } = props;
        const proxyOpts = computeProxyOpts.value;
        if (props.formConfig) {
          if (!VxeUIFormComponent) {
            grid_errLog('vxe.error.reqComp', ['vxe-form']);
          }
        }
        if (props.pagerConfig) {
          if (!VxeUIPagerComponent) {
            grid_errLog('vxe.error.reqComp', ['vxe-pager']);
          }
        }
        // const { data, columns, proxyConfig } = props
        // const formOpts = computeFormOpts.value
        // if (isEnableConf(proxyConfig) && (data || (proxyOpts.form && formOpts.data))) {
        //   errLog('vxe.error.errConflicts', ['[grid] data', 'proxy-config'])
        // }
        if (proxyOpts.props) {
          grid_warnLog('vxe.error.delProp', ['proxy-config.props', 'proxy-config.response']);
        }
        if (columns && columns.length) {
          $xeGrid.loadColumn(columns);
        }
        initToolbar();
        initProxy();
      });
      grid_globalEvents.on($xeGrid, 'keydown', handleGlobalKeydownEvent);
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onBeforeUnmount)(() => {
      grid_globalEvents.off($xeGrid, 'keydown');
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(reactData, grid_createReactData());
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(internalData, grid_createInternalData());
    });
    $xeGrid.renderVN = renderVN;
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeGrid', $xeGrid);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeGantt', null);
    return $xeGrid;
  },
  render() {
    return this.renderVN();
  }
}));
;// ./packages/grid/index.ts


const VxeGrid = Object.assign({}, grid, {
  install(app) {
    app.component(grid.name, grid);
  }
});
if (core_.VxeUI.dynamicApp) {
  core_.VxeUI.dynamicApp.component(grid.name, grid);
}
core_.VxeUI.component(grid);
const Grid = VxeGrid;
/* harmony default export */ var packages_grid = ((/* unused pure expression or super */ null && (VxeGrid)));
;// ./packages/table/src/use/cell-view.ts


function useCellView(props) {
  const currColumn = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
    const {
      renderParams
    } = props;
    return renderParams.column;
  });
  const currRow = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
    const {
      renderParams
    } = props;
    return renderParams.row;
  });
  const cellOptions = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
    const {
      renderOpts
    } = props;
    return renderOpts.props || {};
  });
  const cellModel = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)({
    get() {
      const {
        renderParams
      } = props;
      const {
        row,
        column
      } = renderParams;
      return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, column.field);
    },
    set(value) {
      const {
        renderParams
      } = props;
      const {
        row,
        column
      } = renderParams;
      return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().set(row, column.field, value);
    }
  });
  return {
    currColumn,
    currRow,
    cellModel,
    cellOptions
  };
}
;// ./packages/table/src/use/index.ts

;// ./packages/table/index.ts



const VxeTable = Object.assign({}, table, {
  install(app) {
    app.component(table.name, table);
  }
});
const tableHandle = {
  useCellView: useCellView
};
if (core_.VxeUI.dynamicApp) {
  core_.VxeUI.dynamicApp.component(table.name, table);
}
core_.VxeUI.component(table);
core_.VxeUI.tableHandle = tableHandle;
const Table = VxeTable;
/* harmony default export */ var packages_table = ((/* unused pure expression or super */ null && (VxeTable)));
;// ./packages/toolbar/index.ts


const VxeToolbar = Object.assign({}, toolbar, {
  install(app) {
    app.component(toolbar.name, toolbar);
  }
});
if (core_.VxeUI.dynamicApp) {
  core_.VxeUI.dynamicApp.component(toolbar.name, toolbar);
}
core_.VxeUI.component(toolbar);
const Toolbar = VxeToolbar;
/* harmony default export */ var packages_toolbar = ((/* unused pure expression or super */ null && (VxeToolbar)));
;// ./packages/locale/lang/zh-CN.ts
/* harmony default export */ var zh_CN = ({
  vxe: {
    base: {
      pleaseInput: '请输入',
      pleaseSelect: '请选择',
      comma: ',',
      fullStop: '。'
    },
    loading: {
      text: '加载中...'
    },
    error: {
      downErr: '下载失败',
      errLargeData: '当绑定的数据量过大时,应该请使用 {0},否则可能会出现卡顿',
      groupFixed: '如果使用分组表头,冻结列必须按组设置',
      groupMouseRange: '分组表头与 "{0}" 不能同时使用,这可能会出现错误',
      groupTag: '分组列头应该使用 "{0}" 而不是 "{1}",这可能会出现错误',
      scrollErrProp: '启用虚拟滚动后不支持该参数 "{0}"',
      errConflicts: '参数 "{0}" 与 "{1}" 有冲突',
      modelConflicts: '绑定的字段值 "{0}" 与 "{1}" 存在冲突,将会出现错误',
      notSupportProp: '当启用参数 "{0}" 时不支持 "{1}",应该为 "{2}",否则将会出现错误',
      reqSupportProp: '当使用 "{0}" 时,应该设置 "{1}",否则可能会出现错误',
      notConflictProp: '当使用 "{0}" 时,应该设置 "{1}",否则可能会存在功能冲突',
      unableInsert: '无法插入到指定位置,请检查参数是否正确',
      useErr: '安装 "{0}" 模块时发生错误,可能顺序不正确,依赖的模块需要在 Table 之前安装',
      barUnableLink: '工具栏无法关联表格',
      expandContent: '展开行的插槽应该是 "content",请检查是否正确',
      reqComp: '缺少 "{0}" 组件,请检查是否正确安装。 https://vxeui.com/#/start/useUI/useGlobal',
      reqModule: '缺少 "{0}" 模块',
      reqProp: '缺少必要的 "{0}" 参数,这可能会导致出现错误',
      emptyProp: '参数 "{0}" 不允许为空',
      errProp: '不支持的参数 "{0}",可能为 "{1}"',
      colRepet: 'column.{0}="{1}" 重复了,这可能会导致某些功能无法使用',
      notFunc: '方法 "{0}" 不存在',
      errFunc: '参数 "{0}" 不是一个方法',
      notValidators: '全局校验 "{0}" 不存在',
      notFormats: '全局格式化 "{0}" 不存在',
      notCommands: '全局指令 "{0}" 不存在',
      notSlot: '插槽 "{0}" 不存在',
      noTree: '树结构不支持 "{0}"',
      noGroup: '数据分组后不支持 "{0}"',
      notProp: '不支持的参数 "{0}"',
      returnErr: '参数 "{0}" 的返回值期望是 "{1}" 实际是 "{2}"',
      notSupportReturn: '当返回值为 "{0}" 时的参数应该使用用 "{1}" 而不是 "{2}"',
      checkProp: '当数据量过大时可能会导致复选框卡顿,建议设置参数 "{0}" 提升渲染速度',
      coverProp: '"{0}" 的参数 "{1}" 重复定义,这可能会出现错误',
      uniField: '字段名 "{0}" 重复定义,这可能会出现错误',
      repeatKey: '主键重复 {0}="{1}",这可能会出现错误',
      repeatProp: '参数重复 {0}="{1}",这可能会出现错误',
      delFunc: '方法 "{0}" 已废弃,请使用 "{1}"',
      delProp: '参数 "{0}" 已废弃,请使用 "{1}"',
      delEvent: '事件 "{0}" 已废弃,请使用 "{1}"',
      removeProp: '参数 "{0}" 已废弃,不建议使用,这可能会导致出现错误',
      errFormat: '全局的格式化内容应该使用 "VXETable.formats" 定义,挂载 "formatter={0}" 的方式已不建议使用',
      notType: '不支持的文件类型 "{0}"',
      notExp: '该浏览器不支持导入/导出功能',
      impFields: '导入失败,请检查字段名和数据格式是否正确',
      treeNotImp: '树表格不支持导入',
      treeCrossDrag: '只能拖拽第一层级',
      treeDragChild: '父级不能拖拽到自己的子级中',
      reqPlugin: '扩展插件未安装 "{1}" https://vxeui.com/other{0}/#/{1}/start/npmInstall',
      errMaxRow: '超过支持的最大数据量 {0} 行,这可能会导致出现错误',
      useNew: '不建议使用 {0},请使用 {1}',
      errorVersion: '版本不匹配,当前版本 {0},最低支持版本为 {1}'
    },
    table: {
      emptyText: '暂无数据',
      allTitle: '全选/取消',
      seqTitle: '序号',
      actionTitle: '操作',
      confirmFilter: '筛选',
      resetFilter: '重置',
      allFilter: '全部',
      sortAsc: '升序:最低到最高',
      sortDesc: '降序:最高到最低',
      filter: '对所选的列启用筛选',
      impSuccess: '成功导入 {0} 条记录',
      expLoading: '正在导出中',
      expSuccess: '导出成功',
      expError: '导出失败',
      expFilename: '导出_{0}',
      expOriginFilename: '导出_源_{0}',
      customTitle: '个性化设置',
      customAll: '全部',
      customConfirm: '确认',
      customClose: '关闭',
      customCancel: '取消',
      customRestore: '恢复默认',
      maxFixedCol: '最大冻结列的数量不能超过 {0} 个',
      maxGroupCol: '最大分组字段的数量不能超过 {0} 个',
      dragTip: '移动:{0}',
      resizeColTip: '宽:{0} 像素',
      resizeRowTip: '高:{0} 像素',
      rowGroupContentTotal: '{0}({1})',
      menuLoading: '加载中...'
    },
    grid: {
      selectOneRecord: '请至少选择一条记录!',
      deleteSelectRecord: '您确定要删除所选记录吗?',
      removeSelectRecord: '您确定要移除所选记录吗?',
      dataUnchanged: '数据未改动!',
      delSuccess: '成功删除所选记录!',
      saveSuccess: '保存成功!',
      operError: '发生错误,操作失败!'
    },
    select: {
      clear: '清除',
      allChecked: '全选',
      total: '已选 {0} 项',
      close: '关闭',
      search: '搜索',
      loadingText: '加载中...',
      emptyText: '暂无数据',
      maxSize: '最大可选择的数量不能超过 {0} 个',
      overSizeErr: '已超出最大可选数量 {0} 个,超出部分将被忽略!',
      searchEmpty: '未匹配到数据!'
    },
    list: {
      allChecked: '全选',
      dragTip: '移动:{0}'
    },
    tree: {
      searchEmpty: '未匹配到数据!',
      dragTip: '移动:{0}'
    },
    treeSelect: {
      clearChecked: '清除',
      allChecked: '全选',
      allExpand: '全部展开',
      clearExpand: '全部收起',
      total: '已选 {0} 项',
      close: '关闭',
      search: '搜索',
      emptyText: '暂无数据'
    },
    pager: {
      goto: '前往',
      gotoTitle: '页数',
      pagesize: '{0}条/页',
      total: '共 {0} 条记录',
      pageClassifier: '页',
      homePage: '首页',
      homePageTitle: '首页',
      prevPage: '上一页',
      prevPageTitle: '上一页',
      nextPage: '下一页',
      nextPageTitle: '下一页',
      prevJump: '向上跳页',
      prevJumpTitle: '向上跳页',
      nextJump: '向下跳页',
      nextJumpTitle: '向下跳页',
      endPage: '末页',
      endPageTitle: '末页'
    },
    alert: {
      title: '系统提示'
    },
    button: {
      confirm: '确认',
      cancel: '取消',
      clear: '清除'
    },
    filter: {
      search: '搜索'
    },
    custom: {
      cstmTitle: '个性化设置',
      cstmRestore: '恢复默认',
      cstmCancel: '取消',
      cstmConfirm: '确定',
      cstmConfirmRestore: '请确认是否恢复成默认列配置?',
      cstmDragTarget: '移动:{0}',
      setting: {
        colSort: '排序',
        sortHelpTip: '点击图标开始拖动',
        colTitle: '列标题',
        colResizable: '列宽(像素)',
        colVisible: '是否显示',
        colFixed: '冻结列',
        colFixedMax: '冻结列({0})',
        colAlign: '对齐方式',
        colHeadAlign: '表头对齐方式',
        colFootAlign: '表尾对齐方式',
        fixedLeft: '左',
        fixedUnset: '无',
        fixedRight: '右',
        alignLeft: '左',
        alignCenter: '中',
        alignRight: '右',
        moveUp: '上移',
        moveDn: '下移',
        putTop: '置顶',
        putBottom: '置尾',
        moveUpTitle: '点击向上移动',
        moveDnTitle: '点击向下移动',
        putTopTitle: '点击置顶',
        putBottomTitle: '点击置尾',
        anLeftTitle: '左对齐',
        anCenterTitle: '居中',
        anRightTitle: '右对齐'
      }
    },
    import: {
      modes: {
        covering: '覆盖方式(直接覆盖表格数据)',
        insert: '底部追加(在表格的底部追加新数据)',
        insertTop: '顶部追加(在表格的顶部追加新数据)',
        insertBottom: '底部追加(在表格的底部追加新数据)'
      },
      impTitle: '导入数据',
      impFile: '文件名',
      impSelect: '选择文件',
      impType: '文件类型',
      impOpts: '参数设置',
      impMode: '导入模式',
      impConfirm: '导入',
      impCancel: '取消'
    },
    export: {
      types: {
        csv: 'CSV (逗号分隔)(*.csv)',
        html: '网页(*.html)',
        xml: 'XML 数据(*.xml)',
        txt: '文本文件(制表符分隔)(*.txt)',
        xls: 'Excel 97-2003 工作簿(*.xls)',
        xlsx: 'Excel 工作簿(*.xlsx)',
        pdf: 'PDF (*.pdf)'
      },
      modes: {
        empty: '空数据',
        current: '当前数据(当前页的数据)',
        selected: '选中数据(当前页选中的数据)',
        all: '全量数据(包括所有分页的数据)'
      },
      printTitle: '打印数据',
      expTitle: '导出数据',
      expName: '文件名',
      expNamePlaceholder: '请输入文件名',
      expSheetName: '标题',
      expSheetNamePlaceholder: '请输入标题',
      expType: '保存类型',
      expMode: '选择数据',
      expCurrentColumn: '全部字段',
      expColumn: '选择字段',
      widthMode: '列宽设置',
      wModeTitle: '设置打印时列宽的渲染方式',
      wdModes: {
        default: '默认',
        auto: '自适应(根据内容自适应列宽)',
        scale: '等比例(根据页面比例渲染列宽)'
      },
      expOpts: '参数设置',
      expOptHeader: '表头',
      expHeaderTitle: '是否需要表头',
      expOptFooter: '表尾',
      expFooterTitle: '是否需要表尾',
      expOptColgroup: '分组表头',
      expOptTitle: '列标题',
      expTitleTitle: '是否为列标题,否则显示为列的字段名',
      expColgroupTitle: '如果存在,则支持带有分组结构的表头',
      expOptMerge: '合并',
      expMergeTitle: '如果存在,则支持带有合并结构的单元格',
      expOptAllExpand: '展开树',
      expAllExpandTitle: '如果存在,则支持将带有层级结构的数据全部展开',
      expOptTreeAllExpand: '展开树',
      expTreeAllExpandTitle: '如果存在,则自动展开所有树层级',
      expOptRowGroupAllExpand: '展开分组',
      expRowGroupAllExpandTitle: '如果存在,则自动展开所有分组层级',
      expOptUseStyle: '样式',
      expUseStyleTitle: '如果存在,则支持带样式的单元格',
      expOptOriginal: '源数据',
      expOriginalTitle: '如果为源数据,则支持导入到表格中',
      expPrint: '打印',
      expConfirm: '导出',
      expCancel: '取消'
    },
    modal: {
      errTitle: '错误提示',
      zoomMin: '最小化',
      zoomIn: '最大化',
      zoomOut: '还原',
      close: '关闭',
      miniMaxSize: '最小化窗口的数量不能超过 {0} 个',
      footPropErr: 'show-footer 仅用于启用表尾,需配合 show-confirm-button | show-cancel-button | 插槽使用'
    },
    drawer: {
      close: '关闭'
    },
    form: {
      folding: '收起',
      unfolding: '展开'
    },
    toolbar: {
      import: '导入',
      export: '导出',
      print: '打印',
      refresh: '刷新',
      zoomIn: '全屏',
      zoomOut: '还原',
      custom: '个性化设置',
      customAll: '全部',
      customConfirm: '确认',
      customRestore: '重置',
      fixedLeft: '冻结在左侧',
      fixedRight: '冻结在右侧',
      cancelFixed: '取消冻结列'
    },
    iconPicker: {
      search: '搜索',
      emptyText: '暂无数据'
    },
    datePicker: {
      yearTitle: '{0} 年'
    },
    dateRangePicker: {
      pleaseRange: '请选择开始日期与结束日期'
    },
    input: {
      date: {
        m1: '01 月',
        m2: '02 月',
        m3: '03 月',
        m4: '04 月',
        m5: '05 月',
        m6: '06 月',
        m7: '07 月',
        m8: '08 月',
        m9: '09 月',
        m10: '10 月',
        m11: '11 月',
        m12: '12 月',
        quarterLabel: '{0} 年',
        monthLabel: '{0} 年',
        dayLabel: '{0} 年 {1}',
        labelFormat: {
          date: 'yyyy-MM-dd',
          time: 'HH:mm:ss',
          datetime: 'yyyy-MM-dd HH:mm:ss',
          week: 'yyyy 年第 WW 周',
          month: 'yyyy-MM',
          quarter: 'yyyy 年第 q 季度',
          year: 'yyyy'
        },
        weeks: {
          w: '',
          w0: '周日',
          w1: '周一',
          w2: '周二',
          w3: '周三',
          w4: '周四',
          w5: '周五',
          w6: '周六'
        },
        months: {
          m0: '一月',
          m1: '二月',
          m2: '三月',
          m3: '四月',
          m4: '五月',
          m5: '六月',
          m6: '七月',
          m7: '八月',
          m8: '九月',
          m9: '十月',
          m10: '十一月',
          m11: '十二月'
        },
        quarters: {
          q1: '第一季度',
          q2: '第二季度',
          q3: '第三季度',
          q4: '第四季度'
        }
      }
    },
    calendar: {
      yearLabel: '{0} 年',
      monthLabel: '{0} 月'
    },
    cascader: {
      clearChecked: '清除',
      allChecked: '全选',
      total: '已选 {0} 项',
      close: '关闭',
      search: '搜索'
    },
    numberInput: {
      currencySymbol: '¥'
    },
    imagePreview: {
      popupTitle: '预览',
      operBtn: {
        zoomOut: '缩小',
        zoomIn: '放大',
        pctFull: '等比例缩放',
        pct11: '显示原始尺寸',
        rotateLeft: '向左旋转',
        rotateRight: '向右旋转',
        print: '点击打印图片',
        download: '点击下载图片'
      }
    },
    upload: {
      fileBtnText: '点击或拖拽上传',
      imgBtnText: '点击或拖拽上传',
      dragPlaceholder: '请把文件拖放到这个区域即可上传',
      imgSizeHint: '单张{0}',
      imgCountHint: '最多{0}张',
      fileTypeHint: '支持 {0} 文件类型',
      fileSizeHint: '单个文件大小不超过{0}',
      fileCountHint: '最多可上传{0}个文件',
      uploadTypeErr: '文件类型不匹配!',
      overCountErr: '最多只能选择{0}个文件!',
      overCountExtraErr: '已超出最大数量{0}个,超出的{1}个文件将被忽略!',
      overSizeErr: '文件大小最大不能超过{0}!',
      manualUpload: '点击上传',
      reUpload: '重新上传',
      uploadProgress: '上传中 {0}%',
      uploadErr: '上传失败',
      uploadSuccess: '上传成功',
      moreBtnText: '更多({0})',
      moreImgBtnText: '图片({0})',
      moreFileBtnText: '文件({0})',
      viewItemTitle: '点击查看',
      morePopup: {
        readTitle: '查看列表',
        imageTitle: '上传图片',
        fileTitle: '上传文件'
      }
    },
    empty: {
      defText: '暂无数据'
    },
    colorPicker: {
      clear: '清除',
      confirm: '确认',
      copySuccess: '已复制到剪贴板:{0}',
      hex: '十六进制'
    },
    formDesign: {
      formName: '表单名称',
      defFormTitle: '未命名的表单',
      widgetPropTab: '控件属性',
      widgetFormTab: '表单属性',
      error: {
        wdFormUni: '该类型的控件在表单中只允许添加一个',
        wdSubUni: '该类型的控件在子表中只允许添加一个'
      },
      styleSetting: {
        btn: '样式设置',
        title: '表单的样式设置',
        layoutTitle: '控件布局',
        verticalLayout: '上下布局',
        horizontalLayout: '横向布局',
        styleTitle: '标题样式',
        boldTitle: '标题加粗',
        fontBold: '加粗',
        fontNormal: '常规',
        colonTitle: '显示冒号',
        colonVisible: '显示',
        colonHidden: '隐藏',
        alignTitle: '对齐方式',
        widthTitle: '标题宽度',
        alignLeft: '居左',
        alignRight: '居右',
        unitPx: '像素',
        unitPct: '百分比'
      },
      widget: {
        group: {
          base: '基础控件',
          layout: '布局控件',
          system: '系统控件',
          module: '模块控件',
          chart: '图表控件',
          advanced: '高级控件'
        },
        copyTitle: '副本_{0}',
        component: {
          input: '输入框',
          textarea: '文本域',
          select: '下拉选择',
          row: '一行多列',
          title: '标题',
          text: '文本',
          subtable: '子表',
          VxeSwitch: '是/否',
          VxeInput: '输入框',
          VxeNumberInput: '数字',
          VxeDatePicker: '日期',
          VxeTextarea: '文本域',
          VxeSelect: '下拉选择',
          VxeTreeSelect: '树形选择',
          VxeRadioGroup: '单选框',
          VxeCheckboxGroup: '复选框',
          VxeUploadFile: '文件',
          VxeUploadImage: '图片',
          VxeRate: '评分',
          VxeSlider: '滑块'
        }
      },
      widgetProp: {
        name: '控件名称',
        placeholder: '提示语',
        required: '必填校验',
        multiple: '允许多选',
        displaySetting: {
          name: '显示设置',
          pc: '电脑端',
          mobile: '手机端',
          visible: '显示',
          hidden: '隐藏'
        },
        dataSource: {
          name: '数据源',
          defValue: '选项{0}',
          addOption: '添加选项',
          batchEditOption: '批量编辑',
          batchEditTip: '每行对应一个选项,支持从表格、Excel、WPS 中直接复制粘贴。',
          batchEditSubTip: '每行对应一个选项,如果是分组,子项可以是空格或制表键开头,支持从表格、Excel、WPS 中直接复制粘贴。',
          buildOption: '生成选项'
        },
        rowProp: {
          colSize: '列数',
          col2: '两列',
          col3: '三列',
          col4: '四列',
          col6: '六列',
          layout: '布局'
        },
        textProp: {
          name: '内容',
          alignTitle: '对齐方式',
          alignLeft: '居左',
          alignCenter: '居中',
          alignRight: '居右',
          colorTitle: '字体颜色',
          sizeTitle: '字体大小',
          boldTitle: '字体加粗',
          fontNormal: '常规',
          fontBold: '加粗'
        },
        subtableProp: {
          seqTitle: '序号',
          showSeq: '显示序号',
          showCheckbox: '允许多选',
          errSubDrag: '子表不支持该控件,请使用其他控件',
          colPlace: '将控件拖拽进来'
        },
        uploadProp: {
          limitFileCount: '文件数量限制',
          limitFileSize: '文件大小限制',
          multiFile: '允许上传多个文件',
          limitImgCount: '图片数量限制',
          limitImgSize: '图片大小限制',
          multiImg: '允许上传多张图片'
        }
      }
    },
    listDesign: {
      fieldSettingTab: '字段设置',
      listSettingTab: '参数设置',
      searchTitle: '查询条件',
      listTitle: '列表字段',
      searchField: '查询字段',
      listField: '列表字段',
      activeBtn: {
        ActionButtonUpdate: '编辑',
        ActionButtonDelete: '删除'
      },
      search: {
        addBtn: '编辑',
        emptyText: '未配置查询条件',
        editPopupTitle: '编辑查询字段'
      },
      searchPopup: {
        colTitle: '标题',
        saveBtn: '保存'
      }
    },
    text: {
      copySuccess: '已复制到剪贴板',
      copyError: '当前环境不支持该操作'
    },
    countdown: {
      formats: {
        yyyy: '年',
        MM: '月',
        dd: '天',
        HH: '时',
        mm: '分',
        ss: '秒'
      }
    },
    contextMenu: {
      loadingText: '加载中...'
    },
    switch: {
      onText: '打开',
      offText: '关闭'
    },
    gantt: {
      tFullFormat: {
        year: '{yyyy}年',
        quarter: '{yyyy}年第{q}季度',
        month: '{yyyy}年{MM}月',
        week: '{yyyy}年第{W}周',
        day: '{yyyy}年{MM}月 {eLabel}',
        date: '{yyyy}年{MM}月{dd}日',
        hour: '{yyyy}年{MM}月{dd}日{HH}时',
        minute: '{yyyy}年{MM}月{dd}日{HH}时{mm}分',
        second: '{yyyy}年{MM}月{dd}日{HH}时{mm}分{ss}秒'
      },
      tSimpleFormat: {
        year: '{yyyy}年',
        quarter: '{q}季度',
        month: '{M}月',
        week: '{W}周',
        day: '{eLabel}',
        date: '{d}',
        hour: '{HH}',
        minute: '{mm}',
        second: '{ss}'
      },
      stepFormat: {
        year: '{start.yyyy}~{end.yyyy}年',
        quarter: '{start.q}~{end.q}季度',
        month: '{start.M}~{end.M}月',
        week: '{start.W}~{end.W}周',
        day: '{eStartLabel}~{eEndLabel}',
        date: '{start.d}~{end.d}',
        hour: '{start.HH}~{end.HH}',
        minute: '{start.mm}~{end.mm}',
        second: '{start.ss}~{end.ss}'
      },
      dayss: {
        w0: '日',
        w1: '一',
        w2: '二',
        w3: '三',
        w4: '四',
        w5: '五',
        w6: '六'
      },
      days: {
        w0: '日',
        w1: '一',
        w2: '二',
        w3: '三',
        w4: '四',
        w5: '五',
        w6: '六'
      }
    },
    plugins: {
      extendCellArea: {
        area: {
          mergeErr: '无法对合并单元格进行该操作',
          multiErr: '无法对多重选择区域进行该操作',
          selectErr: '无法操作指定区域的单元格',
          extendErr: '如果延伸的区域包含被合并的单元格,所有合并的单元格需大小相同',
          pasteMultiErr: '无法粘贴,需要相同大小的复制的区域和粘贴的区域才能执行此操作',
          cpInvalidErr: '该操作无法进行,您选择的区域中存在被禁止的列({0})'
        },
        fnr: {
          title: '查找和替换',
          titleFd: '查找',
          titleRe: '替换',
          findLabel: '查找',
          replaceLabel: '替换',
          findTitle: '查找内容:',
          replaceTitle: '替换为:',
          tabs: {
            find: '查找',
            replace: '替换'
          },
          filter: {
            re: '正则表达式',
            whole: '全词匹配',
            sensitive: '区分大小写'
          },
          btns: {
            findNext: '查找下一个',
            findAll: '查找全部',
            replace: '替换',
            replaceAll: '替换全部',
            cancel: '取消'
          },
          header: {
            seq: '#',
            cell: '单元格',
            value: '值'
          },
          body: {
            row: '行:{0}',
            col: '列:{0}'
          },
          empty: '(空值)',
          reError: '无效的正则表达式',
          recordCount: '已找到 {0} 个单元格',
          notCell: '找不到匹配的单元格',
          replaceSuccess: '成功替换 {0} 个单元格'
        }
      },
      extendPivotTable: {
        aggregation: {
          grouping: '分组',
          values: '值',
          groupPlaceholder: '拖至此处进行分组',
          valuesPlaceholder: '拖至此处进行聚合',
          dragExistCol: '该列已存在',
          sortHelpTip: '点击图标开始拖动'
        },
        aggFuncs: {
          sum: '求和',
          count: '计数',
          avg: '平均值',
          min: '最小值',
          max: '最大值',
          first: '首个值',
          last: '末尾值'
        }
      },
      filterComplexInput: {
        menus: {
          fixedColumn: '冻结列',
          fixedGroup: '冻结分组',
          cancelFixed: '取消冻结',
          fixedLeft: '冻结左侧',
          fixedRight: '冻结右侧'
        },
        cases: {
          equal: '等于',
          gt: '大于',
          lt: '小于',
          begin: '开头是',
          endin: '结尾是',
          include: '包含',
          isSensitive: '区分大小写'
        }
      },
      filterCombination: {
        menus: {
          sort: '排序',
          clearSort: '清除排序',
          sortAsc: '升序',
          sortDesc: '降序',
          fixedColumn: '冻结列',
          fixedGroup: '冻结分组',
          cancelFixed: '取消冻结',
          fixedLeft: '冻结左侧',
          fixedRight: '冻结右侧',
          clearFilter: '清除筛选',
          textOption: '文本筛选',
          numberOption: '数值筛选',
          dateOption: '日期筛选'
        },
        popup: {
          title: '自定义筛选的方式',
          currColumnTitle: '显示行:',
          and: '与',
          or: '或',
          describeHtml: '可用 ? 代表单个字符<br/>用 * 代表任意多个字符'
        },
        cases: {
          equal: '等于',
          unequal: '不等于',
          gt: '大于',
          ge: '大于或等于',
          lt: '小于',
          le: '小于或等于',
          begin: '开头是',
          notbegin: '开头不是',
          endin: '结尾是',
          notendin: '结尾不是',
          include: '包含',
          exclude: '不包含',
          between: '介于',
          isAfter: '在以下日期之后',
          eqAfter: '在以下日期之后或与之相同',
          isBefore: '在以下日期之前',
          eqBefore: '在以下日期之前或与之相同',
          top10: '前10项',
          aboveAverage: '高于平均值',
          belowAverage: '低于平均值',
          before: '之前',
          after: '之后',
          tomorrow: '明天',
          today: '今天',
          yesterday: '昨天',
          nextWeek: '下周',
          thisWeek: '本周',
          lastWeek: '上周',
          nextMonth: '下月',
          thisMonth: '本月',
          lastMonth: '上月',
          nextYear: '明年',
          thisYear: '今年',
          lastYear: '去年',
          yearToDate: '本年度截止到现在',
          custom: '自定义筛选',
          insensitive: '不区分大小写',
          isSensitive: '区分大小写'
        },
        empty: '(空白)',
        notData: '无匹配项'
      }
    },
    pro: {
      area: {
        mergeErr: '无法对合并单元格进行该操作',
        multiErr: '无法对多重选择区域进行该操作',
        extendErr: '如果延伸的区域包含被合并的单元格,所有合并的单元格需大小相同',
        pasteMultiErr: '无法粘贴,需要相同大小的复制的区域和粘贴的区域才能执行此操作'
      },
      fnr: {
        title: '查找和替换',
        titleFd: '查找',
        titleRe: '替换',
        findLabel: '查找',
        replaceLabel: '替换',
        findTitle: '查找内容:',
        replaceTitle: '替换为:',
        tabs: {
          find: '查找',
          replace: '替换'
        },
        filter: {
          re: '正则表达式',
          whole: '全词匹配',
          sensitive: '区分大小写'
        },
        btns: {
          findNext: '查找下一个',
          findAll: '查找全部',
          replace: '替换',
          replaceAll: '替换全部',
          cancel: '取消'
        },
        header: {
          seq: '#',
          cell: '单元格',
          value: '值'
        },
        empty: '(空值)',
        reError: '无效的正则表达式',
        recordCount: '已找到 {0} 个单元格',
        notCell: '找不到匹配的单元格',
        replaceSuccess: '成功替换 {0} 个单元格'
      }
    },
    renderer: {
      search: '搜索',
      cases: {
        equal: '等于',
        unequal: '不等于',
        gt: '大于',
        ge: '大于或等于',
        lt: '小于',
        le: '小于或等于',
        begin: '开头是',
        notbegin: '开头不是',
        endin: '结尾是',
        notendin: '结尾不是',
        include: '包含',
        exclude: '不包含',
        between: '介于',
        top10: '前10项',
        aboveAverage: '高于平均值',
        belowAverage: '低于平均值',
        custom: '自定义筛选',
        insensitive: '不区分大小写',
        isSensitive: '区分大小写'
      },
      combination: {
        menus: {
          sort: '排序',
          clearSort: '清除排序',
          sortAsc: '升序',
          sortDesc: '降序',
          fixedColumn: '冻结列',
          fixedGroup: '冻结分组',
          cancelFixed: '取消冻结',
          fixedLeft: '冻结到左侧',
          fixedRight: '冻结到右侧',
          clearFilter: '清除筛选',
          textOption: '文本筛选',
          numberOption: '数值筛选',
          dateOption: '日期筛选'
        },
        popup: {
          title: '自定义筛选的方式',
          currColumnTitle: '显示行:',
          and: '与',
          or: '或',
          describeHtml: '可用 ? 代表单个字符<br/>用 * 代表任意多个字符'
        },
        empty: '(空白)',
        notData: '无匹配项'
      }
    }
  }
});
;// ./packages/components.ts







const components = [VxeColumn, VxeColgroup, VxeGrid, VxeTable, VxeToolbar];
// 默认安装
function install(app, options) {
  core_.VxeUI.setConfig(options);
  components.forEach(component => component.install(app));
}
// 保留兼容老版本
if (!core_.VxeUI.hasLanguage('zh-CN')) {
  const defaultLanguage = 'zh-CN';
  core_.VxeUI.setI18n(defaultLanguage, zh_CN);
  core_.VxeUI.setLanguage(defaultLanguage);
}
core_.VxeUI.setTheme('light');

// Components





;// ./index.ts


if (typeof window !== 'undefined' && window.Vue) {
  if (!window.VXETable) {
    window.VXETable = components_namespaceObject;
  }
}

/* harmony default export */ var index = (components_namespaceObject);
;// ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js


/* harmony default export */ var entry_lib = (index);


/******/ 	return __webpack_exports__;
/******/ })()
;
});