UNPKG

vxe-gantt

Version:
11,084 lines • 397 kB
(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory(require("vue"), require("@vxe-ui/core"), require("vxe-table"), require("xe-utils"));
	else if(typeof define === 'function' && define.amd)
		define([, "@vxe-ui/core", "vxe-table", "xe-utils"], factory);
	else if(typeof exports === 'object')
		exports["VxeUIGantt"] = factory(require("vue"), require("@vxe-ui/core"), require("vxe-table"), require("xe-utils"));
	else
		root["VxeUIGantt"] = factory(root["Vue"], root["VxeUI"], root["VxeUITable"], root["XEUtils"]);
})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__9274__, __WEBPACK_EXTERNAL_MODULE__4345__, __WEBPACK_EXTERNAL_MODULE__1037__, __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__;

/***/ }),

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

module.exports = __WEBPACK_EXTERNAL_MODULE__1037__;

/***/ }),

/***/ 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');
};


/***/ }),

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


var has = (__webpack_require__(4402).has);

// Perform ? RequireInternalSlot(M, [[SetData]])
module.exports = function (it) {
  has(it);
  return it;
};


/***/ }),

/***/ 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;
  }
};


/***/ }),

/***/ 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
};


/***/ }),

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


var uncurryThis = __webpack_require__(9504);
var aCallable = __webpack_require__(9306);

module.exports = function (object, key, method) {
  try {
    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));
  } catch (error) { /* empty */ }
};


/***/ }),

/***/ 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);
};


/***/ }),

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


var aCallable = __webpack_require__(9306);
var anObject = __webpack_require__(8551);
var call = __webpack_require__(9565);
var toIntegerOrInfinity = __webpack_require__(1291);
var getIteratorDirect = __webpack_require__(1767);

var INVALID_SIZE = 'Invalid size';
var $RangeError = RangeError;
var $TypeError = TypeError;
var max = Math.max;

var SetRecord = function (set, intSize) {
  this.set = set;
  this.size = max(intSize, 0);
  this.has = aCallable(set.has);
  this.keys = aCallable(set.keys);
};

SetRecord.prototype = {
  getIterator: function () {
    return getIteratorDirect(anObject(call(this.keys, this.set)));
  },
  includes: function (it) {
    return call(this.has, this.set, it);
  }
};

// `GetSetRecord` abstract operation
// https://tc39.es/proposal-set-methods/#sec-getsetrecord
module.exports = function (obj) {
  anObject(obj);
  var numSize = +obj.size;
  // NOTE: If size is undefined, then numSize will be NaN
  // eslint-disable-next-line no-self-compare -- NaN check
  if (numSize !== numSize) throw new $TypeError(INVALID_SIZE);
  var intSize = toIntegerOrInfinity(numSize);
  if (intSize < 0) throw new $RangeError(INVALID_SIZE);
  return new SetRecord(obj, intSize);
};


/***/ }),

/***/ 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));
};


/***/ }),

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


var call = __webpack_require__(9565);

module.exports = function (record, fn, ITERATOR_INSTEAD_OF_RECORD) {
  var iterator = ITERATOR_INSTEAD_OF_RECORD ? record : record.iterator;
  var next = record.next;
  var step, result;
  while (!(step = call(next, iterator)).done) {
    result = fn(step.value);
    if (result !== undefined) return result;
  }
};


/***/ }),

/***/ 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');


/***/ }),

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


var uncurryThis = __webpack_require__(9504);

// eslint-disable-next-line es/no-map -- safe
var MapPrototype = Map.prototype;

module.exports = {
  // eslint-disable-next-line es/no-map -- safe
  Map: Map,
  set: uncurryThis(MapPrototype.set),
  get: uncurryThis(MapPrototype.get),
  has: uncurryThis(MapPrototype.has),
  remove: uncurryThis(MapPrototype['delete']),
  proto: MapPrototype
};


/***/ }),

/***/ 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;
};


/***/ }),

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


var SetHelpers = __webpack_require__(4402);
var iterate = __webpack_require__(8469);

var Set = SetHelpers.Set;
var add = SetHelpers.add;

module.exports = function (set) {
  var result = new Set();
  iterate(set, function (it) {
    add(result, it);
  });
  return result;
};


/***/ }),

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


var aSet = __webpack_require__(7080);
var SetHelpers = __webpack_require__(4402);
var clone = __webpack_require__(9286);
var size = __webpack_require__(5170);
var getSetRecord = __webpack_require__(3789);
var iterateSet = __webpack_require__(8469);
var iterateSimple = __webpack_require__(507);

var has = SetHelpers.has;
var remove = SetHelpers.remove;

// `Set.prototype.difference` method
// https://tc39.es/ecma262/#sec-set.prototype.difference
module.exports = function difference(other) {
  var O = aSet(this);
  var otherRec = getSetRecord(other);
  var result = clone(O);
  if (size(result) <= otherRec.size) iterateSet(result, function (e) {
    if (otherRec.includes(e)) remove(result, e);
  });
  else iterateSimple(otherRec.getIterator(), function (e) {
    if (has(result, e)) remove(result, e);
  });
  return result;
};


/***/ }),

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


var uncurryThis = __webpack_require__(9504);

// eslint-disable-next-line es/no-set -- safe
var SetPrototype = Set.prototype;

module.exports = {
  // eslint-disable-next-line es/no-set -- safe
  Set: Set,
  add: uncurryThis(SetPrototype.add),
  has: uncurryThis(SetPrototype.has),
  remove: uncurryThis(SetPrototype['delete']),
  proto: SetPrototype
};


/***/ }),

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


var aSet = __webpack_require__(7080);
var SetHelpers = __webpack_require__(4402);
var size = __webpack_require__(5170);
var getSetRecord = __webpack_require__(3789);
var iterateSet = __webpack_require__(8469);
var iterateSimple = __webpack_require__(507);

var Set = SetHelpers.Set;
var add = SetHelpers.add;
var has = SetHelpers.has;

// `Set.prototype.intersection` method
// https://tc39.es/ecma262/#sec-set.prototype.intersection
module.exports = function intersection(other) {
  var O = aSet(this);
  var otherRec = getSetRecord(other);
  var result = new Set();

  if (size(O) > otherRec.size) {
    iterateSimple(otherRec.getIterator(), function (e) {
      if (has(O, e)) add(result, e);
    });
  } else {
    iterateSet(O, function (e) {
      if (otherRec.includes(e)) add(result, e);
    });
  }

  return result;
};


/***/ }),

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


var aSet = __webpack_require__(7080);
var has = (__webpack_require__(4402).has);
var size = __webpack_require__(5170);
var getSetRecord = __webpack_require__(3789);
var iterateSet = __webpack_require__(8469);
var iterateSimple = __webpack_require__(507);
var iteratorClose = __webpack_require__(9539);

// `Set.prototype.isDisjointFrom` method
// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom
module.exports = function isDisjointFrom(other) {
  var O = aSet(this);
  var otherRec = getSetRecord(other);
  if (size(O) <= otherRec.size) return iterateSet(O, function (e) {
    if (otherRec.includes(e)) return false;
  }, true) !== false;
  var iterator = otherRec.getIterator();
  return iterateSimple(iterator, function (e) {
    if (has(O, e)) return iteratorClose(iterator.iterator, 'normal', false);
  }) !== false;
};


/***/ }),

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


var aSet = __webpack_require__(7080);
var size = __webpack_require__(5170);
var iterate = __webpack_require__(8469);
var getSetRecord = __webpack_require__(3789);

// `Set.prototype.isSubsetOf` method
// https://tc39.es/ecma262/#sec-set.prototype.issubsetof
module.exports = function isSubsetOf(other) {
  var O = aSet(this);
  var otherRec = getSetRecord(other);
  if (size(O) > otherRec.size) return false;
  return iterate(O, function (e) {
    if (!otherRec.includes(e)) return false;
  }, true) !== false;
};


/***/ }),

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


var aSet = __webpack_require__(7080);
var has = (__webpack_require__(4402).has);
var size = __webpack_require__(5170);
var getSetRecord = __webpack_require__(3789);
var iterateSimple = __webpack_require__(507);
var iteratorClose = __webpack_require__(9539);

// `Set.prototype.isSupersetOf` method
// https://tc39.es/ecma262/#sec-set.prototype.issupersetof
module.exports = function isSupersetOf(other) {
  var O = aSet(this);
  var otherRec = getSetRecord(other);
  if (size(O) < otherRec.size) return false;
  var iterator = otherRec.getIterator();
  return iterateSimple(iterator, function (e) {
    if (!has(O, e)) return iteratorClose(iterator.iterator, 'normal', false);
  }) !== false;
};


/***/ }),

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


var uncurryThis = __webpack_require__(9504);
var iterateSimple = __webpack_require__(507);
var SetHelpers = __webpack_require__(4402);

var Set = SetHelpers.Set;
var SetPrototype = SetHelpers.proto;
var forEach = uncurryThis(SetPrototype.forEach);
var keys = uncurryThis(SetPrototype.keys);
var next = keys(new Set()).next;

module.exports = function (set, fn, interruptible) {
  return interruptible ? iterateSimple({ iterator: keys(set), next: next }, fn) : forEach(set, fn);
};


/***/ }),

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


var getBuiltIn = __webpack_require__(7751);

var createSetLike = function (size) {
  return {
    size: size,
    has: function () {
      return false;
    },
    keys: function () {
      return {
        next: function () {
          return { done: true };
        }
      };
    }
  };
};

var createSetLikeWithInfinitySize = function (size) {
  return {
    size: size,
    has: function () {
      return true;
    },
    keys: function () {
      throw new Error('e');
    }
  };
};

module.exports = function (name, callback) {
  var Set = getBuiltIn('Set');
  try {
    new Set()[name](createSetLike(0));
    try {
      // late spec change, early WebKit ~ Safari 17 implementation does not pass it
      // https://github.com/tc39/proposal-set-methods/pull/88
      // also covered engines with
      // https://bugs.webkit.org/show_bug.cgi?id=272679
      new Set()[name](createSetLike(-1));
      return false;
    } catch (error2) {
      if (!callback) return true;
      // early V8 implementation bug
      // https://issues.chromium.org/issues/351332634
      try {
        new Set()[name](createSetLikeWithInfinitySize(-Infinity));
        return false;
      } catch (error) {
        var set = new Set([1, 2]);
        return callback(set[name](createSetLikeWithInfinitySize(Infinity)));
      }
    }
  } catch (error) {
    return false;
  }
};


/***/ }),

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


// Should get iterator record of a set-like object before cloning this
// https://bugs.webkit.org/show_bug.cgi?id=289430
module.exports = function (METHOD_NAME) {
  try {
    // eslint-disable-next-line es/no-set -- needed for test
    var baseSet = new Set();
    var setLike = {
      size: 0,
      has: function () { return true; },
      keys: function () {
        // eslint-disable-next-line es/no-object-defineproperty -- needed for test
        return Object.defineProperty({}, 'next', {
          get: function () {
            baseSet.clear();
            baseSet.add(4);
            return function () {
              return { done: true };
            };
          }
        });
      }
    };
    var result = baseSet[METHOD_NAME](setLike);

    return result.size === 1 && result.values().next().value === 4;
  } catch (error) {
    return false;
  }
};


/***/ }),

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


var uncurryThisAccessor = __webpack_require__(6706);
var SetHelpers = __webpack_require__(4402);

module.exports = uncurryThisAccessor(SetHelpers.proto, 'size', 'get') || function (set) {
  return set.size;
};


/***/ }),

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


var aSet = __webpack_require__(7080);
var SetHelpers = __webpack_require__(4402);
var clone = __webpack_require__(9286);
var getSetRecord = __webpack_require__(3789);
var iterateSimple = __webpack_require__(507);

var add = SetHelpers.add;
var has = SetHelpers.has;
var remove = SetHelpers.remove;

// `Set.prototype.symmetricDifference` method
// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference
module.exports = function symmetricDifference(other) {
  var O = aSet(this);
  var keysIter = getSetRecord(other).getIterator();
  var result = clone(O);
  iterateSimple(keysIter, function (e) {
    if (has(O, e)) remove(result, e);
    else add(result, e);
  });
  return result;
};


/***/ }),

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


var aSet = __webpack_require__(7080);
var add = (__webpack_require__(4402).add);
var clone = __webpack_require__(9286);
var getSetRecord = __webpack_require__(3789);
var iterateSimple = __webpack_require__(507);

// `Set.prototype.union` method
// https://tc39.es/ecma262/#sec-set.prototype.union
module.exports = function union(other) {
  var O = aSet(this);
  var keysIter = getSetRecord(other).getIterator();
  var result = clone(O);
  iterateSimple(keysIter, function (it) {
    add(result, it);
  });
  return result;
};


/***/ }),

/***/ 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
});


/***/ }),

/***/ 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
    });
  }
});


/***/ }),

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


var $ = __webpack_require__(6518);
var aCallable = __webpack_require__(9306);
var MapHelpers = __webpack_require__(2248);
var IS_PURE = __webpack_require__(6395);

var get = MapHelpers.get;
var has = MapHelpers.has;
var set = MapHelpers.set;

// `Map.prototype.getOrInsertComputed` method
// https://tc39.es/ecma262/#sec-map.prototype.getorinsertcomputed
$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
  getOrInsertComputed: function getOrInsertComputed(key, callbackfn) {
    var hasKey = has(this, key);
    aCallable(callbackfn);
    if (hasKey) return get(this, key);
    // CanonicalizeKeyedCollectionKey
    if (key === 0 && 1 / key === -Infinity) key = 0;
    var value = callbackfn(key);
    set(this, key, value);
    return value;
  }
});


/***/ }),

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


var $ = __webpack_require__(6518);
var MapHelpers = __webpack_require__(2248);
var IS_PURE = __webpack_require__(6395);

var get = MapHelpers.get;
var has = MapHelpers.has;
var set = MapHelpers.set;

// `Map.prototype.getOrInsert` method
// https://tc39.es/ecma262/#sec-map.prototype.getorinsert
$({ target: 'Map', proto: true, real: true, forced: IS_PURE }, {
  getOrInsert: function getOrInsert(key, value) {
    if (has(this, key)) return get(this, key);
    set(this, key, value);
    return value;
  }
});


/***/ }),

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


var $ = __webpack_require__(6518);
var difference = __webpack_require__(3440);
var fails = __webpack_require__(9039);
var setMethodAcceptSetLike = __webpack_require__(4916);

var SET_LIKE_INCORRECT_BEHAVIOR = !setMethodAcceptSetLike('difference', function (result) {
  return result.size === 0;
});

var FORCED = SET_LIKE_INCORRECT_BEHAVIOR || fails(function () {
  // https://bugs.webkit.org/show_bug.cgi?id=288595
  var setLike = {
    size: 1,
    has: function () { return true; },
    keys: function () {
      var index = 0;
      return {
        next: function () {
          var done = index++ > 1;
          if (baseSet.has(1)) baseSet.clear();
          return { done: done, value: 2 };
        }
      };
    }
  };
  // eslint-disable-next-line es/no-set -- testing
  var baseSet = new Set([1, 2, 3, 4]);
  // eslint-disable-next-line es/no-set-prototype-difference -- testing
  return baseSet.difference(setLike).size !== 3;
});

// `Set.prototype.difference` method
// https://tc39.es/ecma262/#sec-set.prototype.difference
$({ target: 'Set', proto: true, real: true, forced: FORCED }, {
  difference: difference
});


/***/ }),

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


var $ = __webpack_require__(6518);
var fails = __webpack_require__(9039);
var intersection = __webpack_require__(8750);
var setMethodAcceptSetLike = __webpack_require__(4916);

var INCORRECT = !setMethodAcceptSetLike('intersection', function (result) {
  return result.size === 2 && result.has(1) && result.has(2);
}) || fails(function () {
  // eslint-disable-next-line es/no-array-from, es/no-set, es/no-set-prototype-intersection -- testing
  return String(Array.from(new Set([1, 2, 3]).intersection(new Set([3, 2])))) !== '3,2';
});

// `Set.prototype.intersection` method
// https://tc39.es/ecma262/#sec-set.prototype.intersection
$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
  intersection: intersection
});


/***/ }),

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


var $ = __webpack_require__(6518);
var isDisjointFrom = __webpack_require__(4449);
var setMethodAcceptSetLike = __webpack_require__(4916);

var INCORRECT = !setMethodAcceptSetLike('isDisjointFrom', function (result) {
  return !result;
});

// `Set.prototype.isDisjointFrom` method
// https://tc39.es/ecma262/#sec-set.prototype.isdisjointfrom
$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
  isDisjointFrom: isDisjointFrom
});


/***/ }),

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


var $ = __webpack_require__(6518);
var isSubsetOf = __webpack_require__(3838);
var setMethodAcceptSetLike = __webpack_require__(4916);

var INCORRECT = !setMethodAcceptSetLike('isSubsetOf', function (result) {
  return result;
});

// `Set.prototype.isSubsetOf` method
// https://tc39.es/ecma262/#sec-set.prototype.issubsetof
$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
  isSubsetOf: isSubsetOf
});


/***/ }),

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


var $ = __webpack_require__(6518);
var isSupersetOf = __webpack_require__(8527);
var setMethodAcceptSetLike = __webpack_require__(4916);

var INCORRECT = !setMethodAcceptSetLike('isSupersetOf', function (result) {
  return !result;
});

// `Set.prototype.isSupersetOf` method
// https://tc39.es/ecma262/#sec-set.prototype.issupersetof
$({ target: 'Set', proto: true, real: true, forced: INCORRECT }, {
  isSupersetOf: isSupersetOf
});


/***/ }),

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


var $ = __webpack_require__(6518);
var symmetricDifference = __webpack_require__(3650);
var setMethodGetKeysBeforeCloning = __webpack_require__(9835);
var setMethodAcceptSetLike = __webpack_require__(4916);

var FORCED = !setMethodAcceptSetLike('symmetricDifference') || !setMethodGetKeysBeforeCloning('symmetricDifference');

// `Set.prototype.symmetricDifference` method
// https://tc39.es/ecma262/#sec-set.prototype.symmetricdifference
$({ target: 'Set', proto: true, real: true, forced: FORCED }, {
  symmetricDifference: symmetricDifference
});


/***/ }),

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


var $ = __webpack_require__(6518);
var union = __webpack_require__(4204);
var setMethodGetKeysBeforeCloning = __webpack_require__(9835);
var setMethodAcceptSetLike = __webpack_require__(4916);

var FORCED = !setMethodAcceptSetLike('union') || !setMethodGetKeysBeforeCloning('union');

// `Set.prototype.union` method
// https://tc39.es/ecma262/#sec-set.prototype.union
$({ target: 'Set', proto: true, real: true, forced: FORCED }, {
  union: union
});


/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// 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__, {
  Gantt: function() { return /* reexport */ Gantt; },
  VxeGantt: function() { return /* reexport */ VxeGantt; },
  VxeGanttDependencyType: function() { return /* reexport */ VxeGanttDependencyType; },
  VxeGanttTaskType: function() { return /* reexport */ VxeGanttTaskType; },
  VxeUI: function() { return /* reexport */ ui; },
  "default": function() { return /* binding */ entry_lib; },
  install: function() { return /* reexport */ install; }
});

// NAMESPACE OBJECT: ./packages/components.ts
var components_namespaceObject = {};
__webpack_require__.r(components_namespaceObject);
__webpack_require__.d(components_namespaceObject, {
  Gantt: function() { return Gantt; },
  VxeGantt: function() { return VxeGantt; },
  VxeGanttDependencyType: function() { return VxeGanttDependencyType; },
  VxeGanttTaskType: function() { return VxeGanttTaskType; },
  VxeUI: function() { return ui; },
  install: function() { return install; }
});

;// ./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);
;// ./packages/ui/index.ts

const {
  setConfig,
  setIcon
} = core_.VxeUI;
core_.VxeUI.ganttVersion = "4.8.1";
const ymdFormat = 'yyyy-MM-dd';
const ymdhmsFormat = 'yyyy-MM-dd HH:mm:ss';
setConfig({
  gantt: {
    // 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: null,
        result: 'result',
        total: 'page.total',
        message: 'message'
      }
      // beforeItem: null,
      // beforeColumn: null,
      // beforeQuery: null,
      // afterQuery: null,
      // beforeDelete: null,
      // afterDelete: null,
      // beforeSave: null,
      // afterSave: null
    },
    taskBarTooltipConfig: {
      enterable: true
    },
    taskLinkConfig: {
      enabled: true,
      isHover: true,
      showArrow: true
    },
    taskViewScaleConfig: {
      year: {
        valueFormat: ymdFormat
      },
      quarter: {
        valueFormat: ymdFormat
      },
      month: {
        valueFormat: ymdFormat
      },
      week: {
        startDay: 1,
        valueFormat: ymdFormat
      },
      day: {
        valueFormat: ymdFormat
      },
      date: {
        valueFormat: ymdFormat
      },
      hour: {
        valueFormat: ymdhmsFormat
      },
      minute: {
        valueFormat: ymdhmsFormat
      },
      second: {
        valueFormat: ymdhmsFormat
      }
    },
    taskViewConfig: {
      showNowLine: true,
      gridding: {
        leftSpacing: 1,
        rightSpacing: 1
      }
    },
    taskSplitConfig: {
      enabled: true,
      resize: true,
      autoHideCollapseButton: true,
      showCollapseTableButton: true,
      showCollapseTaskButton: true
    },
    taskBarSubviewConfig: {
      // showOverview: false
    },
    taskBarMoveConfig: {
      isLimitByLink: true
    },
    taskBarResizeConfig: {
      minWidthSize: 0.5,
      isLimitByLink: true
    },
    taskBarMoveTooltipConfig: {
      enterable: true,
      enterDelay: 0
    },
    taskBarResizeTooltipConfig: {
      enterable: true,
      enterDelay: 0
    }
  }
});
const iconPrefix = 'vxe-icon-';
setIcon({
  // gantt
  GANTT_VIEW_LEFT_OPEN: iconPrefix + 'arrow-left',
  GANTT_VIEW_LEFT_CLOSE: iconPrefix + 'arrow-right',
  GANTT_VIEW_RIGHT_OPEN: iconPrefix + 'arrow-right',
  GANTT_VIEW_RIGHT_CLOSE: iconPrefix + 'arrow-left',
  GANTT_VIEW_TASK_MILESTONE: iconPrefix + 'square-fill rotate45'
});

/* harmony default export */ var ui = (core_.VxeUI);
;// ./packages/ui/src/log.ts

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


function checkDependVersion() {
  const pVersion = 4;
  const sVersion = 17;
  if (core_.VxeUI.checkVersion) {
    if (!core_.VxeUI.checkVersion(core_.VxeUI.tableVersion, pVersion, sVersion)) {
      errLog('vxe.error.errorVersion', [`vxe-table@${core_.VxeUI.tableVersion || '?'}`, `vxe-table v${pVersion}.${sVersion}+`]);
    }
  } else {
    errLog(`Requires vxe-table v${pVersion}.${sVersion}+`);
  }
}
// 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.filter.js
var es_iterator_filter = __webpack_require__(2489);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.iterator.find.js
var es_iterator_find = __webpack_require__(116);
// 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.map.get-or-insert.js
var es_map_get_or_insert = __webpack_require__(5367);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.map.get-or-insert-computed.js
var es_map_get_or_insert_computed = __webpack_require__(2731);
// 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: 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
/* unused harmony import specifier */ var XEUtils;
/* unused harmony import specifier */ var VxeUI;



function isEnableConf(conf) {
  return conf && conf.enabled !== false;
}
function hasEnableConf(conf, opts) {
  return opts && (conf ? opts.enabled !== false : opts.enabled);
}
function isEmptyValue(cellValue) {
  return cellValue === null || cellValue === undefined || cellValue === '';
}
function parseFile(file) {
  const name = file.name;
  const tIndex = XEUtils.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 getGlobalDefaultConfig(value, globalValue) {
  if (XEUtils.eqNull(value)) {
    return globalValue;
  }
  return value;
}
function hasChildrenList(item) {
  return item && item.children && item.children.length > 0;
}
function getFuncText(content, args) {
  if (content) {
    const translate = VxeUI.getConfig().translate;
    return XEUtils.toValueString(translate ? translate('' + content, args) : content);
  }
  return '';
}
function formatText(value, placeholder) {
  return '' + (isEmptyValue(value) ? placeholder ? core_.VxeUI.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 getStringValue(cellValue) {
  return eqEmptyValue(cellValue) ? '' : cellValue;
}
function getClass(property, params) {
  return property ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(property) ? property(params) : property : '';
}
;// ./packages/ui/src/dom.ts
/* unused harmony import specifier */ var dom_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 ? dom_XEUtils.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 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
  };
}
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;
}
;// ./packages/ui/src/vn.ts

function getSlotVNs(vns) {
  if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isArray(vns)) {
    return vns;
  }
  return vns ? [vns] : [];
}
;// ./packages/gantt/src/table-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/gantt/src/grid-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'];
;// ./packages/gantt/src/emits.ts

const ganttEmits = [...gridEmits, 'task-cell-click', 'task-cell-dblclick', 'task-bar-mouseenter', 'task-bar-mouseleave', 'task-bar-click', 'task-bar-dblclick', 'task-view-cell-click', 'task-view-cell-dblclick', 'task-move-start', 'task-move-drag', 'task-move-end', 'task-resize-start', 'task-resize-drag', 'task-resize-end', 'task-link-click', 'task-link-dblclick', 'task-link-remove'];
;// ./packages/gantt/src/util.ts
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 getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) {
  return rowRest.resizeHeight || cellOpts.height || rowOpts.height || rowRest.height || defaultRowHeight;
}
function getTaskBarLeft(chartRest, viewCellWidth) {
  return chartRest ? viewCellWidth * chartRest.oLeftSize : 0;
}
function getTaskBarWidth(chartRest, viewCellWidth) {
  return chartRest && chartRest.oWidthSize ? Math.max(1, chartRest ? Math.floor(viewCellWidth * chartRest.oWidthSize) - 1 : 0) : 0;
}
const taskTypeMaps = {
  milestone: true,
  subview: true
};
function hasMilestoneTask(type) {
  return type === 'milestone';
}
function hasSubviewTask(type) {
  return type === 'subview';
}
function getTaskType(type) {
  return taskTypeMaps[type] ? type : 'default';
}
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.difference.v2.js
var es_set_difference_v2 = __webpack_require__(7642);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.intersection.v2.js
var es_set_intersection_v2 = __webpack_require__(8004);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-disjoint-from.v2.js
var es_set_is_disjoint_from_v2 = __webpack_require__(3853);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-subset-of.v2.js
var es_set_is_subset_of_v2 = __webpack_require__(5876);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.is-superset-of.v2.js
var es_set_is_superset_of_v2 = __webpack_require__(2475);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.symmetric-difference.v2.js
var es_set_symmetric_difference_v2 = __webpack_require__(5024);
// EXTERNAL MODULE: ./node_modules/core-js/modules/es.set.union.v2.js
var es_set_union_v2 = __webpack_require__(1698);
;// ./packages/gantt/src/static.ts
/**
 * 依赖线枚举类型
 */
var VxeGanttDependencyType;
(function (VxeGanttDependencyType) {
  /**
   * 结束后才开始,表示一个任务必须在另一个任务开始之前完成
   */
  VxeGanttDependencyType[VxeGanttDependencyType["FinishToStart"] = 0] = "FinishToStart";
  /**
   * 开始到结束,表示从某个过程的开始到结束的整个过程
   */
  VxeGanttDependencyType[VxeGanttDependencyType["StartToFinish"] = 1] = "StartToFinish";
  /**
   * 开始后才开始,表示一个活动结束了,另一个活动才能开始,它们之间按先后顺序进行
   */
  VxeGanttDependencyType[VxeGanttDependencyType["StartToStart"] = 2] = "StartToStart";
  /**
   * 完成到完成,表示一个任务必须在另一个任务完成之后才能完成
   */
  VxeGanttDependencyType[VxeGanttDependencyType["FinishToFinish"] = 3] = "FinishToFinish";
})(VxeGanttDependencyType || (VxeGanttDependencyType = {}));
/**
 * 任务渲染类型
 */
var VxeGanttTaskType;
(function (VxeGanttTaskType) {
  /**
   * 里程碑类型,该类型节点不需要结束日期
   */
  VxeGanttTaskType["Milestone"] = "milestone";
  /**
   * 子视图类型,该类型会将子任务渲染到一行,无需开始日期和结束日期
   */
  VxeGanttTaskType["Subview"] = "subview";
})(VxeGanttTaskType || (VxeGanttTaskType = {}));
;// ./packages/gantt/src/gantt-header.ts






const {
  getI18n
} = core_.VxeUI;
const sourceType = 'gantt';
const viewType = 'header';
/* harmony default export */ var gantt_header = (defineVxeComponent({
  name: 'VxeGanttViewHeader',
  setup() {
    const $xeGantt = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGantt', {});
    const $xeGanttView = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGanttView', {});
    const {
      computeTaskViewOpts,
      computeScaleStep,
      computeMinScale
    } = $xeGantt.getComputeMaps();
    const {
      reactData,
      internalData
    } = $xeGanttView;
    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 refHeaderXSpace = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const renderVN = () => {
      const {
        headerGroups,
        viewCellWidth
      } = reactData;
      const {
        todayDateMaps,
        visibleColumn
      } = internalData;
      const taskViewOpts = computeTaskViewOpts.value;
      const minScale = computeMinScale.value;
      const scaleStep = computeScaleStep.value;
      const {
        showNowLine
      } = taskViewOpts;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: 'vxe-gantt-view--header-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refHeaderScroll,
        class: 'vxe-gantt-view--header-inner-wrapper',
        onScroll: $xeGanttView.triggerHeaderScrollEvent
      }, [(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-gantt-view--header-table'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('colgroup', {}, visibleColumn.map((column, cIndex) => {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          key: cIndex,
          style: {
            width: `${viewCellWidth}px`
          }
        });
      })), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('thead', {}, headerGroups.map(({
        scaleItem,
        columns
      }, $rowIndex) => {
        const {
          type,
          titleFormat,
          titleMethod,
          headerCellStyle,
          slots
        } = scaleItem;
        const titleSlot = slots ? slots.title : null;
        const isLast = $rowIndex === headerGroups.length - 1;
        const todayValue = isLast && showNowLine ? todayDateMaps[type] : null;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
          key: $rowIndex
        }, columns.map((column, cIndex) => {
          const {
            field,
            childCount,
            dateObj,
            startDateObj,
            endDateObj
          } = column;
          let label = `${column.title}`;
          if ((isLast || minScale && (minScale.type === 'date' || minScale.type === 'day') && (type === 'date' || type === 'day')) && scaleStep > 1) {
            label = getI18n(`vxe.gantt.stepFormat.${type}`, {
              start: startDateObj,
              end: endDateObj,
              eStartLabel: getI18n(`vxe.gantt.dayss.w${startDateObj.e}`),
              eEndLabel: getI18n(`vxe.gantt.dayss.w${endDateObj.e}`)
            });
          } else {
            if (type === 'day') {
              if ($rowIndex) {
                label = getI18n(`vxe.gantt.tSimpleFormat.${type}`, {
                  eLabel: getI18n(`vxe.gantt.dayss.w${dateObj.e}`)
                });
              } else {
                label = getI18n(`vxe.gantt.tFullFormat.${type}`, {
                  eLabel: getI18n(`vxe.gantt.dayss.w${dateObj.e}`)
                });
              }
            } else {
              if ($rowIndex) {
                label = getI18n(`vxe.gantt.tSimpleFormat.${type}`, dateObj);
              } else {
                label = getI18n(`vxe.gantt.tFullFormat.${type}`, dateObj);
              }
            }
          }
          let cellVNs = label;
          const ctParams = {
            source: sourceType,
            type: viewType,
            column,
            scaleObj: scaleItem,
            title: label,
            dateObj,
            startDateObj,
            endDateObj,
            $rowIndex
          };
          if (titleSlot) {
            cellVNs = $xeGantt.callSlot(titleSlot, ctParams);
          } else if (titleMethod) {
            cellVNs = `${titleMethod(ctParams)}`;
          } else if (titleFormat) {
            cellVNs = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(dateObj.date, titleFormat);
          }
          let cellStys = {};
          if (headerCellStyle) {
            if (external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(headerCellStyle)) {
              cellStys = headerCellStyle(ctParams) || null;
            } else {
              cellStys = headerCellStyle;
            }
          }
          return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('th', {
            key: cIndex,
            class: ['vxe-gantt-view--header-column', {
              'is--now': showNowLine && todayValue && todayValue === field
            }],
            colspan: childCount || null,
            title: titleSlot ? null : label,
            style: cellStys || undefined,
            onContextmenu(evnt) {
              $xeGantt.handleTaskHeaderContextmenuEvent(evnt, ctParams);
            }
          }, cellVNs);
        }));
      }))])])]);
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      const {
        elemStore
      } = internalData;
      const prefix = 'main-header-';
      elemStore[`${prefix}wrapper`] = refElem;
      elemStore[`${prefix}scroll`] = refHeaderScroll;
      elemStore[`${prefix}table`] = refHeaderTable;
      elemStore[`${prefix}xSpace`] = refHeaderXSpace;
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      const {
        elemStore
      } = internalData;
      const prefix = 'main-header-';
      elemStore[`${prefix}wrapper`] = null;
      elemStore[`${prefix}scroll`] = null;
      elemStore[`${prefix}table`] = null;
      elemStore[`${prefix}xSpace`] = null;
    });
    return renderVN;
  }
}));
;// ./packages/gantt/src/gantt-chart.ts









const {
  getIcon,
  renderEmptyElement
} = core_.VxeUI;
const gantt_chart_sourceType = 'gantt';
const gantt_chart_viewType = 'chart';
/* harmony default export */ var gantt_chart = (defineVxeComponent({
  name: 'VxeGanttViewChart',
  setup() {
    const $xeGantt = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGantt', {});
    const $xeGanttView = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGanttView', {});
    const {
      props: ganttProps,
      context: ganttContext,
      reactData: ganttReactData,
      internalData: ganttInternalData
    } = $xeGantt;
    const {
      reactData: ganttViewReactData,
      internalData: ganttViewInternalData
    } = $xeGanttView;
    const {
      computeProgressField,
      computeTitleField,
      computeTypeField,
      computeTaskBarOpts,
      computeScaleUnit,
      computeTaskLinkOpts,
      computeTaskBarMilestoneOpts,
      computeTaskBarSubviewOpts
    } = $xeGantt.getComputeMaps();
    const {
      computeNowLineLeft
    } = $xeGanttView.getComputeMaps();
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refTaskWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refChartBeforeWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refChartAfterWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refNowLineElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const renderTaskBar = ($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, rowChildren, isExpandTree) => {
      const tableReactData = $xeTable.reactData;
      const {
        resizeHeightFlag,
        pendingRowFlag
      } = tableReactData;
      const tableInternalData = $xeTable.internalData;
      const {
        fullAllDataRowIdData,
        pendingRowMaps
      } = tableInternalData;
      const {
        computeCellOpts,
        computeRowOpts,
        computeDefaultRowHeight
      } = $xeTable.getComputeMaps();
      const cellOpts = computeCellOpts.value;
      const rowOpts = computeRowOpts.value;
      const defaultRowHeight = computeDefaultRowHeight.value;
      const {
        computeTreeOpts
      } = $xeTable.getComputeMaps();
      const treeOpts = computeTreeOpts.value;
      const childrenField = treeOpts.children || treeOpts.childrenField;
      const ganttSlots = $xeGantt.context.slots;
      const taskBarSlot = ganttSlots.taskBar || ganttSlots['task-bar'];
      const taskBarOverviewSlot = ganttSlots.taskBarOverview || ganttSlots['task-bar-overview'];
      const {
        treeConfig,
        taskBarMilestoneConfig,
        taskBarSubviewConfig
      } = ganttProps;
      const {
        activeLink,
        activeBarRowid,
        criticalPathFlag
      } = ganttReactData;
      const {
        criticalRowMaps
      } = ganttInternalData;
      const titleField = computeTitleField.value;
      const progressField = computeProgressField.value;
      const typeField = computeTypeField.value;
      const taskBarOpts = computeTaskBarOpts.value;
      const taskBarMilestoneOpts = computeTaskBarMilestoneOpts.value;
      const taskBarSubviewOpts = computeTaskBarSubviewOpts.value;
      const {
        showOverview,
        barStyle: subBarStyle
      } = taskBarSubviewOpts;
      const scaleUnit = computeScaleUnit.value;
      const barParams = {
        $gantt: $xeGantt,
        source: gantt_chart_sourceType,
        type: gantt_chart_viewType,
        scaleType: scaleUnit,
        row,
        $rowIndex,
        rowIndex,
        _rowIndex
      };
      const {
        showProgress,
        showCriticalPath,
        showContent,
        contentMethod,
        barStyle,
        moveable,
        showTooltip
      } = taskBarOpts;
      const isBarRowStyle = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(barStyle);
      const barStyObj = (barStyle ? isBarRowStyle ? barStyle(barParams) || undefined : barStyle : {}) || {};
      const barRound = barStyObj.round;
      const barBgColor = barStyObj.bgColor;
      const barCompletedBgColor = barStyObj.completedBgColor;
      const barHtmlStyle = barStyObj.style;
      const rowRest = fullAllDataRowIdData[rowid] || {};
      const cellHeight = resizeHeightFlag ? getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) : 0;
      let title = getStringValue(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, titleField));
      const progressValue = showProgress ? Math.min(100, Math.max(0, 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().get(row, progressField)))) : 0;
      const renderTaskType = getTaskType(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, typeField));
      const isMilestone = !!(hasEnableConf(taskBarMilestoneConfig, taskBarMilestoneOpts) && hasMilestoneTask(renderTaskType));
      const ctParams = {
        ...barParams
      };
      const vbStyle = {};
      const vpStyle = {
        width: `${progressValue || 0}%`
      };
      if (!isMilestone) {
        if (isBarRowStyle) {
          if (barBgColor) {
            vbStyle['--vxe-ui-gantt-view-task-bar-background-color'] = barBgColor;
          }
          if (barCompletedBgColor) {
            vbStyle['--vxe-ui-gantt-view-task-bar-completed-background-color'] = barCompletedBgColor;
          }
        }
      }
      if (barHtmlStyle) {
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(vbStyle, barHtmlStyle);
      }
      let cbVNs = [];
      if ($xeGantt.renderGanttTaskBarContent) {
        cbVNs = $xeGantt.renderGanttTaskBarContent(ctParams, {
          $gantt: $xeGantt,
          $table: $xeTable,
          rowid
        });
      } else {
        const isSubview = !!(hasEnableConf(taskBarSubviewConfig, taskBarSubviewOpts) && hasSubviewTask(renderTaskType));
        if (contentMethod) {
          title = getStringValue(contentMethod({
            row,
            title,
            scaleType: scaleUnit
          }));
        }
        const ctOns = {};
        if (showTooltip) {
          ctOns.onMouseover = evnt => {
            const {
              dragBarRow
            } = ganttInternalData;
            const ttParams = Object.assign({
              $event: evnt
            }, ctParams);
            if (!dragBarRow) {
              $xeGantt.triggerTaskBarTooltipEvent(evnt, ttParams);
            }
            $xeGantt.dispatchEvent('task-bar-mouseenter', ttParams, evnt);
          };
          ctOns.onMouseleave = evnt => {
            const {
              dragBarRow
            } = ganttInternalData;
            const ttParams = Object.assign({
              $event: evnt
            }, ctParams);
            if (!dragBarRow) {
              $xeGantt.handleTaskBarTooltipLeaveEvent(evnt, ttParams);
            }
            $xeGantt.dispatchEvent('task-bar-mouseleave', ttParams, evnt);
          };
        }
        if (isSubview && treeConfig && rowChildren && rowChildren.length) {
          if (isExpandTree) {
            if (showOverview) {
              cbVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                key: 'vcso',
                class: 'vxe-gantt-view--chart-subview-wrapper is--overview'
              }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                key: rowid,
                rowid: rowid,
                class: ['vxe-gantt-view--chart-subview-row', {
                  'is--progress': showProgress,
                  'is--round': barRound,
                  'is--move': moveable
                }]
              }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                rowid: rowid,
                class: [taskBarOverviewSlot ? 'vxe-gantt-view--chart-subview-custom-bar' : 'vxe-gantt-view--chart-subview-bar', `is--${renderTaskType}`]
              }, [taskBarOverviewSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                key: 'cbc',
                class: 'vxe-gantt-view--chart-subview-custom-bar-content-wrapper'
              }, $xeGantt.callSlot(taskBarOverviewSlot, barParams)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                class: 'vxe-gantt-view--chart-subview-bar-content-wrapper'
              }, [showContent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                class: 'vxe-gantt-view--chart-content'
              }, title) : renderEmptyElement($xeGantt)])])])]));
            }
          } else {
            const cbcVNs = [];
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(rowChildren, childRow => {
              const childBarParams = {
                $gantt: $xeGantt,
                source: gantt_chart_sourceType,
                type: gantt_chart_viewType,
                scaleType: scaleUnit,
                row: childRow,
                $rowIndex: $xeTable.getRowIndex(childRow),
                rowIndex: $xeTable.getVMRowIndex(childRow),
                _rowIndex: $xeTable.getVTRowIndex(childRow)
              };
              const isChildBarRowStyle = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(subBarStyle);
              const childBarStyObj = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign({}, (barStyle ? isBarRowStyle ? barStyle(childBarParams) : barStyle : {}) || {}, (subBarStyle ? isChildBarRowStyle ? subBarStyle(childBarParams) : subBarStyle : {}) || {});
              const childRound = childBarStyObj.round;
              const childBgColor = childBarStyObj.bgColor;
              const childCompletedBgColor = childBarStyObj.completedBgColor;
              const childBarHtmlStyle = childBarStyObj.style;
              const childRowid = $xeTable.getRowid(childRow);
              let childTitle = getStringValue(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(childRow, titleField));
              const childProgressValue = showProgress ? Math.min(100, Math.max(0, 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().get(childRow, progressField)))) : 0;
              const childRenderTaskType = getTaskType(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(childRow, typeField));
              const isChildMilestone = !!(hasEnableConf(taskBarMilestoneConfig, taskBarMilestoneOpts) && hasMilestoneTask(childRenderTaskType));
              const isChildSubview = !!(hasEnableConf(taskBarSubviewConfig, taskBarSubviewOpts) && hasSubviewTask(childRenderTaskType));
              if (isChildSubview) {
                return;
              }
              const childVbStyle = {};
              const childVpStyle = {
                width: `${childProgressValue || 0}%`
              };
              if (!isChildMilestone) {
                if (childBgColor) {
                  childVbStyle['--vxe-ui-gantt-view-task-bar-background-color'] = childBgColor;
                }
                if (childCompletedBgColor) {
                  childVpStyle['--vxe-ui-gantt-view-task-bar-completed-background-color'] = childCompletedBgColor;
                }
              }
              //  已废弃
              if (childBarStyObj.top) {
                childVbStyle.top = childBarStyObj.top;
              }
              //  已废弃
              if (childBarHtmlStyle) {
                external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(childVbStyle, childBarHtmlStyle);
              }
              const childCtParams = {
                ...childBarParams
              };
              if (contentMethod) {
                childTitle = getStringValue(contentMethod({
                  row: childRow,
                  title: childTitle,
                  scaleType: scaleUnit
                }));
              }
              cbcVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                key: childRowid,
                rowid: childRowid,
                class: ['vxe-gantt-view--chart-subview-row', `is--${childRenderTaskType}`, {
                  'is--progress': showProgress,
                  'is--critical': showCriticalPath && criticalPathFlag && criticalRowMaps.has(childRowid),
                  'is--round': childRound,
                  'is--move': moveable,
                  'row--pending': !!pendingRowFlag && !!pendingRowMaps[childRowid]
                }]
              }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                rowid: childRowid,
                class: [taskBarSlot ? 'vxe-gantt-view--chart-subview-custom-bar' : 'vxe-gantt-view--chart-subview-bar', `is--${childRenderTaskType}`],
                style: childVbStyle,
                onClick(evnt) {
                  evnt.stopPropagation();
                  $xeGantt.handleTaskBarClickEvent(evnt, childCtParams);
                },
                onDblclick(evnt) {
                  evnt.stopPropagation();
                  $xeGantt.handleTaskBarDblclickEvent(evnt, childCtParams);
                },
                onMousedown(evnt) {
                  evnt.stopPropagation();
                  if ($xeGantt.handleTaskBarMousedownEvent) {
                    $xeGantt.handleTaskBarMousedownEvent(evnt, childCtParams);
                  }
                }
              }, [taskBarSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                key: 'cbc',
                class: 'vxe-gantt-view--chart-subview-custom-bar-content-wrapper',
                ...ctOns
              }, $xeGantt.callSlot(taskBarSlot, childCtParams)) : (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                class: 'vxe-gantt-view--chart-subview-bar-content-wrapper',
                ...ctOns
              }, [showProgress ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                class: 'vxe-gantt-view--chart-progress',
                style: childVpStyle
              }) : renderEmptyElement($xeGantt), showContent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
                class: 'vxe-gantt-view--chart-content'
              }, childTitle) : renderEmptyElement($xeGantt)])])]));
            }, {
              children: childrenField
            });
            cbVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              key: 'vcsc',
              class: 'vxe-gantt-view--chart-subview-wrapper is--inline'
            }, cbcVNs));
          }
        } else {
          if (taskBarSlot) {
            cbVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              key: 'cbc',
              class: 'vxe-gantt-view--chart-custom-bar-content-wrapper',
              ...ctOns
            }, $xeGantt.callSlot(taskBarSlot, barParams)));
          } else if (isMilestone) {
            const {
              icon,
              iconStatus,
              iconStyle
            } = taskBarMilestoneOpts;
            const tbmParams = {
              $gantt: $xeGantt,
              row
            };
            cbVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              key: 'vcm',
              class: 'vxe-gantt-view--chart-milestone-wrapper',
              ...ctOns
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: ['vxe-gantt-view--chart-milestone-icon', iconStatus ? `theme--${external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(iconStatus) ? iconStatus(tbmParams) : iconStatus}` : ''],
              style: iconStyle ? Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(iconStyle) ? iconStyle(tbmParams) : iconStyle) : undefined
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
              class: (icon ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(icon) ? icon(tbmParams) : icon : '') || getIcon().GANTT_VIEW_TASK_MILESTONE
            })]), showContent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: 'vxe-gantt-view--chart-milestone-content'
            }, title) : renderEmptyElement($xeGantt)]));
          } else {
            cbVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              key: 'vbc',
              class: 'vxe-gantt-view--chart-bar-content-wrapper',
              ...ctOns
            }, [showProgress ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: 'vxe-gantt-view--chart-progress',
              style: vpStyle
            }) : renderEmptyElement($xeGantt), showContent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: 'vxe-gantt-view--chart-content'
            }, title) : renderEmptyElement($xeGantt)]));
          }
        }
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        key: rowid,
        rowid,
        class: ['vxe-gantt-view--chart-row', `is--${renderTaskType}`, {
          'is--progress': showProgress,
          'is--critical': showCriticalPath && criticalPathFlag && criticalRowMaps.has(rowid),
          'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid],
          'is--round': barRound,
          'is--move': moveable
        }],
        style: {
          height: `${cellHeight}px`
        },
        onDragstart(evnt) {
          if (ganttInternalData.dragBarRow) {
            evnt.preventDefault();
          }
        },
        onContextmenu(evnt) {
          $xeGantt.handleTaskBarContextmenuEvent(evnt, ctParams);
        }
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: [taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar', `is--${renderTaskType}`, {
          'is--active': activeBarRowid === rowid,
          'active--link': activeLink && (rowid === `${activeLink.from}` || rowid === `${activeLink.to}`)
        }],
        style: vbStyle,
        rowid,
        onClick(evnt) {
          $xeGantt.handleTaskBarClickEvent(evnt, barParams);
        },
        onDblclick(evnt) {
          $xeGantt.handleTaskBarDblclickEvent(evnt, barParams);
        },
        onMousedown(evnt) {
          if ($xeGantt.handleTaskBarMousedownEvent) {
            $xeGantt.handleTaskBarMousedownEvent(evnt, barParams);
          }
        }
      }, cbVNs)]);
    };
    const renderTaskRows = ($xeTable, tableData) => {
      const tableProps = $xeTable.props;
      const {
        treeConfig
      } = tableProps;
      const tableReactData = $xeTable.reactData;
      const {
        treeExpandedFlag
      } = tableReactData;
      const tableInternalData = $xeTable.internalData;
      const {
        fullAllDataRowIdData,
        treeExpandedMaps
      } = tableInternalData;
      const {
        computeTreeOpts
      } = $xeTable.getComputeMaps();
      const treeOpts = computeTreeOpts.value;
      const {
        transform
      } = treeOpts;
      const childrenField = treeOpts.children || treeOpts.childrenField;
      const {
        scrollYLoad
      } = ganttViewReactData;
      const trVNs = [];
      tableData.forEach((row, $rowIndex) => {
        const rowid = $xeTable.getRowid(row);
        const rowRest = fullAllDataRowIdData[rowid] || {};
        let rowIndex = $rowIndex;
        let _rowIndex = -1;
        if (rowRest) {
          rowIndex = rowRest.index;
          _rowIndex = rowRest._index;
        }
        let isExpandTree = false;
        let rowChildren = [];
        if (treeConfig) {
          rowChildren = row[childrenField];
          isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
        }
        trVNs.push(renderTaskBar($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, rowChildren, isExpandTree));
        // 如果是树形表格
        if (treeConfig && isExpandTree && !scrollYLoad && !transform) {
          trVNs.push(...renderTaskRows($xeTable, rowChildren));
        }
      });
      return trVNs;
    };
    const renderVN = () => {
      const $xeTable = ganttViewInternalData.xeTable;
      const {
        slots: ganttSlots
      } = ganttContext;
      const {
        dragLinkFromStore
      } = ganttReactData;
      const {
        tableData
      } = ganttViewReactData;
      const taskLinkOpts = computeTaskLinkOpts.value;
      const taskBarOpts = computeTaskBarOpts.value;
      const nowLineLeft = computeNowLineLeft.value;
      const {
        isCurrent,
        isHover
      } = taskLinkOpts;
      const {
        linkCreatable
      } = taskBarOpts;
      const taskNowLineSlot = ganttSlots.taskNowLine || ganttSlots['task-now-line'];
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-gantt-view--chart-wrapper', {
          'is--cl-drag': dragLinkFromStore.rowid
        }]
      }, [nowLineLeft > 0 ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refNowLineElem,
        class: 'vxe-gantt-view--chart-now-line',
        style: {
          left: nowLineLeft + 'px'
        }
      }, taskNowLineSlot ? taskNowLineSlot({}) : []) : renderEmptyElement($xeGantt), $xeGantt.renderGanttTaskChartBefores ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refChartBeforeWrapperElem,
        class: ['vxe-gantt-view--chart-before-wrapper', {
          'link--current': isCurrent,
          'link--hover': isHover
        }]
      }, $xeTable && isEnableConf(taskLinkOpts) ? $xeGantt.renderGanttTaskChartBefores() : []) : renderEmptyElement($xeGantt), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refTaskWrapperElem,
        class: ['vxe-gantt-view--chart-task-wrapper', {
          'link--current': isCurrent,
          'link--create': linkCreatable
        }]
      }, $xeTable ? renderTaskRows($xeTable, tableData) : []), $xeGantt.renderGanttTaskChartAfters ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refChartAfterWrapperElem,
        class: 'vxe-gantt-view--chart-after-wrapper'
      }, $xeTable && isEnableConf(taskLinkOpts) ? $xeGantt.renderGanttTaskChartAfters() : []) : renderEmptyElement($xeGantt)]);
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      const {
        elemStore
      } = ganttViewInternalData;
      const prefix = 'main-chart-';
      elemStore[`${prefix}now-line`] = refNowLineElem;
      elemStore[`${prefix}task-wrapper`] = refTaskWrapperElem;
      elemStore[`${prefix}before-wrapper`] = refChartBeforeWrapperElem;
      elemStore[`${prefix}after-wrapper`] = refChartAfterWrapperElem;
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      const {
        elemStore
      } = ganttViewInternalData;
      const prefix = 'main-chart-';
      elemStore[`${prefix}now-line`] = null;
      elemStore[`${prefix}task-wrapper`] = null;
      elemStore[`${prefix}before-wrapper`] = null;
      elemStore[`${prefix}after-wrapper`] = null;
    });
    return renderVN;
  }
}));
;// ./packages/gantt/src/gantt-body.ts










const gantt_body_sourceType = 'gantt';
const gantt_body_viewType = 'body';
/* harmony default export */ var gantt_body = (defineVxeComponent({
  name: 'VxeGanttViewBody',
  setup() {
    const $xeGantt = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGantt', {});
    const $xeGanttView = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGanttView', {});
    const {
      computeTaskViewOpts,
      computeScaleUnit
    } = $xeGantt.getComputeMaps();
    const {
      reactData,
      internalData
    } = $xeGanttView;
    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 refBodyXSpace = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refBodyYSpace = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const renderColumn = ($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, column, $columnIndex) => {
      const tableReactData = $xeTable.reactData;
      const {
        resizeHeightFlag
      } = tableReactData;
      const tableInternalData = $xeTable.internalData;
      const {
        fullAllDataRowIdData,
        visibleColumn
      } = tableInternalData;
      const {
        computeCellOpts,
        computeRowOpts,
        computeDefaultRowHeight,
        computeResizableOpts
      } = $xeTable.getComputeMaps();
      const cellOpts = computeCellOpts.value;
      const rowOpts = computeRowOpts.value;
      const defaultRowHeight = computeDefaultRowHeight.value;
      const resizableOpts = computeResizableOpts.value;
      const {
        isAllRowDrag
      } = resizableOpts;
      const {
        headerGroups
      } = reactData;
      const {
        todayDateMaps
      } = internalData;
      const taskViewOpts = computeTaskViewOpts.value;
      const {
        showNowLine,
        viewStyle
      } = taskViewOpts;
      const scaleUnit = computeScaleUnit.value;
      const {
        scaleItem
      } = headerGroups[headerGroups.length - 1] || {};
      const {
        field,
        dateObj,
        startDateObj,
        endDateObj
      } = column;
      const {
        cellClassName,
        cellStyle
      } = viewStyle || {};
      const todayValue = showNowLine && scaleItem ? todayDateMaps[scaleItem.type] : null;
      const rowRest = fullAllDataRowIdData[rowid] || {};
      const cellHeight = resizeHeightFlag ? getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) : 0;
      const tdVNs = [];
      if (isAllRowDrag && rowOpts.resizable) {
        const cellParams = {
          $table: $xeTable,
          $grid: null,
          $gantt: $xeGantt,
          seq: -1,
          rowid,
          row,
          rowIndex,
          $rowIndex,
          _rowIndex,
          column: visibleColumn[0],
          columnIndex: 0,
          $columnIndex: 0,
          _columnIndex: 0,
          fixed: '',
          source: gantt_body_sourceType,
          type: gantt_body_viewType,
          isHidden: false,
          isEdit: false,
          level: -1,
          // 已废弃属性
          visibleData: [],
          data: [],
          items: []
        };
        tdVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: 'vxe-gantt-view-cell--row-resizable',
          onMousedown: evnt => $xeTable.handleRowResizeMousedownEvent(evnt, cellParams),
          onDblclick: evnt => $xeTable.handleRowResizeDblclickEvent(evnt, cellParams)
        }));
      }
      const ctParams = {
        $gantt: $xeGantt,
        source: gantt_body_sourceType,
        type: gantt_body_viewType,
        scaleType: scaleUnit,
        dateObj,
        startDateObj,
        endDateObj,
        row,
        column,
        $rowIndex,
        rowIndex,
        _rowIndex
      };
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('td', {
        key: cellClassName || cellStyle ? field : $columnIndex,
        class: ['vxe-gantt-view--body-column', {
          'is--now': showNowLine && todayValue === field
        }, getClass(cellClassName, ctParams)],
        style: cellStyle ? Object.assign({}, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(cellStyle) ? cellStyle(ctParams) : cellStyle, {
          height: `${cellHeight}px`
        }) : {
          height: `${cellHeight}px`
        },
        onClick(evnt) {
          $xeGantt.handleTaskCellClickEvent(evnt, {
            row,
            column
          });
        },
        onDblclick(evnt) {
          $xeGantt.handleTaskCellDblclickEvent(evnt, {
            row,
            column
          });
        },
        onContextmenu(evnt) {
          $xeGantt.handleTaskBodyContextmenuEvent(evnt, ctParams);
        }
      }, tdVNs);
    };
    const renderRows = ($xeTable, tableData) => {
      const tableProps = $xeTable.props;
      const {
        treeConfig,
        stripe,
        highlightHoverRow,
        editConfig
      } = tableProps;
      const tableReactData = $xeTable.reactData;
      const {
        treeExpandedFlag,
        selectRadioRow,
        pendingRowFlag,
        isRowGroupStatus
      } = tableReactData;
      const tableInternalData = $xeTable.internalData;
      const {
        fullAllDataRowIdData,
        treeExpandedMaps,
        pendingRowMaps
      } = tableInternalData;
      const {
        computeRadioOpts,
        computeCheckboxOpts,
        computeTreeOpts,
        computeRowOpts
      } = $xeTable.getComputeMaps();
      const radioOpts = computeRadioOpts.value;
      const checkboxOpts = computeCheckboxOpts.value;
      const rowOpts = computeRowOpts.value;
      const treeOpts = computeTreeOpts.value;
      const {
        transform
      } = treeOpts;
      const childrenField = treeOpts.children || treeOpts.childrenField;
      const scaleUnit = computeScaleUnit.value;
      const taskViewOpts = computeTaskViewOpts.value;
      const {
        viewStyle
      } = taskViewOpts;
      const {
        rowClassName,
        rowStyle,
        cellClassName,
        cellStyle
      } = viewStyle || {};
      const {
        tableColumn,
        scrollYLoad
      } = reactData;
      const trVNs = [];
      tableData.forEach((row, $rowIndex) => {
        const rowid = $xeTable.getRowid(row);
        const rowRest = fullAllDataRowIdData[rowid] || {};
        const trOns = {};
        let rowIndex = $rowIndex;
        let _rowIndex = -1;
        if (rowRest) {
          rowIndex = rowRest.index;
          _rowIndex = rowRest._index;
        }
        // 是否新增行
        let isNewRow = false;
        if (editConfig) {
          isNewRow = $xeTable.isInsertByRow(row);
        }
        // 当前行事件
        if (rowOpts.isHover || highlightHoverRow) {
          trOns.onMouseenter = evnt => {
            $xeTable.triggerHoverEvent(evnt, {
              row,
              rowIndex
            });
          };
          trOns.onMouseleave = () => {
            $xeTable.clearHoverRow();
          };
        }
        // 拖拽行事件
        if (rowOpts.drag && !isRowGroupStatus && (!treeConfig || transform)) {
          trOns.onDragstart = $xeTable.handleRowDragDragstartEvent;
          trOns.onDragend = $xeTable.handleRowDragDragendEvent;
          trOns.onDragover = $xeTable.handleRowDragDragoverEvent;
        }
        const rowParams = {
          $gantt: $xeGantt,
          source: gantt_body_sourceType,
          type: gantt_body_viewType,
          scaleType: scaleUnit,
          row,
          rowIndex,
          $rowIndex,
          _rowIndex
        };
        trVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tr', {
          key: rowClassName || rowStyle || cellClassName || cellStyle ? rowid : $rowIndex,
          class: ['vxe-gantt-view--body-row', {
            'row--stripe': stripe && (_rowIndex + 1) % 2 === 0,
            'is--new': isNewRow,
            'row--radio': radioOpts.highlight && $xeTable.eqRow(selectRadioRow, row),
            'row--checked': checkboxOpts.highlight && $xeTable.isCheckedByCheckboxRow(row),
            'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid]
          }, getClass(rowClassName, rowParams)],
          rowid,
          style: rowStyle ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(rowStyle) ? rowStyle(rowParams) || undefined : rowStyle : undefined,
          ...trOns
        }, tableColumn.map((column, $columnIndex) => renderColumn($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, column, $columnIndex))));
        let isExpandTree = false;
        let rowChildren = [];
        if (treeConfig && !scrollYLoad && !transform) {
          rowChildren = row[childrenField];
          isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
        }
        // 如果是树形表格
        if (isExpandTree) {
          trVNs.push(...renderRows($xeTable, rowChildren));
        }
      });
      return trVNs;
    };
    const renderVN = () => {
      const $xeTable = $xeGanttView.internalData.xeTable;
      const {
        tableData,
        tableColumn,
        viewCellWidth
      } = reactData;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: 'vxe-gantt-view--body-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refBodyScroll,
        class: 'vxe-gantt-view--body-inner-wrapper',
        onScroll: $xeGanttView.triggerBodyScrollEvent,
        onContextmenu(evnt) {
          $xeGantt.handleTaskBodyContextmenuEvent(evnt, {
            source: gantt_body_sourceType,
            type: gantt_body_viewType,
            rowIndex: -1,
            $rowIndex: -1,
            _rowIndex: -1
          });
        }
      }, [(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-gantt-view--body-table'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('colgroup', {}, tableColumn.map((column, cIndex) => {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('col', {
          key: cIndex,
          style: {
            width: `${viewCellWidth}px`
          }
        });
      })), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('tbody', {}, $xeTable ? renderRows($xeTable, tableData) : [])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(gantt_chart)])]);
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      const {
        elemStore
      } = internalData;
      const prefix = 'main-body-';
      elemStore[`${prefix}wrapper`] = refElem;
      elemStore[`${prefix}scroll`] = refBodyScroll;
      elemStore[`${prefix}table`] = refBodyTable;
      elemStore[`${prefix}xSpace`] = refBodyXSpace;
      elemStore[`${prefix}ySpace`] = refBodyYSpace;
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      const {
        elemStore
      } = internalData;
      const prefix = 'main-body-';
      elemStore[`${prefix}wrapper`] = null;
      elemStore[`${prefix}scroll`] = null;
      elemStore[`${prefix}table`] = null;
      elemStore[`${prefix}xSpace`] = null;
      elemStore[`${prefix}ySpace`] = null;
    });
    return renderVN;
  }
}));
;// ./packages/gantt/src/gantt-footer.ts


const gantt_footer_sourceType = 'gantt';
const gantt_footer_viewType = 'footer';
/* harmony default export */ var gantt_footer = (defineVxeComponent({
  name: 'VxeGanttViewFooter',
  setup() {
    const $xeGantt = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGantt', {});
    const $xeGanttView = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGanttView', {});
    const {
      internalData
    } = $xeGanttView;
    const refElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refHeaderScroll = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const renderVN = () => {
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: 'vxe-gantt-view--footer-wrapper',
        onContextmenu(evnt) {
          $xeGantt.handleTaskFooterContextmenuEvent(evnt, {
            source: gantt_footer_sourceType,
            type: gantt_footer_viewType,
            $rowIndex: -1
          });
        }
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refHeaderScroll,
        class: 'vxe-gantt-view--footer-inner-wrapper'
      })]);
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      const {
        elemStore
      } = internalData;
      const prefix = 'main-footer-';
      elemStore[`${prefix}wrapper`] = refElem;
      elemStore[`${prefix}scroll`] = refHeaderScroll;
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      const {
        elemStore
      } = internalData;
      const prefix = 'main-footer-';
      elemStore[`${prefix}wrapper`] = null;
      elemStore[`${prefix}scroll`] = null;
    });
    return renderVN;
  }
}));
;// ./packages/gantt/src/gantt-view.ts























const {
  globalEvents
} = core_.VxeUI;
const {
  FinishToStart,
  StartToFinish,
  StartToStart,
  FinishToFinish
} = VxeGanttDependencyType;
const gantt_view_sourceType = 'gantt';
const secondMs = 1000;
const minuteMs = 1000 * 60;
const hourMs = 1000 * 60 * 60;
const dayMs = hourMs * 24;
function getTaskLinkKey(from, to, type) {
  return from + '_' + to + '_' + (type || 0);
}
function createInternalData() {
  return {
    xeTable: null,
    visibleColumn: [],
    startMaps: {},
    endMaps: {},
    chartMaps: {},
    todayDateMaps: {},
    elemStore: {},
    // 存放横向 X 虚拟滚动相关的信息
    scrollXStore: {
      preloadSize: 0,
      offsetSize: 0,
      visibleSize: 0,
      visibleStartIndex: 0,
      visibleEndIndex: 0,
      startIndex: 0,
      endIndex: 0
    },
    // 最后滚动位置
    lastScrollTop: 0,
    lastScrollLeft: 0
  };
}
function createReactData() {
  return {
    // 是否启用了横向 X 可视渲染方式加载
    scrollXLoad: false,
    // 是否启用了纵向 Y 可视渲染方式加载
    scrollYLoad: false,
    // 是否存在纵向滚动条
    overflowY: true,
    // 是否存在横向滚动条
    overflowX: true,
    // 纵向滚动条的宽度
    scrollbarWidth: 0,
    // 横向滚动条的高度
    scrollbarHeight: 0,
    // 最后滚动时间戳
    lastScrollTime: 0,
    lazScrollLoading: false,
    scrollVMLoading: false,
    scrollYHeight: 0,
    scrollYTop: 0,
    isScrollYBig: false,
    scrollXLeft: 0,
    scrollXWidth: 0,
    isScrollXBig: false,
    minViewDate: null,
    maxViewDate: null,
    tableData: [],
    tableColumn: [],
    headerGroups: [],
    viewCellWidth: 40
  };
}
const maxYHeight = 5e6;
// const maxXWidth = 5e6
/* harmony default export */ var gantt_view = (defineVxeComponent({
  name: 'VxeGanttView',
  setup(props, context) {
    const xID = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().uniqueId();
    const $xeGantt = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.inject)('$xeGantt', {});
    const ganttProps = $xeGantt.props;
    const ganttReactData = $xeGantt.reactData;
    const ganttInternalData = $xeGantt.internalData;
    const {
      computeDateFormat,
      computeTaskBarOpts,
      computeTaskViewOpts,
      computeStartField,
      computeEndField,
      computeTypeField,
      computeScrollbarOpts,
      computeScrollbarXToTop,
      computeScrollbarYToLeft,
      computeScaleUnit,
      computeWeekScale,
      computeMinScale,
      computeTaskNowLineOpts,
      computeScaleStep
    } = $xeGantt.getComputeMaps();
    const refElem = (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)();
    const refColInfoElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const reactData = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)(createReactData());
    const internalData = createInternalData();
    const refMaps = {
      refElem,
      refScrollXHandleElem,
      refScrollYHandleElem
    };
    const computeScaleDateList = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        minViewDate,
        maxViewDate
      } = reactData;
      const taskViewOpts = computeTaskViewOpts.value;
      const minScale = computeMinScale.value;
      const scaleStep = computeScaleStep.value;
      const {
        gridding
      } = taskViewOpts;
      const dateList = [];
      if (!minScale || !minViewDate || !maxViewDate) {
        return dateList;
      }
      const {
        type,
        startDay
      } = minScale;
      let leftSize = -(ganttReactData.currLeftSpacing + external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(gridding ? gridding.leftSpacing || 0 : 0));
      let rightSize = ganttReactData.currRightSpacing + external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(gridding ? gridding.rightSpacing || 0 : 0);
      if (scaleStep > 0) {
        leftSize *= scaleStep;
        rightSize *= scaleStep;
      }
      switch (type) {
        case 'year':
          {
            let currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatYear(minViewDate, leftSize, 'first');
            const endDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatYear(maxViewDate, rightSize, 'first');
            while (currDate <= endDate) {
              const itemDate = currDate;
              dateList.push(itemDate);
              currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatYear(currDate, scaleStep);
            }
            break;
          }
        case 'quarter':
          {
            let currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatQuarter(minViewDate, leftSize, 'first');
            const endDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatQuarter(maxViewDate, rightSize, 'first');
            while (currDate <= endDate) {
              const itemDate = currDate;
              dateList.push(itemDate);
              currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatQuarter(currDate, scaleStep);
            }
            break;
          }
        case 'month':
          {
            let currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMonth(minViewDate, leftSize, 'first');
            const endDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMonth(maxViewDate, rightSize, 'first');
            while (currDate <= endDate) {
              const itemDate = currDate;
              dateList.push(itemDate);
              currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMonth(currDate, scaleStep);
            }
            break;
          }
        case 'week':
          {
            let currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatWeek(minViewDate, leftSize, startDay, startDay);
            const endDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatWeek(maxViewDate, rightSize, startDay, startDay);
            while (currDate <= endDate) {
              const itemDate = currDate;
              dateList.push(itemDate);
              currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatWeek(currDate, scaleStep);
            }
            break;
          }
        case 'day':
        case 'date':
          {
            let currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(minViewDate, leftSize, 'first');
            const endDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(maxViewDate, rightSize, 'first');
            while (currDate <= endDate) {
              const itemDate = currDate;
              dateList.push(itemDate);
              currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(currDate, scaleStep);
            }
            break;
          }
        case 'hour':
          {
            let currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatHours(minViewDate, leftSize, 'first');
            const endDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatHours(maxViewDate, rightSize, 'first');
            while (currDate <= endDate) {
              const itemDate = currDate;
              dateList.push(itemDate);
              currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatHours(currDate, scaleStep);
            }
            break;
          }
        case 'minute':
          {
            let currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMinutes(minViewDate, leftSize, 'first');
            const endDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMinutes(maxViewDate, rightSize, 'first');
            while (currDate <= endDate) {
              const itemDate = currDate;
              dateList.push(itemDate);
              currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMinutes(currDate, scaleStep);
            }
            break;
          }
        case 'second':
          {
            let currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatSeconds(minViewDate, leftSize, 'first');
            const endDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatSeconds(maxViewDate, rightSize, 'first');
            while (currDate <= endDate) {
              const itemDate = currDate;
              dateList.push(itemDate);
              currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatSeconds(currDate, scaleStep);
            }
            break;
          }
      }
      return dateList;
    });
    const computeNowLineLeft = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        minViewDate,
        maxViewDate,
        viewCellWidth
      } = reactData;
      const {
        visibleColumn,
        todayDateMaps
      } = internalData;
      const minScale = computeMinScale.value;
      const taskViewOpts = computeTaskViewOpts.value;
      const taskNowLineOpts = computeTaskNowLineOpts.value;
      const {
        showNowLine
      } = taskViewOpts;
      const {
        mode
      } = taskNowLineOpts;
      const {
        nowTime
      } = ganttReactData;
      // 此刻线
      let nlLeft = 0;
      if (showNowLine && minScale && minViewDate && maxViewDate && nowTime >= minViewDate.getTime() && nowTime <= maxViewDate.getTime()) {
        const todayValue = todayDateMaps[minScale.type];
        const todayDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toStringDate(todayValue);
        let currCol = null;
        let nextCol = null;
        for (let i = 0; i < visibleColumn.length; i++) {
          const column = visibleColumn[i];
          const {
            startDateObj,
            endDateObj
          } = column;
          if (startDateObj.date <= todayDate && endDateObj.date >= todayDate) {
            currCol = column;
            nlLeft = i * viewCellWidth;
            nextCol = visibleColumn[i + 1];
            break;
          }
        }
        if (mode === 'progress') {
          if (currCol && nextCol) {
            const currTime = currCol.dateObj.date.getTime();
            const offsetTime = nowTime - currTime;
            const nowProgress = Math.max(0, Math.min(1, offsetTime / (nextCol.dateObj.date.getTime() - currTime)));
            nlLeft += nowProgress * viewCellWidth;
          }
        } else if (mode === 'center') {
          nlLeft += viewCellWidth / 2;
        } else if (mode === 'end') {
          nlLeft += viewCellWidth - 1;
        }
      }
      return nlLeft;
    });
    const computeMaps = {
      computeScaleDateList,
      computeNowLineLeft
    };
    const $xeGanttView = {
      xID,
      props,
      context,
      reactData,
      internalData,
      getRefMaps: () => refMaps,
      getComputeMaps: () => computeMaps
    };
    const parseStringDate = dateValue => {
      const dateFormat = computeDateFormat.value;
      return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toStringDate(dateValue, dateFormat);
    };
    const updateTodayData = () => {
      const {
        taskScaleList
      } = ganttReactData;
      const minScale = computeMinScale.value;
      if (minScale) {
        const weekScale = taskScaleList.find(item => item.type === 'week');
        const isMinWeek = minScale.type === 'week';
        const itemDate = new Date();
        let [yyyy, M, MM, dd, HH, mm, ss] = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(itemDate, 'yyyy-M-MM-dd-HH-mm-ss').split('-');
        const e = itemDate.getDay();
        const E = e + 1;
        const q = Math.ceil((itemDate.getMonth() + 1) / 3);
        const W = `${external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined)}`;
        if (isMinWeek && checkWeekOfsetYear(W, M)) {
          yyyy = `${Number(yyyy) + 1}`;
          M = '1';
          MM = '0' + M;
        }
        ganttReactData.nowTime = itemDate.getTime();
        internalData.todayDateMaps = {
          year: yyyy,
          quarter: `${yyyy}_q${q}`,
          month: `${yyyy}_${MM}`,
          week: `${yyyy}_W${W}`,
          day: `${yyyy}_${MM}_${dd}_E${E}`,
          date: `${yyyy}_${MM}_${dd}`,
          hour: `${yyyy}_${MM}_${dd}_${HH}`,
          minute: `${yyyy}_${MM}_${dd}_${HH}_${mm}`,
          second: `${yyyy}_${MM}_${dd}_${HH}_${mm}_${ss}`
        };
      }
    };
    const handleColumnHeader = () => {
      const {
        taskScaleList
      } = ganttReactData;
      const scaleUnit = computeScaleUnit.value;
      const minScale = computeMinScale.value;
      const weekScale = computeWeekScale.value;
      const scaleDateList = computeScaleDateList.value;
      const scaleStep = computeScaleStep.value;
      const weekStartDay = weekScale ? weekScale.startDay : undefined;
      const fullCols = [];
      const groupCols = [];
      if (minScale && scaleUnit && scaleDateList.length) {
        const renderListMaps = {
          year: [],
          quarter: [],
          month: [],
          week: [],
          day: [],
          date: [],
          hour: [],
          minute: [],
          second: []
        };
        const tempTypeMaps = {
          year: {},
          quarter: {},
          month: {},
          week: {},
          day: {},
          date: {},
          hour: {},
          minute: {},
          second: {}
        };
        const isMinWeek = minScale.type === 'week';
        const handleData = (type, colMaps, minCol) => {
          if (minScale.type === type) {
            return;
          }
          const currCol = colMaps[type];
          const currKey = `${currCol.field}`;
          let currGpCol = tempTypeMaps[type][currKey];
          if (!currGpCol) {
            currGpCol = currCol;
            tempTypeMaps[type][currKey] = currGpCol;
            renderListMaps[type].push(currGpCol);
          }
          if (currGpCol) {
            if (!currGpCol.children) {
              currGpCol.children = [];
            }
            currGpCol.children.push(minCol);
          }
        };
        const createDateObj = date => {
          let [yy, yyyy, M, MM, d, dd, H, HH, m, mm, s, ss] = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(date, 'yy-yyyy-M-MM-d-dd-H-HH-m-mm-s-ss').split('-');
          const e = date.getDay();
          const E = e + 1;
          const q = Math.ceil((date.getMonth() + 1) / 3);
          const W = `${external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getYearWeek(date, weekScale ? weekScale.startDay : undefined)}`;
          const WW = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().padStart(W, 2, '0');
          if (isMinWeek && checkWeekOfsetYear(W, M)) {
            yyyy = `${Number(yyyy) + 1}`;
            M = '1';
            MM = '0' + M;
          }
          return {
            date,
            yy,
            yyyy,
            M,
            MM,
            d,
            dd,
            H,
            HH,
            m,
            mm,
            s,
            ss,
            q,
            W,
            WW,
            E,
            e
          };
        };
        for (let i = 0; i < scaleDateList.length; i++) {
          const itemDate = scaleDateList[i];
          const dateObj = createDateObj(itemDate);
          const {
            yyyy,
            MM,
            dd,
            HH,
            mm,
            ss,
            q,
            W,
            E
          } = dateObj;
          const startDateObj = dateObj;
          const colMaps = {
            year: {
              field: yyyy,
              title: yyyy,
              dateObj,
              startDateObj,
              endDateObj: scaleStep > 1 ? createDateObj(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatYear(itemDate, scaleStep - 1)) : startDateObj
            },
            quarter: {
              field: `${yyyy}_q${q}`,
              title: `${q}`,
              dateObj,
              startDateObj,
              endDateObj: scaleStep > 1 ? createDateObj(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatQuarter(itemDate, scaleStep - 1)) : startDateObj
            },
            month: {
              field: `${yyyy}_${MM}`,
              title: MM,
              dateObj,
              startDateObj,
              endDateObj: scaleStep > 1 ? createDateObj(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMonth(itemDate, scaleStep - 1)) : startDateObj
            },
            week: {
              field: `${yyyy}_W${W}`,
              title: `${W}`,
              dateObj,
              startDateObj,
              endDateObj: scaleStep > 1 ? createDateObj(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatWeek(itemDate, scaleStep - 1, weekStartDay, weekStartDay)) : startDateObj
            },
            day: {
              field: `${yyyy}_${MM}_${dd}_E${E}`,
              title: `${E}`,
              dateObj,
              startDateObj,
              endDateObj: scaleStep > 1 ? createDateObj(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(itemDate, scaleStep - 1)) : startDateObj
            },
            date: {
              field: `${yyyy}_${MM}_${dd}`,
              title: dd,
              dateObj,
              startDateObj,
              endDateObj: scaleStep > 1 ? createDateObj(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(itemDate, scaleStep - 1)) : startDateObj
            },
            hour: {
              field: `${yyyy}_${MM}_${dd}_${HH}`,
              title: HH,
              dateObj,
              startDateObj,
              endDateObj: scaleStep > 1 ? createDateObj(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatHours(itemDate, scaleStep - 1)) : startDateObj
            },
            minute: {
              field: `${yyyy}_${MM}_${dd}_${HH}_${mm}`,
              title: mm,
              dateObj,
              startDateObj,
              endDateObj: scaleStep > 1 ? createDateObj(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMinutes(itemDate, scaleStep - 1)) : startDateObj
            },
            second: {
              field: `${yyyy}_${MM}_${dd}_${HH}_${mm}_${ss}`,
              title: ss,
              dateObj,
              startDateObj,
              endDateObj: scaleStep > 1 ? createDateObj(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatSeconds(itemDate, scaleStep - 1)) : startDateObj
            }
          };
          const minCol = colMaps[minScale.type];
          if (minScale.level < 19) {
            handleData('year', colMaps, minCol);
          }
          if (minScale.level < 17) {
            handleData('quarter', colMaps, minCol);
          }
          if (minScale.level < 15) {
            handleData('month', colMaps, minCol);
          }
          if (minScale.level < 13) {
            handleData('week', colMaps, minCol);
          }
          if (minScale.level < 11) {
            handleData('day', colMaps, minCol);
          }
          if (minScale.level < 9) {
            handleData('date', colMaps, minCol);
          }
          if (minScale.level < 7) {
            handleData('hour', colMaps, minCol);
          }
          if (minScale.level < 5) {
            handleData('minute', colMaps, minCol);
          }
          if (minScale.level < 3) {
            handleData('second', colMaps, minCol);
          }
          fullCols.push(minCol);
        }
        taskScaleList.forEach(scaleItem => {
          if (scaleItem.type === minScale.type) {
            groupCols.push({
              scaleItem,
              columns: fullCols
            });
            return;
          }
          const list = renderListMaps[scaleItem.type] || [];
          if (list) {
            list.forEach(item => {
              item.childCount = item.children ? item.children.length : 0;
              item.children = undefined;
            });
          }
          groupCols.push({
            scaleItem,
            columns: list
          });
        });
      }
      return {
        fullCols,
        groupCols
      };
    };
    /**
     * 判断周的年份是否跨年
     */
    const checkWeekOfsetYear = (W, M) => {
      return `${W}` === '1' && `${M}` === '12';
    };
    /**
     * 周维度,由于年份和第几周是冲突的行为,所以需要特殊处理,判断是否跨年,例如
     * '2024-12-31' 'yyyy-MM-dd W' >> '2024-12-31 1'
     * '2025-01-01' 'yyyy-MM-dd W' >> '2025-01-01 1'
     */
    const parseWeekObj = (date, firstDay) => {
      const currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toStringDate(date);
      let yyyy = currDate.getFullYear();
      const month = currDate.getMonth();
      const weekNum = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getYearWeek(currDate, firstDay);
      if (checkWeekOfsetYear(weekNum, month + 1)) {
        yyyy++;
      }
      return {
        yyyy,
        W: weekNum
      };
    };
    const createChartRender = fullCols => {
      const minScale = computeMinScale.value;
      const scaleStep = computeScaleStep.value;
      const scaleUnit = computeScaleUnit.value;
      const weekScale = computeWeekScale.value;
      const dateFormat = computeDateFormat.value;
      if (minScale) {
        const currRatio = scaleStep > 1 ? 1 / scaleStep : 0;
        switch (scaleUnit) {
          case 'year':
            {
              const showActualProgress = /M|d|H|m|s|S/.test(dateFormat);
              const renderFormat = 'yyyy';
              const indexMaps = {};
              fullCols.forEach(({
                dateObj
              }, i) => {
                const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(dateObj.date, 'yyyy');
                indexMaps[currStr] = i;
                if (currRatio) {
                  let currStep = scaleStep - 1;
                  while (currStep) {
                    const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatYear(dateObj.date, scaleStep - currStep), renderFormat);
                    indexMaps[currStr] = i + (scaleStep - currStep) * currRatio;
                    currStep--;
                  }
                }
              });
              return (startValue, endValue) => {
                const startValDate = parseStringDate(startValue);
                const endValDate = parseStringDate(endValue);
                const startStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(startValDate, renderFormat);
                const startDate = showActualProgress ? startValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatYear(startValDate, 0, 'first');
                const startFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatYear(startValDate, 0, 'first');
                const endStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(endValDate, renderFormat);
                const endDate = showActualProgress ? endValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatYear(endValDate, 0, 'last');
                const endFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatYear(endDate, 0, 'first');
                // 当前是年维度,当指定解析格式精确到天时,显示实际进度
                let startSubtractSize = 0;
                let endSubtractSize = 1;
                if (showActualProgress) {
                  // 按年的天数比计算
                  const syDaySize = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getDayOfYear(startDate, 0);
                  startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs / syDaySize;
                  const eyDaySize = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getDayOfYear(endDate, 0);
                  endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs / eyDaySize;
                  if (currRatio) {
                    startSubtractSize *= currRatio;
                    endSubtractSize *= currRatio;
                  }
                }
                const offsetLeftSize = (indexMaps[startStr] || 0) + startSubtractSize;
                return {
                  offsetLeftSize,
                  offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
                };
              };
            }
          case 'quarter':
            {
              const showActualProgress = /M|d|H|m|ss|S/.test(dateFormat);
              const renderFormat = 'yyyy-q';
              const indexMaps = {};
              fullCols.forEach(({
                dateObj
              }, i) => {
                const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(dateObj.date, renderFormat);
                indexMaps[currStr] = i;
                if (currRatio) {
                  let currStep = scaleStep - 1;
                  while (currStep) {
                    const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatQuarter(dateObj.date, scaleStep - currStep), renderFormat);
                    indexMaps[currStr] = i + (scaleStep - currStep) * currRatio;
                    currStep--;
                  }
                }
              });
              return (startValue, endValue) => {
                const startValDate = parseStringDate(startValue);
                const endValDate = parseStringDate(endValue);
                const startStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(startValDate, renderFormat);
                const startDate = showActualProgress ? startValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatQuarter(startValDate, 0, 'first');
                const startFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatQuarter(startValDate, 0, 'first');
                const endStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(endValDate, renderFormat);
                const endDate = showActualProgress ? endValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatQuarter(endValDate, 0, 'last');
                const endFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatQuarter(endDate, 0, 'first');
                // 当前是季度维度,当指定解析格式精确到天时,显示实际进度
                let startSubtractSize = 0;
                let endSubtractSize = 1;
                if (showActualProgress) {
                  // 按季度天数比计算
                  const sqDaySize = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getDayOfQuarter(startDate, 0);
                  startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs / sqDaySize;
                  const eqDaySize = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getDayOfQuarter(endDate, 0);
                  endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs / eqDaySize;
                  if (currRatio) {
                    startSubtractSize *= currRatio;
                    endSubtractSize *= currRatio;
                  }
                }
                const offsetLeftSize = (indexMaps[startStr] || 0) + startSubtractSize;
                return {
                  offsetLeftSize,
                  offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
                };
              };
            }
          case 'month':
            {
              const renderFormat = 'yyyy-MM';
              const showActualProgress = /d|H|m|ss|S/.test(dateFormat);
              const indexMaps = {};
              fullCols.forEach(({
                dateObj
              }, i) => {
                const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(dateObj.date, renderFormat);
                indexMaps[currStr] = i;
                if (currRatio) {
                  let currStep = scaleStep - 1;
                  while (currStep) {
                    const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMonth(dateObj.date, scaleStep - currStep), renderFormat);
                    indexMaps[currStr] = i + (scaleStep - currStep) * currRatio;
                    currStep--;
                  }
                }
              });
              return (startValue, endValue) => {
                const startValDate = parseStringDate(startValue);
                const endValDate = parseStringDate(endValue);
                const startStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(startValDate, renderFormat);
                const startDate = showActualProgress ? startValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMonth(startValDate, 0, 'first');
                const startFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMonth(startValDate, 0, 'first');
                const endStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(endValDate, renderFormat);
                const endDate = showActualProgress ? endValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMonth(endValDate, 0, 'last');
                const endFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMonth(endDate, 0, 'first');
                // 当前是月维度,当指定解析格式精确到天时,显示实际进度
                let startSubtractSize = 0;
                let endSubtractSize = 1;
                if (showActualProgress) {
                  // 按月天数比计算
                  const smDaySize = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getDayOfMonth(startDate, 0);
                  startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs / smDaySize;
                  const emDaySize = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getDayOfMonth(endDate, 0);
                  endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs / emDaySize;
                  if (currRatio) {
                    startSubtractSize *= currRatio;
                    endSubtractSize *= currRatio;
                  }
                }
                const offsetLeftSize = (indexMaps[startStr] || 0) + startSubtractSize;
                return {
                  offsetLeftSize,
                  offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
                };
              };
            }
          case 'week':
            {
              const weekStartDay = weekScale ? weekScale.startDay : undefined;
              const showActualProgress = /d|H|m|s|S/.test(dateFormat);
              const indexMaps = {};
              fullCols.forEach(({
                dateObj
              }, i) => {
                const currStr = `${dateObj.yyyy}-${dateObj.W}`;
                indexMaps[currStr] = i;
                if (currRatio) {
                  let currStep = scaleStep - 1;
                  while (currStep) {
                    const offsetDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatWeek(dateObj.date, scaleStep - currStep, weekStartDay, weekStartDay);
                    let [yyyy, M] = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(offsetDate, 'yyyy-M-MM-dd-HH-mm-ss').split('-');
                    const W = `${external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getYearWeek(offsetDate, weekScale ? weekScale.startDay : undefined)}`;
                    if (checkWeekOfsetYear(W, M)) {
                      yyyy = `${Number(yyyy) + 1}`;
                    }
                    const currStr = `${yyyy}-${W}`;
                    indexMaps[currStr] = i + (scaleStep - currStep) * currRatio;
                    currStep--;
                  }
                }
              });
              return (startValue, endValue) => {
                const startValDate = parseStringDate(startValue);
                const endValDate = parseStringDate(endValue);
                const startDate = showActualProgress ? startValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatWeek(startValDate, 0, 'first', weekStartDay);
                const startWeekObj = parseWeekObj(startDate, weekStartDay);
                const startStr = `${startWeekObj.yyyy}-${startWeekObj.W}`;
                const startFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatWeek(startDate, 0, 'first', weekStartDay);
                const endDate = showActualProgress ? endValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatWeek(endValDate, 0, 'first', weekStartDay);
                const endWeekObj = parseWeekObj(endDate, weekStartDay);
                const endStr = `${endWeekObj.yyyy}-${endWeekObj.W}`;
                const endFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatWeek(endDate, 0, 'first', weekStartDay);
                // 当前是周维度,当指定解析格式精确到天时,显示实际进度
                let startSubtractSize = 0;
                let endSubtractSize = 1;
                if (showActualProgress) {
                  // 按周天数比计算
                  startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs / 7;
                  endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs / 7;
                  if (currRatio) {
                    startSubtractSize *= currRatio;
                    endSubtractSize *= currRatio;
                  }
                }
                const offsetLeftSize = (indexMaps[startStr] || 0) + startSubtractSize;
                return {
                  offsetLeftSize,
                  offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
                };
              };
            }
          case 'day':
          case 'date':
            {
              const renderFormat = 'yyyy-MM-dd';
              const showActualProgress = /H|m|s|S/.test(dateFormat);
              const indexMaps = {};
              fullCols.forEach(({
                dateObj
              }, i) => {
                const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(dateObj.date, renderFormat);
                indexMaps[currStr] = i;
                if (currRatio) {
                  let currStep = scaleStep - 1;
                  while (currStep) {
                    const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(dateObj.date, scaleStep - currStep), renderFormat);
                    indexMaps[currStr] = i + (scaleStep - currStep) * currRatio;
                    currStep--;
                  }
                }
              });
              return (startValue, endValue) => {
                const startValDate = parseStringDate(startValue);
                const endValDate = parseStringDate(endValue);
                const startStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(startValDate, renderFormat);
                const startDate = showActualProgress ? startValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(startValDate, 0, 'first');
                const startFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(startDate, 0, 'first');
                const endStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(endValDate, renderFormat);
                const endDate = showActualProgress ? endValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(endValDate, 0, 'last');
                const endFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatDay(endDate, 0, 'first');
                // 当前是天维度,当指定解析格式精确到时分秒豪秒时,显示实际进度
                let startSubtractSize = 0;
                let endSubtractSize = 1;
                if (showActualProgress) {
                  startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / dayMs;
                  endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / dayMs;
                  if (currRatio) {
                    startSubtractSize *= currRatio;
                    endSubtractSize *= currRatio;
                  }
                }
                const offsetLeftSize = (indexMaps[startStr] || 0) + startSubtractSize;
                return {
                  offsetLeftSize,
                  offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
                };
              };
            }
          case 'hour':
            {
              const renderFormat = 'yyyy-MM-dd HH';
              const showActualProgress = /m|s|S/.test(dateFormat);
              const indexMaps = {};
              fullCols.forEach(({
                dateObj
              }, i) => {
                const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(dateObj.date, renderFormat);
                indexMaps[currStr] = i;
                if (currRatio) {
                  let currStep = scaleStep - 1;
                  while (currStep) {
                    const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatHours(dateObj.date, scaleStep - currStep), renderFormat);
                    indexMaps[currStr] = i + (scaleStep - currStep) * currRatio;
                    currStep--;
                  }
                }
              });
              return (startValue, endValue) => {
                const startValDate = parseStringDate(startValue);
                const endValDate = parseStringDate(endValue);
                const startStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(startValDate, renderFormat);
                const startDate = showActualProgress ? startValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatHours(startValDate, 0, 'first');
                const startFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatHours(startDate, 0, 'first');
                const endStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(endValDate, renderFormat);
                const endDate = showActualProgress ? endValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatHours(endValDate, 0, 'last');
                const endFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatHours(endDate, 0, 'first');
                // 当前是小时维度,当指定解析格式精确到分秒豪秒时,显示实际进度
                let startSubtractSize = 0;
                let endSubtractSize = 1;
                if (showActualProgress) {
                  startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / hourMs;
                  endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / hourMs;
                  if (currRatio) {
                    startSubtractSize *= currRatio;
                    endSubtractSize *= currRatio;
                  }
                }
                const offsetLeftSize = (indexMaps[startStr] || 0) + startSubtractSize;
                return {
                  offsetLeftSize,
                  offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
                };
              };
            }
          case 'minute':
            {
              const renderFormat = 'yyyy-MM-dd HH:mm';
              const showActualProgress = /s|S/.test(dateFormat);
              const indexMaps = {};
              fullCols.forEach(({
                dateObj
              }, i) => {
                const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(dateObj.date, renderFormat);
                indexMaps[currStr] = i;
                if (currRatio) {
                  let currStep = scaleStep - 1;
                  while (currStep) {
                    const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMinutes(dateObj.date, scaleStep - currStep), renderFormat);
                    indexMaps[currStr] = i + (scaleStep - currStep) * currRatio;
                    currStep--;
                  }
                }
              });
              return (startValue, endValue) => {
                const startValDate = parseStringDate(startValue);
                const endValDate = parseStringDate(endValue);
                const startStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(startValDate, renderFormat);
                const startDate = showActualProgress ? startValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMinutes(startValDate, 0, 'first');
                const startFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMinutes(startDate, 0, 'first');
                const endStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(endValDate, renderFormat);
                const endDate = showActualProgress ? endValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMinutes(endValDate, 0, 'last');
                const endFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatMinutes(endDate, 0, 'first');
                // 当前是分钟维度,当指定解析格式精确到秒豪秒时,显示实际进度
                let startSubtractSize = 0;
                let endSubtractSize = 1;
                if (showActualProgress) {
                  startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / minuteMs;
                  endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / minuteMs;
                  if (currRatio) {
                    startSubtractSize *= currRatio;
                    endSubtractSize *= currRatio;
                  }
                }
                const offsetLeftSize = (indexMaps[startStr] || 0) + startSubtractSize;
                return {
                  offsetLeftSize,
                  offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
                };
              };
            }
          case 'second':
            {
              const renderFormat = 'yyyy-MM-dd HH:mm:ss';
              const showActualProgress = /S/.test(dateFormat);
              const indexMaps = {};
              fullCols.forEach(({
                dateObj
              }, i) => {
                const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(dateObj.date, renderFormat);
                indexMaps[currStr] = i;
                if (currRatio) {
                  let currStep = scaleStep - 1;
                  while (currStep) {
                    const currStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatSeconds(dateObj.date, scaleStep - currStep), renderFormat);
                    indexMaps[currStr] = i + (scaleStep - currStep) * currRatio;
                    currStep--;
                  }
                }
              });
              return (startValue, endValue) => {
                const startValDate = parseStringDate(startValue);
                const endValDate = parseStringDate(endValue);
                const startStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(startValDate, renderFormat);
                const startDate = showActualProgress ? startValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatSeconds(startValDate, 0, 'first');
                const startFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatSeconds(startDate, 0, 'first');
                const endStr = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toDateString(endValDate, renderFormat);
                const endDate = showActualProgress ? endValDate : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatSeconds(endValDate, 0, 'last');
                const endFirstDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().getWhatSeconds(endDate, 0, 'first');
                // 当前是秒维度,当指定解析格式精确到豪秒时,显示实际进度
                let startSubtractSize = 0;
                let endSubtractSize = 1;
                if (showActualProgress) {
                  startSubtractSize = (startDate.getTime() - startFirstDate.getTime()) / secondMs;
                  endSubtractSize = (endDate.getTime() - endFirstDate.getTime()) / secondMs;
                  if (currRatio) {
                    startSubtractSize *= currRatio;
                    endSubtractSize *= currRatio;
                  }
                }
                const offsetLeftSize = (indexMaps[startStr] || 0) + startSubtractSize;
                return {
                  offsetLeftSize,
                  offsetWidthSize: (indexMaps[endStr] || 0) - offsetLeftSize + endSubtractSize
                };
              };
            }
        }
      }
      return () => {
        return {
          offsetLeftSize: 0,
          offsetWidthSize: 0
        };
      };
    };
    const handleParseColumn = () => {
      const ganttProps = $xeGantt.props;
      const {
        treeConfig
      } = ganttProps;
      const {
        minViewDate,
        maxViewDate
      } = reactData;
      const {
        fullCols,
        groupCols
      } = handleColumnHeader();
      if (minViewDate && maxViewDate && fullCols.length) {
        const $xeTable = internalData.xeTable;
        if ($xeTable) {
          const startField = computeStartField.value;
          const endField = computeEndField.value;
          const typeField = computeTypeField.value;
          const {
            computeAggregateOpts,
            computeTreeOpts
          } = $xeTable.getComputeMaps();
          const tableReactData = $xeTable.reactData;
          const {
            isRowGroupStatus
          } = tableReactData;
          const tableInternalData = $xeTable.internalData;
          const {
            afterFullData,
            afterTreeFullData,
            afterGroupFullData
          } = tableInternalData;
          const aggregateOpts = computeAggregateOpts.value;
          const treeOpts = computeTreeOpts.value;
          const {
            transform
          } = treeOpts;
          const childrenField = treeOpts.children || treeOpts.childrenField;
          const ctMaps = {};
          const renderFn = createChartRender(fullCols);
          const handleParseRender = row => {
            const rowid = $xeTable.getRowid(row);
            let startValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, startField);
            let endValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, endField);
            const renderTaskType = getTaskType(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, typeField));
            const isMilestone = hasMilestoneTask(renderTaskType);
            const isSubview = hasSubviewTask(renderTaskType);
            if (isMilestone) {
              if (!startValue) {
                startValue = endValue;
              }
              endValue = startValue;
            }
            if (isSubview) {
              ctMaps[rowid] = {
                row,
                rowid,
                oLeftSize: 0,
                oWidthSize: 0
              };
            } else if (startValue && endValue) {
              const {
                offsetLeftSize,
                offsetWidthSize
              } = renderFn(startValue, endValue);
              ctMaps[rowid] = {
                row,
                rowid,
                oLeftSize: offsetLeftSize,
                oWidthSize: offsetWidthSize
              };
            }
          };
          if (isRowGroupStatus) {
            // 行分组
            const mapChildrenField = aggregateOpts.mapChildrenField;
            if (mapChildrenField) {
              external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterGroupFullData, handleParseRender, {
                children: mapChildrenField
              });
            }
          } else if (treeConfig) {
            // 树结构
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterTreeFullData, handleParseRender, {
              children: transform ? treeOpts.mapChildrenField : childrenField
            });
          } else {
            afterFullData.forEach(handleParseRender);
          }
          internalData.chartMaps = ctMaps;
        }
      }
      internalData.visibleColumn = fullCols;
      reactData.headerGroups = groupCols;
      updateTodayData();
      updateScrollXStatus();
      handleTableColumn();
    };
    const handleUpdateData = () => {
      const {
        linkList
      } = ganttReactData;
      const {
        treeConfig
      } = ganttProps;
      const {
        scrollXStore
      } = internalData;
      const $xeTable = internalData.xeTable;
      const sdMaps = {};
      const edMaps = {};
      let minDate = null;
      let maxDate = null;
      const allList = [];
      if ($xeTable) {
        const startField = computeStartField.value;
        const endField = computeEndField.value;
        const typeField = computeTypeField.value;
        const {
          computeAggregateOpts,
          computeTreeOpts
        } = $xeTable.getComputeMaps();
        const tableReactData = $xeTable.reactData;
        const {
          isRowGroupStatus
        } = tableReactData;
        const tableInternalData = $xeTable.internalData;
        const {
          afterFullData,
          afterTreeFullData,
          afterGroupFullData
        } = tableInternalData;
        const aggregateOpts = computeAggregateOpts.value;
        const treeOpts = computeTreeOpts.value;
        const {
          transform
        } = treeOpts;
        const childrenField = treeOpts.children || treeOpts.childrenField;
        const handleMinMaxData = row => {
          let startValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, startField);
          let endValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, endField);
          const typeValue = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, typeField);
          const isMilestone = hasMilestoneTask(typeValue);
          if (!startValue) {
            startValue = endValue;
          }
          if (isMilestone || !endValue) {
            endValue = startValue;
          }
          if (startValue) {
            const startDate = parseStringDate(startValue);
            if (!minDate || minDate.getTime() > startDate.getTime()) {
              minDate = startDate;
            }
          }
          if (endValue) {
            const endDate = parseStringDate(endValue);
            if (!maxDate || maxDate.getTime() < endDate.getTime()) {
              maxDate = endDate;
            }
          }
          allList.push(row);
        };
        if (isRowGroupStatus) {
          // 行分组
          const mapChildrenField = aggregateOpts.mapChildrenField;
          if (mapChildrenField) {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterGroupFullData, handleMinMaxData, {
              children: mapChildrenField
            });
          }
        } else if (treeConfig) {
          // 树结构
          external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(afterTreeFullData, handleMinMaxData, {
            children: transform ? treeOpts.mapChildrenField : childrenField
          });
        } else {
          afterFullData.forEach(handleMinMaxData);
        }
      }
      scrollXStore.startIndex = 0;
      scrollXStore.endIndex = Math.max(1, scrollXStore.visibleSize);
      reactData.minViewDate = minDate;
      reactData.maxViewDate = maxDate;
      internalData.startMaps = sdMaps;
      internalData.endMaps = edMaps;
      handleParseColumn();
      handleCriticalPath(allList, linkList);
    };
    /**
     * 正向:后置 ES 的下连接线
     */
    function forwardCriticalPathLowerBound(linkType, predES, predEF, duration) {
      switch (linkType) {
        case FinishToStart:
          return predEF;
        case StartToFinish:
          return predES - duration;
        case StartToStart:
          return predES;
        case FinishToFinish:
          return predEF - duration;
        default:
          return 0;
      }
    }
    /**
     * 反向:前置 LF 的上连接线
     */
    function backwardCriticalPathUpperBound(linkType, succLS, succLF, duration) {
      switch (linkType) {
        case FinishToStart:
          return succLS;
        case StartToFinish:
          return succLF + duration;
        case StartToStart:
          return succLS + duration;
        case FinishToFinish:
          return succLF;
        default:
          return -1;
      }
    }
    /**
     * 关键边:两端都关键时,约束是否连接
     */
    function isCriticalPathLinkTight(linkType, fromES, fromEF, toES, toEF, tolerance) {
      switch (linkType) {
        case FinishToStart:
          return Math.abs(fromEF - toES) < tolerance;
        case StartToFinish:
          return Math.abs(fromES - toEF) < tolerance;
        case StartToStart:
          return Math.abs(fromES - toES) < tolerance;
        case FinishToFinish:
          return Math.abs(fromEF - toEF) < tolerance;
        default:
          return false;
      }
    }
    function handleCriticalPath(data, links) {
      const taskBarOpts = computeTaskBarOpts.value;
      const $xeTable = internalData.xeTable;
      const criticalRowList = [];
      const criticalRowMaps = new Map();
      const criticalLinkKeyMaps = new Map();
      ganttInternalData.criticalRowList = criticalRowList;
      ganttInternalData.criticalRowMaps = criticalRowMaps;
      ganttInternalData.criticalLinkKeyMaps = criticalLinkKeyMaps;
      if (!taskBarOpts.showCriticalPath || !links.length || !data.length || !$xeTable) {
        if (ganttReactData.criticalRowIds.length || ganttReactData.criticalLinks.length) {
          ganttReactData.criticalPathFlag++;
        }
        ganttReactData.criticalLinks = [];
        ganttReactData.criticalRowIds = [];
        return;
      }
      const {
        chartMaps
      } = internalData;
      const tolerance = 1e-6;
      const nodeMap = new Map();
      for (const row of data) {
        const rowid = $xeTable.getRowid(row);
        const chartRest = chartMaps[rowid];
        nodeMap.set(rowid, {
          row,
          rowid: rowid,
          duration: chartRest ? chartRest.oWidthSize : 0,
          incoming: [],
          outgoing: [],
          indeg: 0,
          ES: 0,
          EF: 0,
          LS: 0,
          LF: 0
        });
      }
      // 边界
      const linkList = [];
      for (const link of links) {
        const fromKey = '' + link.from;
        const toKey = '' + link.to;
        if (!nodeMap.has(fromKey) || !nodeMap.has(toKey) || fromKey === toKey) {
          continue;
        }
        const lkItemitem = {
          from: link.from,
          to: link.to,
          type: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(link.type) || 0,
          raw: link
        };
        linkList.push(lkItemitem);
        const toObjItem = nodeMap.get('' + link.to);
        const fromObjItem = nodeMap.get('' + link.from);
        if (fromObjItem) {
          fromObjItem.outgoing.push(lkItemitem);
        }
        if (toObjItem) {
          toObjItem.incoming.push(lkItemitem);
          toObjItem.indeg++;
        }
      }
      // 拓扑排序 + 环检测
      const queueList = [];
      nodeMap.forEach(nodeitem => {
        if (nodeitem.indeg === 0) {
          queueList.push(nodeitem);
        }
      });
      const orderList = [];
      for (let head = 0; head < queueList.length; head++) {
        const node = queueList[head];
        orderList.push(node);
        for (const lkItemitem of node.outgoing) {
          const toObjItem = nodeMap.get('' + lkItemitem.to);
          if (toObjItem) {
            const nextDeg = toObjItem.indeg - 1;
            toObjItem.indeg = nextDeg;
            if (nextDeg === 0) {
              queueList.push(nodeMap.get('' + lkItemitem.to));
            }
          }
        }
      }
      if (orderList.length !== nodeMap.size) {
        // 异常数据,依赖图中存在环
        if (ganttReactData.criticalRowIds.length || ganttReactData.criticalLinks.length) {
          ganttReactData.criticalPathFlag++;
        }
        ganttReactData.criticalLinks = [];
        ganttReactData.criticalRowIds = [];
        return;
      }
      // 正向:ES / EF
      let criticalDuration = 0;
      for (const node of orderList) {
        let earliestStart = 0;
        for (const lkItem of node.incoming) {
          const fromObjItem = nodeMap.get('' + lkItem.from);
          if (fromObjItem) {
            const need = forwardCriticalPathLowerBound(lkItem.type, fromObjItem.ES, fromObjItem.EF, node.duration);
            if (need > earliestStart) {
              earliestStart = need;
            }
          }
        }
        node.ES = earliestStart;
        node.EF = earliestStart + node.duration;
        if (node.EF > criticalDuration) {
          criticalDuration = node.EF;
        }
      }
      // 反向:LS / LF
      for (let i = orderList.length - 1; i >= 0; i--) {
        const node = orderList[i];
        let latestFinish = criticalDuration;
        for (const lkItem of node.outgoing) {
          const toObjItem = nodeMap.get('' + lkItem.to);
          if (toObjItem) {
            const need = backwardCriticalPathUpperBound(lkItem.type, toObjItem.LS, toObjItem.LF, node.duration);
            if (need < latestFinish) {
              latestFinish = need;
            }
          }
        }
        node.LF = latestFinish;
        node.LS = latestFinish - node.duration;
      }
      // 关键任务
      const criticalSet = new Set();
      const criticalRowIds = [];
      for (const nodeItem of orderList) {
        if (Math.abs(nodeItem.LS - nodeItem.ES) < tolerance) {
          criticalSet.add(nodeItem.rowid);
          criticalRowIds.push(nodeItem.rowid);
          criticalRowList.push(nodeItem.row);
          criticalRowMaps.set(nodeItem.rowid, nodeItem.row);
        }
      }
      // 关键连接线
      const criticalLinks = [];
      for (const lkItem of linkList) {
        const toObjItem = nodeMap.get('' + lkItem.to);
        const fromObjItem = nodeMap.get('' + lkItem.from);
        if (!toObjItem || !fromObjItem) {
          continue;
        }
        // 两端必须都是关键任务
        if (!criticalSet.has(fromObjItem.rowid) || !criticalSet.has(toObjItem.rowid)) {
          continue;
        }
        // 约束必须是连接的
        if (isCriticalPathLinkTight(lkItem.type, fromObjItem.ES, fromObjItem.EF, toObjItem.ES, toObjItem.EF, tolerance)) {
          criticalLinks.push(lkItem.raw);
          criticalLinkKeyMaps.set(getTaskLinkKey(lkItem.from, lkItem.to, lkItem.type), lkItem.raw);
        }
      }
      ganttReactData.criticalLinks = criticalLinks;
      ganttReactData.criticalRowIds = criticalRowIds;
      ganttReactData.criticalPathFlag++;
    }
    const calcScrollbar = () => {
      const {
        scrollXWidth,
        scrollYHeight
      } = reactData;
      const {
        elemStore
      } = internalData;
      const scrollbarOpts = computeScrollbarOpts.value;
      const bodyWrapperElem = getRefElem(elemStore['main-body-wrapper']);
      const xHandleEl = refScrollXHandleElem.value;
      const yHandleEl = refScrollYHandleElem.value;
      let overflowY = false;
      let overflowX = false;
      if (bodyWrapperElem) {
        overflowY = scrollYHeight > bodyWrapperElem.clientHeight;
        if (yHandleEl) {
          const scrollbarWidth = scrollbarOpts.width || yHandleEl.offsetWidth - yHandleEl.clientWidth || 14;
          reactData.scrollbarWidth = scrollbarWidth;
          ganttReactData.scrollbarWidth = scrollbarWidth;
        }
        reactData.overflowY = overflowY;
        ganttReactData.overflowY = overflowY;
        overflowX = scrollXWidth > bodyWrapperElem.clientWidth;
        if (xHandleEl) {
          const scrollbarHeight = scrollbarOpts.height || xHandleEl.offsetHeight - xHandleEl.clientHeight || 14;
          reactData.scrollbarHeight = scrollbarHeight;
          ganttReactData.scrollbarHeight = scrollbarHeight;
        }
        reactData.overflowX = overflowX;
        ganttReactData.overflowX = overflowX;
      }
    };
    const handleSubTaskMinMaxSize = ($xeTable, list) => {
      const {
        chartMaps
      } = internalData;
      const {
        computeTreeOpts
      } = $xeTable.getComputeMaps();
      const treeOpts = computeTreeOpts.value;
      const childrenField = treeOpts.children || treeOpts.childrenField;
      const typeField = computeTypeField.value;
      let minChildLeftSize = 0;
      let maxChildLeftSize = 0;
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(list, childRow => {
        const childRowid = $xeTable.getRowid(childRow);
        const renderTaskType = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(childRow, typeField);
        if (hasSubviewTask(renderTaskType)) {
          return;
        }
        const childChartRest = childRowid ? chartMaps[childRowid] : null;
        if (childChartRest) {
          maxChildLeftSize = Math.max(maxChildLeftSize, childChartRest.oLeftSize + childChartRest.oWidthSize);
          minChildLeftSize = minChildLeftSize ? Math.min(minChildLeftSize, childChartRest.oLeftSize) : childChartRest.oLeftSize;
        }
      }, {
        children: childrenField
      });
      return {
        minSize: minChildLeftSize,
        maxSize: maxChildLeftSize
      };
    };
    const updateTaskChartStyle = () => {
      const {
        dragBarRow
      } = ganttInternalData;
      const {
        viewCellWidth
      } = reactData;
      const {
        elemStore,
        chartMaps
      } = internalData;
      const $xeTable = internalData.xeTable;
      const chartWrapper = getRefElem(elemStore['main-chart-task-wrapper']);
      if (chartWrapper && $xeTable) {
        const {
          computeTreeOpts
        } = $xeTable.getComputeMaps();
        const treeOpts = computeTreeOpts.value;
        const childrenField = treeOpts.children || treeOpts.childrenField;
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(chartWrapper.children, rowEl => {
          const barEl = rowEl.children[0];
          if (!barEl) {
            return;
          }
          const rowid = rowEl.getAttribute('rowid');
          if (dragBarRow && $xeTable.getRowid(dragBarRow) === rowid) {
            return;
          }
          const chartRest = rowid ? chartMaps[rowid] : null;
          const row = chartRest ? chartRest.row : null;
          // 子任务视图
          if (hasClass(barEl, 'is--subview')) {
            const childWrapperEl = barEl.firstElementChild;
            if (childWrapperEl) {
              // 行内展示
              if (hasClass(childWrapperEl, 'is--inline')) {
                external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(childWrapperEl.children, childRowEl => {
                  const childBarEl = childRowEl.children[0];
                  const childRowid = childBarEl.getAttribute('rowid') || '';
                  const childChartRest = childRowid ? chartMaps[childRowid] : null;
                  if (childChartRest) {
                    const childRow = childChartRest.row;
                    // 如果是子视图
                    if (hasClass(childBarEl, 'is--subview')) {
                      const subChildren = childRow[childrenField];
                      const {
                        minSize: minChildLeftSize,
                        maxSize: maxChildLeftSize
                      } = handleSubTaskMinMaxSize($xeTable, subChildren);
                      childBarEl.style.left = `${viewCellWidth * minChildLeftSize}px`;
                      childBarEl.style.width = `${viewCellWidth * (maxChildLeftSize - minChildLeftSize)}px`;
                    } else {
                      childBarEl.style.left = `${getTaskBarLeft(childChartRest, viewCellWidth)}px`;
                      if (!hasClass(childBarEl, 'is--milestone')) {
                        // 里程碑不需要宽度
                        childBarEl.style.width = `${getTaskBarWidth(childChartRest, viewCellWidth)}px`;
                      }
                    }
                  }
                });
              } else {
                // 如果展开子任务
                const childRowEl = childWrapperEl.children[0];
                const childBarEl = childRowEl ? childRowEl.children[0] : null;
                if (childBarEl) {
                  const rowChildren = row ? row[childrenField] : [];
                  const {
                    minSize: minChildLeftSize,
                    maxSize: maxChildLeftSize
                  } = handleSubTaskMinMaxSize($xeTable, rowChildren);
                  childBarEl.style.left = `${viewCellWidth * minChildLeftSize}px`;
                  childBarEl.style.width = `${viewCellWidth * (maxChildLeftSize - minChildLeftSize)}px`;
                }
              }
            }
          } else {
            barEl.style.left = `${getTaskBarLeft(chartRest, viewCellWidth)}px`;
            // 里程碑不需要宽度
            if (!hasClass(barEl, 'is--milestone')) {
              barEl.style.width = `${getTaskBarWidth(chartRest, viewCellWidth)}px`;
            }
          }
        });
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    const updateStyle = () => {
      const {
        showLeftView
      } = ganttReactData;
      const {
        scrollbarWidth,
        scrollbarHeight,
        headerGroups,
        tableColumn
      } = reactData;
      const {
        elemStore,
        visibleColumn
      } = internalData;
      const $xeTable = internalData.xeTable;
      const el = refElem.value;
      if (!el) {
        return;
      }
      if (!$xeGantt) {
        return;
      }
      const scrollbarOpts = computeScrollbarOpts.value;
      const scrollbarXToTop = computeScrollbarXToTop.value;
      const scrollbarYToLeft = computeScrollbarYToLeft.value;
      const xLeftCornerEl = refScrollXLeftCornerElem.value;
      const xRightCornerEl = refScrollXRightCornerElem.value;
      const scrollXVirtualEl = refScrollXVirtualElem.value;
      let osbWidth = scrollbarWidth;
      const osbHeight = scrollbarHeight;
      let tbHeight = 0;
      let tHeaderHeight = 0;
      let tFooterHeight = 0;
      if ($xeTable) {
        const tableInternalData = $xeTable.internalData;
        tbHeight = tableInternalData.tBodyHeight;
        tHeaderHeight = tableInternalData.tHeaderHeight;
        tFooterHeight = tableInternalData.tFooterHeight;
      }
      let yScrollbarVisible = 'visible';
      if (scrollbarYToLeft && showLeftView || scrollbarOpts.y && scrollbarOpts.y.visible === false) {
        osbWidth = 0;
        yScrollbarVisible = 'hidden';
      }
      const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
      if (headerScrollElem) {
        headerScrollElem.style.height = `${tHeaderHeight}px`;
        headerScrollElem.style.setProperty('--vxe-ui-gantt-view-cell-height', `${tHeaderHeight / headerGroups.length}px`);
      }
      const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
      if (bodyScrollElem) {
        bodyScrollElem.style.height = `${tbHeight}px`;
      }
      const footerScrollElem = getRefElem(elemStore['main-footer-scroll']);
      if (footerScrollElem) {
        footerScrollElem.style.height = `${tFooterHeight}px`;
      }
      if (scrollXVirtualEl) {
        scrollXVirtualEl.style.height = `${osbHeight}px`;
        scrollXVirtualEl.style.visibility = 'visible';
      }
      const xWrapperEl = refScrollXWrapperElem.value;
      if (xWrapperEl) {
        xWrapperEl.style.left = scrollbarXToTop ? `${osbWidth}px` : '';
        xWrapperEl.style.width = `${el.clientWidth - osbWidth}px`;
      }
      if (xLeftCornerEl) {
        xLeftCornerEl.style.width = scrollbarXToTop ? `${osbWidth}px` : '';
        xLeftCornerEl.style.display = scrollbarXToTop ? osbHeight ? 'block' : '' : '';
      }
      if (xRightCornerEl) {
        xRightCornerEl.style.width = scrollbarXToTop ? '' : `${osbWidth}px`;
        xRightCornerEl.style.display = scrollbarXToTop ? '' : osbHeight ? '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 ? '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 ? 'block' : '';
      }
      const colInfoElem = refColInfoElem.value;
      let viewCellWidth = 40;
      if (colInfoElem) {
        viewCellWidth = colInfoElem.clientWidth || 40;
      }
      let viewTableWidth = viewCellWidth;
      if (visibleColumn.length) {
        viewTableWidth = Math.max(0, viewCellWidth * visibleColumn.length);
        if (bodyScrollElem) {
          const viewWidth = bodyScrollElem.clientWidth;
          const remainWidth = viewWidth - viewTableWidth;
          if (remainWidth > 0) {
            viewCellWidth += Math.max(0, remainWidth / visibleColumn.length);
            viewTableWidth = viewWidth;
          }
        }
      }
      reactData.viewCellWidth = viewCellWidth;
      const headerTableElem = getRefElem(elemStore['main-header-table']);
      const bodyTableElem = getRefElem(elemStore['main-body-table']);
      const vmTableWidth = viewCellWidth * tableColumn.length;
      if (headerTableElem) {
        headerTableElem.style.width = `${viewTableWidth}px`;
      }
      if (bodyTableElem) {
        bodyTableElem.style.width = `${vmTableWidth}px`;
      }
      reactData.scrollXWidth = viewTableWidth;
      return Promise.all([updateTaskChartStyle(), $xeGantt.handleUpTaskLinkStyle ? $xeGantt.handleUpTaskLinkStyle($xeGanttView) : null]);
    };
    const handleRecalculateStyle = () => {
      const el = refElem.value;
      internalData.rceRunTime = Date.now();
      if (!el || !el.clientWidth) {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      }
      if (!$xeGantt) {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      }
      calcScrollbar();
      updateStyle();
      return computeScrollLoad();
    };
    const handleLazyRecalculate = () => {
      return new Promise(resolve => {
        const {
          rceTimeout,
          rceRunTime
        } = internalData;
        const $xeTable = internalData.xeTable;
        let refreshDelay = 30;
        if ($xeTable) {
          const {
            computeResizeOpts
          } = $xeTable.getComputeMaps();
          const resizeOpts = computeResizeOpts.value;
          refreshDelay = resizeOpts.refreshDelay || refreshDelay;
        }
        if (rceTimeout) {
          clearTimeout(rceTimeout);
          if (rceRunTime && rceRunTime + (refreshDelay - 5) < Date.now()) {
            resolve(handleRecalculateStyle());
          } else {
            (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
              resolve();
            });
          }
        } else {
          resolve(handleRecalculateStyle());
        }
        internalData.rceTimeout = setTimeout(() => {
          internalData.rceTimeout = undefined;
          handleRecalculateStyle();
        }, refreshDelay);
      });
    };
    const computeScrollLoad = () => {
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
        const {
          scrollXLoad
        } = reactData;
        const {
          scrollXStore
        } = internalData;
        // 计算 X 逻辑
        if (scrollXLoad) {
          const {
            toVisibleIndex: toXVisibleIndex,
            visibleSize: visibleXSize
          } = handleVirtualXVisible();
          const offsetXSize = 2;
          scrollXStore.preloadSize = 1;
          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);
          updateScrollXData().then(() => {
            loadScrollXData();
          });
        } else {
          updateScrollXSpace();
        }
      });
    };
    const handleVirtualXVisible = () => {
      const {
        viewCellWidth
      } = reactData;
      const {
        elemStore
      } = internalData;
      const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
      if (bodyScrollElem) {
        const clientWidth = bodyScrollElem.clientWidth;
        const scrollLeft = bodyScrollElem.scrollLeft;
        const toVisibleIndex = Math.floor(scrollLeft / viewCellWidth) - 1;
        const visibleSize = Math.ceil(clientWidth / viewCellWidth) + 1;
        return {
          toVisibleIndex: Math.max(0, toVisibleIndex),
          visibleSize: Math.max(1, visibleSize)
        };
      }
      return {
        toVisibleIndex: 0,
        visibleSize: 6
      };
    };
    const loadScrollXData = () => {
      const {
        isScrollXBig
      } = reactData;
      const {
        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;
      const {
        startIndex: offsetStartIndex,
        endIndex: offsetEndIndex
      } = offsetItem;
      if (toVisibleIndex <= startIndex || toVisibleIndex >= endIndex - visibleSize - 1) {
        if (startIndex !== offsetStartIndex || endIndex !== offsetEndIndex) {
          scrollXStore.startIndex = offsetStartIndex;
          scrollXStore.endIndex = offsetEndIndex;
          updateScrollXData();
        }
      }
    };
    const updateScrollXData = () => {
      handleTableColumn();
      updateScrollXSpace();
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    const updateScrollXStatus = () => {
      const scrollXLoad = true;
      reactData.scrollXLoad = scrollXLoad;
      return scrollXLoad;
    };
    const handleTableColumn = () => {
      const {
        scrollXLoad
      } = reactData;
      const {
        visibleColumn,
        scrollXStore
      } = internalData;
      const tableColumn = scrollXLoad ? visibleColumn.slice(scrollXStore.startIndex, scrollXStore.endIndex) : visibleColumn.slice(0);
      reactData.tableColumn = tableColumn;
    };
    const updateScrollXSpace = () => {
      const {
        scrollXLoad,
        scrollXWidth,
        viewCellWidth
      } = reactData;
      const {
        elemStore,
        scrollXStore
      } = internalData;
      const bodyTableElem = getRefElem(elemStore['main-body-table']);
      // const headerTableElem = getRefElem(elemStore['main-header-table'])
      // const footerTableElem = getRefElem(elemStore['main-footer-table'])
      const {
        startIndex
      } = scrollXStore;
      let xSpaceLeft = 0;
      if (scrollXLoad) {
        xSpaceLeft = Math.max(0, startIndex * viewCellWidth);
      }
      // if (headerTableElem) {
      //   headerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
      // }
      if (bodyTableElem) {
        bodyTableElem.style.transform = `translate(${xSpaceLeft}px, ${reactData.scrollYTop || 0}px)`;
      }
      // if (footerTableElem) {
      //   footerTableElem.style.transform = `translate(${xSpaceLeft}px, 0px)`
      // }
      const ySpaceWidth = scrollXWidth;
      const layoutList = ['header', 'body', 'footer'];
      layoutList.forEach(layout => {
        const xSpaceElem = getRefElem(elemStore[`main-${layout}-xSpace`]);
        if (xSpaceElem) {
          xSpaceElem.style.width = scrollXLoad ? `${ySpaceWidth}px` : '';
        }
      });
      const scrollXSpaceEl = refScrollXSpaceElem.value;
      if (scrollXSpaceEl) {
        scrollXSpaceEl.style.width = `${ySpaceWidth}px`;
      }
      const beforeWrapper = getRefElem(elemStore['main-chart-before-wrapper']);
      const beforeSvgElem = beforeWrapper ? beforeWrapper.firstElementChild : null;
      if (beforeSvgElem) {
        beforeSvgElem.style.width = `${ySpaceWidth}px`;
      }
      const afterWrapper = getRefElem(elemStore['main-chart-after-wrapper']);
      const afterSvgElem = afterWrapper ? afterWrapper.firstElementChild : null;
      if (afterSvgElem) {
        afterSvgElem.style.width = `${ySpaceWidth}px`;
      }
      reactData.scrollXLeft = xSpaceLeft;
      reactData.scrollXWidth = ySpaceWidth;
      calcScrollbar();
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
    };
    const triggerScrollXEvent = () => {
      loadScrollXData();
    };
    const updateScrollYSpace = () => {
      const {
        scrollYLoad,
        overflowY
      } = reactData;
      const {
        elemStore
      } = internalData;
      const $xeTable = internalData.xeTable;
      const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
      const bodyTableElem = getRefElem(elemStore['main-body-table']);
      let ySpaceTop = 0;
      let scrollYHeight = 0;
      let isScrollYBig = false;
      if ($xeTable) {
        const tableReactData = $xeTable.reactData;
        ySpaceTop = tableReactData.scrollYTop;
        scrollYHeight = tableReactData.scrollYHeight;
        isScrollYBig = tableReactData.isScrollYBig;
      }
      let ySpaceHeight = scrollYHeight;
      let scrollYTop = ySpaceTop;
      let clientHeight = 0;
      if (bodyScrollElem) {
        clientHeight = bodyScrollElem.clientHeight;
      }
      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;
      }
      const bodyChartWrapperElem = getRefElem(elemStore['main-chart-task-wrapper']);
      if (bodyTableElem) {
        bodyTableElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`;
      }
      if (bodyChartWrapperElem) {
        bodyChartWrapperElem.style.transform = `translateY(${scrollYTop}px)`;
      }
      const bodyYSpaceElem = getRefElem(elemStore['main-body-ySpace']);
      if (bodyYSpaceElem) {
        bodyYSpaceElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
      }
      const scrollYSpaceEl = refScrollYSpaceElem.value;
      if (scrollYSpaceEl) {
        scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
      }
      const beforeWrapper = getRefElem(elemStore['main-chart-before-wrapper']);
      const beforeSvgElem = beforeWrapper ? beforeWrapper.firstElementChild : null;
      if (beforeSvgElem) {
        beforeSvgElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
      }
      const afterWrapper = getRefElem(elemStore['main-chart-after-wrapper']);
      const afterSvgElem = afterWrapper ? afterWrapper.firstElementChild : null;
      if (afterSvgElem) {
        afterSvgElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
      }
      const nowLineElem = getRefElem(elemStore['main-chart-now-line']);
      if (nowLineElem) {
        nowLineElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
      }
      reactData.scrollYTop = scrollYTop;
      reactData.scrollYHeight = scrollYHeight;
      reactData.isScrollYBig = isScrollYBig;
      calcScrollbar();
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
        updateStyle();
      });
    };
    // eslint-disable-next-line @typescript-eslint/no-unused-vars
    const checkLastSyncScroll = (isRollX, isRollY) => {
      const {
        lcsTimeout
      } = internalData;
      reactData.lazScrollLoading = true;
      if (lcsTimeout) {
        clearTimeout(lcsTimeout);
      }
      internalData.lcsTimeout = setTimeout(() => {
        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;
      }, 200);
    };
    const handleScrollData = (isRollY, isRollX, scrollTop, scrollLeft) => {
      if (isRollX) {
        internalData.lastScrollLeft = scrollLeft;
      }
      if (isRollY) {
        internalData.lastScrollTop = scrollTop;
      }
      reactData.lastScrollTime = Date.now();
      checkLastSyncScroll(isRollX, isRollY);
    };
    const handleScrollEvent = (evnt, isRollY, isRollX, scrollTop, scrollLeft) => {
      const $xeTable = internalData.xeTable;
      const {
        lastScrollLeft,
        lastScrollTop
      } = internalData;
      const xHandleEl = refScrollXHandleElem.value;
      const yHandleEl = refScrollYHandleElem.value;
      if (!xHandleEl || !yHandleEl) {
        return;
      }
      if (!$xeTable) {
        return;
      }
      const {
        computeScrollXThreshold,
        computeScrollYThreshold
      } = $xeTable.getComputeMaps();
      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 - 1;
        }
        if (scrollLeft > lastScrollLeft) {
          direction = 'right';
          if (scrollLeft + bodyWidth >= scrollWidth - xThreshold) {
            isRightBoundary = true;
          }
        } else {
          direction = 'left';
          if (scrollLeft <= xThreshold) {
            isLeftBoundary = true;
          }
        }
      }
      if (isRollY) {
        const yThreshold = computeScrollYThreshold.value;
        isTop = scrollTop <= 0;
        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;
          }
        }
      }
      handleScrollData(isRollY, isRollX, scrollTop, scrollLeft);
      const evntParams = {
        source: gantt_view_sourceType,
        scrollTop,
        scrollLeft,
        bodyHeight,
        bodyWidth,
        scrollHeight,
        scrollWidth,
        isX: isRollX,
        isY: isRollY,
        isTop,
        isBottom,
        isLeft,
        isRight,
        direction
      };
      if (isBottomBoundary || isTopBoundary || isRightBoundary || isLeftBoundary) {
        $xeGantt.dispatchEvent('scroll-boundary', evntParams, evnt);
      }
      $xeGantt.dispatchEvent('scroll', evntParams, evnt);
    };
    const ganttViewMethods = {
      refreshData() {
        handleUpdateData();
        handleRecalculateStyle();
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)().then(() => {
          const $xeTable = internalData.xeTable;
          handleRecalculateStyle();
          if ($xeTable) {
            return $xeTable.recalculate();
          }
        });
      },
      updateViewData(force) {
        const $xeTable = internalData.xeTable;
        if ($xeTable) {
          const tableReactData = $xeTable.reactData;
          const {
            tableData
          } = tableReactData;
          reactData.tableData = tableData;
          if (force) {
            ganttReactData.currLeftSpacing = 0;
            ganttReactData.currRightSpacing = 0;
            handleUpdateData();
          }
          handleRecalculateStyle();
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      connectUpdate({
        $table
      }) {
        if ($table) {
          internalData.xeTable = $table;
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      }
    };
    /**
     * 同步表格滚动
     */
    const syncTableScrollTop = scrollTop => {
      const $xeTable = internalData.xeTable;
      if ($xeTable) {
        const tableInternalData = $xeTable.internalData;
        const {
          elemStore: tableElemStore
        } = tableInternalData;
        const tableBodyScrollElem = getRefElem(tableElemStore['main-body-scroll']);
        if (tableBodyScrollElem) {
          tableBodyScrollElem.scrollTop = scrollTop;
        }
      }
    };
    const ganttViewPrivateMethods = {
      handleUpdateStyle: updateStyle,
      handleLazyRecalculate,
      handleUpdateCurrentRow(row) {
        const $xeTable = internalData.xeTable;
        const el = refElem.value;
        if ($xeTable && el) {
          if (row) {
            const tableProps = $xeTable.props;
            const {
              computeRowOpts
            } = $xeTable.getComputeMaps();
            const rowOpts = computeRowOpts.value;
            if (rowOpts.isCurrent || tableProps.highlightCurrentRow) {
              external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${$xeTable.getRowid(row)}"]`), elem => addClass(elem, 'row--current'));
            }
          } else {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll('.vxe-gantt-view--body-row.row--current'), elem => removeClass(elem, 'row--current'));
          }
        }
      },
      handleUpdateHoverRow(row) {
        const $xeTable = internalData.xeTable;
        const el = refElem.value;
        if ($xeTable && el) {
          if (row) {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll(`.vxe-gantt-view--body-row[rowid="${$xeTable.getRowid(row)}"]`), elem => addClass(elem, 'row--hover'));
          } else {
            external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().arrayEach(el.querySelectorAll('.vxe-gantt-view--body-row.row--hover'), elem => removeClass(elem, 'row--hover'));
          }
        }
      },
      triggerHeaderScrollEvent(evnt) {
        const {
          elemStore,
          inVirtualScroll,
          inBodyScroll,
          inFooterScroll
        } = internalData;
        if (inVirtualScroll) {
          return;
        }
        if (inBodyScroll || inFooterScroll) {
          return;
        }
        const wrapperEl = evnt.currentTarget;
        const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
        const xHandleEl = refScrollXHandleElem.value;
        if (bodyScrollElem && wrapperEl) {
          const isRollX = true;
          const isRollY = false;
          const currLeftNum = wrapperEl.scrollLeft;
          internalData.inHeaderScroll = true;
          setScrollLeft(xHandleEl, currLeftNum);
          setScrollLeft(bodyScrollElem, currLeftNum);
          handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
        }
      },
      triggerBodyScrollEvent(evnt) {
        const {
          scrollXLoad
        } = reactData;
        const {
          elemStore,
          inVirtualScroll,
          inHeaderScroll,
          inFooterScroll,
          lastScrollLeft,
          lastScrollTop
        } = internalData;
        if (inVirtualScroll) {
          return;
        }
        if (inHeaderScroll || inFooterScroll) {
          return;
        }
        const wrapperEl = evnt.currentTarget;
        const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
        const xHandleEl = refScrollXHandleElem.value;
        const yHandleEl = refScrollYHandleElem.value;
        const scrollLeft = wrapperEl.scrollLeft;
        const scrollTop = wrapperEl.scrollTop;
        const isRollX = scrollLeft !== lastScrollLeft;
        const isRollY = scrollTop !== lastScrollTop;
        internalData.inBodyScroll = true;
        internalData.scrollRenderType = '';
        if (isRollY) {
          setScrollTop(yHandleEl, scrollTop);
          syncTableScrollTop(scrollTop);
        }
        if (isRollX) {
          internalData.inBodyScroll = true;
          setScrollLeft(xHandleEl, scrollLeft);
          setScrollLeft(headerScrollElem, scrollLeft);
          if (scrollXLoad) {
            triggerScrollXEvent();
          }
        }
        if (isRollY) {
          handleScrollData(isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
        }
        if (isRollX) {
          handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, scrollLeft);
        }
      },
      // triggerFooterScrollEvent (evnt) {
      //   const { inVirtualScroll, inHeaderScroll, inBodyScroll } = internalData
      //   if (inVirtualScroll) {
      //     return
      //   }
      //   if (inHeaderScroll || inBodyScroll) {
      //     return
      //   }
      //   const wrapperEl = evnt.currentTarget as HTMLDivElement
      //   if (wrapperEl) {
      //     const isRollX = true
      //     const isRollY = false
      //     const currLeftNum = wrapperEl.scrollLeft
      //     handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum)
      //   }
      // },
      triggerVirtualScrollXEvent(evnt) {
        const {
          scrollXLoad
        } = reactData;
        const {
          elemStore,
          inHeaderScroll,
          inBodyScroll
        } = internalData;
        if (inHeaderScroll || inBodyScroll) {
          return;
        }
        const wrapperEl = evnt.currentTarget;
        const headerScrollElem = getRefElem(elemStore['main-header-scroll']);
        const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
        if (wrapperEl) {
          const isRollY = false;
          const isRollX = true;
          const currLeftNum = wrapperEl.scrollLeft;
          internalData.inVirtualScroll = true;
          setScrollLeft(headerScrollElem, currLeftNum);
          setScrollLeft(bodyScrollElem, currLeftNum);
          if (scrollXLoad) {
            triggerScrollXEvent();
          }
          handleScrollEvent(evnt, isRollY, isRollX, wrapperEl.scrollTop, currLeftNum);
        }
      },
      triggerVirtualScrollYEvent(evnt) {
        const {
          elemStore,
          inHeaderScroll,
          inBodyScroll
        } = internalData;
        if (inHeaderScroll || inBodyScroll) {
          return;
        }
        const wrapperEl = evnt.currentTarget;
        const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
        if (wrapperEl) {
          const isRollY = true;
          const isRollX = false;
          const currTopNum = wrapperEl.scrollTop;
          internalData.inVirtualScroll = true;
          setScrollTop(bodyScrollElem, currTopNum);
          syncTableScrollTop(currTopNum);
          handleScrollData(isRollY, isRollX, currTopNum, wrapperEl.scrollLeft);
        }
      },
      handleUpdateSXSpace() {
        return updateScrollXSpace();
      },
      handleUpdateSYSpace() {
        return updateScrollYSpace();
      },
      handleUpdateSYStatus(sYLoad) {
        reactData.scrollYLoad = sYLoad;
      }
    };
    const handleGlobalResizeEvent = () => {
      handleLazyRecalculate();
    };
    Object.assign($xeGanttView, ganttViewMethods, ganttViewPrivateMethods);
    const renderScrollX = () => {
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        key: 'vsx',
        ref: refScrollXVirtualElem,
        class: 'vxe-gantt-view--scroll-x-virtual'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollXLeftCornerElem,
        class: 'vxe-gantt-view--scroll-x-left-corner'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollXWrapperElem,
        class: 'vxe-gantt-view--scroll-x-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollXHandleElem,
        class: 'vxe-gantt-view--scroll-x-handle',
        onScroll: $xeGanttView.triggerVirtualScrollXEvent
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollXSpaceElem,
        class: 'vxe-gantt-view--scroll-x-space'
      })]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt-view--scroll-x-handle-appearance'
      })]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollXRightCornerElem,
        class: 'vxe-gantt-view--scroll-x-right-corner'
      })]);
    };
    const renderScrollY = () => {
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollYVirtualElem,
        class: 'vxe-gantt-view--scroll-y-virtual'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollYTopCornerElem,
        class: 'vxe-gantt-view--scroll-y-top-corner'
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollYWrapperElem,
        class: 'vxe-gantt-view--scroll-y-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollYHandleElem,
        class: 'vxe-gantt-view--scroll-y-handle',
        onScroll: $xeGanttView.triggerVirtualScrollYEvent
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollYSpaceElem,
        class: 'vxe-gantt-view--scroll-y-space'
      })]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt-view--scroll-y-handle-appearance'
      })]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refScrollYBottomCornerElem,
        class: 'vxe-gantt-view--scroll-y-bottom-corner'
      })]);
    };
    const renderViewport = () => {
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt-view--viewport-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(gantt_header), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(gantt_body), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(gantt_footer)]);
    };
    const renderBody = () => {
      const scrollbarYToLeft = computeScrollbarYToLeft.value;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt-view--layout-wrapper'
      }, scrollbarYToLeft ? [renderScrollY(), renderViewport()] : [renderViewport(), renderScrollY()]);
    };
    const renderVN = () => {
      const {
        overflowX,
        overflowY,
        scrollXLoad,
        scrollYLoad
      } = reactData;
      const scrollbarXToTop = computeScrollbarXToTop.value;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-gantt-view', {
          'is--scroll-y': overflowY,
          'is--scroll-x': overflowX,
          'is--virtual-x': scrollXLoad,
          'is--virtual-y': scrollYLoad
        }]
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt-view--render-wrapper'
      }, scrollbarXToTop ? [renderScrollX(), renderBody()] : [renderBody(), renderScrollX()]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt-view--render-vars'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refColInfoElem,
        class: 'vxe-gantt-view--column-info'
      })])]);
    };
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      globalEvents.on($xeGanttView, 'resize', handleGlobalResizeEvent);
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onBeforeUnmount)(() => {
      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)(() => {
      globalEvents.off($xeGanttView, 'keydown');
    });
    $xeGanttView.renderVN = renderVN;
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeGanttView', $xeGanttView);
    return $xeGanttView;
  },
  render() {
    return this.renderVN();
  }
}));
// EXTERNAL MODULE: external {"root":"VxeUITable","commonjs":"vxe-table","commonjs2":"vxe-table","amd":"vxe-table"}
var external_root_VxeUITable_commonjs_vxe_table_commonjs2_vxe_table_amd_vxe_table_ = __webpack_require__(1037);
;// ./packages/gantt/src/gantt.ts






















const {
  warnLog: gantt_warnLog,
  errLog: gantt_errLog
} = createComponentLog('gantt');
const {
  getConfig,
  getIcon: gantt_getIcon,
  getI18n: gantt_getI18n,
  commands,
  hooks,
  useFns,
  createEvent,
  globalEvents: gantt_globalEvents,
  GLOBAL_EVENT_KEYS,
  renderEmptyElement: gantt_renderEmptyElement
} = core_.VxeUI;
const tableProps = external_root_VxeUITable_commonjs_vxe_table_commonjs2_vxe_table_amd_vxe_table_.VxeTable.props;
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', 'scrollTo', 'scrollToStartRow', 'scrollToEndRow', 'scrollToRow', 'scrollToStartColumn', 'scrollToEndColumn', 'scrollToColumn', 'clearScroll', 'updateFooter', 'updateStatus', 'setMergeCells', 'removeInsertRow', 'removeMergeCells', 'getMergeCells', 'clearMergeCells', 'setMergeFooterItems', 'removeMergeFooterItems', 'getMergeFooterItems', 'clearMergeFooterItems', 'getCustomStoreData', 'setRowGroupExpand', 'setRowGroupExpandByField', 'setAllRowGroupExpand', 'clearRowGroupExpand', 'isRowGroupExpandByRow', 'isRowGroupRecord', 'isAggregateRecord', 'isAggregateExpandByRow', 'getAggregateContentByRow', 'getAggregateRowChildren', 'setRowGroups', 'clearRowGroups', 'openTooltip', 'moveColumnTo', 'moveRowTo', 'getCellLabel', 'undo', 'redo', 'getCellElement', 'focus', 'blur', 'connect'];
const defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Gantt', 'Bottom', 'Pager']];
function gantt_createInternalData() {
  return {
    linkFromConfMaps: {},
    linkToConfMaps: {},
    linkUniqueMaps: {},
    uFoot: false,
    resizeTableWidth: 0,
    // barTipTimeout: null,
    // dragBarRow: null,
    // dragLineRow: null,
    dragLinkToStore: {
      rowid: null,
      type: 0
    },
    // 关键路径
    criticalRowList: [],
    criticalRowMaps: new Map(),
    criticalLinkKeyMaps: new Map()
  };
}
function gantt_createReactData() {
  return {
    tableLoading: false,
    proxyInited: false,
    // 是否存在纵向滚动条
    overflowY: false,
    // 是否存在横向滚动条
    overflowX: false,
    // 纵向滚动条的宽度
    scrollbarWidth: 0,
    // 横向滚动条的高度
    scrollbarHeight: 0,
    isZMax: false,
    tableLinks: [],
    tableData: [],
    filterData: [],
    formData: {},
    sortData: [],
    footerData: [],
    tZindex: 0,
    tablePage: {
      total: 0,
      pageSize: getConfig().pager?.pageSize || 10,
      currentPage: 1
    },
    showLeftView: true,
    showRightView: true,
    taskScaleList: [],
    barTipStore: {
      row: null,
      content: '',
      visible: false,
      params: null
    },
    dragLinkFromStore: {
      rowid: null,
      type: 0
    },
    activeBarRowid: null,
    activeLink: null,
    isActiveCeLe: false,
    linkList: [],
    upLinkFlag: 0,
    showSplitAnimat: false,
    nowTime: 0,
    currLeftSpacing: 0,
    currRightSpacing: 0,
    // 关键路径
    criticalLinks: [],
    criticalRowIds: [],
    criticalPathFlag: 0
  };
}
const viewTypeLevelMaps = {
  year: 19,
  quarter: 17,
  month: 15,
  week: 13,
  day: 11,
  date: 9,
  hour: 7,
  minute: 5,
  second: 3
};
function getViewTypeLevel(type) {
  return viewTypeLevelMaps[type || 'date'] || viewTypeLevelMaps.date;
}
/* harmony default export */ var gantt = (defineVxeComponent({
  name: 'VxeGantt',
  mixins: [],
  props: {
    ...tableProps,
    columns: Array,
    pagerConfig: Object,
    proxyConfig: Object,
    toolbarConfig: Object,
    formConfig: Object,
    zoomConfig: Object,
    links: Array,
    layouts: Array,
    taskConfig: Object,
    taskViewScaleConfig: Object,
    taskNowLineConfig: Object,
    taskViewConfig: Object,
    taskLinkConfig: Object,
    taskBarConfig: Object,
    taskBarMilestoneConfig: Object,
    taskCriticalPathConfig: Object,
    taskBarSubviewConfig: Object,
    taskBarTooltipConfig: Object,
    taskSplitConfig: Object,
    taskBarResizeConfig: Object,
    taskBarResizeTooltipConfig: Object,
    taskBarMoveConfig: Object,
    taskBarMoveTooltipConfig: Object,
    size: {
      type: String,
      default: () => getConfig().gantt.size || getConfig().size
    }
  },
  emits: ganttEmits,
  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 VxeTableComponent = core_.VxeUI.getComponent('VxeTable');
    const VxeToolbarComponent = core_.VxeUI.getComponent('VxeToolbar');
    const VxeUITooltipComponent = core_.VxeUI.getComponent('VxeTooltip');
    const {
      computeSize
    } = useFns.useSize(props);
    const reactData = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.reactive)(gantt_createReactData());
    const internalData = gantt_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 refGanttContainerElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refClassifyWrapperElem = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refGanttView = (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 refTableWrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refGanttWrapper = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refTooltip = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)();
    const refResizableSplitTip = (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 ganttExtendTableMethods = extendTableMethods(tableComponentMethodKeys);
    tableComponentMethodKeys.forEach(name => {
      ganttExtendTableMethods[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(getConfig().gantt.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({}, getConfig().gantt.pagerConfig, props.pagerConfig);
    });
    const computeFormOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.formConfig, props.formConfig);
    });
    const computeToolbarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.toolbarConfig, props.toolbarConfig);
    });
    const computeZoomOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.zoomConfig, props.zoomConfig);
    });
    const computeTaskOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskConfig, props.taskConfig);
    });
    const computeTaskViewScaleOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().merge({}, getConfig().gantt.taskViewScaleConfig, props.taskViewScaleConfig);
    });
    const computeTaskNowLineOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskNowLineConfig, props.taskNowLineConfig);
    });
    const computeTaskViewOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskViewConfig, props.taskViewConfig);
    });
    const computeTaskBarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskBarConfig, props.taskBarConfig);
    });
    const computeTaskBarMoveOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskBarMoveConfig, props.taskBarMoveConfig);
    });
    const computeTaskBarMoveTooltipOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskBarMoveTooltipConfig, props.taskBarMoveTooltipConfig);
    });
    const computeTaskBarResizeOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskBarResizeConfig, props.taskBarResizeConfig);
    });
    const computeTaskBarResizeTooltipOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskBarResizeTooltipConfig, props.taskBarResizeTooltipConfig);
    });
    const computeTaskSplitOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskSplitConfig, props.taskSplitConfig);
    });
    const computeTaskBarMilestoneOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskBarMilestoneConfig, props.taskBarMilestoneConfig);
    });
    const computeTaskCriticalPathOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskCriticalPathConfig, props.taskCriticalPathConfig);
    });
    const computeTaskBarSubviewOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskBarSubviewConfig, props.taskBarSubviewConfig);
    });
    const computeTaskBarTooltipOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskBarTooltipConfig, props.taskBarTooltipConfig);
    });
    const computeTaskLinkOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.taskLinkConfig, props.taskLinkConfig);
    });
    const computeDateFormat = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const taskOpts = computeTaskOpts.value;
      const {
        dateFormat
      } = taskOpts;
      return dateFormat || '';
    });
    const computeScaleUnit = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const minScale = computeMinScale.value;
      return minScale ? minScale.type : 'date';
    });
    const computeMinScale = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        taskScaleList
      } = reactData;
      return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().last(taskScaleList);
    });
    const computeScaleStep = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const minScale = computeMinScale.value;
      const {
        step
      } = minScale;
      return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(step || 1) || 1;
    });
    const computeWeekScale = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        taskScaleList
      } = reactData;
      return taskScaleList.find(item => item.type === 'week');
    });
    const computeTaskViewScales = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const taskViewOpts = computeTaskViewOpts.value;
      const {
        scales
      } = taskViewOpts;
      return scales;
    });
    const computeTaskLinkStyle = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        lineType,
        lineWidth,
        lineStatus,
        lineColor
      } = computeTaskLinkOpts.value;
      return `${lineType || ''}_${lineWidth || ''}_${lineStatus || ''}_${lineColor || ''}`;
    });
    const computeTitleField = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const taskOpts = computeTaskOpts.value;
      return taskOpts.titleField || 'title';
    });
    const computeStartField = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const taskOpts = computeTaskOpts.value;
      return taskOpts.startField || 'start';
    });
    const computeEndField = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const taskOpts = computeTaskOpts.value;
      return taskOpts.endField || 'end';
    });
    const computeTypeField = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const taskOpts = computeTaskOpts.value;
      return taskOpts.typeField || 'type';
    });
    const computeProgressField = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const taskOpts = computeTaskOpts.value;
      return taskOpts.progressField || 'progress';
    });
    const computeScrollbarOpts = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      return Object.assign({}, getConfig().gantt.scrollbarConfig, props.scrollbarConfig);
    });
    const computeScrollbarXToTop = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const scrollbarOpts = computeScrollbarOpts.value;
      return !!(scrollbarOpts.x && scrollbarOpts.x.position === 'top');
    });
    const computeScrollbarYToLeft = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const scrollbarOpts = computeScrollbarOpts.value;
      return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left');
    });
    const computeCriticalPathVisible = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const taskBarOpts = computeTaskBarOpts.value;
      return taskBarOpts.showCriticalPath;
    });
    const computeWrapperStyle = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const {
        height,
        maxHeight,
        taskBarSubviewConfig
      } = props;
      const {
        isZMax,
        tZindex,
        overflowY,
        scrollbarWidth
      } = reactData;
      const taskViewOpts = computeTaskViewOpts.value;
      const {
        viewStyle,
        tableStyle
      } = taskViewOpts;
      const taskBarOpts = computeTaskBarOpts.value;
      const {
        barStyle
      } = taskBarOpts;
      const taskCriticalPathOpts = computeTaskCriticalPathOpts.value;
      const {
        lineColor: cpLineColor
      } = taskCriticalPathOpts;
      const taskBarSubviewOpts = computeTaskBarSubviewOpts.value;
      const taskNowLineOpts = computeTaskNowLineOpts.value;
      const {
        fontColor: nlfColor,
        bgColor: nlbgColor,
        width: nlWidth
      } = taskNowLineOpts;
      const stys = {
        '--vxe-ui-gantt-scrollbar-width': (overflowY && scrollbarWidth ? scrollbarWidth : 0) + 'px'
      };
      if (cpLineColor) {
        stys['--vxe-ui-gantt-view-bar-critical-path-line-color'] = cpLineColor;
      }
      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);
        }
      }
      if (barStyle && !external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isFunction(barStyle)) {
        const {
          bgColor,
          completedBgColor,
          overviewBgColor
        } = barStyle;
        if (bgColor) {
          stys['--vxe-ui-gantt-view-task-bar-background-color'] = bgColor;
        }
        if (completedBgColor) {
          stys['--vxe-ui-gantt-view-task-bar-completed-background-color'] = completedBgColor;
        }
        if (overviewBgColor && hasEnableConf(taskBarSubviewConfig, taskBarSubviewOpts)) {
          stys['--vxe-ui-gantt-view-task-bar-overview-background-color'] = overviewBgColor;
        }
      }
      if (nlfColor) {
        stys['--vxe-ui-gantt-view-task-now-line-color'] = nlfColor;
      }
      if (nlbgColor) {
        stys['--vxe-ui-gantt-view-task-now-line-background-color'] = nlbgColor;
      }
      if (nlWidth) {
        stys['--vxe-ui-gantt-view-task-now-line-width'] = toCssUnit(nlWidth);
      }
      if (viewStyle) {
        const {
          cellWidth
        } = viewStyle;
        if (cellWidth) {
          stys['--vxe-ui-gantt-view-default-cell-width'] = toCssUnit(cellWidth);
        }
      }
      if (tableStyle) {
        const {
          width: defTbWidth
        } = tableStyle;
        if (defTbWidth) {
          stys['--vxe-ui-gantt-view-table-default-width'] = toCssUnit(defTbWidth);
        }
      }
      return stys;
    });
    const computeTableExtendProps = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      const rest = {};
      const ganttProps = props;
      tableComponentPropKeys.forEach(key => {
        if (ganttProps[key] !== undefined) {
          rest[key] = ganttProps[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 taskViewOpts = computeTaskViewOpts.value;
      const {
        tableStyle
      } = taskViewOpts;
      const tableExtendProps = computeTableExtendProps.value;
      const proxyOpts = computeProxyOpts.value;
      const pagerOpts = computePagerOpts.value;
      const isLoading = computeIsLoading.value;
      const tProps = Object.assign({}, tableExtendProps, {
        // 不支持修改的属性
        showOverflow: true,
        showHeaderOverflow: true,
        showFooterOverflow: true
      });
      if (tableStyle) {
        const {
          border
        } = tableStyle;
        if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(border)) {
          tProps.border = border;
        }
      }
      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 = getConfig().gantt.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 computeTableBorder = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.computed)(() => {
      let {
        border
      } = props;
      const taskViewOpts = computeTaskViewOpts.value;
      const {
        viewStyle
      } = taskViewOpts;
      if (viewStyle) {
        if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(viewStyle.border)) {
          border = viewStyle.border;
        }
      }
      if (border === true) {
        return 'full';
      }
      if (border) {
        return border;
      }
      return 'default';
    });
    const refMaps = {
      refElem,
      refTable,
      refForm,
      refToolbar,
      refPager,
      refGanttView,
      refGanttContainerElem,
      refClassifyWrapperElem,
      refPopupContainerElem
    };
    const computeMaps = {
      computeProxyOpts,
      computePagerOpts,
      computeFormOpts,
      computeToolbarOpts,
      computeZoomOpts,
      computeTaskOpts,
      computeTaskViewScaleOpts,
      computeTaskNowLineOpts,
      computeTaskViewOpts,
      computeTaskBarOpts,
      computeTaskBarMoveOpts,
      computeTaskBarMoveTooltipOpts,
      computeTaskBarResizeOpts,
      computeTaskBarResizeTooltipOpts,
      computeTaskSplitOpts,
      computeTaskBarMilestoneOpts,
      computeTaskCriticalPathOpts,
      computeTaskBarSubviewOpts,
      computeTaskBarTooltipOpts,
      computeTaskLinkOpts,
      computeTaskViewScales,
      computeScaleUnit,
      computeDateFormat,
      computeMinScale,
      computeScaleStep,
      computeWeekScale,
      computeTitleField,
      computeStartField,
      computeEndField,
      computeTypeField,
      computeProgressField,
      computeScrollbarOpts,
      computeScrollbarXToTop,
      computeScrollbarYToLeft
    };
    computeMaps.computeTaskScaleConfs = computeTaskViewScales;
    const $xeGantt = {
      xID,
      props: props,
      context,
      reactData,
      internalData,
      getRefMaps: () => refMaps,
      getComputeMaps: () => computeMaps
    };
    const handleTaskScaleConfig = () => {
      const taskScaleConfs = computeTaskViewScales.value;
      const taskViewScaleOpts = computeTaskViewScaleOpts.value;
      const scaleConfs = [];
      const keyMaps = {};
      const scaleList = taskScaleConfs && taskScaleConfs.length ? taskScaleConfs : ['month', 'date'];
      scaleList.forEach(conf => {
        const sConf = !conf || external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isString(conf) ? {
          type: conf
        } : conf;
        const type = sConf.type;
        const level = getViewTypeLevel(type);
        if (!type || !viewTypeLevelMaps[type]) {
          gantt_errLog('vxe.error.errProp', [`type=${type}`, external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().keys(viewTypeLevelMaps).join(',')]);
          return;
        }
        if (keyMaps[type]) {
          gantt_errLog('vxe.error.repeatProp', ['type', type]);
          return;
        }
        const scaleObj = Object.assign({}, type ? taskViewScaleOpts[type] || {} : {}, sConf, {
          level
        });
        keyMaps[type] = true;
        scaleConfs.push(scaleObj);
      });
      reactData.taskScaleList = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().orderBy(scaleConfs, {
        field: 'level',
        order: 'desc'
      });
    };
    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 initGanttView = () => {
      const $xeTable = refTable.value;
      const $ganttView = refGanttView.value;
      if ($xeTable && $ganttView) {
        $xeTable.handleConnectGanttView($ganttView);
      }
    };
    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);
        }
        $xeGantt.clearCheckboxRow();
      } else {
        if (isActiveMsg) {
          if (core_.VxeUI.modal) {
            core_.VxeUI.modal.message({
              id: code,
              content: gantt_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: null,
          $gantt: $xeGantt
        }) : external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(rest, messageProp);
      }
      return msg || gantt_getI18n(defaultMsg);
    };
    const handleDeleteRow = (code, alertKey, callback) => {
      const isActiveMsg = computeIsActiveMsg.value;
      const selectRecords = $xeGantt.getCheckboxRecords();
      if (isActiveMsg) {
        if (selectRecords.length) {
          if (core_.VxeUI.modal) {
            return core_.VxeUI.modal.confirm({
              id: `cfm_${code}`,
              content: gantt_getI18n(alertKey),
              escClosable: true
            }).then(type => {
              if (type === 'confirm') {
                return callback();
              }
            });
          }
        } else {
          if (core_.VxeUI.modal) {
            core_.VxeUI.modal.message({
              id: `msg_${code}`,
              content: gantt_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;
      $xeGantt.dispatchEvent('page-change', params, $event);
      if (proxyConfig && isEnableConf(proxyOpts)) {
        $xeGantt.commitProxy('query').then(rest => {
          $xeGantt.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;
          $xeGantt.commitProxy('query').then(rest => {
            $xeGantt.dispatchEvent('proxy-query', rest, params.$event);
          });
        }
      }
    };
    const sortChangeEvent = params => {
      handleSortEvent(params);
      $xeGantt.dispatchEvent('sort-change', params, params.$event);
    };
    const clearAllSortEvent = params => {
      handleSortEvent(params);
      $xeGantt.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;
          $xeGantt.commitProxy('query').then(rest => {
            $xeGantt.dispatchEvent('proxy-query', rest, params.$event);
          });
          internalData.uFoot = false;
          updateQueryFooter();
        }
      }
    };
    const filterChangeEvent = params => {
      handleFilterEvent(params);
      $xeGantt.dispatchEvent('filter-change', params, params.$event);
    };
    const clearAllFilterEvent = params => {
      handleFilterEvent(params);
      $xeGantt.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)) {
        internalData.uFoot = true;
        $xeGantt.commitProxy('reload').then(rest => {
          $xeGantt.dispatchEvent('proxy-query', {
            ...rest,
            isReload: true
          }, params.$event);
        });
        internalData.uFoot = false;
        updateQueryFooter();
      }
      $xeGantt.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)) {
        if ($xeTable) {
          $xeTable.clearScroll();
        }
        internalData.uFoot = true;
        $xeGantt.commitProxy('reload').then(rest => {
          $xeGantt.dispatchEvent('proxy-query', {
            ...rest,
            isReload: true
          }, $event);
        });
        internalData.uFoot = false;
        updateQueryFooter();
      }
      $xeGantt.dispatchEvent('form-reset', params, $event);
    };
    const submitInvalidEvent = params => {
      $xeGantt.dispatchEvent('form-submit-invalid', params, params.$event);
    };
    const collapseEvent = params => {
      const {
        $event
      } = params;
      $xeGantt.dispatchEvent('form-toggle-collapse', params, $event);
      $xeGantt.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(() => $xeGantt.recalculate(true)).then(() => {
        setTimeout(() => $xeGantt.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 {
            gantt_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 {
              gantt_errLog('vxe.error.notSlot', [slotFunc]);
            }
          } else {
            slotConf[slotKey] = slotFunc;
          }
        }
      });
      return slotConf;
    };
    const dragSplitEvent = evnt => {
      const el = refElem.value;
      if (!el) {
        return;
      }
      const ganttContainerEl = refGanttContainerElem.value;
      if (!ganttContainerEl) {
        return;
      }
      const tableWrapperEl = refTableWrapper.value;
      if (!tableWrapperEl) {
        return;
      }
      const rsSplitLineEl = refResizableSplitTip.value;
      if (!rsSplitLineEl) {
        return;
      }
      const taskViewOpts = computeTaskViewOpts.value;
      const containerRect = ganttContainerEl.getBoundingClientRect();
      const rsSplitTipEl = rsSplitLineEl.children[0];
      const disX = evnt.clientX;
      const ganttWidth = ganttContainerEl.clientWidth;
      const tableWidth = tableWrapperEl.clientWidth;
      const tableMinWidth = taskViewOpts.tableStyle && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(taskViewOpts.tableStyle.minWidth) || 80;
      let targetTableWidth = tableWidth;
      let offsetLeft = -1;
      addClass(el, 'is--split-drag');
      const handleReStyle = evnt => {
        const rsNumLeftEl = rsSplitTipEl.children[0];
        const rsNumRightEl = rsSplitTipEl.children[1];
        let tipHeight = 0;
        if (rsNumLeftEl) {
          if (offsetLeft < 0) {
            rsNumLeftEl.style.display = 'none';
          } else {
            rsNumLeftEl.textContent = `${targetTableWidth}px`;
            rsNumLeftEl.style.display = 'block';
            tipHeight = rsNumLeftEl.offsetHeight;
          }
        }
        if (rsNumRightEl) {
          if (offsetLeft < 0) {
            rsNumRightEl.textContent = `${Math.floor(containerRect.width - targetTableWidth)}px`;
            rsNumRightEl.style.display = 'block';
            tipHeight = rsNumRightEl.offsetHeight;
          } else {
            rsNumRightEl.style.display = 'none';
          }
        }
        const tipTop = evnt.clientY - containerRect.top - tipHeight / 2;
        rsSplitLineEl.style.left = `${targetTableWidth}px`;
        rsSplitTipEl.style.top = `${Math.min(containerRect.height - tipHeight - 1, Math.max(1, tipTop))}px`;
      };
      document.onmousemove = evnt => {
        evnt.preventDefault();
        offsetLeft = evnt.clientX - disX;
        targetTableWidth = Math.min(ganttWidth - 80, Math.max(tableMinWidth, tableWidth + offsetLeft));
        handleReStyle(evnt);
      };
      document.onmouseup = () => {
        document.onmousemove = null;
        document.onmouseup = null;
        rsSplitLineEl.style.display = '';
        tableWrapperEl.style.width = `${targetTableWidth}px`;
        removeClass(el, 'is--split-drag');
        const $xeTable = refTable.value;
        if ($xeTable) {
          $xeTable.recalculate(true);
        }
      };
      rsSplitLineEl.style.display = 'block';
      handleReStyle(evnt);
    };
    const handleSplitAnimat = () => {
      const taskSplitOpts = computeTaskSplitOpts.value;
      const {
        animation
      } = taskSplitOpts;
      if (animation) {
        const {
          _taTime
        } = internalData;
        if (_taTime) {
          clearTimeout(_taTime);
        }
        reactData.showSplitAnimat = true;
        internalData._taTime = setTimeout(() => {
          reactData.showSplitAnimat = false;
          internalData._taTime = null;
        }, 350);
      }
    };
    const handleSplitLeftViewEvent = () => {
      handleSplitAnimat();
      reactData.showLeftView = !reactData.showLeftView;
    };
    const handleSplitRightViewEvent = () => {
      handleSplitAnimat();
      reactData.showRightView = !reactData.showRightView;
    };
    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 = $xeGantt.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 $xeGantt.commitProxy('queryFooter');
      }
    };
    const handleGlobalKeydownEvent = evnt => {
      const zoomOpts = computeZoomOpts.value;
      const isEsc = gantt_globalEvents.hasKey(evnt, GLOBAL_EVENT_KEYS.ESCAPE);
      if (isEsc && reactData.isZMax && zoomOpts.escRestore !== false) {
        $xeGantt.triggerZoomEvent(evnt);
      }
    };
    const dispatchEvent = (type, params, evnt) => {
      emit(type, createEvent(evnt, {
        $grid: null,
        $gantt: $xeGantt
      }, params));
    };
    const handleTargetEnterEvent = isClear => {
      const $tooltip = refTooltip.value;
      clearTimeout(internalData.barTipTimeout);
      if (isClear) {
        $xeGantt.closeTaskBarTooltip();
      } else {
        if ($tooltip && $tooltip.setActived) {
          $tooltip.setActived(true);
        }
      }
    };
    const ganttMethods = {
      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: null,
                  $gantt: $xeGantt,
                  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 reParams = {
                          data: rest,
                          $table: $xeTable,
                          $grid: null,
                          $gantt: $xeGantt
                        };
                        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);
                          const resultProp = resConfigs.result;
                          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 {
                          const listProp = resConfigs.list;
                          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 {
                gantt_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: null,
                  $gantt: $xeGantt,
                  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 {
                gantt_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 = $xeGantt.getCheckboxRecords();
                const removeRecords = selectRecords.filter(row => !$xeTable.isInsertByRow(row));
                const body = {
                  removeRecords
                };
                const commitParams = {
                  $table: $xeTable,
                  $grid: null,
                  $gantt: $xeGantt,
                  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;
                            $xeGantt.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: gantt_getI18n('vxe.grid.selectOneRecord'),
                        status: 'warning'
                      });
                    }
                  }
                }
              } else {
                gantt_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: null,
                  $gantt: $xeGantt,
                  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;
                            $xeGantt.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: gantt_getI18n('vxe.grid.dataUnchanged'),
                          status: 'info'
                        });
                      }
                    }
                  }
                });
              } else {
                gantt_errLog('vxe.error.notFunc', ['proxy-config.ajax.save']);
              }
              break;
            }
          default:
            {
              const gCommandOpts = commands.get(code);
              if (gCommandOpts) {
                const tCommandMethod = gCommandOpts.tableCommandMethod || gCommandOpts.commandMethod;
                if (tCommandMethod) {
                  tCommandMethod({
                    code,
                    button,
                    $table: $xeTable,
                    $grid: null,
                    $gantt: $xeGantt
                  }, ...args);
                } else {
                  gantt_errLog('vxe.error.notCommands', [code]);
                }
              }
            }
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      getParams() {
        return props.params;
      },
      zoom() {
        if (reactData.isZMax) {
          return $xeGantt.revert();
        }
        return $xeGantt.maximize();
      },
      isMaximized() {
        return reactData.isZMax;
      },
      maximize() {
        return handleZoom(true);
      },
      revert() {
        return handleZoom();
      },
      getFormData,
      /**
       * 已废弃,被 getFormFlatItems 替换
       * @deprecated
       */
      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'
        });
        // errLog('vxe.error.delFunc', ['getFormItems', 'getFormFlatItems'])
        return external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isUndefined(itemIndex) ? itemList : itemList[itemIndex];
      },
      getFormFlatItems() {
        const $form = refForm.value;
        if ($form) {
          return $form.getFlatItems();
        }
        return [];
      },
      getFormNestedItems() {
        const $form = refForm.value;
        if ($form) {
          return $form.getNestedItems();
        }
        return [];
      },
      getFormItemByField(field) {
        const $form = refForm.value;
        if ($form) {
          return $form.getItemByField(field);
        }
        return null;
      },
      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()
      // },
      refreshTaskView() {
        const $ganttView = refGanttView.value;
        if ($ganttView) {
          return $ganttView.refreshData();
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      hasTableViewVisible() {
        return reactData.showLeftView;
      },
      showTableView() {
        reactData.showLeftView = true;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      hideTableView() {
        reactData.showLeftView = false;
        // 至少显示一个
        if (!reactData.showRightView) {
          reactData.showRightView = true;
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      hasTaskViewVisible() {
        return reactData.showRightView;
      },
      showTaskView() {
        reactData.showRightView = true;
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      hideTaskView() {
        reactData.showRightView = false;
        // 至少显示一个
        if (!reactData.showLeftView) {
          reactData.showLeftView = true;
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      /**
       * 关闭 bar tooltip
       */
      closeTaskBarTooltip() {
        const {
          barTipStore
        } = reactData;
        const $tooltip = refTooltip.value;
        if (barTipStore.visible) {
          Object.assign(barTipStore, {
            row: null,
            content: null,
            visible: false,
            params: {}
          });
          if ($tooltip && $tooltip.close) {
            $tooltip.close();
          }
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      scrollToDateView(colDate) {
        const $ganttView = refGanttView.value;
        if ($ganttView) {
          const ganttViewReactData = $ganttView.reactData;
          const ganttViewInternalData = $ganttView.internalData;
          const {
            viewCellWidth
          } = ganttViewReactData;
          const {
            visibleColumn,
            elemStore
          } = ganttViewInternalData;
          const currDate = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toStringDate(colDate);
          const currTime = currDate.getTime();
          const colIndex = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().findIndexOf(visibleColumn, column => currTime === column.dateObj.date.getTime());
          const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
          if (colIndex > -1 && bodyScrollElem) {
            bodyScrollElem.scrollLeft = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor(colIndex * viewCellWidth);
          }
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      scrollToTaskView(rowOrRowid) {
        const $xeTable = refTable.value;
        if ($xeTable) {
          const rowid = 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) ? rowOrRowid : $xeTable.getRowid(rowOrRowid);
          return $xeTable.scrollToRow(rowOrRowid).then(() => {
            const $ganttView = refGanttView.value;
            if ($ganttView) {
              const ganttViewReactData = $ganttView.reactData;
              const ganttViewInternalData = $ganttView.internalData;
              const {
                viewCellWidth
              } = ganttViewReactData;
              const {
                chartMaps,
                elemStore
              } = ganttViewInternalData;
              const chartRest = rowid ? chartMaps[rowid] : null;
              if (chartRest) {
                const bodyScrollElem = getRefElem(elemStore['main-body-scroll']);
                if (bodyScrollElem) {
                  bodyScrollElem.scrollLeft = external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().floor(chartRest.oLeftSize * viewCellWidth);
                }
              }
            }
          });
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      getCriticalPath() {
        const {
          criticalRowIds,
          criticalLinks
        } = reactData;
        const {
          criticalRowMaps
        } = internalData;
        return {
          rowIds: criticalRowIds.slice(0),
          rows: Array.from(criticalRowMaps.values()),
          links: criticalLinks.slice(0)
        };
      }
    };
    const ganttPrivateMethods = {
      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;
      },
      getParentElem() {
        const el = refElem.value;
        if (!el) {
          return null;
        }
        let parentEl = el.parentElement;
        // 如果是虚拟滚动条
        if (parentEl && hasClass(parentEl, 'vxe-scrollbar--view-inner')) {
          parentEl = parentEl.parentElement;
        }
        return parentEl;
      },
      getParentHeight() {
        const el = refElem.value;
        if (el) {
          const parentEl = $xeGantt.getParentElem();
          return (reactData.isZMax ? getDomNode().visibleHeight : parentEl ? external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().toNumber(getComputedStyle(parentEl).height) : 0) - ganttPrivateMethods.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 = $xeGantt.commitProxy(params, evnt).then(rest => {
            if (rest && rest.status && ['query', 'reload', 'delete', 'save'].includes(code)) {
              $xeGantt.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) {
        $xeGantt.triggerToolbarCommitEvent(button, evnt);
        $xeGantt.dispatchEvent('toolbar-button-click', {
          code: button.code,
          button
        }, evnt);
      },
      triggerToolbarTolEvent(tool, evnt) {
        $xeGantt.triggerToolbarCommitEvent(tool, evnt);
        $xeGantt.dispatchEvent('toolbar-tool-click', {
          code: tool.code,
          tool
        }, evnt);
      },
      triggerZoomEvent(evnt) {
        $xeGantt.zoom();
        $xeGantt.dispatchEvent('zoom', {
          type: reactData.isZMax ? 'max' : 'revert'
        }, evnt);
      },
      handleTaskCellClickEvent(evnt, params) {
        const $xeTable = refTable.value;
        if ($xeTable) {
          const tableProps = $xeTable.props;
          const {
            highlightCurrentRow
          } = tableProps;
          const tableReactData = $xeTable.reactData;
          const {
            radioColumn,
            checkboxColumn
          } = tableReactData;
          const {
            computeRadioOpts,
            computeCheckboxOpts,
            computeRowOpts
          } = $xeTable.getComputeMaps();
          const radioOpts = computeRadioOpts.value;
          const checkboxOpts = computeCheckboxOpts.value;
          const rowOpts = computeRowOpts.value;
          const {
            row
          } = params;
          // 如果是当前行
          if (rowOpts.isCurrent || highlightCurrentRow) {
            $xeTable.triggerCurrentRowEvent(evnt, Object.assign({
              $table: $xeTable,
              rowIndex: $xeTable.getRowIndex(row),
              $rowIndex: $xeTable.getVMRowIndex(row)
            }, params));
          }
          // 如果是单选框
          if (radioColumn && radioOpts.trigger === 'row') {
            $xeTable.triggerRadioRowEvent(evnt, params);
          }
          // 如果是复选框
          if (checkboxColumn && checkboxOpts.trigger === 'row') {
            $xeTable.handleToggleCheckRowEvent(evnt, params);
          }
        }
        reactData.isActiveCeLe = false;
        reactData.activeBarRowid = null;
        reactData.activeLink = null;
        $xeGantt.dispatchEvent('task-cell-click', params, evnt);
      },
      handleTaskCellDblclickEvent(evnt, params) {
        $xeGantt.dispatchEvent('task-cell-dblclick', params, evnt);
      },
      handleTaskBarClickEvent(evnt, params) {
        const $xeTable = refTable.value;
        const taskBarOpts = computeTaskBarOpts.value;
        const {
          linkCreatable
        } = taskBarOpts;
        const {
          row
        } = params;
        reactData.isActiveCeLe = !!linkCreatable;
        reactData.activeBarRowid = $xeTable ? $xeTable.getRowid(row) : row;
        reactData.activeLink = null;
        $xeGantt.dispatchEvent('task-bar-click', params, evnt);
      },
      handleTaskBarDblclickEvent(evnt, params) {
        $xeGantt.dispatchEvent('task-bar-dblclick', params, evnt);
      },
      triggerTaskBarTooltipEvent(evnt, params) {
        const {
          barTipStore,
          activeLink
        } = reactData;
        const {
          dragBarRow,
          dragLineRow
        } = internalData;
        if (dragBarRow || dragLineRow) {
          return;
        }
        if (activeLink) {
          return;
        }
        const taskBarTooltipOpts = computeTaskBarTooltipOpts.value;
        const titleField = computeTitleField.value;
        const {
          contentMethod
        } = taskBarTooltipOpts;
        const {
          row
        } = params;
        let content = formatText(external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().get(row, titleField));
        if (contentMethod) {
          const customContnet = contentMethod(params);
          if (!external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eqNull(customContnet)) {
            content = `${customContnet}`;
          }
        }
        handleTargetEnterEvent(barTipStore.row !== row);
        const tipContent = formatText(content);
        Object.assign(barTipStore, {
          row,
          visible: true,
          content: tipContent,
          params
        });
        (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
          const $tooltip = refTooltip.value;
          if ($tooltip) {
            if ($tooltip.openByEvent) {
              $tooltip.openByEvent(evnt, evnt.currentTarget, tipContent);
            } else if ($tooltip.open) {
              $tooltip.open(evnt.currentTarget, tipContent);
            }
          }
        });
      },
      handleTaskBarTooltipLeaveEvent() {
        const taskBarTooltipOpts = computeTaskBarTooltipOpts.value;
        let $tooltip = refTooltip.value;
        if ($tooltip && $tooltip.setActived) {
          $tooltip.setActived(false);
        }
        if (taskBarTooltipOpts.enterable) {
          internalData.barTipTimeout = setTimeout(() => {
            $tooltip = refTooltip.value;
            if ($tooltip && $tooltip.isActived && !$tooltip.isActived()) {
              $xeGantt.closeTaskBarTooltip();
            }
          }, taskBarTooltipOpts.leaveDelay);
        } else {
          $xeGantt.closeTaskBarTooltip();
        }
      },
      handleTaskHeaderContextmenuEvent(evnt, params) {
        const $xeTable = refTable.value;
        if ($xeTable) {
          const tableProps = $xeTable.props;
          const {
            menuConfig
          } = tableProps;
          if (isEnableConf(menuConfig)) {
            evnt.stopPropagation();
            $xeTable.handleOpenMenuEvent(evnt, 'header', params);
            $xeTable.dispatchEvent('header-cell-menu', params, evnt);
          }
        }
      },
      handleTaskBodyContextmenuEvent(evnt, params) {
        const $xeTable = refTable.value;
        if ($xeTable) {
          const tableProps = $xeTable.props;
          const {
            menuConfig
          } = tableProps;
          if (isEnableConf(menuConfig)) {
            evnt.stopPropagation();
            $xeTable.handleOpenMenuEvent(evnt, 'body', params);
            $xeTable.dispatchEvent('cell-menu', params, evnt);
          }
        }
      },
      handleTaskFooterContextmenuEvent(evnt, params) {
        const $xeTable = refTable.value;
        if ($xeTable) {
          const tableProps = $xeTable.props;
          const {
            menuConfig
          } = tableProps;
          if (isEnableConf(menuConfig)) {
            evnt.stopPropagation();
            $xeTable.handleOpenMenuEvent(evnt, 'footer', params);
            $xeTable.dispatchEvent('footer-cell-menu', params, evnt);
          }
        }
      },
      handleTaskBarContextmenuEvent(evnt, params) {
        const $xeTable = refTable.value;
        if ($xeTable) {
          const tableProps = $xeTable.props;
          const {
            menuConfig
          } = tableProps;
          if (isEnableConf(menuConfig)) {
            evnt.stopPropagation();
            $xeTable.handleOpenMenuEvent(evnt, 'body', params);
            $xeTable.dispatchEvent('cell-menu', params, evnt);
          }
        }
      }
    };
    Object.assign($xeGantt, ganttExtendTableMethods, ganttMethods, ganttPrivateMethods, {
      loadColumn(columns) {
        const $xeTable = refTable.value;
        // 检查插槽
        external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().eachTree(columns, column => {
          const {
            type
          } = 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]) {
                  gantt_errLog('vxe.error.notSlot', [func]);
                }
              }
            });
          }
          if (type === 'expand') {
            gantt_errLog('vxe.error.errProp', ['type=expand', 'type=seq,radio,checkbox,html']);
          }
        });
        reactData.currLeftSpacing = 0;
        reactData.currRightSpacing = 0;
        if ($xeTable) {
          return $xeTable.loadColumn(columns);
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)();
      },
      reloadColumn(columns) {
        $xeGantt.clearAll();
        return $xeGantt.loadColumn(columns);
      }
    });
    /**
     * 渲染表单
     */
    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: null,
            $gantt: $xeGantt
          });
        } 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: null,
                    $gantt: $xeGantt,
                    item
                  });
                });
              }
            }
            // 处理插槽
            formOpts.items.forEach(item => {
              external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().each(item.slots, func => {
                if (func && !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-gantt--form-wrapper'
        }, slotVNs);
      }
      return gantt_renderEmptyElement($xeGantt);
    };
    /**
     * 渲染工具栏
     */
    const renderToolbar = () => {
      const {
        toolbarConfig
      } = props;
      const toolbarOpts = computeToolbarOpts.value;
      const toolbarSlot = slots.toolbar;
      if (toolbarConfig && isEnableConf(toolbarOpts) || toolbarSlot) {
        let slotVNs = [];
        if (slots.toolbar) {
          slotVNs = slots.toolbar({
            $grid: null,
            $gantt: $xeGantt
          });
        } 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)(VxeToolbarComponent, {
            ref: refToolbar,
            ...toolbarOpts,
            slots: undefined
          }, toolbarSlots));
        }
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          ref: refToolbarWrapper,
          key: 'toolbar',
          class: 'vxe-gantt--toolbar-wrapper'
        }, slotVNs);
      }
      return gantt_renderEmptyElement($xeGantt);
    };
    /**
     * 渲染表格顶部区域
     */
    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-gantt--top-wrapper'
        }, topSlot({
          $grid: null,
          $gantt: $xeGantt
        }));
      }
      return gantt_renderEmptyElement($xeGantt);
    };
    const renderTableLeft = () => {
      const leftSlot = slots.left;
      if (leftSlot) {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: 'vxe-gantt--left-wrapper'
        }, leftSlot({
          $grid: null,
          $gantt: $xeGantt
        }));
      }
      return gantt_renderEmptyElement($xeGantt);
    };
    const renderTableRight = () => {
      const rightSlot = slots.right;
      if (rightSlot) {
        return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
          class: 'vxe-gantt--right-wrapper'
        }, rightSlot({
          $grid: null,
          $gantt: $xeGantt
        }));
      }
      return gantt_renderEmptyElement($xeGantt);
    };
    /**
     * 渲染表格
     */
    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', {
        ref: refTableWrapper,
        class: 'vxe-gantt--table-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeTableComponent, {
        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-gantt--bottom-wrapper'
        }, slots.bottom({
          $grid: null,
          $gantt: $xeGantt
        }));
      }
      return gantt_renderEmptyElement($xeGantt);
    };
    /**
     * 渲染分页
     */
    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-gantt--pager-wrapper'
        }, pagerSlot ? pagerSlot({
          $grid: null,
          $gantt: $xeGantt
        }) : [VxeUIPagerComponent ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUIPagerComponent, {
          ref: refPager,
          ...pagerOpts,
          ...(proxyConfig && isEnableConf(proxyOpts) ? reactData.tablePage : {}),
          onPageChange: pageChangeEvent
        }, getConfigSlot(pagerOpts.slots)) : gantt_renderEmptyElement($xeGantt)]);
      }
      return gantt_renderEmptyElement($xeGantt);
    };
    /**
     * 渲染任务视图
     */
    const renderTaskView = () => {
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refGanttWrapper,
        class: 'vxe-gantt--view-wrapper'
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(gantt_view, {
        ref: refGanttView
      })]);
    };
    const renderSplitBar = () => {
      const {
        showLeftView,
        showRightView
      } = reactData;
      const taskSplitOpts = computeTaskSplitOpts.value;
      const {
        enabled,
        resize,
        showCollapseTableButton,
        showCollapseTaskButton
      } = taskSplitOpts;
      if (!enabled) {
        return gantt_renderEmptyElement($xeGantt);
      }
      const isResize = resize && showLeftView && showRightView;
      const ons = {};
      if (isResize) {
        ons.onMousedown = dragSplitEvent;
      }
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: ['vxe-gantt--view-split-bar', {
          'is--resize': isResize
        }]
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt--view-split-bar-handle',
        ...ons
      }), showCollapseTableButton || showCollapseTaskButton ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt--view-split-bar-btn-wrapper'
      }, [showCollapseTableButton && showRightView ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: ['vxe-gantt--view-split-bar-action-btn', showLeftView ? 'is--prev' : 'is--next'],
        onClick: handleSplitLeftViewEvent
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
        class: showLeftView ? gantt_getIcon().GANTT_VIEW_LEFT_OPEN : gantt_getIcon().GANTT_VIEW_LEFT_CLOSE
      })]) : gantt_renderEmptyElement($xeGantt), showCollapseTaskButton && showLeftView ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: ['vxe-gantt--view-split-bar-action-btn', showRightView ? 'is--next' : 'is--prev'],
        onClick: handleSplitRightViewEvent
      }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('i', {
        class: showRightView ? gantt_getIcon().GANTT_VIEW_RIGHT_OPEN : gantt_getIcon().GANTT_VIEW_RIGHT_CLOSE
      })]) : gantt_renderEmptyElement($xeGantt)]) : gantt_renderEmptyElement($xeGantt)]);
    };
    const renderChildLayout = layoutKeys => {
      const {
        showLeftView,
        showRightView
      } = reactData;
      const taskSplitOpts = computeTaskSplitOpts.value;
      const scrollbarXToTop = computeScrollbarXToTop.value;
      const scrollbarYToLeft = computeScrollbarYToLeft.value;
      const {
        autoHideCollapseButton
      } = taskSplitOpts;
      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 'Gantt':
            childVNs.push((0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              ref: refGanttContainerElem,
              key: 'tv',
              class: ['vxe-gantt--gantt-container', `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
                'show--left': showLeftView,
                'hide--left': !showLeftView,
                'show--right': showRightView,
                'hide--right': !showRightView,
                'is--ah-split-btn': autoHideCollapseButton
              }]
            }, [renderTableLeft(), renderTable(), renderSplitBar(), renderTaskView(), renderTableRight(), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              ref: refClassifyWrapperElem
            }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              ref: refResizableSplitTip,
              class: 'vxe-gantt--resizable-split-tip'
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: 'vxe-gantt--resizable-split-tip-number'
            }, [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: 'vxe-gantt--resizable-split-number-left'
            }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: 'vxe-gantt--resizable-split-number-right'
            })])]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
              class: 'vxe-gantt--border-line'
            })]));
            break;
          case 'Bottom':
            childVNs.push(renderBottom());
            break;
          case 'Pager':
            childVNs.push(renderPager());
            break;
          default:
            gantt_errLog('vxe.error.notProp', [`layouts -> ${key}`]);
            break;
        }
      });
      return childVNs;
    };
    const renderLayout = () => {
      const {
        barTipStore
      } = reactData;
      const currLayoutConf = computeCurrLayoutConf.value;
      const {
        headKeys,
        bodyKeys,
        footKeys
      } = currLayoutConf;
      const taskBarTooltipOpts = computeTaskBarTooltipOpts.value;
      const asideLeftSlot = slots.asideLeft || slots['aside-left'];
      const asideRightSlot = slots.asideRight || slots['aside-right'];
      const taskBarTooltipSlot = slots.taskBarTooltip || slots['task-bar-tooltip'];
      return [(0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt--layout-header-wrapper'
      }, renderChildLayout(headKeys)), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt--layout-body-wrapper'
      }, [asideLeftSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt--layout-aside-left-wrapper'
      }, asideLeftSlot({})) : gantt_renderEmptyElement($xeGantt), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt--layout-body-content-wrapper'
      }, renderChildLayout(bodyKeys)), asideRightSlot ? (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt--layout-aside-right-wrapper'
      }, asideRightSlot({})) : gantt_renderEmptyElement($xeGantt)]), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        class: 'vxe-gantt--layout-footer-wrapper'
      }, renderChildLayout(footKeys)), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refPopupContainerElem
      }), (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {}, [
      /**
        * 任务条提示
        */
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)(VxeUITooltipComponent, {
        key: 'gtp',
        ref: refTooltip,
        theme: taskBarTooltipOpts.theme,
        enterable: taskBarTooltipOpts.enterable,
        enterDelay: taskBarTooltipOpts.enterDelay,
        leaveDelay: taskBarTooltipOpts.leaveDelay,
        useHtml: external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isBoolean(taskBarTooltipOpts.useHtml) ? taskBarTooltipOpts.useHtml : taskBarTooltipOpts.useHTML,
        width: taskBarTooltipOpts.width,
        height: taskBarTooltipOpts.height,
        minWidth: taskBarTooltipOpts.minWidth,
        minHeight: taskBarTooltipOpts.minHeight,
        maxWidth: taskBarTooltipOpts.maxWidth,
        maxHeight: taskBarTooltipOpts.maxHeight,
        isArrow: false
      }, taskBarTooltipSlot ? {
        content: () => {
          const {
            row,
            content: tooltipContent
          } = barTipStore;
          if (row) {
            return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {}, taskBarTooltipSlot(Object.assign({
              tooltipContent,
              $gantt: $xeGantt
            }, barTipStore.params)));
          }
          return gantt_renderEmptyElement($xeGantt);
        }
      } : {})])];
    };
    const renderVN = () => {
      const {
        showLeftView,
        showRightView,
        overflowY,
        overflowX,
        showSplitAnimat
      } = reactData;
      const vSize = computeSize.value;
      const wrapperStyle = computeWrapperStyle.value;
      const isLoading = computeIsLoading.value;
      const taskSplitOpts = computeTaskSplitOpts.value;
      const tableBorder = computeTableBorder.value;
      const scrollbarXToTop = computeScrollbarXToTop.value;
      const scrollbarYToLeft = computeScrollbarYToLeft.value;
      return (0,external_commonjs_vue_commonjs2_vue_root_Vue_.h)('div', {
        ref: refElem,
        class: ['vxe-gantt', `border--${tableBorder}`, `sx-pos--${scrollbarXToTop ? 'top' : 'bottom'}`, `sy-pos--${scrollbarYToLeft ? 'left' : 'right'}`, {
          [`size--${vSize}`]: vSize,
          'is--round': props.round,
          'show--animat': taskSplitOpts.animation,
          'is--maximize': reactData.isZMax,
          'is--loading': isLoading,
          'is--animat': showSplitAnimat,
          'show--left': showLeftView,
          'hide--left': !showLeftView,
          'show--right': showRightView,
          'hide--right': !showRightView,
          'is--scroll-y': overflowY,
          'is--scroll-x': overflowX
        }],
        style: wrapperStyle
      }, 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)(() => $xeGantt.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();
    });
    const reViewFlag = (0,external_commonjs_vue_commonjs2_vue_root_Vue_.ref)(0);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeTaskViewScales, () => {
      handleTaskScaleConfig();
      reViewFlag.value++;
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeCriticalPathVisible, () => {
      reViewFlag.value++;
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(reViewFlag, () => {
      $xeGantt.refreshTaskView();
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.watch)(computeTaskLinkStyle, () => {
      if ($xeGantt.handleUpTaskLinkData) {
        $xeGantt.handleUpTaskLinkData();
      }
    });
    hooks.forEach(options => {
      const {
        setupGantt
      } = options;
      if (setupGantt) {
        const hookRest = setupGantt($xeGantt);
        if (hookRest && external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().isObject(hookRest)) {
          Object.assign($xeGantt, hookRest);
        }
      }
    });
    if ($xeGantt.handleTaskLoadLinks) {
      if (props.links) {
        $xeGantt.handleTaskLoadLinks(props.links);
      }
    }
    handleTaskScaleConfig();
    initPages();
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onMounted)(() => {
      const taskBarSubviewOpts = computeTaskBarSubviewOpts.value;
      const {
        barStyle
      } = taskBarSubviewOpts;
      if (barStyle) {
        if (barStyle.top) {
          gantt_warnLog('vxe.error.delProp', ['task-bar-subview-config.barStyle.top', 'task-bar-subview-config.barStyle.style.top']);
        }
        if (barStyle.backgroundColor) {
          gantt_warnLog('vxe.error.delProp', ['task-bar-subview-config.barStyle.backgroundColor', 'task-bar-subview-config.barStyle.style.backgroundColor']);
        }
      }
      if (!$xeGantt.handleUpTaskLinkData) {
        if (props.links) {
          gantt_warnLog('vxe.error.notProp', ['links']);
        }
        if (props.taskLinkConfig) {
          gantt_warnLog('vxe.error.notProp', ['task-link-config']);
        }
      }
      (0,external_commonjs_vue_commonjs2_vue_root_Vue_.nextTick)(() => {
        const {
          columns
        } = props;
        const proxyOpts = computeProxyOpts.value;
        if (props.formConfig) {
          if (!VxeUIFormComponent) {
            gantt_errLog('vxe.error.reqComp', ['vxe-form']);
          }
        }
        if (props.pagerConfig) {
          if (!VxeUIPagerComponent) {
            gantt_errLog('vxe.error.reqComp', ['vxe-pager']);
          }
        }
        if (props.treeConfig && props.links) {
          const $xeTable = refTable.value;
          if ($xeTable) {
            const {
              computeTreeOpts
            } = $xeTable.getComputeMaps();
            const treeOpts = computeTreeOpts.value;
            if (!treeOpts.transform) {
              gantt_errLog('vxe.error.notSupportProp', ['links', 'tree-config.transform=false', 'tree-config.transform=true']);
            }
          }
        }
        // const { data, columns, proxyConfig } = props
        // const formOpts = computeFormOpts.value
        // if (isEnableConf(proxyConfig) && (data || (proxyOpts.form && formOpts.data))) {
        //   errLog('vxe.error.errConflicts', ['grid.data', 'grid.proxy-config'])
        // }
        if (proxyOpts.props) {
          gantt_warnLog('vxe.error.delProp', ['proxy-config.props', 'proxy-config.response']);
        }
        if (props.expandConfig) {
          gantt_warnLog('vxe.error.notProp', ['expand-config']);
        }
        if (columns && columns.length) {
          $xeGantt.loadColumn(columns);
        }
        initToolbar();
        initProxy();
      });
      initGanttView();
      gantt_globalEvents.on($xeGantt, 'keydown', handleGlobalKeydownEvent);
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onBeforeUnmount)(() => {
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(reactData, gantt_createReactData());
      external_root_XEUtils_commonjs_xe_utils_commonjs2_xe_utils_amd_xe_utils_default().assign(internalData, gantt_createInternalData());
    });
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.onUnmounted)(() => {
      gantt_globalEvents.off($xeGantt, 'keydown');
    });
    $xeGantt.renderVN = renderVN;
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeGrid', null);
    (0,external_commonjs_vue_commonjs2_vue_root_Vue_.provide)('$xeGantt', $xeGantt);
    return $xeGantt;
  },
  render() {
    return this.renderVN();
  }
}));
;// ./packages/gantt/index.ts



const VxeGantt = Object.assign({}, gantt, {
  install(app) {
    checkDependVersion();
    app.component(gantt.name, gantt);
  }
});
if (core_.VxeUI.dynamicApp) {
  core_.VxeUI.dynamicApp.use(VxeGantt);
}
core_.VxeUI.component(gantt);

const Gantt = VxeGantt;
/* harmony default export */ var packages_gantt = (VxeGantt);
;// ./packages/components.ts


const {
  setConfig: components_setConfig
} = ui;
const components = [packages_gantt];
function install(app, options) {
  components_setConfig(options);
  components.forEach(component => app.use(component));
}

// Components

;// ./index.ts



/* 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__;
/******/ })()
;
});