(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory(require("vue"));
	else if(typeof define === 'function' && define.amd)
		define("MONKEY", ["vue"], factory);
	else if(typeof exports === 'object')
		exports["MONKEY"] = factory(require("vue"));
	else
		root["MONKEY"] = factory(root["Vue"]);
})(window, function(__WEBPACK_EXTERNAL_MODULE__62__) {
return /******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// 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 });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "/dist/";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = 131);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {

// https://github.com/tc39/proposal-object-getownpropertydescriptors
var $export = __webpack_require__(1);
var ownKeys = __webpack_require__(22);
var toIObject = __webpack_require__(25);
var gOPD = __webpack_require__(36);
var createProperty = __webpack_require__(38);

$export($export.S, 'Object', {
  getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {
    var O = toIObject(object);
    var getDesc = gOPD.f;
    var keys = ownKeys(O);
    var result = {};
    var i = 0;
    var key, desc;
    while (keys.length > i) {
      desc = getDesc(O, key = keys[i++]);
      if (desc !== undefined) createProperty(result, key, desc);
    }
    return result;
  }
});


/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(2);
var core = __webpack_require__(3);
var hide = __webpack_require__(4);
var redefine = __webpack_require__(14);
var ctx = __webpack_require__(20);
var PROTOTYPE = 'prototype';

var $export = function (type, name, source) {
  var IS_FORCED = type & $export.F;
  var IS_GLOBAL = type & $export.G;
  var IS_STATIC = type & $export.S;
  var IS_PROTO = type & $export.P;
  var IS_BIND = type & $export.B;
  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE];
  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});
  var expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {});
  var key, own, out, exp;
  if (IS_GLOBAL) source = name;
  for (key in source) {
    // contains in native
    own = !IS_FORCED && target && target[key] !== undefined;
    // export native or passed
    out = (own ? target : source)[key];
    // bind timers to global for call from export context
    exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
    // extend global
    if (target) redefine(target, key, out, type & $export.U);
    // export
    if (exports[key] != out) hide(exports, key, exp);
    if (IS_PROTO && expProto[key] != out) expProto[key] = out;
  }
};
global.core = core;
// type bitmap
$export.F = 1;   // forced
$export.G = 2;   // global
$export.S = 4;   // static
$export.P = 8;   // proto
$export.B = 16;  // bind
$export.W = 32;  // wrap
$export.U = 64;  // safe
$export.R = 128; // real proto method for `library`
module.exports = $export;


/***/ }),
/* 2 */
/***/ (function(module, exports) {

// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
var global = module.exports = typeof window != 'undefined' && window.Math == Math
  ? window : typeof self != 'undefined' && self.Math == Math ? self
  // eslint-disable-next-line no-new-func
  : Function('return this')();
if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef


/***/ }),
/* 3 */
/***/ (function(module, exports) {

var core = module.exports = { version: '2.6.11' };
if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef


/***/ }),
/* 4 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(5);
var createDesc = __webpack_require__(13);
module.exports = __webpack_require__(9) ? function (object, key, value) {
  return dP.f(object, key, createDesc(1, value));
} : function (object, key, value) {
  object[key] = value;
  return object;
};


/***/ }),
/* 5 */
/***/ (function(module, exports, __webpack_require__) {

var anObject = __webpack_require__(6);
var IE8_DOM_DEFINE = __webpack_require__(8);
var toPrimitive = __webpack_require__(12);
var dP = Object.defineProperty;

exports.f = __webpack_require__(9) ? Object.defineProperty : function defineProperty(O, P, Attributes) {
  anObject(O);
  P = toPrimitive(P, true);
  anObject(Attributes);
  if (IE8_DOM_DEFINE) try {
    return dP(O, P, Attributes);
  } catch (e) { /* empty */ }
  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');
  if ('value' in Attributes) O[P] = Attributes.value;
  return O;
};


/***/ }),
/* 6 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(7);
module.exports = function (it) {
  if (!isObject(it)) throw TypeError(it + ' is not an object!');
  return it;
};


/***/ }),
/* 7 */
/***/ (function(module, exports) {

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


/***/ }),
/* 8 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = !__webpack_require__(9) && !__webpack_require__(10)(function () {
  return Object.defineProperty(__webpack_require__(11)('div'), 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 9 */
/***/ (function(module, exports, __webpack_require__) {

// Thank's IE8 for his funny defineProperty
module.exports = !__webpack_require__(10)(function () {
  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});


/***/ }),
/* 10 */
/***/ (function(module, exports) {

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


/***/ }),
/* 11 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(7);
var document = __webpack_require__(2).document;
// typeof document.createElement is 'object' in old IE
var is = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
  return is ? document.createElement(it) : {};
};


/***/ }),
/* 12 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.1 ToPrimitive(input [, PreferredType])
var isObject = __webpack_require__(7);
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
  if (!isObject(it)) return it;
  var fn, val;
  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
  throw TypeError("Can't convert object to primitive value");
};


/***/ }),
/* 13 */
/***/ (function(module, exports) {

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


/***/ }),
/* 14 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(2);
var hide = __webpack_require__(4);
var has = __webpack_require__(15);
var SRC = __webpack_require__(16)('src');
var $toString = __webpack_require__(17);
var TO_STRING = 'toString';
var TPL = ('' + $toString).split(TO_STRING);

__webpack_require__(3).inspectSource = function (it) {
  return $toString.call(it);
};

(module.exports = function (O, key, val, safe) {
  var isFunction = typeof val == 'function';
  if (isFunction) has(val, 'name') || hide(val, 'name', key);
  if (O[key] === val) return;
  if (isFunction) has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
  if (O === global) {
    O[key] = val;
  } else if (!safe) {
    delete O[key];
    hide(O, key, val);
  } else if (O[key]) {
    O[key] = val;
  } else {
    hide(O, key, val);
  }
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, TO_STRING, function toString() {
  return typeof this == 'function' && this[SRC] || $toString.call(this);
});


/***/ }),
/* 15 */
/***/ (function(module, exports) {

var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
  return hasOwnProperty.call(it, key);
};


/***/ }),
/* 16 */
/***/ (function(module, exports) {

var id = 0;
var px = Math.random();
module.exports = function (key) {
  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
};


/***/ }),
/* 17 */
/***/ (function(module, exports, __webpack_require__) {

module.exports = __webpack_require__(18)('native-function-to-string', Function.toString);


/***/ }),
/* 18 */
/***/ (function(module, exports, __webpack_require__) {

var core = __webpack_require__(3);
var global = __webpack_require__(2);
var SHARED = '__core-js_shared__';
var store = global[SHARED] || (global[SHARED] = {});

(module.exports = function (key, value) {
  return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
  version: core.version,
  mode: __webpack_require__(19) ? 'pure' : 'global',
  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});


/***/ }),
/* 19 */
/***/ (function(module, exports) {

module.exports = false;


/***/ }),
/* 20 */
/***/ (function(module, exports, __webpack_require__) {

// optional / simple context binding
var aFunction = __webpack_require__(21);
module.exports = function (fn, that, length) {
  aFunction(fn);
  if (that === undefined) return fn;
  switch (length) {
    case 1: return function (a) {
      return fn.call(that, a);
    };
    case 2: return function (a, b) {
      return fn.call(that, a, b);
    };
    case 3: return function (a, b, c) {
      return fn.call(that, a, b, c);
    };
  }
  return function (/* ...args */) {
    return fn.apply(that, arguments);
  };
};


/***/ }),
/* 21 */
/***/ (function(module, exports) {

module.exports = function (it) {
  if (typeof it != 'function') throw TypeError(it + ' is not a function!');
  return it;
};


/***/ }),
/* 22 */
/***/ (function(module, exports, __webpack_require__) {

// all object keys, includes non-enumerable and symbols
var gOPN = __webpack_require__(23);
var gOPS = __webpack_require__(35);
var anObject = __webpack_require__(6);
var Reflect = __webpack_require__(2).Reflect;
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
  var keys = gOPN.f(anObject(it));
  var getSymbols = gOPS.f;
  return getSymbols ? keys.concat(getSymbols(it)) : keys;
};


/***/ }),
/* 23 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var $keys = __webpack_require__(24);
var hiddenKeys = __webpack_require__(34).concat('length', 'prototype');

exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
  return $keys(O, hiddenKeys);
};


/***/ }),
/* 24 */
/***/ (function(module, exports, __webpack_require__) {

var has = __webpack_require__(15);
var toIObject = __webpack_require__(25);
var arrayIndexOf = __webpack_require__(29)(false);
var IE_PROTO = __webpack_require__(33)('IE_PROTO');

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


/***/ }),
/* 25 */
/***/ (function(module, exports, __webpack_require__) {

// to indexed object, toObject with fallback for non-array-like ES3 strings
var IObject = __webpack_require__(26);
var defined = __webpack_require__(28);
module.exports = function (it) {
  return IObject(defined(it));
};


/***/ }),
/* 26 */
/***/ (function(module, exports, __webpack_require__) {

// fallback for non-array-like ES3 and non-enumerable old V8 strings
var cof = __webpack_require__(27);
// eslint-disable-next-line no-prototype-builtins
module.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {
  return cof(it) == 'String' ? it.split('') : Object(it);
};


/***/ }),
/* 27 */
/***/ (function(module, exports) {

var toString = {}.toString;

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


/***/ }),
/* 28 */
/***/ (function(module, exports) {

// 7.2.1 RequireObjectCoercible(argument)
module.exports = function (it) {
  if (it == undefined) throw TypeError("Can't call method on  " + it);
  return it;
};


/***/ }),
/* 29 */
/***/ (function(module, exports, __webpack_require__) {

// false -> Array#indexOf
// true  -> Array#includes
var toIObject = __webpack_require__(25);
var toLength = __webpack_require__(30);
var toAbsoluteIndex = __webpack_require__(32);
module.exports = function (IS_INCLUDES) {
  return function ($this, el, fromIndex) {
    var O = toIObject($this);
    var length = toLength(O.length);
    var index = toAbsoluteIndex(fromIndex, length);
    var value;
    // Array#includes uses SameValueZero equality algorithm
    // eslint-disable-next-line no-self-compare
    if (IS_INCLUDES && el != el) while (length > index) {
      value = O[index++];
      // eslint-disable-next-line no-self-compare
      if (value != value) return true;
    // Array#indexOf ignores holes, Array#includes - not
    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {
      if (O[index] === el) return IS_INCLUDES || index || 0;
    } return !IS_INCLUDES && -1;
  };
};


/***/ }),
/* 30 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.15 ToLength
var toInteger = __webpack_require__(31);
var min = Math.min;
module.exports = function (it) {
  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
};


/***/ }),
/* 31 */
/***/ (function(module, exports) {

// 7.1.4 ToInteger
var ceil = Math.ceil;
var floor = Math.floor;
module.exports = function (it) {
  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
};


/***/ }),
/* 32 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(31);
var max = Math.max;
var min = Math.min;
module.exports = function (index, length) {
  index = toInteger(index);
  return index < 0 ? max(index + length, 0) : min(index, length);
};


/***/ }),
/* 33 */
/***/ (function(module, exports, __webpack_require__) {

var shared = __webpack_require__(18)('keys');
var uid = __webpack_require__(16);
module.exports = function (key) {
  return shared[key] || (shared[key] = uid(key));
};


/***/ }),
/* 34 */
/***/ (function(module, exports) {

// IE 8- don't enum bug keys
module.exports = (
  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
).split(',');


/***/ }),
/* 35 */
/***/ (function(module, exports) {

exports.f = Object.getOwnPropertySymbols;


/***/ }),
/* 36 */
/***/ (function(module, exports, __webpack_require__) {

var pIE = __webpack_require__(37);
var createDesc = __webpack_require__(13);
var toIObject = __webpack_require__(25);
var toPrimitive = __webpack_require__(12);
var has = __webpack_require__(15);
var IE8_DOM_DEFINE = __webpack_require__(8);
var gOPD = Object.getOwnPropertyDescriptor;

exports.f = __webpack_require__(9) ? gOPD : function getOwnPropertyDescriptor(O, P) {
  O = toIObject(O);
  P = toPrimitive(P, true);
  if (IE8_DOM_DEFINE) try {
    return gOPD(O, P);
  } catch (e) { /* empty */ }
  if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);
};


/***/ }),
/* 37 */
/***/ (function(module, exports) {

exports.f = {}.propertyIsEnumerable;


/***/ }),
/* 38 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $defineProperty = __webpack_require__(5);
var createDesc = __webpack_require__(13);

module.exports = function (object, index, value) {
  if (index in object) $defineProperty.f(object, index, createDesc(0, value));
  else object[index] = value;
};


/***/ }),
/* 39 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.14 Object.keys(O)
var toObject = __webpack_require__(40);
var $keys = __webpack_require__(41);

__webpack_require__(42)('keys', function () {
  return function keys(it) {
    return $keys(toObject(it));
  };
});


/***/ }),
/* 40 */
/***/ (function(module, exports, __webpack_require__) {

// 7.1.13 ToObject(argument)
var defined = __webpack_require__(28);
module.exports = function (it) {
  return Object(defined(it));
};


/***/ }),
/* 41 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.14 / 15.2.3.14 Object.keys(O)
var $keys = __webpack_require__(24);
var enumBugKeys = __webpack_require__(34);

module.exports = Object.keys || function keys(O) {
  return $keys(O, enumBugKeys);
};


/***/ }),
/* 42 */
/***/ (function(module, exports, __webpack_require__) {

// most Object methods by ES6 should accept primitives
var $export = __webpack_require__(1);
var core = __webpack_require__(3);
var fails = __webpack_require__(10);
module.exports = function (KEY, exec) {
  var fn = (core.Object || {})[KEY] || Object[KEY];
  var exp = {};
  exp[KEY] = exec(fn);
  $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);
};


/***/ }),
/* 43 */
/***/ (function(module, exports, __webpack_require__) {

var $iterators = __webpack_require__(44);
var getKeys = __webpack_require__(41);
var redefine = __webpack_require__(14);
var global = __webpack_require__(2);
var hide = __webpack_require__(4);
var Iterators = __webpack_require__(48);
var wks = __webpack_require__(46);
var ITERATOR = wks('iterator');
var TO_STRING_TAG = wks('toStringTag');
var ArrayValues = Iterators.Array;

var DOMIterables = {
  CSSRuleList: true, // TODO: Not spec compliant, should be false.
  CSSStyleDeclaration: false,
  CSSValueList: false,
  ClientRectList: false,
  DOMRectList: false,
  DOMStringList: false,
  DOMTokenList: true,
  DataTransferItemList: false,
  FileList: false,
  HTMLAllCollection: false,
  HTMLCollection: false,
  HTMLFormElement: false,
  HTMLSelectElement: false,
  MediaList: true, // TODO: Not spec compliant, should be false.
  MimeTypeArray: false,
  NamedNodeMap: false,
  NodeList: true,
  PaintRequestList: false,
  Plugin: false,
  PluginArray: false,
  SVGLengthList: false,
  SVGNumberList: false,
  SVGPathSegList: false,
  SVGPointList: false,
  SVGStringList: false,
  SVGTransformList: false,
  SourceBufferList: false,
  StyleSheetList: true, // TODO: Not spec compliant, should be false.
  TextTrackCueList: false,
  TextTrackList: false,
  TouchList: false
};

for (var collections = getKeys(DOMIterables), i = 0; i < collections.length; i++) {
  var NAME = collections[i];
  var explicit = DOMIterables[NAME];
  var Collection = global[NAME];
  var proto = Collection && Collection.prototype;
  var key;
  if (proto) {
    if (!proto[ITERATOR]) hide(proto, ITERATOR, ArrayValues);
    if (!proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);
    Iterators[NAME] = ArrayValues;
    if (explicit) for (key in $iterators) if (!proto[key]) redefine(proto, key, $iterators[key], true);
  }
}


/***/ }),
/* 44 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var addToUnscopables = __webpack_require__(45);
var step = __webpack_require__(47);
var Iterators = __webpack_require__(48);
var toIObject = __webpack_require__(25);

// 22.1.3.4 Array.prototype.entries()
// 22.1.3.13 Array.prototype.keys()
// 22.1.3.29 Array.prototype.values()
// 22.1.3.30 Array.prototype[@@iterator]()
module.exports = __webpack_require__(49)(Array, 'Array', function (iterated, kind) {
  this._t = toIObject(iterated); // target
  this._i = 0;                   // next index
  this._k = kind;                // kind
// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var kind = this._k;
  var index = this._i++;
  if (!O || index >= O.length) {
    this._t = undefined;
    return step(1);
  }
  if (kind == 'keys') return step(0, index);
  if (kind == 'values') return step(0, O[index]);
  return step(0, [index, O[index]]);
}, 'values');

// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
Iterators.Arguments = Iterators.Array;

addToUnscopables('keys');
addToUnscopables('values');
addToUnscopables('entries');


/***/ }),
/* 45 */
/***/ (function(module, exports, __webpack_require__) {

// 22.1.3.31 Array.prototype[@@unscopables]
var UNSCOPABLES = __webpack_require__(46)('unscopables');
var ArrayProto = Array.prototype;
if (ArrayProto[UNSCOPABLES] == undefined) __webpack_require__(4)(ArrayProto, UNSCOPABLES, {});
module.exports = function (key) {
  ArrayProto[UNSCOPABLES][key] = true;
};


/***/ }),
/* 46 */
/***/ (function(module, exports, __webpack_require__) {

var store = __webpack_require__(18)('wks');
var uid = __webpack_require__(16);
var Symbol = __webpack_require__(2).Symbol;
var USE_SYMBOL = typeof Symbol == 'function';

var $exports = module.exports = function (name) {
  return store[name] || (store[name] =
    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};

$exports.store = store;


/***/ }),
/* 47 */
/***/ (function(module, exports) {

module.exports = function (done, value) {
  return { value: value, done: !!done };
};


/***/ }),
/* 48 */
/***/ (function(module, exports) {

module.exports = {};


/***/ }),
/* 49 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var LIBRARY = __webpack_require__(19);
var $export = __webpack_require__(1);
var redefine = __webpack_require__(14);
var hide = __webpack_require__(4);
var Iterators = __webpack_require__(48);
var $iterCreate = __webpack_require__(50);
var setToStringTag = __webpack_require__(54);
var getPrototypeOf = __webpack_require__(55);
var ITERATOR = __webpack_require__(46)('iterator');
var BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`
var FF_ITERATOR = '@@iterator';
var KEYS = 'keys';
var VALUES = 'values';

var returnThis = function () { return this; };

module.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {
  $iterCreate(Constructor, NAME, next);
  var getMethod = function (kind) {
    if (!BUGGY && kind in proto) return proto[kind];
    switch (kind) {
      case KEYS: return function keys() { return new Constructor(this, kind); };
      case VALUES: return function values() { return new Constructor(this, kind); };
    } return function entries() { return new Constructor(this, kind); };
  };
  var TAG = NAME + ' Iterator';
  var DEF_VALUES = DEFAULT == VALUES;
  var VALUES_BUG = false;
  var proto = Base.prototype;
  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];
  var $default = $native || getMethod(DEFAULT);
  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;
  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;
  var methods, key, IteratorPrototype;
  // Fix native
  if ($anyNative) {
    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));
    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {
      // Set @@toStringTag to native iterators
      setToStringTag(IteratorPrototype, TAG, true);
      // fix for some old engines
      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);
    }
  }
  // fix Array#{values, @@iterator}.name in V8 / FF
  if (DEF_VALUES && $native && $native.name !== VALUES) {
    VALUES_BUG = true;
    $default = function values() { return $native.call(this); };
  }
  // Define iterator
  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {
    hide(proto, ITERATOR, $default);
  }
  // Plug for library
  Iterators[NAME] = $default;
  Iterators[TAG] = returnThis;
  if (DEFAULT) {
    methods = {
      values: DEF_VALUES ? $default : getMethod(VALUES),
      keys: IS_SET ? $default : getMethod(KEYS),
      entries: $entries
    };
    if (FORCED) for (key in methods) {
      if (!(key in proto)) redefine(proto, key, methods[key]);
    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
  }
  return methods;
};


/***/ }),
/* 50 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var create = __webpack_require__(51);
var descriptor = __webpack_require__(13);
var setToStringTag = __webpack_require__(54);
var IteratorPrototype = {};

// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
__webpack_require__(4)(IteratorPrototype, __webpack_require__(46)('iterator'), function () { return this; });

module.exports = function (Constructor, NAME, next) {
  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });
  setToStringTag(Constructor, NAME + ' Iterator');
};


/***/ }),
/* 51 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
var anObject = __webpack_require__(6);
var dPs = __webpack_require__(52);
var enumBugKeys = __webpack_require__(34);
var IE_PROTO = __webpack_require__(33)('IE_PROTO');
var Empty = function () { /* empty */ };
var PROTOTYPE = 'prototype';

// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
  // Thrash, waste and sodomy: IE GC bug
  var iframe = __webpack_require__(11)('iframe');
  var i = enumBugKeys.length;
  var lt = '<';
  var gt = '>';
  var iframeDocument;
  iframe.style.display = 'none';
  __webpack_require__(53).appendChild(iframe);
  iframe.src = 'javascript:'; // eslint-disable-line no-script-url
  // createDict = iframe.contentWindow.Object;
  // html.removeChild(iframe);
  iframeDocument = iframe.contentWindow.document;
  iframeDocument.open();
  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);
  iframeDocument.close();
  createDict = iframeDocument.F;
  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];
  return createDict();
};

module.exports = Object.create || function create(O, Properties) {
  var result;
  if (O !== null) {
    Empty[PROTOTYPE] = anObject(O);
    result = new Empty();
    Empty[PROTOTYPE] = null;
    // add "__proto__" for Object.getPrototypeOf polyfill
    result[IE_PROTO] = O;
  } else result = createDict();
  return Properties === undefined ? result : dPs(result, Properties);
};


/***/ }),
/* 52 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(5);
var anObject = __webpack_require__(6);
var getKeys = __webpack_require__(41);

module.exports = __webpack_require__(9) ? Object.defineProperties : function defineProperties(O, Properties) {
  anObject(O);
  var keys = getKeys(Properties);
  var length = keys.length;
  var i = 0;
  var P;
  while (length > i) dP.f(O, P = keys[i++], Properties[P]);
  return O;
};


/***/ }),
/* 53 */
/***/ (function(module, exports, __webpack_require__) {

var document = __webpack_require__(2).document;
module.exports = document && document.documentElement;


/***/ }),
/* 54 */
/***/ (function(module, exports, __webpack_require__) {

var def = __webpack_require__(5).f;
var has = __webpack_require__(15);
var TAG = __webpack_require__(46)('toStringTag');

module.exports = function (it, tag, stat) {
  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });
};


/***/ }),
/* 55 */
/***/ (function(module, exports, __webpack_require__) {

// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
var has = __webpack_require__(15);
var toObject = __webpack_require__(40);
var IE_PROTO = __webpack_require__(33)('IE_PROTO');
var ObjectProto = Object.prototype;

module.exports = Object.getPrototypeOf || function (O) {
  O = toObject(O);
  if (has(O, IE_PROTO)) return O[IE_PROTO];
  if (typeof O.constructor == 'function' && O instanceof O.constructor) {
    return O.constructor.prototype;
  } return O instanceof Object ? ObjectProto : null;
};


/***/ }),
/* 56 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var global = __webpack_require__(2);
var has = __webpack_require__(15);
var cof = __webpack_require__(27);
var inheritIfRequired = __webpack_require__(57);
var toPrimitive = __webpack_require__(12);
var fails = __webpack_require__(10);
var gOPN = __webpack_require__(23).f;
var gOPD = __webpack_require__(36).f;
var dP = __webpack_require__(5).f;
var $trim = __webpack_require__(59).trim;
var NUMBER = 'Number';
var $Number = global[NUMBER];
var Base = $Number;
var proto = $Number.prototype;
// Opera ~12 has broken Object#toString
var BROKEN_COF = cof(__webpack_require__(51)(proto)) == NUMBER;
var TRIM = 'trim' in String.prototype;

// 7.1.3 ToNumber(argument)
var toNumber = function (argument) {
  var it = toPrimitive(argument, false);
  if (typeof it == 'string' && it.length > 2) {
    it = TRIM ? it.trim() : $trim(it, 3);
    var first = it.charCodeAt(0);
    var third, radix, maxCode;
    if (first === 43 || first === 45) {
      third = it.charCodeAt(2);
      if (third === 88 || third === 120) return NaN; // Number('+0x1') should be NaN, old V8 fix
    } else if (first === 48) {
      switch (it.charCodeAt(1)) {
        case 66: case 98: radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
        case 79: case 111: radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
        default: return +it;
      }
      for (var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++) {
        code = digits.charCodeAt(i);
        // parseInt parses a string to a first unavailable symbol
        // but ToNumber should return NaN if a string contains unavailable symbols
        if (code < 48 || code > maxCode) return NaN;
      } return parseInt(digits, radix);
    }
  } return +it;
};

if (!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')) {
  $Number = function Number(value) {
    var it = arguments.length < 1 ? 0 : value;
    var that = this;
    return that instanceof $Number
      // check on 1..constructor(foo) case
      && (BROKEN_COF ? fails(function () { proto.valueOf.call(that); }) : cof(that) != NUMBER)
        ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
  };
  for (var keys = __webpack_require__(9) ? gOPN(Base) : (
    // ES3:
    'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
    // ES6 (in case, if modules with ES6 Number statics required before):
    'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
    'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
  ).split(','), j = 0, key; keys.length > j; j++) {
    if (has(Base, key = keys[j]) && !has($Number, key)) {
      dP($Number, key, gOPD(Base, key));
    }
  }
  $Number.prototype = proto;
  proto.constructor = $Number;
  __webpack_require__(14)(global, NUMBER, $Number);
}


/***/ }),
/* 57 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(7);
var setPrototypeOf = __webpack_require__(58).set;
module.exports = function (that, target, C) {
  var S = target.constructor;
  var P;
  if (S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf) {
    setPrototypeOf(that, P);
  } return that;
};


/***/ }),
/* 58 */
/***/ (function(module, exports, __webpack_require__) {

// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
var isObject = __webpack_require__(7);
var anObject = __webpack_require__(6);
var check = function (O, proto) {
  anObject(O);
  if (!isObject(proto) && proto !== null) throw TypeError(proto + ": can't set as prototype!");
};
module.exports = {
  set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
    function (test, buggy, set) {
      try {
        set = __webpack_require__(20)(Function.call, __webpack_require__(36).f(Object.prototype, '__proto__').set, 2);
        set(test, []);
        buggy = !(test instanceof Array);
      } catch (e) { buggy = true; }
      return function setPrototypeOf(O, proto) {
        check(O, proto);
        if (buggy) O.__proto__ = proto;
        else set(O, proto);
        return O;
      };
    }({}, false) : undefined),
  check: check
};


/***/ }),
/* 59 */
/***/ (function(module, exports, __webpack_require__) {

var $export = __webpack_require__(1);
var defined = __webpack_require__(28);
var fails = __webpack_require__(10);
var spaces = __webpack_require__(60);
var space = '[' + spaces + ']';
var non = '\u200b\u0085';
var ltrim = RegExp('^' + space + space + '*');
var rtrim = RegExp(space + space + '*$');

var exporter = function (KEY, exec, ALIAS) {
  var exp = {};
  var FORCE = fails(function () {
    return !!spaces[KEY]() || non[KEY]() != non;
  });
  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
  if (ALIAS) exp[ALIAS] = fn;
  $export($export.P + $export.F * FORCE, 'String', exp);
};

// 1 -> String#trimLeft
// 2 -> String#trimRight
// 3 -> String#trim
var trim = exporter.trim = function (string, TYPE) {
  string = String(defined(string));
  if (TYPE & 1) string = string.replace(ltrim, '');
  if (TYPE & 2) string = string.replace(rtrim, '');
  return string;
};

module.exports = exporter;


/***/ }),
/* 60 */
/***/ (function(module, exports) {

module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
  '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';


/***/ }),
/* 61 */
/***/ (function(module, exports, __webpack_require__) {

/*
    * Vuescroll v4.16.1
    * (c) 2018-2020 Yi(Yves) Wang
    * Released under the MIT License
    * Github: https://github.com/YvesCoding/vuescroll
    * Website: http://vuescrolljs.yvescoding.org/
    */
   
(function (global, factory) {
	 true ? module.exports = factory(__webpack_require__(62)) :
	undefined;
}(this, (function (Vue) { 'use strict';

Vue = Vue && Vue.hasOwnProperty('default') ? Vue['default'] : Vue;

var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
  return typeof obj;
} : function (obj) {
  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
};











var classCallCheck = function (instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
};

var createClass = function () {
  function defineProperties(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }

  return function (Constructor, protoProps, staticProps) {
    if (protoProps) defineProperties(Constructor.prototype, protoProps);
    if (staticProps) defineProperties(Constructor, staticProps);
    return Constructor;
  };
}();





var defineProperty = function (obj, key, value) {
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
};

var _extends = Object.assign || function (target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i];

    for (var key in source) {
      if (Object.prototype.hasOwnProperty.call(source, key)) {
        target[key] = source[key];
      }
    }
  }

  return target;
};



































var toConsumableArray = function (arr) {
  if (Array.isArray(arr)) {
    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];

    return arr2;
  } else {
    return Array.from(arr);
  }
};

function isIE() {
  /* istanbul ignore if */
  if (isServer()) return false;

  var agent = navigator.userAgent.toLowerCase();
  return agent.indexOf('msie') !== -1 || agent.indexOf('trident') !== -1 || agent.indexOf(' edge/') !== -1;
}

var isIos = function isIos() {
  /* istanbul ignore if */
  if (isServer()) return false;

  var u = navigator.userAgent;
  return !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/);
};

/* istanbul ignore next */
var isServer = function isServer() {
  return Vue.prototype.$isServer;
};

var touchManager = function () {
  function touchManager() {
    classCallCheck(this, touchManager);
  }

  createClass(touchManager, [{
    key: 'getEventObject',
    value: function getEventObject(originEvent) {
      return this.touchObject ? this.isTouch ? originEvent.touches : [originEvent] : null;
    }
  }, {
    key: 'getTouchObject',
    value: function getTouchObject() /* istanbul ignore next */{
      if (isServer()) return null;

      this.isTouch = false;
      var agent = navigator.userAgent,
          platform = navigator.platform,
          touchObject = {};
      touchObject.touch = !!('ontouchstart' in window && !window.opera || 'msmaxtouchpoints' in window.navigator || 'maxtouchpoints' in window.navigator || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0);
      touchObject.nonDeskTouch = touchObject.touch && !/win32/i.test(platform) || touchObject.touch && /win32/i.test(platform) && /mobile/i.test(agent);

      touchObject.eventType = 'onmousedown' in window && !touchObject.nonDeskTouch ? 'mouse' : 'ontouchstart' in window ? 'touch' : 'msmaxtouchpoints' in window.navigator || navigator.msMaxTouchPoints > 0 ? 'mstouchpoints' : 'maxtouchpoints' in window.navigator || navigator.maxTouchPoints > 0 ? 'touchpoints' : 'mouse';
      switch (touchObject.eventType) {
        case 'mouse':
          touchObject.touchstart = 'mousedown';
          touchObject.touchend = 'mouseup';
          touchObject.touchmove = 'mousemove';

          touchObject.touchenter = 'mouseenter';
          touchObject.touchmove = 'mousemove';
          touchObject.touchleave = 'mouseleave';
          break;
        case 'touch':
          touchObject.touchstart = 'touchstart';
          touchObject.touchend = 'touchend';
          touchObject.touchmove = 'touchmove';
          touchObject.touchcancel = 'touchcancel';

          touchObject.touchenter = 'touchstart';
          touchObject.touchmove = 'touchmove';
          touchObject.touchleave = 'touchend';
          this.isTouch = true;
          break;
        case 'mstouchpoints':
          touchObject.touchstart = 'MSPointerDown';
          touchObject.touchend = 'MSPointerUp';
          touchObject.touchmove = 'MSPointerMove';
          touchObject.touchcancel = 'MSPointerCancel';

          touchObject.touchenter = 'MSPointerDown';
          touchObject.touchmove = 'MSPointerMove';
          touchObject.touchleave = 'MSPointerUp';
          break;
        case 'touchpoints':
          touchObject.touchstart = 'pointerdown';
          touchObject.touchend = 'pointerup';
          touchObject.touchmove = 'pointermove';
          touchObject.touchcancel = 'pointercancel';

          touchObject.touchenter = 'pointerdown';
          touchObject.touchmove = 'pointermove';
          touchObject.touchleave = 'pointerup';
          break;
      }

      return this.touchObject = touchObject;
    }
  }]);
  return touchManager;
}();

function deepCopy(from, to, shallow) {
  if (shallow && isUndef(to)) {
    return from;
  }

  if (isArray(from)) {
    to = [];
    from.forEach(function (item, index) {
      to[index] = deepCopy(item, to[index]);
    });
  } else if (from) {
    if (!isPlainObj(from)) {
      return from;
    }
    to = {};
    for (var key in from) {
      to[key] = _typeof(from[key]) === 'object' ? deepCopy(from[key], to[key]) : from[key];
    }
  }
  return to;
}

function mergeObject(from, to, force, shallow) {
  if (shallow && isUndef(to)) {
    return from;
  }

  to = to || {};

  if (isArray(from)) {
    if (!isArray(to) && force) {
      to = [];
    }
    if (isArray(to)) {
      from.forEach(function (item, index) {
        to[index] = mergeObject(item, to[index], force, shallow);
      });
    }
  } else if (from) {
    if (!isPlainObj(from)) {
      if (force) {
        to = from;
      }
    } else {
      for (var key in from) {
        if (_typeof(from[key]) === 'object') {
          if (isUndef(to[key])) {
            to[key] = deepCopy(from[key], to[key], shallow);
          } else {
            mergeObject(from[key], to[key], force, shallow);
          }
        } else {
          if (isUndef(to[key]) || force) to[key] = from[key];
        }
      }
    }
  }

  return to;
}

function defineReactive(target, key, source, souceKey) {
  /* istanbul ignore if */
  if (!source[key] && typeof source !== 'function') {
    return;
  }
  souceKey = souceKey || key;
  Object.defineProperty(target, key, {
    get: function get$$1() {
      return source[souceKey];
    },

    configurable: true
  });
}

var scrollBarWidth = void 0;
function getGutter() {
  /* istanbul ignore next */
  if (isServer()) return 0;
  if (scrollBarWidth !== undefined) return scrollBarWidth;
  var outer = document.createElement('div');
  outer.style.visibility = 'hidden';
  outer.style.width = '100px';
  outer.style.position = 'absolute';
  outer.style.top = '-9999px';
  document.body.appendChild(outer);

  var widthNoScroll = outer.offsetWidth;
  outer.style.overflow = 'scroll';

  var inner = document.createElement('div');
  inner.style.width = '100%';
  outer.appendChild(inner);

  var widthWithScroll = inner.offsetWidth;
  outer.parentNode.removeChild(outer);
  scrollBarWidth = widthNoScroll - widthWithScroll;

  return scrollBarWidth;
}

function eventCenter(dom, eventName, hander) {
  var capture = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
  var type = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 'on';

  type == 'on' ? dom.addEventListener(eventName, hander, capture) : dom.removeEventListener(eventName, hander, capture);
}

var error = function error(msg) {
  console.error('[vuescroll] ' + msg);
};
var warn = function warn(msg) {
  console.warn('[vuescroll] ' + msg);
};

function isChildInParent(child, parent) {
  var flag = false;
  if (!child || !parent) {
    return flag;
  }
  while (child.parentNode !== parent && child.parentNode.nodeType !== 9 && !child.parentNode._isVuescroll) {
    child = child.parentNode;
  }
  if (child.parentNode == parent) {
    flag = true;
  }
  return flag;
}

function getPrefix(global) {
  var docStyle = document.documentElement.style;
  var engine;
  /* istanbul ignore if */
  if (global.opera && Object.prototype.toString.call(opera) === '[object Opera]') {
    engine = 'presto';
  } /* istanbul ignore next */else if ('MozAppearance' in docStyle) {
      engine = 'gecko';
    } else if ('WebkitAppearance' in docStyle) {
      engine = 'webkit';
    } /* istanbul ignore next */else if (typeof navigator.cpuClass === 'string') {
        engine = 'trident';
      }
  var vendorPrefix = {
    trident: 'ms',
    gecko: 'moz',
    webkit: 'webkit',
    presto: 'O'
  }[engine];
  return vendorPrefix;
}

function getComplitableStyle(property, value) {
  /* istanbul ignore if */
  if (isServer()) return false;

  var compatibleValue = '-' + getPrefix(window) + '-' + value;
  var testElm = document.createElement('div');
  testElm.style[property] = compatibleValue;
  if (testElm.style[property] == compatibleValue) {
    return compatibleValue;
  }
  /* istanbul ignore next */
  return false;
}

/**
 * Insert children into user-passed slot at vnode level
 */
function insertChildrenIntoSlot(h) {
  var parentVnode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  var childVNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
  var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
  var swapChildren = arguments[4];

  /* istanbul ignore if */
  if (parentVnode && parentVnode.length > 1) {
    return swapChildren ? [].concat(toConsumableArray(childVNode), toConsumableArray(parentVnode)) : [].concat(toConsumableArray(parentVnode), toConsumableArray(childVNode));
  }

  parentVnode = parentVnode[0];

  var _getVnodeInfo = getVnodeInfo(parentVnode),
      ch = _getVnodeInfo.ch,
      tag = _getVnodeInfo.tag,
      isComponent = _getVnodeInfo.isComponent;

  if (isComponent) {
    parentVnode.data = mergeObject({ attrs: parentVnode.componentOptions.propsData }, parentVnode.data, false, // force: false
    true // shallow: true
    );
  }
  ch = swapChildren ? [].concat(toConsumableArray(childVNode), toConsumableArray(ch)) : [].concat(toConsumableArray(ch), toConsumableArray(childVNode));
  delete parentVnode.data.slot;

  return h(tag, mergeObject(data, parentVnode.data, false, true), ch);
}

/**
 *  Get the info of a vnode,
 * vnode must be parentVnode
 */
function getVnodeInfo(vnode) {
  if (!vnode || vnode.length > 1) return {};

  vnode = vnode[0] ? vnode[0] : vnode;
  var isComponent = !!vnode.componentOptions;
  var ch = void 0;
  var tag = void 0;

  if (isComponent) {
    ch = vnode.componentOptions.children || [];
    tag = vnode.componentOptions.tag;
  } else {
    ch = vnode.children || [];
    tag = vnode.tag;
  }

  return {
    isComponent: isComponent,
    ch: ch,
    tag: tag
  };
}

/**
 * Get the vuescroll instance instead of
 * user pass component like slot.
 */
function getRealParent(ctx) {
  var parent = ctx.$parent;
  if (!parent._isVuescrollRoot && parent) {
    parent = parent.$parent;
  }
  return parent;
}

var isArray = function isArray(_) {
  return Array.isArray(_);
};
var isPlainObj = function isPlainObj(_) {
  return Object.prototype.toString.call(_) == '[object Object]';
};
var isUndef = function isUndef(_) {
  return typeof _ === 'undefined';
};

function getNumericValue(distance, size) {
  var number = void 0;
  if (!(number = /(-?\d+(?:\.\d+?)?)%$/.exec(distance))) {
    number = distance - 0;
  } else {
    number = number[1] - 0;
    number = size * number / 100;
  }
  return number;
}

function createStyle(styleId, cssText) {
  /* istanbul ignore if */
  if (isServer() || document.getElementById(styleId)) {
    return;
  }

  var head = document.head || doc.getElementsByTagName('head')[0];
  var style = document.createElement('style');

  style.id = styleId;
  style.type = 'text/css';

  /* istanbul ignore if */
  if (style.styleSheet) {
    style.styleSheet.cssText = cssText;
  } else {
    style.appendChild(document.createTextNode(cssText));
  }

  head.appendChild(style);
}

// Hide the ios native scrollbar.
function createHideBarStyle() {
  /* istanbul ignore next */
  {
    var cssText = '.__hidebar::-webkit-scrollbar {\n      width: 0;\n      height: 0;\n    }';

    createStyle('vuescroll-hide-ios-bar', cssText);
  }
}

// create slide mode style
function createSlideModeStyle() {
  var cssText = '\n    @-webkit-keyframes loading-rotate {\n      to {\n        -webkit-transform: rotate(1turn);\n        transform: rotate(1turn);\n      }\n    }\n\n    @keyframes loading-rotate {\n      to {\n        -webkit-transform: rotate(1turn);\n        transform: rotate(1turn);\n      }\n    }\n\n    @-webkit-keyframes loading-wipe {\n      0% {\n        stroke-dasharray: 1, 200;\n        stroke-dashoffset: 0;\n      }\n      50% {\n        stroke-dasharray: 90, 150;\n        stroke-dashoffset: -40px;\n      }\n      to {\n        stroke-dasharray: 90, 150;\n        stroke-dashoffset: -120px;\n      }\n    }\n\n    @keyframes loading-wipe {\n      0% {\n        stroke-dasharray: 1, 200;\n        stroke-dashoffset: 0;\n      }\n      50% {\n        stroke-dasharray: 90, 150;\n        stroke-dashoffset: -40px;\n      }\n      to {\n        stroke-dasharray: 90, 150;\n        stroke-dashoffset: -120px;\n      }\n    }\n\n    .__vuescroll .__refresh,\n    .__vuescroll .__load {\n      position: absolute;\n      width: 100%;\n      color: black;\n      height: 50px;\n      line-height: 50px;\n      text-align: center;\n      font-size: 16px;\n    }\n    .__vuescroll .__refresh svg,\n    .__vuescroll .__load svg {\n      margin-right: 10px;\n      width: 25px;\n      height: 25px;\n      vertical-align: sub;\n    }\n    .__vuescroll .__refresh svg.active,\n    .__vuescroll .__load svg.active {\n      transition: all 0.2s;\n    }\n    .__vuescroll .__refresh svg.active.deactive,\n    .__vuescroll .__load svg.active.deactive {\n      transform: rotateZ(180deg);\n    }\n    .__vuescroll .__refresh svg path,\n    .__vuescroll .__refresh svg rect,\n    .__vuescroll .__load svg path,\n    .__vuescroll .__load svg rect {\n      fill: #20a0ff;\n    }\n    .__vuescroll .__refresh svg.start,\n    .__vuescroll .__load svg.start {\n      stroke: #343640;\n      stroke-width: 4;\n      stroke-linecap: round;\n      -webkit-animation: loading-rotate 2s linear infinite;\n      animation: loading-rotate 2s linear infinite;\n    }\n    .__vuescroll .__refresh svg.start .bg-path,\n    .__vuescroll .__load svg.start .bg-path {\n      stroke: #f2f2f2;\n      fill: none;\n    }\n    .__vuescroll .__refresh svg.start .active-path,\n    .__vuescroll .__load svg.start .active-path {\n      stroke: #20a0ff;\n      fill: none;\n      stroke-dasharray: 90, 150;\n      stroke-dashoffset: 0;\n      -webkit-animation: loading-wipe 1.5s ease-in-out infinite;\n      animation: loading-wipe 1.5s ease-in-out infinite;\n    }\n  ';

  createStyle('vuescroll-silde-mode-style', cssText);
}

var api = {
  mounted: function mounted() {
    vsInstances[this._uid] = this;
  },
  beforeDestroy: function beforeDestroy() {
    delete vsInstances[this._uid];
  },

  methods: {
    // public api
    scrollTo: function scrollTo(_ref, speed, easing) {
      var x = _ref.x,
          y = _ref.y;

      // istanbul ignore if
      if (speed === true || typeof speed == 'undefined') {
        speed = this.mergedOptions.scrollPanel.speed;
      }
      this.internalScrollTo(x, y, speed, easing);
    },
    scrollBy: function scrollBy(_ref2, speed, easing) {
      var _ref2$dx = _ref2.dx,
          dx = _ref2$dx === undefined ? 0 : _ref2$dx,
          _ref2$dy = _ref2.dy,
          dy = _ref2$dy === undefined ? 0 : _ref2$dy;

      var _getPosition = this.getPosition(),
          _getPosition$scrollLe = _getPosition.scrollLeft,
          scrollLeft = _getPosition$scrollLe === undefined ? 0 : _getPosition$scrollLe,
          _getPosition$scrollTo = _getPosition.scrollTop,
          scrollTop = _getPosition$scrollTo === undefined ? 0 : _getPosition$scrollTo;

      if (dx) {
        scrollLeft += getNumericValue(dx, this.scrollPanelElm.scrollWidth - this.$el.clientWidth);
      }
      if (dy) {
        scrollTop += getNumericValue(dy, this.scrollPanelElm.scrollHeight - this.$el.clientHeight);
      }
      this.internalScrollTo(scrollLeft, scrollTop, speed, easing);
    },
    scrollIntoView: function scrollIntoView(elm) {
      var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;

      var parentElm = this.$el;

      if (typeof elm === 'string') {
        elm = parentElm.querySelector(elm);
      }

      if (!isChildInParent(elm, parentElm)) {
        warn('The element or selector you passed is not the element of Vuescroll, please pass the element that is in Vuescroll to scrollIntoView API. ');
        return;
      }

      // parent elm left, top

      var _$el$getBoundingClien = this.$el.getBoundingClientRect(),
          left = _$el$getBoundingClien.left,
          top = _$el$getBoundingClien.top;
      // child elm left, top


      var _elm$getBoundingClien = elm.getBoundingClientRect(),
          childLeft = _elm$getBoundingClien.left,
          childTop = _elm$getBoundingClien.top;

      var diffX = left - childLeft;
      var diffY = top - childTop;

      this.scrollBy({
        dx: -diffX,
        dy: -diffY
      }, animate);
    },
    refresh: function refresh() {
      this.refreshInternalStatus();
      // refresh again to keep status is correct
      this.$nextTick(this.refreshInternalStatus);
    }
  }
};

/** Public Api */

/**
 * Refresh all
 */
var vsInstances = {};
function refreshAll() {
  for (var vs in vsInstances) {
    vsInstances[vs].refresh();
  }
}

var baseConfig = {
  // vuescroll
  vuescroll: {
    // vuescroll's size(height/width) should be a percent(100%)
    // or be a number that is equal to its parentNode's width or
    // height ?
    sizeStrategy: 'percent',
    /** Whether to detect dom resize or not */
    detectResize: true
  },
  scrollPanel: {
    // when component mounted.. it will automatically scrolls.
    initialScrollY: false,
    initialScrollX: false,
    // feat: #11
    scrollingX: true,
    scrollingY: true,
    speed: 300,
    easing: undefined,
    // Sometimes, the nativebar maybe on the left,
    // See https://github.com/YvesCoding/vuescroll/issues/64
    verticalNativeBarPos: 'right',
    maxHeight: undefined,
    maxWidth: undefined
  },

  //
  rail: {
    background: '#01a99a',
    opacity: 0,
    border: 'none',
    /** Rail's size(Height/Width) , default -> 6px */
    size: '6px',
    /** Specify rail's border-radius, or the border-radius of rail and bar will be equal to the rail's size. default -> false **/
    specifyBorderRadius: false,
    /** Rail the distance from the two ends of the X axis and Y axis. **/
    gutterOfEnds: null,
    /** Rail the distance from the side of container. **/
    gutterOfSide: '2px',
    /** Whether to keep rail show or not, default -> false, event content height is not enough */
    keepShow: false
  },
  bar: {
    /** How long to hide bar after mouseleave, default -> 500 */
    showDelay: 500,
    /** Specify bar's border-radius, or the border-radius of rail and bar will be equal to the rail's size. default -> false **/
    specifyBorderRadius: false,
    /** Whether to show bar on scrolling, default -> true */
    onlyShowBarOnScroll: true,
    /** Whether to keep show or not, default -> false */
    keepShow: false,
    /** Bar's background , default -> #00a650 */
    background: 'rgb(3, 185, 118)',
    /** Bar's opacity, default -> 1  */
    opacity: 1,
    /** bar's size(Height/Width) , default -> 6px */

    size: '6px',
    minSize: 0,
    disable: false
  },
  scrollButton: {
    enable: false,
    background: 'rgb(3, 185, 118)',
    opacity: 1,
    step: 180,
    mousedownStep: 30
  }
};
/**
 * validate the options
 * @export
 * @param {any} ops
 */
function validateOps(ops) {
  var renderError = false;
  var scrollPanel = ops.scrollPanel;
  var _ops$bar = ops.bar,
      vBar = _ops$bar.vBar,
      hBar = _ops$bar.hBar;
  var _ops$rail = ops.rail,
      vRail = _ops$rail.vRail,
      hRail = _ops$rail.hRail;

  // validate scrollPanel

  var initialScrollY = scrollPanel['initialScrollY'];
  var initialScrollX = scrollPanel['initialScrollX'];

  if (initialScrollY && !String(initialScrollY).match(/^\d+(\.\d+)?(%)?$/)) {
    warn('The prop `initialScrollY` or `initialScrollX` should be a percent number like `10%` or an exact number that greater than or equal to 0 like `100`.');
  }
  if (initialScrollX && !String(initialScrollX).match(/^\d+(\.\d+)?(%)?$/)) {
    warn('The prop `initialScrollY` or `initialScrollX` should be a percent number like `10%` or an exact number that greater than or equal to 0 like `100`.');
  }

  // validate deprecated vBar/hBar vRail/hRail
  if (vBar || hBar || vRail || hRail) {
    warn('The options: vRail, hRail, vBar, hBar have been deprecated since v4.7.0,' + 'please use corresponing rail/bar instead!');
  }

  if (_extraValidate) {
    _extraValidate = [].concat(_extraValidate);
    _extraValidate.forEach(function (hasError) {
      if (hasError(ops)) {
        renderError = true;
      }
    });
  }
  return renderError;
}

var _extraValidate = null;
var extendOpts = function extendOpts(extraOpts, extraValidate) {
  extraOpts = [].concat(extraOpts);
  extraOpts.forEach(function (opts) {
    mergeObject(opts, baseConfig);
  });

  _extraValidate = extraValidate;
};

// all modes
var modes = ['slide', 'native'];
// do nothing
var NOOP = function NOOP() {};
// some small changes.
var smallChangeArray = ['mergedOptions.vuescroll.pullRefresh.tips', 'mergedOptions.vuescroll.pushLoad.tips', 'mergedOptions.vuescroll.scroller.disable', 'mergedOptions.rail', 'mergedOptions.bar'];
// refresh/load dom ref/key...
var __REFRESH_DOM_NAME = 'refreshDom';
var __LOAD_DOM_NAME = 'loadDom';

var scrollMap = {
  vertical: {
    size: 'height',
    opsSize: 'width',
    posName: 'top',
    opposName: 'bottom',
    sidePosName: 'right',
    page: 'pageY',
    scroll: 'scrollTop',
    scrollSize: 'scrollHeight',
    offset: 'offsetHeight',
    client: 'clientY',
    axis: 'Y',
    scrollButton: {
      start: 'top',
      end: 'bottom'
    }
  },
  horizontal: {
    size: 'width',
    opsSize: 'height',
    posName: 'left',
    opposName: 'right',
    sidePosName: 'bottom',
    page: 'pageX',
    scroll: 'scrollLeft',
    scrollSize: 'scrollWidth',
    offset: 'offsetWidth',
    client: 'clientX',
    axis: 'X',
    scrollButton: {
      start: 'left',
      end: 'right'
    }
  }
};

function requestAnimationFrame(global) {
  // Check for request animation Frame support
  var requestFrame = global.requestAnimationFrame || global.webkitRequestAnimationFrame || global.mozRequestAnimationFrame || global.oRequestAnimationFrame;
  var isNative = !!requestFrame;

  if (requestFrame && !/requestAnimationFrame\(\)\s*\{\s*\[native code\]\s*\}/i.test(requestFrame.toString())) {
    isNative = false;
  }

  if (isNative) {
    return function (callback, root) {
      requestFrame(callback, root);
    };
  }

  var TARGET_FPS = 60;
  var requests = {};
  var rafHandle = 1;
  var intervalHandle = null;
  var lastActive = +new Date();

  return function (callback) {
    var callbackHandle = rafHandle++;

    // Store callback
    requests[callbackHandle] = callback;

    // Create timeout at first request
    if (intervalHandle === null) {
      intervalHandle = setInterval(function () {
        var time = +new Date();
        var currentRequests = requests;

        // Reset data structure before executing callbacks
        requests = {};

        for (var key in currentRequests) {
          if (currentRequests.hasOwnProperty(key)) {
            currentRequests[key](time);
            lastActive = time;
          }
        }

        // Disable the timeout when nothing happens for a certain
        // period of time
        if (time - lastActive > 2500) {
          clearInterval(intervalHandle);
          intervalHandle = null;
        }
      }, 1000 / TARGET_FPS);
    }

    return callbackHandle;
  };
}

var colorCache = {};
var rgbReg = /rgb\(/;
var extractRgbColor = /rgb\((.*)\)/;

// Transform a common color int oa `rgbA` color
function getRgbAColor(color, opacity) {
  var id = color + '&' + opacity;
  if (colorCache[id]) {
    return colorCache[id];
  }

  var div = document.createElement('div');
  div.style.background = color;
  document.body.appendChild(div);
  var computedColor = window.getComputedStyle(div).backgroundColor;
  document.body.removeChild(div);

  /* istanbul ignore if */
  if (!rgbReg.test(computedColor)) {
    return color;
  }

  return colorCache[id] = 'rgba(' + extractRgbColor.exec(computedColor)[1] + ', ' + opacity + ')';
}

var bar = {
  name: 'bar',
  props: {
    ops: Object,
    state: Object,
    hideBar: Boolean,
    otherBarHide: Boolean,
    type: String
  },
  computed: {
    bar: function bar() {
      return scrollMap[this.type];
    },
    barSize: function barSize() {
      return Math.max(this.state.size, this.ops.bar.minSize);
    },
    barRatio: function barRatio() {
      return (1 - this.barSize) / (1 - this.state.size);
    }
  },
  render: function render(h) {
    var _style, _style2, _barStyle;

    var vm = this;
    /** Get rgbA format background color */
    var railBackgroundColor = getRgbAColor(vm.ops.rail.background, vm.ops.rail.opacity);

    if (!this.touchManager) {
      this.touchManager = new touchManager();
    }

    /** Rail Data */
    var railSize = vm.ops.rail.size;
    var endPos = vm.otherBarHide ? 0 : railSize;
    var touchObj = vm.touchManager.getTouchObject();
    var rail = {
      class: '__rail-is-' + vm.type,
      style: (_style = {
        position: 'absolute',
        'z-index': '1',

        borderRadius: vm.ops.rail.specifyBorderRadius || railSize,
        background: railBackgroundColor,
        border: vm.ops.rail.border
      }, defineProperty(_style, vm.bar.opsSize, railSize), defineProperty(_style, vm.bar.posName, vm.ops.rail['gutterOfEnds'] || 0), defineProperty(_style, vm.bar.opposName, vm.ops.rail['gutterOfEnds'] || endPos), defineProperty(_style, vm.bar.sidePosName, vm.ops.rail['gutterOfSide']), _style)
    };

    if (touchObj) {
      var _rail$on;

      rail.on = (_rail$on = {}, defineProperty(_rail$on, touchObj.touchenter, function () {
        vm.setRailHover();
      }), defineProperty(_rail$on, touchObj.touchleave, function () {
        vm.setRailLeave();
      }), _rail$on);
    }

    // left space for scroll button
    var buttonSize = vm.ops.scrollButton.enable ? railSize : 0;
    var barWrapper = {
      class: '__bar-wrap-is-' + vm.type,
      style: (_style2 = {
        position: 'absolute',
        borderRadius: vm.ops.rail.specifyBorderRadius || railSize
      }, defineProperty(_style2, vm.bar.posName, buttonSize), defineProperty(_style2, vm.bar.opposName, buttonSize), _style2),
      on: {}
    };

    var scrollDistance = vm.state.posValue * vm.state.size;
    var pos = scrollDistance * vm.barRatio / vm.barSize;
    var opacity = vm.state.opacity;
    var parent = getRealParent(this);

    // set class hook
    parent.setClassHook(this.type == 'vertical' ? 'vBarVisible' : 'hBarVisible', !!opacity);

    /** Scrollbar style */
    var barStyle = (_barStyle = {
      cursor: 'pointer',
      position: 'absolute',
      margin: 'auto',
      transition: 'opacity 0.5s',
      'user-select': 'none',
      'border-radius': 'inherit'

    }, defineProperty(_barStyle, vm.bar.size, vm.barSize * 100 + '%'), defineProperty(_barStyle, 'background', vm.ops.bar.background), defineProperty(_barStyle, vm.bar.opsSize, vm.ops.bar.size), defineProperty(_barStyle, 'opacity', opacity), defineProperty(_barStyle, 'transform', 'translate' + scrollMap[vm.type].axis + '(' + pos + '%)'), _barStyle);
    var bar = {
      style: barStyle,
      class: '__bar-is-' + vm.type,
      ref: 'thumb',
      on: {}
    };

    if (vm.type == 'vertical') {
      barWrapper.style.width = '100%';
      // Let bar to be on the center.
      bar.style.left = 0;
      bar.style.right = 0;
    } else {
      barWrapper.style.height = '100%';
      bar.style.top = 0;
      bar.style.bottom = 0;
    }

    /* istanbul ignore next */
    {
      var _touchObj = this.touchManager.getTouchObject();
      bar.on[_touchObj.touchstart] = this.createBarEvent();
      barWrapper.on[_touchObj.touchstart] = this.createTrackEvent();
    }

    return h(
      'div',
      rail,
      [this.createScrollbarButton(h, 'start'), this.hideBar ? null : h(
        'div',
        barWrapper,
        [h('div', bar)]
      ), this.createScrollbarButton(h, 'end')]
    );
  },
  data: function data() {
    return {
      isBarDragging: false
    };
  },

  methods: {
    setRailHover: function setRailHover() {
      var parent = getRealParent(this);
      var state = parent.vuescroll.state;

      if (!state.isRailHover) {
        state.isRailHover = true;
        parent.showBar();
      }
    },
    setRailLeave: function setRailLeave() {
      var parent = getRealParent(this);
      var state = parent.vuescroll.state;

      state.isRailHover = false;
      parent.hideBar();
    },
    setBarDrag: function setBarDrag(val) /* istanbul ignore next */{
      this.$emit('setBarDrag', this.isBarDragging = val);

      var parent = getRealParent(this);
      // set class hook
      parent.setClassHook(this.type == 'vertical' ? 'vBarDragging' : 'hBarDragging', !!val);
    },
    createBarEvent: function createBarEvent() {
      var ctx = this;

      var parent = getRealParent(ctx);
      var touchObj = ctx.touchManager.getTouchObject();

      function mousedown(e) /* istanbul ignore next */{
        var event = ctx.touchManager.getEventObject(e);
        if (!event) return;

        e.stopImmediatePropagation();
        e.preventDefault();
        event = event[0];

        document.onselectstart = function () {
          return false;
        };
        ctx.axisStartPos = event[ctx.bar.client] - ctx.$refs['thumb'].getBoundingClientRect()[ctx.bar.posName];

        // Tell parent that the mouse has been down.
        ctx.setBarDrag(true);
        eventCenter(document, touchObj.touchmove, mousemove);
        eventCenter(document, touchObj.touchend, mouseup);
      }

      function mousemove(e) /* istanbul ignore next */{
        if (!ctx.axisStartPos) {
          return;
        }

        var event = ctx.touchManager.getEventObject(e);
        if (!event) return;

        event = event[0];

        var thubmParent = ctx.$refs.thumb.parentNode;

        var delta = event[ctx.bar.client] - thubmParent.getBoundingClientRect()[ctx.bar.posName];
        delta = delta / ctx.barRatio;

        var percent = (delta - ctx.axisStartPos) / thubmParent[ctx.bar.offset];
        parent.scrollTo(defineProperty({}, ctx.bar.axis.toLowerCase(), parent.scrollPanelElm[ctx.bar.scrollSize] * percent), false);
      }

      function mouseup() /* istanbul ignore next */{
        ctx.setBarDrag(false);
        parent.hideBar();

        document.onselectstart = null;
        ctx.axisStartPos = 0;

        eventCenter(document, touchObj.touchmove, mousemove, false, 'off');
        eventCenter(document, touchObj.touchend, mouseup, false, 'off');
      }

      return mousedown;
    },
    createTrackEvent: function createTrackEvent() {
      var ctx = this;

      return function handleClickTrack(e) {
        var parent = getRealParent(ctx);

        var _ctx$bar = ctx.bar,
            client = _ctx$bar.client,
            offset = _ctx$bar.offset,
            posName = _ctx$bar.posName,
            axis = _ctx$bar.axis;

        var thumb = ctx.$refs['thumb'];

        e.preventDefault();
        e.stopImmediatePropagation();

        /* istanbul ignore if */
        if (!thumb) return;

        var barOffset = thumb[offset];
        var event = ctx.touchManager.getEventObject(e)[0];

        var percent = (event[client] - e.currentTarget.getBoundingClientRect()[posName] - barOffset / 2) / (e.currentTarget[offset] - barOffset);

        parent.scrollTo(defineProperty({}, axis.toLowerCase(), percent * 100 + '%'));
      };
    },


    // Scrollbuton relative things...
    createScrollbarButton: function createScrollbarButton(h, type /* start or end  */) {
      var _style3;

      var barContext = this;

      if (!barContext.ops.scrollButton.enable) {
        return null;
      }

      var size = barContext.ops.rail.size;
      var _barContext$ops$scrol = barContext.ops.scrollButton,
          opacity = _barContext$ops$scrol.opacity,
          background = _barContext$ops$scrol.background;

      var borderColor = getRgbAColor(background, opacity);

      var wrapperProps = {
        class: ['__bar-button', '__bar-button-is-' + barContext.type + '-' + type],
        style: (_style3 = {}, defineProperty(_style3, barContext.bar.scrollButton[type], 0), defineProperty(_style3, 'width', size), defineProperty(_style3, 'height', size), defineProperty(_style3, 'position', 'absolute'), defineProperty(_style3, 'cursor', 'pointer'), defineProperty(_style3, 'display', 'table'), _style3),
        ref: type
      };

      var innerProps = {
        class: '__bar-button-inner',
        style: {
          border: 'calc(' + size + ' / 2.5) solid transparent',
          width: '0',
          height: '0',
          margin: 'auto',
          position: 'absolute',
          top: '0',
          bottom: '0',
          right: '0',
          left: '0'
        },
        on: {}
      };

      if (barContext.type == 'vertical') {
        if (type == 'start') {
          innerProps.style['border-bottom-color'] = borderColor;
          innerProps.style['transform'] = 'translateY(-25%)';
        } else {
          innerProps.style['border-top-color'] = borderColor;
          innerProps.style['transform'] = 'translateY(25%)';
        }
      } else {
        if (type == 'start') {
          innerProps.style['border-right-color'] = borderColor;
          innerProps.style['transform'] = 'translateX(-25%)';
        } else {
          innerProps.style['border-left-color'] = borderColor;
          innerProps.style['transform'] = 'translateX(25%)';
        }
      }

      /* istanbul ignore next */
      {
        var touchObj = this.touchManager.getTouchObject();
        innerProps.on[touchObj.touchstart] = this.createScrollButtonEvent(type, touchObj);
      }

      return h(
        'div',
        wrapperProps,
        [h('div', innerProps)]
      );
    },
    createScrollButtonEvent: function createScrollButtonEvent(type, touchObj) {
      var ctx = this;
      var parent = getRealParent(ctx);

      var _ctx$ops$scrollButton = ctx.ops.scrollButton,
          step = _ctx$ops$scrollButton.step,
          mousedownStep = _ctx$ops$scrollButton.mousedownStep;


      var stepWithDirection = type == 'start' ? -step : step;
      var mousedownStepWithDirection = type == 'start' ? -mousedownStep : mousedownStep;
      var ref = requestAnimationFrame(window);

      // bar props: type
      var barType = ctx.type;

      var isMouseDown = false;
      var isMouseout = true;
      var timeoutId = void 0;

      function start(e) {
        /* istanbul ignore if */

        if (3 == e.which) {
          return;
        }

        // set class hook
        parent.setClassHook('cliking' + barType + type + 'Button', true);

        e.stopImmediatePropagation();
        e.preventDefault();

        isMouseout = false;

        parent.scrollBy(defineProperty({}, 'd' + ctx.bar.axis.toLowerCase(), stepWithDirection));

        eventCenter(document, touchObj.touchend, endPress, false);

        if (touchObj.touchstart == 'mousedown') {
          var elm = ctx.$refs[type];
          eventCenter(elm, 'mouseenter', enter, false);
          eventCenter(elm, 'mouseleave', leave, false);
        }

        clearTimeout(timeoutId);
        timeoutId = setTimeout(function () /* istanbul ignore next */{
          isMouseDown = true;
          ref(pressing, window);
        }, 500);
      }

      function pressing() /* istanbul ignore next */{
        if (isMouseDown && !isMouseout) {
          parent.scrollBy(defineProperty({}, 'd' + ctx.bar.axis.toLowerCase(), mousedownStepWithDirection), false);
          ref(pressing, window);
        }
      }

      function endPress() {
        clearTimeout(timeoutId);
        isMouseDown = false;
        eventCenter(document, touchObj.touchend, endPress, false, 'off');

        if (touchObj.touchstart == 'mousedown') {
          var elm = ctx.$refs[type];
          eventCenter(elm, 'mouseenter', enter, false, 'off');
          eventCenter(elm, 'mouseleave', leave, false, 'off');
        }

        parent.setClassHook('cliking' + barType + type + 'Button', false);
      }

      function enter() /* istanbul ignore next */{
        isMouseout = false;
        pressing();
      }

      function leave() /* istanbul ignore next */{
        isMouseout = true;
      }

      return start;
    }
  }
};

function getBarData(vm, type) {
  var axis = scrollMap[type].axis;
  /** type.charAt(0) = vBar/hBar */
  var barType = type.charAt(0) + 'Bar';

  var hideBar = !vm.bar[barType].state.size || !vm.mergedOptions.scrollPanel['scrolling' + axis] || vm.refreshLoad && type !== 'vertical' || vm.mergedOptions.bar.disable;

  var keepShowRail = vm.mergedOptions.rail.keepShow;

  if (hideBar && !keepShowRail) {
    return null;
  }

  return {
    hideBar: hideBar,
    props: {
      type: type,
      ops: {
        bar: vm.mergedOptions.bar,
        rail: vm.mergedOptions.rail,
        scrollButton: vm.mergedOptions.scrollButton
      },
      state: vm.bar[barType].state,
      hideBar: hideBar
    },
    on: {
      setBarDrag: vm.setBarDrag
    },
    ref: type + 'Bar',
    key: type
  };
}

/**
 * create bars
 *
 * @param {any} size
 * @param {any} type
 */
function createBar(h, vm) {
  var verticalBarProps = getBarData(vm, 'vertical');
  var horizontalBarProps = getBarData(vm, 'horizontal');

  // set class hooks
  vm.setClassHook('hasVBar', !!(verticalBarProps && !verticalBarProps.hideBar));
  vm.setClassHook('hasHBar', !!(horizontalBarProps && !horizontalBarProps.hideBar));

  return [verticalBarProps ? h('bar', _extends({}, verticalBarProps, {
    props: _extends({ otherBarHide: !horizontalBarProps }, verticalBarProps.props)
  })) : null, horizontalBarProps ? h('bar', _extends({}, horizontalBarProps, {
    props: _extends({ otherBarHide: !verticalBarProps }, horizontalBarProps.props)
  })) : null];
}

/**
 * This is like a HOC, It extracts the common parts of the
 * native-mode, slide-mode and mix-mode.
 * Each mode must implement the following methods:
 * 1. refreshInternalStatus : use to refresh the component
 * 2. destroy : Destroy some registryed events before component destroy.
 * 3. updateBarStateAndEmitEvent: use to update bar states and emit events.
 */

var createComponent = function createComponent(_ref) {
  var _render = _ref.render,
      components = _ref.components,
      mixins = _ref.mixins;
  return {
    name: 'vueScroll',
    props: {
      ops: { type: Object }
    },
    components: components,
    mixins: [api].concat(toConsumableArray([].concat(mixins))),
    created: function created() {
      var _this = this;

      /**
       * Begin to merge options
       */

      var _gfc = mergeObject(this.$vuescrollConfig || {}, {});
      var ops = mergeObject(baseConfig, _gfc);

      this.$options.propsData.ops = this.$options.propsData.ops || {};
      Object.keys(this.$options.propsData.ops).forEach(function (key) {
        {
          defineReactive(_this.mergedOptions, key, _this.$options.propsData.ops);
        }
      });
      // from ops to mergedOptions
      mergeObject(ops, this.mergedOptions);

      this._isVuescrollRoot = true;
      this.renderError = validateOps(this.mergedOptions);
    },
    render: function render(h) {
      var vm = this;
      if (vm.renderError) {
        return h('div', [[vm.$slots['default']]]);
      }

      if (!vm.touchManager) vm.touchManager = new touchManager();

      // vuescroll data
      var data = {
        style: {
          height: vm.vuescroll.state.height,
          width: vm.vuescroll.state.width,
          padding: 0,
          position: 'relative',
          overflow: 'hidden'
        },
        class: _extends({ __vuescroll: true }, vm.classHooks)
      };

      var touchObj = vm.touchManager.getTouchObject();
      if (touchObj) {
        var _data$on;

        data.on = (_data$on = {}, defineProperty(_data$on, touchObj.touchenter, function () {
          vm.vuescroll.state.pointerLeave = false;
          vm.updateBarStateAndEmitEvent();

          vm.setClassHook('mouseEnter', true);
        }), defineProperty(_data$on, touchObj.touchleave, function () {
          vm.vuescroll.state.pointerLeave = true;
          vm.hideBar();

          vm.setClassHook('mouseEnter', false);
        }), defineProperty(_data$on, touchObj.touchmove, function () /* istanbul ignore next */{
          vm.vuescroll.state.pointerLeave = false;
          vm.updateBarStateAndEmitEvent();
        }), _data$on);
      }

      var ch = [_render(h, vm)].concat(toConsumableArray(createBar(h, vm)));

      var _customContainer = this.$slots['scroll-container'];
      if (_customContainer) {
        return insertChildrenIntoSlot(h, _customContainer, ch, data);
      }

      return h(
        'div',
        data,
        [ch]
      );
    },
    mounted: function mounted() {
      var _this2 = this;

      if (!this.renderError) {
        this.initVariables();
        this.initWatchOpsChange();
        // Call external merged Api
        this.refreshInternalStatus();

        this.updatedCbs.push(function () {
          _this2.scrollToAnchor();
          // need to reflow to deal with the
          // latest thing.
          _this2.updateBarStateAndEmitEvent();
        });
      }
    },
    updated: function updated() {
      var _this3 = this;

      this.updatedCbs.forEach(function (cb) {
        cb.call(_this3);
      });
      // Clear
      this.updatedCbs = [];
    },
    beforeDestroy: function beforeDestroy() {
      if (this.destroy) {
        this.destroy();
      }
    },


    /** ------------------------------- Computed ----------------------------- */
    computed: {
      scrollPanelElm: function scrollPanelElm() {
        return this.$refs['scrollPanel']._isVue ? this.$refs['scrollPanel'].$el : this.$refs['scrollPanel'];
      }
    },
    data: function data() {
      return {
        vuescroll: {
          state: {
            isDragging: false,
            pointerLeave: true,
            isRailHover: false,
            /** Default sizeStrategies */
            height: '100%',
            width: '100%',
            // current size strategy
            currentSizeStrategy: 'percent',
            currentScrollState: null,
            currentScrollInfo: null
          }
        },
        bar: {
          vBar: {
            state: {
              posValue: 0,
              size: 0,
              opacity: 0
            }
          },
          hBar: {
            state: {
              posValue: 0,
              size: 0,
              opacity: 0
            }
          }
        },
        mergedOptions: {
          vuescroll: {},
          scrollPanel: {},
          scrollContent: {},
          rail: {},
          bar: {}
        },
        updatedCbs: [],
        renderError: false,

        classHooks: {
          hasVBar: false,
          hasHBar: false,

          vBarVisible: false,
          hBarVisible: false,

          vBarDragging: false,
          hBarDragging: false,

          clikingVerticalStartButton: false,
          clikingVerticalEndButton: false,
          clikingHorizontalStartButton: false,
          clikingHorizontalEndButton: false,

          mouseEnter: false
        }
      };
    },

    /** ------------------------------- Methods -------------------------------- */
    methods: {
      /** ------------------------ Handlers --------------------------- */

      scrollingComplete: function scrollingComplete() {
        this.updateBarStateAndEmitEvent('handle-scroll-complete');
      },
      setBarDrag: function setBarDrag(val) {
        /* istanbul ignore next */
        this.vuescroll.state.isDragging = val;
      },
      setClassHook: function setClassHook(name, value) {
        this.classHooks[name] = value;
      },


      /** ------------------------ Some Helpers --------------------------- */

      /*
       * To have a good ux, instead of hiding bar immediately, we hide bar
       * after some seconds by using this simple debounce-hidebar method.
       */
      showAndDefferedHideBar: function showAndDefferedHideBar(forceHideBar) {
        var _this4 = this;

        this.showBar();

        if (this.timeoutId) {
          clearTimeout(this.timeoutId);
          this.timeoutId = 0;
        }

        this.timeoutId = setTimeout(function () {
          _this4.timeoutId = 0;
          _this4.hideBar(forceHideBar);
        }, this.mergedOptions.bar.showDelay);
      },
      showBar: function showBar() {
        var opacity = this.mergedOptions.bar.opacity;
        this.bar.vBar.state.opacity = opacity;
        this.bar.hBar.state.opacity = opacity;
      },
      hideBar: function hideBar(forceHideBar) {
        var _vuescroll$state = this.vuescroll.state,
            isDragging = _vuescroll$state.isDragging,
            isRailHover = _vuescroll$state.isRailHover;
        /* istanbul ignore next */

        if (isDragging || isRailHover) {
          return;
        }

        if (forceHideBar && !this.mergedOptions.bar.keepShow) {
          this.bar.hBar.state.opacity = 0;
          this.bar.vBar.state.opacity = 0;
        }

        // add isDragging condition
        // to prevent from hiding bar while dragging the bar
        if (!this.mergedOptions.bar.keepShow && !this.vuescroll.state.isDragging) {
          this.bar.vBar.state.opacity = 0;
          this.bar.hBar.state.opacity = 0;
        }
      },
      useNumbericSize: function useNumbericSize() {
        this.vuescroll.state.currentSizeStrategy = 'number';
        var _mergedOptions$scroll = this.mergedOptions.scrollPanel,
            maxHeight = _mergedOptions$scroll.maxHeight,
            maxWidth = _mergedOptions$scroll.maxWidth;
        var _$el$parentNode = this.$el.parentNode,
            parentClientHeight = _$el$parentNode.clientHeight,
            parentClientWidth = _$el$parentNode.clientWidth;
        var _scrollPanelElm = this.scrollPanelElm,
            scrollHeight = _scrollPanelElm.scrollHeight,
            scrollWidth = _scrollPanelElm.scrollWidth;

        var width = void 0;
        var height = void 0;

        if (maxHeight || maxWidth) {
          height = scrollHeight <= maxHeight ? undefined : maxHeight;
          width = scrollWidth <= maxWidth ? undefined : maxWidth;
        } else {
          height = parentClientHeight;
          width = parentClientWidth;
        }

        this.vuescroll.state.height = height ? height + 'px' : undefined;
        this.vuescroll.state.width = width ? width + 'px' : undefined;
      },
      usePercentSize: function usePercentSize() {
        this.vuescroll.state.currentSizeStrategy = 'percent';

        this.vuescroll.state.height = '100%';
        this.vuescroll.state.width = '100%';
      },

      // Set its size to be equal to its parentNode
      setVsSize: function setVsSize() {
        var sizeStrategy = this.mergedOptions.vuescroll.sizeStrategy;
        var _mergedOptions$scroll2 = this.mergedOptions.scrollPanel,
            maxHeight = _mergedOptions$scroll2.maxHeight,
            maxWidth = _mergedOptions$scroll2.maxWidth;
        var _scrollPanelElm2 = this.scrollPanelElm,
            clientHeight = _scrollPanelElm2.clientHeight,
            clientWidth = _scrollPanelElm2.clientWidth;

        if (sizeStrategy == 'number' || maxHeight && clientHeight > maxHeight || maxWidth && clientWidth > maxWidth) {
          this.useNumbericSize();
        } else if (sizeStrategy == 'percent' && clientHeight != maxHeight && clientWidth != maxWidth) {
          this.usePercentSize();
        }
      },


      /** ------------------------ Init --------------------------- */
      initWatchOpsChange: function initWatchOpsChange() {
        var _this5 = this;

        var watchOpts = {
          deep: true,
          sync: true
        };
        this.$watch('mergedOptions', function () {
          setTimeout(function () {
            if (_this5.isSmallChangeThisTick) {
              _this5.isSmallChangeThisTick = false;
              _this5.updateBarStateAndEmitEvent('options-change');
              return;
            }
            _this5.refreshInternalStatus();
          }, 0);
        }, watchOpts);

        /**
         * We also watch `small` changes, and when small changes happen, we send
         * a signal to vuescroll, to tell it:
         * 1. we don't need to registry resize
         * 2. we don't need to registry scroller.
         */
        smallChangeArray.forEach(function (opts) {
          _this5.$watch(opts, function () {
            _this5.isSmallChangeThisTick = true;
          }, watchOpts);
        });
      },

      // scrollTo hash-anchor while mounted component have mounted.
      scrollToAnchor: function scrollToAnchor() /* istanbul ignore next */{
        var validateHashSelector = function validateHashSelector(hash) {
          return (/^#[a-zA-Z_]\d*$/.test(hash)
          );
        };

        var hash = window.location.hash;
        if (!hash || (hash = hash.slice(hash.lastIndexOf('#'))) && !validateHashSelector(hash)) {
          return;
        }

        var elm = document.querySelector(hash);
        if (!isChildInParent(elm, this.$el) || this.mergedOptions.scrollPanel.initialScrollY || this.mergedOptions.scrollPanel.initialScrollX) {
          return;
        }

        this.scrollIntoView(elm);
      }

      /** ------------------------ Registry Resize --------------------------- */

    }
  };
};

// begin importing
var scrollPanel = {
  name: 'scrollPanel',
  props: { ops: { type: Object, required: true } },
  methods: {
    // trigger scrollPanel options initialScrollX,
    // initialScrollY
    updateInitialScroll: function updateInitialScroll() {
      var x = 0;
      var y = 0;

      var parent = getRealParent(this);

      if (this.ops.initialScrollX) {
        x = this.ops.initialScrollX;
      }
      if (this.ops.initialScrollY) {
        y = this.ops.initialScrollY;
      }
      if (x || y) {
        parent.scrollTo({ x: x, y: y });
      }
    }
  },
  mounted: function mounted() {
    var _this = this;

    setTimeout(function () {
      if (!_this._isDestroyed) {
        _this.updateInitialScroll();
      }
    }, 0);
  },
  render: function render(h) {
    // eslint-disable-line
    var data = {
      class: ['__panel'],
      style: {
        position: 'relative',
        boxSizing: 'border-box'
      }
    };

    var parent = getRealParent(this);

    var _customPanel = parent.$slots['scroll-panel'];
    if (_customPanel) {
      return insertChildrenIntoSlot(h, _customPanel, this.$slots.default, data);
    }

    return h(
      'div',
      data,
      [[this.$slots.default]]
    );
  }
};

/**
 * Init following things
 * 1. Component
 * 2. Render
 * 3. Config
 */
function _install(core, render) {
  var _components;

  var extraConfigs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
  var extraValidators = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];

  var components = (_components = {}, defineProperty(_components, scrollPanel.name, scrollPanel), defineProperty(_components, bar.name, bar), _components);

  var opts = {};
  opts.components = components;
  opts.render = render;
  opts.mixins = core;

  var comp = createComponent(opts);

  // Init Config
  extendOpts(extraConfigs, extraValidators);

  return comp;
}

/**
 * Get the children of parent those are in viewport
 */
function getCurrentViewportDom(parent, container) {
  var children = parent.children;
  var domFragment = [];

  var isCurrentview = function isCurrentview(dom) {
    var _dom$getBoundingClien = dom.getBoundingClientRect(),
        left = _dom$getBoundingClien.left,
        top = _dom$getBoundingClien.top,
        width = _dom$getBoundingClien.width,
        height = _dom$getBoundingClien.height;

    var _container$getBoundin = container.getBoundingClientRect(),
        parentLeft = _container$getBoundin.left,
        parentTop = _container$getBoundin.top,
        parentHeight = _container$getBoundin.height,
        parentWidth = _container$getBoundin.width;

    if (left - parentLeft + width > 0 && left - parentLeft < parentWidth && top - parentTop + height > 0 && top - parentTop < parentHeight) {
      return true;
    }
    return false;
  };

  for (var i = 0; i < children.length; i++) {
    var dom = children.item(i);
    if (isCurrentview(dom) && !dom.isResizeElm) {
      domFragment.push(dom);
    }
  }
  return domFragment;
}

/**
 *  Compatible to scroller's animation function
 */
function createEasingFunction(easing, easingPattern) {
  return function (time) {
    return easingPattern(easing, time);
  };
}

/**
 * Calculate the easing pattern
 * @link https://github.com/cferdinandi/smooth-scroll/blob/master/src/js/smooth-scroll.js
 * modified by wangyi7099
 * @param {String} type Easing pattern
 * @param {Number} time Time animation should take to complete
 * @returns {Number}
 */
function easingPattern(easing, time) {
  var pattern = null;
  /* istanbul ignore next */
  {
    // Default Easing Patterns
    if (easing === 'easeInQuad') pattern = time * time; // accelerating from zero velocity
    if (easing === 'easeOutQuad') pattern = time * (2 - time); // decelerating to zero velocity
    if (easing === 'easeInOutQuad') pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration
    if (easing === 'easeInCubic') pattern = time * time * time; // accelerating from zero velocity
    if (easing === 'easeOutCubic') pattern = --time * time * time + 1; // decelerating to zero velocity
    if (easing === 'easeInOutCubic') pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration
    if (easing === 'easeInQuart') pattern = time * time * time * time; // accelerating from zero velocity
    if (easing === 'easeOutQuart') pattern = 1 - --time * time * time * time; // decelerating to zero velocity
    if (easing === 'easeInOutQuart') pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * --time * time * time * time; // acceleration until halfway, then deceleration
    if (easing === 'easeInQuint') pattern = time * time * time * time * time; // accelerating from zero velocity
    if (easing === 'easeOutQuint') pattern = 1 + --time * time * time * time * time; // decelerating to zero velocity
    if (easing === 'easeInOutQuint') pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * --time * time * time * time * time; // acceleration until halfway, then deceleration
  }
  return pattern || time; // no easing, no acceleration
}

function noop() {
  return true;
}

/* istanbul ignore next */
var now = Date.now || function () {
  return new Date().getTime();
};

var ScrollControl = function () {
  function ScrollControl() {
    classCallCheck(this, ScrollControl);

    this.init();

    this.isRunning = false;
  }

  createClass(ScrollControl, [{
    key: 'pause',
    value: function pause() {
      /* istanbul ignore if */
      if (!this.isRunning) return;

      this.isPaused = true;
    }
  }, {
    key: 'stop',
    value: function stop() {
      this.isStopped = true;
    }
  }, {
    key: 'continue',
    value: function _continue() {
      /* istanbul ignore if */
      if (!this.isPaused) return;

      this.isPaused = false;
      this.ts = now() - this.percent * this.spd;
      this.execScroll();
    }
  }, {
    key: 'startScroll',
    value: function startScroll(st, ed, spd) {
      var stepCb = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : noop;
      var completeCb = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : noop;
      var vertifyCb = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : noop;
      var easingMethod = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : noop;

      var df = ed - st;
      var dir = df > 0 ? -1 : 1;
      var nt = now();

      if (!this.isRunning) {
        this.init();
      }

      if (dir != this.dir || nt - this.ts > 200) {
        this.ts = nt;

        this.dir = dir;
        this.st = st;
        this.ed = ed;
        this.df = df;
      } /* istanbul ignore next */else {
          this.df += df;
        }

      this.spd = spd;

      this.completeCb = completeCb;
      this.vertifyCb = vertifyCb;
      this.stepCb = stepCb;
      this.easingMethod = easingMethod;

      if (!this.isRunning) this.execScroll();
    }
  }, {
    key: 'execScroll',
    value: function execScroll() {
      var _this = this;

      if (!this.df) return;

      var percent = this.percent || 0;
      this.percent = 0;
      this.isRunning = true;

      var loop = function loop() {
        /* istanbul ignore if */
        if (!_this.isRunning || !_this.vertifyCb(percent) || _this.isStopped) {
          _this.isRunning = false;
          return;
        }

        percent = (now() - _this.ts) / _this.spd;

        if (_this.isPaused) {
          _this.percent = percent;
          _this.isRunning = false;
          return;
        }

        if (percent < 1) {
          var value = _this.st + _this.df * _this.easingMethod(percent);
          _this.stepCb(value);
          _this.ref(loop);
        } else {
          // trigger complete
          _this.stepCb(_this.st + _this.df);
          _this.completeCb();

          _this.isRunning = false;
        }
      };

      this.ref(loop);
    }
  }, {
    key: 'init',
    value: function init() {
      this.st = 0;
      this.ed = 0;
      this.df = 0;
      this.spd = 0;
      this.ts = 0;
      this.dir = 0;
      this.ref = requestAnimationFrame(window);

      this.isPaused = false;
      this.isStopped = false;
    }
  }]);
  return ScrollControl;
}();

function scrollTo(elm, x, y) {
  var speed = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 300;
  var easing = arguments[4];
  var scrollingComplete = arguments[5];

  var scrollLeft = void 0,
      scrollTop = void 0,
      scrollHeight = void 0,
      scrollWidth = void 0,
      clientWidth = void 0,
      clientHeight = void 0;

  var _elm = elm,
      nodeType = _elm.nodeType;

  var scrollX = new ScrollControl();
  var scrollY = new ScrollControl();

  if (!nodeType) {
    warn('You must pass a dom for the first param, ' + 'for window scrolling, ' + 'you can pass document as the first param.');

    return;
  }

  if (nodeType == 9) {
    // document
    elm = elm.scrollingElement;
  }

  var _elm2 = elm;
  scrollLeft = _elm2.scrollLeft;
  scrollTop = _elm2.scrollTop;
  scrollHeight = _elm2.scrollHeight;
  scrollWidth = _elm2.scrollWidth;
  clientWidth = _elm2.clientWidth;
  clientHeight = _elm2.clientHeight;


  if (typeof x === 'undefined') {
    x = scrollLeft;
  } else {
    x = getNumericValue(x, scrollWidth - clientWidth);
  }
  if (typeof y === 'undefined') {
    y = scrollTop;
  } else {
    y = getNumericValue(y, scrollHeight - clientHeight);
  }

  var easingMethod = createEasingFunction(easing, easingPattern);
  scrollX.startScroll(scrollLeft, x, speed, function (dx) {
    elm.scrollLeft = dx;
  }, scrollingComplete, undefined, easingMethod);
  scrollY.startScroll(scrollTop, y, speed, function (dy) {
    elm.scrollTop = dy;
  }, scrollingComplete, undefined, easingMethod);
}

var nativeApi = {
  mounted: function mounted() {
    // registry scroll
    this.scrollX = new ScrollControl();
    this.scrollY = new ScrollControl();
  },

  methods: {
    nativeStop: function nativeStop() {
      this.scrollX.stop();
      this.scrollY.stop();
    },
    nativePause: function nativePause() {
      this.scrollX.pause();
      this.scrollY.pause();
    },
    nativeContinue: function nativeContinue() {
      this.scrollX.continue();
      this.scrollY.continue();
    },
    nativeScrollTo: function nativeScrollTo(x, y, speed, easing) {
      if (speed === false) {
        
      } else if (typeof speed === 'undefined') {
        speed = this.mergedOptions.scrollPanel.speed;
      }
      var elm = this.scrollPanelElm;
      var scrollTop = elm.scrollTop,
          scrollLeft = elm.scrollLeft,
          scrollWidth = elm.scrollWidth,
          clientWidth = elm.clientWidth,
          scrollHeight = elm.scrollHeight,
          clientHeight = elm.clientHeight;

      if (typeof x === 'undefined') {
        x = scrollLeft;
      } else {
        x = getNumericValue(x, scrollWidth - clientWidth);
      }
      if (typeof y === 'undefined') {
        y = scrollTop;
      } else {
        y = getNumericValue(y, scrollHeight - clientHeight);
      }

      if (speed) {
        easing = easing || this.mergedOptions.scrollPanel.easing;
        var easingMethod = createEasingFunction(easing, easingPattern);

        if (x != scrollLeft) {
          this.scrollX.startScroll(scrollLeft, x, speed, function (x) {
            elm.scrollLeft = x;
          }, this.scrollingComplete.bind(this), undefined, easingMethod);
        }

        if (y != scrollTop) {
          this.scrollY.startScroll(scrollTop, y, speed, function (y) {
            elm.scrollTop = y;
          }, this.scrollingComplete.bind(this), undefined, easingMethod);
        }
      } else {
        elm.scrollTop = y;
        elm.scrollLeft = x;
      }
    },
    getCurrentviewDomNative: function getCurrentviewDomNative() {
      var parent = this.scrollContentElm;
      var domFragment = getCurrentViewportDom(parent, this.$el);
      return domFragment;
    }
  }
};

function getPanelData(context) {
  // scrollPanel data start
  var data = {
    ref: 'scrollPanel',
    style: {
      height: '100%',
      overflowY: 'scroll',
      overflowX: 'scroll'
    },
    class: [],
    nativeOn: {
      '&scroll': context.handleScroll
    },
    props: {
      ops: context.mergedOptions.scrollPanel
    }
  };

  context.scrollYEnable = true;
  context.scrollXEnable = true;

  data.nativeOn.DOMMouseScroll = data.nativeOn.mousewheel = context.onMouseWheel;

  var _context$mergedOption = context.mergedOptions.scrollPanel,
      scrollingY = _context$mergedOption.scrollingY,
      scrollingX = _context$mergedOption.scrollingX;


  if (!context.bar.hBar.state.size || !scrollingX) {
    context.scrollXEnable = false;
    data.style.overflowX = 'hidden';
  }

  if (!context.bar.vBar.state.size || !scrollingY) {
    context.scrollYEnable = false;
    data.style.overflowY = 'hidden';
  }

  var gutter = getGutter();
  /* istanbul ignore if */
  if (!gutter) {
    createHideBarStyle();
    data.class.push('__hidebar');
    if (isIos()) {
      data.style['-webkit-overflow-scrolling'] = 'touch';
    }
  } else {
    // hide system bar by use a negative value px
    // gutter should be 0 when manually disable scrollingX #14
    if (context.bar.vBar.state.size && context.mergedOptions.scrollPanel.scrollingY) {
      if (context.mergedOptions.scrollPanel.verticalNativeBarPos == 'right') {
        data.style.marginRight = '-' + gutter + 'px';
      } /* istanbul ignore next */else {
          data.style.marginLeft = '-' + gutter + 'px';
        }
    }
    if (context.bar.hBar.state.size && context.mergedOptions.scrollPanel.scrollingX) {
      data.style.height = 'calc(100% + ' + gutter + 'px)';
    }
  }

  // clear legency styles of slide mode...
  data.style.transformOrigin = '';
  data.style.transform = '';

  return data;
}

/**
 * create a scrollPanel
 *
 * @param {any} size
 * @param {any} context
 * @returns
 */
function createPanel(h, context) {
  var data = {};

  data = getPanelData(context);

  return h(
    'scrollPanel',
    data,
    [getPanelChildren(h, context)]
  );
}

function getPanelChildren(h, context) {
  var viewStyle = {
    position: 'relative',
    'box-sizing': 'border-box',
    'min-width': '100%',
    'min-height': '100%'
  };
  var data = {
    style: viewStyle,
    ref: 'scrollContent',
    class: '__view'
  };
  var _customContent = context.$slots['scroll-content'];

  if (context.mergedOptions.scrollPanel.scrollingX) {
    viewStyle.width = getComplitableStyle('width', 'fit-content');
  } else {
    data.style['width'] = '100%';
  }

  if (context.mergedOptions.scrollPanel.padding) {
    data.style.paddingRight = context.mergedOptions.rail.size;
  }

  if (_customContent) {
    return insertChildrenIntoSlot(h, _customContent, context.$slots.default, data);
  }

  return h(
    'div',
    data,
    [context.$slots.default]
  );
}

function getPanelData$1(context) {
  // scrollPanel data start
  var data = {
    ref: 'scrollPanel',
    style: {
      'user-select': 'none',
      '-webkit-user-select': 'none',
      'min-width': '100%',
      'min-height': '100%'
    },
    class: [],
    props: {
      ops: context.mergedOptions.scrollPanel
    }
  };

  data.class.push('__slide');
  /* istanbul ignore if */
  if (isIos()) {
    data.style = defineProperty({}, '-webkit-overflow-scrolling', 'touch');
  }

  if (context.mergedOptions.vuescroll.renderMethod == 'transform') {
    data.style['transform-origin'] = 'left top 0px';
  }

  var _context$mergedOption = context.mergedOptions.scrollPanel,
      scrollingX = _context$mergedOption.scrollingX,
      scrollingY = _context$mergedOption.scrollingY,
      padding = _context$mergedOption.padding;


  if (scrollingX && !context.refreshLoad) {
    var width = getComplitableStyle('width', 'fit-content');
    if (width) {
      data.style['width'] = width;
    } /* istanbul ignore next */else {
        data['display'] = 'inline-block';
      }
  }

  /* istanbul ignore if */
  if (!scrollingX) {
    data.class.push('x-hidden');
  }
  /* istanbul ignore if */
  if (!scrollingY) {
    data.class.push('y-hidden');
  }

  if (padding) {
    data.style.paddingRight = context.mergedOptions.rail.size;
  }

  return data;
}

function getPanelChildren$1(h, context) {
  var renderChildren = getVnodeInfo(context.$slots['scroll-panel']).ch || context.$slots.default;
  var finalChildren = [];

  /* istanbul ignore if */
  if (!renderChildren) {
    context.$slots.default = renderChildren = [];
  }

  // handle refresh
  if (context.mergedOptions.vuescroll.pullRefresh.enable) {
    finalChildren.push(h(
      'div',
      {
        'class': '__refresh',
        style: { visibility: context.refrehDomVisiable ? '' : 'hidden' },
        ref: __REFRESH_DOM_NAME,
        key: __REFRESH_DOM_NAME
      },
      [createTipDom(h, context, 'refresh', context.pullRefreshTip)]
    ));
  }

  finalChildren.push(renderChildren);

  // handle load
  if (context.mergedOptions.vuescroll.pushLoad.enable) {
    finalChildren.push(h(
      'div',
      {
        ref: __LOAD_DOM_NAME,
        key: __LOAD_DOM_NAME,
        'class': '__load',
        style: { visibility: context.loadDomVisiable ? '' : 'hidden' }
      },
      [createTipDom(h, context, 'load', context.pushLoadTip)]
    ));
  }

  return finalChildren;
}

// Create load or refresh tip dom of each stages
function createTipDom(h, context, type, tip) {
  var stage = context.vuescroll.state[type + 'Stage'];
  var dom = null;
  // Return user specified animation dom
  /* istanbul ignore if */
  if (dom = context.$slots[type + '-' + stage]) {
    return dom;
  }

  switch (stage) {
    // The dom will show at deactive stage
    case 'deactive':
    case 'active':
      {
        var className = 'active';
        if (stage == 'deactive') {
          className += ' deactive';
        }

        dom = h(
          'svg',
          {
            'class': className,
            attrs: { version: '1.1',
              xmlns: 'http://www.w3.org/2000/svg',
              xmlnsXlink: 'http://www.w3.org/1999/xlink',
              x: '0px',
              y: '0px',
              viewBox: '0 0 1000 1000',
              'enable-background': 'new 0 0 1000 1000',
              xmlSpace: 'preserve'
            }
          },
          [h('metadata', [' Svg Vector Icons : http://www.sfont.cn ']), h('g', [h(
            'g',
            {
              attrs: { transform: 'matrix(1 0 0 -1 0 1008)' }
            },
            [h('path', {
              attrs: { d: 'M10,543l490,455l490-455L885,438L570,735.5V18H430v717.5L115,438L10,543z' }
            })]
          )])]
        );
      }
      break;
    case 'start':
      dom = h(
        'svg',
        {
          attrs: { viewBox: '0 0 50 50' },
          'class': 'start' },
        [h('circle', {
          attrs: { stroke: 'true', cx: '25', cy: '25', r: '20' },
          'class': 'bg-path' }), h('circle', {
          attrs: { cx: '25', cy: '25', r: '20' },
          'class': 'active-path' })]
      );
      break;
    case 'beforeDeactive':
      dom = h(
        'svg',
        {
          attrs: {
            viewBox: '0 0 1024 1024',
            version: '1.1',
            xmlns: 'http://www.w3.org/2000/svg',
            'p-id': '3562'
          }
        },
        [h('path', {
          attrs: {
            d: 'M512 0C229.706831 0 0 229.667446 0 512s229.667446 512 512 512c282.293169 0 512-229.667446 512-512S794.332554 0 512 0z m282.994215 353.406031L433.2544 715.145846a31.484062 31.484062 0 0 1-22.275938 9.231754h-0.4096a31.586462 31.586462 0 0 1-22.449231-9.814646L228.430769 546.327631a31.507692 31.507692 0 0 1 45.701908-43.386093l137.4208 144.785724L750.442338 308.854154a31.507692 31.507692 0 1 1 44.551877 44.551877z',
            fill: '',
            'p-id': '3563'
          }
        })]
      );
      break;
  }
  return [dom, tip];
}

/**
 * create a scrollPanel
 *
 * @param {any} size
 * @param {any} context
 * @returns
 */
function createPanel$1(h, context) {
  var data = getPanelData$1(context);

  return h(
    'scrollPanel',
    data,
    [getPanelChildren$1(h, context)]
  );
}

// begin importing
/**
 * create a scrollPanel
 *
 * @param {any} size
 * @param {any} vm
 * @returns
 */
function createPanel$2(h, vm) {
  if (vm.mode == 'native') {
    return createPanel(h, vm);
  } else if (vm.mode == 'slide') {
    return createPanel$1(h, vm);
  }
}

// detect content size change
function installResizeDetection(element, callback) {
  return injectObject(element, callback);
}

function injectObject(element, callback) {
  if (element.hasResized) {
    return;
  }

  var OBJECT_STYLE = 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; padding: 0; margin: 0; opacity: 0; z-index: -1000; pointer-events: none;';
  // define a wrap due to ie's zIndex bug
  var objWrap = document.createElement('div');
  objWrap.style.cssText = OBJECT_STYLE;
  var object = document.createElement('object');
  object.style.cssText = OBJECT_STYLE;
  object.type = 'text/html';
  object.tabIndex = -1;

  object.onload = function () {
    eventCenter(object.contentDocument.defaultView, 'resize', callback);
  };
  // https://github.com/wnr/element-resize-detector/blob/aafe9f7ea11d1eebdab722c7c5b86634e734b9b8/src/detection-strategy/object.js#L159
  if (!isIE()) {
    object.data = 'about:blank';
  }
  objWrap.isResizeElm = true;
  objWrap.appendChild(object);
  element.appendChild(objWrap);
  if (isIE()) {
    object.data = 'about:blank';
  }
  return function destroy() {
    if (object.contentDocument) {
      eventCenter(object.contentDocument.defaultView, 'resize', callback, 'off');
    }
    element.removeChild(objWrap);
    element.hasResized = false;
  };
}

var slideApi = {
  methods: {
    slideScrollTo: function slideScrollTo(x, y, speed, easing) {
      var _getPosition = this.getPosition(),
          scrollLeft = _getPosition.scrollLeft,
          scrollTop = _getPosition.scrollTop;

      x = getNumericValue(x || scrollLeft, this.scroller.__maxScrollLeft);
      y = getNumericValue(y || scrollTop, this.scroller.__maxScrollTop);

      this.scroller.scrollTo(x, y, speed > 0, undefined, false, speed, easing);
    },
    zoomBy: function zoomBy(factor, animate, originLeft, originTop, callback) {
      if (!this.scroller) {
        warn('zoomBy and zoomTo are only for slide mode!');
        return;
      }
      this.scroller.zoomBy(factor, animate, originLeft, originTop, callback);
    },
    zoomTo: function zoomTo(level) {
      var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
      var originLeft = arguments[2];
      var originTop = arguments[3];
      var callback = arguments[4];

      if (!this.scroller) {
        warn('zoomBy and zoomTo are only for slide mode!');
        return;
      }
      this.scroller.zoomTo(level, animate, originLeft, originTop, callback);
    },
    getCurrentPage: function getCurrentPage() {
      if (!this.scroller || !this.mergedOptions.vuescroll.paging) {
        warn('getCurrentPage and goToPage are only for slide mode and paging is enble!');
        return;
      }
      return this.scroller.getCurrentPage();
    },
    goToPage: function goToPage(dest) {
      var animate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;

      if (!this.scroller || !this.mergedOptions.vuescroll.paging) {
        warn('getCurrentPage and goToPage are only for slide mode and paging is enble!');
        return;
      }
      this.scroller.goToPage(dest, animate);
    },
    triggerRefreshOrLoad: function triggerRefreshOrLoad(type) {
      if (!this.scroller) {
        warn('You can only use triggerRefreshOrLoad in slide mode!');
        return;
      }

      var isRefresh = this.mergedOptions.vuescroll.pullRefresh.enable;
      var isLoad = this.mergedOptions.vuescroll.pushLoad.enable;

      if (type == 'refresh' && !isRefresh) {
        warn('refresh must be enabled!');
        return;
      } else if (type == 'load' && !isLoad) {
        warn('load must be enabled and content\'s height > container\'s height!');
        return;
      } else if (type !== 'refresh' && type !== 'load') {
        warn('param must be one of load and refresh!');
        return;
      }

      /* istanbul ignore if */
      if (this.vuescroll.state[type + 'Stage'] == 'start') {
        return;
      }

      this.scroller.triggerRefreshOrLoad(type);
      return true;
    },
    getCurrentviewDomSlide: function getCurrentviewDomSlide() {
      var parent = this.scrollPanelElm;
      var domFragment = getCurrentViewportDom(parent, this.$el);
      return domFragment;
    }
  }
};

var api$1 = {
  // mix slide and nitive modes apis.
  mixins: [slideApi, nativeApi],
  methods: {
    // private api
    internalScrollTo: function internalScrollTo(destX, destY, speed, easing) {
      if (this.mode == 'native') {
        this.nativeScrollTo(destX, destY, speed, easing);
      }
      // for non-native we use scroller's scorllTo
      else if (this.mode == 'slide') {
          this.slideScrollTo(destX, destY, speed, easing);
        }
    },
    stop: function stop() {
      this.nativeStop();
    },
    pause: function pause() {
      this.nativePause();
    },
    continue: function _continue() {
      this.nativeContinue();
    },
    getCurrentviewDom: function getCurrentviewDom() {
      return this.mode == 'slide' ? this.getCurrentviewDomSlide() : this.getCurrentviewDomNative();
    }
  }
};

/*
 * Scroller
 * http://github.com/zynga/scroller
 *
 * Copyright 2011, Zynga Inc.
 * Licensed under the MIT License.
 * https://raw.github.com/zynga/scroller/master/MIT-LICENSE.txt
 *
 * Based on the work of: Unify Project (unify-project.org)
 * http://unify-project.org
 * Copyright 2011, Deutsche Telekom AG
 * License: MIT + Apache (V2)
 */

/**
 * Generic animation class with support for dropped frames both optional easing and duration.
 *
 * Optional duration is useful when the lifetime is defined by another condition than time
 * e.g. speed of an animating object, etc.
 *
 * Dropped frame logic allows to keep using the same updater logic independent from the actual
 * rendering. This eases a lot of cases where it might be pretty complex to break down a state
 * based on the pure time difference.
 */
var time = Date.now || function () {
  return +new Date();
};
var desiredFrames = 60;
var millisecondsPerSecond = 1000;
var running = {};
var counter = 1;

var core = { effect: {} };
var global$1 = null;

if (typeof window !== 'undefined') {
  global$1 = window;
} else {
  global$1 = {};
}

core.effect.Animate = {
  /**
   * A requestAnimationFrame wrapper / polyfill.
   *
   * @param callback {Function} The callback to be invoked before the next repaint.
   * @param root {HTMLElement} The root element for the repaint
   */
  requestAnimationFrame: requestAnimationFrame(global$1),
  /**
   * Stops the given animation.
   *
   * @param id {Integer} Unique animation ID
   * @return {Boolean} Whether the animation was stopped (aka, was running before)
   */
  stop: function stop(id) {
    var cleared = running[id] != null;
    if (cleared) {
      running[id] = null;
    }

    return cleared;
  },

  /**
   * Whether the given animation is still running.
   *
   * @param id {Integer} Unique animation ID
   * @return {Boolean} Whether the animation is still running
   */
  isRunning: function isRunning(id) {
    return running[id] != null;
  },

  /**
   * Start the animation.
   *
   * @param stepCallback {Function} Pointer to function which is executed on every step.
   *   Signature of the method should be `function(percent, now, virtual) { return continueWithAnimation; }`
   * @param verifyCallback {Function} Executed before every animation step.
   *   Signature of the method should be `function() { return continueWithAnimation; }`
   * @param completedCallback {Function}
   *   Signature of the method should be `function(droppedFrames, finishedAnimation) {}`
   * @param duration {Integer} Milliseconds to run the animation
   * @param easingMethod {Function} Pointer to easing function
   *   Signature of the method should be `function(percent) { return modifiedValue; }`
   * @param root {Element ? document.body} Render root, when available. Used for internal
   *   usage of requestAnimationFrame.
   * @return {Integer} Identifier of animation. Can be used to stop it any time.
   */
  start: function start(stepCallback, verifyCallback, completedCallback, duration, easingMethod, root) {
    var start = time();
    var lastFrame = start;
    var percent = 0;
    var dropCounter = 0;
    var id = counter++;

    if (!root) {
      root = document.body;
    }

    // Compacting running db automatically every few new animations
    if (id % 20 === 0) {
      var newRunning = {};
      for (var usedId in running) {
        newRunning[usedId] = true;
      }
      running = newRunning;
    }

    // This is the internal step method which is called every few milliseconds
    var step = function step(virtual) {
      // Normalize virtual value
      var render = virtual !== true;

      // Get current time
      var now = time();

      // Verification is executed before next animation step
      if (!running[id] || verifyCallback && !verifyCallback(id)) {
        running[id] = null;
        completedCallback && completedCallback(desiredFrames - dropCounter / ((now - start) / millisecondsPerSecond), id, false);
        return;
      }

      // For the current rendering to apply let's update omitted steps in memory.
      // This is important to bring internal state variables up-to-date with progress in time.
      if (render) {
        var droppedFrames = Math.round((now - lastFrame) / (millisecondsPerSecond / desiredFrames)) - 1;
        for (var j = 0; j < Math.min(droppedFrames, 4); j++) {
          step(true);
          dropCounter++;
        }
      }

      if (!running[id]) {
        return;
      }

      // Compute percent value
      if (duration) {
        percent = (now - start) / duration;
        if (percent > 1) {
          percent = 1;
        }
      }

      // Execute step callback, then...
      var value = easingMethod ? easingMethod(percent) : percent;
      if ((stepCallback(value, now, render) === false || percent === 1) && render) {
        running[id] = null;
        completedCallback && completedCallback(desiredFrames - dropCounter / ((now - start) / millisecondsPerSecond), id, percent === 1 || duration == null);
      } else if (render) {
        lastFrame = now;
        core.effect.Animate.requestAnimationFrame(step, root);
      }
    };

    // Mark as running
    running[id] = true;

    // Init first step
    core.effect.Animate.requestAnimationFrame(step, root);

    // Return unique animation ID
    return id;
  }
};

/*
 * Scroller
 * http://github.com/zynga/scroller
 *
 * modified by wangyi7099
 *
 * Copyright 2011, Zynga Inc.
 * Licensed under the MIT License.
 * https://raw.github.com/zynga/scroller/master/MIT-LICENSE.txt
 *
 * Based on the work of: Unify Project (unify-project.org)
 * http://unify-project.org
 * Copyright 2011, Deutsche Telekom AG
 * License: MIT + Apache (V2)
 */
var animatingMethod = null;

var noAnimatingMethod = null;

function Scroller(callback, options) {
  this.__callback = callback;

  this.options = {
    /** Enable scrolling on x-axis */
    scrollingX: true,

    /** Enable scrolling on y-axis */
    scrollingY: true,

    /** Enable animations for deceleration, snap back, zooming and scrolling */
    animating: true,

    /** duration for animations triggered by scrollTo/zoomTo */
    animationDuration: 250,

    /** Enable bouncing (content can be slowly moved outside and jumps back after releasing) */
    bouncing: {
      top: 100,
      bottom: 100,
      left: 100,
      right: 100
    },

    /** Enable locking to the main axis if user moves only slightly on one of them at start */
    locking: true,

    /** Enable pagination mode (switching between full page content panes) */
    paging: false,

    /** Enable snapping of content to a configured pixel grid */
    snapping: false,

    /** Enable zooming of content via API, fingers and mouse wheel */
    zooming: false,

    /** Minimum zoom level */
    minZoom: 0.5,

    /** Maximum zoom level */
    maxZoom: 3,

    /** Multiply or decrease scrolling speed **/
    speedMultiplier: 1,

    /** Callback that is fired on the later of touch end or deceleration end,
    provided that another scrolling action has not begun. Used to know
    when to fade out a scrollbar. */
    scrollingComplete: NOOP,

    animatingEasing: 'easeOutCubic',

    noAnimatingEasing: 'easeInOutCubic',

    /** This configures the amount of change applied to deceleration when reaching boundaries  **/
    penetrationDeceleration: 0.03,

    /** This configures the amount of change applied to acceleration when reaching boundaries  **/
    penetrationAcceleration: 0.08
  };

  for (var key in options) {
    this.options[key] = options[key];
  }

  animatingMethod = createEasingFunction(this.options.animatingEasing, easingPattern);
  noAnimatingMethod = createEasingFunction(this.options.noAnimatingEasing, easingPattern);
}

var members = {
  /*
  ---------------------------------------------------------------------------
  INTERNAL FIELDS :: STATUS
  ---------------------------------------------------------------------------
  */

  /** {Boolean} Whether only a single finger is used in touch handling */
  __isSingleTouch: false,

  /** {Boolean} Whether a touch event sequence is in progress */
  __isTracking: false,

  /** {Boolean} Whether a deceleration animation went to completion. */
  __didDecelerationComplete: false,

  /**
   * {Boolean} Whether a gesture zoom/rotate event is in progress. Activates when
   * a gesturestart event happens. This has higher priority than dragging.
   */
  __isGesturing: false,

  /**
   * {Boolean} Whether the user has moved by such a distance that we have enabled
   * dragging mode. Hint: It's only enabled after some pixels of movement to
   * not interrupt with clicks etc.
   */
  __isDragging: false,

  /**
   * {Boolean} Not touching and dragging anymore, and smoothly animating the
   * touch sequence using deceleration.
   */
  __isDecelerating: false,

  /**
   * {Boolean} Smoothly animating the currently configured change
   */
  __isAnimating: false,

  /*
  ---------------------------------------------------------------------------
  INTERNAL FIELDS :: DIMENSIONS
  ---------------------------------------------------------------------------
  */

  /** {Integer} Available outer left position (from document perspective) */
  __clientLeft: 0,

  /** {Integer} Available outer top position (from document perspective) */
  __clientTop: 0,

  /** {Integer} Available outer width */
  __clientWidth: 0,

  /** {Integer} Available outer height */
  __clientHeight: 0,

  /** {Integer} Outer width of content */
  __contentWidth: 0,

  /** {Integer} Outer height of content */
  __contentHeight: 0,

  /** {Integer} Snapping width for content */
  __snapWidth: 100,

  /** {Integer} Snapping height for content */
  __snapHeight: 100,

  /** {Integer} Height to assign to refresh area */
  __refreshHeight: null,
  /** {Integer} Height to assign to refresh area */
  __loadHeight: null,
  /** {Boolean} Whether the refresh process is enabled when the event is released now */
  __refreshActive: false,

  /** {Function} Callback to execute on activation. This is for signalling the user about a refresh is about to happen when he release */
  __refreshActivate: null,

  __refreshBeforeDeactivate: null,

  /** {Function} Callback to execute on deactivation. This is for signalling the user about the refresh being cancelled */
  __refreshDeactivate: null,

  /** {Function} Callback to execute to start the actual refresh. Call {@link #refreshFinish} when done */
  __refreshStart: null,

  __loadActive: null,

  __loadActivate: null,

  __loadBeforeDeactivate: null,

  __loadDeactivate: null,

  __loadStart: null,
  /** {Number} Zoom level */
  __zoomLevel: 1,

  /** {Number} Scroll position on x-axis */
  __scrollLeft: 0,

  /** {Number} Scroll position on y-axis */
  __scrollTop: 0,

  /** {Integer} Maximum allowed scroll position on x-axis */
  __maxScrollLeft: 0,

  /** {Integer} Maximum allowed scroll position on y-axis */
  __maxScrollTop: 0,

  /* {Number} Scheduled left position (final position when animating) */
  __scheduledLeft: 0,

  /* {Number} Scheduled top position (final position when animating) */
  __scheduledTop: 0,

  /* {Number} Scheduled zoom level (final scale when animating) */
  __scheduledZoom: 0,

  /**
   * current page
   */
  __currentPageX: null,

  __currentPageY: null,

  /**
   * total page
   */
  __totalXPage: null,

  __totalYPage: null,
  /*
  ---------------------------------------------------------------------------
  INTERNAL FIELDS :: LAST POSITIONS
  ---------------------------------------------------------------------------
  */
  /** whether the scroller is disabled or not */
  __disable: false,
  /** {Number} Left position of finger at start */
  __lastTouchLeft: null,

  /** {Number} Top position of finger at start */
  __lastTouchTop: null,

  /** {Date} Timestamp of last move of finger. Used to limit tracking range for deceleration speed. */
  __lastTouchMove: null,

  /** {Array} List of positions, uses three indexes for each state: left, top, timestamp */
  __positions: null,

  /*
  ---------------------------------------------------------------------------
  INTERNAL FIELDS :: DECELERATION SUPPORT
  ---------------------------------------------------------------------------
  */

  /** {Integer} Minimum left scroll position during deceleration */
  __minDecelerationScrollLeft: null,

  /** {Integer} Minimum top scroll position during deceleration */
  __minDecelerationScrollTop: null,

  /** {Integer} Maximum left scroll position during deceleration */
  __maxDecelerationScrollLeft: null,

  /** {Integer} Maximum top scroll position during deceleration */
  __maxDecelerationScrollTop: null,

  /** {Number} Current factor to modify horizontal scroll position with on every step */
  __decelerationVelocityX: null,

  /** {Number} Current factor to modify vertical scroll position with on every step */
  __decelerationVelocityY: null,

  /*
  ---------------------------------------------------------------------------
  PUBLIC API
  ---------------------------------------------------------------------------
  */

  /**
   * Configures the dimensions of the client (outer) and content (inner) elements.
   * Requires the available space for the outer element and the outer size of the inner element.
   * All values which are falsy (null or zero etc.) are ignored and the old value is kept.
   *
   * @param clientWidth {Integer ? null} Inner width of outer element
   * @param clientHeight {Integer ? null} Inner height of outer element
   * @param contentWidth {Integer ? null} Outer width of inner element
   * @param contentHeight {Integer ? null} Outer height of inner element
   */
  setDimensions: function setDimensions(clientWidth, clientHeight, contentWidth, contentHeight, animate) {
    var noScroll = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : false;

    var self = this;

    // Only update values which are defined
    if (clientWidth === +clientWidth) {
      self.__clientWidth = clientWidth;
    }

    if (clientHeight === +clientHeight) {
      self.__clientHeight = clientHeight;
    }

    if (contentWidth === +contentWidth) {
      self.__contentWidth = contentWidth;
    }

    if (contentHeight === +contentHeight) {
      self.__contentHeight = contentHeight;
    }

    // Refresh maximums
    self.__computeScrollMax();

    if (!noScroll) {
      // Refresh scroll position
      self.scrollTo(self.__scrollLeft, self.__scrollTop, animate);
    }
  },

  /**
   * Sets the client coordinates in relation to the document.
   *
   * @param left {Integer ? 0} Left position of outer element
   * @param top {Integer ? 0} Top position of outer element
   */
  setPosition: function setPosition(left, top) {
    var self = this;

    self.__clientLeft = left || 0;
    self.__clientTop = top || 0;
  },

  /**
   * Configures the snapping (when snapping is active)
   *
   * @param width {Integer} Snapping width
   * @param height {Integer} Snapping height
   */
  setSnapSize: function setSnapSize(width, height) {
    var self = this;

    self.__snapWidth = width;
    self.__snapHeight = height;
  },

  /**
   * Activates pull-to-refresh. A special zone on the top of the list to start a list refresh whenever
   * the user event is released during visibility of this zone. This was introduced by some apps on iOS like
   * the official Twitter client.
   *
   * @param height {Integer} Height of pull-to-refresh zone on top of rendered list
   * @param activateCallback {Function} Callback to execute on activation. This is for signalling the user about a refresh is about to happen when he release.
   * @param deactivateCallback {Function} Callback to execute on deactivation. This is for signalling the user about the refresh being cancelled.
   * @param startCallback {Function} Callback to execute to start the real async refresh action. Call {@link #finishPullToRefresh} after finish of refresh.
   */
  activatePullToRefresh: function activatePullToRefresh(height, _ref) {
    var activateCallback = _ref.activateCallback,
        deactivateCallback = _ref.deactivateCallback,
        startCallback = _ref.startCallback,
        beforeDeactivateCallback = _ref.beforeDeactivateCallback,
        beforeDeactiveEnd = _ref.beforeDeactiveEnd;

    var self = this;

    self.__refreshHeight = height;
    self.__refreshActivate = activateCallback;
    self.__refreshBeforeDeactivate = beforeDeactivateCallback;
    self.__refreshBeforeDeactiveEnd = beforeDeactiveEnd;
    self.__refreshDeactivate = deactivateCallback;
    self.__refreshStart = startCallback;
  },
  activatePushToLoad: function activatePushToLoad(height, _ref2) {
    var activateCallback = _ref2.activateCallback,
        deactivateCallback = _ref2.deactivateCallback,
        startCallback = _ref2.startCallback,
        beforeDeactivateCallback = _ref2.beforeDeactivateCallback,
        beforeDeactiveEnd = _ref2.beforeDeactiveEnd;

    var self = this;

    self.__loadHeight = height;
    self.__loadActivate = activateCallback;
    self.__loadBeforeDeactivate = beforeDeactivateCallback;
    self.__loadBeforeDeactiveEnd = beforeDeactiveEnd;
    self.__loadDeactivate = deactivateCallback;
    self.__loadStart = startCallback;
  },

  /**
   * Starts pull-to-refresh manually.
   */
  triggerRefreshOrLoad: function triggerRefreshOrLoad() {
    var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'refresh';

    var wasDecelerating = this.__isDecelerating;
    if (wasDecelerating) {
      core.effect.Animate.stop(wasDecelerating);
      this.__isDecelerating = false;
    }
    // Use publish instead of scrollTo to allow scrolling to out of boundary position
    // We don't need to normalize scrollLeft, zoomLevel, etc. here because we only y-scrolling when pull-to-refresh is enabled
    if (type == 'refresh') {
      if (this.__refreshActive || this.__refreshBeforeDeactiveStarted) return;

      this.__publish(this.__scrollLeft, -this.__refreshHeight, this.__zoomLevel, true);
      if (this.__refreshStart) {
        this.__refreshStart();
        this.__refreshActive = true;
      }
    } else if (type == 'load') {
      if (this.__loadActive || this.__loadBeforeDeactiveStarted) return;

      this.__publish(this.__scrollLeft, this.__maxScrollTop + this.__loadHeight, this.__zoomLevel, true);
      if (this.__loadStart) {
        this.__loadStart();
        this.__loadActive = true;
      }
    }
  },

  /**
   * Signalizes that pull-to-refresh is finished.
   */
  finishRefreshOrLoad: function finishRefreshOrLoad() {
    var self = this;

    if (self.__refreshActive) {
      self.__refreshActive = false;
      var endRefreshActive = function endRefreshActive() {
        if (self.__refreshBeforeDeactiveEnd) {
          self.__refreshBeforeDeactiveEnd();
        }
        self.__refreshBeforeDeactiveStarted = true;
        self.scrollTo(self.__scrollLeft, self.__scrollTop, true);
      };

      if (self.__refreshBeforeDeactivate) {
        self.__refreshBeforeDeactivate(endRefreshActive);
      } else {
        endRefreshActive();
      }
    }

    if (self.__loadActive) {
      self.__loadActive = false;
      var endLoadActive = function endLoadActive() {
        if (self.__loadBeforeDeactiveEnd) {
          self.__loadBeforeDeactiveEnd();
        }
        self.__loadBeforeDeactiveStarted = true;
        self.scrollTo(self.__scrollLeft, self.__scrollTop, true);
      };

      if (self.__loadBeforeDeactivate) {
        self.__loadBeforeDeactivate(endLoadActive);
      } else {
        endLoadActive();
      }
    }
  },

  /**
   * Returns the scroll position and zooming values
   *
   * @return {Map} `left` and `top` scroll position and `zoom` level
   */
  getValues: function getValues() {
    var self = this;

    return {
      left: self.__scrollLeft,
      top: self.__scrollTop,
      zoom: self.__zoomLevel
    };
  },

  /**
   * Returns the maximum scroll values
   *
   * @return {Map} `left` and `top` maximum scroll values
   */
  getScrollMax: function getScrollMax() {
    var self = this;

    return {
      left: self.__maxScrollLeft,
      top: self.__maxScrollTop
    };
  },

  /**
   * Zooms to the given level. Supports optional animation. Zooms
   * the center when no coordinates are given.
   *
   * @param level {Number} Level to zoom to
   * @param animate {Boolean ? false} Whether to use animation
   * @param originLeft {Number ? null} Zoom in at given left coordinate
   * @param originTop {Number ? null} Zoom in at given top coordinate
   * @param callback {Function ? null} A callback that gets fired when the zoom is complete.
   */
  zoomTo: function zoomTo(level, animate, originLeft, originTop, callback) {
    var self = this;

    if (!self.options.zooming) {
      throw new Error('Zooming is not enabled!');
    }

    // Add callback if exists
    if (callback) {
      self.__zoomComplete = callback;
    }

    // Stop deceleration
    if (self.__isDecelerating) {
      core.effect.Animate.stop(self.__isDecelerating);
      self.__isDecelerating = false;
    }

    var oldLevel = self.__zoomLevel;

    // Normalize input origin to center of viewport if not defined
    if (originLeft == null) {
      originLeft = self.__clientWidth / 2;
    }

    if (originTop == null) {
      originTop = self.__clientHeight / 2;
    }

    // Limit level according to configuration
    level = Math.max(Math.min(level, self.options.maxZoom), self.options.minZoom);

    // Recompute maximum values while temporary tweaking maximum scroll ranges
    self.__computeScrollMax(level);

    // Recompute left and top coordinates based on new zoom level
    var left = (originLeft + self.__scrollLeft) * level / oldLevel - originLeft;
    var top = (originTop + self.__scrollTop) * level / oldLevel - originTop;

    // Limit x-axis
    if (left > self.__maxScrollLeft) {
      left = self.__maxScrollLeft;
    } else if (left < 0) {
      left = 0;
    }

    // Limit y-axis
    if (top > self.__maxScrollTop) {
      top = self.__maxScrollTop;
    } else if (top < 0) {
      top = 0;
    }

    // Push values out
    self.__publish(left, top, level, animate);
  },

  /**
   * Zooms the content by the given factor.
   *
   * @param factor {Number} Zoom by given factor
   * @param animate {Boolean ? false} Whether to use animation
   * @param originLeft {Number ? 0} Zoom in at given left coordinate
   * @param originTop {Number ? 0} Zoom in at given top coordinate
   * @param callback {Function ? null} A callback that gets fired when the zoom is complete.
   */
  zoomBy: function zoomBy(factor, animate, originLeft, originTop, callback) {
    var self = this;

    self.zoomTo(self.__zoomLevel * factor, animate, originLeft, originTop, callback);
  },

  /**
   * Scrolls to the given position. Respect limitations and snapping automatically.
   *
   * @param left {Number?null} Horizontal scroll position, keeps current if value is <code>null</code>
   * @param top {Number?null} Vertical scroll position, keeps current if value is <code>null</code>
   * @param animate {Boolean?false} Whether the scrolling should happen using an animation
   * @param zoom {Number?null} Zoom level to go to
   */
  scrollTo: function scrollTo(left, top, animate, zoom, force, speed, easing) {
    var self = this;

    // Stop deceleration
    if (self.__isDecelerating) {
      core.effect.Animate.stop(self.__isDecelerating);
      self.__isDecelerating = false;
    }

    // Correct coordinates based on new zoom level
    if (zoom != null && zoom !== self.__zoomLevel) {
      if (!self.options.zooming) {
        throw new Error('Zooming is not enabled!');
      }

      left *= zoom;
      top *= zoom;

      // Recompute maximum values while temporary tweaking maximum scroll ranges
      self.__computeScrollMax(zoom);
    } else {
      // Keep zoom when not defined
      zoom = self.__zoomLevel;
    }

    if (!self.options.scrollingX && !force) {
      left = self.__scrollLeft;
    } else {
      if (self.options.paging) {
        left = Math.round(left / self.__clientWidth) * self.__clientWidth;
      } else if (self.options.snapping) {
        left = Math.round(left / self.__snapWidth) * self.__snapWidth;
      }
    }

    if (!self.options.scrollingY && !force) {
      top = self.__scrollTop;
    } else {
      if (self.options.paging) {
        top = Math.round(top / self.__clientHeight) * self.__clientHeight;
      } else if (self.options.snapping) {
        top = Math.round(top / self.__snapHeight) * self.__snapHeight;
      }
    }

    if (!force) {
      // Limit for allowed ranges
      left = Math.max(Math.min(self.__maxScrollLeft, left), 0);
      top = Math.max(Math.min(self.__maxScrollTop, top), 0);
    }

    // Don't animate when no change detected, still call publish to make sure
    // that rendered position is really in-sync with internal data
    if (left === self.__scrollLeft && top === self.__scrollTop) {
      animate = false;
    }

    // Publish new values
    if (!self.__isTracking) {
      self.__publish(left, top, zoom, animate, speed, easing);
    }
  },

  /**
   * Scroll by the given offset
   *
   * @param left {Number ? 0} Scroll x-axis by given offset
   * @param top {Number ? 0} Scroll x-axis by given offset
   * @param animate {Boolean ? false} Whether to animate the given change
   */
  scrollBy: function scrollBy(left, top, animate) {
    var self = this;

    var startLeft = self.__isAnimating ? self.__scheduledLeft : self.__scrollLeft;
    var startTop = self.__isAnimating ? self.__scheduledTop : self.__scrollTop;

    self.scrollTo(startLeft + (left || 0), startTop + (top || 0), animate);
  },
  getCurrentPage: function getCurrentPage() {
    this.__computePage();
    return {
      x: this.__currentPageX,
      y: this.__currentPageY
    };
  },
  goToPage: function goToPage(_ref3, animate) {
    var x = _ref3.x,
        y = _ref3.y;

    if (isNaN(x)) {
      x = 1;
    }
    if (isNaN(y)) {
      y = 1;
    }
    this.scrollTo((x - 1) * this.__clientWidth, (y - 1) * this.__clientHeight, animate);
  },


  /*
  ---------------------------------------------------------------------------
  EVENT CALLBACKS
  ---------------------------------------------------------------------------
  */

  /**
   * Mouse wheel handler for zooming support
   */
  doMouseZoom: function doMouseZoom(wheelDelta, timeStamp, pageX, pageY) {
    var self = this;
    var change = wheelDelta > 0 ? 0.97 : 1.03;

    return self.zoomTo(self.__zoomLevel * change, false, pageX - self.__clientLeft, pageY - self.__clientTop);
  },

  /**
   * Touch start handler for scrolling support
   */
  doTouchStart: function doTouchStart(touches, timeStamp) {
    // Array-like check is enough here
    if (touches.length == null) {
      throw new Error('Invalid touch list: ' + touches);
    }

    if (timeStamp instanceof Date) {
      timeStamp = timeStamp.valueOf();
    }
    if (typeof timeStamp !== 'number') {
      throw new Error('Invalid timestamp value: ' + timeStamp);
    }

    var self = this;

    // Reset interruptedAnimation flag
    self.__interruptedAnimation = true;

    // Stop deceleration
    if (self.__isDecelerating) {
      core.effect.Animate.stop(self.__isDecelerating);
      self.__isDecelerating = false;
      self.__interruptedAnimation = true;
    }

    // Stop animation
    if (self.__isAnimating) {
      core.effect.Animate.stop(self.__isAnimating);
      self.__isAnimating = false;
      self.__interruptedAnimation = true;
    }

    // Use center point when dealing with two fingers
    var currentTouchLeft, currentTouchTop;
    var isSingleTouch = touches.length === 1;
    if (isSingleTouch) {
      currentTouchLeft = touches[0].pageX;
      currentTouchTop = touches[0].pageY;
    } else {
      currentTouchLeft = Math.abs(touches[0].pageX + touches[1].pageX) / 2;
      currentTouchTop = Math.abs(touches[0].pageY + touches[1].pageY) / 2;
    }

    // Store initial positions
    self.__initialTouchLeft = currentTouchLeft;
    self.__initialTouchTop = currentTouchTop;

    // Store current zoom level
    self.__zoomLevelStart = self.__zoomLevel;

    // Store initial touch positions
    self.__lastTouchLeft = currentTouchLeft;
    self.__lastTouchTop = currentTouchTop;

    // Store initial move time stamp
    self.__lastTouchMove = timeStamp;

    // Reset initial scale
    self.__lastScale = 1;

    // Reset locking flags
    self.__enableScrollX = !isSingleTouch && self.options.scrollingX;
    self.__enableScrollY = !isSingleTouch && self.options.scrollingY;

    // Reset tracking flag
    self.__isTracking = true;

    // Reset deceleration complete flag
    self.__didDecelerationComplete = false;

    // Dragging starts directly with two fingers, otherwise lazy with an offset
    self.__isDragging = !isSingleTouch;

    // Some features are  in multi touch scenarios
    self.__isSingleTouch = isSingleTouch;

    // Clearing data structure
    self.__positions = [];
  },

  /**
   * Touch move handler for scrolling support
   */
  doTouchMove: function doTouchMove(touches, timeStamp, scale) {
    // Array-like check is enough here
    if (touches.length == null) {
      throw new Error('Invalid touch list: ' + touches);
    }

    if (timeStamp instanceof Date) {
      timeStamp = timeStamp.valueOf();
    }
    if (typeof timeStamp !== 'number') {
      throw new Error('Invalid timestamp value: ' + timeStamp);
    }

    var self = this;

    // Ignore event when tracking is not enabled (event might be outside of element)
    if (!self.__isTracking) {
      return;
    }

    var currentTouchLeft, currentTouchTop;

    // Compute move based around of center of fingers
    if (touches.length === 2) {
      currentTouchLeft = Math.abs(touches[0].pageX + touches[1].pageX) / 2;
      currentTouchTop = Math.abs(touches[0].pageY + touches[1].pageY) / 2;
    } else {
      currentTouchLeft = touches[0].pageX;
      currentTouchTop = touches[0].pageY;
    }

    var positions = self.__positions;

    // Are we already is dragging mode?
    if (self.__isDragging) {
      // Compute move distance
      var moveX = currentTouchLeft - self.__lastTouchLeft;
      var moveY = currentTouchTop - self.__lastTouchTop;

      // Read previous scroll position and zooming
      var scrollLeft = self.__scrollLeft;
      var scrollTop = self.__scrollTop;
      var level = self.__zoomLevel;

      // Work with scaling
      if (scale != null && self.options.zooming) {
        var oldLevel = level;

        // Recompute level based on previous scale and new scale
        level = level / self.__lastScale * scale;

        // Limit level according to configuration
        level = Math.max(Math.min(level, self.options.maxZoom), self.options.minZoom);

        // Only do further compution when change happened
        if (oldLevel !== level) {
          // Compute relative event position to container
          var currentTouchLeftRel = currentTouchLeft - self.__clientLeft;
          var currentTouchTopRel = currentTouchTop - self.__clientTop;

          // Recompute left and top coordinates based on new zoom level
          scrollLeft = (currentTouchLeftRel + scrollLeft) * level / oldLevel - currentTouchLeftRel;
          scrollTop = (currentTouchTopRel + scrollTop) * level / oldLevel - currentTouchTopRel;

          // Recompute max scroll values
          self.__computeScrollMax(level);
        }
      }

      var bouncing = self.options.bouncing;

      if (self.__enableScrollX) {
        scrollLeft -= moveX * this.options.speedMultiplier;
        var maxScrollLeft = self.__maxScrollLeft;

        if (scrollLeft > maxScrollLeft || scrollLeft < 0) {
          scrollLeft += moveX / 2 * this.options.speedMultiplier;

          // fix scrollLeft
          scrollLeft = Math.min(Math.max(-bouncing.left, scrollLeft), maxScrollLeft + bouncing.right);
        }
      }

      // Compute new vertical scroll position
      if (self.__enableScrollY) {
        scrollTop -= moveY * this.options.speedMultiplier;
        var maxScrollTop = self.__maxScrollTop;

        if (scrollTop > maxScrollTop || scrollTop < 0) {
          scrollTop += moveY / 2 * this.options.speedMultiplier;

          // fix scrollTop
          scrollTop = Math.min(Math.max(-bouncing.top, scrollTop), maxScrollTop + bouncing.bottom);

          // Trigger pull to refresh or push to load
          if (!self.__enableScrollX && (self.__refreshHeight != null || self.__loadHeight != null)) {
            if (!self.__refreshActive && scrollTop <= -self.__refreshHeight) {
              self.__refreshActive = true;
              if (self.__refreshActivate) {
                self.__refreshActivate();
              }
            } else if (self.__refreshActive && scrollTop > -self.__refreshHeight) {
              self.__refreshActive = false;
              if (self.__refreshDeactivate) {
                self.__refreshDeactivate();
              }
            }
            // handle for push-load
            else if (!self.__loadActive && scrollTop >= self.__maxScrollTop + self.__loadHeight && self.__loadHeight > 0) {
                self.__loadActive = true;
                if (self.__loadActivate) {
                  self.__loadActivate();
                }
              } else if (self.__loadActive && scrollTop < self.__maxScrollTop + self.__loadHeight) {
                self.__loadActive = false;
                if (self.__loadDeactivate) {
                  self.__loadDeactivate();
                }
              }
          }
        }
      }

      // Keep list from growing infinitely (holding min 10, max 20 measure points)
      if (positions.length > 60) {
        positions.splice(0, 30);
      }

      // Track scroll movement for decleration
      positions.push(scrollLeft, scrollTop, timeStamp);

      // Sync scroll position
      self.__publish(scrollLeft, scrollTop, level);

      // Otherwise figure out whether we are switching into dragging mode now.
    } else {
      var minimumTrackingForScroll = self.options.locking ? 3 : 0;
      var minimumTrackingForDrag = 5;

      var distanceX = Math.abs(currentTouchLeft - self.__initialTouchLeft);
      var distanceY = Math.abs(currentTouchTop - self.__initialTouchTop);

      self.__enableScrollX = self.options.scrollingX && distanceX >= minimumTrackingForScroll;
      self.__enableScrollY = self.options.scrollingY && distanceY >= minimumTrackingForScroll;

      positions.push(self.__scrollLeft, self.__scrollTop, timeStamp);

      self.__isDragging = (self.__enableScrollX || self.__enableScrollY) && (distanceX >= minimumTrackingForDrag || distanceY >= minimumTrackingForDrag);
      if (self.__isDragging) {
        self.__interruptedAnimation = false;
      }
    }

    // Update last touch positions and time stamp for next event
    self.__lastTouchLeft = currentTouchLeft;
    self.__lastTouchTop = currentTouchTop;
    self.__lastTouchMove = timeStamp;
    self.__lastScale = scale;
  },

  /**
   * Touch end handler for scrolling support
   */
  doTouchEnd: function doTouchEnd(timeStamp) {
    if (timeStamp instanceof Date) {
      timeStamp = timeStamp.valueOf();
    }
    if (typeof timeStamp !== 'number') {
      throw new Error('Invalid timestamp value: ' + timeStamp);
    }

    var self = this;

    // Ignore event when tracking is not enabled (no touchstart event on element)
    // This is required as this listener ('touchmove') sits on the document and not on the element itself.
    if (!self.__isTracking) {
      return;
    }

    // Not touching anymore (when two finger hit the screen there are two touch end events)
    self.__isTracking = false;

    // Be sure to reset the dragging flag now. Here we also detect whether
    // the finger has moved fast enough to switch into a deceleration animation.
    if (self.__isDragging) {
      // Reset dragging flag
      self.__isDragging = false;

      // Start deceleration
      // Verify that the last move detected was in some relevant time frame
      if (self.__isSingleTouch && self.options.animating && timeStamp - self.__lastTouchMove <= 100) {
        // Then figure out what the scroll position was about 100ms ago
        var positions = self.__positions;
        var endPos = positions.length - 1;
        var startPos = endPos;

        // Move pointer to position measured 100ms ago
        for (var i = endPos; i > 0 && positions[i] > self.__lastTouchMove - 100; i -= 3) {
          startPos = i;
        }

        // If start and stop position is identical in a 100ms timeframe,
        // we cannot compute any useful deceleration.
        if (startPos !== endPos) {
          // Compute relative movement between these two points
          var timeOffset = positions[endPos] - positions[startPos];
          var movedLeft = self.__scrollLeft - positions[startPos - 2];
          var movedTop = self.__scrollTop - positions[startPos - 1];

          // Based on 50ms compute the movement to apply for each render step
          self.__decelerationVelocityX = movedLeft / timeOffset * (1000 / 60);
          self.__decelerationVelocityY = movedTop / timeOffset * (1000 / 60);

          // How much velocity is required to start the deceleration
          var minVelocityToStartDeceleration = self.options.paging || self.options.snapping ? 4 : 1;

          // Verify that we have enough velocity to start deceleration
          if (Math.abs(self.__decelerationVelocityX) > minVelocityToStartDeceleration || Math.abs(self.__decelerationVelocityY) > minVelocityToStartDeceleration) {
            // Deactivate pull-to-refresh when decelerating
            if (!self.__refreshActive && !self.__loadActive) {
              self.__startDeceleration(timeStamp);
            }
          } else {
            self.__scrollComplete();
          }
        } else {
          self.__scrollComplete();
        }
      } else if (timeStamp - self.__lastTouchMove > 100) {
        self.__scrollComplete();
      }
    }

    // If this was a slower move it is per default non decelerated, but this
    // still means that we want snap back to the bounds which is done here.
    // This is placed outside the condition above to improve edge case stability
    // e.g. touchend fired without enabled dragging. This should normally do not
    // have modified the scroll positions or even showed the scrollbars though.
    if (!self.__isDecelerating) {
      if (self.__refreshActive && self.__refreshStart) {
        // Use publish instead of scrollTo to allow scrolling to out of boundary position
        // We don't need to normalize scrollLeft, zoomLevel, etc. here because we only y-scrolling when pull-to-refresh is enabled
        self.__publish(self.__scrollLeft, -self.__refreshHeight, self.__zoomLevel, true);

        if (self.__refreshStart) {
          self.__refreshStart();
        }
      } else if (self.__loadActive && self.__loadStart) {
        // Use publish instead of scrollTo to allow scrolling to out of boundary position
        // We don't need to normalize scrollLeft, zoomLevel, etc. here because we only y-scrolling when pull-to-refresh is enabled
        self.__publish(self.__scrollLeft, self.__maxScrollTop + self.__loadHeight, self.__zoomLevel, true);

        if (self.__loadStart) {
          self.__loadStart();
        }
      } else {
        if (self.__interruptedAnimation || self.__isDragging) {
          self.__scrollComplete();
        }
        self.scrollTo(self.__scrollLeft, self.__scrollTop, true, self.__zoomLevel);

        // Directly signalize deactivation (nothing todo on refresh?)
        if (self.__refreshActive) {
          self.__refreshActive = false;
          if (self.__refreshDeactivate) {
            self.__refreshDeactivate();
          }
        } else if (self.__loadActive) {
          self.__loadActive = false;
          if (self.__loadDeactivate) {
            self.__loadDeactivate();
          }
        }
      }
    }

    // Fully cleanup list
    self.__positions.length = 0;
  },

  /** Handle for scroll/publish */
  onScroll: NOOP,

  stop: function stop() {
    var self = this;

    self.__disable = true;
  },
  start: function start() {
    var self = this;

    self.__disable = true;
  },
  /*
  ---------------------------------------------------------------------------
  PRIVATE API
  ---------------------------------------------------------------------------
  */

  /**
   * Applies the scroll position to the content element
   *
   * @param left {Number} Left scroll position
   * @param top {Number} Top scroll position
   * @param animate {Boolean?false} Whether animation should be used to move to the new coordinates
   */
  __publish: function __publish(left, top, zoom, animate, speed, easing) {
    var self = this;
    if (self.__disable) {
      return;
    }
    if (isNaN(left)) {
      left = this.__scrollLeft;
    }
    if (isNaN(top)) {
      top = this.__scrollTop;
    }
    // Remember whether we had an animation, then we try to continue based on the current "drive" of the animation
    var wasAnimating = self.__isAnimating;
    if (wasAnimating) {
      core.effect.Animate.stop(wasAnimating);
      self.__isAnimating = false;
    }

    if (animate && (self.options.animating || speed)) {
      // Keep scheduled positions for scrollBy/zoomBy functionality
      self.__scheduledLeft = left;
      self.__scheduledTop = top;
      self.__scheduledZoom = zoom;

      var oldLeft = self.__scrollLeft;
      var oldTop = self.__scrollTop;
      var oldZoom = self.__zoomLevel;

      var diffLeft = left - oldLeft;
      var diffTop = top - oldTop;
      var diffZoom = zoom - oldZoom;

      var step = function step(percent, now, render) {
        if (render) {
          self.__scrollLeft = oldLeft + diffLeft * percent;
          self.__scrollTop = oldTop + diffTop * percent;
          self.__zoomLevel = oldZoom + diffZoom * percent;

          // Push values out
          if (self.__callback) {
            self.__callback(self.__scrollLeft, self.__scrollTop, self.__zoomLevel);
            self.onScroll();
          }
        }
      };

      var verify = function verify(id) {
        return self.__isAnimating === id;
      };

      var completed = function completed(renderedFramesPerSecond, animationId, wasFinished) {
        if (animationId === self.__isAnimating) {
          self.__isAnimating = false;
        }
        if (self.__didDecelerationComplete || wasFinished) {
          self.__scrollComplete();
        }

        if (self.options.zooming) {
          self.__computeScrollMax();
          if (self.__zoomComplete) {
            self.__zoomComplete();
            self.__zoomComplete = null;
          }
        }

        if (self.__refreshBeforeDeactiveStarted) {
          self.__refreshBeforeDeactiveStarted = false;
          if (self.__refreshDeactivate) self.__refreshDeactivate();
        }

        if (self.__loadBeforeDeactiveStarted) {
          self.__loadBeforeDeactiveStarted = false;
          if (self.__loadDeactivate) self.__loadDeactivate();
        }
      };

      var easingFunction = animatingMethod;
      if (easing) {
        easingFunction = createEasingFunction(easing, easingPattern);
      }

      // When continuing based on previous animation we choose an ease-out animation instead of ease-in-out
      self.__isAnimating = core.effect.Animate.start(step, verify, completed, speed || self.options.animationDuration, wasAnimating ? easingFunction : noAnimatingMethod);
    } else {
      self.__scheduledLeft = self.__scrollLeft = left;
      self.__scheduledTop = self.__scrollTop = top;
      self.__scheduledZoom = self.__zoomLevel = zoom;

      // Push values out
      if (self.__callback) {
        self.__callback(left, top, zoom);
        self.onScroll();
      }

      // Fix max scroll ranges
      if (self.options.zooming) {
        self.__computeScrollMax();
        if (self.__zoomComplete) {
          self.__zoomComplete();
          self.__zoomComplete = null;
        }
      }

      if (self.__refreshBeforeDeactiveStarted) {
        self.__refreshBeforeDeactiveStarted = false;
        if (self.__refreshDeactivate) self.__refreshDeactivate();
      }

      if (self.__loadBeforeDeactiveStarted) {
        self.__loadBeforeDeactiveStarted = false;
        if (self.__loadDeactivate) self.__loadDeactivate();
      }
    }
  },

  /**
   * Recomputes scroll minimum values based on client dimensions and content dimensions.
   */
  __computeScrollMax: function __computeScrollMax(zoomLevel) {
    var self = this;

    if (zoomLevel == null) {
      zoomLevel = self.__zoomLevel;
    }

    self.__maxScrollLeft = Math.max(self.__contentWidth * zoomLevel - self.__clientWidth, 0);
    self.__maxScrollTop = Math.max(self.__contentHeight * zoomLevel - self.__clientHeight, 0);
  },
  /** compute current page total page */
  __computePage: function __computePage() {
    var self = this;
    var clientWidth = self.__clientWidth;
    var clientHeight = self.__clientHeight;
    var left = self.__scrollLeft;
    var top = self.__scrollTop;
    self.__totalXPage = Math.ceil(self.__contentWidth / clientWidth);
    self.__currentPageX = Math.ceil(left / clientWidth + 1);
    self.__totalYPage = Math.ceil(self.__contentHeight / clientHeight);
    self.__currentPageY = Math.ceil(top / clientHeight + 1);
  },
  /** complete scroll*/
  __scrollComplete: function __scrollComplete() {
    var self = this;
    self.options.scrollingComplete();
  },
  /*
  ---------------------------------------------------------------------------
  ANIMATION (DECELERATION) SUPPORT
  ---------------------------------------------------------------------------
  */

  /**
   * Called when a touch sequence end and the speed of the finger was high enough
   * to switch into deceleration mode.
   */
  __startDeceleration: function __startDeceleration() {
    var self = this;

    if (self.options.paging) {
      var scrollLeft = Math.max(Math.min(self.__scrollLeft, self.__maxScrollLeft), 0);
      var scrollTop = Math.max(Math.min(self.__scrollTop, self.__maxScrollTop), 0);
      var clientWidth = self.__clientWidth;
      var clientHeight = self.__clientHeight;

      // We limit deceleration not to the min/max values of the allowed range, but to the size of the visible client area.
      // Each page should have exactly the size of the client area.
      self.__minDecelerationScrollLeft = Math.floor(scrollLeft / clientWidth) * clientWidth;
      self.__minDecelerationScrollTop = Math.floor(scrollTop / clientHeight) * clientHeight;
      self.__maxDecelerationScrollLeft = Math.ceil(scrollLeft / clientWidth) * clientWidth;
      self.__maxDecelerationScrollTop = Math.ceil(scrollTop / clientHeight) * clientHeight;
    } else {
      self.__minDecelerationScrollLeft = 0;
      self.__minDecelerationScrollTop = 0;
      self.__maxDecelerationScrollLeft = self.__maxScrollLeft;
      self.__maxDecelerationScrollTop = self.__maxScrollTop;
    }

    // Wrap class method
    var step = function step(percent, now, render) {
      self.__stepThroughDeceleration(render);
    };

    // How much velocity is required to keep the deceleration running
    var minVelocityToKeepDecelerating = self.options.snapping ? 4 : 0.001;

    // Detect whether it's still worth to continue animating steps
    // If we are already slow enough to not being user perceivable anymore, we stop the whole process here.
    var verify = function verify() {
      var shouldContinue = Math.abs(self.__decelerationVelocityX) >= minVelocityToKeepDecelerating || Math.abs(self.__decelerationVelocityY) >= minVelocityToKeepDecelerating;
      if (!shouldContinue) {
        self.__didDecelerationComplete = true;
      }
      return shouldContinue;
    };

    var completed = function completed() {
      if (!self.__isDecelerating) {
        return;
      }
      self.__isDecelerating = false;
      if (self.__didDecelerationComplete) {
        self.__scrollComplete();
      }

      // Animate to grid when snapping is active, otherwise just fix out-of-boundary positions
      self.scrollTo(self.__scrollLeft, self.__scrollTop, self.options.snapping);
    };

    // Start animation and switch on flag
    self.__isDecelerating = core.effect.Animate.start(step, verify, completed);
  },

  /**
   * Called on every step of the animation
   *
   * @param inMemory {Boolean?false} Whether to not render the current step, but keep it in memory only. Used internally only!
   */
  __stepThroughDeceleration: function __stepThroughDeceleration(render) {
    var self = this;
    var bouncing = self.options.bouncing;
    var minLeft = self.__minDecelerationScrollLeft;
    var maxLeft = self.__maxDecelerationScrollLeft;
    var minTop = self.__minDecelerationScrollTop;
    var maxTop = self.__maxDecelerationScrollTop;
    // Add deceleration to scroll position
    var scrollLeft = self.__scrollLeft + self.__decelerationVelocityX;
    var scrollTop = self.__scrollTop + self.__decelerationVelocityY;

    var bounceX = scrollLeft < minLeft || scrollLeft > maxLeft;
    var bounceY = scrollTop < minTop || scrollTop > maxTop;

    // fix scrollLeft and scrollTop
    var fixedScrollLeft = Math.min(Math.max(minLeft - bouncing.left, scrollLeft), maxLeft + bouncing.right);

    var fixedScrollTop = Math.min(Math.max(minTop - bouncing.top, scrollTop), maxTop + bouncing.bottom);

    //
    // UPDATE SCROLL POSITION
    //
    if (render) {
      self.__publish(fixedScrollLeft, fixedScrollTop, self.__zoomLevel);
    } else {
      self.__scrollLeft = scrollLeft;
      self.__scrollTop = scrollTop;
    }

    //
    // SLOW DOWN
    //

    // Slow down velocity on every iteration
    if (!self.options.paging) {
      // This is the factor applied to every iteration of the animation
      // to slow down the process. This should emulate natural behavior where
      // objects slow down when the initiator of the movement is removed
      var frictionFactor = 0.95;

      self.__decelerationVelocityX *= frictionFactor;
      self.__decelerationVelocityY *= frictionFactor;
    }

    //
    // BOUNCING SUPPORT
    //

    var scrollOutsideX = 0;
    var scrollOutsideY = 0;

    // This configures the amount of change applied to deceleration/acceleration when reaching boundaries
    var penetrationDeceleration = self.options.penetrationDeceleration;
    var penetrationAcceleration = self.options.penetrationAcceleration;

    if (bounceX) {
      // Check limits
      if (scrollLeft < self.__minDecelerationScrollLeft) {
        scrollOutsideX = self.__minDecelerationScrollLeft - scrollLeft;
      } else if (scrollLeft > self.__maxDecelerationScrollLeft) {
        scrollOutsideX = self.__maxDecelerationScrollLeft - scrollLeft;
      }
    }

    if (bounceY) {
      if (scrollTop < self.__minDecelerationScrollTop) {
        scrollOutsideY = self.__minDecelerationScrollTop - scrollTop;
      } else if (scrollTop > self.__maxDecelerationScrollTop) {
        scrollOutsideY = self.__maxDecelerationScrollTop - scrollTop;
      }
    }

    if (scrollOutsideX !== 0) {
      if (scrollOutsideX * self.__decelerationVelocityX <= 0) {
        self.__decelerationVelocityX += scrollOutsideX * penetrationDeceleration;
        if (scrollOutsideX < 0 && -scrollOutsideX >= bouncing.right && self.__decelerationVelocityX > 0) {
          self.__decelerationVelocityX = -bouncing.right / 2;
        }
        if (scrollOutsideX > 0 && scrollOutsideX >= bouncing.left && self.__decelerationVelocityX < 0) {
          self.__decelerationVelocityX = bouncing.left / 2;
        }
      } else {
        self.__decelerationVelocityX = scrollOutsideX * penetrationAcceleration;
      }
    }

    if (scrollOutsideY !== 0) {
      if (scrollOutsideY * self.__decelerationVelocityY <= 0) {
        self.__decelerationVelocityY += scrollOutsideY * penetrationDeceleration;
        if (scrollOutsideY < 0 && -scrollOutsideY >= bouncing.bottom && self.__decelerationVelocityY > 0) {
          self.__decelerationVelocityY = -bouncing.bottom / 2;
        }
        if (scrollOutsideY > 0 && scrollOutsideY >= bouncing.top && self.__decelerationVelocityY < 0) {
          self.__decelerationVelocityY = bouncing.top / 2;
        }
      } else {
        self.__decelerationVelocityY = scrollOutsideY * penetrationAcceleration / 2;
      }
    }
  }
};

// Copy over members to prototype
for (var key in members) {
  Scroller.prototype[key] = members[key];
}

/* DOM-based rendering (Uses 3D when available, falls back on margin when transform not available) */
function render(content, global, suffix, type) {
  if (type == 'position') {
    return function (left, top) {
      content.style.left = -left + 'px';
      content.style.top = -top + 'px';
    };
  }

  var vendorPrefix = getPrefix(global);

  var helperElem = document.createElement('div');
  var undef;

  var perspectiveProperty = vendorPrefix + 'Perspective';
  var transformProperty = 'transform'; //vendorPrefix + 'Transform';

  if (helperElem.style[perspectiveProperty] !== undef) {
    return function (left, top, zoom) {
      content.style[transformProperty] = 'translate3d(' + -left + suffix + ',' + -top + suffix + ',0) scale(' + zoom + ')';
    };
  } else if (helperElem.style[transformProperty] !== undef) {
    return function (left, top, zoom) {
      content.style[transformProperty] = 'translate(' + -left + suffix + ',' + -top + suffix + ') scale(' + zoom + ')';
    };
  }
}

var touch = new touchManager();
function listenContainer(container, scroller, eventCallback, zooming, preventDefault, preventDefaultOnMove) {
  var destroy = null;
  var mousedown = false;
  var touchObj = touch.getTouchObject();

  function touchstart(e) {
    var event = touch.getEventObject(e);
    // Don't react if initial down happens on a form element
    if (event[0] && event[0].target && event[0].target.tagName.match(/input|textarea|select/i) || scroller.__disable) {
      return;
    }
    eventCallback('mousedown');
    mousedown = true;
    scroller.doTouchStart(event, e.timeStamp);

    if (preventDefault) {
      e.preventDefault();
    }
    e.stopPropagation();

    // here , we want to manully prevent default, so we
    // set passive to false
    // see https://developer.mozilla.org/zh-CN/docs/Web/API/EventTarget/addEventListener
    document.addEventListener(touchObj.touchmove, touchmove, {
      passive: false
    });
  }

  function touchmove(e) {
    if (scroller.__disable || !mousedown) return;

    var event = touch.getEventObject(e);
    eventCallback('mousemove');
    scroller.doTouchMove(event, e.timeStamp, e.scale);
    if (preventDefaultOnMove) {
      e.preventDefault();
    }
  }

  function touchend(e) {
    eventCallback('mouseup');
    mousedown = false;
    scroller.doTouchEnd(e.timeStamp);
    document.removeEventListener(touchObj.touchmove, touchmove);
  }
  function touchcancel(e) {
    scroller.doTouchEnd(e.timeStamp);
  }

  function zoomHandle(e) {
    scroller.doMouseZoom(e.detail ? e.detail * -120 : e.wheelDelta, e.timeStamp, e.pageX, e.pageY);
  }

  container.addEventListener(touchObj.touchstart, touchstart, false);

  document.addEventListener(touchObj.touchend, touchend, false);
  document.addEventListener(touchObj.touchcancel, touchcancel, false);

  if (zooming && !touch.isTouch) {
    container.addEventListener(navigator.userAgent.indexOf('Firefox') > -1 ? 'DOMMouseScroll' : 'mousewheel', zoomHandle, false);
  }

  destroy = function destroy() {
    container.removeEventListener(touchObj.touchstart, touchstart, false);

    document.removeEventListener(touchObj.touchend, touchend, false);
    document.removeEventListener(touchObj.touchcancel, touchcancel, false);

    container.removeEventListener(navigator.userAgent.indexOf('Firefox') > -1 ? 'DOMMouseScroll' : 'mousewheel', zoomHandle, false);
  };

  // handle __publish event
  scroller.onScroll = function () {
    eventCallback('onscroll');
  };
  return destroy;
}

/**
 * These mixes is exclusive for slide mode
 */

createSlideModeStyle();
/**
 * @description refresh and load callback
 */
function createStateCallbacks(type, stageType, vm, tipDom) {
  var listeners = vm.$listeners;

  var activateCallback = function activateCallback() {
    vm.vuescroll.state[stageType] = 'active';
    vm.$emit(type + '-activate', vm, tipDom);
  };

  var deactivateCallback = function deactivateCallback() {
    vm.vuescroll.state[stageType] = 'deactive';
    vm.$emit(type + '-deactivate', vm, tipDom);
  };

  var beforeDeactiveEnd = function beforeDeactiveEnd() {
    vm.vuescroll.state[stageType] = 'beforeDeactiveEnd';
    vm.$emit(type + '-before-deactivate-end', vm, tipDom);
  };

  var startCallback = function startCallback() {
    vm.vuescroll.state[stageType] = 'start';
    setTimeout(function () {
      vm.scroller.finishRefreshOrLoad();
    }, 2000); // Default start stage duration
  };

  // let beforeDeactivateCallback = done => {
  //   vm.vuescroll.state[stageType] = 'beforeDeactive';
  //   setTimeout(function() {
  //     done();
  //   }, 500); // Default before-deactivated stage duration
  // };
  var beforeDeactivateCallback = void 0;

  /* istanbul ignore if */
  if (listeners[type + '-before-deactivate']) {
    beforeDeactivateCallback = function beforeDeactivateCallback(done) {
      vm.vuescroll.state[stageType] = 'beforeDeactive';
      vm.$emit(type + '-before-deactivate', vm, tipDom, done.bind(vm.scroller));
    };
  }

  /* istanbul ignore if */
  if (listeners[type + '-start']) {
    startCallback = function startCallback() {
      vm.vuescroll.state[stageType] = 'start';
      vm.$emit(type + '-start', vm, tipDom, vm.scroller.finishRefreshOrLoad.bind(vm.scroller));
    };
  }

  return {
    activateCallback: activateCallback,
    deactivateCallback: deactivateCallback,
    startCallback: startCallback,
    beforeDeactivateCallback: beforeDeactivateCallback,
    beforeDeactiveEnd: beforeDeactiveEnd
  };
}

var slideMix = {
  mounted: function mounted() {
    this.vsMounted = true;
  },

  computed: {
    pullRefreshTip: function pullRefreshTip() {
      return this.mergedOptions.vuescroll.pullRefresh.tips[this.vuescroll.state.refreshStage];
    },
    pushLoadTip: function pushLoadTip() {
      return this.mergedOptions.vuescroll.pushLoad.tips[this.vuescroll.state.loadStage];
    },
    refreshLoad: function refreshLoad() {
      return this.mergedOptions.vuescroll.pullRefresh.enable || this.mergedOptions.vuescroll.pushLoad.enable;
    },
    refrehDomVisiable: function refrehDomVisiable() {
      return this.vsMounted && this.outTheTopBoundary;
    },
    loadDomVisiable: function loadDomVisiable() {
      return this.vsMounted && this.outTheBottomBoundary;
    }
  },
  data: function data() {
    return {
      vuescroll: {
        state: {
          /** Default tips of refresh and load */
          refreshStage: 'deactive',
          loadStage: 'deactive'
        }
      },
      vsMounted: false,
      outTheTopBoundary: false,
      outTheBottomBoundary: false
    };
  },

  methods: {
    // Update:
    // 1. update height/width
    // 2. update refresh or load
    updateScroller: function updateScroller() {
      this.updateDimesion();
      this.registryRefreshLoad();
    },
    updateDimesion: function updateDimesion() {
      var clientWidth = this.$el.clientWidth;
      var clientHeight = this.$el.clientHeight;
      var contentWidth = this.scrollPanelElm.scrollWidth;
      var contentHeight = this.scrollPanelElm.scrollHeight;
      var refreshHeight = 0;
      var loadHeight = 0;
      // If the refresh option is true,let's  give a "margin-top" style to
      // the refresh-tip dom. let it to be invisible when doesn't trigger
      // refresh.
      if (this.mergedOptions.vuescroll.pullRefresh.enable) {
        if (this.vsMounted) {
          var refreshDom = this.$refs[__REFRESH_DOM_NAME].elm || this.$refs[__REFRESH_DOM_NAME];
          refreshHeight = refreshDom.offsetHeight;
          refreshDom.style.marginTop = -refreshHeight + 'px';
        }
      }
      if (this.mergedOptions.vuescroll.pushLoad.enable) {
        if (this.vsMounted) {
          var loadDom = this.$refs[__LOAD_DOM_NAME].elm || this.$refs[__LOAD_DOM_NAME];
          loadHeight = loadDom.offsetHeight;
          contentHeight -= loadHeight;
          loadDom.style.bottom = '-' + loadHeight + 'px';
        }
      }
      if (this.scroller) {
        this.scroller.setDimensions(clientWidth, clientHeight, contentWidth, contentHeight, false);
      }
    },
    registryRefreshLoad: function registryRefreshLoad() {
      // registry refresh
      if (this.mergedOptions.vuescroll.pullRefresh.enable) {
        this.registryEvent('refresh');
      }
      // registry load
      if (this.mergedOptions.vuescroll.pushLoad.enable) {
        this.registryEvent('load');
      }
    },
    registryScroller: function registryScroller() {
      var _this = this;

      var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
          _ref$left = _ref.left,
          left = _ref$left === undefined ? 0 : _ref$left,
          _ref$top = _ref.top,
          top = _ref$top === undefined ? 0 : _ref$top,
          _ref$zoom = _ref.zoom,
          zoom = _ref$zoom === undefined ? 1 : _ref$zoom;

      var _mergedOptions$vuescr = this.mergedOptions.vuescroll.scroller,
          preventDefault = _mergedOptions$vuescr.preventDefault,
          preventDefaultOnMove = _mergedOptions$vuescr.preventDefaultOnMove;
      var _mergedOptions$vuescr2 = this.mergedOptions.vuescroll,
          paging = _mergedOptions$vuescr2.paging,
          snapping = _mergedOptions$vuescr2.snapping.enable,
          renderMethod = _mergedOptions$vuescr2.renderMethod,
          zooming = _mergedOptions$vuescr2.zooming;
      // disale zooming when refresh or load enabled

      zooming = !this.refreshLoad && !paging && !snapping && zooming;
      var _mergedOptions$scroll = this.mergedOptions.scrollPanel,
          scrollingY = _mergedOptions$scroll.scrollingY,
          scrollingX = _mergedOptions$scroll.scrollingX;


      var scrollingComplete = this.scrollingComplete.bind(this);

      // Initialize Scroller
      this.scroller = new Scroller(render(this.scrollPanelElm, window, 'px', renderMethod), _extends({}, this.mergedOptions.vuescroll.scroller, {
        zooming: zooming,
        scrollingY: scrollingY,
        scrollingX: scrollingX && !this.refreshLoad,
        animationDuration: this.mergedOptions.scrollPanel.speed,
        paging: paging,
        snapping: snapping,
        scrollingComplete: scrollingComplete
      }));

      this.scroller.__disable = this.mergedOptions.vuescroll.scroller.disable;
      this.scroller.__scrollLeft = left;
      this.scroller.__scrollTop = top;
      this.scroller.__zoomLevel = zoom;

      // Set snap
      if (snapping) {
        this.scroller.setSnapSize(this.mergedOptions.vuescroll.snapping.width, this.mergedOptions.vuescroll.snapping.height);
      }
      var rect = this.$el.getBoundingClientRect();
      this.scroller.setPosition(rect.left + this.$el.clientLeft, rect.top + this.$el.clientTop);

      // Get destroy callback
      var cb = listenContainer(this.$el, this.scroller, function (eventType) {
        // Thie is to dispatch the event from the scroller.
        // to let vuescroll refresh the dom
        switch (eventType) {
          case 'mousedown':
            _this.vuescroll.state.isDragging = true;
            break;
          case 'onscroll':
            {
              /**
                 * Trigger auto load
                 */
              var stage = _this.vuescroll.state['loadStage'];
              var _mergedOptions$vuescr3 = _this.mergedOptions.vuescroll.pushLoad,
                  enable = _mergedOptions$vuescr3.enable,
                  auto = _mergedOptions$vuescr3.auto,
                  autoLoadDistance = _mergedOptions$vuescr3.autoLoadDistance;
              var _scroller = _this.scroller,
                  __scrollTop = _scroller.__scrollTop,
                  __maxScrollTop = _scroller.__maxScrollTop;

              if (stage != 'start' && enable && auto && !_this.lockAutoLoad && // auto load debounce
              autoLoadDistance >= __maxScrollTop - __scrollTop && __scrollTop > 0) {
                _this.lockAutoLoad = true;
                _this.triggerRefreshOrLoad('load');
              }

              if (autoLoadDistance < __maxScrollTop - __scrollTop) {
                _this.lockAutoLoad = false;
              }

              _this.handleScroll(false);
            }

            break;
          case 'mouseup':
            _this.vuescroll.state.isDragging = false;
            break;
        }
      }, zooming, preventDefault, preventDefaultOnMove);

      this.updateScroller();

      return cb;
    },
    updateSlideModeBarState: function updateSlideModeBarState() {
      // update slide mode scrollbars' state
      var heightPercentage = void 0,
          widthPercentage = void 0;
      var vuescroll = this.$el;
      var scroller = this.scroller;

      var outerLeft = 0;
      var outerTop = 0;

      var _$el = this.$el,
          clientWidth = _$el.clientWidth,
          clientHeight = _$el.clientHeight;


      var contentWidth = clientWidth + this.scroller.__maxScrollLeft;
      var contentHeight = clientHeight + this.scroller.__maxScrollTop;

      // We should add the the height or width that is
      // out of horizontal bountry  to the total length

      /* istanbul ignore if */
      if (scroller.__scrollLeft < 0) {
        outerLeft = -scroller.__scrollLeft;
      } /* istanbul ignore next */else if (scroller.__scrollLeft > scroller.__maxScrollLeft) {
          outerLeft = scroller.__scrollLeft - scroller.__maxScrollLeft;
        }

      // out of vertical bountry
      if (scroller.__scrollTop < 0) {
        outerTop = -scroller.__scrollTop;
        this.outTheBottomBoundary = false;
        this.outTheTopBoundary = true;
      } else if (scroller.__scrollTop > scroller.__maxScrollTop) {
        outerTop = scroller.__scrollTop - scroller.__maxScrollTop;
        this.outTheTopBoundary = false;
        this.outTheBottomBoundary = true;
      } else {
        this.outTheTopBoundary = this.outTheBottomBoundary = false;
      }

      heightPercentage = clientHeight / (contentHeight + outerTop);
      widthPercentage = clientWidth / (contentWidth + outerLeft);

      var scrollTop = Math.min(Math.max(0, scroller.__scrollTop), scroller.__maxScrollTop);
      var scrollLeft = Math.min(Math.max(0, scroller.__scrollLeft), scroller.__maxScrollLeft);

      this.bar.vBar.state.posValue = (scrollTop + outerTop) * 100 / vuescroll.clientHeight;
      this.bar.hBar.state.posValue = (scrollLeft + outerLeft) * 100 / vuescroll.clientWidth;

      /* istanbul ignore if */
      if (scroller.__scrollLeft < 0) {
        this.bar.hBar.state.posValue = 0;
      }
      if (scroller.__scrollTop < 0) {
        this.bar.vBar.state.posValue = 0;
      }

      this.bar.vBar.state.size = heightPercentage < 1 ? heightPercentage : 0;
      this.bar.hBar.state.size = widthPercentage < 1 ? widthPercentage : 0;
    },
    registryEvent: function registryEvent(type) {
      var domName = type == 'refresh' ? __REFRESH_DOM_NAME : __LOAD_DOM_NAME;
      var activateFunc = type == 'refresh' ? this.scroller.activatePullToRefresh : this.scroller.activatePushToLoad;
      var stageType = type == 'refresh' ? 'refreshStage' : 'loadStage';
      var tipDom = this.$refs[domName].elm || this.$refs[domName];
      var cbs = createStateCallbacks(type, stageType, this, tipDom);
      var height = tipDom.offsetHeight;

      activateFunc.bind(this.scroller)(height, cbs);
    },
    getSlidePosition: function getSlidePosition() {
      return {
        scrollLeft: this.scroller.__scrollLeft,
        scrollTop: this.scroller.__scrollTop
      };
    }
  }
};

/**
 * These mixes is exclusive for native mode
 */

var nativeMix = {
  methods: {
    updateNativeModeBarState: function updateNativeModeBarState() {
      var container = this.scrollPanelElm;
      var isPercent = this.vuescroll.state.currentSizeStrategy == 'percent';
      var _vuescroll$state = this.vuescroll.state,
          width = _vuescroll$state.width,
          height = _vuescroll$state.height;

      var clientWidth = isPercent || !width ? container.clientWidth : width.slice(0, -2); // xxxpx ==> xxx
      var clientHeight = isPercent || !height ? container.clientHeight : height.slice(0, -2);

      var heightPercentage = clientHeight / container.scrollHeight;
      var widthPercentage = clientWidth / container.scrollWidth;

      this.bar.vBar.state.posValue = container.scrollTop * 100 / clientHeight;
      this.bar.hBar.state.posValue = container.scrollLeft * 100 / clientWidth;

      this.bar.vBar.state.size = heightPercentage < 1 ? heightPercentage : 0;
      this.bar.hBar.state.size = widthPercentage < 1 ? widthPercentage : 0;
    },
    getNativePosition: function getNativePosition() {
      return {
        scrollTop: this.scrollPanelElm.scrollTop,
        scrollLeft: this.scrollPanelElm.scrollLeft
      };
    },
    css: function css(dom, style) /* istanbul ignore next */{
      return window.getComputedStyle(dom)[style];
    },
    checkScrollable: function checkScrollable(e, dir, delta) /* istanbul ignore next */{
      var scrollable = false;

      // check mouse point scrollable.
      var dom = e.target ? e.target : e;
      while (dom && dom.nodeType == 1 && dom !== this.scrollPanelElm.parentNode && !/^BODY|HTML/.test(dom.nodeName)) {
        var ov = (dir == 'dy' ? this.css(dom, 'overflowY') : this.css(dom, 'overflowX')) || this.css(dom, 'overflow') || '';
        if (/scroll|auto/.test(ov)) {
          var _getScrollProcess = this.getScrollProcess(dom),
              v = _getScrollProcess.v,
              h = _getScrollProcess.h;

          if (dir == 'dx' && (delta < 0 && h > 0 || delta > 0 && h < 1) || dir == 'dy' && (delta < 0 && v > 0 || delta > 0 && v < 1)) {
            scrollable = dom == this.scrollPanelElm;
            break;
          }
        }
        dom = dom.parentNode ? dom.parentNode : false;
      }

      return scrollable;
    },
    onMouseWheel: function onMouseWheel(event) /* istanbul ignore next */{
      var duration = this.mergedOptions.vuescroll.wheelScrollDuration;
      var isReverse = this.mergedOptions.vuescroll.wheelDirectionReverse;

      var delta = 0;
      var dir = void 0;
      if (event.wheelDelta) {
        if (event.deltaY) {
          dir = 'dy';
          delta = event.deltaY;
        } else if (event.deltaX) {
          delta = event.deltaX;
          dir = 'dx';
        } else {
          delta = -1 * event.wheelDelta / 2;
        }
      } else if (event.detail) {
        // horizontal scroll
        if (event.axis == 1) {
          dir = 'dx';
        } else if (event.axis == 2) {
          // vertical scroll
          dir = 'dy';
        }
        delta = event.detail * 16;
      }

      if (event.shiftKey) {
        dir = 'dx';
      } else {
        dir = 'dy';
      }

      if (isReverse) {
        dir = dir == 'dx' ? 'dy' : 'dx';
      }

      if (this.checkScrollable(event, dir, delta)) {
        event.stopPropagation();
        event.preventDefault();

        this.scrollBy(defineProperty({}, dir, delta), duration);
      }
    }
  },
  computed: {
    scrollContentElm: function scrollContentElm() {
      return this.$refs['scrollContent']._isVue ? this.$refs['scrollContent'].$el : this.$refs['scrollContent'];
    }
  }
};

var update = [slideMix, nativeMix];

var mixins = [api$1].concat(toConsumableArray(update));

var core$1 = {
  mixins: mixins,
  mounted: function mounted() {
    if (!this._isDestroyed && !this.renderError) {
      if (this.mode == 'slide') {
        this.updatedCbs.push(this.updateScroller);
      }

      this.$watch('mergedOptions.vuescroll.scroller.disable', {
        sync: true,
        handler: function handler(newVal) {
          if (this.scroller) {
            this.scroller.__disable = newVal;
          }
        }
      });
    }
  },

  computed: {
    mode: function mode() {
      return this.mergedOptions.vuescroll.mode;
    }
  },
  methods: {
    destroy: function destroy() {
      if (this.destroyScroller) {
        this.scroller.stop();
        this.destroyScroller();
        this.destroyScroller = null;
      }

      /* istanbul ignore next */
      if (this.destroyResize) {
        this.destroyResize();
      }
    },
    handleScroll: function handleScroll(nativeEvent) {
      this.updateBarStateAndEmitEvent('handle-scroll', nativeEvent);
    },
    updateBarStateAndEmitEvent: function updateBarStateAndEmitEvent(eventType) {
      var nativeEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;

      if (this.mode == 'native') {
        this.updateNativeModeBarState();
      } else if (this.mode == 'slide') {
        /* istanbul ignore if */
        if (!this.scroller) {
          return;
        }

        this.updateSlideModeBarState();
      }
      if (eventType) {
        this.emitEvent(eventType, nativeEvent);
      }
      if (this.mergedOptions.bar.onlyShowBarOnScroll) {
        if (eventType == 'handle-scroll' || eventType == 'handle-resize' || eventType == 'refresh-status' || eventType == 'window-resize' || eventType == 'options-change') {
          this.showAndDefferedHideBar(true /* forceHideBar: true */);
        }
      } else {
        this.showAndDefferedHideBar();
      }
    },
    getScrollProcess: function getScrollProcess() {
      var _scrollPanelElm = this.scrollPanelElm,
          scrollHeight = _scrollPanelElm.scrollHeight,
          scrollWidth = _scrollPanelElm.scrollWidth,
          clientHeight = _scrollPanelElm.clientHeight,
          clientWidth = _scrollPanelElm.clientWidth,
          scrollTop = _scrollPanelElm.scrollTop,
          scrollLeft = _scrollPanelElm.scrollLeft;


      if (this.mode == 'slide') {
        scrollHeight = this.scroller.__contentHeight;
        scrollWidth = this.scroller.__contentWidth;
        scrollTop = this.scroller.__scrollTop;
        scrollLeft = this.scroller.__scrollLeft;
        clientHeight = this.$el.clientHeight;
        clientWidth = this.$el.clientWidth;
      }

      var v = Math.min(scrollTop / (scrollHeight - clientHeight || 1), 1);
      var h = Math.min(scrollLeft / (scrollWidth - clientWidth || 1), 1);

      return {
        v: v,
        h: h
      };
    },
    emitEvent: function emitEvent(eventType) {
      var nativeEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
      var _scrollPanelElm2 = this.scrollPanelElm,
          scrollTop = _scrollPanelElm2.scrollTop,
          scrollLeft = _scrollPanelElm2.scrollLeft;


      var vertical = {
        type: 'vertical'
      };
      var horizontal = {
        type: 'horizontal'
      };

      var _getScrollProcess = this.getScrollProcess(),
          v = _getScrollProcess.v,
          h = _getScrollProcess.h;

      vertical['process'] = v;
      horizontal['process'] = h;

      vertical['barSize'] = this.bar.vBar.state.size;
      horizontal['barSize'] = this.bar.hBar.state.size;
      vertical['scrollTop'] = scrollTop;
      horizontal['scrollLeft'] = scrollLeft;

      this.$emit(eventType, vertical, horizontal, nativeEvent);
    },
    initVariables: function initVariables() {
      this.lastMode = this.mode;
      this.$el._isVuescroll = true;
    },
    refreshMode: function refreshMode() {
      var initPos = void 0;
      if (this.scroller) {
        initPos = this.scroller.getValues();
      }

      if (this.destroyScroller) {
        this.scroller.stop();
        this.destroyScroller();
        this.destroyScroller = null;
      }

      if (this.mode == 'slide') {
        this.destroyScroller = this.registryScroller(initPos);
      } else if (this.mode == 'native') {
        // remove the legacy transform style attribute
        this.scrollPanelElm.style.transform = '';
        this.scrollPanelElm.style.transformOrigin = '';
      }
    },
    refreshInternalStatus: function refreshInternalStatus() {
      // 1.set vuescroll height or width according to
      // sizeStrategy
      this.setVsSize();
      // 2. registry resize event
      this.registryResize();
      // 3. registry scroller if mode is 'slide'
      // or remove 'transform origin' is the mode is not `slide`
      this.refreshMode();
      // 4. update scrollbar's height/width
      this.updateBarStateAndEmitEvent('refresh-status');
    },
    registryResize: function registryResize() {
      var _this = this;

      var resizeEnable = this.mergedOptions.vuescroll.detectResize;
      var modeChanged = false;

      if (this.lastMode != this.mode) {
        modeChanged = true;
        this.lastMode = this.mode;
      }

      /* istanbul ignore next */
      if (this.destroyResize && resizeEnable && !modeChanged) {
        return;
      }

      if (this.destroyResize) {
        this.destroyResize();
      }

      if (!resizeEnable) {
        return;
      }

      var contentElm = null;
      if (this.mode == 'slide') {
        contentElm = this.scrollPanelElm;
      } else if (this.mode == 'native') {
        // scrollContent maybe a vue-component or a pure-dom
        contentElm = this.scrollContentElm;
      }

      var vm = this;
      var handleWindowResize = function handleWindowResize() /* istanbul ignore next */{
        vm.updateBarStateAndEmitEvent('window-resize');
        if (vm.mode == 'slide') {
          vm.updatedCbs.push(vm.updateScroller);
          vm.$forceUpdate();
        }
      };

      var handleDomResize = function handleDomResize() {
        var currentSize = {};
        if (_this.mode == 'slide') {
          currentSize['width'] = _this.scroller.__contentWidth;
          currentSize['height'] = _this.scroller.__contentHeight;
          _this.updateBarStateAndEmitEvent('handle-resize', currentSize);
          // update scroller should after rendering
          _this.updatedCbs.push(_this.updateScroller);
          _this.$forceUpdate();
        } else if (_this.mode == 'native') {
          currentSize['width'] = _this.scrollPanelElm.scrollWidth;
          currentSize['height'] = _this.scrollPanelElm.scrollHeight;
          _this.updateBarStateAndEmitEvent('handle-resize', currentSize);
        }

        // Since content sie changes, we should tell parent to set
        // correct size to fit content's size
        _this.setVsSize();
      };
      window.addEventListener('resize', handleWindowResize, false);

      var destroyDomResize = installResizeDetection(contentElm, handleDomResize);

      var destroyWindowResize = function destroyWindowResize() {
        window.removeEventListener('resize', handleWindowResize, false);
      };

      this.destroyResize = function () {
        destroyWindowResize();
        destroyDomResize();

        _this.destroyResize = null;
      };
    },
    getPosition: function getPosition() {
      if (this.mode == 'slide') {
        return this.getSlidePosition();
      } else if (this.mode == 'native') {
        return this.getNativePosition();
      }
    }
  }
};

/**
 * The slide mode config
 */
var config = {
  // vuescroll
  vuescroll: {
    // position or transform
    renderMethod: 'transform',
    // pullRefresh or pushLoad is only for the slide mode...
    pullRefresh: {
      enable: false,
      tips: {
        deactive: 'Pull to Refresh',
        active: 'Release to Refresh',
        start: 'Refreshing...',
        beforeDeactive: 'Refresh Successfully!'
      }
    },
    pushLoad: {
      enable: false,
      tips: {
        deactive: 'Push to Load',
        active: 'Release to Load',
        start: 'Loading...',
        beforeDeactive: 'Load Successfully!'
      },
      auto: false,
      autoLoadDistance: 0
    },
    paging: false,
    zooming: true,
    snapping: {
      enable: false,
      width: 100,
      height: 100
    },
    /* some scroller options */
    scroller: {
      /** Enable bouncing (content can be slowly moved outside and jumps back after releasing) */
      bouncing: {
        top: 100,
        bottom: 100,
        left: 100,
        right: 100
      },
      /** Enable locking to the main axis if user moves only slightly on one of them at start */
      locking: true,
      /** Minimum zoom level */
      minZoom: 0.5,
      /** Maximum zoom level */
      maxZoom: 3,
      /** Multiply or decrease scrolling speed **/
      speedMultiplier: 1,
      /** This configures the amount of change applied to deceleration when reaching boundaries  **/
      penetrationDeceleration: 0.03,
      /** This configures the amount of change applied to acceleration when reaching boundaries  **/
      penetrationAcceleration: 0.08,
      /** Whether call e.preventDefault event when sliding the content or not */
      preventDefault: false,
      /** Whether call preventDefault when (mouse/touch)move*/
      preventDefaultOnMove: true,
      disable: false
    }
  }
};
/**
 * validate the options
 * @export
 * @param {any} ops
 */
function configValidator(ops) {
  var renderError = false;
  var vuescroll = ops.vuescroll;

  // validate pushLoad, pullReresh, snapping

  if (vuescroll.paging == vuescroll.snapping.enable && vuescroll.paging && (vuescroll.pullRefresh || vuescroll.pushLoad)) {
    error('paging, snapping, (pullRefresh with pushLoad) can only one of them to be true.');
  }

  return renderError;
}

var config$1 = {
  vuescroll: {
    wheelScrollDuration: 0,
    wheelDirectionReverse: false
  }
};

var config$2 = {
  // vuescroll
  vuescroll: {
    mode: 'native'
  }
};
/**
 * validate the options
 * @export
 * @param {any} ops
 */
function configValidator$1(ops) {
  var renderError = false;
  var vuescroll = ops.vuescroll;

  // validate modes

  if (!~modes.indexOf(vuescroll.mode)) {
    error('Unknown mode: ' + vuescroll.mode + ',the vuescroll\'s option "mode" should be one of the ' + modes);
    renderError = true;
  }

  return renderError;
}

var configs = [config$2, config, config$1];
var configValidators = [configValidator$1, configValidator];

var component = _install(core$1, createPanel$2, configs, configValidators);

function install(Vue$$1) {
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

  Vue$$1.component(opts.name || component.name, component);
  Vue$$1.prototype.$vuescrollConfig = opts.ops || {};
}

var Vuescroll = _extends({
  install: install,
  version: '4.16.1',
  refreshAll: refreshAll,
  scrollTo: scrollTo
}, component);

/* istanbul ignore if */
if (typeof window !== 'undefined' && window.Vue) {
  window.Vue.use(Vuescroll);
}

return Vuescroll;

})));


/***/ }),
/* 62 */
/***/ (function(module, exports) {

module.exports = __WEBPACK_EXTERNAL_MODULE__62__;

/***/ }),
/* 63 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var forEach                 = __webpack_require__(64).forEach;
var elementUtilsMaker       = __webpack_require__(65);
var listenerHandlerMaker    = __webpack_require__(66);
var idGeneratorMaker        = __webpack_require__(67);
var idHandlerMaker          = __webpack_require__(68);
var reporterMaker           = __webpack_require__(69);
var browserDetector         = __webpack_require__(70);
var batchProcessorMaker     = __webpack_require__(71);
var stateHandler            = __webpack_require__(73);

//Detection strategies.
var objectStrategyMaker     = __webpack_require__(74);
var scrollStrategyMaker     = __webpack_require__(75);

function isCollection(obj) {
    return Array.isArray(obj) || obj.length !== undefined;
}

function toArray(collection) {
    if (!Array.isArray(collection)) {
        var array = [];
        forEach(collection, function (obj) {
            array.push(obj);
        });
        return array;
    } else {
        return collection;
    }
}

function isElement(obj) {
    return obj && obj.nodeType === 1;
}

/**
 * @typedef idHandler
 * @type {object}
 * @property {function} get Gets the resize detector id of the element.
 * @property {function} set Generate and sets the resize detector id of the element.
 */

/**
 * @typedef Options
 * @type {object}
 * @property {boolean} callOnAdd    Determines if listeners should be called when they are getting added.
                                    Default is true. If true, the listener is guaranteed to be called when it has been added.
                                    If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).
 * @property {idHandler} idHandler  A custom id handler that is responsible for generating, setting and retrieving id's for elements.
                                    If not provided, a default id handler will be used.
 * @property {reporter} reporter    A custom reporter that handles reporting logs, warnings and errors.
                                    If not provided, a default id handler will be used.
                                    If set to false, then nothing will be reported.
 * @property {boolean} debug        If set to true, the the system will report debug messages as default for the listenTo method.
 */

/**
 * Creates an element resize detector instance.
 * @public
 * @param {Options?} options Optional global options object that will decide how this instance will work.
 */
module.exports = function(options) {
    options = options || {};

    //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.
    var idHandler;

    if (options.idHandler) {
        // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler
        // so that readonly flag always is true when it's used here. This may be removed next major version bump.
        idHandler = {
            get: function (element) { return options.idHandler.get(element, true); },
            set: options.idHandler.set
        };
    } else {
        var idGenerator = idGeneratorMaker();
        var defaultIdHandler = idHandlerMaker({
            idGenerator: idGenerator,
            stateHandler: stateHandler
        });
        idHandler = defaultIdHandler;
    }

    //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.
    var reporter = options.reporter;

    if(!reporter) {
        //If options.reporter is false, then the reporter should be quiet.
        var quiet = reporter === false;
        reporter = reporterMaker(quiet);
    }

    //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.
    var batchProcessor = getOption(options, "batchProcessor", batchProcessorMaker({ reporter: reporter }));

    //Options to be used as default for the listenTo function.
    var globalOptions = {};
    globalOptions.callOnAdd     = !!getOption(options, "callOnAdd", true);
    globalOptions.debug         = !!getOption(options, "debug", false);

    var eventListenerHandler    = listenerHandlerMaker(idHandler);
    var elementUtils            = elementUtilsMaker({
        stateHandler: stateHandler
    });

    //The detection strategy to be used.
    var detectionStrategy;
    var desiredStrategy = getOption(options, "strategy", "object");
    var importantCssRules = getOption(options, "important", false);
    var strategyOptions = {
        reporter: reporter,
        batchProcessor: batchProcessor,
        stateHandler: stateHandler,
        idHandler: idHandler,
        important: importantCssRules
    };

    if(desiredStrategy === "scroll") {
        if (browserDetector.isLegacyOpera()) {
            reporter.warn("Scroll strategy is not supported on legacy Opera. Changing to object strategy.");
            desiredStrategy = "object";
        } else if (browserDetector.isIE(9)) {
            reporter.warn("Scroll strategy is not supported on IE9. Changing to object strategy.");
            desiredStrategy = "object";
        }
    }

    if(desiredStrategy === "scroll") {
        detectionStrategy = scrollStrategyMaker(strategyOptions);
    } else if(desiredStrategy === "object") {
        detectionStrategy = objectStrategyMaker(strategyOptions);
    } else {
        throw new Error("Invalid strategy name: " + desiredStrategy);
    }

    //Calls can be made to listenTo with elements that are still being installed.
    //Also, same elements can occur in the elements list in the listenTo function.
    //With this map, the ready callbacks can be synchronized between the calls
    //so that the ready callback can always be called when an element is ready - even if
    //it wasn't installed from the function itself.
    var onReadyCallbacks = {};

    /**
     * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.
     * @public
     * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.
     * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.
     * @param {function} listener The callback to be executed for each resize event for each element.
     */
    function listenTo(options, elements, listener) {
        function onResizeCallback(element) {
            var listeners = eventListenerHandler.get(element);
            forEach(listeners, function callListenerProxy(listener) {
                listener(element);
            });
        }

        function addListener(callOnAdd, element, listener) {
            eventListenerHandler.add(element, listener);

            if(callOnAdd) {
                listener(element);
            }
        }

        //Options object may be omitted.
        if(!listener) {
            listener = elements;
            elements = options;
            options = {};
        }

        if(!elements) {
            throw new Error("At least one element required.");
        }

        if(!listener) {
            throw new Error("Listener required.");
        }

        if (isElement(elements)) {
            // A single element has been passed in.
            elements = [elements];
        } else if (isCollection(elements)) {
            // Convert collection to array for plugins.
            // TODO: May want to check so that all the elements in the collection are valid elements.
            elements = toArray(elements);
        } else {
            return reporter.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");
        }

        var elementsReady = 0;

        var callOnAdd = getOption(options, "callOnAdd", globalOptions.callOnAdd);
        var onReadyCallback = getOption(options, "onReady", function noop() {});
        var debug = getOption(options, "debug", globalOptions.debug);

        forEach(elements, function attachListenerToElement(element) {
            if (!stateHandler.getState(element)) {
                stateHandler.initState(element);
                idHandler.set(element);
            }

            var id = idHandler.get(element);

            debug && reporter.log("Attaching listener to element", id, element);

            if(!elementUtils.isDetectable(element)) {
                debug && reporter.log(id, "Not detectable.");
                if(elementUtils.isBusy(element)) {
                    debug && reporter.log(id, "System busy making it detectable");

                    //The element is being prepared to be detectable. Do not make it detectable.
                    //Just add the listener, because the element will soon be detectable.
                    addListener(callOnAdd, element, listener);
                    onReadyCallbacks[id] = onReadyCallbacks[id] || [];
                    onReadyCallbacks[id].push(function onReady() {
                        elementsReady++;

                        if(elementsReady === elements.length) {
                            onReadyCallback();
                        }
                    });
                    return;
                }

                debug && reporter.log(id, "Making detectable...");
                //The element is not prepared to be detectable, so do prepare it and add a listener to it.
                elementUtils.markBusy(element, true);
                return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {
                    debug && reporter.log(id, "onElementDetectable");

                    if (stateHandler.getState(element)) {
                        elementUtils.markAsDetectable(element);
                        elementUtils.markBusy(element, false);
                        detectionStrategy.addListener(element, onResizeCallback);
                        addListener(callOnAdd, element, listener);

                        // Since the element size might have changed since the call to "listenTo", we need to check for this change,
                        // so that a resize event may be emitted.
                        // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.
                        // Also, check the state existance before since the element may have been uninstalled in the installation process.
                        var state = stateHandler.getState(element);
                        if (state && state.startSize) {
                            var width = element.offsetWidth;
                            var height = element.offsetHeight;
                            if (state.startSize.width !== width || state.startSize.height !== height) {
                                onResizeCallback(element);
                            }
                        }

                        if(onReadyCallbacks[id]) {
                            forEach(onReadyCallbacks[id], function(callback) {
                                callback();
                            });
                        }
                    } else {
                        // The element has been unisntalled before being detectable.
                        debug && reporter.log(id, "Element uninstalled before being detectable.");
                    }

                    delete onReadyCallbacks[id];

                    elementsReady++;
                    if(elementsReady === elements.length) {
                        onReadyCallback();
                    }
                });
            }

            debug && reporter.log(id, "Already detecable, adding listener.");

            //The element has been prepared to be detectable and is ready to be listened to.
            addListener(callOnAdd, element, listener);
            elementsReady++;
        });

        if(elementsReady === elements.length) {
            onReadyCallback();
        }
    }

    function uninstall(elements) {
        if(!elements) {
            return reporter.error("At least one element is required.");
        }

        if (isElement(elements)) {
            // A single element has been passed in.
            elements = [elements];
        } else if (isCollection(elements)) {
            // Convert collection to array for plugins.
            // TODO: May want to check so that all the elements in the collection are valid elements.
            elements = toArray(elements);
        } else {
            return reporter.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");
        }

        forEach(elements, function (element) {
            eventListenerHandler.removeAllListeners(element);
            detectionStrategy.uninstall(element);
            stateHandler.cleanState(element);
        });
    }

    function initDocument(targetDocument) {
        detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);
    }

    return {
        listenTo: listenTo,
        removeListener: eventListenerHandler.removeListener,
        removeAllListeners: eventListenerHandler.removeAllListeners,
        uninstall: uninstall,
        initDocument: initDocument
    };
};

function getOption(options, name, defaultValue) {
    var value = options[name];

    if((value === undefined || value === null) && defaultValue !== undefined) {
        return defaultValue;
    }

    return value;
}


/***/ }),
/* 64 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var utils = module.exports = {};

/**
 * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.
 * @public
 * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.
 * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.
 * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.
 */
utils.forEach = function(collection, callback) {
    for(var i = 0; i < collection.length; i++) {
        var result = callback(collection[i]);
        if(result) {
            return result;
        }
    }
};


/***/ }),
/* 65 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = function(options) {
    var getState = options.stateHandler.getState;

    /**
     * Tells if the element has been made detectable and ready to be listened for resize events.
     * @public
     * @param {element} The element to check.
     * @returns {boolean} True or false depending on if the element is detectable or not.
     */
    function isDetectable(element) {
        var state = getState(element);
        return state && !!state.isDetectable;
    }

    /**
     * Marks the element that it has been made detectable and ready to be listened for resize events.
     * @public
     * @param {element} The element to mark.
     */
    function markAsDetectable(element) {
        getState(element).isDetectable = true;
    }

    /**
     * Tells if the element is busy or not.
     * @public
     * @param {element} The element to check.
     * @returns {boolean} True or false depending on if the element is busy or not.
     */
    function isBusy(element) {
        return !!getState(element).busy;
    }

    /**
     * Marks the object is busy and should not be made detectable.
     * @public
     * @param {element} element The element to mark.
     * @param {boolean} busy If the element is busy or not.
     */
    function markBusy(element, busy) {
        getState(element).busy = !!busy;
    }

    return {
        isDetectable: isDetectable,
        markAsDetectable: markAsDetectable,
        isBusy: isBusy,
        markBusy: markBusy
    };
};


/***/ }),
/* 66 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = function(idHandler) {
    var eventListeners = {};

    /**
     * Gets all listeners for the given element.
     * @public
     * @param {element} element The element to get all listeners for.
     * @returns All listeners for the given element.
     */
    function getListeners(element) {
        var id = idHandler.get(element);

        if (id === undefined) {
            return [];
        }

        return eventListeners[id] || [];
    }

    /**
     * Stores the given listener for the given element. Will not actually add the listener to the element.
     * @public
     * @param {element} element The element that should have the listener added.
     * @param {function} listener The callback that the element has added.
     */
    function addListener(element, listener) {
        var id = idHandler.get(element);

        if(!eventListeners[id]) {
            eventListeners[id] = [];
        }

        eventListeners[id].push(listener);
    }

    function removeListener(element, listener) {
        var listeners = getListeners(element);
        for (var i = 0, len = listeners.length; i < len; ++i) {
            if (listeners[i] === listener) {
              listeners.splice(i, 1);
              break;
            }
        }
    }

    function removeAllListeners(element) {
      var listeners = getListeners(element);
      if (!listeners) { return; }
      listeners.length = 0;
    }

    return {
        get: getListeners,
        add: addListener,
        removeListener: removeListener,
        removeAllListeners: removeAllListeners
    };
};


/***/ }),
/* 67 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = function() {
    var idCount = 1;

    /**
     * Generates a new unique id in the context.
     * @public
     * @returns {number} A unique id in the context.
     */
    function generate() {
        return idCount++;
    }

    return {
        generate: generate
    };
};


/***/ }),
/* 68 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


module.exports = function(options) {
    var idGenerator     = options.idGenerator;
    var getState        = options.stateHandler.getState;

    /**
     * Gets the resize detector id of the element.
     * @public
     * @param {element} element The target element to get the id of.
     * @returns {string|number|null} The id of the element. Null if it has no id.
     */
    function getId(element) {
        var state = getState(element);

        if (state && state.id !== undefined) {
            return state.id;
        }

        return null;
    }

    /**
     * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.
     * @public
     * @param {element} element The target element to set the id of.
     * @returns {string|number|null} The id of the element.
     */
    function setId(element) {
        var state = getState(element);

        if (!state) {
            throw new Error("setId required the element to have a resize detection state.");
        }

        var id = idGenerator.generate();

        state.id = id;

        return id;
    }

    return {
        get: getId,
        set: setId
    };
};


/***/ }),
/* 69 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


/* global console: false */

/**
 * Reporter that handles the reporting of logs, warnings and errors.
 * @public
 * @param {boolean} quiet Tells if the reporter should be quiet or not.
 */
module.exports = function(quiet) {
    function noop() {
        //Does nothing.
    }

    var reporter = {
        log: noop,
        warn: noop,
        error: noop
    };

    if(!quiet && window.console) {
        var attachFunction = function(reporter, name) {
            //The proxy is needed to be able to call the method with the console context,
            //since we cannot use bind.
            reporter[name] = function reporterProxy() {
                var f = console[name];
                if (f.apply) { //IE9 does not support console.log.apply :)
                    f.apply(console, arguments);
                } else {
                    for (var i = 0; i < arguments.length; i++) {
                        f(arguments[i]);
                    }
                }
            };
        };

        attachFunction(reporter, "log");
        attachFunction(reporter, "warn");
        attachFunction(reporter, "error");
    }

    return reporter;
};

/***/ }),
/* 70 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var detector = module.exports = {};

detector.isIE = function(version) {
    function isAnyIeVersion() {
        var agent = navigator.userAgent.toLowerCase();
        return agent.indexOf("msie") !== -1 || agent.indexOf("trident") !== -1 || agent.indexOf(" edge/") !== -1;
    }

    if(!isAnyIeVersion()) {
        return false;
    }

    if(!version) {
        return true;
    }

    //Shamelessly stolen from https://gist.github.com/padolsey/527683
    var ieVersion = (function(){
        var undef,
            v = 3,
            div = document.createElement("div"),
            all = div.getElementsByTagName("i");

        do {
            div.innerHTML = "<!--[if gt IE " + (++v) + "]><i></i><![endif]-->";
        }
        while (all[0]);

        return v > 4 ? v : undef;
    }());

    return version === ieVersion;
};

detector.isLegacyOpera = function() {
    return !!window.opera;
};


/***/ }),
/* 71 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var utils = __webpack_require__(72);

module.exports = function batchProcessorMaker(options) {
    options             = options || {};
    var reporter        = options.reporter;
    var asyncProcess    = utils.getOption(options, "async", true);
    var autoProcess     = utils.getOption(options, "auto", true);

    if(autoProcess && !asyncProcess) {
        reporter && reporter.warn("Invalid options combination. auto=true and async=false is invalid. Setting async=true.");
        asyncProcess = true;
    }

    var batch = Batch();
    var asyncFrameHandler;
    var isProcessing = false;

    function addFunction(level, fn) {
        if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {
            // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.
            // This needs to be done before, since we're checking the size of the batch to be 0.
            processBatchAsync();
        }

        batch.add(level, fn);
    }

    function processBatch() {
        // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.
        // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).
        isProcessing = true;
        while (batch.size()) {
            var processingBatch = batch;
            batch = Batch();
            processingBatch.process();
        }
        isProcessing = false;
    }

    function forceProcessBatch(localAsyncProcess) {
        if (isProcessing) {
            return;
        }

        if(localAsyncProcess === undefined) {
            localAsyncProcess = asyncProcess;
        }

        if(asyncFrameHandler) {
            cancelFrame(asyncFrameHandler);
            asyncFrameHandler = null;
        }

        if(localAsyncProcess) {
            processBatchAsync();
        } else {
            processBatch();
        }
    }

    function processBatchAsync() {
        asyncFrameHandler = requestFrame(processBatch);
    }

    function clearBatch() {
        batch           = {};
        batchSize       = 0;
        topLevel        = 0;
        bottomLevel     = 0;
    }

    function cancelFrame(listener) {
        // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;
        var cancel = clearTimeout;
        return cancel(listener);
    }

    function requestFrame(callback) {
        // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };
        var raf = function(fn) { return setTimeout(fn, 0); };
        return raf(callback);
    }

    return {
        add: addFunction,
        force: forceProcessBatch
    };
};

function Batch() {
    var batch       = {};
    var size        = 0;
    var topLevel    = 0;
    var bottomLevel = 0;

    function add(level, fn) {
        if(!fn) {
            fn = level;
            level = 0;
        }

        if(level > topLevel) {
            topLevel = level;
        } else if(level < bottomLevel) {
            bottomLevel = level;
        }

        if(!batch[level]) {
            batch[level] = [];
        }

        batch[level].push(fn);
        size++;
    }

    function process() {
        for(var level = bottomLevel; level <= topLevel; level++) {
            var fns = batch[level];

            for(var i = 0; i < fns.length; i++) {
                var fn = fns[i];
                fn();
            }
        }
    }

    function getSize() {
        return size;
    }

    return {
        add: add,
        process: process,
        size: getSize
    };
}


/***/ }),
/* 72 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var utils = module.exports = {};

utils.getOption = getOption;

function getOption(options, name, defaultValue) {
    var value = options[name];

    if((value === undefined || value === null) && defaultValue !== undefined) {
        return defaultValue;
    }

    return value;
}


/***/ }),
/* 73 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var prop = "_erd";

function initState(element) {
    element[prop] = {};
    return getState(element);
}

function getState(element) {
    return element[prop];
}

function cleanState(element) {
    delete element[prop];
}

module.exports = {
    initState: initState,
    getState: getState,
    cleanState: cleanState
};


/***/ }),
/* 74 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/**
 * Resize detection strategy that injects objects to elements in order to detect resize events.
 * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/
 */



var browserDetector = __webpack_require__(70);

module.exports = function(options) {
    options             = options || {};
    var reporter        = options.reporter;
    var batchProcessor  = options.batchProcessor;
    var getState        = options.stateHandler.getState;

    if(!reporter) {
        throw new Error("Missing required dependency: reporter.");
    }

    /**
     * Adds a resize event listener to the element.
     * @public
     * @param {element} element The element that should have the listener added.
     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.
     */
    function addListener(element, listener) {
        function listenerProxy() {
            listener(element);
        }

        if(browserDetector.isIE(8)) {
            //IE 8 does not support object, but supports the resize event directly on elements.
            getState(element).object = {
                proxy: listenerProxy
            };
            element.attachEvent("onresize", listenerProxy);
        } else {
            var object = getObject(element);

            if(!object) {
                throw new Error("Element is not detectable by this strategy.");
            }

            object.contentDocument.defaultView.addEventListener("resize", listenerProxy);
        }
    }

    function buildCssTextString(rules) {
        var seperator = options.important ? " !important; " : "; ";

        return (rules.join(seperator) + seperator).trim();
    }

    /**
     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.
     * @private
     * @param {object} options Optional options object.
     * @param {element} element The element to make detectable
     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.
     */
    function makeDetectable(options, element, callback) {
        if (!callback) {
            callback = element;
            element = options;
            options = null;
        }

        options = options || {};
        var debug = options.debug;

        function injectObject(element, callback) {
            var OBJECT_STYLE = buildCssTextString(["display: block", "position: absolute", "top: 0", "left: 0", "width: 100%", "height: 100%", "border: none", "padding: 0", "margin: 0", "opacity: 0", "z-index: -1000", "pointer-events: none"]);

            //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.

            // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.
            var positionCheckPerformed = false;

            // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.
            // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.
            var style = window.getComputedStyle(element);
            var width = element.offsetWidth;
            var height = element.offsetHeight;

            getState(element).startSize = {
                width: width,
                height: height
            };

            function mutateDom() {
                function alterPositionStyles() {
                    if(style.position === "static") {
                        element.style.setProperty("position", "relative", options.important ? "important" : "");

                        var removeRelativeStyles = function(reporter, element, style, property) {
                            function getNumericalValue(value) {
                                return value.replace(/[^-\d\.]/g, "");
                            }

                            var value = style[property];

                            if(value !== "auto" && getNumericalValue(value) !== "0") {
                                reporter.warn("An element that is positioned static has style." + property + "=" + value + " which is ignored due to the static positioning. The element will need to be positioned relative, so the style." + property + " will be set to 0. Element: ", element);
                                element.style.setProperty(property, "0", options.important ? "important" : "");
                            }
                        };

                        //Check so that there are no accidental styles that will make the element styled differently now that is is relative.
                        //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).
                        removeRelativeStyles(reporter, element, style, "top");
                        removeRelativeStyles(reporter, element, style, "right");
                        removeRelativeStyles(reporter, element, style, "bottom");
                        removeRelativeStyles(reporter, element, style, "left");
                    }
                }

                function onObjectLoad() {
                    // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.
                    if (!positionCheckPerformed) {
                        alterPositionStyles();
                    }

                    /*jshint validthis: true */

                    function getDocument(element, callback) {
                        //Opera 12 seem to call the object.onload before the actual document has been created.
                        //So if it is not present, poll it with an timeout until it is present.
                        //TODO: Could maybe be handled better with object.onreadystatechange or similar.
                        if(!element.contentDocument) {
                            var state = getState(element);
                            if (state.checkForObjectDocumentTimeoutId) {
                                window.clearTimeout(state.checkForObjectDocumentTimeoutId);
                            }
                            state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {
                                state.checkForObjectDocumentTimeoutId = 0;
                                getDocument(element, callback);
                            }, 100);

                            return;
                        }

                        callback(element.contentDocument);
                    }

                    //Mutating the object element here seems to fire another load event.
                    //Mutating the inner document of the object element is fine though.
                    var objectElement = this;

                    //Create the style element to be added to the object.
                    getDocument(objectElement, function onObjectDocumentReady(objectDocument) {
                        //Notify that the element is ready to be listened to.
                        callback(element);
                    });
                }

                // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.
                // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.
                if (style.position !== "") {
                    alterPositionStyles(style);
                    positionCheckPerformed = true;
                }

                //Add an object element as a child to the target element that will be listened to for resize events.
                var object = document.createElement("object");
                object.style.cssText = OBJECT_STYLE;
                object.tabIndex = -1;
                object.type = "text/html";
                object.setAttribute("aria-hidden", "true");
                object.onload = onObjectLoad;

                //Safari: This must occur before adding the object to the DOM.
                //IE: Does not like that this happens before, even if it is also added after.
                if(!browserDetector.isIE()) {
                    object.data = "about:blank";
                }

                if (!getState(element)) {
                    // The element has been uninstalled before the actual loading happened.
                    return;
                }

                element.appendChild(object);
                getState(element).object = object;

                //IE: This must occur after adding the object to the DOM.
                if(browserDetector.isIE()) {
                    object.data = "about:blank";
                }
            }

            if(batchProcessor) {
                batchProcessor.add(mutateDom);
            } else {
                mutateDom();
            }
        }

        if(browserDetector.isIE(8)) {
            //IE 8 does not support objects properly. Luckily they do support the resize event.
            //So do not inject the object and notify that the element is already ready to be listened to.
            //The event handler for the resize event is attached in the utils.addListener instead.
            callback(element);
        } else {
            injectObject(element, callback);
        }
    }

    /**
     * Returns the child object of the target element.
     * @private
     * @param {element} element The target element.
     * @returns The object element of the target.
     */
    function getObject(element) {
        return getState(element).object;
    }

    function uninstall(element) {
        if (!getState(element)) {
            return;
        }

        var object = getObject(element);

        if (!object) {
            return;
        }

        if (browserDetector.isIE(8)) {
            element.detachEvent("onresize", object.proxy);
        } else {
            element.removeChild(object);
        }

        if (getState(element).checkForObjectDocumentTimeoutId) {
            window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);
        }

        delete getState(element).object;
    }

    return {
        makeDetectable: makeDetectable,
        addListener: addListener,
        uninstall: uninstall
    };
};


/***/ }),
/* 75 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
/**
 * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.
 * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js
 */



var forEach = __webpack_require__(64).forEach;

module.exports = function(options) {
    options             = options || {};
    var reporter        = options.reporter;
    var batchProcessor  = options.batchProcessor;
    var getState        = options.stateHandler.getState;
    var hasState        = options.stateHandler.hasState;
    var idHandler       = options.idHandler;

    if (!batchProcessor) {
        throw new Error("Missing required dependency: batchProcessor");
    }

    if (!reporter) {
        throw new Error("Missing required dependency: reporter.");
    }

    //TODO: Could this perhaps be done at installation time?
    var scrollbarSizes = getScrollbarSizes();

    var styleId = "erd_scroll_detection_scrollbar_style";
    var detectionContainerClass = "erd_scroll_detection_container";

    function initDocument(targetDocument) {
        // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.
        // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).
        injectScrollStyle(targetDocument, styleId, detectionContainerClass);
    }

    initDocument(window.document);

    function buildCssTextString(rules) {
        var seperator = options.important ? " !important; " : "; ";

        return (rules.join(seperator) + seperator).trim();
    }

    function getScrollbarSizes() {
        var width = 500;
        var height = 500;

        var child = document.createElement("div");
        child.style.cssText = buildCssTextString(["position: absolute", "width: " + width*2 + "px", "height: " + height*2 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);

        var container = document.createElement("div");
        container.style.cssText = buildCssTextString(["position: absolute", "width: " + width + "px", "height: " + height + "px", "overflow: scroll", "visibility: none", "top: " + -width*3 + "px", "left: " + -height*3 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);

        container.appendChild(child);

        document.body.insertBefore(container, document.body.firstChild);

        var widthSize = width - container.clientWidth;
        var heightSize = height - container.clientHeight;

        document.body.removeChild(container);

        return {
            width: widthSize,
            height: heightSize
        };
    }

    function injectScrollStyle(targetDocument, styleId, containerClass) {
        function injectStyle(style, method) {
            method = method || function (element) {
                targetDocument.head.appendChild(element);
            };

            var styleElement = targetDocument.createElement("style");
            styleElement.innerHTML = style;
            styleElement.id = styleId;
            method(styleElement);
            return styleElement;
        }

        if (!targetDocument.getElementById(styleId)) {
            var containerAnimationClass = containerClass + "_animation";
            var containerAnimationActiveClass = containerClass + "_animation_active";
            var style = "/* Created by the element-resize-detector library. */\n";
            style += "." + containerClass + " > div::-webkit-scrollbar { " + buildCssTextString(["display: none"]) + " }\n\n";
            style += "." + containerAnimationActiveClass + " { " + buildCssTextString(["-webkit-animation-duration: 0.1s", "animation-duration: 0.1s", "-webkit-animation-name: " + containerAnimationClass, "animation-name: " + containerAnimationClass]) + " }\n";
            style += "@-webkit-keyframes " + containerAnimationClass +  " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n";
            style += "@keyframes " + containerAnimationClass +          " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }";
            injectStyle(style);
        }
    }

    function addAnimationClass(element) {
        element.className += " " + detectionContainerClass + "_animation_active";
    }

    function addEvent(el, name, cb) {
        if (el.addEventListener) {
            el.addEventListener(name, cb);
        } else if(el.attachEvent) {
            el.attachEvent("on" + name, cb);
        } else {
            return reporter.error("[scroll] Don't know how to add event listeners.");
        }
    }

    function removeEvent(el, name, cb) {
        if (el.removeEventListener) {
            el.removeEventListener(name, cb);
        } else if(el.detachEvent) {
            el.detachEvent("on" + name, cb);
        } else {
            return reporter.error("[scroll] Don't know how to remove event listeners.");
        }
    }

    function getExpandElement(element) {
        return getState(element).container.childNodes[0].childNodes[0].childNodes[0];
    }

    function getShrinkElement(element) {
        return getState(element).container.childNodes[0].childNodes[0].childNodes[1];
    }

    /**
     * Adds a resize event listener to the element.
     * @public
     * @param {element} element The element that should have the listener added.
     * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.
     */
    function addListener(element, listener) {
        var listeners = getState(element).listeners;

        if (!listeners.push) {
            throw new Error("Cannot add listener to an element that is not detectable.");
        }

        getState(element).listeners.push(listener);
    }

    /**
     * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.
     * @private
     * @param {object} options Optional options object.
     * @param {element} element The element to make detectable
     * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.
     */
    function makeDetectable(options, element, callback) {
        if (!callback) {
            callback = element;
            element = options;
            options = null;
        }

        options = options || {};

        function debug() {
            if (options.debug) {
                var args = Array.prototype.slice.call(arguments);
                args.unshift(idHandler.get(element), "Scroll: ");
                if (reporter.log.apply) {
                    reporter.log.apply(null, args);
                } else {
                    for (var i = 0; i < args.length; i++) {
                        reporter.log(args[i]);
                    }
                }
            }
        }

        function isDetached(element) {
            function isInDocument(element) {
                return element === element.ownerDocument.body || element.ownerDocument.body.contains(element);
            }

            if (!isInDocument(element)) {
                return true;
            }

            // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520
            if (window.getComputedStyle(element) === null) {
                return true;
            }

            return false;
        }

        function isUnrendered(element) {
            // Check the absolute positioned container since the top level container is display: inline.
            var container = getState(element).container.childNodes[0];
            var style = window.getComputedStyle(container);
            return !style.width || style.width.indexOf("px") === -1; //Can only compute pixel value when rendered.
        }

        function getStyle() {
            // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,
            // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).
            var elementStyle            = window.getComputedStyle(element);
            var style                   = {};
            style.position              = elementStyle.position;
            style.width                 = element.offsetWidth;
            style.height                = element.offsetHeight;
            style.top                   = elementStyle.top;
            style.right                 = elementStyle.right;
            style.bottom                = elementStyle.bottom;
            style.left                  = elementStyle.left;
            style.widthCSS              = elementStyle.width;
            style.heightCSS             = elementStyle.height;
            return style;
        }

        function storeStartSize() {
            var style = getStyle();
            getState(element).startSize = {
                width: style.width,
                height: style.height
            };
            debug("Element start size", getState(element).startSize);
        }

        function initListeners() {
            getState(element).listeners = [];
        }

        function storeStyle() {
            debug("storeStyle invoked.");
            if (!getState(element)) {
                debug("Aborting because element has been uninstalled");
                return;
            }

            var style = getStyle();
            getState(element).style = style;
        }

        function storeCurrentSize(element, width, height) {
            getState(element).lastWidth = width;
            getState(element).lastHeight  = height;
        }

        function getExpandChildElement(element) {
            return getExpandElement(element).childNodes[0];
        }

        function getWidthOffset() {
            return 2 * scrollbarSizes.width + 1;
        }

        function getHeightOffset() {
            return 2 * scrollbarSizes.height + 1;
        }

        function getExpandWidth(width) {
            return width + 10 + getWidthOffset();
        }

        function getExpandHeight(height) {
            return height + 10 + getHeightOffset();
        }

        function getShrinkWidth(width) {
            return width * 2 + getWidthOffset();
        }

        function getShrinkHeight(height) {
            return height * 2 + getHeightOffset();
        }

        function positionScrollbars(element, width, height) {
            var expand          = getExpandElement(element);
            var shrink          = getShrinkElement(element);
            var expandWidth     = getExpandWidth(width);
            var expandHeight    = getExpandHeight(height);
            var shrinkWidth     = getShrinkWidth(width);
            var shrinkHeight    = getShrinkHeight(height);
            expand.scrollLeft   = expandWidth;
            expand.scrollTop    = expandHeight;
            shrink.scrollLeft   = shrinkWidth;
            shrink.scrollTop    = shrinkHeight;
        }

        function injectContainerElement() {
            var container = getState(element).container;

            if (!container) {
                container                   = document.createElement("div");
                container.className         = detectionContainerClass;
                container.style.cssText     = buildCssTextString(["visibility: hidden", "display: inline", "width: 0px", "height: 0px", "z-index: -1", "overflow: hidden", "margin: 0", "padding: 0"]);
                getState(element).container = container;
                addAnimationClass(container);
                element.appendChild(container);

                var onAnimationStart = function () {
                    getState(element).onRendered && getState(element).onRendered();
                };

                addEvent(container, "animationstart", onAnimationStart);

                // Store the event handler here so that they may be removed when uninstall is called.
                // See uninstall function for an explanation why it is needed.
                getState(element).onAnimationStart = onAnimationStart;
            }

            return container;
        }

        function injectScrollElements() {
            function alterPositionStyles() {
                var style = getState(element).style;

                if(style.position === "static") {
                    element.style.setProperty("position", "relative",options.important ? "important" : "");

                    var removeRelativeStyles = function(reporter, element, style, property) {
                        function getNumericalValue(value) {
                            return value.replace(/[^-\d\.]/g, "");
                        }

                        var value = style[property];

                        if(value !== "auto" && getNumericalValue(value) !== "0") {
                            reporter.warn("An element that is positioned static has style." + property + "=" + value + " which is ignored due to the static positioning. The element will need to be positioned relative, so the style." + property + " will be set to 0. Element: ", element);
                            element.style[property] = 0;
                        }
                    };

                    //Check so that there are no accidental styles that will make the element styled differently now that is is relative.
                    //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).
                    removeRelativeStyles(reporter, element, style, "top");
                    removeRelativeStyles(reporter, element, style, "right");
                    removeRelativeStyles(reporter, element, style, "bottom");
                    removeRelativeStyles(reporter, element, style, "left");
                }
            }

            function getLeftTopBottomRightCssText(left, top, bottom, right) {
                left = (!left ? "0" : (left + "px"));
                top = (!top ? "0" : (top + "px"));
                bottom = (!bottom ? "0" : (bottom + "px"));
                right = (!right ? "0" : (right + "px"));

                return ["left: " + left, "top: " + top, "right: " + right, "bottom: " + bottom];
            }

            debug("Injecting elements");

            if (!getState(element)) {
                debug("Aborting because element has been uninstalled");
                return;
            }

            alterPositionStyles();

            var rootContainer = getState(element).container;

            if (!rootContainer) {
                rootContainer = injectContainerElement();
            }

            // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),
            // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than
            // the targeted element.
            // When the bug is resolved, "containerContainer" may be removed.

            // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).
            // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.

            var scrollbarWidth          = scrollbarSizes.width;
            var scrollbarHeight         = scrollbarSizes.height;
            var containerContainerStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%", "left: 0px", "top: 0px"]);
            var containerStyle          = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));
            var expandStyle             = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
            var shrinkStyle             = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
            var expandChildStyle        = buildCssTextString(["position: absolute", "left: 0", "top: 0"]);
            var shrinkChildStyle        = buildCssTextString(["position: absolute", "width: 200%", "height: 200%"]);

            var containerContainer      = document.createElement("div");
            var container               = document.createElement("div");
            var expand                  = document.createElement("div");
            var expandChild             = document.createElement("div");
            var shrink                  = document.createElement("div");
            var shrinkChild             = document.createElement("div");

            // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56
            // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.
            containerContainer.dir              = "ltr";

            containerContainer.style.cssText    = containerContainerStyle;
            containerContainer.className        = detectionContainerClass;
            container.className                 = detectionContainerClass;
            container.style.cssText             = containerStyle;
            expand.style.cssText                = expandStyle;
            expandChild.style.cssText           = expandChildStyle;
            shrink.style.cssText                = shrinkStyle;
            shrinkChild.style.cssText           = shrinkChildStyle;

            expand.appendChild(expandChild);
            shrink.appendChild(shrinkChild);
            container.appendChild(expand);
            container.appendChild(shrink);
            containerContainer.appendChild(container);
            rootContainer.appendChild(containerContainer);

            function onExpandScroll() {
                getState(element).onExpand && getState(element).onExpand();
            }

            function onShrinkScroll() {
                getState(element).onShrink && getState(element).onShrink();
            }

            addEvent(expand, "scroll", onExpandScroll);
            addEvent(shrink, "scroll", onShrinkScroll);

            // Store the event handlers here so that they may be removed when uninstall is called.
            // See uninstall function for an explanation why it is needed.
            getState(element).onExpandScroll = onExpandScroll;
            getState(element).onShrinkScroll = onShrinkScroll;
        }

        function registerListenersAndPositionElements() {
            function updateChildSizes(element, width, height) {
                var expandChild             = getExpandChildElement(element);
                var expandWidth             = getExpandWidth(width);
                var expandHeight            = getExpandHeight(height);
                expandChild.style.setProperty("width", expandWidth + "px", options.important ? "important" : "");
                expandChild.style.setProperty("height", expandHeight + "px", options.important ? "important" : "");
            }

            function updateDetectorElements(done) {
                var width           = element.offsetWidth;
                var height          = element.offsetHeight;

                // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.
                var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;

                debug("Storing current size", width, height);

                // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.
                // Otherwise the if-check in handleScroll is useless.
                storeCurrentSize(element, width, height);

                // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.
                // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.

                batchProcessor.add(0, function performUpdateChildSizes() {
                    if (!sizeChanged) {
                        return;
                    }

                    if (!getState(element)) {
                        debug("Aborting because element has been uninstalled");
                        return;
                    }

                    if (!areElementsInjected()) {
                        debug("Aborting because element container has not been initialized");
                        return;
                    }

                    if (options.debug) {
                        var w = element.offsetWidth;
                        var h = element.offsetHeight;

                        if (w !== width || h !== height) {
                            reporter.warn(idHandler.get(element), "Scroll: Size changed before updating detector elements.");
                        }
                    }

                    updateChildSizes(element, width, height);
                });

                batchProcessor.add(1, function updateScrollbars() {
                    // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then
                    // been restored to the original size, which will have changed the scrollbar positions.

                    if (!getState(element)) {
                        debug("Aborting because element has been uninstalled");
                        return;
                    }

                    if (!areElementsInjected()) {
                        debug("Aborting because element container has not been initialized");
                        return;
                    }

                    positionScrollbars(element, width, height);
                });

                if (sizeChanged && done) {
                    batchProcessor.add(2, function () {
                        if (!getState(element)) {
                            debug("Aborting because element has been uninstalled");
                            return;
                        }

                        if (!areElementsInjected()) {
                          debug("Aborting because element container has not been initialized");
                          return;
                        }

                        done();
                    });
                }
            }

            function areElementsInjected() {
                return !!getState(element).container;
            }

            function notifyListenersIfNeeded() {
                function isFirstNotify() {
                    return getState(element).lastNotifiedWidth === undefined;
                }

                debug("notifyListenersIfNeeded invoked");

                var state = getState(element);

                // Don't notify if the current size is the start size, and this is the first notification.
                if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {
                    return debug("Not notifying: Size is the same as the start size, and there has been no notification yet.");
                }

                // Don't notify if the size already has been notified.
                if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {
                    return debug("Not notifying: Size already notified");
                }


                debug("Current size not notified, notifying...");
                state.lastNotifiedWidth = state.lastWidth;
                state.lastNotifiedHeight = state.lastHeight;
                forEach(getState(element).listeners, function (listener) {
                    listener(element);
                });
            }

            function handleRender() {
                debug("startanimation triggered.");

                if (isUnrendered(element)) {
                    debug("Ignoring since element is still unrendered...");
                    return;
                }

                debug("Element rendered.");
                var expand = getExpandElement(element);
                var shrink = getShrinkElement(element);
                if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {
                    debug("Scrollbars out of sync. Updating detector elements...");
                    updateDetectorElements(notifyListenersIfNeeded);
                }
            }

            function handleScroll() {
                debug("Scroll detected.");

                if (isUnrendered(element)) {
                    // Element is still unrendered. Skip this scroll event.
                    debug("Scroll event fired while unrendered. Ignoring...");
                    return;
                }

                updateDetectorElements(notifyListenersIfNeeded);
            }

            debug("registerListenersAndPositionElements invoked.");

            if (!getState(element)) {
                debug("Aborting because element has been uninstalled");
                return;
            }

            getState(element).onRendered = handleRender;
            getState(element).onExpand = handleScroll;
            getState(element).onShrink = handleScroll;

            var style = getState(element).style;
            updateChildSizes(element, style.width, style.height);
        }

        function finalizeDomMutation() {
            debug("finalizeDomMutation invoked.");

            if (!getState(element)) {
                debug("Aborting because element has been uninstalled");
                return;
            }

            var style = getState(element).style;
            storeCurrentSize(element, style.width, style.height);
            positionScrollbars(element, style.width, style.height);
        }

        function ready() {
            callback(element);
        }

        function install() {
            debug("Installing...");
            initListeners();
            storeStartSize();

            batchProcessor.add(0, storeStyle);
            batchProcessor.add(1, injectScrollElements);
            batchProcessor.add(2, registerListenersAndPositionElements);
            batchProcessor.add(3, finalizeDomMutation);
            batchProcessor.add(4, ready);
        }

        debug("Making detectable...");

        if (isDetached(element)) {
            debug("Element is detached");

            injectContainerElement();

            debug("Waiting until element is attached...");

            getState(element).onRendered = function () {
                debug("Element is now attached");
                install();
            };
        } else {
            install();
        }
    }

    function uninstall(element) {
        var state = getState(element);

        if (!state) {
            // Uninstall has been called on a non-erd element.
            return;
        }

        // Uninstall may have been called in the following scenarios:
        // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).
        // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).
        // (3) After the installation process (here, state.busy = false and all the stuff has been injected).
        // So to be on the safe side, let's check for each thing before removing.

        // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.
        state.onExpandScroll && removeEvent(getExpandElement(element), "scroll", state.onExpandScroll);
        state.onShrinkScroll && removeEvent(getShrinkElement(element), "scroll", state.onShrinkScroll);
        state.onAnimationStart && removeEvent(state.container, "animationstart", state.onAnimationStart);

        state.container && element.removeChild(state.container);
    }

    return {
        makeDetectable: makeDetectable,
        addListener: addListener,
        uninstall: uninstall,
        initDocument: initDocument
    };
};


/***/ }),
/* 76 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// https://github.com/tc39/Array.prototype.includes
var $export = __webpack_require__(1);
var $includes = __webpack_require__(29)(true);

$export($export.P, 'Array', {
  includes: function includes(el /* , fromIndex = 0 */) {
    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
  }
});

__webpack_require__(45)('includes');


/***/ }),
/* 77 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";
// 21.1.3.7 String.prototype.includes(searchString, position = 0)

var $export = __webpack_require__(1);
var context = __webpack_require__(78);
var INCLUDES = 'includes';

$export($export.P + $export.F * __webpack_require__(80)(INCLUDES), 'String', {
  includes: function includes(searchString /* , position = 0 */) {
    return !!~context(this, searchString, INCLUDES)
      .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
  }
});


/***/ }),
/* 78 */
/***/ (function(module, exports, __webpack_require__) {

// helper for String#{startsWith, endsWith, includes}
var isRegExp = __webpack_require__(79);
var defined = __webpack_require__(28);

module.exports = function (that, searchString, NAME) {
  if (isRegExp(searchString)) throw TypeError('String#' + NAME + " doesn't accept regex!");
  return String(defined(that));
};


/***/ }),
/* 79 */
/***/ (function(module, exports, __webpack_require__) {

// 7.2.8 IsRegExp(argument)
var isObject = __webpack_require__(7);
var cof = __webpack_require__(27);
var MATCH = __webpack_require__(46)('match');
module.exports = function (it) {
  var isRegExp;
  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
};


/***/ }),
/* 80 */
/***/ (function(module, exports, __webpack_require__) {

var MATCH = __webpack_require__(46)('match');
module.exports = function (KEY) {
  var re = /./;
  try {
    '/./'[KEY](re);
  } catch (e) {
    try {
      re[MATCH] = false;
      return !'/./'[KEY](re);
    } catch (f) { /* empty */ }
  } return true;
};


/***/ }),
/* 81 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
var $export = __webpack_require__(1);
var $find = __webpack_require__(82)(6);
var KEY = 'findIndex';
var forced = true;
// Shouldn't skip holes
if (KEY in []) Array(1)[KEY](function () { forced = false; });
$export($export.P + $export.F * forced, 'Array', {
  findIndex: function findIndex(callbackfn /* , that = undefined */) {
    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  }
});
__webpack_require__(45)(KEY);


/***/ }),
/* 82 */
/***/ (function(module, exports, __webpack_require__) {

// 0 -> Array#forEach
// 1 -> Array#map
// 2 -> Array#filter
// 3 -> Array#some
// 4 -> Array#every
// 5 -> Array#find
// 6 -> Array#findIndex
var ctx = __webpack_require__(20);
var IObject = __webpack_require__(26);
var toObject = __webpack_require__(40);
var toLength = __webpack_require__(30);
var asc = __webpack_require__(83);
module.exports = function (TYPE, $create) {
  var IS_MAP = TYPE == 1;
  var IS_FILTER = TYPE == 2;
  var IS_SOME = TYPE == 3;
  var IS_EVERY = TYPE == 4;
  var IS_FIND_INDEX = TYPE == 6;
  var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
  var create = $create || asc;
  return function ($this, callbackfn, that) {
    var O = toObject($this);
    var self = IObject(O);
    var f = ctx(callbackfn, that, 3);
    var length = toLength(self.length);
    var index = 0;
    var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;
    var val, res;
    for (;length > index; index++) if (NO_HOLES || index in self) {
      val = self[index];
      res = f(val, index, O);
      if (TYPE) {
        if (IS_MAP) result[index] = res;   // map
        else if (res) switch (TYPE) {
          case 3: return true;             // some
          case 5: return val;              // find
          case 6: return index;            // findIndex
          case 2: result.push(val);        // filter
        } else if (IS_EVERY) return false; // every
      }
    }
    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
  };
};


/***/ }),
/* 83 */
/***/ (function(module, exports, __webpack_require__) {

// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
var speciesConstructor = __webpack_require__(84);

module.exports = function (original, length) {
  return new (speciesConstructor(original))(length);
};


/***/ }),
/* 84 */
/***/ (function(module, exports, __webpack_require__) {

var isObject = __webpack_require__(7);
var isArray = __webpack_require__(85);
var SPECIES = __webpack_require__(46)('species');

module.exports = function (original) {
  var C;
  if (isArray(original)) {
    C = original.constructor;
    // cross-realm fallback
    if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
    if (isObject(C)) {
      C = C[SPECIES];
      if (C === null) C = undefined;
    }
  } return C === undefined ? Array : C;
};


/***/ }),
/* 85 */
/***/ (function(module, exports, __webpack_require__) {

// 7.2.2 IsArray(argument)
var cof = __webpack_require__(27);
module.exports = Array.isArray || function isArray(arg) {
  return cof(arg) == 'Array';
};


/***/ }),
/* 86 */
/***/ (function(module, exports, __webpack_require__) {

var dP = __webpack_require__(5).f;
var FProto = Function.prototype;
var nameRE = /^\s*function ([^ (]*)/;
var NAME = 'name';

// 19.2.4.2 name
NAME in FProto || __webpack_require__(9) && dP(FProto, NAME, {
  configurable: true,
  get: function () {
    try {
      return ('' + this).match(nameRE)[1];
    } catch (e) {
      return '';
    }
  }
});


/***/ }),
/* 87 */
/***/ (function(module, exports, __webpack_require__) {

/* WEBPACK VAR INJECTION */(function(global) {/**!
 * @fileOverview Kickass library to create and place poppers near their reference elements.
 * @version 1.16.1
 * @license
 * Copyright (c) 2016 Federico Zivolo and contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */
(function (global, factory) {
	 true ? module.exports = factory() :
	undefined;
}(this, (function () { 'use strict';

var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';

var timeoutDuration = function () {
  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
      return 1;
    }
  }
  return 0;
}();

function microtaskDebounce(fn) {
  var called = false;
  return function () {
    if (called) {
      return;
    }
    called = true;
    window.Promise.resolve().then(function () {
      called = false;
      fn();
    });
  };
}

function taskDebounce(fn) {
  var scheduled = false;
  return function () {
    if (!scheduled) {
      scheduled = true;
      setTimeout(function () {
        scheduled = false;
        fn();
      }, timeoutDuration);
    }
  };
}

var supportsMicroTasks = isBrowser && window.Promise;

/**
* Create a debounced version of a method, that's asynchronously deferred
* but called in the minimum time possible.
*
* @method
* @memberof Popper.Utils
* @argument {Function} fn
* @returns {Function}
*/
var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;

/**
 * Check if the given variable is a function
 * @method
 * @memberof Popper.Utils
 * @argument {Any} functionToCheck - variable to check
 * @returns {Boolean} answer to: is a function?
 */
function isFunction(functionToCheck) {
  var getType = {};
  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
}

/**
 * Get CSS computed property of the given element
 * @method
 * @memberof Popper.Utils
 * @argument {Eement} element
 * @argument {String} property
 */
function getStyleComputedProperty(element, property) {
  if (element.nodeType !== 1) {
    return [];
  }
  // NOTE: 1 DOM access here
  var window = element.ownerDocument.defaultView;
  var css = window.getComputedStyle(element, null);
  return property ? css[property] : css;
}

/**
 * Returns the parentNode or the host of the element
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element
 * @returns {Element} parent
 */
function getParentNode(element) {
  if (element.nodeName === 'HTML') {
    return element;
  }
  return element.parentNode || element.host;
}

/**
 * Returns the scrolling parent of the given element
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element
 * @returns {Element} scroll parent
 */
function getScrollParent(element) {
  // Return body, `getScroll` will take care to get the correct `scrollTop` from it
  if (!element) {
    return document.body;
  }

  switch (element.nodeName) {
    case 'HTML':
    case 'BODY':
      return element.ownerDocument.body;
    case '#document':
      return element.body;
  }

  // Firefox want us to check `-x` and `-y` variations as well

  var _getStyleComputedProp = getStyleComputedProperty(element),
      overflow = _getStyleComputedProp.overflow,
      overflowX = _getStyleComputedProp.overflowX,
      overflowY = _getStyleComputedProp.overflowY;

  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {
    return element;
  }

  return getScrollParent(getParentNode(element));
}

/**
 * Returns the reference node of the reference object, or the reference object itself.
 * @method
 * @memberof Popper.Utils
 * @param {Element|Object} reference - the reference element (the popper will be relative to this)
 * @returns {Element} parent
 */
function getReferenceNode(reference) {
  return reference && reference.referenceNode ? reference.referenceNode : reference;
}

var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);
var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);

/**
 * Determines if the browser is Internet Explorer
 * @method
 * @memberof Popper.Utils
 * @param {Number} version to check
 * @returns {Boolean} isIE
 */
function isIE(version) {
  if (version === 11) {
    return isIE11;
  }
  if (version === 10) {
    return isIE10;
  }
  return isIE11 || isIE10;
}

/**
 * Returns the offset parent of the given element
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element
 * @returns {Element} offset parent
 */
function getOffsetParent(element) {
  if (!element) {
    return document.documentElement;
  }

  var noOffsetParent = isIE(10) ? document.body : null;

  // NOTE: 1 DOM access here
  var offsetParent = element.offsetParent || null;
  // Skip hidden elements which don't have an offsetParent
  while (offsetParent === noOffsetParent && element.nextElementSibling) {
    offsetParent = (element = element.nextElementSibling).offsetParent;
  }

  var nodeName = offsetParent && offsetParent.nodeName;

  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
    return element ? element.ownerDocument.documentElement : document.documentElement;
  }

  // .offsetParent will return the closest TH, TD or TABLE in case
  // no offsetParent is present, I hate this job...
  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {
    return getOffsetParent(offsetParent);
  }

  return offsetParent;
}

function isOffsetContainer(element) {
  var nodeName = element.nodeName;

  if (nodeName === 'BODY') {
    return false;
  }
  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;
}

/**
 * Finds the root node (document, shadowDOM root) of the given element
 * @method
 * @memberof Popper.Utils
 * @argument {Element} node
 * @returns {Element} root node
 */
function getRoot(node) {
  if (node.parentNode !== null) {
    return getRoot(node.parentNode);
  }

  return node;
}

/**
 * Finds the offset parent common to the two provided nodes
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element1
 * @argument {Element} element2
 * @returns {Element} common offset parent
 */
function findCommonOffsetParent(element1, element2) {
  // This check is needed to avoid errors in case one of the elements isn't defined for any reason
  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
    return document.documentElement;
  }

  // Here we make sure to give as "start" the element that comes first in the DOM
  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
  var start = order ? element1 : element2;
  var end = order ? element2 : element1;

  // Get common ancestor container
  var range = document.createRange();
  range.setStart(start, 0);
  range.setEnd(end, 0);
  var commonAncestorContainer = range.commonAncestorContainer;

  // Both nodes are inside #document

  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {
    if (isOffsetContainer(commonAncestorContainer)) {
      return commonAncestorContainer;
    }

    return getOffsetParent(commonAncestorContainer);
  }

  // one of the nodes is inside shadowDOM, find which one
  var element1root = getRoot(element1);
  if (element1root.host) {
    return findCommonOffsetParent(element1root.host, element2);
  } else {
    return findCommonOffsetParent(element1, getRoot(element2).host);
  }
}

/**
 * Gets the scroll value of the given element in the given side (top and left)
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element
 * @argument {String} side `top` or `left`
 * @returns {number} amount of scrolled pixels
 */
function getScroll(element) {
  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';

  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
  var nodeName = element.nodeName;

  if (nodeName === 'BODY' || nodeName === 'HTML') {
    var html = element.ownerDocument.documentElement;
    var scrollingElement = element.ownerDocument.scrollingElement || html;
    return scrollingElement[upperSide];
  }

  return element[upperSide];
}

/*
 * Sum or subtract the element scroll values (left and top) from a given rect object
 * @method
 * @memberof Popper.Utils
 * @param {Object} rect - Rect object you want to change
 * @param {HTMLElement} element - The element from the function reads the scroll values
 * @param {Boolean} subtract - set to true if you want to subtract the scroll values
 * @return {Object} rect - The modifier rect object
 */
function includeScroll(rect, element) {
  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;

  var scrollTop = getScroll(element, 'top');
  var scrollLeft = getScroll(element, 'left');
  var modifier = subtract ? -1 : 1;
  rect.top += scrollTop * modifier;
  rect.bottom += scrollTop * modifier;
  rect.left += scrollLeft * modifier;
  rect.right += scrollLeft * modifier;
  return rect;
}

/*
 * Helper to detect borders of a given element
 * @method
 * @memberof Popper.Utils
 * @param {CSSStyleDeclaration} styles
 * Result of `getStyleComputedProperty` on the given element
 * @param {String} axis - `x` or `y`
 * @return {number} borders - The borders size of the given axis
 */

function getBordersSize(styles, axis) {
  var sideA = axis === 'x' ? 'Left' : 'Top';
  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';

  return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);
}

function getSize(axis, body, html, computedStyle) {
  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);
}

function getWindowSizes(document) {
  var body = document.body;
  var html = document.documentElement;
  var computedStyle = isIE(10) && getComputedStyle(html);

  return {
    height: getSize('Height', body, html, computedStyle),
    width: getSize('Width', body, html, computedStyle)
  };
}

var classCallCheck = function (instance, Constructor) {
  if (!(instance instanceof Constructor)) {
    throw new TypeError("Cannot call a class as a function");
  }
};

var createClass = function () {
  function defineProperties(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }

  return function (Constructor, protoProps, staticProps) {
    if (protoProps) defineProperties(Constructor.prototype, protoProps);
    if (staticProps) defineProperties(Constructor, staticProps);
    return Constructor;
  };
}();





var defineProperty = function (obj, key, value) {
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
};

var _extends = Object.assign || function (target) {
  for (var i = 1; i < arguments.length; i++) {
    var source = arguments[i];

    for (var key in source) {
      if (Object.prototype.hasOwnProperty.call(source, key)) {
        target[key] = source[key];
      }
    }
  }

  return target;
};

/**
 * Given element offsets, generate an output similar to getBoundingClientRect
 * @method
 * @memberof Popper.Utils
 * @argument {Object} offsets
 * @returns {Object} ClientRect like output
 */
function getClientRect(offsets) {
  return _extends({}, offsets, {
    right: offsets.left + offsets.width,
    bottom: offsets.top + offsets.height
  });
}

/**
 * Get bounding client rect of given element
 * @method
 * @memberof Popper.Utils
 * @param {HTMLElement} element
 * @return {Object} client rect
 */
function getBoundingClientRect(element) {
  var rect = {};

  // IE10 10 FIX: Please, don't ask, the element isn't
  // considered in DOM in some circumstances...
  // This isn't reproducible in IE10 compatibility mode of IE11
  try {
    if (isIE(10)) {
      rect = element.getBoundingClientRect();
      var scrollTop = getScroll(element, 'top');
      var scrollLeft = getScroll(element, 'left');
      rect.top += scrollTop;
      rect.left += scrollLeft;
      rect.bottom += scrollTop;
      rect.right += scrollLeft;
    } else {
      rect = element.getBoundingClientRect();
    }
  } catch (e) {}

  var result = {
    left: rect.left,
    top: rect.top,
    width: rect.right - rect.left,
    height: rect.bottom - rect.top
  };

  // subtract scrollbar size from sizes
  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};
  var width = sizes.width || element.clientWidth || result.width;
  var height = sizes.height || element.clientHeight || result.height;

  var horizScrollbar = element.offsetWidth - width;
  var vertScrollbar = element.offsetHeight - height;

  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`
  // we make this check conditional for performance reasons
  if (horizScrollbar || vertScrollbar) {
    var styles = getStyleComputedProperty(element);
    horizScrollbar -= getBordersSize(styles, 'x');
    vertScrollbar -= getBordersSize(styles, 'y');

    result.width -= horizScrollbar;
    result.height -= vertScrollbar;
  }

  return getClientRect(result);
}

function getOffsetRectRelativeToArbitraryNode(children, parent) {
  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;

  var isIE10 = isIE(10);
  var isHTML = parent.nodeName === 'HTML';
  var childrenRect = getBoundingClientRect(children);
  var parentRect = getBoundingClientRect(parent);
  var scrollParent = getScrollParent(children);

  var styles = getStyleComputedProperty(parent);
  var borderTopWidth = parseFloat(styles.borderTopWidth);
  var borderLeftWidth = parseFloat(styles.borderLeftWidth);

  // In cases where the parent is fixed, we must ignore negative scroll in offset calc
  if (fixedPosition && isHTML) {
    parentRect.top = Math.max(parentRect.top, 0);
    parentRect.left = Math.max(parentRect.left, 0);
  }
  var offsets = getClientRect({
    top: childrenRect.top - parentRect.top - borderTopWidth,
    left: childrenRect.left - parentRect.left - borderLeftWidth,
    width: childrenRect.width,
    height: childrenRect.height
  });
  offsets.marginTop = 0;
  offsets.marginLeft = 0;

  // Subtract margins of documentElement in case it's being used as parent
  // we do this only on HTML because it's the only element that behaves
  // differently when margins are applied to it. The margins are included in
  // the box of the documentElement, in the other cases not.
  if (!isIE10 && isHTML) {
    var marginTop = parseFloat(styles.marginTop);
    var marginLeft = parseFloat(styles.marginLeft);

    offsets.top -= borderTopWidth - marginTop;
    offsets.bottom -= borderTopWidth - marginTop;
    offsets.left -= borderLeftWidth - marginLeft;
    offsets.right -= borderLeftWidth - marginLeft;

    // Attach marginTop and marginLeft because in some circumstances we may need them
    offsets.marginTop = marginTop;
    offsets.marginLeft = marginLeft;
  }

  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {
    offsets = includeScroll(offsets, parent);
  }

  return offsets;
}

function getViewportOffsetRectRelativeToArtbitraryNode(element) {
  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;

  var html = element.ownerDocument.documentElement;
  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
  var width = Math.max(html.clientWidth, window.innerWidth || 0);
  var height = Math.max(html.clientHeight, window.innerHeight || 0);

  var scrollTop = !excludeScroll ? getScroll(html) : 0;
  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;

  var offset = {
    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
    width: width,
    height: height
  };

  return getClientRect(offset);
}

/**
 * Check if the given element is fixed or is inside a fixed parent
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element
 * @argument {Element} customContainer
 * @returns {Boolean} answer to "isFixed?"
 */
function isFixed(element) {
  var nodeName = element.nodeName;
  if (nodeName === 'BODY' || nodeName === 'HTML') {
    return false;
  }
  if (getStyleComputedProperty(element, 'position') === 'fixed') {
    return true;
  }
  var parentNode = getParentNode(element);
  if (!parentNode) {
    return false;
  }
  return isFixed(parentNode);
}

/**
 * Finds the first parent of an element that has a transformed property defined
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element
 * @returns {Element} first transformed parent or documentElement
 */

function getFixedPositionOffsetParent(element) {
  // This check is needed to avoid errors in case one of the elements isn't defined for any reason
  if (!element || !element.parentElement || isIE()) {
    return document.documentElement;
  }
  var el = element.parentElement;
  while (el && getStyleComputedProperty(el, 'transform') === 'none') {
    el = el.parentElement;
  }
  return el || document.documentElement;
}

/**
 * Computed the boundaries limits and return them
 * @method
 * @memberof Popper.Utils
 * @param {HTMLElement} popper
 * @param {HTMLElement} reference
 * @param {number} padding
 * @param {HTMLElement} boundariesElement - Element used to define the boundaries
 * @param {Boolean} fixedPosition - Is in fixed position mode
 * @returns {Object} Coordinates of the boundaries
 */
function getBoundaries(popper, reference, padding, boundariesElement) {
  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;

  // NOTE: 1 DOM access here

  var boundaries = { top: 0, left: 0 };
  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));

  // Handle viewport case
  if (boundariesElement === 'viewport') {
    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);
  } else {
    // Handle other cases based on DOM element used as boundaries
    var boundariesNode = void 0;
    if (boundariesElement === 'scrollParent') {
      boundariesNode = getScrollParent(getParentNode(reference));
      if (boundariesNode.nodeName === 'BODY') {
        boundariesNode = popper.ownerDocument.documentElement;
      }
    } else if (boundariesElement === 'window') {
      boundariesNode = popper.ownerDocument.documentElement;
    } else {
      boundariesNode = boundariesElement;
    }

    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);

    // In case of HTML, we need a different computation
    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {
      var _getWindowSizes = getWindowSizes(popper.ownerDocument),
          height = _getWindowSizes.height,
          width = _getWindowSizes.width;

      boundaries.top += offsets.top - offsets.marginTop;
      boundaries.bottom = height + offsets.top;
      boundaries.left += offsets.left - offsets.marginLeft;
      boundaries.right = width + offsets.left;
    } else {
      // for all the other DOM elements, this one is good
      boundaries = offsets;
    }
  }

  // Add paddings
  padding = padding || 0;
  var isPaddingNumber = typeof padding === 'number';
  boundaries.left += isPaddingNumber ? padding : padding.left || 0;
  boundaries.top += isPaddingNumber ? padding : padding.top || 0;
  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;
  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;

  return boundaries;
}

function getArea(_ref) {
  var width = _ref.width,
      height = _ref.height;

  return width * height;
}

/**
 * Utility used to transform the `auto` placement to the placement with more
 * available space.
 * @method
 * @memberof Popper.Utils
 * @argument {Object} data - The data object generated by update method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The data object, properly modified
 */
function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;

  if (placement.indexOf('auto') === -1) {
    return placement;
  }

  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);

  var rects = {
    top: {
      width: boundaries.width,
      height: refRect.top - boundaries.top
    },
    right: {
      width: boundaries.right - refRect.right,
      height: boundaries.height
    },
    bottom: {
      width: boundaries.width,
      height: boundaries.bottom - refRect.bottom
    },
    left: {
      width: refRect.left - boundaries.left,
      height: boundaries.height
    }
  };

  var sortedAreas = Object.keys(rects).map(function (key) {
    return _extends({
      key: key
    }, rects[key], {
      area: getArea(rects[key])
    });
  }).sort(function (a, b) {
    return b.area - a.area;
  });

  var filteredAreas = sortedAreas.filter(function (_ref2) {
    var width = _ref2.width,
        height = _ref2.height;
    return width >= popper.clientWidth && height >= popper.clientHeight;
  });

  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;

  var variation = placement.split('-')[1];

  return computedPlacement + (variation ? '-' + variation : '');
}

/**
 * Get offsets to the reference element
 * @method
 * @memberof Popper.Utils
 * @param {Object} state
 * @param {Element} popper - the popper element
 * @param {Element} reference - the reference element (the popper will be relative to this)
 * @param {Element} fixedPosition - is in fixed position mode
 * @returns {Object} An object containing the offsets which will be applied to the popper
 */
function getReferenceOffsets(state, popper, reference) {
  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;

  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);
}

/**
 * Get the outer sizes of the given element (offset size + margins)
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element
 * @returns {Object} object containing width and height properties
 */
function getOuterSizes(element) {
  var window = element.ownerDocument.defaultView;
  var styles = window.getComputedStyle(element);
  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);
  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);
  var result = {
    width: element.offsetWidth + y,
    height: element.offsetHeight + x
  };
  return result;
}

/**
 * Get the opposite placement of the given one
 * @method
 * @memberof Popper.Utils
 * @argument {String} placement
 * @returns {String} flipped placement
 */
function getOppositePlacement(placement) {
  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };
  return placement.replace(/left|right|bottom|top/g, function (matched) {
    return hash[matched];
  });
}

/**
 * Get offsets to the popper
 * @method
 * @memberof Popper.Utils
 * @param {Object} position - CSS position the Popper will get applied
 * @param {HTMLElement} popper - the popper element
 * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)
 * @param {String} placement - one of the valid placement options
 * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper
 */
function getPopperOffsets(popper, referenceOffsets, placement) {
  placement = placement.split('-')[0];

  // Get popper node sizes
  var popperRect = getOuterSizes(popper);

  // Add position, width and height to our offsets object
  var popperOffsets = {
    width: popperRect.width,
    height: popperRect.height
  };

  // depending by the popper placement we have to compute its offsets slightly differently
  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;
  var mainSide = isHoriz ? 'top' : 'left';
  var secondarySide = isHoriz ? 'left' : 'top';
  var measurement = isHoriz ? 'height' : 'width';
  var secondaryMeasurement = !isHoriz ? 'height' : 'width';

  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
  if (placement === secondarySide) {
    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
  } else {
    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
  }

  return popperOffsets;
}

/**
 * Mimics the `find` method of Array
 * @method
 * @memberof Popper.Utils
 * @argument {Array} arr
 * @argument prop
 * @argument value
 * @returns index or -1
 */
function find(arr, check) {
  // use native find if supported
  if (Array.prototype.find) {
    return arr.find(check);
  }

  // use `filter` to obtain the same behavior of `find`
  return arr.filter(check)[0];
}

/**
 * Return the index of the matching object
 * @method
 * @memberof Popper.Utils
 * @argument {Array} arr
 * @argument prop
 * @argument value
 * @returns index or -1
 */
function findIndex(arr, prop, value) {
  // use native findIndex if supported
  if (Array.prototype.findIndex) {
    return arr.findIndex(function (cur) {
      return cur[prop] === value;
    });
  }

  // use `find` + `indexOf` if `findIndex` isn't supported
  var match = find(arr, function (obj) {
    return obj[prop] === value;
  });
  return arr.indexOf(match);
}

/**
 * Loop trough the list of modifiers and run them in order,
 * each of them will then edit the data object.
 * @method
 * @memberof Popper.Utils
 * @param {dataObject} data
 * @param {Array} modifiers
 * @param {String} ends - Optional modifier name used as stopper
 * @returns {dataObject}
 */
function runModifiers(modifiers, data, ends) {
  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));

  modifiersToRun.forEach(function (modifier) {
    if (modifier['function']) {
      // eslint-disable-line dot-notation
      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
    }
    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation
    if (modifier.enabled && isFunction(fn)) {
      // Add properties to offsets to make them a complete clientRect object
      // we do this before each modifier to make sure the previous one doesn't
      // mess with these values
      data.offsets.popper = getClientRect(data.offsets.popper);
      data.offsets.reference = getClientRect(data.offsets.reference);

      data = fn(data, modifier);
    }
  });

  return data;
}

/**
 * Updates the position of the popper, computing the new offsets and applying
 * the new style.<br />
 * Prefer `scheduleUpdate` over `update` because of performance reasons.
 * @method
 * @memberof Popper
 */
function update() {
  // if popper is destroyed, don't perform any further update
  if (this.state.isDestroyed) {
    return;
  }

  var data = {
    instance: this,
    styles: {},
    arrowStyles: {},
    attributes: {},
    flipped: false,
    offsets: {}
  };

  // compute reference element offsets
  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);

  // compute auto placement, store placement inside the data object,
  // modifiers will be able to edit `placement` if needed
  // and refer to originalPlacement to know the original value
  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);

  // store the computed placement inside `originalPlacement`
  data.originalPlacement = data.placement;

  data.positionFixed = this.options.positionFixed;

  // compute the popper offsets
  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);

  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';

  // run the modifiers
  data = runModifiers(this.modifiers, data);

  // the first `update` will call `onCreate` callback
  // the other ones will call `onUpdate` callback
  if (!this.state.isCreated) {
    this.state.isCreated = true;
    this.options.onCreate(data);
  } else {
    this.options.onUpdate(data);
  }
}

/**
 * Helper used to know if the given modifier is enabled.
 * @method
 * @memberof Popper.Utils
 * @returns {Boolean}
 */
function isModifierEnabled(modifiers, modifierName) {
  return modifiers.some(function (_ref) {
    var name = _ref.name,
        enabled = _ref.enabled;
    return enabled && name === modifierName;
  });
}

/**
 * Get the prefixed supported property name
 * @method
 * @memberof Popper.Utils
 * @argument {String} property (camelCase)
 * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)
 */
function getSupportedPropertyName(property) {
  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];
  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);

  for (var i = 0; i < prefixes.length; i++) {
    var prefix = prefixes[i];
    var toCheck = prefix ? '' + prefix + upperProp : property;
    if (typeof document.body.style[toCheck] !== 'undefined') {
      return toCheck;
    }
  }
  return null;
}

/**
 * Destroys the popper.
 * @method
 * @memberof Popper
 */
function destroy() {
  this.state.isDestroyed = true;

  // touch DOM only if `applyStyle` modifier is enabled
  if (isModifierEnabled(this.modifiers, 'applyStyle')) {
    this.popper.removeAttribute('x-placement');
    this.popper.style.position = '';
    this.popper.style.top = '';
    this.popper.style.left = '';
    this.popper.style.right = '';
    this.popper.style.bottom = '';
    this.popper.style.willChange = '';
    this.popper.style[getSupportedPropertyName('transform')] = '';
  }

  this.disableEventListeners();

  // remove the popper if user explicitly asked for the deletion on destroy
  // do not use `remove` because IE11 doesn't support it
  if (this.options.removeOnDestroy) {
    this.popper.parentNode.removeChild(this.popper);
  }
  return this;
}

/**
 * Get the window associated with the element
 * @argument {Element} element
 * @returns {Window}
 */
function getWindow(element) {
  var ownerDocument = element.ownerDocument;
  return ownerDocument ? ownerDocument.defaultView : window;
}

function attachToScrollParents(scrollParent, event, callback, scrollParents) {
  var isBody = scrollParent.nodeName === 'BODY';
  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;
  target.addEventListener(event, callback, { passive: true });

  if (!isBody) {
    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
  }
  scrollParents.push(target);
}

/**
 * Setup needed event listeners used to update the popper position
 * @method
 * @memberof Popper.Utils
 * @private
 */
function setupEventListeners(reference, options, state, updateBound) {
  // Resize event listener on window
  state.updateBound = updateBound;
  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });

  // Scroll event listener on scroll parents
  var scrollElement = getScrollParent(reference);
  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);
  state.scrollElement = scrollElement;
  state.eventsEnabled = true;

  return state;
}

/**
 * It will add resize/scroll events and start recalculating
 * position of the popper element when they are triggered.
 * @method
 * @memberof Popper
 */
function enableEventListeners() {
  if (!this.state.eventsEnabled) {
    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
  }
}

/**
 * Remove event listeners used to update the popper position
 * @method
 * @memberof Popper.Utils
 * @private
 */
function removeEventListeners(reference, state) {
  // Remove resize event listener on window
  getWindow(reference).removeEventListener('resize', state.updateBound);

  // Remove scroll event listener on scroll parents
  state.scrollParents.forEach(function (target) {
    target.removeEventListener('scroll', state.updateBound);
  });

  // Reset state
  state.updateBound = null;
  state.scrollParents = [];
  state.scrollElement = null;
  state.eventsEnabled = false;
  return state;
}

/**
 * It will remove resize/scroll events and won't recalculate popper position
 * when they are triggered. It also won't trigger `onUpdate` callback anymore,
 * unless you call `update` method manually.
 * @method
 * @memberof Popper
 */
function disableEventListeners() {
  if (this.state.eventsEnabled) {
    cancelAnimationFrame(this.scheduleUpdate);
    this.state = removeEventListeners(this.reference, this.state);
  }
}

/**
 * Tells if a given input is a number
 * @method
 * @memberof Popper.Utils
 * @param {*} input to check
 * @return {Boolean}
 */
function isNumeric(n) {
  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
}

/**
 * Set the style to the given popper
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element - Element to apply the style to
 * @argument {Object} styles
 * Object with a list of properties and values which will be applied to the element
 */
function setStyles(element, styles) {
  Object.keys(styles).forEach(function (prop) {
    var unit = '';
    // add unit if the value is numeric and is one of the following
    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
      unit = 'px';
    }
    element.style[prop] = styles[prop] + unit;
  });
}

/**
 * Set the attributes to the given popper
 * @method
 * @memberof Popper.Utils
 * @argument {Element} element - Element to apply the attributes to
 * @argument {Object} styles
 * Object with a list of properties and values which will be applied to the element
 */
function setAttributes(element, attributes) {
  Object.keys(attributes).forEach(function (prop) {
    var value = attributes[prop];
    if (value !== false) {
      element.setAttribute(prop, attributes[prop]);
    } else {
      element.removeAttribute(prop);
    }
  });
}

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by `update` method
 * @argument {Object} data.styles - List of style properties - values to apply to popper element
 * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The same data object
 */
function applyStyle(data) {
  // any property present in `data.styles` will be applied to the popper,
  // in this way we can make the 3rd party modifiers add custom styles to it
  // Be aware, modifiers could override the properties defined in the previous
  // lines of this modifier!
  setStyles(data.instance.popper, data.styles);

  // any property present in `data.attributes` will be applied to the popper,
  // they will be set as HTML attributes of the element
  setAttributes(data.instance.popper, data.attributes);

  // if arrowElement is defined and arrowStyles has some properties
  if (data.arrowElement && Object.keys(data.arrowStyles).length) {
    setStyles(data.arrowElement, data.arrowStyles);
  }

  return data;
}

/**
 * Set the x-placement attribute before everything else because it could be used
 * to add margins to the popper margins needs to be calculated to get the
 * correct popper offsets.
 * @method
 * @memberof Popper.modifiers
 * @param {HTMLElement} reference - The reference element used to position the popper
 * @param {HTMLElement} popper - The HTML element used as popper
 * @param {Object} options - Popper.js options
 */
function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
  // compute reference element offsets
  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);

  // compute auto placement, store placement inside the data object,
  // modifiers will be able to edit `placement` if needed
  // and refer to originalPlacement to know the original value
  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);

  popper.setAttribute('x-placement', placement);

  // Apply `position` to popper before anything else because
  // without the position applied we can't guarantee correct computations
  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });

  return options;
}

/**
 * @function
 * @memberof Popper.Utils
 * @argument {Object} data - The data object generated by `update` method
 * @argument {Boolean} shouldRound - If the offsets should be rounded at all
 * @returns {Object} The popper's position offsets rounded
 *
 * The tale of pixel-perfect positioning. It's still not 100% perfect, but as
 * good as it can be within reason.
 * Discussion here: https://github.com/FezVrasta/popper.js/pull/715
 *
 * Low DPI screens cause a popper to be blurry if not using full pixels (Safari
 * as well on High DPI screens).
 *
 * Firefox prefers no rounding for positioning and does not have blurriness on
 * high DPI screens.
 *
 * Only horizontal placement and left/right values need to be considered.
 */
function getRoundedOffsets(data, shouldRound) {
  var _data$offsets = data.offsets,
      popper = _data$offsets.popper,
      reference = _data$offsets.reference;
  var round = Math.round,
      floor = Math.floor;

  var noRound = function noRound(v) {
    return v;
  };

  var referenceWidth = round(reference.width);
  var popperWidth = round(popper.width);

  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
  var isVariation = data.placement.indexOf('-') !== -1;
  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;
  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;

  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;
  var verticalToInteger = !shouldRound ? noRound : round;

  return {
    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
    top: verticalToInteger(popper.top),
    bottom: verticalToInteger(popper.bottom),
    right: horizontalToInteger(popper.right)
  };
}

var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by `update` method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The data object, properly modified
 */
function computeStyle(data, options) {
  var x = options.x,
      y = options.y;
  var popper = data.offsets.popper;

  // Remove this legacy support in Popper.js v2

  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {
    return modifier.name === 'applyStyle';
  }).gpuAcceleration;
  if (legacyGpuAccelerationOption !== undefined) {
    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
  }
  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;

  var offsetParent = getOffsetParent(data.instance.popper);
  var offsetParentRect = getBoundingClientRect(offsetParent);

  // Styles
  var styles = {
    position: popper.position
  };

  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);

  var sideA = x === 'bottom' ? 'top' : 'bottom';
  var sideB = y === 'right' ? 'left' : 'right';

  // if gpuAcceleration is set to `true` and transform is supported,
  //  we use `translate3d` to apply the position to the popper we
  // automatically use the supported prefixed version if needed
  var prefixedProperty = getSupportedPropertyName('transform');

  // now, let's make a step back and look at this code closely (wtf?)
  // If the content of the popper grows once it's been positioned, it
  // may happen that the popper gets misplaced because of the new content
  // overflowing its reference element
  // To avoid this problem, we provide two options (x and y), which allow
  // the consumer to define the offset origin.
  // If we position a popper on top of a reference element, we can set
  // `x` to `top` to make the popper grow towards its top instead of
  // its bottom.
  var left = void 0,
      top = void 0;
  if (sideA === 'bottom') {
    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)
    // and not the bottom of the html element
    if (offsetParent.nodeName === 'HTML') {
      top = -offsetParent.clientHeight + offsets.bottom;
    } else {
      top = -offsetParentRect.height + offsets.bottom;
    }
  } else {
    top = offsets.top;
  }
  if (sideB === 'right') {
    if (offsetParent.nodeName === 'HTML') {
      left = -offsetParent.clientWidth + offsets.right;
    } else {
      left = -offsetParentRect.width + offsets.right;
    }
  } else {
    left = offsets.left;
  }
  if (gpuAcceleration && prefixedProperty) {
    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';
    styles[sideA] = 0;
    styles[sideB] = 0;
    styles.willChange = 'transform';
  } else {
    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties
    var invertTop = sideA === 'bottom' ? -1 : 1;
    var invertLeft = sideB === 'right' ? -1 : 1;
    styles[sideA] = top * invertTop;
    styles[sideB] = left * invertLeft;
    styles.willChange = sideA + ', ' + sideB;
  }

  // Attributes
  var attributes = {
    'x-placement': data.placement
  };

  // Update `data` attributes, styles and arrowStyles
  data.attributes = _extends({}, attributes, data.attributes);
  data.styles = _extends({}, styles, data.styles);
  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);

  return data;
}

/**
 * Helper used to know if the given modifier depends from another one.<br />
 * It checks if the needed modifier is listed and enabled.
 * @method
 * @memberof Popper.Utils
 * @param {Array} modifiers - list of modifiers
 * @param {String} requestingName - name of requesting modifier
 * @param {String} requestedName - name of requested modifier
 * @returns {Boolean}
 */
function isModifierRequired(modifiers, requestingName, requestedName) {
  var requesting = find(modifiers, function (_ref) {
    var name = _ref.name;
    return name === requestingName;
  });

  var isRequired = !!requesting && modifiers.some(function (modifier) {
    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
  });

  if (!isRequired) {
    var _requesting = '`' + requestingName + '`';
    var requested = '`' + requestedName + '`';
    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');
  }
  return isRequired;
}

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by update method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The data object, properly modified
 */
function arrow(data, options) {
  var _data$offsets$arrow;

  // arrow depends on keepTogether in order to work
  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
    return data;
  }

  var arrowElement = options.element;

  // if arrowElement is a string, suppose it's a CSS selector
  if (typeof arrowElement === 'string') {
    arrowElement = data.instance.popper.querySelector(arrowElement);

    // if arrowElement is not found, don't run the modifier
    if (!arrowElement) {
      return data;
    }
  } else {
    // if the arrowElement isn't a query selector we must check that the
    // provided DOM node is child of its popper node
    if (!data.instance.popper.contains(arrowElement)) {
      console.warn('WARNING: `arrow.element` must be child of its popper element!');
      return data;
    }
  }

  var placement = data.placement.split('-')[0];
  var _data$offsets = data.offsets,
      popper = _data$offsets.popper,
      reference = _data$offsets.reference;

  var isVertical = ['left', 'right'].indexOf(placement) !== -1;

  var len = isVertical ? 'height' : 'width';
  var sideCapitalized = isVertical ? 'Top' : 'Left';
  var side = sideCapitalized.toLowerCase();
  var altSide = isVertical ? 'left' : 'top';
  var opSide = isVertical ? 'bottom' : 'right';
  var arrowElementSize = getOuterSizes(arrowElement)[len];

  //
  // extends keepTogether behavior making sure the popper and its
  // reference have enough pixels in conjunction
  //

  // top/left side
  if (reference[opSide] - arrowElementSize < popper[side]) {
    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
  }
  // bottom/right side
  if (reference[side] + arrowElementSize > popper[opSide]) {
    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
  }
  data.offsets.popper = getClientRect(data.offsets.popper);

  // compute center of the popper
  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;

  // Compute the sideValue using the updated popper offsets
  // take popper margin in account because we don't have this info available
  var css = getStyleComputedProperty(data.instance.popper);
  var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);
  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);
  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;

  // prevent arrowElement from being placed not contiguously to its popper
  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);

  data.arrowElement = arrowElement;
  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);

  return data;
}

/**
 * Get the opposite placement variation of the given one
 * @method
 * @memberof Popper.Utils
 * @argument {String} placement variation
 * @returns {String} flipped placement variation
 */
function getOppositeVariation(variation) {
  if (variation === 'end') {
    return 'start';
  } else if (variation === 'start') {
    return 'end';
  }
  return variation;
}

/**
 * List of accepted placements to use as values of the `placement` option.<br />
 * Valid placements are:
 * - `auto`
 * - `top`
 * - `right`
 * - `bottom`
 * - `left`
 *
 * Each placement can have a variation from this list:
 * - `-start`
 * - `-end`
 *
 * Variations are interpreted easily if you think of them as the left to right
 * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`
 * is right.<br />
 * Vertically (`left` and `right`), `start` is top and `end` is bottom.
 *
 * Some valid examples are:
 * - `top-end` (on top of reference, right aligned)
 * - `right-start` (on right of reference, top aligned)
 * - `bottom` (on bottom, centered)
 * - `auto-end` (on the side with more space available, alignment depends by placement)
 *
 * @static
 * @type {Array}
 * @enum {String}
 * @readonly
 * @method placements
 * @memberof Popper
 */
var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];

// Get rid of `auto` `auto-start` and `auto-end`
var validPlacements = placements.slice(3);

/**
 * Given an initial placement, returns all the subsequent placements
 * clockwise (or counter-clockwise).
 *
 * @method
 * @memberof Popper.Utils
 * @argument {String} placement - A valid placement (it accepts variations)
 * @argument {Boolean} counter - Set to true to walk the placements counterclockwise
 * @returns {Array} placements including their variations
 */
function clockwise(placement) {
  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;

  var index = validPlacements.indexOf(placement);
  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
  return counter ? arr.reverse() : arr;
}

var BEHAVIORS = {
  FLIP: 'flip',
  CLOCKWISE: 'clockwise',
  COUNTERCLOCKWISE: 'counterclockwise'
};

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by update method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The data object, properly modified
 */
function flip(data, options) {
  // if `inner` modifier is enabled, we can't use the `flip` modifier
  if (isModifierEnabled(data.instance.modifiers, 'inner')) {
    return data;
  }

  if (data.flipped && data.placement === data.originalPlacement) {
    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides
    return data;
  }

  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);

  var placement = data.placement.split('-')[0];
  var placementOpposite = getOppositePlacement(placement);
  var variation = data.placement.split('-')[1] || '';

  var flipOrder = [];

  switch (options.behavior) {
    case BEHAVIORS.FLIP:
      flipOrder = [placement, placementOpposite];
      break;
    case BEHAVIORS.CLOCKWISE:
      flipOrder = clockwise(placement);
      break;
    case BEHAVIORS.COUNTERCLOCKWISE:
      flipOrder = clockwise(placement, true);
      break;
    default:
      flipOrder = options.behavior;
  }

  flipOrder.forEach(function (step, index) {
    if (placement !== step || flipOrder.length === index + 1) {
      return data;
    }

    placement = data.placement.split('-')[0];
    placementOpposite = getOppositePlacement(placement);

    var popperOffsets = data.offsets.popper;
    var refOffsets = data.offsets.reference;

    // using floor because the reference offsets may contain decimals we are not going to consider here
    var floor = Math.floor;
    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);

    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);

    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;

    // flip the variation if required
    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;

    // flips variation if reference element overflows boundaries
    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);

    // flips variation if popper content overflows boundaries
    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);

    var flippedVariation = flippedVariationByRef || flippedVariationByContent;

    if (overlapsRef || overflowsBoundaries || flippedVariation) {
      // this boolean to detect any flip loop
      data.flipped = true;

      if (overlapsRef || overflowsBoundaries) {
        placement = flipOrder[index + 1];
      }

      if (flippedVariation) {
        variation = getOppositeVariation(variation);
      }

      data.placement = placement + (variation ? '-' + variation : '');

      // this object contains `position`, we want to preserve it along with
      // any additional property we may add in the future
      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));

      data = runModifiers(data.instance.modifiers, data, 'flip');
    }
  });
  return data;
}

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by update method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The data object, properly modified
 */
function keepTogether(data) {
  var _data$offsets = data.offsets,
      popper = _data$offsets.popper,
      reference = _data$offsets.reference;

  var placement = data.placement.split('-')[0];
  var floor = Math.floor;
  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
  var side = isVertical ? 'right' : 'bottom';
  var opSide = isVertical ? 'left' : 'top';
  var measurement = isVertical ? 'width' : 'height';

  if (popper[side] < floor(reference[opSide])) {
    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
  }
  if (popper[opSide] > floor(reference[side])) {
    data.offsets.popper[opSide] = floor(reference[side]);
  }

  return data;
}

/**
 * Converts a string containing value + unit into a px value number
 * @function
 * @memberof {modifiers~offset}
 * @private
 * @argument {String} str - Value + unit string
 * @argument {String} measurement - `height` or `width`
 * @argument {Object} popperOffsets
 * @argument {Object} referenceOffsets
 * @returns {Number|String}
 * Value in pixels, or original string if no values were extracted
 */
function toValue(str, measurement, popperOffsets, referenceOffsets) {
  // separate value from unit
  var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
  var value = +split[1];
  var unit = split[2];

  // If it's not a number it's an operator, I guess
  if (!value) {
    return str;
  }

  if (unit.indexOf('%') === 0) {
    var element = void 0;
    switch (unit) {
      case '%p':
        element = popperOffsets;
        break;
      case '%':
      case '%r':
      default:
        element = referenceOffsets;
    }

    var rect = getClientRect(element);
    return rect[measurement] / 100 * value;
  } else if (unit === 'vh' || unit === 'vw') {
    // if is a vh or vw, we calculate the size based on the viewport
    var size = void 0;
    if (unit === 'vh') {
      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
    } else {
      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
    }
    return size / 100 * value;
  } else {
    // if is an explicit pixel unit, we get rid of the unit and keep the value
    // if is an implicit unit, it's px, and we return just the value
    return value;
  }
}

/**
 * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.
 * @function
 * @memberof {modifiers~offset}
 * @private
 * @argument {String} offset
 * @argument {Object} popperOffsets
 * @argument {Object} referenceOffsets
 * @argument {String} basePlacement
 * @returns {Array} a two cells array with x and y offsets in numbers
 */
function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {
  var offsets = [0, 0];

  // Use height if placement is left or right and index is 0 otherwise use width
  // in this way the first offset will use an axis and the second one
  // will use the other one
  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;

  // Split the offset string to obtain a list of values and operands
  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)
  var fragments = offset.split(/(\+|\-)/).map(function (frag) {
    return frag.trim();
  });

  // Detect if the offset string contains a pair of values or a single one
  // they could be separated by comma or space
  var divider = fragments.indexOf(find(fragments, function (frag) {
    return frag.search(/,|\s/) !== -1;
  }));

  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {
    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
  }

  // If divider is found, we divide the list of values and operands to divide
  // them by ofset X and Y.
  var splitRegex = /\s*,\s*|\s+/;
  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];

  // Convert the values with units to absolute pixels to allow our computations
  ops = ops.map(function (op, index) {
    // Most of the units rely on the orientation of the popper
    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';
    var mergeWithPrevious = false;
    return op
    // This aggregates any `+` or `-` sign that aren't considered operators
    // e.g.: 10 + +5 => [10, +, +5]
    .reduce(function (a, b) {
      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {
        a[a.length - 1] = b;
        mergeWithPrevious = true;
        return a;
      } else if (mergeWithPrevious) {
        a[a.length - 1] += b;
        mergeWithPrevious = false;
        return a;
      } else {
        return a.concat(b);
      }
    }, [])
    // Here we convert the string values into number values (in px)
    .map(function (str) {
      return toValue(str, measurement, popperOffsets, referenceOffsets);
    });
  });

  // Loop trough the offsets arrays and execute the operations
  ops.forEach(function (op, index) {
    op.forEach(function (frag, index2) {
      if (isNumeric(frag)) {
        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);
      }
    });
  });
  return offsets;
}

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by update method
 * @argument {Object} options - Modifiers configuration and options
 * @argument {Number|String} options.offset=0
 * The offset value as described in the modifier description
 * @returns {Object} The data object, properly modified
 */
function offset(data, _ref) {
  var offset = _ref.offset;
  var placement = data.placement,
      _data$offsets = data.offsets,
      popper = _data$offsets.popper,
      reference = _data$offsets.reference;

  var basePlacement = placement.split('-')[0];

  var offsets = void 0;
  if (isNumeric(+offset)) {
    offsets = [+offset, 0];
  } else {
    offsets = parseOffset(offset, popper, reference, basePlacement);
  }

  if (basePlacement === 'left') {
    popper.top += offsets[0];
    popper.left -= offsets[1];
  } else if (basePlacement === 'right') {
    popper.top += offsets[0];
    popper.left += offsets[1];
  } else if (basePlacement === 'top') {
    popper.left += offsets[0];
    popper.top -= offsets[1];
  } else if (basePlacement === 'bottom') {
    popper.left += offsets[0];
    popper.top += offsets[1];
  }

  data.popper = popper;
  return data;
}

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by `update` method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The data object, properly modified
 */
function preventOverflow(data, options) {
  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);

  // If offsetParent is the reference element, we really want to
  // go one step up and use the next offsetParent as reference to
  // avoid to make this modifier completely useless and look like broken
  if (data.instance.reference === boundariesElement) {
    boundariesElement = getOffsetParent(boundariesElement);
  }

  // NOTE: DOM access here
  // resets the popper's position so that the document size can be calculated excluding
  // the size of the popper element itself
  var transformProp = getSupportedPropertyName('transform');
  var popperStyles = data.instance.popper.style; // assignment to help minification
  var top = popperStyles.top,
      left = popperStyles.left,
      transform = popperStyles[transformProp];

  popperStyles.top = '';
  popperStyles.left = '';
  popperStyles[transformProp] = '';

  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);

  // NOTE: DOM access here
  // restores the original style properties after the offsets have been computed
  popperStyles.top = top;
  popperStyles.left = left;
  popperStyles[transformProp] = transform;

  options.boundaries = boundaries;

  var order = options.priority;
  var popper = data.offsets.popper;

  var check = {
    primary: function primary(placement) {
      var value = popper[placement];
      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
        value = Math.max(popper[placement], boundaries[placement]);
      }
      return defineProperty({}, placement, value);
    },
    secondary: function secondary(placement) {
      var mainSide = placement === 'right' ? 'left' : 'top';
      var value = popper[mainSide];
      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));
      }
      return defineProperty({}, mainSide, value);
    }
  };

  order.forEach(function (placement) {
    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';
    popper = _extends({}, popper, check[side](placement));
  });

  data.offsets.popper = popper;

  return data;
}

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by `update` method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The data object, properly modified
 */
function shift(data) {
  var placement = data.placement;
  var basePlacement = placement.split('-')[0];
  var shiftvariation = placement.split('-')[1];

  // if shift shiftvariation is specified, run the modifier
  if (shiftvariation) {
    var _data$offsets = data.offsets,
        reference = _data$offsets.reference,
        popper = _data$offsets.popper;

    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
    var side = isVertical ? 'left' : 'top';
    var measurement = isVertical ? 'width' : 'height';

    var shiftOffsets = {
      start: defineProperty({}, side, reference[side]),
      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
    };

    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);
  }

  return data;
}

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by update method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The data object, properly modified
 */
function hide(data) {
  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {
    return data;
  }

  var refRect = data.offsets.reference;
  var bound = find(data.instance.modifiers, function (modifier) {
    return modifier.name === 'preventOverflow';
  }).boundaries;

  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
    // Avoid unnecessary DOM access if visibility hasn't changed
    if (data.hide === true) {
      return data;
    }

    data.hide = true;
    data.attributes['x-out-of-boundaries'] = '';
  } else {
    // Avoid unnecessary DOM access if visibility hasn't changed
    if (data.hide === false) {
      return data;
    }

    data.hide = false;
    data.attributes['x-out-of-boundaries'] = false;
  }

  return data;
}

/**
 * @function
 * @memberof Modifiers
 * @argument {Object} data - The data object generated by `update` method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {Object} The data object, properly modified
 */
function inner(data) {
  var placement = data.placement;
  var basePlacement = placement.split('-')[0];
  var _data$offsets = data.offsets,
      popper = _data$offsets.popper,
      reference = _data$offsets.reference;

  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;

  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;

  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);

  data.placement = getOppositePlacement(placement);
  data.offsets.popper = getClientRect(popper);

  return data;
}

/**
 * Modifier function, each modifier can have a function of this type assigned
 * to its `fn` property.<br />
 * These functions will be called on each update, this means that you must
 * make sure they are performant enough to avoid performance bottlenecks.
 *
 * @function ModifierFn
 * @argument {dataObject} data - The data object generated by `update` method
 * @argument {Object} options - Modifiers configuration and options
 * @returns {dataObject} The data object, properly modified
 */

/**
 * Modifiers are plugins used to alter the behavior of your poppers.<br />
 * Popper.js uses a set of 9 modifiers to provide all the basic functionalities
 * needed by the library.
 *
 * Usually you don't want to override the `order`, `fn` and `onLoad` props.
 * All the other properties are configurations that could be tweaked.
 * @namespace modifiers
 */
var modifiers = {
  /**
   * Modifier used to shift the popper on the start or end of its reference
   * element.<br />
   * It will read the variation of the `placement` property.<br />
   * It can be one either `-end` or `-start`.
   * @memberof modifiers
   * @inner
   */
  shift: {
    /** @prop {number} order=100 - Index used to define the order of execution */
    order: 100,
    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
    enabled: true,
    /** @prop {ModifierFn} */
    fn: shift
  },

  /**
   * The `offset` modifier can shift your popper on both its axis.
   *
   * It accepts the following units:
   * - `px` or unit-less, interpreted as pixels
   * - `%` or `%r`, percentage relative to the length of the reference element
   * - `%p`, percentage relative to the length of the popper element
   * - `vw`, CSS viewport width unit
   * - `vh`, CSS viewport height unit
   *
   * For length is intended the main axis relative to the placement of the popper.<br />
   * This means that if the placement is `top` or `bottom`, the length will be the
   * `width`. In case of `left` or `right`, it will be the `height`.
   *
   * You can provide a single value (as `Number` or `String`), or a pair of values
   * as `String` divided by a comma or one (or more) white spaces.<br />
   * The latter is a deprecated method because it leads to confusion and will be
   * removed in v2.<br />
   * Additionally, it accepts additions and subtractions between different units.
   * Note that multiplications and divisions aren't supported.
   *
   * Valid examples are:
   * ```
   * 10
   * '10%'
   * '10, 10'
   * '10%, 10'
   * '10 + 10%'
   * '10 - 5vh + 3%'
   * '-10px + 5vh, 5px - 6%'
   * ```
   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap
   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.
   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).
   *
   * @memberof modifiers
   * @inner
   */
  offset: {
    /** @prop {number} order=200 - Index used to define the order of execution */
    order: 200,
    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
    enabled: true,
    /** @prop {ModifierFn} */
    fn: offset,
    /** @prop {Number|String} offset=0
     * The offset value as described in the modifier description
     */
    offset: 0
  },

  /**
   * Modifier used to prevent the popper from being positioned outside the boundary.
   *
   * A scenario exists where the reference itself is not within the boundaries.<br />
   * We can say it has "escaped the boundaries" — or just "escaped".<br />
   * In this case we need to decide whether the popper should either:
   *
   * - detach from the reference and remain "trapped" in the boundaries, or
   * - if it should ignore the boundary and "escape with its reference"
   *
   * When `escapeWithReference` is set to`true` and reference is completely
   * outside its boundaries, the popper will overflow (or completely leave)
   * the boundaries in order to remain attached to the edge of the reference.
   *
   * @memberof modifiers
   * @inner
   */
  preventOverflow: {
    /** @prop {number} order=300 - Index used to define the order of execution */
    order: 300,
    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
    enabled: true,
    /** @prop {ModifierFn} */
    fn: preventOverflow,
    /**
     * @prop {Array} [priority=['left','right','top','bottom']]
     * Popper will try to prevent overflow following these priorities by default,
     * then, it could overflow on the left and on top of the `boundariesElement`
     */
    priority: ['left', 'right', 'top', 'bottom'],
    /**
     * @prop {number} padding=5
     * Amount of pixel used to define a minimum distance between the boundaries
     * and the popper. This makes sure the popper always has a little padding
     * between the edges of its container
     */
    padding: 5,
    /**
     * @prop {String|HTMLElement} boundariesElement='scrollParent'
     * Boundaries used by the modifier. Can be `scrollParent`, `window`,
     * `viewport` or any DOM element.
     */
    boundariesElement: 'scrollParent'
  },

  /**
   * Modifier used to make sure the reference and its popper stay near each other
   * without leaving any gap between the two. Especially useful when the arrow is
   * enabled and you want to ensure that it points to its reference element.
   * It cares only about the first axis. You can still have poppers with margin
   * between the popper and its reference element.
   * @memberof modifiers
   * @inner
   */
  keepTogether: {
    /** @prop {number} order=400 - Index used to define the order of execution */
    order: 400,
    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
    enabled: true,
    /** @prop {ModifierFn} */
    fn: keepTogether
  },

  /**
   * This modifier is used to move the `arrowElement` of the popper to make
   * sure it is positioned between the reference element and its popper element.
   * It will read the outer size of the `arrowElement` node to detect how many
   * pixels of conjunction are needed.
   *
   * It has no effect if no `arrowElement` is provided.
   * @memberof modifiers
   * @inner
   */
  arrow: {
    /** @prop {number} order=500 - Index used to define the order of execution */
    order: 500,
    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
    enabled: true,
    /** @prop {ModifierFn} */
    fn: arrow,
    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */
    element: '[x-arrow]'
  },

  /**
   * Modifier used to flip the popper's placement when it starts to overlap its
   * reference element.
   *
   * Requires the `preventOverflow` modifier before it in order to work.
   *
   * **NOTE:** this modifier will interrupt the current update cycle and will
   * restart it if it detects the need to flip the placement.
   * @memberof modifiers
   * @inner
   */
  flip: {
    /** @prop {number} order=600 - Index used to define the order of execution */
    order: 600,
    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
    enabled: true,
    /** @prop {ModifierFn} */
    fn: flip,
    /**
     * @prop {String|Array} behavior='flip'
     * The behavior used to change the popper's placement. It can be one of
     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid
     * placements (with optional variations)
     */
    behavior: 'flip',
    /**
     * @prop {number} padding=5
     * The popper will flip if it hits the edges of the `boundariesElement`
     */
    padding: 5,
    /**
     * @prop {String|HTMLElement} boundariesElement='viewport'
     * The element which will define the boundaries of the popper position.
     * The popper will never be placed outside of the defined boundaries
     * (except if `keepTogether` is enabled)
     */
    boundariesElement: 'viewport',
    /**
     * @prop {Boolean} flipVariations=false
     * The popper will switch placement variation between `-start` and `-end` when
     * the reference element overlaps its boundaries.
     *
     * The original placement should have a set variation.
     */
    flipVariations: false,
    /**
     * @prop {Boolean} flipVariationsByContent=false
     * The popper will switch placement variation between `-start` and `-end` when
     * the popper element overlaps its reference boundaries.
     *
     * The original placement should have a set variation.
     */
    flipVariationsByContent: false
  },

  /**
   * Modifier used to make the popper flow toward the inner of the reference element.
   * By default, when this modifier is disabled, the popper will be placed outside
   * the reference element.
   * @memberof modifiers
   * @inner
   */
  inner: {
    /** @prop {number} order=700 - Index used to define the order of execution */
    order: 700,
    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */
    enabled: false,
    /** @prop {ModifierFn} */
    fn: inner
  },

  /**
   * Modifier used to hide the popper when its reference element is outside of the
   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can
   * be used to hide with a CSS selector the popper when its reference is
   * out of boundaries.
   *
   * Requires the `preventOverflow` modifier before it in order to work.
   * @memberof modifiers
   * @inner
   */
  hide: {
    /** @prop {number} order=800 - Index used to define the order of execution */
    order: 800,
    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
    enabled: true,
    /** @prop {ModifierFn} */
    fn: hide
  },

  /**
   * Computes the style that will be applied to the popper element to gets
   * properly positioned.
   *
   * Note that this modifier will not touch the DOM, it just prepares the styles
   * so that `applyStyle` modifier can apply it. This separation is useful
   * in case you need to replace `applyStyle` with a custom implementation.
   *
   * This modifier has `850` as `order` value to maintain backward compatibility
   * with previous versions of Popper.js. Expect the modifiers ordering method
   * to change in future major versions of the library.
   *
   * @memberof modifiers
   * @inner
   */
  computeStyle: {
    /** @prop {number} order=850 - Index used to define the order of execution */
    order: 850,
    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
    enabled: true,
    /** @prop {ModifierFn} */
    fn: computeStyle,
    /**
     * @prop {Boolean} gpuAcceleration=true
     * If true, it uses the CSS 3D transformation to position the popper.
     * Otherwise, it will use the `top` and `left` properties
     */
    gpuAcceleration: true,
    /**
     * @prop {string} [x='bottom']
     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.
     * Change this if your popper should grow in a direction different from `bottom`
     */
    x: 'bottom',
    /**
     * @prop {string} [x='left']
     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.
     * Change this if your popper should grow in a direction different from `right`
     */
    y: 'right'
  },

  /**
   * Applies the computed styles to the popper element.
   *
   * All the DOM manipulations are limited to this modifier. This is useful in case
   * you want to integrate Popper.js inside a framework or view library and you
   * want to delegate all the DOM manipulations to it.
   *
   * Note that if you disable this modifier, you must make sure the popper element
   * has its position set to `absolute` before Popper.js can do its work!
   *
   * Just disable this modifier and define your own to achieve the desired effect.
   *
   * @memberof modifiers
   * @inner
   */
  applyStyle: {
    /** @prop {number} order=900 - Index used to define the order of execution */
    order: 900,
    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
    enabled: true,
    /** @prop {ModifierFn} */
    fn: applyStyle,
    /** @prop {Function} */
    onLoad: applyStyleOnLoad,
    /**
     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier
     * @prop {Boolean} gpuAcceleration=true
     * If true, it uses the CSS 3D transformation to position the popper.
     * Otherwise, it will use the `top` and `left` properties
     */
    gpuAcceleration: undefined
  }
};

/**
 * The `dataObject` is an object containing all the information used by Popper.js.
 * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.
 * @name dataObject
 * @property {Object} data.instance The Popper.js instance
 * @property {String} data.placement Placement applied to popper
 * @property {String} data.originalPlacement Placement originally defined on init
 * @property {Boolean} data.flipped True if popper has been flipped by flip modifier
 * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper
 * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier
 * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)
 * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)
 * @property {Object} data.boundaries Offsets of the popper boundaries
 * @property {Object} data.offsets The measurements of popper, reference and arrow elements
 * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values
 * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values
 * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0
 */

/**
 * Default options provided to Popper.js constructor.<br />
 * These can be overridden using the `options` argument of Popper.js.<br />
 * To override an option, simply pass an object with the same
 * structure of the `options` object, as the 3rd argument. For example:
 * ```
 * new Popper(ref, pop, {
 *   modifiers: {
 *     preventOverflow: { enabled: false }
 *   }
 * })
 * ```
 * @type {Object}
 * @static
 * @memberof Popper
 */
var Defaults = {
  /**
   * Popper's placement.
   * @prop {Popper.placements} placement='bottom'
   */
  placement: 'bottom',

  /**
   * Set this to true if you want popper to position it self in 'fixed' mode
   * @prop {Boolean} positionFixed=false
   */
  positionFixed: false,

  /**
   * Whether events (resize, scroll) are initially enabled.
   * @prop {Boolean} eventsEnabled=true
   */
  eventsEnabled: true,

  /**
   * Set to true if you want to automatically remove the popper when
   * you call the `destroy` method.
   * @prop {Boolean} removeOnDestroy=false
   */
  removeOnDestroy: false,

  /**
   * Callback called when the popper is created.<br />
   * By default, it is set to no-op.<br />
   * Access Popper.js instance with `data.instance`.
   * @prop {onCreate}
   */
  onCreate: function onCreate() {},

  /**
   * Callback called when the popper is updated. This callback is not called
   * on the initialization/creation of the popper, but only on subsequent
   * updates.<br />
   * By default, it is set to no-op.<br />
   * Access Popper.js instance with `data.instance`.
   * @prop {onUpdate}
   */
  onUpdate: function onUpdate() {},

  /**
   * List of modifiers used to modify the offsets before they are applied to the popper.
   * They provide most of the functionalities of Popper.js.
   * @prop {modifiers}
   */
  modifiers: modifiers
};

/**
 * @callback onCreate
 * @param {dataObject} data
 */

/**
 * @callback onUpdate
 * @param {dataObject} data
 */

// Utils
// Methods
var Popper = function () {
  /**
   * Creates a new Popper.js instance.
   * @class Popper
   * @param {Element|referenceObject} reference - The reference element used to position the popper
   * @param {Element} popper - The HTML / XML element used as the popper
   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)
   * @return {Object} instance - The generated Popper.js instance
   */
  function Popper(reference, popper) {
    var _this = this;

    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
    classCallCheck(this, Popper);

    this.scheduleUpdate = function () {
      return requestAnimationFrame(_this.update);
    };

    // make update() debounced, so that it only runs at most once-per-tick
    this.update = debounce(this.update.bind(this));

    // with {} we create a new object with the options inside it
    this.options = _extends({}, Popper.Defaults, options);

    // init state
    this.state = {
      isDestroyed: false,
      isCreated: false,
      scrollParents: []
    };

    // get reference and popper elements (allow jQuery wrappers)
    this.reference = reference && reference.jquery ? reference[0] : reference;
    this.popper = popper && popper.jquery ? popper[0] : popper;

    // Deep merge modifiers options
    this.options.modifiers = {};
    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {
      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});
    });

    // Refactoring modifiers' list (Object => Array)
    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {
      return _extends({
        name: name
      }, _this.options.modifiers[name]);
    })
    // sort the modifiers by order
    .sort(function (a, b) {
      return a.order - b.order;
    });

    // modifiers have the ability to execute arbitrary code when Popper.js get inited
    // such code is executed in the same order of its modifier
    // they could add new properties to their options configuration
    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!
    this.modifiers.forEach(function (modifierOptions) {
      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
      }
    });

    // fire the first update to position the popper in the right place
    this.update();

    var eventsEnabled = this.options.eventsEnabled;
    if (eventsEnabled) {
      // setup event listeners, they will take care of update the position in specific situations
      this.enableEventListeners();
    }

    this.state.eventsEnabled = eventsEnabled;
  }

  // We can't use class properties because they don't get listed in the
  // class prototype and break stuff like Sinon stubs


  createClass(Popper, [{
    key: 'update',
    value: function update$$1() {
      return update.call(this);
    }
  }, {
    key: 'destroy',
    value: function destroy$$1() {
      return destroy.call(this);
    }
  }, {
    key: 'enableEventListeners',
    value: function enableEventListeners$$1() {
      return enableEventListeners.call(this);
    }
  }, {
    key: 'disableEventListeners',
    value: function disableEventListeners$$1() {
      return disableEventListeners.call(this);
    }

    /**
     * Schedules an update. It will run on the next UI update available.
     * @method scheduleUpdate
     * @memberof Popper
     */


    /**
     * Collection of utilities useful when writing custom modifiers.
     * Starting from version 1.7, this method is available only if you
     * include `popper-utils.js` before `popper.js`.
     *
     * **DEPRECATION**: This way to access PopperUtils is deprecated
     * and will be removed in v2! Use the PopperUtils module directly instead.
     * Due to the high instability of the methods contained in Utils, we can't
     * guarantee them to follow semver. Use them at your own risk!
     * @static
     * @private
     * @type {Object}
     * @deprecated since version 1.8
     * @member Utils
     * @memberof Popper
     */

  }]);
  return Popper;
}();

/**
 * The `referenceObject` is an object that provides an interface compatible with Popper.js
 * and lets you use it as replacement of a real DOM node.<br />
 * You can use this method to position a popper relatively to a set of coordinates
 * in case you don't have a DOM node to use as reference.
 *
 * ```
 * new Popper(referenceObject, popperNode);
 * ```
 *
 * NB: This feature isn't supported in Internet Explorer 10.
 * @name referenceObject
 * @property {Function} data.getBoundingClientRect
 * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.
 * @property {number} data.clientWidth
 * An ES6 getter that will return the width of the virtual reference element.
 * @property {number} data.clientHeight
 * An ES6 getter that will return the height of the virtual reference element.
 */


Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;
Popper.placements = placements;
Popper.Defaults = Defaults;

return Popper;

})));
//# sourceMappingURL=popper.js.map

/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(88)))

/***/ }),
/* 88 */
/***/ (function(module, exports) {

var g;

// This works in non-strict mode
g = (function() {
	return this;
})();

try {
	// This works if eval is allowed (see CSP)
	g = g || new Function("return this")();
} catch (e) {
	// This works if the window reference is available
	if (typeof window === "object") g = window;
}

// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}

module.exports = g;


/***/ }),
/* 89 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

__webpack_require__(90);
var anObject = __webpack_require__(6);
var $flags = __webpack_require__(91);
var DESCRIPTORS = __webpack_require__(9);
var TO_STRING = 'toString';
var $toString = /./[TO_STRING];

var define = function (fn) {
  __webpack_require__(14)(RegExp.prototype, TO_STRING, fn, true);
};

// 21.2.5.14 RegExp.prototype.toString()
if (__webpack_require__(10)(function () { return $toString.call({ source: 'a', flags: 'b' }) != '/a/b'; })) {
  define(function toString() {
    var R = anObject(this);
    return '/'.concat(R.source, '/',
      'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
  });
// FF44- RegExp#toString has a wrong name
} else if ($toString.name != TO_STRING) {
  define(function toString() {
    return $toString.call(this);
  });
}


/***/ }),
/* 90 */
/***/ (function(module, exports, __webpack_require__) {

// 21.2.5.3 get RegExp.prototype.flags()
if (__webpack_require__(9) && /./g.flags != 'g') __webpack_require__(5).f(RegExp.prototype, 'flags', {
  configurable: true,
  get: __webpack_require__(91)
});


/***/ }),
/* 91 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// 21.2.5.3 get RegExp.prototype.flags
var anObject = __webpack_require__(6);
module.exports = function () {
  var that = anObject(this);
  var result = '';
  if (that.global) result += 'g';
  if (that.ignoreCase) result += 'i';
  if (that.multiline) result += 'm';
  if (that.unicode) result += 'u';
  if (that.sticky) result += 'y';
  return result;
};


/***/ }),
/* 92 */
/***/ (function(module, exports, __webpack_require__) {

var DateProto = Date.prototype;
var INVALID_DATE = 'Invalid Date';
var TO_STRING = 'toString';
var $toString = DateProto[TO_STRING];
var getTime = DateProto.getTime;
if (new Date(NaN) + '' != INVALID_DATE) {
  __webpack_require__(14)(DateProto, TO_STRING, function toString() {
    var value = getTime.call(this);
    // eslint-disable-next-line no-self-compare
    return value === value ? $toString.call(this) : INVALID_DATE;
  });
}


/***/ }),
/* 93 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var isRegExp = __webpack_require__(79);
var anObject = __webpack_require__(6);
var speciesConstructor = __webpack_require__(94);
var advanceStringIndex = __webpack_require__(95);
var toLength = __webpack_require__(30);
var callRegExpExec = __webpack_require__(97);
var regexpExec = __webpack_require__(99);
var fails = __webpack_require__(10);
var $min = Math.min;
var $push = [].push;
var $SPLIT = 'split';
var LENGTH = 'length';
var LAST_INDEX = 'lastIndex';
var MAX_UINT32 = 0xffffffff;

// babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError
var SUPPORTS_Y = !fails(function () { RegExp(MAX_UINT32, 'y'); });

// @@split logic
__webpack_require__(100)('split', 2, function (defined, SPLIT, $split, maybeCallNative) {
  var internalSplit;
  if (
    'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
    'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
    'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
    '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
    '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
    ''[$SPLIT](/.?/)[LENGTH]
  ) {
    // based on es5-shim implementation, need to rework it
    internalSplit = function (separator, limit) {
      var string = String(this);
      if (separator === undefined && limit === 0) return [];
      // If `separator` is not a regex, use native split
      if (!isRegExp(separator)) return $split.call(string, separator, limit);
      var output = [];
      var flags = (separator.ignoreCase ? 'i' : '') +
                  (separator.multiline ? 'm' : '') +
                  (separator.unicode ? 'u' : '') +
                  (separator.sticky ? 'y' : '');
      var lastLastIndex = 0;
      var splitLimit = limit === undefined ? MAX_UINT32 : limit >>> 0;
      // Make `global` and avoid `lastIndex` issues by working with a copy
      var separatorCopy = new RegExp(separator.source, flags + 'g');
      var match, lastIndex, lastLength;
      while (match = regexpExec.call(separatorCopy, string)) {
        lastIndex = separatorCopy[LAST_INDEX];
        if (lastIndex > lastLastIndex) {
          output.push(string.slice(lastLastIndex, match.index));
          if (match[LENGTH] > 1 && match.index < string[LENGTH]) $push.apply(output, match.slice(1));
          lastLength = match[0][LENGTH];
          lastLastIndex = lastIndex;
          if (output[LENGTH] >= splitLimit) break;
        }
        if (separatorCopy[LAST_INDEX] === match.index) separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
      }
      if (lastLastIndex === string[LENGTH]) {
        if (lastLength || !separatorCopy.test('')) output.push('');
      } else output.push(string.slice(lastLastIndex));
      return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
    };
  // Chakra, V8
  } else if ('0'[$SPLIT](undefined, 0)[LENGTH]) {
    internalSplit = function (separator, limit) {
      return separator === undefined && limit === 0 ? [] : $split.call(this, separator, limit);
    };
  } else {
    internalSplit = $split;
  }

  return [
    // `String.prototype.split` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.split
    function split(separator, limit) {
      var O = defined(this);
      var splitter = separator == undefined ? undefined : separator[SPLIT];
      return splitter !== undefined
        ? splitter.call(separator, O, limit)
        : internalSplit.call(String(O), separator, limit);
    },
    // `RegExp.prototype[@@split]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split
    //
    // NOTE: This cannot be properly polyfilled in engines that don't support
    // the 'y' flag.
    function (regexp, limit) {
      var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== $split);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var C = speciesConstructor(rx, RegExp);

      var unicodeMatching = rx.unicode;
      var flags = (rx.ignoreCase ? 'i' : '') +
                  (rx.multiline ? 'm' : '') +
                  (rx.unicode ? 'u' : '') +
                  (SUPPORTS_Y ? 'y' : 'g');

      // ^(? + rx + ) is needed, in combination with some S slicing, to
      // simulate the 'y' flag.
      var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);
      var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
      if (lim === 0) return [];
      if (S.length === 0) return callRegExpExec(splitter, S) === null ? [S] : [];
      var p = 0;
      var q = 0;
      var A = [];
      while (q < S.length) {
        splitter.lastIndex = SUPPORTS_Y ? q : 0;
        var z = callRegExpExec(splitter, SUPPORTS_Y ? S : S.slice(q));
        var e;
        if (
          z === null ||
          (e = $min(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p
        ) {
          q = advanceStringIndex(S, q, unicodeMatching);
        } else {
          A.push(S.slice(p, q));
          if (A.length === lim) return A;
          for (var i = 1; i <= z.length - 1; i++) {
            A.push(z[i]);
            if (A.length === lim) return A;
          }
          q = p = e;
        }
      }
      A.push(S.slice(p));
      return A;
    }
  ];
});


/***/ }),
/* 94 */
/***/ (function(module, exports, __webpack_require__) {

// 7.3.20 SpeciesConstructor(O, defaultConstructor)
var anObject = __webpack_require__(6);
var aFunction = __webpack_require__(21);
var SPECIES = __webpack_require__(46)('species');
module.exports = function (O, D) {
  var C = anObject(O).constructor;
  var S;
  return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
};


/***/ }),
/* 95 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var at = __webpack_require__(96)(true);

 // `AdvanceStringIndex` abstract operation
// https://tc39.github.io/ecma262/#sec-advancestringindex
module.exports = function (S, index, unicode) {
  return index + (unicode ? at(S, index).length : 1);
};


/***/ }),
/* 96 */
/***/ (function(module, exports, __webpack_require__) {

var toInteger = __webpack_require__(31);
var defined = __webpack_require__(28);
// true  -> String#at
// false -> String#codePointAt
module.exports = function (TO_STRING) {
  return function (that, pos) {
    var s = String(defined(that));
    var i = toInteger(pos);
    var l = s.length;
    var a, b;
    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;
    a = s.charCodeAt(i);
    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
      ? TO_STRING ? s.charAt(i) : a
      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
  };
};


/***/ }),
/* 97 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var classof = __webpack_require__(98);
var builtinExec = RegExp.prototype.exec;

 // `RegExpExec` abstract operation
// https://tc39.github.io/ecma262/#sec-regexpexec
module.exports = function (R, S) {
  var exec = R.exec;
  if (typeof exec === 'function') {
    var result = exec.call(R, S);
    if (typeof result !== 'object') {
      throw new TypeError('RegExp exec method returned something other than an Object or null');
    }
    return result;
  }
  if (classof(R) !== 'RegExp') {
    throw new TypeError('RegExp#exec called on incompatible receiver');
  }
  return builtinExec.call(R, S);
};


/***/ }),
/* 98 */
/***/ (function(module, exports, __webpack_require__) {

// getting tag from 19.1.3.6 Object.prototype.toString()
var cof = __webpack_require__(27);
var TAG = __webpack_require__(46)('toStringTag');
// ES3 wrong here
var ARG = cof(function () { return arguments; }()) == 'Arguments';

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

module.exports = function (it) {
  var O, T, B;
  return it === undefined ? 'Undefined' : it === null ? 'Null'
    // @@toStringTag case
    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
    // builtinTag case
    : ARG ? cof(O)
    // ES3 arguments fallback
    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
};


/***/ }),
/* 99 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var regexpFlags = __webpack_require__(91);

var nativeExec = RegExp.prototype.exec;
// This always refers to the native implementation, because the
// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,
// which loads this file before patching the method.
var nativeReplace = String.prototype.replace;

var patchedExec = nativeExec;

var LAST_INDEX = 'lastIndex';

var UPDATES_LAST_INDEX_WRONG = (function () {
  var re1 = /a/,
      re2 = /b*/g;
  nativeExec.call(re1, 'a');
  nativeExec.call(re2, 'a');
  return re1[LAST_INDEX] !== 0 || re2[LAST_INDEX] !== 0;
})();

// nonparticipating capturing group, copied from es5-shim's String#split patch.
var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;

var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED;

if (PATCH) {
  patchedExec = function exec(str) {
    var re = this;
    var lastIndex, reCopy, match, i;

    if (NPCG_INCLUDED) {
      reCopy = new RegExp('^' + re.source + '$(?!\\s)', regexpFlags.call(re));
    }
    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re[LAST_INDEX];

    match = nativeExec.call(re, str);

    if (UPDATES_LAST_INDEX_WRONG && match) {
      re[LAST_INDEX] = re.global ? match.index + match[0].length : lastIndex;
    }
    if (NPCG_INCLUDED && match && match.length > 1) {
      // Fix browsers whose `exec` methods don't consistently return `undefined`
      // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
      // eslint-disable-next-line no-loop-func
      nativeReplace.call(match[0], reCopy, function () {
        for (i = 1; i < arguments.length - 2; i++) {
          if (arguments[i] === undefined) match[i] = undefined;
        }
      });
    }

    return match;
  };
}

module.exports = patchedExec;


/***/ }),
/* 100 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

__webpack_require__(101);
var redefine = __webpack_require__(14);
var hide = __webpack_require__(4);
var fails = __webpack_require__(10);
var defined = __webpack_require__(28);
var wks = __webpack_require__(46);
var regexpExec = __webpack_require__(99);

var SPECIES = wks('species');

var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
  // #replace needs built-in support for named groups.
  // #match works fine because it just return the exec results, even if it has
  // a "grops" property.
  var re = /./;
  re.exec = function () {
    var result = [];
    result.groups = { a: '7' };
    return result;
  };
  return ''.replace(re, '$<a>') !== '7';
});

var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = (function () {
  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
  var re = /(?:)/;
  var originalExec = re.exec;
  re.exec = function () { return originalExec.apply(this, arguments); };
  var result = 'ab'.split(re);
  return result.length === 2 && result[0] === 'a' && result[1] === 'b';
})();

module.exports = function (KEY, length, exec) {
  var SYMBOL = wks(KEY);

  var DELEGATES_TO_SYMBOL = !fails(function () {
    // String methods call symbol-named RegEp methods
    var O = {};
    O[SYMBOL] = function () { return 7; };
    return ''[KEY](O) != 7;
  });

  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL ? !fails(function () {
    // Symbol-named RegExp methods call .exec
    var execCalled = false;
    var re = /a/;
    re.exec = function () { execCalled = true; return null; };
    if (KEY === 'split') {
      // RegExp[@@split] doesn't call the regex's exec method, but first creates
      // a new one. We need to return the patched regex when creating the new one.
      re.constructor = {};
      re.constructor[SPECIES] = function () { return re; };
    }
    re[SYMBOL]('');
    return !execCalled;
  }) : undefined;

  if (
    !DELEGATES_TO_SYMBOL ||
    !DELEGATES_TO_EXEC ||
    (KEY === 'replace' && !REPLACE_SUPPORTS_NAMED_GROUPS) ||
    (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
  ) {
    var nativeRegExpMethod = /./[SYMBOL];
    var fns = exec(
      defined,
      SYMBOL,
      ''[KEY],
      function maybeCallNative(nativeMethod, regexp, str, arg2, forceStringMethod) {
        if (regexp.exec === regexpExec) {
          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
            // The native String method already delegates to @@method (this
            // polyfilled function), leasing to infinite recursion.
            // We avoid it by directly calling the native @@method method.
            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
          }
          return { done: true, value: nativeMethod.call(str, regexp, arg2) };
        }
        return { done: false };
      }
    );
    var strfn = fns[0];
    var rxfn = fns[1];

    redefine(String.prototype, KEY, strfn);
    hide(RegExp.prototype, SYMBOL, length == 2
      // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
      // 21.2.5.11 RegExp.prototype[@@split](string, limit)
      ? function (string, arg) { return rxfn.call(string, this, arg); }
      // 21.2.5.6 RegExp.prototype[@@match](string)
      // 21.2.5.9 RegExp.prototype[@@search](string)
      : function (string) { return rxfn.call(string, this); }
    );
  }
};


/***/ }),
/* 101 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var regexpExec = __webpack_require__(99);
__webpack_require__(1)({
  target: 'RegExp',
  proto: true,
  forced: regexpExec !== /./.exec
}, {
  exec: regexpExec
});


/***/ }),
/* 102 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var anObject = __webpack_require__(6);
var toObject = __webpack_require__(40);
var toLength = __webpack_require__(30);
var toInteger = __webpack_require__(31);
var advanceStringIndex = __webpack_require__(95);
var regExpExec = __webpack_require__(97);
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;

var maybeToString = function (it) {
  return it === undefined ? it : String(it);
};

// @@replace logic
__webpack_require__(100)('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
  return [
    // `String.prototype.replace` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.replace
    function replace(searchValue, replaceValue) {
      var O = defined(this);
      var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
      return fn !== undefined
        ? fn.call(searchValue, O, replaceValue)
        : $replace.call(String(O), searchValue, replaceValue);
    },
    // `RegExp.prototype[@@replace]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
    function (regexp, replaceValue) {
      var res = maybeCallNative($replace, regexp, this, replaceValue);
      if (res.done) return res.value;

      var rx = anObject(regexp);
      var S = String(this);
      var functionalReplace = typeof replaceValue === 'function';
      if (!functionalReplace) replaceValue = String(replaceValue);
      var global = rx.global;
      if (global) {
        var fullUnicode = rx.unicode;
        rx.lastIndex = 0;
      }
      var results = [];
      while (true) {
        var result = regExpExec(rx, S);
        if (result === null) break;
        results.push(result);
        if (!global) break;
        var matchStr = String(result[0]);
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
      }
      var accumulatedResult = '';
      var nextSourcePosition = 0;
      for (var i = 0; i < results.length; i++) {
        result = results[i];
        var matched = String(result[0]);
        var position = max(min(toInteger(result.index), S.length), 0);
        var captures = [];
        // NOTE: This is equivalent to
        //   captures = result.slice(1).map(maybeToString)
        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
        for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
        var namedCaptures = result.groups;
        if (functionalReplace) {
          var replacerArgs = [matched].concat(captures, position, S);
          if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
          var replacement = String(replaceValue.apply(undefined, replacerArgs));
        } else {
          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
        }
        if (position >= nextSourcePosition) {
          accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
          nextSourcePosition = position + matched.length;
        }
      }
      return accumulatedResult + S.slice(nextSourcePosition);
    }
  ];

    // https://tc39.github.io/ecma262/#sec-getsubstitution
  function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
    var tailPos = position + matched.length;
    var m = captures.length;
    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
    if (namedCaptures !== undefined) {
      namedCaptures = toObject(namedCaptures);
      symbols = SUBSTITUTION_SYMBOLS;
    }
    return $replace.call(replacement, symbols, function (match, ch) {
      var capture;
      switch (ch.charAt(0)) {
        case '$': return '$';
        case '&': return matched;
        case '`': return str.slice(0, position);
        case "'": return str.slice(tailPos);
        case '<':
          capture = namedCaptures[ch.slice(1, -1)];
          break;
        default: // \d\d?
          var n = +ch;
          if (n === 0) return match;
          if (n > m) {
            var f = floor(n / 10);
            if (f === 0) return match;
            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
            return match;
          }
          capture = captures[n - 1];
      }
      return capture === undefined ? '' : capture;
    });
  }
});


/***/ }),
/* 103 */
/***/ (function(module, exports, __webpack_require__) {

// 20.1.2.6 Number.MAX_SAFE_INTEGER
var $export = __webpack_require__(1);

$export($export.S, 'Number', { MAX_SAFE_INTEGER: 0x1fffffffffffff });


/***/ }),
/* 104 */
/***/ (function(module, exports, __webpack_require__) {

// 20.1.2.10 Number.MIN_SAFE_INTEGER
var $export = __webpack_require__(1);

$export($export.S, 'Number', { MIN_SAFE_INTEGER: -0x1fffffffffffff });


/***/ }),
/* 105 */
/***/ (function(module) {

module.exports = JSON.parse("{\"name\":\"v-click-outside-x\",\"version\":\"4.1.0\",\"description\":\"Vue directive to react on clicks outside an element.\",\"homepage\":\"https://github.com/Xotic750/v-click-outside-x.git\",\"author\":{\"name\":\"Graham Fairweather\",\"email\":\"xotic750@gmail.com\"},\"copyright\":\"Copyright (c) 2018-present\",\"keywords\":[\"vue\",\"click\",\"outside\",\"directive\"],\"files\":[\"dist\",\"src\"],\"module\":\"dist/v-click-outside-x.esm.js\",\"main\":\"dist/v-click-outside-x.js\",\"typings\":\"types/index.d.ts\",\"jsdelivr\":\"dist/v-click-outside-x.min.js\",\"scripts\":{\"build:esm\":\"mkdirp dist && babel -s true --env-name esm src/v-click-outside-x.js -o dist/v-click-outside-x.esm.js\",\"build:base\":\"webpack --bail --progress --profile --colors\",\"build\":\"npm run build:esm && cross-env NODE_ENV=production npm run build:base --\",\"build:dev\":\"npm run build:base --\",\"clean\":\"rimraf dist && npm run clean:coverage\",\"clean:coverage\":\"rimraf __tests__/coverage\",\"lint\":\"eslint -f 'node_modules/eslint-friendly-formatter' --ext .js,.json .\",\"lint-fix\":\"npm run lint -- --fix\",\"report\":\"npm run build -- --env.report\",\"report:dev\":\"npm run build:dev -- --env.report\",\"security\":\"npm audit\",\"security-fix\":\"npm run security -- fix\",\"start\":\"nodemon --exec \\\"npm run build\\\" --watch src\",\"test\":\"npm run clean:coverage && jest\",\"test:ci\":\"npm run test -- --ci --maxWorkers=2\",\"test:ci-coveralls\":\"npm run test:ci -- --coverage --coverageReporters=text-lcov | coveralls\",\"test:coverage\":\"npm run test -- --coverage\"},\"license\":\"MIT\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/Xotic750/v-click-outside-x.git\"},\"bugs\":{\"url\":\"https://github.com/Xotic750/v-click-outside-x/issues\"},\"dependencies\":{},\"devDependencies\":{\"@babel/cli\":\"^7.8.3\",\"@babel/core\":\"^7.8.3\",\"@babel/node\":\"^7.8.3\",\"@babel/plugin-transform-property-mutators\":\"^7.8.3\",\"@babel/plugin-transform-runtime\":\"^7.8.3\",\"@babel/preset-env\":\"^7.8.3\",\"@babel/runtime\":\"^7.8.3\",\"@types/jest\":\"^24.0.25\",\"@types/node\":\"^13.1.6\",\"@types/webpack\":\"^4.41.2\",\"@typescript-eslint/eslint-plugin\":\"^2.16.0\",\"@typescript-eslint/parser\":\"^2.16.0\",\"@xotic750/eslint-config-recommended\":\"^1.2.0\",\"babel-core\":\"^7.0.0-0\",\"babel-eslint\":\"^10.0.3\",\"babel-loader\":\"^8.0.6\",\"babel-plugin-lodash\":\"^3.3.4\",\"caniuse-lite\":\"^1.0.30001020\",\"coveralls\":\"^3.0.9\",\"cross-env\":\"^6.0.3\",\"eslint\":\"^6.8.0\",\"eslint-friendly-formatter\":\"^4.0.1\",\"eslint-import-resolver-webpack\":\"^0.12.1\",\"eslint-loader\":\"^3.0.3\",\"eslint-plugin-babel\":\"^5.3.0\",\"eslint-plugin-compat\":\"^3.3.0\",\"eslint-plugin-css-modules\":\"^2.11.0\",\"eslint-plugin-eslint-comments\":\"^3.1.2\",\"eslint-plugin-html\":\"^6.0.0\",\"eslint-plugin-import\":\"^2.20.0\",\"eslint-plugin-jest\":\"^22.17.0\",\"eslint-plugin-jsdoc\":\"^20.3.0\",\"eslint-plugin-json\":\"^1.4.0\",\"eslint-plugin-lodash\":\"^6.0.0\",\"eslint-plugin-no-use-extend-native\":\"^0.4.1\",\"eslint-plugin-prefer-object-spread\":\"^1.2.1\",\"eslint-plugin-prettier\":\"^3.1.2\",\"eslint-plugin-promise\":\"^4.2.1\",\"eslint-plugin-sort-class-members\":\"^1.6.0\",\"eslint-plugin-switch-case\":\"^1.1.2\",\"jest\":\"^24.9.0\",\"jest-cli\":\"^24.9.0\",\"jest-file\":\"^1.0.0\",\"lodash\":\"^4.17.15\",\"lodash-webpack-plugin\":\"^0.11.5\",\"mkdirp\":\"^0.5.1\",\"nodemon\":\"^2.0.2\",\"prettier\":\"^1.19.1\",\"rimraf\":\"^3.0.0\",\"source-map-loader\":\"^0.2.4\",\"strip-ansi\":\"^6.0.0\",\"terser-webpack-plugin\":\"^2.3.2\",\"typescript\":\"^3.7.4\",\"webpack\":\"^4.41.5\",\"webpack-bundle-analyzer\":\"^3.6.0\",\"webpack-cli\":\"^3.3.10\",\"webpack-global-object-x\":\"^1.0.0\",\"webpack-merge\":\"^4.2.2\"},\"engines\":{\"node\":\">=8.11.4\",\"npm\":\">=6.10.1\"},\"browserslist\":[\"> 1%\",\"Explorer >= 9\"],\"__npminstall_done\":\"Thu Oct 08 2020 22:13:58 GMT+0800 (中国标准时间)\",\"_from\":\"v-click-outside-x@4.1.0\",\"_resolved\":\"https://registry.npm.taobao.org/v-click-outside-x/download/v-click-outside-x-4.1.0.tgz\"}");

/***/ }),
/* 106 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var isMergeableObject = function isMergeableObject(value) {
	return isNonNullObject(value)
		&& !isSpecial(value)
};

function isNonNullObject(value) {
	return !!value && typeof value === 'object'
}

function isSpecial(value) {
	var stringValue = Object.prototype.toString.call(value);

	return stringValue === '[object RegExp]'
		|| stringValue === '[object Date]'
		|| isReactElement(value)
}

// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;

function isReactElement(value) {
	return value.$$typeof === REACT_ELEMENT_TYPE
}

function emptyTarget(val) {
	return Array.isArray(val) ? [] : {}
}

function cloneUnlessOtherwiseSpecified(value, options) {
	return (options.clone !== false && options.isMergeableObject(value))
		? deepmerge(emptyTarget(value), value, options)
		: value
}

function defaultArrayMerge(target, source, options) {
	return target.concat(source).map(function(element) {
		return cloneUnlessOtherwiseSpecified(element, options)
	})
}

function getMergeFunction(key, options) {
	if (!options.customMerge) {
		return deepmerge
	}
	var customMerge = options.customMerge(key);
	return typeof customMerge === 'function' ? customMerge : deepmerge
}

function getEnumerableOwnPropertySymbols(target) {
	return Object.getOwnPropertySymbols
		? Object.getOwnPropertySymbols(target).filter(function(symbol) {
			return target.propertyIsEnumerable(symbol)
		})
		: []
}

function getKeys(target) {
	return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))
}

function propertyIsOnObject(object, property) {
	try {
		return property in object
	} catch(_) {
		return false
	}
}

// Protects from prototype poisoning and unexpected merging up the prototype chain.
function propertyIsUnsafe(target, key) {
	return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,
		&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,
			&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.
}

function mergeObject(target, source, options) {
	var destination = {};
	if (options.isMergeableObject(target)) {
		getKeys(target).forEach(function(key) {
			destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
		});
	}
	getKeys(source).forEach(function(key) {
		if (propertyIsUnsafe(target, key)) {
			return
		}

		if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
			destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
		} else {
			destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
		}
	});
	return destination
}

function deepmerge(target, source, options) {
	options = options || {};
	options.arrayMerge = options.arrayMerge || defaultArrayMerge;
	options.isMergeableObject = options.isMergeableObject || isMergeableObject;
	// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()
	// implementations can use it. The caller may not replace it.
	options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;

	var sourceIsArray = Array.isArray(source);
	var targetIsArray = Array.isArray(target);
	var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;

	if (!sourceAndTargetTypesMatch) {
		return cloneUnlessOtherwiseSpecified(source, options)
	} else if (sourceIsArray) {
		return options.arrayMerge(target, source, options)
	} else {
		return mergeObject(target, source, options)
	}
}

deepmerge.all = function deepmergeAll(array, options) {
	if (!Array.isArray(array)) {
		throw new Error('first argument should be an array')
	}

	return array.reduce(function(prev, next) {
		return deepmerge(prev, next, options)
	}, {})
};

var deepmerge_1 = deepmerge;

module.exports = deepmerge_1;


/***/ }),
/* 107 */
/***/ (function(module, exports, __webpack_require__) {

__webpack_require__(108)('asyncIterator');


/***/ }),
/* 108 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(2);
var core = __webpack_require__(3);
var LIBRARY = __webpack_require__(19);
var wksExt = __webpack_require__(109);
var defineProperty = __webpack_require__(5).f;
module.exports = function (name) {
  var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});
  if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });
};


/***/ }),
/* 109 */
/***/ (function(module, exports, __webpack_require__) {

exports.f = __webpack_require__(46);


/***/ }),
/* 110 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// ECMAScript 6 symbols shim
var global = __webpack_require__(2);
var has = __webpack_require__(15);
var DESCRIPTORS = __webpack_require__(9);
var $export = __webpack_require__(1);
var redefine = __webpack_require__(14);
var META = __webpack_require__(111).KEY;
var $fails = __webpack_require__(10);
var shared = __webpack_require__(18);
var setToStringTag = __webpack_require__(54);
var uid = __webpack_require__(16);
var wks = __webpack_require__(46);
var wksExt = __webpack_require__(109);
var wksDefine = __webpack_require__(108);
var enumKeys = __webpack_require__(112);
var isArray = __webpack_require__(85);
var anObject = __webpack_require__(6);
var isObject = __webpack_require__(7);
var toObject = __webpack_require__(40);
var toIObject = __webpack_require__(25);
var toPrimitive = __webpack_require__(12);
var createDesc = __webpack_require__(13);
var _create = __webpack_require__(51);
var gOPNExt = __webpack_require__(113);
var $GOPD = __webpack_require__(36);
var $GOPS = __webpack_require__(35);
var $DP = __webpack_require__(5);
var $keys = __webpack_require__(41);
var gOPD = $GOPD.f;
var dP = $DP.f;
var gOPN = gOPNExt.f;
var $Symbol = global.Symbol;
var $JSON = global.JSON;
var _stringify = $JSON && $JSON.stringify;
var PROTOTYPE = 'prototype';
var HIDDEN = wks('_hidden');
var TO_PRIMITIVE = wks('toPrimitive');
var isEnum = {}.propertyIsEnumerable;
var SymbolRegistry = shared('symbol-registry');
var AllSymbols = shared('symbols');
var OPSymbols = shared('op-symbols');
var ObjectProto = Object[PROTOTYPE];
var USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;
var QObject = global.QObject;
// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
var setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;

// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
var setSymbolDesc = DESCRIPTORS && $fails(function () {
  return _create(dP({}, 'a', {
    get: function () { return dP(this, 'a', { value: 7 }).a; }
  })).a != 7;
}) ? function (it, key, D) {
  var protoDesc = gOPD(ObjectProto, key);
  if (protoDesc) delete ObjectProto[key];
  dP(it, key, D);
  if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);
} : dP;

var wrap = function (tag) {
  var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
  sym._k = tag;
  return sym;
};

var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {
  return typeof it == 'symbol';
} : function (it) {
  return it instanceof $Symbol;
};

var $defineProperty = function defineProperty(it, key, D) {
  if (it === ObjectProto) $defineProperty(OPSymbols, key, D);
  anObject(it);
  key = toPrimitive(key, true);
  anObject(D);
  if (has(AllSymbols, key)) {
    if (!D.enumerable) {
      if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));
      it[HIDDEN][key] = true;
    } else {
      if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;
      D = _create(D, { enumerable: createDesc(0, false) });
    } return setSymbolDesc(it, key, D);
  } return dP(it, key, D);
};
var $defineProperties = function defineProperties(it, P) {
  anObject(it);
  var keys = enumKeys(P = toIObject(P));
  var i = 0;
  var l = keys.length;
  var key;
  while (l > i) $defineProperty(it, key = keys[i++], P[key]);
  return it;
};
var $create = function create(it, P) {
  return P === undefined ? _create(it) : $defineProperties(_create(it), P);
};
var $propertyIsEnumerable = function propertyIsEnumerable(key) {
  var E = isEnum.call(this, key = toPrimitive(key, true));
  if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;
  return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
};
var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {
  it = toIObject(it);
  key = toPrimitive(key, true);
  if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;
  var D = gOPD(it, key);
  if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;
  return D;
};
var $getOwnPropertyNames = function getOwnPropertyNames(it) {
  var names = gOPN(toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);
  } return result;
};
var $getOwnPropertySymbols = function getOwnPropertySymbols(it) {
  var IS_OP = it === ObjectProto;
  var names = gOPN(IS_OP ? OPSymbols : toIObject(it));
  var result = [];
  var i = 0;
  var key;
  while (names.length > i) {
    if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);
  } return result;
};

// 19.4.1.1 Symbol([description])
if (!USE_NATIVE) {
  $Symbol = function Symbol() {
    if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');
    var tag = uid(arguments.length > 0 ? arguments[0] : undefined);
    var $set = function (value) {
      if (this === ObjectProto) $set.call(OPSymbols, value);
      if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;
      setSymbolDesc(this, tag, createDesc(1, value));
    };
    if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });
    return wrap(tag);
  };
  redefine($Symbol[PROTOTYPE], 'toString', function toString() {
    return this._k;
  });

  $GOPD.f = $getOwnPropertyDescriptor;
  $DP.f = $defineProperty;
  __webpack_require__(23).f = gOPNExt.f = $getOwnPropertyNames;
  __webpack_require__(37).f = $propertyIsEnumerable;
  $GOPS.f = $getOwnPropertySymbols;

  if (DESCRIPTORS && !__webpack_require__(19)) {
    redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
  }

  wksExt.f = function (name) {
    return wrap(wks(name));
  };
}

$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });

for (var es6Symbols = (
  // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14
  'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);

for (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);

$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
  // 19.4.2.1 Symbol.for(key)
  'for': function (key) {
    return has(SymbolRegistry, key += '')
      ? SymbolRegistry[key]
      : SymbolRegistry[key] = $Symbol(key);
  },
  // 19.4.2.5 Symbol.keyFor(sym)
  keyFor: function keyFor(sym) {
    if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');
    for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;
  },
  useSetter: function () { setter = true; },
  useSimple: function () { setter = false; }
});

$export($export.S + $export.F * !USE_NATIVE, 'Object', {
  // 19.1.2.2 Object.create(O [, Properties])
  create: $create,
  // 19.1.2.4 Object.defineProperty(O, P, Attributes)
  defineProperty: $defineProperty,
  // 19.1.2.3 Object.defineProperties(O, Properties)
  defineProperties: $defineProperties,
  // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
  getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
  // 19.1.2.7 Object.getOwnPropertyNames(O)
  getOwnPropertyNames: $getOwnPropertyNames,
  // 19.1.2.8 Object.getOwnPropertySymbols(O)
  getOwnPropertySymbols: $getOwnPropertySymbols
});

// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives
// https://bugs.chromium.org/p/v8/issues/detail?id=3443
var FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });

$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {
  getOwnPropertySymbols: function getOwnPropertySymbols(it) {
    return $GOPS.f(toObject(it));
  }
});

// 24.3.2 JSON.stringify(value [, replacer [, space]])
$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {
  var S = $Symbol();
  // MS Edge converts symbol values to JSON as {}
  // WebKit converts symbol values to JSON as null
  // V8 throws on boxed symbols
  return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';
})), 'JSON', {
  stringify: function stringify(it) {
    var args = [it];
    var i = 1;
    var replacer, $replacer;
    while (arguments.length > i) args.push(arguments[i++]);
    $replacer = replacer = args[1];
    if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined
    if (!isArray(replacer)) replacer = function (key, value) {
      if (typeof $replacer == 'function') value = $replacer.call(this, key, value);
      if (!isSymbol(value)) return value;
    };
    args[1] = replacer;
    return _stringify.apply($JSON, args);
  }
});

// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(4)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
// 19.4.3.5 Symbol.prototype[@@toStringTag]
setToStringTag($Symbol, 'Symbol');
// 20.2.1.9 Math[@@toStringTag]
setToStringTag(Math, 'Math', true);
// 24.3.3 JSON[@@toStringTag]
setToStringTag(global.JSON, 'JSON', true);


/***/ }),
/* 111 */
/***/ (function(module, exports, __webpack_require__) {

var META = __webpack_require__(16)('meta');
var isObject = __webpack_require__(7);
var has = __webpack_require__(15);
var setDesc = __webpack_require__(5).f;
var id = 0;
var isExtensible = Object.isExtensible || function () {
  return true;
};
var FREEZE = !__webpack_require__(10)(function () {
  return isExtensible(Object.preventExtensions({}));
});
var setMeta = function (it) {
  setDesc(it, META, { value: {
    i: 'O' + ++id, // object ID
    w: {}          // weak collections IDs
  } });
};
var fastKey = function (it, create) {
  // return primitive with prefix
  if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return 'F';
    // not necessary to add metadata
    if (!create) return 'E';
    // add missing metadata
    setMeta(it);
  // return object ID
  } return it[META].i;
};
var getWeak = function (it, create) {
  if (!has(it, META)) {
    // can't set metadata to uncaught frozen object
    if (!isExtensible(it)) return true;
    // not necessary to add metadata
    if (!create) return false;
    // add missing metadata
    setMeta(it);
  // return hash weak collections IDs
  } return it[META].w;
};
// add metadata on freeze-family methods calling
var onFreeze = function (it) {
  if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);
  return it;
};
var meta = module.exports = {
  KEY: META,
  NEED: false,
  fastKey: fastKey,
  getWeak: getWeak,
  onFreeze: onFreeze
};


/***/ }),
/* 112 */
/***/ (function(module, exports, __webpack_require__) {

// all enumerable object keys, includes symbols
var getKeys = __webpack_require__(41);
var gOPS = __webpack_require__(35);
var pIE = __webpack_require__(37);
module.exports = function (it) {
  var result = getKeys(it);
  var getSymbols = gOPS.f;
  if (getSymbols) {
    var symbols = getSymbols(it);
    var isEnum = pIE.f;
    var i = 0;
    var key;
    while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);
  } return result;
};


/***/ }),
/* 113 */
/***/ (function(module, exports, __webpack_require__) {

// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
var toIObject = __webpack_require__(25);
var gOPN = __webpack_require__(23).f;
var toString = {}.toString;

var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
  ? Object.getOwnPropertyNames(window) : [];

var getWindowNames = function (it) {
  try {
    return gOPN(it);
  } catch (e) {
    return windowNames.slice();
  }
};

module.exports.f = function getOwnPropertyNames(it) {
  return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
};


/***/ }),
/* 114 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $at = __webpack_require__(96)(true);

// 21.1.3.27 String.prototype[@@iterator]()
__webpack_require__(49)(String, 'String', function (iterated) {
  this._t = String(iterated); // target
  this._i = 0;                // next index
// 21.1.5.2.1 %StringIteratorPrototype%.next()
}, function () {
  var O = this._t;
  var index = this._i;
  var point;
  if (index >= O.length) return { value: undefined, done: true };
  point = $at(O, index);
  this._i += point.length;
  return { value: point, done: false };
});


/***/ }),
/* 115 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var ctx = __webpack_require__(20);
var $export = __webpack_require__(1);
var toObject = __webpack_require__(40);
var call = __webpack_require__(116);
var isArrayIter = __webpack_require__(117);
var toLength = __webpack_require__(30);
var createProperty = __webpack_require__(38);
var getIterFn = __webpack_require__(118);

$export($export.S + $export.F * !__webpack_require__(119)(function (iter) { Array.from(iter); }), 'Array', {
  // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
  from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
    var O = toObject(arrayLike);
    var C = typeof this == 'function' ? this : Array;
    var aLen = arguments.length;
    var mapfn = aLen > 1 ? arguments[1] : undefined;
    var mapping = mapfn !== undefined;
    var index = 0;
    var iterFn = getIterFn(O);
    var length, result, step, iterator;
    if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
    // if object isn't iterable or it's array with default iterator - use simple case
    if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {
      for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {
        createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);
      }
    } else {
      length = toLength(O.length);
      for (result = new C(length); length > index; index++) {
        createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
      }
    }
    result.length = index;
    return result;
  }
});


/***/ }),
/* 116 */
/***/ (function(module, exports, __webpack_require__) {

// call something on iterator step with safe closing on error
var anObject = __webpack_require__(6);
module.exports = function (iterator, fn, value, entries) {
  try {
    return entries ? fn(anObject(value)[0], value[1]) : fn(value);
  // 7.4.6 IteratorClose(iterator, completion)
  } catch (e) {
    var ret = iterator['return'];
    if (ret !== undefined) anObject(ret.call(iterator));
    throw e;
  }
};


/***/ }),
/* 117 */
/***/ (function(module, exports, __webpack_require__) {

// check on default Array iterator
var Iterators = __webpack_require__(48);
var ITERATOR = __webpack_require__(46)('iterator');
var ArrayProto = Array.prototype;

module.exports = function (it) {
  return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
};


/***/ }),
/* 118 */
/***/ (function(module, exports, __webpack_require__) {

var classof = __webpack_require__(98);
var ITERATOR = __webpack_require__(46)('iterator');
var Iterators = __webpack_require__(48);
module.exports = __webpack_require__(3).getIteratorMethod = function (it) {
  if (it != undefined) return it[ITERATOR]
    || it['@@iterator']
    || Iterators[classof(it)];
};


/***/ }),
/* 119 */
/***/ (function(module, exports, __webpack_require__) {

var ITERATOR = __webpack_require__(46)('iterator');
var SAFE_CLOSING = false;

try {
  var riter = [7][ITERATOR]();
  riter['return'] = function () { SAFE_CLOSING = true; };
  // eslint-disable-next-line no-throw-literal
  Array.from(riter, function () { throw 2; });
} catch (e) { /* empty */ }

module.exports = function (exec, skipClosing) {
  if (!skipClosing && !SAFE_CLOSING) return false;
  var safe = false;
  try {
    var arr = [7];
    var iter = arr[ITERATOR]();
    iter.next = function () { return { done: safe = true }; };
    arr[ITERATOR] = function () { return iter; };
    exec(arr);
  } catch (e) { /* empty */ }
  return safe;
};


/***/ }),
/* 120 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

// B.2.3.6 String.prototype.fixed()
__webpack_require__(121)('fixed', function (createHTML) {
  return function fixed() {
    return createHTML(this, 'tt', '', '');
  };
});


/***/ }),
/* 121 */
/***/ (function(module, exports, __webpack_require__) {

var $export = __webpack_require__(1);
var fails = __webpack_require__(10);
var defined = __webpack_require__(28);
var quot = /"/g;
// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
var createHTML = function (string, tag, attribute, value) {
  var S = String(defined(string));
  var p1 = '<' + tag;
  if (attribute !== '') p1 += ' ' + attribute + '="' + String(value).replace(quot, '&quot;') + '"';
  return p1 + '>' + S + '</' + tag + '>';
};
module.exports = function (NAME, exec) {
  var O = {};
  O[NAME] = exec(createHTML);
  $export($export.P + $export.F * fails(function () {
    var test = ''[NAME]('"');
    return test !== test.toLowerCase() || test.split('"').length > 3;
  }), 'String', O);
};


/***/ }),
/* 122 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var $export = __webpack_require__(1);
var aFunction = __webpack_require__(21);
var toObject = __webpack_require__(40);
var fails = __webpack_require__(10);
var $sort = [].sort;
var test = [1, 2, 3];

$export($export.P + $export.F * (fails(function () {
  // IE8-
  test.sort(undefined);
}) || !fails(function () {
  // V8 bug
  test.sort(null);
  // Old WebKit
}) || !__webpack_require__(123)($sort)), 'Array', {
  // 22.1.3.25 Array.prototype.sort(comparefn)
  sort: function sort(comparefn) {
    return comparefn === undefined
      ? $sort.call(toObject(this))
      : $sort.call(toObject(this), aFunction(comparefn));
  }
});


/***/ }),
/* 123 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var fails = __webpack_require__(10);

module.exports = function (method, arg) {
  return !!method && fails(function () {
    // eslint-disable-next-line no-useless-call
    arg ? method.call(null, function () { /* empty */ }, 1) : method.call(null);
  });
};


/***/ }),
/* 124 */
/***/ (function(module, exports, __webpack_require__) {

var global = __webpack_require__(2);
var inheritIfRequired = __webpack_require__(57);
var dP = __webpack_require__(5).f;
var gOPN = __webpack_require__(23).f;
var isRegExp = __webpack_require__(79);
var $flags = __webpack_require__(91);
var $RegExp = global.RegExp;
var Base = $RegExp;
var proto = $RegExp.prototype;
var re1 = /a/g;
var re2 = /a/g;
// "new" creates a new object, old webkit buggy here
var CORRECT_NEW = new $RegExp(re1) !== re1;

if (__webpack_require__(9) && (!CORRECT_NEW || __webpack_require__(10)(function () {
  re2[__webpack_require__(46)('match')] = false;
  // RegExp constructor can alter flags and IsRegExp works correct with @@match
  return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
}))) {
  $RegExp = function RegExp(p, f) {
    var tiRE = this instanceof $RegExp;
    var piRE = isRegExp(p);
    var fiU = f === undefined;
    return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
      : inheritIfRequired(CORRECT_NEW
        ? new Base(piRE && !fiU ? p.source : p, f)
        : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
      , tiRE ? this : proto, $RegExp);
  };
  var proxy = function (key) {
    key in $RegExp || dP($RegExp, key, {
      configurable: true,
      get: function () { return Base[key]; },
      set: function (it) { Base[key] = it; }
    });
  };
  for (var keys = gOPN(Base), i = 0; keys.length > i;) proxy(keys[i++]);
  proto.constructor = $RegExp;
  $RegExp.prototype = proto;
  __webpack_require__(14)(global, 'RegExp', $RegExp);
}

__webpack_require__(125)('RegExp');


/***/ }),
/* 125 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";

var global = __webpack_require__(2);
var dP = __webpack_require__(5);
var DESCRIPTORS = __webpack_require__(9);
var SPECIES = __webpack_require__(46)('species');

module.exports = function (KEY) {
  var C = global[KEY];
  if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {
    configurable: true,
    get: function () { return this; }
  });
};


/***/ }),
/* 126 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var anObject = __webpack_require__(6);
var sameValue = __webpack_require__(127);
var regExpExec = __webpack_require__(97);

// @@search logic
__webpack_require__(100)('search', 1, function (defined, SEARCH, $search, maybeCallNative) {
  return [
    // `String.prototype.search` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.search
    function search(regexp) {
      var O = defined(this);
      var fn = regexp == undefined ? undefined : regexp[SEARCH];
      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
    },
    // `RegExp.prototype[@@search]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@search
    function (regexp) {
      var res = maybeCallNative($search, regexp, this);
      if (res.done) return res.value;
      var rx = anObject(regexp);
      var S = String(this);
      var previousLastIndex = rx.lastIndex;
      if (!sameValue(previousLastIndex, 0)) rx.lastIndex = 0;
      var result = regExpExec(rx, S);
      if (!sameValue(rx.lastIndex, previousLastIndex)) rx.lastIndex = previousLastIndex;
      return result === null ? -1 : result.index;
    }
  ];
});


/***/ }),
/* 127 */
/***/ (function(module, exports) {

// 7.2.9 SameValue(x, y)
module.exports = Object.is || function is(x, y) {
  // eslint-disable-next-line no-self-compare
  return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
};


/***/ }),
/* 128 */
/***/ (function(module, exports, __webpack_require__) {

"use strict";


var anObject = __webpack_require__(6);
var toLength = __webpack_require__(30);
var advanceStringIndex = __webpack_require__(95);
var regExpExec = __webpack_require__(97);

// @@match logic
__webpack_require__(100)('match', 1, function (defined, MATCH, $match, maybeCallNative) {
  return [
    // `String.prototype.match` method
    // https://tc39.github.io/ecma262/#sec-string.prototype.match
    function match(regexp) {
      var O = defined(this);
      var fn = regexp == undefined ? undefined : regexp[MATCH];
      return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
    },
    // `RegExp.prototype[@@match]` method
    // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match
    function (regexp) {
      var res = maybeCallNative($match, regexp, this);
      if (res.done) return res.value;
      var rx = anObject(regexp);
      var S = String(this);
      if (!rx.global) return regExpExec(rx, S);
      var fullUnicode = rx.unicode;
      rx.lastIndex = 0;
      var A = [];
      var n = 0;
      var result;
      while ((result = regExpExec(rx, S)) !== null) {
        var matchStr = String(result[0]);
        A[n] = matchStr;
        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
        n++;
      }
      return n === 0 ? null : A;
    }
  ];
});


/***/ }),
/* 129 */
/***/ (function(module, exports, __webpack_require__) {

/**
 * Copyright (c) 2014-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

var runtime = (function (exports) {
  "use strict";

  var Op = Object.prototype;
  var hasOwn = Op.hasOwnProperty;
  var undefined; // More compressible than void 0.
  var $Symbol = typeof Symbol === "function" ? Symbol : {};
  var iteratorSymbol = $Symbol.iterator || "@@iterator";
  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";

  function define(obj, key, value) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
    return obj[key];
  }
  try {
    // IE 8 has a broken Object.defineProperty that only works on DOM objects.
    define({}, "");
  } catch (err) {
    define = function(obj, key, value) {
      return obj[key] = value;
    };
  }

  function wrap(innerFn, outerFn, self, tryLocsList) {
    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
    var generator = Object.create(protoGenerator.prototype);
    var context = new Context(tryLocsList || []);

    // The ._invoke method unifies the implementations of the .next,
    // .throw, and .return methods.
    generator._invoke = makeInvokeMethod(innerFn, self, context);

    return generator;
  }
  exports.wrap = wrap;

  // Try/catch helper to minimize deoptimizations. Returns a completion
  // record like context.tryEntries[i].completion. This interface could
  // have been (and was previously) designed to take a closure to be
  // invoked without arguments, but in all the cases we care about we
  // already have an existing method we want to call, so there's no need
  // to create a new function object. We can even get away with assuming
  // the method takes exactly one argument, since that happens to be true
  // in every case, so we don't have to touch the arguments object. The
  // only additional allocation required is the completion record, which
  // has a stable shape and so hopefully should be cheap to allocate.
  function tryCatch(fn, obj, arg) {
    try {
      return { type: "normal", arg: fn.call(obj, arg) };
    } catch (err) {
      return { type: "throw", arg: err };
    }
  }

  var GenStateSuspendedStart = "suspendedStart";
  var GenStateSuspendedYield = "suspendedYield";
  var GenStateExecuting = "executing";
  var GenStateCompleted = "completed";

  // Returning this object from the innerFn has the same effect as
  // breaking out of the dispatch switch statement.
  var ContinueSentinel = {};

  // Dummy constructor functions that we use as the .constructor and
  // .constructor.prototype properties for functions that return Generator
  // objects. For full spec compliance, you may wish to configure your
  // minifier not to mangle the names of these two functions.
  function Generator() {}
  function GeneratorFunction() {}
  function GeneratorFunctionPrototype() {}

  // This is a polyfill for %IteratorPrototype% for environments that
  // don't natively support it.
  var IteratorPrototype = {};
  IteratorPrototype[iteratorSymbol] = function () {
    return this;
  };

  var getProto = Object.getPrototypeOf;
  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  if (NativeIteratorPrototype &&
      NativeIteratorPrototype !== Op &&
      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
    // This environment has a native %IteratorPrototype%; use it instead
    // of the polyfill.
    IteratorPrototype = NativeIteratorPrototype;
  }

  var Gp = GeneratorFunctionPrototype.prototype =
    Generator.prototype = Object.create(IteratorPrototype);
  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
  GeneratorFunctionPrototype.constructor = GeneratorFunction;
  GeneratorFunction.displayName = define(
    GeneratorFunctionPrototype,
    toStringTagSymbol,
    "GeneratorFunction"
  );

  // Helper for defining the .next, .throw, and .return methods of the
  // Iterator interface in terms of a single ._invoke method.
  function defineIteratorMethods(prototype) {
    ["next", "throw", "return"].forEach(function(method) {
      define(prototype, method, function(arg) {
        return this._invoke(method, arg);
      });
    });
  }

  exports.isGeneratorFunction = function(genFun) {
    var ctor = typeof genFun === "function" && genFun.constructor;
    return ctor
      ? ctor === GeneratorFunction ||
        // For the native GeneratorFunction constructor, the best we can
        // do is to check its .name property.
        (ctor.displayName || ctor.name) === "GeneratorFunction"
      : false;
  };

  exports.mark = function(genFun) {
    if (Object.setPrototypeOf) {
      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
    } else {
      genFun.__proto__ = GeneratorFunctionPrototype;
      define(genFun, toStringTagSymbol, "GeneratorFunction");
    }
    genFun.prototype = Object.create(Gp);
    return genFun;
  };

  // Within the body of any async function, `await x` is transformed to
  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
  // `hasOwn.call(value, "__await")` to determine if the yielded value is
  // meant to be awaited.
  exports.awrap = function(arg) {
    return { __await: arg };
  };

  function AsyncIterator(generator, PromiseImpl) {
    function invoke(method, arg, resolve, reject) {
      var record = tryCatch(generator[method], generator, arg);
      if (record.type === "throw") {
        reject(record.arg);
      } else {
        var result = record.arg;
        var value = result.value;
        if (value &&
            typeof value === "object" &&
            hasOwn.call(value, "__await")) {
          return PromiseImpl.resolve(value.__await).then(function(value) {
            invoke("next", value, resolve, reject);
          }, function(err) {
            invoke("throw", err, resolve, reject);
          });
        }

        return PromiseImpl.resolve(value).then(function(unwrapped) {
          // When a yielded Promise is resolved, its final value becomes
          // the .value of the Promise<{value,done}> result for the
          // current iteration.
          result.value = unwrapped;
          resolve(result);
        }, function(error) {
          // If a rejected Promise was yielded, throw the rejection back
          // into the async generator function so it can be handled there.
          return invoke("throw", error, resolve, reject);
        });
      }
    }

    var previousPromise;

    function enqueue(method, arg) {
      function callInvokeWithMethodAndArg() {
        return new PromiseImpl(function(resolve, reject) {
          invoke(method, arg, resolve, reject);
        });
      }

      return previousPromise =
        // If enqueue has been called before, then we want to wait until
        // all previous Promises have been resolved before calling invoke,
        // so that results are always delivered in the correct order. If
        // enqueue has not been called before, then it is important to
        // call invoke immediately, without waiting on a callback to fire,
        // so that the async generator function has the opportunity to do
        // any necessary setup in a predictable way. This predictability
        // is why the Promise constructor synchronously invokes its
        // executor callback, and why async functions synchronously
        // execute code before the first await. Since we implement simple
        // async functions in terms of async generators, it is especially
        // important to get this right, even though it requires care.
        previousPromise ? previousPromise.then(
          callInvokeWithMethodAndArg,
          // Avoid propagating failures to Promises returned by later
          // invocations of the iterator.
          callInvokeWithMethodAndArg
        ) : callInvokeWithMethodAndArg();
    }

    // Define the unified helper method that is used to implement .next,
    // .throw, and .return (see defineIteratorMethods).
    this._invoke = enqueue;
  }

  defineIteratorMethods(AsyncIterator.prototype);
  AsyncIterator.prototype[asyncIteratorSymbol] = function () {
    return this;
  };
  exports.AsyncIterator = AsyncIterator;

  // Note that simple async functions are implemented on top of
  // AsyncIterator objects; they just return a Promise for the value of
  // the final result produced by the iterator.
  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
    if (PromiseImpl === void 0) PromiseImpl = Promise;

    var iter = new AsyncIterator(
      wrap(innerFn, outerFn, self, tryLocsList),
      PromiseImpl
    );

    return exports.isGeneratorFunction(outerFn)
      ? iter // If outerFn is a generator, return the full iterator.
      : iter.next().then(function(result) {
          return result.done ? result.value : iter.next();
        });
  };

  function makeInvokeMethod(innerFn, self, context) {
    var state = GenStateSuspendedStart;

    return function invoke(method, arg) {
      if (state === GenStateExecuting) {
        throw new Error("Generator is already running");
      }

      if (state === GenStateCompleted) {
        if (method === "throw") {
          throw arg;
        }

        // Be forgiving, per 25.3.3.3.3 of the spec:
        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
        return doneResult();
      }

      context.method = method;
      context.arg = arg;

      while (true) {
        var delegate = context.delegate;
        if (delegate) {
          var delegateResult = maybeInvokeDelegate(delegate, context);
          if (delegateResult) {
            if (delegateResult === ContinueSentinel) continue;
            return delegateResult;
          }
        }

        if (context.method === "next") {
          // Setting context._sent for legacy support of Babel's
          // function.sent implementation.
          context.sent = context._sent = context.arg;

        } else if (context.method === "throw") {
          if (state === GenStateSuspendedStart) {
            state = GenStateCompleted;
            throw context.arg;
          }

          context.dispatchException(context.arg);

        } else if (context.method === "return") {
          context.abrupt("return", context.arg);
        }

        state = GenStateExecuting;

        var record = tryCatch(innerFn, self, context);
        if (record.type === "normal") {
          // If an exception is thrown from innerFn, we leave state ===
          // GenStateExecuting and loop back for another invocation.
          state = context.done
            ? GenStateCompleted
            : GenStateSuspendedYield;

          if (record.arg === ContinueSentinel) {
            continue;
          }

          return {
            value: record.arg,
            done: context.done
          };

        } else if (record.type === "throw") {
          state = GenStateCompleted;
          // Dispatch the exception by looping back around to the
          // context.dispatchException(context.arg) call above.
          context.method = "throw";
          context.arg = record.arg;
        }
      }
    };
  }

  // Call delegate.iterator[context.method](context.arg) and handle the
  // result, either by returning a { value, done } result from the
  // delegate iterator, or by modifying context.method and context.arg,
  // setting context.delegate to null, and returning the ContinueSentinel.
  function maybeInvokeDelegate(delegate, context) {
    var method = delegate.iterator[context.method];
    if (method === undefined) {
      // A .throw or .return when the delegate iterator has no .throw
      // method always terminates the yield* loop.
      context.delegate = null;

      if (context.method === "throw") {
        // Note: ["return"] must be used for ES3 parsing compatibility.
        if (delegate.iterator["return"]) {
          // If the delegate iterator has a return method, give it a
          // chance to clean up.
          context.method = "return";
          context.arg = undefined;
          maybeInvokeDelegate(delegate, context);

          if (context.method === "throw") {
            // If maybeInvokeDelegate(context) changed context.method from
            // "return" to "throw", let that override the TypeError below.
            return ContinueSentinel;
          }
        }

        context.method = "throw";
        context.arg = new TypeError(
          "The iterator does not provide a 'throw' method");
      }

      return ContinueSentinel;
    }

    var record = tryCatch(method, delegate.iterator, context.arg);

    if (record.type === "throw") {
      context.method = "throw";
      context.arg = record.arg;
      context.delegate = null;
      return ContinueSentinel;
    }

    var info = record.arg;

    if (! info) {
      context.method = "throw";
      context.arg = new TypeError("iterator result is not an object");
      context.delegate = null;
      return ContinueSentinel;
    }

    if (info.done) {
      // Assign the result of the finished delegate to the temporary
      // variable specified by delegate.resultName (see delegateYield).
      context[delegate.resultName] = info.value;

      // Resume execution at the desired location (see delegateYield).
      context.next = delegate.nextLoc;

      // If context.method was "throw" but the delegate handled the
      // exception, let the outer generator proceed normally. If
      // context.method was "next", forget context.arg since it has been
      // "consumed" by the delegate iterator. If context.method was
      // "return", allow the original .return call to continue in the
      // outer generator.
      if (context.method !== "return") {
        context.method = "next";
        context.arg = undefined;
      }

    } else {
      // Re-yield the result returned by the delegate method.
      return info;
    }

    // The delegate iterator is finished, so forget it and continue with
    // the outer generator.
    context.delegate = null;
    return ContinueSentinel;
  }

  // Define Generator.prototype.{next,throw,return} in terms of the
  // unified ._invoke helper method.
  defineIteratorMethods(Gp);

  define(Gp, toStringTagSymbol, "Generator");

  // A Generator should always return itself as the iterator object when the
  // @@iterator function is called on it. Some browsers' implementations of the
  // iterator prototype chain incorrectly implement this, causing the Generator
  // object to not be returned from this call. This ensures that doesn't happen.
  // See https://github.com/facebook/regenerator/issues/274 for more details.
  Gp[iteratorSymbol] = function() {
    return this;
  };

  Gp.toString = function() {
    return "[object Generator]";
  };

  function pushTryEntry(locs) {
    var entry = { tryLoc: locs[0] };

    if (1 in locs) {
      entry.catchLoc = locs[1];
    }

    if (2 in locs) {
      entry.finallyLoc = locs[2];
      entry.afterLoc = locs[3];
    }

    this.tryEntries.push(entry);
  }

  function resetTryEntry(entry) {
    var record = entry.completion || {};
    record.type = "normal";
    delete record.arg;
    entry.completion = record;
  }

  function Context(tryLocsList) {
    // The root entry object (effectively a try statement without a catch
    // or a finally block) gives us a place to store values thrown from
    // locations where there is no enclosing try statement.
    this.tryEntries = [{ tryLoc: "root" }];
    tryLocsList.forEach(pushTryEntry, this);
    this.reset(true);
  }

  exports.keys = function(object) {
    var keys = [];
    for (var key in object) {
      keys.push(key);
    }
    keys.reverse();

    // Rather than returning an object with a next method, we keep
    // things simple and return the next function itself.
    return function next() {
      while (keys.length) {
        var key = keys.pop();
        if (key in object) {
          next.value = key;
          next.done = false;
          return next;
        }
      }

      // To avoid creating an additional object, we just hang the .value
      // and .done properties off the next function object itself. This
      // also ensures that the minifier will not anonymize the function.
      next.done = true;
      return next;
    };
  };

  function values(iterable) {
    if (iterable) {
      var iteratorMethod = iterable[iteratorSymbol];
      if (iteratorMethod) {
        return iteratorMethod.call(iterable);
      }

      if (typeof iterable.next === "function") {
        return iterable;
      }

      if (!isNaN(iterable.length)) {
        var i = -1, next = function next() {
          while (++i < iterable.length) {
            if (hasOwn.call(iterable, i)) {
              next.value = iterable[i];
              next.done = false;
              return next;
            }
          }

          next.value = undefined;
          next.done = true;

          return next;
        };

        return next.next = next;
      }
    }

    // Return an iterator with no values.
    return { next: doneResult };
  }
  exports.values = values;

  function doneResult() {
    return { value: undefined, done: true };
  }

  Context.prototype = {
    constructor: Context,

    reset: function(skipTempReset) {
      this.prev = 0;
      this.next = 0;
      // Resetting context._sent for legacy support of Babel's
      // function.sent implementation.
      this.sent = this._sent = undefined;
      this.done = false;
      this.delegate = null;

      this.method = "next";
      this.arg = undefined;

      this.tryEntries.forEach(resetTryEntry);

      if (!skipTempReset) {
        for (var name in this) {
          // Not sure about the optimal order of these conditions:
          if (name.charAt(0) === "t" &&
              hasOwn.call(this, name) &&
              !isNaN(+name.slice(1))) {
            this[name] = undefined;
          }
        }
      }
    },

    stop: function() {
      this.done = true;

      var rootEntry = this.tryEntries[0];
      var rootRecord = rootEntry.completion;
      if (rootRecord.type === "throw") {
        throw rootRecord.arg;
      }

      return this.rval;
    },

    dispatchException: function(exception) {
      if (this.done) {
        throw exception;
      }

      var context = this;
      function handle(loc, caught) {
        record.type = "throw";
        record.arg = exception;
        context.next = loc;

        if (caught) {
          // If the dispatched exception was caught by a catch block,
          // then let that catch block handle the exception normally.
          context.method = "next";
          context.arg = undefined;
        }

        return !! caught;
      }

      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        var record = entry.completion;

        if (entry.tryLoc === "root") {
          // Exception thrown outside of any try block that could handle
          // it, so set the completion value of the entire function to
          // throw the exception.
          return handle("end");
        }

        if (entry.tryLoc <= this.prev) {
          var hasCatch = hasOwn.call(entry, "catchLoc");
          var hasFinally = hasOwn.call(entry, "finallyLoc");

          if (hasCatch && hasFinally) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            } else if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else if (hasCatch) {
            if (this.prev < entry.catchLoc) {
              return handle(entry.catchLoc, true);
            }

          } else if (hasFinally) {
            if (this.prev < entry.finallyLoc) {
              return handle(entry.finallyLoc);
            }

          } else {
            throw new Error("try statement without catch or finally");
          }
        }
      }
    },

    abrupt: function(type, arg) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc <= this.prev &&
            hasOwn.call(entry, "finallyLoc") &&
            this.prev < entry.finallyLoc) {
          var finallyEntry = entry;
          break;
        }
      }

      if (finallyEntry &&
          (type === "break" ||
           type === "continue") &&
          finallyEntry.tryLoc <= arg &&
          arg <= finallyEntry.finallyLoc) {
        // Ignore the finally entry if control is not jumping to a
        // location outside the try/catch block.
        finallyEntry = null;
      }

      var record = finallyEntry ? finallyEntry.completion : {};
      record.type = type;
      record.arg = arg;

      if (finallyEntry) {
        this.method = "next";
        this.next = finallyEntry.finallyLoc;
        return ContinueSentinel;
      }

      return this.complete(record);
    },

    complete: function(record, afterLoc) {
      if (record.type === "throw") {
        throw record.arg;
      }

      if (record.type === "break" ||
          record.type === "continue") {
        this.next = record.arg;
      } else if (record.type === "return") {
        this.rval = this.arg = record.arg;
        this.method = "return";
        this.next = "end";
      } else if (record.type === "normal" && afterLoc) {
        this.next = afterLoc;
      }

      return ContinueSentinel;
    },

    finish: function(finallyLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.finallyLoc === finallyLoc) {
          this.complete(entry.completion, entry.afterLoc);
          resetTryEntry(entry);
          return ContinueSentinel;
        }
      }
    },

    "catch": function(tryLoc) {
      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
        var entry = this.tryEntries[i];
        if (entry.tryLoc === tryLoc) {
          var record = entry.completion;
          if (record.type === "throw") {
            var thrown = record.arg;
            resetTryEntry(entry);
          }
          return thrown;
        }
      }

      // The context.catch method must only be called with a location
      // argument that corresponds to a known catch block.
      throw new Error("illegal catch attempt");
    },

    delegateYield: function(iterable, resultName, nextLoc) {
      this.delegate = {
        iterator: values(iterable),
        resultName: resultName,
        nextLoc: nextLoc
      };

      if (this.method === "next") {
        // Deliberately forget the last sent value so that we don't
        // accidentally pass it on to the delegate.
        this.arg = undefined;
      }

      return ContinueSentinel;
    }
  };

  // Regardless of whether this script is executing as a CommonJS module
  // or not, return the runtime object so that we can declare the variable
  // regeneratorRuntime in the outer scope, which allows this module to be
  // injected easily by `bin/regenerator --include-runtime script.js`.
  return exports;

}(
  // If this script is executing as a CommonJS module, use module.exports
  // as the regeneratorRuntime namespace. Otherwise create a new empty
  // object. Either way, the resulting object will be used to initialize
  // the regeneratorRuntime variable at the top of this file.
   true ? module.exports : undefined
));

try {
  regeneratorRuntime = runtime;
} catch (accidentalStrictMode) {
  // This module should not be running in strict mode, so the above
  // assignment should always work unless something is misconfigured. Just
  // in case runtime.js accidentally runs in strict mode, we can escape
  // strict mode using a global Function call. This could conceivably fail
  // if a Content Security Policy forbids using Function, but in that case
  // the proper solution is to fix the accidental strict mode problem. If
  // you've misconfigured your bundler to force strict mode and applied a
  // CSP to forbid Function, and you're not willing to fix either of those
  // problems, please detail your unique predicament in a GitHub issue.
  Function("r", "regeneratorRuntime = r")(runtime);
}


/***/ }),
/* 130 */
/***/ (function(module) {

module.exports = JSON.parse("{\"code\":\"en\",\"messages\":{\"alpha\":\"The {_field_} field may only contain alphabetic characters\",\"alpha_num\":\"The {_field_} field may only contain alpha-numeric characters\",\"alpha_dash\":\"The {_field_} field may contain alpha-numeric characters as well as dashes and underscores\",\"alpha_spaces\":\"The {_field_} field may only contain alphabetic characters as well as spaces\",\"between\":\"The {_field_} field must be between {min} and {max}\",\"confirmed\":\"The {_field_} field confirmation does not match\",\"digits\":\"The {_field_} field must be numeric and exactly contain {length} digits\",\"dimensions\":\"The {_field_} field must be {width} pixels by {height} pixels\",\"email\":\"The {_field_} field must be a valid email\",\"excluded\":\"The {_field_} field is not a valid value\",\"ext\":\"The {_field_} field is not a valid file\",\"image\":\"The {_field_} field must be an image\",\"integer\":\"The {_field_} field must be an integer\",\"length\":\"The {_field_} field must be {length} long\",\"max_value\":\"The {_field_} field must be {max} or less\",\"max\":\"The {_field_} field may not be greater than {length} characters\",\"mimes\":\"The {_field_} field must have a valid file type\",\"min_value\":\"The {_field_} field must be {min} or more\",\"min\":\"The {_field_} field must be at least {length} characters\",\"numeric\":\"The {_field_} field may only contain numeric characters\",\"oneOf\":\"The {_field_} field is not a valid value\",\"regex\":\"The {_field_} field format is invalid\",\"required_if\":\"The {_field_} field is required\",\"required\":\"The {_field_} field is required\",\"size\":\"The {_field_} field size must be less than {size}KB\"}}");

/***/ }),
/* 131 */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es7.object.get-own-property-descriptors.js
var es7_object_get_own_property_descriptors = __webpack_require__(0);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.object.keys.js
var es6_object_keys = __webpack_require__(39);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/web.dom.iterable.js
var web_dom_iterable = __webpack_require__(43);

// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/defineProperty.js
function _defineProperty(obj, key, value) {
  if (key in obj) {
    Object.defineProperty(obj, key, {
      value: value,
      enumerable: true,
      configurable: true,
      writable: true
    });
  } else {
    obj[key] = value;
  }

  return obj;
}
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/layout.vue?vue&type=template&id=5978895a&
var layoutvue_type_template_id_5978895a_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        _vm.hasSider && (_vm.classPrefix + "--has-sider")
    ]},[_vm._t("default")],2)}
var staticRenderFns = []


// CONCATENATED MODULE: ./packages/layout/src/layout.vue?vue&type=template&id=5978895a&

// CONCATENATED MODULE: ./src/config/config.js
/* harmony default export */ var config = ({
  name: 'monkey',
  classPrefix: 'm'
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/layout.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//

/* harmony default export */ var layoutvue_type_script_lang_js_ = ({
  name: 'Layout',
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-layout',
      hasSider: false
    };
  },
  mounted: function mounted() {
    this.hasSider = this.findSider();
  },
  methods: {
    findSider: function findSider() {
      return this.$children.some(function (item) {
        return item.componentName === 'Sider';
      });
    }
  }
});
// CONCATENATED MODULE: ./packages/layout/src/layout.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_layoutvue_type_script_lang_js_ = (layoutvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/runtime/componentNormalizer.js
/* globals __VUE_SSR_CONTEXT__ */

// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
// This module is a runtime utility for cleaner component module output and will
// be included in the final webpack user bundle.

function normalizeComponent (
  scriptExports,
  render,
  staticRenderFns,
  functionalTemplate,
  injectStyles,
  scopeId,
  moduleIdentifier, /* server only */
  shadowMode /* vue-cli only */
) {
  // Vue.extend constructor export interop
  var options = typeof scriptExports === 'function'
    ? scriptExports.options
    : scriptExports

  // render functions
  if (render) {
    options.render = render
    options.staticRenderFns = staticRenderFns
    options._compiled = true
  }

  // functional template
  if (functionalTemplate) {
    options.functional = true
  }

  // scopedId
  if (scopeId) {
    options._scopeId = 'data-v-' + scopeId
  }

  var hook
  if (moduleIdentifier) { // server build
    hook = function (context) {
      // 2.3 injection
      context =
        context || // cached call
        (this.$vnode && this.$vnode.ssrContext) || // stateful
        (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
      // 2.2 with runInNewContext: true
      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
        context = __VUE_SSR_CONTEXT__
      }
      // inject component styles
      if (injectStyles) {
        injectStyles.call(this, context)
      }
      // register component module identifier for async chunk inferrence
      if (context && context._registeredComponents) {
        context._registeredComponents.add(moduleIdentifier)
      }
    }
    // used by ssr in case component is cached and beforeCreate
    // never gets called
    options._ssrRegister = hook
  } else if (injectStyles) {
    hook = shadowMode
      ? function () {
        injectStyles.call(
          this,
          (options.functional ? this.parent : this).$root.$options.shadowRoot
        )
      }
      : injectStyles
  }

  if (hook) {
    if (options.functional) {
      // for template-only hot-reload because in that case the render fn doesn't
      // go through the normalizer
      options._injectStyles = hook
      // register for functional component in vue file
      var originalRender = options.render
      options.render = function renderWithStyleInjection (h, context) {
        hook.call(context)
        return originalRender(h, context)
      }
    } else {
      // inject component registration as beforeCreate hook
      var existing = options.beforeCreate
      options.beforeCreate = existing
        ? [].concat(existing, hook)
        : [hook]
    }
  }

  return {
    exports: scriptExports,
    options: options
  }
}

// CONCATENATED MODULE: ./packages/layout/src/layout.vue





/* normalize component */

var component = normalizeComponent(
  src_layoutvue_type_script_lang_js_,
  layoutvue_type_template_id_5978895a_render,
  staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var layout = (component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/sider.vue?vue&type=template&id=813b41e6&
var sidervue_type_template_id_813b41e6_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:"sider",class:[
         ("" + _vm.classPrefix),
        _vm.hideTrigger && (_vm.classPrefix + "--hideTrigger"),
        _vm.collapsed ? (_vm.classPrefix + "--close") : (_vm.classPrefix + "--open") ],style:(_vm.sliderStyle)},[(_vm.computedShowZeroTrigger)?_c('div',{class:[(_vm.classPrefix + "__zero-trigger")],on:{"click":_vm.triggerClick}},[_c('Icon',{attrs:{"type":"arrow-right"}})],1):_vm._e(),_vm._v(" "),(_vm.$slots.header)?_c('div',{ref:"header",class:[(_vm.classPrefix + "__header")]},[_vm._t("header")],2):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__content")],style:(_vm.contentStyle)},[_c('scroll',{attrs:{"size":"small","scroll-option":_vm.scrollOption}},[_vm._t("default")],2)],1),_vm._v(" "),(!_vm.hideTrigger)?_c('div',{ref:"trigger",class:[(_vm.classPrefix + "__trigger")],on:{"click":_vm.triggerClick}},[_vm._t("trigger",[_c('Icon',{class:[(_vm.classPrefix + "__trigger-icon")],attrs:{"type":"left"}})])],2):_vm._e()])}
var sidervue_type_template_id_813b41e6_staticRenderFns = []


// CONCATENATED MODULE: ./packages/layout/src/sider.vue?vue&type=template&id=813b41e6&

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.number.constructor.js
var es6_number_constructor = __webpack_require__(56);

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/icon/src/icon.vue?vue&type=template&id=24d45748&
var iconvue_type_template_id_24d45748_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('i',{class:_vm.iconClass,style:(_vm.iconStyle),on:{"click":_vm.handleClick}})}
var iconvue_type_template_id_24d45748_staticRenderFns = []


// CONCATENATED MODULE: ./packages/icon/src/icon.vue?vue&type=template&id=24d45748&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/icon/src/icon.vue?vue&type=script&lang=js&

//
//
//
//

/* harmony default export */ var iconvue_type_script_lang_js_ = ({
  name: 'Icon',
  props: {
    type: String,
    customIcon: String,
    size: [String, Number],
    color: String
  },
  data: function data() {
    return {
      classPrefix: "".concat(config.classPrefix, "-icon")
    };
  },
  computed: {
    iconClass: function iconClass() {
      var isPrefix = this.type && this.type.indexOf(this.classPrefix) === 0;
      return [this.type && "".concat(this.classPrefix), this.customIcon && "".concat(this.customIcon), this.type && isPrefix && "".concat(this.type), this.type && !isPrefix && "".concat(this.classPrefix, "-").concat(this.type)];
    },
    iconStyle: function iconStyle() {
      return {
        fontSize: parseFloat(this.size) + 'px',
        color: this.color
      };
    }
  },
  methods: {
    handleClick: function handleClick(event) {
      this.$emit('click', event);
    }
  }
});
// CONCATENATED MODULE: ./packages/icon/src/icon.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_iconvue_type_script_lang_js_ = (iconvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/icon/src/icon.vue





/* normalize component */

var icon_component = normalizeComponent(
  src_iconvue_type_script_lang_js_,
  iconvue_type_template_id_24d45748_render,
  iconvue_type_template_id_24d45748_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var icon = (icon_component.exports);
// CONCATENATED MODULE: ./packages/icon/index.js

/* harmony default export */ var packages_icon = (icon);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/scroll/src/scroll.vue?vue&type=template&id=3d4b00fb&
var scrollvue_type_template_id_3d4b00fb_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('vuescroll',{ref:"vuescroll",class:[("" + _vm.classPrefix)],attrs:{"ops":_vm.options}},[_vm._t("default")],2)}
var scrollvue_type_template_id_3d4b00fb_staticRenderFns = []


// CONCATENATED MODULE: ./packages/scroll/src/scroll.vue?vue&type=template&id=3d4b00fb&

// EXTERNAL MODULE: ./node_modules/_vuescroll@4.16.1@vuescroll/dist/vuescroll.js
var vuescroll = __webpack_require__(61);
var vuescroll_default = /*#__PURE__*/__webpack_require__.n(vuescroll);

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/scroll/src/scroll.vue?vue&type=script&lang=js&


//
//
//
//
//
//


/* harmony default export */ var scrollvue_type_script_lang_js_ = ({
  name: 'Scroll',
  props: {
    size: String,
    scrollOption: {
      type: Object,
      default: function _default() {
        return {};
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-scroll',
      ops: {
        vuescroll: {
          mode: 'native',
          sizeStrategy: 'percent',
          detectResize: true
        },
        scrollPanel: {
          initialScrollY: false,
          // 只要组件mounted之后自动滚动的距离
          initialScrollX: false,
          scrollingX: true,
          // 是否启用 x 或者 y 方向上的滚动
          scrollingY: true,
          speed: 300,
          easing: undefined,
          verticalNativeBarPos: 'right'
        },
        rail: {
          background: '#cecece',
          // 轨道的背景色
          opacity: 0,
          // 轨道的透明度
          size: '6px',
          // 轨道的尺寸
          specifyBorderRadius: false,
          // 是否指定轨道的 borderRadius， 如果不那么将会自动设置
          gutterOfEnds: null,
          // 轨道距 x 和 y 轴两端的距离
          gutterOfSide: '1px',
          // 距离容器的距离
          keepShow: false // 是否即使 bar 不存在的情况下也保持显示

        },
        bar: {
          showDelay: 500,
          // 在鼠标离开容器后多长时间隐藏滚动条
          onlyShowBarOnScroll: true,
          // 是否只在滚动时显示 bar
          keepShow: false,
          // 滚动条是否保持显示
          background: '#c1c1c1',
          // 滚动条背景色
          opacity: 1,
          // 滚动条透明度
          hoverStyle: false,
          specifyBorderRadius: false,
          // 是否指定滚动条的 borderRadius， 如果不那么和轨道的保持一致
          minSize: false,
          size: '6px',
          disable: false // 是否禁用滚动条

        }
      }
    };
  },
  computed: {
    options: function options() {
      var _this = this;

      var ops = JSON.parse(JSON.stringify(this.ops));

      if (this.size === 'small') {
        ops.bar.size = '4px';
      }

      Object.keys(this.scrollOption).forEach(function (key) {
        Object.keys(_this.scrollOption[key]).forEach(function (_key) {
          ops[key][_key] = _this.scrollOption[key][_key];
        });
      });
      return Object.assign({}, ops);
    }
  },
  components: {
    vuescroll: vuescroll_default.a
  },
  methods: {
    scrollTo: function scrollTo(position) {
      var speed = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 500;
      this.$refs.vuescroll.scrollTo(position, speed);
    }
  }
});
// CONCATENATED MODULE: ./packages/scroll/src/scroll.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_scrollvue_type_script_lang_js_ = (scrollvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/scroll/src/scroll.vue





/* normalize component */

var scroll_component = normalizeComponent(
  src_scrollvue_type_script_lang_js_,
  scrollvue_type_template_id_3d4b00fb_render,
  scrollvue_type_template_id_3d4b00fb_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_scroll = (scroll_component.exports);
// CONCATENATED MODULE: ./packages/scroll/index.js

/* harmony default export */ var packages_scroll = (src_scroll);
// EXTERNAL MODULE: ./node_modules/_element-resize-detector@1.2.1@element-resize-detector/src/element-resize-detector.js
var element_resize_detector = __webpack_require__(63);
var element_resize_detector_default = /*#__PURE__*/__webpack_require__.n(element_resize_detector);

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/sider.vue?vue&type=script&lang=js&

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//




/* harmony default export */ var sidervue_type_script_lang_js_ = ({
  name: 'Sider',
  props: {
    value: Boolean,
    // 展开收起
    width: {
      type: [Number, String],
      default: 240
    },
    height: [Number, String],
    collapsedWidth: {
      type: [Number, String],
      default: 80
    },
    hideTrigger: Boolean,
    showZeroTrigger: {
      type: Boolean,
      default: true
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-sider',
      componentName: 'Sider',
      observer: null,
      contentStyle: {},
      collapsed: this.value || false,
      scrollOption: {
        scrollPanel: {
          scrollingX: false
        }
      }
    };
  },
  computed: {
    sliderStyle: function sliderStyle() {
      var width = parseFloat(this.width);

      if (this.collapsed) {
        width = parseFloat(this.collapsedWidth);
      }

      return {
        width: width + 'px'
      };
    },
    computedShowZeroTrigger: function computedShowZeroTrigger() {
      return this.showZeroTrigger && parseFloat(this.collapsedWidth) === 0 && this.collapsed;
    }
  },
  components: {
    Icon: packages_icon,
    Scroll: packages_scroll
  },
  mounted: function mounted() {
    this.observer = element_resize_detector_default()();
    this.observer.listenTo(this.$refs.sider, this.setContentStyle);
  },
  beforeDestroy: function beforeDestroy() {
    this.observer && this.observer.removeListener(this.$refs.sider, this.setContentStyle);
  },
  methods: {
    triggerClick: function triggerClick() {
      this.collapsed = !this.collapsed;
      this.$emit('input', this.collapsed);
    },
    setContentStyle: function setContentStyle() {
      var height = parseFloat(this.height) || this.$el.offsetHeight;
      var headerHeight = this.$refs.header ? this.$refs.header.offsetHeight : 0;
      var triggerHeight = this.$refs.trigger ? this.$refs.trigger.offsetHeight : 0;
      this.contentStyle = {
        height: height - headerHeight - triggerHeight + 'px'
      };
    }
  },
  watch: {
    value: function value(newVal) {
      this.collapsed = newVal;
      this.$emit('collapse', newVal);
    }
  }
});
// CONCATENATED MODULE: ./packages/layout/src/sider.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_sidervue_type_script_lang_js_ = (sidervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/layout/src/sider.vue





/* normalize component */

var sider_component = normalizeComponent(
  src_sidervue_type_script_lang_js_,
  sidervue_type_template_id_813b41e6_render,
  sidervue_type_template_id_813b41e6_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var sider = (sider_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/header.vue?vue&type=template&id=e6c608ec&
var headervue_type_template_id_e6c608ec_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{class:[("" + _vm.classPrefix)],style:(_vm.expandStyle)},[_vm._t("default")],2)}
var headervue_type_template_id_e6c608ec_staticRenderFns = []


// CONCATENATED MODULE: ./packages/layout/src/header.vue?vue&type=template&id=e6c608ec&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/header.vue?vue&type=script&lang=js&

//
//
//
//
//
//

/* harmony default export */ var headervue_type_script_lang_js_ = ({
  name: 'Header',
  props: {
    height: {
      type: [String, Number],
      default: 60
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-header'
    };
  },
  computed: {
    expandStyle: function expandStyle() {
      return {
        height: parseFloat(this.height) + 'px',
        'line-height': parseFloat(this.height) + 'px'
      };
    }
  }
});
// CONCATENATED MODULE: ./packages/layout/src/header.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_headervue_type_script_lang_js_ = (headervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/layout/src/header.vue





/* normalize component */

var header_component = normalizeComponent(
  src_headervue_type_script_lang_js_,
  headervue_type_template_id_e6c608ec_render,
  headervue_type_template_id_e6c608ec_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var header = (header_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/footer.vue?vue&type=template&id=356ccc18&
var footervue_type_template_id_356ccc18_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',{class:[("" + _vm.classPrefix)],style:(_vm.expandStyle)},[_vm._t("default")],2)}
var footervue_type_template_id_356ccc18_staticRenderFns = []


// CONCATENATED MODULE: ./packages/layout/src/footer.vue?vue&type=template&id=356ccc18&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/footer.vue?vue&type=script&lang=js&

//
//
//
//
//
//

/* harmony default export */ var footervue_type_script_lang_js_ = ({
  name: 'Footer',
  props: {
    height: {
      type: [String, Number],
      default: 60
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-footer'
    };
  },
  computed: {
    expandStyle: function expandStyle() {
      return {
        height: parseFloat(this.height) + 'px',
        'line-height': parseFloat(this.height) + 'px'
      };
    }
  }
});
// CONCATENATED MODULE: ./packages/layout/src/footer.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_footervue_type_script_lang_js_ = (footervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/layout/src/footer.vue





/* normalize component */

var footer_component = normalizeComponent(
  src_footervue_type_script_lang_js_,
  footervue_type_template_id_356ccc18_render,
  footervue_type_template_id_356ccc18_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var footer = (footer_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/content.vue?vue&type=template&id=bfd53896&
var contentvue_type_template_id_bfd53896_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[_vm._t("default")],2)}
var contentvue_type_template_id_bfd53896_staticRenderFns = []


// CONCATENATED MODULE: ./packages/layout/src/content.vue?vue&type=template&id=bfd53896&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/layout/src/content.vue?vue&type=script&lang=js&
//
//
//
//
//
//

/* harmony default export */ var contentvue_type_script_lang_js_ = ({
  name: 'Content',
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-content'
    };
  }
});
// CONCATENATED MODULE: ./packages/layout/src/content.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_contentvue_type_script_lang_js_ = (contentvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/layout/src/content.vue





/* normalize component */

var content_component = normalizeComponent(
  src_contentvue_type_script_lang_js_,
  contentvue_type_template_id_bfd53896_render,
  contentvue_type_template_id_bfd53896_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var content = (content_component.exports);
// CONCATENATED MODULE: ./packages/layout/index.js





layout.Sider = sider;
layout.Header = header;
layout.Footer = footer;
layout.Content = content;
/* harmony default export */ var packages_layout = (layout);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/menu/src/menu.vue?vue&type=template&id=308bfc44&
var menuvue_type_template_id_308bfc44_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        _vm.theme && (_vm.classPrefix + "--" + _vm.theme),
        _vm.mode && (_vm.classPrefix + "--" + _vm.mode),
        _vm.collapse && _vm.mode === 'vertical' && (_vm.classPrefix + "--collapse") ],style:(_vm.menuStyle)},[_vm._t("default")],2)}
var menuvue_type_template_id_308bfc44_staticRenderFns = []


// CONCATENATED MODULE: ./packages/menu/src/menu.vue?vue&type=template&id=308bfc44&

// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/arrayLikeToArray.js
function _arrayLikeToArray(arr, len) {
  if (len == null || len > arr.length) len = arr.length;

  for (var i = 0, arr2 = new Array(len); i < len; i++) {
    arr2[i] = arr[i];
  }

  return arr2;
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/arrayWithoutHoles.js

function _arrayWithoutHoles(arr) {
  if (Array.isArray(arr)) return _arrayLikeToArray(arr);
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/iterableToArray.js
function _iterableToArray(iter) {
  if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter);
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/unsupportedIterableToArray.js

function _unsupportedIterableToArray(o, minLen) {
  if (!o) return;
  if (typeof o === "string") return _arrayLikeToArray(o, minLen);
  var n = Object.prototype.toString.call(o).slice(8, -1);
  if (n === "Object" && o.constructor) n = o.constructor.name;
  if (n === "Map" || n === "Set") return Array.from(o);
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/nonIterableSpread.js
function _nonIterableSpread() {
  throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/toConsumableArray.js




function _toConsumableArray(arr) {
  return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
}
// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es7.array.includes.js
var es7_array_includes = __webpack_require__(76);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.string.includes.js
var es6_string_includes = __webpack_require__(77);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.array.find-index.js
var es6_array_find_index = __webpack_require__(81);

// CONCATENATED MODULE: ./src/utils/tool.js


/**
 * 最近的父级元素
 * @param context
 * @param componentName
 * @returns {*}
 */
var findComponent = function findComponent(context, componentName) {
  if (!context || !componentName) return;
  var parent = context.$parent;

  while (parent) {
    if (parent.componentName !== componentName) {
      parent = parent.$parent;
    } else {
      return parent;
    }
  }

  return false;
};
/**
 * 直接父级元素
 * @param context
 * @param componentName
 * @returns {*}
 */

var findComponentDirect = function findComponentDirect(context, componentName) {
  if (!context || !componentName) return;
  var parent = context.$parent;

  if (parent.componentName === componentName) {
    return parent;
  }

  return false;
};
/**
 * 所有父级元素
 * @param context
 * @param componentName
 * @returns {*}
 */

var findComponents = function findComponents(context, componentName) {
  if (!context || !componentName) return;
  var parents = [];
  var parent = context.$parent;

  if (parent) {
    if (parent.componentName === componentName) parents.push(parent);
    return parents.concat(findComponents(parent, componentName));
  }

  return parents;
};
/**
 * 所有children
 * @param context
 * @param componentName
 * @returns {*}
 */

var findComponentChildrens = function findComponentChildrens(context, componentName) {
  if (!context || !componentName) return;
  return context.$children.reduce(function (components, child) {
    if (child.componentName === componentName) components.push(child);
    var foundChilds = findComponentChildrens(child, componentName);
    return components.concat(foundChilds);
  }, []);
};
/**
 * 所有直接子元素
 * @param context
 * @param componentName
 * @returns {Int32Array | * | Uint32Array | T[] | Int8Array | Float64Array | BigUint64Array | Uint8Array | Int16Array | BigInt64Array | Float32Array | Uint8ClampedArray | Uint16Array}
 */

var findComponentDirectChildrens = function findComponentDirectChildrens(context, componentName) {
  if (!context || !componentName) return;
  return context.$children.filter(function (item) {
    // console.log(item,'contextcontext',item.componentName,componentName)
    return item.componentName === componentName;
  });
};
/**
 * 所有兄弟元素
 * @param context
 * @param componentName
 * @returns {Int32Array | * | Uint32Array | T[] | Int8Array | Float64Array | BigUint64Array | Uint8Array | Int16Array | BigInt64Array | Float32Array | Uint8ClampedArray | Uint16Array}
 */

var findBrothersComponents = function findBrothersComponents(context, componentName) {
  if (!context || !componentName) return;
  var component = context.$parent.$children.filter(function (item) {
    return item.componentName === componentName;
  }); // 当前元素的index

  var currentIndex = component.findIndex(function (item) {
    return item._uid === context._uid;
  }); // 去除当前元素

  component.splice(currentIndex, 1);
  return component;
};
// CONCATENATED MODULE: ./src/mixins/emitter.js



function emitter_trigger(componentName, eventName, params) {
  if (!this.$children) return;
  this.$children.forEach(function (item) {
    var name = item.componentName;

    if (name === componentName) {
      // TODO 如果是空数据emit的是undefined
      item.$emit.apply(item, [eventName].concat([params]));
    } else {
      emitter_trigger.apply(item, [componentName, eventName].concat([params]));
    }
  });
}

/* harmony default export */ var emitter = ({
  methods: {
    parentEmit: function parentEmit(componentName, eventName, params) {
      var parent = findComponent(this, componentName);

      if (parent) {
        parent.$emit.apply(parent, [eventName].concat([params]));
      }
    },
    childrenEmit: function childrenEmit(componentName, eventName, params) {
      emitter_trigger.call(this, componentName, eventName, params);
    }
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/menu/src/menu.vue?vue&type=script&lang=js&




//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var menuvue_type_script_lang_js_ = ({
  name: 'Menu',
  mixins: [emitter],
  props: {
    width: {
      type: [String, Number],
      default: 240
    },
    theme: {
      type: String,
      default: 'light',
      validator: function validator(value) {
        return ['light', 'dark', 'green'].includes(value);
      }
    },
    activeKey: String,
    openKeys: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    accordion: Boolean,
    // 手风琴模式，开启后每次最多展开一个子菜单
    mode: {
      type: String,
      default: 'vertical',
      validator: function validator(value) {
        return ['vertical', 'horizontal'].includes(value);
      }
    },
    // vertical模式下配置submenu\item\group的高度；horizontal模式下配置一级菜单的高度
    itemHeight: {
      type: [String, Number],
      default: 50
    },
    // 展开 false;收起 true
    collapse: {
      type: Boolean,
      default: false
    },
    // 收起的宽度
    collapsedWidth: {
      type: [String, Number],
      default: 80
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-menu',
      componentName: 'Menu',
      currentActiveKey: '',
      openedKeys: [],
      defaultPadding: 20
    };
  },
  computed: {
    menuStyle: function menuStyle() {
      var style = {};

      if (this.mode === 'vertical') {
        var width = this.collapse ? parseInt(this.collapsedWidth) : parseFloat(this.width);
        style = {
          width: width + 'px'
        };
      }

      return style;
    }
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.updateOpenedKey();

      _this.updateActiveKey();
    });
    this.$on('on-update-opened-key', function (key) {
      if (_this.mode === 'vertical' && !_this.collapse) {
        if (_this.accordion) {
          _this.openedKeys = key || [];
        } else {
          if (_this.openedKeys.includes(key)) {
            var index = _this.openedKeys.indexOf(key);

            _this.openedKeys.splice(index, 1);
          } else {
            _this.openedKeys.push(key);
          }
        }

        _this.$emit('open-change', key, _this.openedKeys);
      }
    });
    this.$on('on-update-active-key', function (key) {
      if (_this.currentActiveKey !== key) {
        _this.currentActiveKey = key;

        _this.$emit('select', key);
      }
    });
  },
  methods: {
    updateActiveKey: function updateActiveKey() {
      this.currentActiveKey = this.activeKey;
    },
    updateOpenedKey: function updateOpenedKey() {
      if (this.mode === 'vertical' && !this.collapse) this.openedKeys = _toConsumableArray(this.openKeys);
    }
  },
  watch: {
    activeKey: function activeKey(newVal, oldVal) {
      if (newVal === oldVal) return;
      this.updateActiveKey();
    },
    openKeys: {
      handler: function handler() {
        this.updateOpenedKey();
      },
      deep: true
    },
    collapse: function collapse() {
      this.openedKeys = [];
    }
  }
});
// CONCATENATED MODULE: ./packages/menu/src/menu.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_menuvue_type_script_lang_js_ = (menuvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/menu/src/menu.vue





/* normalize component */

var menu_component = normalizeComponent(
  src_menuvue_type_script_lang_js_,
  menuvue_type_template_id_308bfc44_render,
  menuvue_type_template_id_308bfc44_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var menu = (menu_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item.vue?vue&type=template&id=6e0e6565&
var menu_itemvue_type_template_id_6e0e6565_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.to)?_c('router-link',{class:[
                ("" + _vm.classPrefix),
                !!_vm.menuDirectComponent && (_vm.classPrefix + "--direct"),
                _vm.menuComponent.theme && (_vm.classPrefix + "--" + (_vm.menuComponent.theme)),
                _vm.menuComponent.mode && (_vm.classPrefix + "--" + (_vm.menuComponent.mode)),
                _vm.active && 'is-active',
                _vm.disabled && 'is-disabled' ],style:(_vm.itemStyle),attrs:{"to":_vm.disabled ? _vm.$route.fullPath : _vm.to},nativeOn:{"click":function($event){return _vm.handleClick($event)}}},[(!!_vm.menuDirectComponent && _vm.menuComponent.mode === 'vertical')?_c('Tooltip',{class:[(_vm.classPrefix + "__tooltip")],style:(_vm.itemStyle),attrs:{"placement":"right","content":_vm.tooltipContent,"disabled":_vm.tooltipDisabled,"offset":_vm.tooltipOffset,"render-html":""}},[_vm._t("default",[(_vm.icon)?_c('Icon',{class:_vm.icon,attrs:{"type":_vm.icon}}):_vm._e(),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.name))])])],2):[_vm._t("default",[(_vm.icon)?_c('Icon',{class:_vm.icon,attrs:{"type":_vm.icon}}):_vm._e(),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.name))])])]],2):_c('div',{class:[
        ("" + _vm.classPrefix),
        !!_vm.menuDirectComponent && (_vm.classPrefix + "--direct"),
        _vm.menuComponent.theme && (_vm.classPrefix + "--" + (_vm.menuComponent.theme)),
        _vm.menuComponent.mode && (_vm.classPrefix + "--" + (_vm.menuComponent.mode)),
        _vm.active && 'is-active',
        _vm.disabled && 'is-disabled' ],style:(_vm.itemStyle),on:{"click":_vm.handleClick}},[(!!_vm.menuDirectComponent && _vm.menuComponent.mode === 'vertical')?_c('Tooltip',{class:[(_vm.classPrefix + "__tooltip")],style:(_vm.itemStyle),attrs:{"placement":"right","content":_vm.tooltipContent,"disabled":_vm.tooltipDisabled,"offset":_vm.tooltipOffset,"render-html":""}},[_vm._t("default",[(_vm.icon)?_c('Icon',{class:_vm.icon,attrs:{"type":_vm.icon}}):_vm._e(),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.name))])])],2):[_vm._t("default",[(_vm.icon)?_c('Icon',{class:_vm.icon,attrs:{"type":_vm.icon}}):_vm._e(),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.name))])])]],2)}
var menu_itemvue_type_template_id_6e0e6565_staticRenderFns = []


// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue?vue&type=template&id=6e0e6565&

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.function.name.js
var es6_function_name = __webpack_require__(86);

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tooltip/src/tooltip.vue?vue&type=template&id=15cc9b39&
var tooltipvue_type_template_id_15cc9b39_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)],on:{"mouseenter":_vm.handlerMouseenter,"mouseleave":_vm.handlerMouseleave}},[_c('transition',{attrs:{"name":_vm.transition}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(!_vm.disabled && (_vm.visible || _vm.always)),expression:"!disabled && (visible || always)"}],ref:"popper",class:[(_vm.classPrefix + "__popper")],style:(_vm.popperStyle),on:{"mouseenter":_vm.handlerPopperMouseenter,"mouseleave":_vm.handlerPopperMouseleave}},[_c('div',{class:[(_vm.classPrefix + "__content")]},[(!this.backgroundColor)?_c('div',{class:[(_vm.classPrefix + "__arrow")]}):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__inner")],style:(_vm.expandStyle)},[_vm._t("content",[_vm._v(_vm._s(_vm.content))])],2)])])]),_vm._v(" "),_c('div',{ref:"reference",class:[(_vm.classPrefix + "__target")]},[_vm._t("default")],2)],1)}
var tooltipvue_type_template_id_15cc9b39_staticRenderFns = []


// CONCATENATED MODULE: ./packages/tooltip/src/tooltip.vue?vue&type=template&id=15cc9b39&

// EXTERNAL MODULE: external {"root":"Vue","commonjs":"vue","commonjs2":"vue","amd":"vue"}
var external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_ = __webpack_require__(62);
var external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default = /*#__PURE__*/__webpack_require__.n(external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_);

// CONCATENATED MODULE: ./src/mixins/popper.js


var isServer = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.prototype.$isServer;
var Popper = isServer ? function () {} : __webpack_require__(87);
/* harmony default export */ var popper = ({
  props: {
    placement: {
      type: String,
      default: 'bottom'
    },
    reference: Object,
    // 触发元素
    popper: Object,
    offset: {
      type: Number,
      default: 0
    },
    value: {
      type: Boolean,
      default: false
    },
    transition: String,
    options: {
      type: Object,
      default: function _default() {
        return {
          modifiers: {
            computeStyle: {
              gpuAcceleration: false
            },
            preventOverflow: {
              boundariesElement: 'window'
            }
          }
        };
      }
    }
  },
  data: function data() {
    return {
      visible: false,
      popperJS: null
    };
  },
  watch: {
    value: function value(newVal) {
      this.visible = newVal;
    },
    visible: function visible(newVal) {
      if (newVal) {
        this.$nextTick(this.updatePopper());
        this.$emit('on-show');
      } else {
        this.$emit('on-hide');
      }

      this.$emit('input', newVal);
    }
  },
  mounted: function mounted() {
    this.visible = this.value;
  },
  methods: {
    createPopper: function createPopper() {
      var _this = this;

      if (isServer) return;

      if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.placement)) {
        return;
      }

      var options = this.options;
      var clPopper = this.popper || this.$refs.popper;
      var reference = this.reference || this.$refs.reference;
      if (!clPopper || !reference) return;

      if (this.renderHtml === false) {
        options.eventsEnabled = false;
      }

      if (this.popperJS && this.popperJS.hasOwnProperty('destroy')) {
        this.popperJS.destroy();
      }

      options.placement = this.placement;
      !options.modifiers.offset && (options.modifiers.offset = {});
      options.modifiers.offset.offset = 0;

      options.onCreate = function () {
        _this.$nextTick(_this.updatePopper);

        _this.$emit('created', _this);
      };

      this.popperJS = new Popper(reference, clPopper, options);
    },
    updatePopper: function updatePopper() {
      if (isServer) return;
      this.popperJS ? this.popperJS.update() : this.$nextTick(this.createPopper());
    }
  },
  updated: function updated() {
    this.$nextTick(this.updatePopper());
  },
  beforeDestroy: function beforeDestroy() {
    if (isServer) return;

    if (this.popperJS && this.popperJS.hasOwnProperty('destroy')) {
      this.popperJS.destroy();
    }
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tooltip/src/tooltip.vue?vue&type=script&lang=js&








function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var tooltipvue_type_script_lang_js_ = ({
  name: 'Tooltip',
  mixins: [popper],
  props: {
    placement: {
      type: String,
      default: 'bottom'
    },
    transition: {
      type: String,
      default: 'fade'
    },
    content: String,
    backgroundColor: String,
    textColor: String,
    value: Boolean,
    disabled: Boolean,
    maxWidth: [String, Number],
    always: Boolean,
    // popper距离target的偏移
    offset: {
      type: Number,
      default: 10
    },
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: function _default() {
        return false;
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-tooltip',
      hoverTimer: null,
      popperHover: false,
      targetHover: false
    };
  },
  computed: {
    expandStyle: function expandStyle() {
      var style = {
        'background-color': this.backgroundColor,
        color: this.textColor
      };

      if (this.maxWidth !== undefined) {
        var maxWidth = parseFloat(this.maxWidth) + 'px';
        return _objectSpread({
          'max-width': maxWidth
        }, style);
      }

      return style;
    },
    popperStyle: function popperStyle() {
      if (this.placement.includes('bottom') || this.placement.includes('top')) {
        return {
          'padding-top': this.offset + 'px',
          'padding-bottom': this.offset + 'px'
        };
      }

      if (this.placement.includes('left') || this.placement.includes('right')) {
        return {
          'padding-left': this.offset + 'px',
          'padding-right': this.offset + 'px'
        };
      }

      return {};
    }
  },
  mounted: function mounted() {
    this.renderToHtml();

    if (this.always) {
      this.updatePopper();
    }
  },
  beforeDestroy: function beforeDestroy() {
    this.renderHtml && typeof this.renderHtml !== 'boolean' && this.renderHtml.removeChild(this.$refs.popper);
  },
  methods: {
    handlerMouseenter: function handlerMouseenter() {
      var _this = this;

      if (this.disabled) return;
      this.targetHover = true;
      if (this.hoverTimer) clearTimeout(this.hoverTimer);
      this.hoverTimer = setTimeout(function () {
        _this.visible = true;
      }, 100);
    },
    handlerMouseleave: function handlerMouseleave() {
      var _this2 = this;

      if (this.disabled) return;
      this.targetHover = false;

      if (this.hoverTimer) {
        clearTimeout(this.hoverTimer);
        this.hoverTimer = setTimeout(function () {
          _this2.visible = _this2.popperHover;
        }, 100);
      }
    },
    handlerPopperMouseenter: function handlerPopperMouseenter() {
      var _this3 = this;

      if (this.disabled) return;
      this.popperHover = true;
      if (this.hoverTimer) clearTimeout(this.hoverTimer);
      this.hoverTimer = setTimeout(function () {
        _this3.visible = true;
      }, 100);
    },
    handlerPopperMouseleave: function handlerPopperMouseleave() {
      var _this4 = this;

      if (this.disabled) return;
      this.popperHover = false;

      if (this.hoverTimer) {
        clearTimeout(this.hoverTimer);
        this.hoverTimer = setTimeout(function () {
          _this4.visible = _this4.targetHover;
        }, 100);
      }
    },
    renderToHtml: function renderToHtml() {
      if (typeof this.renderHtml === 'boolean' && this.renderHtml === false || !this.renderHtml) return;

      if (typeof this.renderHtml === 'boolean' && this.renderHtml === true) {
        document.body.appendChild(this.$refs.popper);
      } else {
        this.renderHtml.appendChild(this.$refs.popper);
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/tooltip/src/tooltip.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_tooltipvue_type_script_lang_js_ = (tooltipvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/tooltip/src/tooltip.vue





/* normalize component */

var tooltip_component = normalizeComponent(
  src_tooltipvue_type_script_lang_js_,
  tooltipvue_type_template_id_15cc9b39_render,
  tooltipvue_type_template_id_15cc9b39_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var tooltip = (tooltip_component.exports);
// CONCATENATED MODULE: ./packages/tooltip/index.js

/* harmony default export */ var packages_tooltip = (tooltip);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/menu/src/menu-item.vue?vue&type=script&lang=js&






function menu_itemvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function menu_itemvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { menu_itemvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { menu_itemvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//





/* harmony default export */ var menu_itemvue_type_script_lang_js_ = ({
  name: 'MenuItem',
  mixins: [emitter],
  props: {
    cKey: {
      type: String,
      required: true
    },
    name: String,
    disabled: Boolean,
    icon: String,
    to: {
      type: [Object, String],
      default: ''
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-menu-item',
      componentName: 'MenuItem',
      active: false,
      menuComponent: findComponent(this, 'Menu'),
      menuDirectComponent: findComponentDirect(this, 'Menu'),
      parentSubMenuComponentNum: findComponents(this, 'Submenu').length,
      // 父级元素有多少个subMenu组件
      tooltipContent: this.name
    };
  },
  computed: {
    itemStyle: function itemStyle() {
      var style = {};
      var padding = this.menuComponent.defaultPadding;
      var parentElIsGroup = this.$parent.componentName === 'MenuGroup';

      if (this.menuComponent.mode === 'horizontal') {
        if (!this.menuDirectComponent) padding = 10;
        if (parentElIsGroup) style = {
          'padding-left': padding * 2 + 'px'
        };else style = {
          'padding-left': padding + 'px'
        };

        if (this.menuDirectComponent) {
          style = menu_itemvue_type_script_lang_js_objectSpread(menu_itemvue_type_script_lang_js_objectSpread({}, style), {}, {
            height: parseInt(this.menuComponent.itemHeight) + 'px',
            'line-height': parseInt(this.menuComponent.itemHeight) + 'px'
          });
        }
      } else {
        var _p = this.parentSubMenuComponentNum * padding;

        _p = _p + padding;
        if (parentElIsGroup && !this.parentSubMenuComponentNum) style = {
          'padding-left': _p + padding / 2 + 'px'
        };else style = {
          'padding-left': _p + 'px'
        };

        if (this.menuComponent.collapse) {
          style = {
            'padding-left': padding + 'px'
          };
        }

        style = menu_itemvue_type_script_lang_js_objectSpread(menu_itemvue_type_script_lang_js_objectSpread({}, style), {}, {
          height: parseInt(this.menuComponent.itemHeight) + 'px',
          'line-height': parseInt(this.menuComponent.itemHeight) + 'px'
        });
      }

      return menu_itemvue_type_script_lang_js_objectSpread(menu_itemvue_type_script_lang_js_objectSpread({}, style), {}, {
        'padding-right': padding + 'px'
      });
    },
    tooltipOffset: function tooltipOffset() {
      var padding = this.menuComponent.defaultPadding;
      return padding + 10;
    },
    tooltipDisabled: function tooltipDisabled() {
      return this.disabled || !this.menuComponent.collapse;
    }
  },
  components: {
    Icon: packages_icon,
    Tooltip: packages_tooltip
  },
  methods: {
    handleClick: function handleClick() {
      if (this.disabled) return;
      this.parentEmit('Menu', 'on-update-active-key', this.cKey);
      this.parentEmit('Submenu', 'on-close-dropdown');
    },
    getTooltipContent: function getTooltipContent() {
      var menuItem = this.$el;
      var text = menuItem.textContent;
      if (this.name) text = this.name;
      this.tooltipContent = text;
    },
    setActive: function setActive(key) {
      if (this.disabled) return;
      this.active = this.cKey === key;
    }
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.getTooltipContent();

      _this.setActive(_this.menuComponent.currentActiveKey);
    });
  },
  watch: {
    'menuComponent.currentActiveKey': function menuComponentCurrentActiveKey(newVal) {
      this.setActive(newVal);
    }
  }
});
// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_menu_itemvue_type_script_lang_js_ = (menu_itemvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/menu/src/menu-item.vue





/* normalize component */

var menu_item_component = normalizeComponent(
  src_menu_itemvue_type_script_lang_js_,
  menu_itemvue_type_template_id_6e0e6565_render,
  menu_itemvue_type_template_id_6e0e6565_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var menu_item = (menu_item_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/menu/src/submenu.vue?vue&type=template&id=3e30ac12&
var submenuvue_type_template_id_3e30ac12_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
         ("" + _vm.classPrefix),
         _vm.opened && (_vm.classPrefix + "--opened"),
         _vm.menuComponent.theme && (_vm.classPrefix + "--" + (_vm.menuComponent.theme)),
         _vm.menuComponent.mode && (_vm.classPrefix + "--" + (_vm.menuComponent.mode)),
         !!_vm.menuDirectComponent && (_vm.classPrefix + "--direct"),
         _vm.disabled && 'is-disabled',
         _vm.active && 'is-active' ],on:{"mouseenter":_vm.handleMouseenter,"mouseleave":_vm.handleMouseleave}},[_c('div',{ref:"reference",class:[(_vm.classPrefix + "__title")],style:(_vm.titleStyle),on:{"click":function($event){$event.stopPropagation();return _vm.handleClick($event)}}},[_vm._t("title",[(_vm.icon)?_c('Icon',{class:_vm.icon,attrs:{"type":_vm.icon}}):_vm._e(),_vm._v(" "),_c('span',[_vm._v(_vm._s(_vm.name))])]),_vm._v(" "),(!_vm.hideDropIcon)?_c('Icon',{class:[(_vm.classPrefix + "__title-slide-icon")],style:(_vm.dropIconStyle),attrs:{"type":_vm.openedIcon}}):_vm._e()],2),_vm._v(" "),_c('slide-transition',[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.verticalTransitionShow),expression:"verticalTransitionShow"}],class:[(_vm.classPrefix + "__content")]},[_vm._t("default")],2)]),_vm._v(" "),_c('transition',{attrs:{"name":"slideUp"}},[_c('Drop',{directives:[{name:"show",rawName:"v-show",value:(_vm.dropTransitionShow),expression:"dropTransitionShow"}],ref:"dropDown",attrs:{"reference":this.$refs.reference,"placement":_vm.placement,"render-html":_vm.dropRenderHtml},nativeOn:{"mouseenter":function($event){return _vm.handleMouseenter($event)},"mouseleave":function($event){return _vm.handleMouseleave($event)}},model:{value:(_vm.opened),callback:function ($$v) {_vm.opened=$$v},expression:"opened"}},[_c('div',{class:[
                (_vm.classPrefix + "__drop-inner"),
                _vm.menuComponent.theme && (_vm.classPrefix + "__drop-inner-" + (_vm.menuComponent.theme)) ]},[_vm._t("default")],2)])],1)],1)}
var submenuvue_type_template_id_3e30ac12_staticRenderFns = []


// CONCATENATED MODULE: ./packages/menu/src/submenu.vue?vue&type=template&id=3e30ac12&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/base/slide-transition.vue?vue&type=template&id=9213eb50&
var slide_transitionvue_type_template_id_9213eb50_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"appear":_vm.appear},on:{"before-enter":_vm.beforeEnter,"enter":_vm.enter,"after-enter":_vm.afterEnter,"before-leave":_vm.beforeLeave,"leave":_vm.leave,"after-leave":_vm.afterLeave}},[_vm._t("default")],2)}
var slide_transitionvue_type_template_id_9213eb50_staticRenderFns = []


// CONCATENATED MODULE: ./packages/base/slide-transition.vue?vue&type=template&id=9213eb50&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/base/slide-transition.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var slide_transitionvue_type_script_lang_js_ = ({
  name: 'SlideTransition',
  props: {
    appear: Boolean,
    transitionClass: {
      type: String,
      default: 'slide-transition'
    }
  },
  methods: {
    // --------
    // 进入中
    // --------
    beforeEnter: function beforeEnter(el) {
      el.classList.add(this.transitionClass);
      if (!el.originStyle) el.originStyle = {};
      el.originStyle.paddingTop = el.style.paddingTop;
      el.originStyle.paddingBottom = el.style.paddingBottom;
      el.style.height = '0px';
      el.style.paddingTop = '0px';
      el.style.paddingBottom = '0px';
    },
    enter: function enter(el) {
      el.originStyle.overflow = el.style.overflow;

      if (el.scrollHeight !== 0) {
        el.style.height = el.scrollHeight + 'px';
        el.style.paddingTop = el.originStyle.paddingTop;
        el.style.paddingBottom = el.originStyle.paddingBottom;
      } else {
        el.style.height = '';
        el.style.paddingTop = el.originStyle.paddingTop;
        el.style.paddingBottom = el.originStyle.paddingBottom;
      }

      el.style.overflow = 'hidden';
    },
    afterEnter: function afterEnter(el) {
      el.classList.remove(this.transitionClass);
      el.style.height = '';
      el.style.overflow = el.originStyle.overflow;
    },
    // --------
    // 离开时
    // --------
    beforeLeave: function beforeLeave(el) {
      if (!el.originStyle) el.originStyle = {};
      el.originStyle.paddingTop = el.style.paddingTop;
      el.originStyle.paddingBottom = el.style.paddingBottom;
      el.originStyle.overflow = el.style.overflow;
      el.style.height = el.scrollHeight + 'px';
      el.style.overflow = 'hidden';
    },
    leave: function leave(el) {
      if (el.scrollHeight !== 0) {
        el.classList.add(this.transitionClass);
        el.style.height = '0px';
        el.style.paddingTop = '0px';
        el.style.paddingBottom = '0px';
      }
    },
    afterLeave: function afterLeave(el) {
      el.classList.remove(this.transitionClass);
      el.style.height = '';
      el.style.paddingTop = el.originStyle.paddingTop;
      el.style.paddingBottom = el.originStyle.paddingBottom;
      el.style.overflow = el.originStyle.overflow;
    }
  }
});
// CONCATENATED MODULE: ./packages/base/slide-transition.vue?vue&type=script&lang=js&
 /* harmony default export */ var base_slide_transitionvue_type_script_lang_js_ = (slide_transitionvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/base/slide-transition.vue





/* normalize component */

var slide_transition_component = normalizeComponent(
  base_slide_transitionvue_type_script_lang_js_,
  slide_transitionvue_type_template_id_9213eb50_render,
  slide_transitionvue_type_template_id_9213eb50_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var slide_transition = (slide_transition_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/base/drop.vue?vue&type=template&id=367c5f44&
var dropvue_type_template_id_367c5f44_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)],style:(_vm.expandStyle)},[_vm._t("default")],2)}
var dropvue_type_template_id_367c5f44_staticRenderFns = []


// CONCATENATED MODULE: ./packages/base/drop.vue?vue&type=template&id=367c5f44&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/base/drop.vue?vue&type=script&lang=js&






function dropvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function dropvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { dropvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { dropvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//


var dropvue_type_script_lang_js_isServer = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.prototype.$isServer;
var dropvue_type_script_lang_js_Popper = dropvue_type_script_lang_js_isServer ? function () {} : __webpack_require__(87);
/* harmony default export */ var dropvue_type_script_lang_js_ = ({
  name: 'Drop',
  props: {
    // 是否和选择器同宽
    dropdownMatchSelectWidth: Boolean,
    // 最小宽为选择器的宽度
    minWidth: {
      type: [Boolean, Number],
      default: true
    },
    placement: {
      type: String,
      default: 'bottom-start'
    },
    reference: {},
    // 触发元素
    popper: {},
    value: {
      type: Boolean,
      default: false
    },
    options: {
      type: Object,
      default: function _default() {
        return {
          modifiers: {
            computeStyle: {
              gpuAcceleration: false
            },
            preventOverflow: {
              boundariesElement: 'window'
            }
          }
        };
      }
    },
    // false渲染到当前位置 true渲染到body中 html类型渲染到指定位置
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: function _default() {
        return false;
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-drop',
      visible: false,
      width: '',
      boundariesElement: null
    };
  },
  watch: {
    value: function value(newVal) {
      this.visible = newVal;
    },
    visible: function visible(newVal) {
      if (newVal) {
        this.$nextTick(this.updatePopper());
        this.$emit('on-show');
      } else {
        this.$emit('on-hide');
      }

      this.$emit('input', newVal);
    }
  },
  computed: {
    expandStyle: function expandStyle() {
      var style = {
        width: 'auto'
      };
      if (this.dropdownMatchSelectWidth) style = {
        width: this.width
      };
      if (this.minWidth === true) style = dropvue_type_script_lang_js_objectSpread(dropvue_type_script_lang_js_objectSpread({}, style), {}, {
        minWidth: this.width
      });
      if (this.minWidth !== true && this.minWidth) style = dropvue_type_script_lang_js_objectSpread(dropvue_type_script_lang_js_objectSpread({}, style), {}, {
        minWidth: parseInt(this.minWidth) + 'px'
      });
      return style;
    }
  },
  mounted: function mounted() {
    var _this = this;

    this.visible = this.value;
    this.$nextTick(function () {
      _this.setWidth();

      _this.renderToHtml();
    });
  },
  methods: {
    setWidth: function setWidth() {
      var width = this.$parent && this.$parent.$el && (this.$parent.$el.offsetWidth || 0);
      this.width = width + 'px';
    },
    createPopper: function createPopper() {
      var _this2 = this;

      if (dropvue_type_script_lang_js_isServer) return; // this.boundariesElement = document.getElementsByClassName('views-main-content')[0];

      if (!/^(top|bottom|left|right)(-start|-end)?$/g.test(this.placement)) {
        return;
      }

      var options = this.options;
      var clPopper = this.$el;
      var reference = this.reference || this.$parent.$refs.reference;
      if (!clPopper || !reference) return;

      if (this.popperJS && this.popperJS.hasOwnProperty('destroy')) {
        this.popperJS.destroy();
      } // options.modifiers.preventOverflow.boundariesElement = this.boundariesElement || 'window';


      options.placement = this.placement;
      !options.modifiers.offset && (options.modifiers.offset = {});

      options.onCreate = function () {
        _this2.$nextTick(function () {
          return _this2.updatePopper();
        });
      };

      this.popperJS = new dropvue_type_script_lang_js_Popper(reference, clPopper, options);
    },
    updatePopper: function updatePopper() {
      var _this3 = this;

      if (dropvue_type_script_lang_js_isServer) return;
      this.$nextTick(function () {
        _this3.setWidth();
      });
      this.popperJS ? this.popperJS.update() : this.$nextTick(this.createPopper());
    },
    renderToHtml: function renderToHtml() {
      if (typeof this.renderHtml === 'boolean' && this.renderHtml === false || !this.renderHtml) return;

      if (typeof this.renderHtml === 'boolean' && this.renderHtml === true) {
        document.body.appendChild(this.$el);
      } else {
        this.renderHtml.appendChild(this.$el);
      }
    }
  },
  updated: function updated() {
    var _this4 = this;

    this.$nextTick(function () {
      _this4.updatePopper();
    });
  },
  destroyed: function destroyed() {
    if (dropvue_type_script_lang_js_isServer) return;

    if (this.popperJS && this.popperJS.hasOwnProperty('destroy')) {
      this.popperJS.destroy();
    } // this.renderHtml && typeof this.renderHtml !== 'boolean' && this.$el.parentNode && this.renderHtml.removeChild(this.$el);
    // this.renderHtml && typeof this.renderHtml === 'boolean' && this.$el.parentNode && document.body.removeChild(this.$el);

  }
});
// CONCATENATED MODULE: ./packages/base/drop.vue?vue&type=script&lang=js&
 /* harmony default export */ var base_dropvue_type_script_lang_js_ = (dropvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/base/drop.vue





/* normalize component */

var drop_component = normalizeComponent(
  base_dropvue_type_script_lang_js_,
  dropvue_type_template_id_367c5f44_render,
  dropvue_type_template_id_367c5f44_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var drop = (drop_component.exports);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/menu/src/submenu.vue?vue&type=script&lang=js&








function submenuvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function submenuvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { submenuvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { submenuvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//






/* harmony default export */ var submenuvue_type_script_lang_js_ = ({
  name: 'Submenu',
  mixins: [emitter],
  props: {
    cKey: {
      type: String,
      required: true
    },
    name: String,
    icon: String,
    disabled: Boolean,
    hideDropIcon: Boolean,
    forbidden: Boolean // 禁止展开（但不是disabled，不控制样式）

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-submenu',
      componentName: 'Submenu',
      opened: false,
      active: false,
      menuComponent: findComponent(this, 'Menu'),
      menuDirectComponent: findComponentDirect(this, 'Menu'),
      parentSubmenuComponents: findComponents(this, 'Submenu'),
      childrenMenuItemComponents: findComponentChildrens(this, 'MenuItem'),
      parentSubMenuComponentNum: findComponents(this, 'Submenu').length,
      // 父级元素有多少个subMenu组件
      timer: null
    };
  },
  computed: {
    titleStyle: function titleStyle() {
      var style = {};
      var padding = this.menuComponent.defaultPadding;

      if (this.menuComponent.mode === 'horizontal') {
        if (!this.menuDirectComponent) padding = 10;
        style = {
          'padding-left': padding + 'px'
        };

        if (this.menuDirectComponent) {
          style = submenuvue_type_script_lang_js_objectSpread(submenuvue_type_script_lang_js_objectSpread({}, style), {}, {
            'padding-left': padding + 'px',
            height: parseInt(this.menuComponent.itemHeight) + 'px',
            'line-height': parseInt(this.menuComponent.itemHeight) + 'px'
          });
        }
      } else {
        style = {
          height: parseInt(this.menuComponent.itemHeight) + 'px',
          'line-height': parseInt(this.menuComponent.itemHeight) + 'px',
          'padding-left': (this.parentSubMenuComponentNum + 1) * padding + 'px'
        };

        if (this.menuComponent.collapse) {
          style = submenuvue_type_script_lang_js_objectSpread(submenuvue_type_script_lang_js_objectSpread({}, style), {}, {
            'padding-left': padding + 'px'
          });
        }
      }

      return submenuvue_type_script_lang_js_objectSpread(submenuvue_type_script_lang_js_objectSpread({}, style), {}, {
        'padding-right': padding + 'px'
      });
    },
    parentSubmenuComponentkeys: function parentSubmenuComponentkeys() {
      var keys = [];
      this.parentSubmenuComponents.forEach(function (item) {
        keys.push(item.cKey);
      });
      return keys;
    },
    openedIcon: function openedIcon() {
      if (this.parentSubMenuComponentNum && this.menuComponent.mode === 'horizontal') {
        return 'left';
      }

      if (this.menuComponent.collapse && this.menuComponent.mode === 'vertical') {
        return 'left';
      }

      return 'down';
    },
    placement: function placement() {
      if (this.parentSubMenuComponentNum || this.menuComponent.mode === 'vertical') {
        return 'right-start';
      }

      return 'bottom-start';
    },
    dropIconStyle: function dropIconStyle() {
      var padding = this.menuComponent.defaultPadding;

      if (this.menuComponent.mode === 'horizontal' && !this.menuDirectComponent) {
        padding = 10;
      }

      return {
        right: padding + 'px'
      };
    },
    dropRenderHtml: function dropRenderHtml() {
      var isParentSubmenu = this.$parent.$parent.componentName === 'Submenu';
      if (this.menuComponent.mode === 'horizontal' && isParentSubmenu) return false;
      if (this.menuComponent.mode === 'vertical' && this.menuComponent.collapse && isParentSubmenu) return false;
      return true;
    },
    verticalTransitionShow: function verticalTransitionShow() {
      return this.menuComponent.mode === 'vertical' && !this.menuComponent.collapse && this.opened && !this.disabled;
    },
    dropTransitionShow: function dropTransitionShow() {
      var mode = this.menuComponent.mode === 'horizontal' || this.menuComponent.mode === 'vertical' && this.menuComponent.collapse;
      return mode && this.opened && !this.disabled;
    }
  },
  components: {
    SlideTransition: slide_transition,
    Drop: drop,
    Icon: packages_icon
  },
  mounted: function mounted() {
    var _this = this;

    this.$on('on-close-dropdown', function () {
      if (_this.menuComponent.mode === 'horizontal' || _this.menuComponent.mode === 'vertical' && _this.menuComponent.collapse) {
        _this.opened = false;
      }
    });
  },
  methods: {
    handleMouseenter: function handleMouseenter() {
      var _this2 = this;

      if (this.disabled || this.forbidden) return;
      if (this.menuComponent.mode === 'vertical' && !this.menuComponent.collapse) return;
      clearTimeout(this.timer);
      this.timer = setTimeout(function () {
        _this2.opened = true;
      }, 200);
      this.parentEmit('Menu', 'on-update-opened-key', this.cKey);
    },
    handleMouseleave: function handleMouseleave() {
      var _this3 = this;

      if (this.disabled || this.forbidden) return;
      if (this.menuComponent.mode === 'vertical' && !this.menuComponent.collapse) return;
      clearTimeout(this.timer);
      this.timer = setTimeout(function () {
        _this3.opened = false;
      }, 100);
      this.parentEmit('Menu', 'on-update-opened-key', this.cKey);
    },
    handleClick: function handleClick() {
      if (this.disabled || this.forbidden) return;
      if (this.menuComponent.mode === 'horizontal') return;
      if (this.menuComponent.mode === 'vertical' && this.menuComponent.collapse) return;
      this.closeSubmenuChildren();
      this.opened = !this.opened;

      if (this.menuComponent.accordion) {
        var openedKeys = [];

        if (this.opened) {
          openedKeys = [].concat(_toConsumableArray(this.parentSubmenuComponentkeys), [this.cKey]);
        } else {
          openedKeys = _toConsumableArray(this.parentSubmenuComponentkeys);
        }

        this.parentEmit('Menu', 'on-update-opened-key', openedKeys);
      } else {
        this.parentEmit('Menu', 'on-update-opened-key', this.cKey);
      }
    },
    closeSubmenuChildren: function closeSubmenuChildren() {
      var _this4 = this;

      // 关闭该组件下的所有submenu子组件
      var childrens = findComponentChildrens(this, 'Submenu');
      childrens.forEach(function (item) {
        if (item.opened) {
          _this4.parentEmit('Menu', 'on-update-opened-key', item.cKey);

          item.opened = false;
        }
      });
    },
    menuItemChildrenActive: function menuItemChildrenActive() {
      var _this5 = this;

      if (this.disabled || this.forbidden) return;
      var activeChildren = findComponentChildrens(this, 'MenuItem').filter(function (item) {
        return item.cKey === _this5.menuComponent.currentActiveKey;
      });
      this.active = !!activeChildren.length;
    },
    forbiddenUpdateOpenKeys: function forbiddenUpdateOpenKeys() {
      if (this.forbidden) {
        this.opened = false;
        var openkeys = this.menuComponent && this.menuComponent.openedKeys;

        if (openkeys.includes(this.cKey)) {
          this.parentEmit('Menu', 'on-update-opened-key', this.cKey);
        }
      }
    }
  },
  watch: {
    'menuComponent.openedKeys': function menuComponentOpenedKeys(newVal) {
      if (this.disabled || this.forbidden) return;
      this.opened = newVal.includes(this.cKey);
    },
    'menuComponent.currentActiveKey': function menuComponentCurrentActiveKey() {
      if (this.menuComponent.mode === 'horizontal' || this.menuComponent.mode === 'vertical' && this.menuComponent.collapse) {
        this.menuItemChildrenActive();
      }
    },
    forbidden: function forbidden(newVal) {
      if (newVal) {
        this.closeSubmenuChildren();
        this.forbiddenUpdateOpenKeys();
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/menu/src/submenu.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_submenuvue_type_script_lang_js_ = (submenuvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/menu/src/submenu.vue





/* normalize component */

var submenu_component = normalizeComponent(
  src_submenuvue_type_script_lang_js_,
  submenuvue_type_template_id_3e30ac12_render,
  submenuvue_type_template_id_3e30ac12_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var submenu = (submenu_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/menu/src/menu-group.vue?vue&type=template&id=17a445fb&
var menu_groupvue_type_template_id_17a445fb_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
    ("" + _vm.classPrefix),
    _vm.menuComponent.theme && (_vm.classPrefix + "--" + (_vm.menuComponent.theme)),
    _vm.menuComponent.mode && (_vm.classPrefix + "--" + (_vm.menuComponent.mode)) ]},[_c('div',{class:[(_vm.classPrefix + "__title")],style:(_vm.groupStyle)},[_vm._t("title",[_vm._v(_vm._s(_vm.name))])],2),_vm._v(" "),_vm._t("default")],2)}
var menu_groupvue_type_template_id_17a445fb_staticRenderFns = []


// CONCATENATED MODULE: ./packages/menu/src/menu-group.vue?vue&type=template&id=17a445fb&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/menu/src/menu-group.vue?vue&type=script&lang=js&





function menu_groupvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function menu_groupvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { menu_groupvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { menu_groupvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var menu_groupvue_type_script_lang_js_ = ({
  name: 'MenuGroup',
  props: {
    name: String
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-menu-group',
      componentName: 'MenuGroup',
      menuComponent: findComponent(this, 'Menu'),
      parentSubMenuComponentNum: findComponents(this, 'Submenu').length // 父级元素有多少个subMenu组件

    };
  },
  computed: {
    groupStyle: function groupStyle() {
      var style = {};
      var padding = this.menuComponent.defaultPadding;

      if (this.menuComponent.mode === 'horizontal') {
        padding = 10;
        style = {
          'padding-left': padding + 'px'
        };
      } else {
        var _p = this.parentSubMenuComponentNum * padding + padding / 2;

        if (_p < padding) _p = padding;
        var itemHeight = parseInt(this.menuComponent.itemHeight);
        if (this.menuComponent.collapse) _p = padding - padding / 2;
        style = {
          height: itemHeight + 'px',
          'line-height': itemHeight + 'px',
          'padding-left': _p + 'px'
        };
      }

      return menu_groupvue_type_script_lang_js_objectSpread(menu_groupvue_type_script_lang_js_objectSpread({}, style), {}, {
        'padding-right': padding + 'px'
      });
    }
  }
});
// CONCATENATED MODULE: ./packages/menu/src/menu-group.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_menu_groupvue_type_script_lang_js_ = (menu_groupvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/menu/src/menu-group.vue





/* normalize component */

var menu_group_component = normalizeComponent(
  src_menu_groupvue_type_script_lang_js_,
  menu_groupvue_type_template_id_17a445fb_render,
  menu_groupvue_type_template_id_17a445fb_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var menu_group = (menu_group_component.exports);
// CONCATENATED MODULE: ./packages/menu/index.js




menu.MenuItem = menu_item;
menu.MenuGroup = menu_group;
menu.Submenu = submenu;
/* harmony default export */ var packages_menu = (menu);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=template&id=c80dda9c&
var buttonvue_type_template_id_c80dda9c_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{class:[
            ("" + _vm.classPrefix),
            _vm.type && (_vm.classPrefix + "--type-" + _vm.type),
            _vm.size && (_vm.classPrefix + "--size-" + _vm.size),
            _vm.block && (_vm.classPrefix + "--block"),
            _vm.circle && (_vm.classPrefix + "--circle"),
            _vm.circle && !_vm.onlyIconCircle && (_vm.classPrefix + "--circle-text"),
            {
                'is-disabled': _vm.disabled,
                'is-loading': _vm.loading
            }
        ],attrs:{"disabled":_vm.disabled},on:{"click":_vm.handleClick}},[(_vm.loading)?_c('Icon',{staticClass:"animation-rotate",attrs:{"type":"loading"}}):(_vm.icon)?_c('Icon',{attrs:{"type":_vm.icon}}):_vm._e(),_vm._v(" "),(_vm.$slots.default)?_c('span',[_vm._t("default")],2):_vm._e()],1)}
var buttonvue_type_template_id_c80dda9c_staticRenderFns = []


// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=template&id=c80dda9c&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/button/src/button.vue?vue&type=script&lang=js&



//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var buttonvue_type_script_lang_js_ = ({
  name: 'Button',
  props: {
    disabled: Boolean,
    type: {
      type: String,
      default: 'default',
      validator: function validator(value) {
        return ['primary', 'default', 'warning', 'danger', 'success', 'info', 'text'].includes(value);
      }
    },
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    block: Boolean,
    loading: Boolean,
    circle: Boolean,
    icon: String
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-button',
      onlyIconCircle: true // 是否只是icon的circle

    };
  },
  computed: {},
  components: {
    Icon: packages_icon
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.isOnlyIconCircle();
    });
  },
  methods: {
    isOnlyIconCircle: function isOnlyIconCircle() {
      var _this2 = this;

      var slotDefault = this.$slots.default;

      if (slotDefault) {
        slotDefault.forEach(function (item) {
          if (item.text) {
            _this2.onlyIconCircle = false;
          }
        });
      }
    },
    handleClick: function handleClick(event) {
      if (this.disabled || this.loading) return;
      this.$emit('click', event);
    }
  }
});
// CONCATENATED MODULE: ./packages/button/src/button.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_buttonvue_type_script_lang_js_ = (buttonvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/button/src/button.vue





/* normalize component */

var button_component = normalizeComponent(
  src_buttonvue_type_script_lang_js_,
  buttonvue_type_template_id_c80dda9c_render,
  buttonvue_type_template_id_c80dda9c_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_button = (button_component.exports);
// CONCATENATED MODULE: ./packages/button/index.js

/* harmony default export */ var packages_button = (src_button);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/button/src/button-group.vue?vue&type=template&id=ce220372&
var button_groupvue_type_template_id_ce220372_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[_vm._t("default")],2)}
var button_groupvue_type_template_id_ce220372_staticRenderFns = []


// CONCATENATED MODULE: ./packages/button/src/button-group.vue?vue&type=template&id=ce220372&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/button/src/button-group.vue?vue&type=script&lang=js&
//
//
//
//
//
//

/* harmony default export */ var button_groupvue_type_script_lang_js_ = ({
  name: 'ButtonGroup',
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-button-group'
    };
  }
});
// CONCATENATED MODULE: ./packages/button/src/button-group.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_button_groupvue_type_script_lang_js_ = (button_groupvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/button/src/button-group.vue





/* normalize component */

var button_group_component = normalizeComponent(
  src_button_groupvue_type_script_lang_js_,
  button_groupvue_type_template_id_ce220372_render,
  button_groupvue_type_template_id_ce220372_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var button_group = (button_group_component.exports);
// CONCATENATED MODULE: ./packages/button-group/index.js

/* harmony default export */ var packages_button_group = (button_group);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=template&id=37ecda86&
var checkboxvue_type_template_id_37ecda86_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{class:[
    ("" + _vm.classPrefix),
    _vm.computedSize && (_vm.classPrefix + "--" + _vm.computedSize),
    {
        'is-checked': _vm.isChecked,
        'is-indeterminate': !_vm.isChecked && _vm.indeterminate,
        'is-disabled': _vm.isDisabled,
    }
]},[_c('span',{class:[(_vm.classPrefix + "__input")]},[_c('span',{class:[(_vm.classPrefix + "__inner")]}),_vm._v(" "),_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.model),expression:"model"}],class:[(_vm.classPrefix + "__source")],attrs:{"hidden":"","type":"checkbox","true-value":_vm.trueValue,"false-value":_vm.falseValue,"name":_vm.name,"disabled":_vm.isDisabled},domProps:{"value":_vm.label,"checked":Array.isArray(_vm.model)?_vm._i(_vm.model,_vm.label)>-1:_vm._q(_vm.model,_vm.trueValue)},on:{"change":[function($event){var $$a=_vm.model,$$el=$event.target,$$c=$$el.checked?(_vm.trueValue):(_vm.falseValue);if(Array.isArray($$a)){var $$v=_vm.label,$$i=_vm._i($$a,$$v);if($$el.checked){$$i<0&&(_vm.model=$$a.concat([$$v]))}else{$$i>-1&&(_vm.model=$$a.slice(0,$$i).concat($$a.slice($$i+1)))}}else{_vm.model=$$c}},_vm.handleChange]}})]),_vm._v(" "),(_vm.showLabel)?_c('span',{class:[(_vm.classPrefix + "__label")]},[_vm._t("default",[_vm._v(_vm._s(_vm.label))])],2):_vm._e()])}
var checkboxvue_type_template_id_37ecda86_staticRenderFns = []


// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=template&id=37ecda86&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&



//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var checkboxvue_type_script_lang_js_ = ({
  name: 'Checkbox',
  props: {
    value: {
      type: [Number, String, Boolean],
      default: false
    },
    label: [Number, String, Boolean],
    indeterminate: Boolean,
    disabled: Boolean,
    name: String,
    trueValue: {
      type: [Number, String, Boolean],
      default: true
    },
    falseValue: {
      type: [Number, String, Boolean],
      default: false
    },
    size: {
      type: String,
      default: 'default',
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-checkbox',
      model: false,
      isChecked: false,
      showLabel: true,
      checkboxGroup: findComponent(this, 'CheckboxGroup'),
      form: findComponent(this, 'Form')
    };
  },
  computed: {
    computedSize: function computedSize() {
      if (this.size !== 'default') return this.size;
      if (this.checkboxGroup && this.checkboxGroup.size !== 'default') return this.checkboxGroup.size;
      if (this.form && this.form.size !== 'default') return this.form.size;
      return this.size;
    },
    isDisabled: function isDisabled() {
      return this.checkboxGroup ? this.checkboxGroup.disabled ? this.checkboxGroup.disabled : this.disabled : this.disabled;
    }
  },
  mounted: function mounted() {
    this.$nextTick(this.updateModel());
    this.showLabel = this.$slots.default !== undefined;
  },
  methods: {
    handleChange: function handleChange() {
      var _this = this;

      if (this.isDisabled) return;
      this.$nextTick(function () {
        var value;

        if (_this.model === _this.trueValue) {
          value = _this.trueValue;
        } else if (_this.model === _this.falseValue) {
          value = _this.falseValue;
        } else {
          // eslint-disable-next-line no-throw-literal
          throw 'Value should be trueValue or falseValue';
        }

        _this.updateIsChecked(value);

        _this.checkboxGroup ? _this.checkboxGroup.dispatch('input', _this.label, value) : _this.$emit('input', value);
        _this.checkboxGroup ? _this.checkboxGroup.dispatch('change', _this.label, value) : _this.$emit('change', value);
      });
    },
    updateIsChecked: function updateIsChecked(value) {
      this.isChecked = value === this.trueValue;
    },
    updateModel: function updateModel() {
      if (this.checkboxGroup && Array.isArray(this.checkboxGroup.value)) {
        this.model = this.checkboxGroup.value.includes(this.label);
        this.updateIsChecked(this.model);
      } else {
        this.model = this.value;
      }
    }
  },
  watch: {
    value: function value(newVal) {
      this.model = newVal;

      if (newVal === this.trueValue) {
        this.model = this.trueValue;
      } else if (newVal === this.falseValue) {
        this.model = this.falseValue;
      } else {
        // eslint-disable-next-line no-throw-literal
        throw 'Value should be trueValue or falseValue';
      }
    },
    'checkboxGroup.value': function checkboxGroupValue() {
      this.updateModel();
    },
    model: function model(newVal) {
      this.updateIsChecked(newVal);
    }
  }
});
// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_checkboxvue_type_script_lang_js_ = (checkboxvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/checkbox/src/checkbox.vue





/* normalize component */

var checkbox_component = normalizeComponent(
  src_checkboxvue_type_script_lang_js_,
  checkboxvue_type_template_id_37ecda86_render,
  checkboxvue_type_template_id_37ecda86_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_checkbox = (checkbox_component.exports);
// CONCATENATED MODULE: ./packages/checkbox/index.js

/* harmony default export */ var packages_checkbox = (src_checkbox);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-group.vue?vue&type=template&id=b0b69726&
var checkbox_groupvue_type_template_id_b0b69726_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[(_vm.$slots.default)?[_vm._t("default")]:(_vm.options && _vm.options.length)?_vm._l((_vm.options),function(item){return _c('Checkbox',{key:item.value,attrs:{"name":item.name,"disabled":item.disabled,"label":item.value}},[_vm._v(_vm._s(item.label)+"\n    ")])}):_vm._e()],2)}
var checkbox_groupvue_type_template_id_b0b69726_staticRenderFns = []


// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue?vue&type=template&id=b0b69726&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/checkbox/src/checkbox-group.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var checkbox_groupvue_type_script_lang_js_ = ({
  name: 'CheckboxGroup',
  props: {
    value: Array,
    disabled: Boolean,
    type: String,
    size: {
      default: 'default',
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    options: Array
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-checkbox-group',
      componentName: 'CheckboxGroup'
    };
  },
  components: {
    Checkbox: src_checkbox
  },
  methods: {
    dispatch: function dispatch(type, label, value) {
      var index = this.value.indexOf(label);
      index > -1 && this.value.splice(index, 1);
      value && this.value.push(label);
      type === 'input' && this.$emit('input', this.value);
      type === 'change' && this.$emit('change', this.value);
    }
  }
});
// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_checkbox_groupvue_type_script_lang_js_ = (checkbox_groupvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/checkbox/src/checkbox-group.vue





/* normalize component */

var checkbox_group_component = normalizeComponent(
  src_checkbox_groupvue_type_script_lang_js_,
  checkbox_groupvue_type_template_id_b0b69726_render,
  checkbox_groupvue_type_template_id_b0b69726_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var checkbox_group = (checkbox_group_component.exports);
// CONCATENATED MODULE: ./packages/checkbox-group/index.js

/* harmony default export */ var packages_checkbox_group = (checkbox_group);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/radio/src/radio.vue?vue&type=template&id=40bd1b88&
var radiovue_type_template_id_40bd1b88_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('label',{class:[
    ("" + _vm.classPrefix),
    _vm.computedSize && (_vm.classPrefix + "--" + _vm.computedSize),
    {
        'is-disabled': _vm.isDisabled,
        'is-checked': _vm.model === _vm.label,
    }
]},[_c('span',{class:[(_vm.classPrefix + "__input")]},[_c('span',{class:[(_vm.classPrefix + "__inner")]}),_vm._v(" "),_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.model),expression:"model"}],class:[(_vm.classPrefix + "__source")],attrs:{"type":"radio","name":_vm.name,"hidden":"","disabled":_vm.isDisabled},domProps:{"value":_vm.label,"checked":_vm._q(_vm.model,_vm.label)},on:{"change":[function($event){_vm.model=_vm.label},_vm.handleChange]}})]),_vm._v(" "),_c('span',{class:[(_vm.classPrefix + "__label")]},[_vm._t("default",[_vm._v(_vm._s(_vm.label))])],2)])}
var radiovue_type_template_id_40bd1b88_staticRenderFns = []


// CONCATENATED MODULE: ./packages/radio/src/radio.vue?vue&type=template&id=40bd1b88&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/radio/src/radio.vue?vue&type=script&lang=js&



//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var radiovue_type_script_lang_js_ = ({
  name: 'Radio',
  props: {
    name: String,
    value: {
      type: [String, Number, Boolean],
      default: false
    },
    label: {
      type: [String, Number, Boolean],
      default: true
    },
    disabled: Boolean,
    size: {
      type: String,
      default: 'default',
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-radio',
      radioGroup: findComponent(this, 'RadioGroup'),
      form: findComponent(this, 'Form')
    };
  },
  computed: {
    model: {
      get: function get() {
        return this.radioGroup ? this.radioGroup.value : this.value;
      },
      set: function set(value) {
        this.radioGroup ? this.radioGroup.dispatch('input', value) : this.$emit('input', value);
      }
    },
    isDisabled: function isDisabled() {
      return this.radioGroup ? this.radioGroup.disabled || this.disabled : this.disabled;
    },
    computedSize: function computedSize() {
      if (this.size !== 'default') return this.size;
      if (this.radioGroup && this.radioGroup.size !== 'default') return this.radioGroup.size;
      if (this.form && this.form.size !== 'default') return this.form.size;
      return this.size;
    }
  },
  methods: {
    handleChange: function handleChange() {
      var _this = this;

      if (this.isDisabled) return;
      this.$nextTick(function () {
        _this.radioGroup ? _this.radioGroup.dispatch('change', _this.model) : _this.$emit('change', _this.model);
      });
    }
  }
});
// CONCATENATED MODULE: ./packages/radio/src/radio.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_radiovue_type_script_lang_js_ = (radiovue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/radio/src/radio.vue





/* normalize component */

var radio_component = normalizeComponent(
  src_radiovue_type_script_lang_js_,
  radiovue_type_template_id_40bd1b88_render,
  radiovue_type_template_id_40bd1b88_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_radio = (radio_component.exports);
// CONCATENATED MODULE: ./packages/radio/index.js

/* harmony default export */ var packages_radio = (src_radio);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/radio/src/radio-group.vue?vue&type=template&id=7c638238&
var radio_groupvue_type_template_id_7c638238_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[(_vm.$slots.default)?[_vm._t("default")]:(_vm.options && _vm.options.length)?_vm._l((_vm.options),function(item){return _c('radio',{key:item.value,attrs:{"name":item.name,"disabled":item.disabled,"label":item.value}},[_vm._v(_vm._s(item.label)+"\n    ")])}):_vm._e()],2)}
var radio_groupvue_type_template_id_7c638238_staticRenderFns = []


// CONCATENATED MODULE: ./packages/radio/src/radio-group.vue?vue&type=template&id=7c638238&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/radio/src/radio-group.vue?vue&type=script&lang=js&



//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var radio_groupvue_type_script_lang_js_ = ({
  name: 'RadioGroup',
  props: {
    value: [String, Number, Boolean],
    disabled: Boolean,
    size: {
      type: String,
      default: 'default',
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    options: Array
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-radio-group',
      componentName: 'RadioGroup'
    };
  },
  components: {
    Radio: src_radio
  },
  methods: {
    dispatch: function dispatch(type, value) {
      type === 'input' && this.$emit('input', value);
      type === 'change' && this.$emit('change', value);
    }
  }
});
// CONCATENATED MODULE: ./packages/radio/src/radio-group.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_radio_groupvue_type_script_lang_js_ = (radio_groupvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/radio/src/radio-group.vue





/* normalize component */

var radio_group_component = normalizeComponent(
  src_radio_groupvue_type_script_lang_js_,
  radio_groupvue_type_template_id_7c638238_render,
  radio_groupvue_type_template_id_7c638238_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var radio_group = (radio_group_component.exports);
// CONCATENATED MODULE: ./packages/radio-group/index.js

/* harmony default export */ var packages_radio_group = (radio_group);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=template&id=272f83e4&
var inputvue_type_template_id_272f83e4_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        _vm.type !== 'textarea' && ("" + _vm.classPrefix),
        _vm.type === 'number' && (_vm.classPrefix + "--number"),
        _vm.type === 'textarea' && ("" + _vm.classPrefixTextArea),
        _vm.computedSize && _vm.type !== 'textarea' && (_vm.classPrefix + "--" + _vm.computedSize),
        _vm.computedSize && _vm.type === 'textarea' && (_vm.classPrefixTextArea + "--" + _vm.computedSize),
        _vm.isDisabled && 'is-disabled' ],on:{"mouseenter":function($event){_vm.hovering = true},"mouseleave":function($event){_vm.hovering = false}}},[(_vm.type !== 'textarea')?[(_vm.$slots.prepend)?_c('div',{class:[(_vm.classPrefix + "__prepend")]},[_vm._t("prepend")],2):_vm._e(),_vm._v(" "),(_vm.showPrefix)?_c('div',{class:[(_vm.classPrefix + "__prefix")]},[(_vm.$slots.prefix)?_c('div',{class:[(_vm.classPrefix + "__prefix-slot")]},[_vm._t("prefix")],2):(_vm.type === 'number')?_c('Icon',{class:[(_vm.classPrefix + "__prefix-icon"), (_vm.classPrefix + "__prefix-step"), _vm.numberStepDisabled.min && (_vm.classPrefix + "__step-disabled")],attrs:{"type":"minus"},on:{"click":_vm.handlerNumberMinus}}):_c('Icon',{class:(_vm.classPrefix + "__prefix-icon " + _vm.prefix),attrs:{"type":_vm.prefix}})],1):_vm._e(),_vm._v(" "),_c('input',{ref:"input",class:[
                    (_vm.classPrefix + "__source"),
                    ((_vm.type === 'search' && _vm.suffixButton) || _vm.$slots.append) && (_vm.classPrefix + "__source-append"),
                    _vm.$slots.prepend && (_vm.classPrefix + "__source-prepend"),
                    (_vm.showSuffix || _vm.clearable) && (_vm.classPrefix + "__source-suffix"),
                    _vm.showPrefix && (_vm.classPrefix + "__source-prefix") ],style:(_vm.inputStyle),attrs:{"type":_vm.type === 'password' && !_vm.showPasswordVisible ? 'password' : 'text',"name":_vm.name,"disabled":_vm.isDisabled,"readonly":_vm.readonly,"placeholder":_vm.placeholder},on:{"compositionstart":_vm.handleCompositionStart,"compositionend":_vm.handleCompositionEnd,"keydown":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }return _vm.handlerEnter($event)},"blur":_vm.handlerBlur,"focus":_vm.handlerFocus,"input":_vm.handlerInput,"change":_vm.handlerChange}}),_vm._v(" "),(_vm.showSuffix)?_c('div',{class:[(_vm.classPrefix + "__suffix")]},[(_vm.suffixIconClass.length)?_c('i',{class:_vm.suffixIconClass,on:{"click":_vm.handleSuffixClick}}):(_vm.$slots.suffix)?_c('div',{class:[(_vm.classPrefix + "__suffix-slot")]},[_vm._t("suffix")],2):(_vm.type === 'number' && _vm.stepType && _vm.step)?[_c('Icon',{class:[(_vm.classPrefix + "__suffix-step-up"), (_vm.classPrefix + "__suffix-step"), _vm.numberStepDisabled.max && (_vm.classPrefix + "__step-disabled")],attrs:{"type":"up"},on:{"click":_vm.handlerNumberPlus}}),_vm._v(" "),_c('Icon',{class:[(_vm.classPrefix + "__suffix-step-down"), (_vm.classPrefix + "__suffix-step"), _vm.numberStepDisabled.min && (_vm.classPrefix + "__step-disabled")],attrs:{"type":"down"},on:{"click":_vm.handlerNumberMinus}})]:_vm._e()],2):(_vm.showLimitLabel && _vm.maxLength.toString())?_c('div',{class:[(_vm.classPrefix + "__suffix-limit")]},[_vm._v("\n            "+_vm._s(_vm.modelValue !== undefined ? _vm.modelValue.length : 0)+"/"+_vm._s(_vm.maxLength || 0)+"\n        ")]):(_vm.$slots.append || (_vm.type === 'search' && _vm.suffixButton))?_c('div',{class:[(_vm.classPrefix + "__append"), (_vm.type === 'search' && _vm.suffixButton) && (_vm.classPrefix + "__append-button-wrap")]},[_vm._t("append",[_c('Button',{class:[(_vm.classPrefix + "__append-button")],attrs:{"type":"primary","size":_vm.computedSize,"disabled":_vm.isDisabled},on:{"click":_vm.handlerSearch}},[(_vm.suffixButton === true)?_c('Icon',{attrs:{"type":"search"}}):[_vm._v(_vm._s(_vm.suffixButton))]],2)])],2):_vm._e()]:_vm._e(),_vm._v(" "),(_vm.type === 'textarea')?[_c('textarea',{ref:"textarea",class:[(_vm.classPrefixTextArea + "__source")],style:(_vm.expandStyle),attrs:{"name":_vm.name,"disabled":_vm.isDisabled,"readonly":_vm.readonly,"placeholder":_vm.placeholder,"cols":_vm.cols,"rows":_vm.rows},on:{"compositionstart":_vm.handleCompositionStart,"compositionend":_vm.handleCompositionEnd,"blur":_vm.handlerBlur,"focus":_vm.handlerFocus,"input":_vm.handlerInput,"change":_vm.handlerChange}}),_vm._v(" "),(_vm.showLimitLabel && _vm.maxLength.toString())?_c('div',{class:[(_vm.classPrefixTextArea + "__suffix-limit")]},[_vm._v("\n            "+_vm._s(_vm.modelValue !== undefined ? _vm.modelValue.length : 0)+"/"+_vm._s(_vm.maxLength || 0)+"\n        ")]):_vm._e()]:_vm._e()],2)}
var inputvue_type_template_id_272f83e4_staticRenderFns = []


// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=template&id=272f83e4&

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.regexp.to-string.js
var es6_regexp_to_string = __webpack_require__(89);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.date.to-string.js
var es6_date_to_string = __webpack_require__(92);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.regexp.split.js
var es6_regexp_split = __webpack_require__(93);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.regexp.replace.js
var es6_regexp_replace = __webpack_require__(102);

// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/typeof.js
function _typeof(obj) {
  "@babel/helpers - typeof";

  if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
    _typeof = function _typeof(obj) {
      return typeof obj;
    };
  } else {
    _typeof = function _typeof(obj) {
      return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
    };
  }

  return _typeof(obj);
}
// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.number.max-safe-integer.js
var es6_number_max_safe_integer = __webpack_require__(103);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.number.min-safe-integer.js
var es6_number_min_safe_integer = __webpack_require__(104);

// CONCATENATED MODULE: ./packages/input/src/calcTextareaHeight.js



var HIDDEN_TEXTAREA_STYLE = "\n  min-height:0 !important;\n  max-height:none !important;\n  height:0 !important;\n  visibility:hidden !important;\n  overflow:hidden !important;\n  position:absolute !important;\n  z-index:-1000 !important;\n  top:0 !important;\n  right:0 !important\n";
var SIZING_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];
var computedStyleCache = {};
var hiddenTextarea;

function calculateNodeStyling(node) {
  var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');

  if (useCache && computedStyleCache[nodeRef]) {
    return computedStyleCache[nodeRef];
  }

  var style = window.getComputedStyle(node);
  var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');
  var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));
  var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));
  var sizingStyle = SIZING_STYLE.map(function (name) {
    return "".concat(name, ":").concat(style.getPropertyValue(name));
  }).join(';');
  var nodeInfo = {
    sizingStyle: sizingStyle,
    paddingSize: paddingSize,
    borderSize: borderSize,
    boxSizing: boxSizing
  };

  if (useCache && nodeRef) {
    computedStyleCache[nodeRef] = nodeInfo;
  }

  return nodeInfo;
}

function calcTextareaHeight(uiTextNode) {
  var minRows = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
  var maxRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
  var useCache = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;

  if (!hiddenTextarea) {
    hiddenTextarea = document.createElement('textarea');
    document.body.appendChild(hiddenTextarea);
  } // Fix wrap="off" issue
  // https://github.com/ant-design/ant-design/issues/6577


  if (uiTextNode.getAttribute('wrap')) {
    hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));
  } else {
    hiddenTextarea.removeAttribute('wrap');
  } // Copy all CSS properties that have an impact on the height of the content in
  // the textbox


  var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),
      paddingSize = _calculateNodeStyling.paddingSize,
      borderSize = _calculateNodeStyling.borderSize,
      boxSizing = _calculateNodeStyling.boxSizing,
      sizingStyle = _calculateNodeStyling.sizingStyle; // Need to have the overflow attribute to hide the scrollbar otherwise
  // text-lines will not calculated properly as the shadow will technically be
  // narrower for content


  hiddenTextarea.setAttribute('style', "".concat(sizingStyle, ";").concat(HIDDEN_TEXTAREA_STYLE));
  hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';
  var minHeight = Number.MIN_SAFE_INTEGER;
  var maxHeight = Number.MAX_SAFE_INTEGER;
  var height = hiddenTextarea.scrollHeight;
  var overflowY;

  if (boxSizing === 'border-box') {
    // border-box: add border, since height = content + padding + border
    height = height + borderSize;
  } else if (boxSizing === 'content-box') {
    // remove padding, since height = content
    height = height - paddingSize;
  }

  if (minRows !== null || maxRows !== null) {
    // measure height of a textarea with a single row
    hiddenTextarea.value = ' ';
    var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;

    if (minRows !== null) {
      minHeight = singleRowHeight * minRows;

      if (boxSizing === 'border-box') {
        minHeight = minHeight + paddingSize + borderSize;
      }

      height = Math.max(minHeight, height);
    }

    if (maxRows !== null) {
      maxHeight = singleRowHeight * maxRows;

      if (boxSizing === 'border-box') {
        maxHeight = maxHeight + paddingSize + borderSize;
      }

      overflowY = height > maxHeight ? '' : 'hidden';
      height = Math.min(maxHeight, height);
    }
  } // Remove scroll bar flash when autosize without maxRows


  if (!maxRows) {
    overflowY = 'hidden';
  }

  return {
    height: "".concat(height, "px"),
    minHeight: "".concat(minHeight, "px"),
    maxHeight: "".concat(maxHeight, "px"),
    overflowY: overflowY
  };
}
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/input/src/input.vue?vue&type=script&lang=js&








//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//





/* harmony default export */ var inputvue_type_script_lang_js_ = ({
  name: 'Input',
  props: {
    type: {
      type: String,
      default: 'input',
      validator: function validator(value) {
        return ['input', 'number', 'search', 'password', 'textarea'].includes(value);
      }
    },
    name: String,
    value: [String, Number],
    disabled: Boolean,
    readonly: Boolean,
    placeholder: String,
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    min: Number,
    max: Number,
    precision: Number,
    maxLength: Number,
    autosize: [Boolean, Object],
    rows: Number,
    cols: Number,
    showLimitLabel: Boolean,
    // 显示限制字数，input和textarea时有效
    showPasswordIcon: {
      type: [Boolean, Object],
      default: true
    },
    // 显示password的icon, 对象时{close: 关闭时的icon, open: 打开时的icon}
    suffix: String,
    // 后定位的图标，textarea时无效
    prefix: String,
    // 前定位的图标，textarea时无效
    suffixButton: [Boolean, String],
    // true是显示搜索button  string时为button内容  false不显示，textarea时无效
    clearable: Boolean,
    // 清除，textarea时无效
    step: {
      type: [Boolean, Number],
      default: 1
    },
    // Number类型时有效，false不显示，true显示，number计数器步长
    stepType: String,
    // right
    inputStyle: {
      type: Object,
      default: function _default() {
        return {};
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-input',
      classPrefixTextArea: config.classPrefix + '-textarea',
      modelValue: undefined,
      expandStyle: {},
      // 额外的样式
      hovering: false,
      showPasswordVisible: false,
      composition: false,
      // 中文输入
      form: findComponent(this, 'Form'),
      formItem: findComponent(this, 'FormItem')
    };
  },
  computed: {
    computedSize: function computedSize() {
      if (this.size !== 'default') return this.size;
      if (this.form && this.form.size !== 'default') return this.form.size;
      return this.size;
    },
    isDisabled: function isDisabled() {
      return this.disabled;
    },
    showClearable: function showClearable() {
      return this.clearable && !!this.modelValue && !this.isDisabled && this.hovering && this.type !== 'textarea' && !this.readonly;
    },
    showSuffix: function showSuffix() {
      return this.type === 'search' && !this.suffixButton || this.type === 'number' && this.step || this.type === 'password' && this.showPasswordIcon || this.showClearable || (this.suffix || this.$slots.suffix) && ['input', 'password', 'search', 'number'].includes(this.type);
    },
    // number类型 step禁用
    numberStepDisabled: function numberStepDisabled() {
      var result = {
        min: false,
        max: false
      };

      if (this.type === 'number') {
        if (typeof this.min === 'number' && this.min >= parseFloat(this.modelValue)) result.min = true;
        if (typeof this.max === 'number' && this.max <= parseFloat(this.modelValue)) result.max = true;
      }

      return result;
    },
    suffixIconClass: function suffixIconClass() {
      var prefix = config.classPrefix;
      var result = [];
      if (this.showClearable) result.push("".concat(prefix, "-icon-error-fill"));else if (this.suffix) result.push("".concat(prefix, "-icon-").concat(this.suffix));else if (this.type === 'number' && !this.stepType && this.step) {
        result.push("".concat(prefix, "-icon-plus"), "".concat(this.classPrefix, "__suffix-step"));
        if (this.numberStepDisabled.max) result.push("".concat(this.classPrefix, "__step-disabled"));
      } else if (this.type === 'search') result.push("".concat(prefix, "-icon-search"));else if (this.type === 'password' && this.showPasswordIcon) {
        if (this.showPasswordIcon === true) this.showPasswordVisible ? result.push("".concat(prefix, "-icon-eye-close")) : result.push("".concat(prefix, "-icon-eye-open"));else if (_typeof(this.showPasswordIcon) === 'object') this.showPasswordVisible ? result.push(this.showPasswordIcon.close) : result.push(this.showPasswordIcon.open);
      }
      if (result.length) result.unshift("".concat(this.classPrefix, "__suffix-icon"), "".concat(prefix, "-icon"));
      return result;
    },
    showPrefix: function showPrefix() {
      if (this.type === 'textarea') return false;
      return this.prefix || this.$slots.prefix || this.type === 'number' && this.step && !this.stepType;
    }
  },
  components: {
    Button: packages_button,
    Icon: packages_icon
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.checkedModelValue(_this.value);

      _this.setInputValue();

      _this.resizeTextarea();
    });
  },
  watch: {
    value: function value(newVal) {
      this.checkedModelValue(newVal);
      this.setInputValue(newVal);
    }
  },
  methods: {
    getInputEl: function getInputEl() {
      return this.$refs.input || this.$refs.textarea;
    },
    checkedModelValue: function checkedModelValue(newValue) {
      var val = newValue !== undefined ? newValue + '' : '';
      var result = val;

      if (this.type === 'number') {
        var mark = null;

        if (result.substring(0, 1) === '-') {
          mark = '-';
        }

        result = val.replace(/\.{2,}/g, '.').replace(/(^[^\d])|[^\d|^.]/g, '');
        mark && (result = mark + result);
        var index = result.indexOf('.');

        if (index > -1) {
          var arr = result.split('.');

          if (arr.length > 2) {
            var lastIndex = result.lastIndexOf('.');
            result = result.substring(0, lastIndex);
          }

          var a = result.substring(index + 1);
          a = a.replace(/\./g, '');

          if (a.length > this.precision) {
            result = result.substring(0, index + 1 + this.precision);
          }
        } // else if (result) {
        //     result = result === mark ? result : parseFloat(result);
        // }


        if (result > this.max) {
          result = this.max.toString();
        }

        if (result < this.min) {
          result = this.min.toString();
        }
      } else if (['input', 'textarea'].includes(this.type)) {
        result = result.length > this.maxLength ? result.substring(0, this.maxLength) : result;
      }

      this.modelValue = result !== undefined ? result : undefined;
    },
    setInputValue: function setInputValue() {
      this.getInputEl() && this.modelValue !== undefined ? this.getInputEl().value = this.modelValue : this.getInputEl().value = '';
      this.$nextTick(this.resizeTextarea());
    },
    handlerInput: function handlerInput(e) {
      var _this2 = this;

      if (this.composition) return;
      if (e && e.target && e.target.value === this.modelValue) return;
      this.checkedModelValue(e && e.target ? e.target.value : this.modelValue);
      this.$emit('input', this.modelValue);
      this.$emit('change', this.modelValue);
      this.formItem && this.formItem.triggerValidate('change');
      this.$nextTick(function () {
        _this2.setInputValue();
      });
    },
    handlerChange: function handlerChange(e) {
      if (e.target.value === this.modelValue) return;
      this.$emit('change', this.modelValue);
    },
    handleCompositionStart: function handleCompositionStart() {
      this.composition = true;
    },
    handleCompositionEnd: function handleCompositionEnd(e) {
      if (this.composition) {
        this.composition = false;
        this.handlerInput(e);
      }
    },
    handlerBlur: function handlerBlur() {
      if (this.type === 'number') {
        this.modelValue = !isNaN(parseFloat(this.modelValue)) ? parseFloat(this.modelValue).toString() : '';
        this.setInputValue();
      }

      this.$emit('blur', this.modelValue);
      this.formItem && this.formItem.triggerValidate('blur');
    },
    handlerFocus: function handlerFocus() {
      this.$emit('focus', this.modelValue);
    },
    handlerEnter: function handlerEnter() {
      this.$emit('enter', this.modelValue);
      this.handlerSearch();
    },
    handlerSearch: function handlerSearch() {
      this.$emit('search', this.modelValue);
    },
    handlerClear: function handlerClear() {
      if (this.isDisabled) return;
      this.modelValue = '';
      this.handlerInput();
      this.$emit('clear');
    },
    handlerNumberMinus: function handlerNumberMinus() {
      if (this.isDisabled) return;
      if (this.modelValue <= this.min) return;
      this.modelValue = (parseFloat(this.modelValue || 0) - parseFloat(this.step)).toString();
      this.handlerInput();
    },
    handlerNumberPlus: function handlerNumberPlus() {
      if (this.isDisabled) return;
      if (this.modelValue >= this.max) return;
      this.modelValue = (parseFloat(this.modelValue || 0) + parseFloat(this.step)).toString();
      this.handlerInput();
    },
    passwordVisibleChange: function passwordVisibleChange() {
      if (this.disabled) return;
      this.showPasswordVisible = !this.showPasswordVisible;
    },
    resizeTextarea: function resizeTextarea() {
      if (this.type !== 'textarea' || !this.autosize) return;
      var _this$autosize = this.autosize,
          minRows = _this$autosize.minRows,
          maxRows = _this$autosize.maxRows;
      this.expandStyle = calcTextareaHeight(this.getInputEl(), minRows, maxRows);
    },
    handleSuffixClick: function handleSuffixClick() {
      if (this.showClearable) this.handlerClear();else if (this.type === 'number' && !this.stepType && this.step) this.handlerNumberPlus();else if (this.type === 'search') this.handlerSearch();else if (this.type === 'password' && this.showPasswordIcon) this.passwordVisibleChange();
    },
    focus: function focus() {
      var _this3 = this;

      setTimeout(function () {
        _this3.$refs.textarea && _this3.$refs.textarea.focus();
        _this3.$refs.input && _this3.$refs.input.focus();
      });
    },
    blur: function blur() {
      var _this4 = this;

      setTimeout(function () {
        _this4.$refs.textarea && _this4.$refs.textarea.blur();
        _this4.$refs.input && _this4.$refs.input.blur();
      });
    }
  }
});
// CONCATENATED MODULE: ./packages/input/src/input.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_inputvue_type_script_lang_js_ = (inputvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/input/src/input.vue





/* normalize component */

var input_component = normalizeComponent(
  src_inputvue_type_script_lang_js_,
  inputvue_type_template_id_272f83e4_render,
  inputvue_type_template_id_272f83e4_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var input = (input_component.exports);
// CONCATENATED MODULE: ./packages/input/index.js

/* harmony default export */ var packages_input = (input);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=template&id=1c449d8b&
var selectvue_type_template_id_1c449d8b_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"click-outside",rawName:"v-click-outside.capture",value:(_vm.handleOutsideClick),expression:"handleOutsideClick",modifiers:{"capture":true}}],class:[
        ("" + _vm.classPrefix),
        _vm.computedSize && (_vm.classPrefix + "--" + _vm.computedSize),
        _vm.disabled && "is-disabled"
     ]},[_c('div',{ref:"reference",class:[(_vm.classPrefix + "__reference")],attrs:{"tabindex":_vm.referenceTabIndex},on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"esc",27,$event.key,["Esc","Escape"])){ return null; }$event.preventDefault();return _vm.handleKeydown($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }$event.preventDefault();return _vm.handleKeydown($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"down",40,$event.key,["Down","ArrowDown"])){ return null; }$event.preventDefault();return _vm.handleKeydown($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"up",38,$event.key,["Up","ArrowUp"])){ return null; }$event.preventDefault();return _vm.handleKeydown($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"tab",9,$event.key,"Tab")){ return null; }$event.preventDefault();return _vm.handleKeydown($event)}]}},[_c('select-reference')],1),_vm._v(" "),_c('transition',{attrs:{"name":_vm.transition}},[_c('Drop',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible && !_vm.disabled),expression:"visible && !disabled"}],ref:"dropDown",attrs:{"reference":this.$refs.reference,"placement":_vm.placement,"render-html":_vm.renderHtml,"dropdownMatchSelectWidth":_vm.dropdownMatchSelectWidth},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:"visible"}},[_c('div',{ref:"scrollOuter",class:[
                     (_vm.classPrefix + "__drop-inner"),
                     _vm.size && (_vm.classPrefix + "__drop-inner--" + _vm.size) ],style:(_vm.dropInnerStyle)},[_c('scroll',{ref:"scroll",attrs:{"size":"small","scrollOption":{scrollPanel:{scrollingX:false}}}},[_c('div',{ref:"scrollInner"},[(_vm.loading)?_c('div',{class:[(_vm.classPrefix + "__loading")]},[_c('Icon',{staticClass:"animation-rotate",attrs:{"type":"loading"}}),_vm._v("\n                            "+_vm._s(_vm.t('m.select.loading'))+"\n                        ")],1):(_vm.isEmpty)?_c('div',{class:[(_vm.classPrefix + "__empty")]},[_vm._v(_vm._s(_vm.localEmptyText)+"\n                        ")]):_vm._e(),_vm._v(" "),(_vm.renderType === 'option')?[(_vm.allowCreate && _vm.allowCreateOption)?_c('Option',{attrs:{"allowCreate":"","label":_vm.allowCreateOption.label,"value":_vm.allowCreateOption.value}}):_vm._e(),_vm._v(" "),_c('render-option',{attrs:{"option":_vm.currentOption}})]:_vm._e(),_vm._v(" "),(_vm.renderType === 'slot')?[(_vm.allowCreate && _vm.allowCreateOption)?_c('Option',{attrs:{"allowCreate":"","label":_vm.allowCreateOption.label,"value":_vm.allowCreateOption.value}}):_vm._e(),_vm._v(" "),_vm._t("default"),_vm._v(" "),_vm._l((_vm.currentAllowCreateOption),function(item){return [_c('Option',{key:item.value,attrs:{"label":item.label,"value":item.value}})]})]:_vm._e()],2)])],1)])],1)],1)}
var selectvue_type_template_id_1c449d8b_staticRenderFns = []


// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=template&id=1c449d8b&

// EXTERNAL MODULE: ./node_modules/_v-click-outside-x@4.1.0@v-click-outside-x/package.json
var _v_click_outside_x_4_1_0_v_click_outside_x_package = __webpack_require__(105);

// CONCATENATED MODULE: ./node_modules/_v-click-outside-x@4.1.0@v-click-outside-x/dist/v-click-outside-x.esm.js
function v_click_outside_x_esm_typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { v_click_outside_x_esm_typeof = function _typeof(obj) { return typeof obj; }; } else { v_click_outside_x_esm_typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return v_click_outside_x_esm_typeof(obj); }

function v_click_outside_x_esm_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function v_click_outside_x_esm_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { v_click_outside_x_esm_ownKeys(Object(source), true).forEach(function (key) { v_click_outside_x_esm_defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { v_click_outside_x_esm_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

function v_click_outside_x_esm_defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }


/**
 * @typedef {import("../types/index.d.ts")} VClickOutsidePlugin
 */

var CLICK = 'click';
var captureInstances = Object.create(null);
var nonCaptureInstances = Object.create(null);
var captureEventHandlers = Object.create(null);
var nonCaptureEventHandlers = Object.create(null);
var instancesList = [captureInstances, nonCaptureInstances];
/**
 * The common event handler for bot capture and non-capture events.
 *
 * @param {!object} context - The event context.
 * @param {!object} instances - The capture or non-capture registered instances.
 * @param {Event} event - The event object.
 * @param {string} arg - The event type.
 * @returns {undefined} Default.
 */

var commonHandler = function onCommonEvent(context, instances, event, arg) {
  var target = event.target;

  var itemIteratee = function itemIteratee(item) {
    var el = item.el;

    if (el !== target && !el.contains(target)) {
      var binding = item.binding;

      if (binding.modifiers.stop) {
        event.stopPropagation();
      }

      if (binding.modifiers.prevent) {
        event.preventDefault();
      }

      binding.value.call(context, event);
    }
  };

  instances[arg].forEach(itemIteratee);
};
/**
 * Get the correct event handler: Capture or non-capture.
 *
 * @param {boolean} useCapture - Indicate which handler to use; 'true' to use
 *  capture handler or 'false' for non-capture.
 * @param {string} arg - The event type.
 * @returns {Function} - The event handler.
 */


var getEventHandler = function getEventHandler(useCapture, arg) {
  if (useCapture) {
    if (captureEventHandlers[arg]) {
      return captureEventHandlers[arg];
    }
    /**
     * Event handler for capture events.
     *
     * @param {Event} event - The event object.
     */


    captureEventHandlers[arg] = function onCaptureEvent(event) {
      commonHandler(this, captureInstances, event, arg);
    };

    return captureEventHandlers[arg];
  }

  if (nonCaptureEventHandlers[arg]) {
    return nonCaptureEventHandlers[arg];
  }
  /**
   * Event handler for non-capture events.
   *
   * @param {Event} event - The event object.
   */


  nonCaptureEventHandlers[arg] = function onNonCaptureEvent(event) {
    commonHandler(this, nonCaptureInstances, event, arg);
  };

  return nonCaptureEventHandlers[arg];
};
/**
 * The directive definition.
 * {@link https://vuejs.org/v2/guide/custom-directive.html|Custom directive}.
 *
 * @type {VClickOutsidePlugin.directive}
 * @property {!object} $captureInstances - Registered capture instances.
 * @property {!object} $nonCaptureInstances - Registered non-capture instances.
 * @property {Function} $_onCaptureEvent - Event handler for capture events.
 * @property {Function} $_onNonCaptureEvent - Event handler for non-capture events.
 * @property {Function} bind - Called only once, when the directive is first
 *  bound to the element.
 * @property {Function} unbind - Called only once, when the directive is unbound
 *  from the element.
 * @property {string} version - The version number of this release.
 */


var v_click_outside_x_esm_directive = Object.defineProperties({}, {
  $captureInstances: {
    value: captureInstances
  },
  $nonCaptureInstances: {
    value: nonCaptureInstances
  },
  $captureEventHandlers: {
    value: captureEventHandlers
  },
  $nonCaptureEventHandlers: {
    value: nonCaptureEventHandlers
  },
  bind: {
    value: function bind(el, binding) {
      if (typeof binding.value !== 'function') {
        throw new TypeError('Binding value must be a function.');
      }

      var arg = binding.arg || CLICK;

      var normalisedBinding = v_click_outside_x_esm_objectSpread({}, binding, {}, {
        arg: arg,
        modifiers: v_click_outside_x_esm_objectSpread({}, {
          capture: false,
          prevent: false,
          stop: false
        }, {}, binding.modifiers)
      });

      var useCapture = normalisedBinding.modifiers.capture;
      var instances = useCapture ? captureInstances : nonCaptureInstances;

      if (!Array.isArray(instances[arg])) {
        instances[arg] = [];
      }

      if (instances[arg].push({
        el: el,
        binding: normalisedBinding
      }) === 1) {
        /* istanbul ignore next */
        if ((typeof document === "undefined" ? "undefined" : v_click_outside_x_esm_typeof(document)) === 'object' && document) {
          document.addEventListener(arg, getEventHandler(useCapture, arg), useCapture);
        }
      }
    }
  },
  unbind: {
    value: function unbind(el) {
      var compareElements = function compareElements(item) {
        return item.el !== el;
      };

      var instancesIteratee = function instancesIteratee(instances) {
        var instanceKeys = Object.keys(instances);

        if (instanceKeys.length) {
          var useCapture = instances === captureInstances;

          var keysIteratee = function keysIteratee(eventName) {
            var newInstance = instances[eventName].filter(compareElements);

            if (newInstance.length) {
              instances[eventName] = newInstance;
            } else {
              /* istanbul ignore next */
              if ((typeof document === "undefined" ? "undefined" : v_click_outside_x_esm_typeof(document)) === 'object' && document) {
                document.removeEventListener(eventName, getEventHandler(useCapture, eventName), useCapture);
              }

              delete instances[eventName];
            }
          };

          instanceKeys.forEach(keysIteratee);
        }
      };

      instancesList.forEach(instancesIteratee);
    }
  },

  /* Note: This needs to be manually updated to match package.json. */
  version: {
    enumerable: true,
    value: _v_click_outside_x_4_1_0_v_click_outside_x_package["version"]
  }
});
/**
 * A Vue.js plugin should expose an install method. The method will be called
 * with the Vue constructor as the first argument, along with possible options.
 * {@link https://vuejs.org/v2/guide/plugins.html#Writing-a-Plugin|Writing a plugin}.
 *
 * @type {VClickOutsidePlugin.install}
 * @param {import("vue")} Vue - The Vue constructor.
 */

function v_click_outside_x_esm_install(Vue) {
  Vue.directive('click-outside', v_click_outside_x_esm_directive);
}

//# sourceMappingURL=v-click-outside-x.esm.js.map
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/select-reference.vue?vue&type=template&id=e7c93576&
var select_referencevue_type_template_id_e7c93576_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selectRoot)?_c('div',{class:_vm.referenceClass,on:{"click":_vm.handleClick,"mouseenter":function($event){_vm.isHover = true},"mouseleave":function($event){_vm.isHover = false}}},[(!_vm.selectRoot.multiple)?_c('m-input',{class:[(_vm.classPrefix + "__input")],attrs:{"type":"input","name":_vm.selectRoot.name,"size":_vm.selectRoot.computedSize,"disabled":_vm.selectRoot.disabled,"placeholder":_vm.computedPlaceholder,"readonly":!_vm.selectRoot.filterable},on:{"change":_vm.handleChange},model:{value:(_vm.currentValue),callback:function ($$v) {_vm.currentValue=$$v},expression:"currentValue"}},[_c('template',{slot:"suffix"},[_c('Icon',{directives:[{name:"show",rawName:"v-show",value:(!_vm.clearableShow),expression:"!clearableShow"}],class:[(_vm.classPrefix + "__suffix-icon"),_vm.selectRoot.visible && (_vm.classPrefix + "__suffix-icon-rotate")],attrs:{"type":"down"}}),_vm._v(" "),_c('Icon',{directives:[{name:"show",rawName:"v-show",value:(_vm.clearableShow),expression:"clearableShow"}],class:[(_vm.classPrefix + "__suffix-clear-icon")],attrs:{"type":"error-fill"},on:{"click":function($event){$event.stopPropagation();return _vm.handleClear($event)}}})],1)],2):_vm._e(),_vm._v(" "),(_vm.selectRoot.multiple)?[_c('div',{},[_vm._l((_vm.selectRoot.localCurrentSelectedItems),function(item){return _c('tag',{key:item.value,class:[(_vm.classPrefix + "__multiple-tag")],attrs:{"size":_vm.selectRoot.computedSize,"closable":""},on:{"close":function($event){return _vm.tagClose(item.value)}}},[_vm._v(_vm._s(item.label)+"\n            ")])}),_vm._v(" "),(_vm.selectRoot.showMaxTagText)?_c('tag',{class:[(_vm.classPrefix + "__multiple-tag")],attrs:{"size":_vm.selectRoot.computedSize}},[_vm._v(_vm._s(_vm.selectRoot.localMaxTagText)+"\n            ")]):_vm._e(),_vm._v(" "),_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.currentValue),expression:"currentValue"}],ref:"multipleInput",class:[
                       (_vm.classPrefix + "__multiple-input")
                   ],style:(_vm.inputStyle),attrs:{"type":"text","readonly":!_vm.selectRoot.filterable,"placeholder":_vm.computedPlaceholder,"spellcheck":"false","disabled":_vm.selectRoot.disabled},domProps:{"value":(_vm.currentValue)},on:{"focus":function($event){_vm.isFocused = true},"blur":function($event){_vm.isFocused = false},"input":[function($event){if($event.target.composing){ return; }_vm.currentValue=$event.target.value},_vm.handleMultipleInput]}})],2),_vm._v(" "),_c('span',{class:[(_vm.classPrefix + "__suffix")]},[_c('Icon',{directives:[{name:"show",rawName:"v-show",value:(!_vm.clearableShow),expression:"!clearableShow"}],class:[(_vm.classPrefix + "__suffix-icon"), _vm.selectRoot.visible && (_vm.classPrefix + "__suffix-icon-rotate")],attrs:{"type":"down"}}),_vm._v(" "),_c('Icon',{directives:[{name:"show",rawName:"v-show",value:(_vm.clearableShow),expression:"clearableShow"}],class:[(_vm.classPrefix + "__suffix-clear-icon")],attrs:{"type":"error-fill"},on:{"click":function($event){$event.stopPropagation();return _vm.handleClear($event)}}})],1)]:_vm._e()],2):_vm._e()}
var select_referencevue_type_template_id_e7c93576_staticRenderFns = []


// CONCATENATED MODULE: ./packages/select/src/select-reference.vue?vue&type=template&id=e7c93576&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tag/src/tag.vue?vue&type=template&id=5fb62bae&
var tagvue_type_template_id_5fb62bae_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
         ("" + _vm.classPrefix),
         _vm.size && (_vm.classPrefix + "--" + _vm.size),
         _vm.noCustomColor && (_vm.classPrefix + "--color-" + _vm.color),
         _vm.ghost && (_vm.classPrefix + "--ghost"),
         _vm.isChecked && 'is-checked'
    ],style:(_vm.customStyle),on:{"click":function($event){$event.stopPropagation();return _vm.handlerClick($event)}}},[_c('span',{class:[(_vm.classPrefix + "__text")]},[_vm._t("default")],2),_vm._v(" "),(_vm.closable)?_c('Icon',{class:[
              (_vm.classPrefix + "__icon")
          ],style:(_vm.iconStyle),attrs:{"type":_vm.iconType},nativeOn:{"click":function($event){$event.stopPropagation();return _vm.handlerClose($event)}}}):_vm._e()],1)}
var tagvue_type_template_id_5fb62bae_staticRenderFns = []


// CONCATENATED MODULE: ./packages/tag/src/tag.vue?vue&type=template&id=5fb62bae&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tag/src/tag.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var tagvue_type_script_lang_js_ = ({
  name: 'Tag',
  props: {
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    closable: Boolean,
    ghost: Boolean,
    checkable: Boolean,
    checked: {
      type: Boolean,
      default: true
    },
    color: {
      type: String,
      default: 'default'
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-tag',
      isHover: false,
      isChecked: this.checked
    };
  },
  computed: {
    iconType: function iconType() {
      return this.isHover ? 'error-fill' : 'close';
    },
    noCustomColor: function noCustomColor() {
      return ['primary', 'success', 'danger', 'warning', 'info', 'default', 'primary-o', 'success-o', 'danger-o', 'warning-o', 'info-o', 'default-o'].includes(this.color);
    },
    customStyle: function customStyle() {
      if (this.noCustomColor) return {};

      if (this.ghost) {
        return {
          'background-color': 'transparent',
          color: this.color,
          'border-color': this.color
        };
      }

      return {
        'background-color': this.color,
        color: '#ffffff',
        'border-color': this.color
      };
    },
    iconStyle: function iconStyle() {
      if (this.noCustomColor) return {};

      if (this.ghost) {
        return {
          color: this.color
        };
      }

      return {
        color: '#ffffff'
      };
    }
  },
  components: {
    Icon: packages_icon
  },
  methods: {
    handlerClose: function handlerClose() {
      this.$emit('close');
    },
    handlerClick: function handlerClick() {
      if (this.checkable) {
        this.isChecked = !this.isChecked;
      }

      this.$emit('click');
    }
  },
  watch: {
    checked: function checked(newVal) {
      this.isChecked = newVal;
    }
  }
});
// CONCATENATED MODULE: ./packages/tag/src/tag.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_tagvue_type_script_lang_js_ = (tagvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/tag/src/tag.vue





/* normalize component */

var tag_component = normalizeComponent(
  src_tagvue_type_script_lang_js_,
  tagvue_type_template_id_5fb62bae_render,
  tagvue_type_template_id_5fb62bae_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var tag = (tag_component.exports);
// CONCATENATED MODULE: ./packages/tag/index.js

/* harmony default export */ var packages_tag = (tag);
// CONCATENATED MODULE: ./src/locale/lang.js
/*eslint-disable */

var lang_isServer = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.prototype.$isServer;
/* harmony default export */ var lang = (function (lang) {
  if (!lang_isServer) {
    if (typeof window.MONKEY !== 'undefined') {
      if (!('langs' in MONKEY)) {
        MONKEY.langs = {};
      }

      MONKEY.langs[lang.m.locale] = lang;
    }
  }
});
/*eslint-enable */
// CONCATENATED MODULE: ./src/locale/lang/zh-CN.js

var zh_CN_lang = {
  m: {
    locale: 'zh-CN',
    select: {
      loading: '加载中',
      emptyData: '暂无数据',
      placeholder: '请选择'
    },
    datePicker: {
      selectDate: '选择日期',
      selectTime: '选择时间',
      ok: '确定',
      clean: '清除',
      year: '年',
      month: '月',
      startTime: '开始时间',
      endTime: '结束时间',
      weeks: {
        sun: '日',
        mon: '一',
        tue: '二',
        wed: '三',
        thu: '四',
        fri: '五',
        sat: '六'
      },
      months: {
        m1: '1月',
        m2: '2月',
        m3: '3月',
        m4: '4月',
        m5: '5月',
        m6: '6月',
        m7: '7月',
        m8: '8月',
        m9: '9月',
        m10: '10月',
        m11: '11月',
        m12: '12月'
      }
    },
    drawer: {
      okText: '确定',
      cancelText: '取消'
    },
    modal: {
      okText: '确定',
      cancelText: '取消'
    },
    page: {
      total: '共',
      item: '条',
      goto: '跳至',
      page: '页'
    },
    popover: {
      okText: '确定',
      cancelText: '取消'
    },
    table: {
      emptyData: '暂无数据',
      all: '全部',
      reset: '重置',
      filter: '筛选'
    },
    tree: {
      emptyData: '暂无数据'
    },
    image: {
      errorText: '加载失败'
    },
    cascader: {
      loading: '加载中',
      emptyData: '暂无数据',
      placeholder: '请选择'
    }
  }
};
lang(zh_CN_lang);
/* harmony default export */ var zh_CN = (zh_CN_lang);
// EXTERNAL MODULE: ./node_modules/_deepmerge@4.2.2@deepmerge/dist/cjs.js
var cjs = __webpack_require__(106);
var cjs_default = /*#__PURE__*/__webpack_require__.n(cjs);

// CONCATENATED MODULE: ./src/locale/format.js


var RE_NARGS = /(%|)\{([0-9a-zA-Z_]+)\}/g;
/* harmony default export */ var format = (function () {
  function hasOwn(obj, key) {
    return Object.prototype.hasOwnProperty.call(obj, key);
  }
  /**
   * template
   *
   * @param {String} string
   * @param {Array} ...args
   * @return {String}
   */


  function template(string) {
    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
      args[_key - 1] = arguments[_key];
    }

    if (args.length === 1 && _typeof(args[0]) === 'object') {
      args = args[0];
    }

    if (!args || !args.hasOwnProperty) {
      args = {};
    }

    return string.replace(RE_NARGS, function (match, prefix, i, index) {
      var result;

      if (string[index - 1] === '{' && string[index + match.length] === '}') {
        return i;
      } else {
        result = hasOwn(args, i) ? args[i] : null;

        if (result === null || result === undefined) {
          return '';
        }

        return result;
      }
    });
  }

  return template;
});
// CONCATENATED MODULE: ./src/locale/index.js





var locale_format = format(external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a);
var locale_lang = zh_CN;
var merged = false;

var locale_i18nHandler = function i18nHandler() {
  var vuei18n = Object.getPrototypeOf(this || external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a).$t;

  if (typeof vuei18n === 'function' && !!external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.locale) {
    if (!merged) {
      merged = true;
      external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.locale(external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.config.lang, cjs_default()(locale_lang, external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.locale(external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.config.lang) || {}, {
        clone: true
      }));
    }

    return vuei18n.apply(this, arguments);
  }
};

var locale_t = function t(path, options) {
  var value = locale_i18nHandler.apply(this, arguments);
  if (value !== null && value !== undefined) return value;
  var array = path.split('.');
  var current = locale_lang;

  for (var i = 0, j = array.length; i < j; i++) {
    var property = array[i];
    value = current[property];
    if (i === j - 1) return locale_format(value, options);
    if (!value) return '';
    current = value;
  }

  return '';
};
var use = function use(l) {
  locale_lang = l || locale_lang;
};
var i18n = function i18n(fn) {
  locale_i18nHandler = fn || locale_i18nHandler;
};
/* harmony default export */ var locale = ({
  use: use,
  t: locale_t,
  i18n: i18n
});
// CONCATENATED MODULE: ./src/mixins/locale.js

/* harmony default export */ var mixins_locale = ({
  methods: {
    t: function t() {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }

      return locale_t.apply(this, args);
    }
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/select-reference.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//





/* harmony default export */ var select_referencevue_type_script_lang_js_ = ({
  name: 'SelectReference',
  mixins: [mixins_locale],
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-select-reference',
      currentValue: '',
      selectRoot: this.$parent,
      isHover: false,
      isFocused: false
    };
  },
  computed: {
    referenceClass: function referenceClass() {
      return ["".concat(this.classPrefix), this.selectRoot.multiple && "".concat(this.classPrefix, "--multiple"), this.selectRoot.disabled && "".concat(this.classPrefix, "--disabled"), this.selectRoot.multiple && (this.selectRoot.visible || this.isFocused) && "".concat(this.classPrefix, "--focus"), this.selectRoot.multiple && this.isHover && "".concat(this.classPrefix, "--hover")];
    },
    computedPlaceholder: function computedPlaceholder() {
      if (this.selectRoot.currentSelectedItems.length) return '';
      return this.selectRoot.placeholder || this.t('m.select.placeholder');
    },
    clearableShow: function clearableShow() {
      return !this.selectRoot.disabled && this.selectRoot.clearable && this.selectRoot.currentValue.length && this.isHover;
    },
    inputStyle: function inputStyle() {
      if (!this.selectRoot.currentSelectedItems.length) {
        return {
          width: '100%'
        };
      }

      if (this.selectRoot.multiple && this.selectRoot.filterable) {
        return {
          width: this.currentValue.length * 12 + 32 + 'px'
        };
      }

      return {
        width: '0px'
      };
    }
  },
  components: {
    'm-input': packages_input,
    Icon: packages_icon,
    Tag: packages_tag
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      return _this.setCurrentValue();
    });
  },
  methods: {
    handleClick: function handleClick() {
      if (this.selectRoot.disabled) return;
      this.selectRoot.setDropDownVisible();
      this.setMultipleInputFocusAndBlur();
    },
    setMultipleInputFocusAndBlur: function setMultipleInputFocusAndBlur() {
      if (!this.selectRoot.multiple || !this.selectRoot.filterable || this.selectRoot.disabled) return;
      this.$refs.multipleInput.focus();
    },
    handleChange: function handleChange(value) {
      if (!this.selectRoot.filterable || this.selectRoot.disabled) return;
      this.selectRoot.setDropDownVisible(true);
      if (!this.selectRoot.remote) this.selectRoot.handleFilterable(value);
      if (this.selectRoot.remote) this.selectRoot.emitRemoteChange(value);
      if (this.selectRoot.allowCreate) this.selectRoot.handleAllowCreate(value);
    },
    handleMultipleInput: function handleMultipleInput(e) {
      if (!this.selectRoot.multiple || !this.selectRoot.filterable || this.selectRoot.disabled) return;
      var value = e.target.value;
      this.currentValue = value;
      this.handleChange(value);
      this.selectRoot.updateDropdownPosition();
    },
    handleClear: function handleClear() {
      if (this.selectRoot.disabled) return;
      this.currentValue = '';
      this.selectRoot.handleClearable();
    },
    tagClose: function tagClose(value) {
      if (this.selectRoot.disabled) return;
      this.setMultipleInputFocusAndBlur();
      this.selectRoot.handleTagClose(value);
      this.selectRoot.updateDropdownPosition();
    },
    setCurrentValue: function setCurrentValue() {
      if (this.selectRoot.allowCreate && this.selectRoot.isFilter) return;

      if (!this.selectRoot.multiple) {
        this.currentValue = this.selectRoot.currentSelectedItems.length ? this.selectRoot.currentSelectedItems[0].label : '';
      } else {
        this.currentValue = ''; // 多选筛选 选择之后需要重新计算高度

        this.selectRoot.setScrollInnerHeight();
      }
    }
  },
  watch: {
    'selectRoot.currentValue': function selectRootCurrentValue(newVal, oldVal) {
      if (JSON.stringify(newVal) === JSON.stringify(oldVal)) return;
      this.setCurrentValue();
    },
    'selectRoot.visible': function selectRootVisible(val) {
      !val && this.setCurrentValue();
    }
  }
});
// CONCATENATED MODULE: ./packages/select/src/select-reference.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_select_referencevue_type_script_lang_js_ = (select_referencevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/select/src/select-reference.vue





/* normalize component */

var select_reference_component = normalizeComponent(
  src_select_referencevue_type_script_lang_js_,
  select_referencevue_type_template_id_e7c93576_render,
  select_referencevue_type_template_id_e7c93576_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var select_reference = (select_reference_component.exports);
// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es7.symbol.async-iterator.js
var es7_symbol_async_iterator = __webpack_require__(107);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.symbol.js
var es6_symbol = __webpack_require__(110);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.string.iterator.js
var es6_string_iterator = __webpack_require__(114);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.array.from.js
var es6_array_from = __webpack_require__(115);

// CONCATENATED MODULE: ./packages/select/src/mixins.js












function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = mixins_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }

function mixins_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return mixins_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return mixins_arrayLikeToArray(o, minLen); }

function mixins_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }

/* harmony default export */ var mixins = ({
  data: function data() {
    return {
      currentOption: [],
      currentOptionValue: [],
      // 分解得到option的value数组，不包含disabled的项 作用：键盘操作选中时使用，无搜索时为全部的option，搜索时为搜索到的value数组
      currentAllOptionValue: [],
      // 分解得到option的value数组，包含disabled的项
      currentValue: [],
      // 被选中的option的value数组，单选时只有一项，多选时有多项
      currentSelectedItems: [],
      currentAllowCreateOption: [],
      // 新建的条目，初始化时需要合并到currentOption中
      allowCreateOption: null,
      // allowCreate将要新建的条目，还没确认创建，确认创建之后会添加到currentOption数组
      visible: false,
      hoverItemValue: '',
      // 被hover的option的value值
      keySelectValue: '',
      // 预选的value,键盘操作时回车选中
      isFilter: false,
      // 是否搜索 不是远程搜索
      filterableValue: [],
      // 搜索到的value数组
      renderType: this.option ? 'option' : 'slot',
      // 渲染类型，option为数据渲染，slot为插槽渲染
      scrollInnerHeight: 0,
      isFocused: false
    };
  },
  methods: {
    initValue: function initValue() {
      if (this.multiple && Array.isArray(this.value)) {
        this.currentValue = JSON.parse(JSON.stringify(this.value)) || [];
      } else if (typeof this.value === 'string' || typeof this.value === 'number') {
        this.currentValue = this.value.toString() ? [this.value] : [];
      }

      this.setCurrentSelectedItems();
    },
    initOption: function initOption() {
      if (this.renderType === 'option') {
        this.currentOption = (this.option || []).concat(this.currentAllowCreateOption);
      } else if (this.renderType === 'slot') {
        this.currentOption = this.formatSlotOption().concat(this.currentAllowCreateOption);
      }

      this.reduceOptionValue();
      this.initValue();
      this.$nextTick(this.setScrollInnerHeight());
    },
    // allowCreate将要新建的条目
    handleAllowCreate: function handleAllowCreate(value) {
      this.keySelectValue = value;

      if (!value || this.currentAllOptionValue.includes(value)) {
        this.allowCreateOption = null;
        return;
      }

      this.allowCreateOption = {
        value: value,
        label: value
      };
    },
    // allowCreate确认新建
    handleConfirmAllowCreate: function handleConfirmAllowCreate() {
      var deepData = JSON.parse(JSON.stringify(this.allowCreateOption));
      this.allowCreateOption = null;
      this.isFilter = false;
      this.currentOption.push(deepData);
      this.currentOptionValue.push(deepData.value);
      this.currentAllOptionValue.push(deepData.value);
      this.handleOptionClick(deepData.value); // 数据改变需要在最后一步，因为需要在最后触发initOption 不能在之前触发

      this.currentAllowCreateOption.push(deepData);
    },
    reduceOptionValue: function reduceOptionValue() {
      if (this.isFilter) return;
      var deepData = JSON.parse(JSON.stringify(this.currentOption));
      var currentOptionValue = [];
      var currentAllOptionValue = [];
      deepData.forEach(function (item) {
        if (item.option && Array.isArray(item.option)) {
          item.option.forEach(function (oItem) {
            currentAllOptionValue.push(oItem.value);
            !oItem.disabled && currentOptionValue.push(oItem.value);
          });
        } else {
          currentAllOptionValue.push(item.value);
          !item.disabled && currentOptionValue.push(item.value);
        }
      });
      this.currentOptionValue = currentOptionValue;
      this.currentAllOptionValue = currentAllOptionValue;
    },
    // 格式化slotoption数据
    formatSlotOption: function formatSlotOption(vNodes) {
      var slotOption = vNodes || this.$slots.default;
      var currentOption = [];

      if (slotOption) {
        // eslint-disable-next-line no-unused-vars
        var _iterator = _createForOfIteratorHelper(slotOption),
            _step;

        try {
          for (_iterator.s(); !(_step = _iterator.n()).done;) {
            var option = _step.value;
            var Instance = option.componentInstance;
            var Options = option.componentOptions;
            var tag = Instance && Instance.componentName || Options && Options.tag;

            if (tag === 'OptionGroup') {
              var optionGorup = {};
              var label = Options.propsData.label;
              optionGorup.label = label;
              optionGorup.option = [];
              optionGorup.option = this.formatSlotOption(Options.children);
              currentOption.push(optionGorup);
            } else if (tag === 'Option') {
              (function () {
                var label = Options.propsData.label;

                if (!label) {
                  Options.children.forEach(function (item) {
                    if (item.text && !label) label = item.text.trim();
                  });
                }

                currentOption.push({
                  value: Options.propsData.value,
                  label: label || Options.propsData.value,
                  disabled: Options.propsData.disabled || false
                });
              })();
            }
          }
        } catch (err) {
          _iterator.e(err);
        } finally {
          _iterator.f();
        }
      }

      return currentOption;
    },
    // option 点击
    handleOptionClick: function handleOptionClick(value) {
      if (!value.toString()) return;
      var deepValue = JSON.parse(JSON.stringify(this.currentValue)); // 多选时是否要删除改项

      var isRemove = false;

      if (this.multiple) {
        if (deepValue.includes(value)) {
          var index = deepValue.findIndex(function (item) {
            return item === value;
          });
          deepValue.splice(index, 1);
          isRemove = true;
        } else {
          deepValue.push(value);
        }
      } else {
        deepValue = [value];
      }

      this.keySelectValue = value;
      this.isFilter = false;
      this.allowCreateOption = null;

      if (this.multiple && this.multipleLimit > 0 && deepValue.length > this.multipleLimit) {
        // 多选限制
        return;
      }

      if (JSON.stringify(deepValue) !== JSON.stringify(this.currentValue)) {
        this.currentValue = deepValue;
        this.setCurrentSelectedItems(value, isRemove);
        this.updateDropdownPosition();
        this.emitInputAndChange();
      } else {
        if (this.multiple && this.filterable && !this.remote) {
          this.isFilter = false;
          this.reduceOptionValue();
        } else {
          this.setDropDownVisible(false);
        }
      }
    },
    handleOptionNavigate: function handleOptionNavigate() {
      var _this = this;

      var num = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
      if (!this.currentOptionValue.length) return;
      var nextValue = this.currentOptionValue[0];

      if (this.keySelectValue) {
        var index = this.currentOptionValue.findIndex(function (item) {
          return item === _this.keySelectValue;
        });
        index = index + num;
        if (index > this.currentOptionValue.length - 1) index = 0;
        if (index < 0) index = this.currentOptionValue.length - 1;
        nextValue = this.currentOptionValue[index];
      }

      this.keySelectValue = nextValue;
    },
    // 设置当前选中项数据
    setCurrentSelectedItems: function setCurrentSelectedItems(value, isRemove) {
      var _this2 = this;

      if (isRemove) {
        var index = this.currentSelectedItems.findIndex(function (item) {
          return item.value === value;
        });

        if (index > -1) {
          this.currentSelectedItems.splice(index, 1);
        }
      } else {
        var deepData = JSON.parse(JSON.stringify(this.currentSelectedItems));
        this.currentOption.forEach(function (item) {
          if (item.option && Array.isArray(item.option)) {
            item.option.forEach(function (oItem) {
              var index = _this2.currentValue.indexOf(oItem.value);

              if (index > -1) {
                deepData[index] = {
                  value: oItem.value,
                  label: oItem.label
                };
              }
            });
          } else {
            var _index = _this2.currentValue.indexOf(item.value);

            if (_index > -1) {
              deepData[_index] = {
                value: item.value,
                label: item.label
              };
            }
          }
        });
        this.currentSelectedItems = deepData;
      }
    },
    // option hover变化
    handleOptionHover: function handleOptionHover(value, hover) {
      this.hoverItemValue = hover ? value : '';
    },
    // 设置visible
    setDropDownVisible: function setDropDownVisible() {
      var visible = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;

      if (visible === null) {
        this.visible = !this.visible;
      } else {
        this.visible = visible;
      }

      if (this.visible) {
        this.isFilter = this.allowCreate && this.filterable ? this.isFilter : false;
        this.reduceOptionValue();
        this.$nextTick(this.setScrollInnerHeight());
      }
    },
    // 搜索filterable
    handleFilterable: function handleFilterable(value) {
      var filterableValue = [];
      var currentOptionValue = [];

      if (value) {
        this.isFilter = true;
        this.currentOption.forEach(function (item) {
          if (item.option && Array.isArray(item.option)) {
            item.option.forEach(function (oItem) {
              if (oItem.label.includes(value)) filterableValue.push(oItem.value);
              if (oItem.label.includes(value) && !oItem.disabled) currentOptionValue.push(oItem.value);
            });
          } else {
            if (item.label.includes(value)) filterableValue.push(item.value);
            if (item.label.includes(value) && !item.disabled) currentOptionValue.push(item.value);
          }
        });
        this.currentOptionValue = currentOptionValue;
      } else {
        this.isFilter = false;
        this.reduceOptionValue();
      }

      this.filterableValue = filterableValue;
    },
    // 更新dropdown的位置
    updateDropdownPosition: function updateDropdownPosition() {
      this.visible && this.$refs.dropDown && this.$refs.dropDown.updatePopper();
    },
    // clearable清空
    handleClearable: function handleClearable() {
      this.currentValue = [];
      this.keySelectValue = '';
      this.currentSelectedItems = [];
      this.hoverItemValue = '';
      this.filterableValue = [];
      this.isFilter = false;
      this.reduceOptionValue();
      this.updateDropdownPosition();
      this.$emit('clear');
      this.emitInputAndChange();
      if (this.remote && this.filterable) this.emitRemoteChange();
    },
    emitRemoteChange: function emitRemoteChange(value) {
      this.$emit('remote-change', value || '');
    },
    emitInputAndChange: function emitInputAndChange() {
      if (this.multiple) {
        if (this.filterable) {
          this.isFilter = false;
          this.reduceOptionValue();
        }

        this.$emit('input', this.currentValue);
        this.$emit('change', this.valueLable ? this.currentSelectedItems : this.currentValue);
      } else {
        this.$emit('input', this.currentValue[0]);
        this.$emit('change', this.valueLable ? this.currentSelectedItems[0] : this.currentValue[0]);
        this.setDropDownVisible(false);
      }
    },
    // 多选tag关闭触发
    handleTagClose: function handleTagClose(value) {
      var index = this.currentValue.findIndex(function (item) {
        return item === value;
      });

      if (index > -1) {
        this.currentValue.splice(index, 1);
        this.currentSelectedItems.splice(index, 1);
        this.emitInputAndChange();
      }
    },
    // 设置dropInner的高度
    setScrollInnerHeight: function setScrollInnerHeight() {
      var _this3 = this;

      setTimeout(function () {
        var scrollInner = _this3.$refs.scrollInner;
        var scrollOuter = _this3.$refs.scrollOuter;
        var maxHeight = parseFloat(_this3.maxHeight);
        var targetPaddingTop = 5;
        var targetPaddingBottom = 5;

        if (scrollOuter) {
          if (window.getComputedStyle) {
            targetPaddingTop = window.getComputedStyle(scrollOuter, null)['paddingTop'];
            targetPaddingBottom = window.getComputedStyle(scrollOuter, null)['paddingBottom'];
          } else if (scrollOuter.currentStyle) {
            targetPaddingTop = scrollOuter.currentStyle['paddingTop'];
            targetPaddingBottom = scrollOuter.currentStyle['paddingBottom'];
          }
        }

        if (scrollInner) {
          var scrollInnerHeight = scrollInner.offsetHeight;

          if (scrollInnerHeight > maxHeight) {
            scrollInnerHeight = maxHeight;
          }

          _this3.scrollInnerHeight = scrollInnerHeight + parseFloat(targetPaddingTop) + parseFloat(targetPaddingBottom) + 2;
        }
      });
    },
    // outside点击
    handleOutsideClick: function handleOutsideClick(event) {
      if (this.visible) {
        if (this.renderHtml !== false) {
          var $el = this.$refs.dropDown.$el;

          if ($el === event.target || $el.contains(event.target)) {
            return;
          }
        }
      }

      this.setDropDownVisible(false);
    },
    // 设置scroll的位置
    setScrollToPosition: function setScrollToPosition() {
      var dropDown = this.$refs.dropDown;
      var focusOption = dropDown && dropDown.$el.getElementsByClassName("".concat(this.optionPrefix, "__focus"))[0];

      if (focusOption) {
        var top = focusOption.offsetTop;
        var height = focusOption.offsetHeight;
        var parentOptionGroup = focusOption.parentNode.parentNode;
        var parentOptionGroupWrap = focusOption.parentNode;
        var parentOptionGroupClass = "".concat(this.optionPrefix, "-group");

        if (parentOptionGroup.getAttribute('class') === parentOptionGroupClass) {
          top = top + parentOptionGroupWrap.offsetTop + parentOptionGroup.offsetTop;
        }

        var bottomTop = parseInt(top + height);
        var maxHeight = parseInt(this.maxHeight);

        if (bottomTop > maxHeight) {
          var y = bottomTop - maxHeight;
          var position = {
            x: 0,
            y: y
          };
          this.$refs.scroll && this.$refs.scroll.scrollTo(position, 200);
        }

        if (bottomTop <= maxHeight) {
          var _position = {
            x: 0,
            y: 0
          };
          this.$refs.scroll && this.$refs.scroll.scrollTo(_position, 200);
        }
      }
    },
    handleKeydown: function handleKeydown(event) {
      var _this4 = this;

      var key = event.key || event.code;

      if (key === 'Backspace') {
        return; // so we don't call preventDefault
      }

      if (this.visible) {
        event.preventDefault();

        if (key === 'Tab') {
          event.stopPropagation();
        }

        if (key === 'Escape') this.setDropDownVisible(false);

        if (key === 'Enter') {
          if (this.allowCreate && this.allowCreateOption && this.allowCreateOption.value === this.keySelectValue) {
            this.handleConfirmAllowCreate();
          } else {
            this.handleOptionClick(this.keySelectValue);
          }
        }

        if (key === 'ArrowUp') {
          this.handleOptionNavigate(-1);
          setTimeout(function () {
            _this4.setScrollToPosition();
          });
        }

        if (key === 'ArrowDown') {
          this.handleOptionNavigate(1);
          setTimeout(function () {
            _this4.setScrollToPosition();
          });
        }
      } else {
        if (['ArrowUp', 'ArrowDown'].includes(key)) this.setDropDownVisible(true);
      }
    }
  },
  watch: {
    option: {
      handler: function handler() {
        this.initOption();
      },
      deep: true,
      immediate: true
    },
    value: function value() {
      this.initValue();
    }
  }
});
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/render-option.vue?vue&type=template&id=aa163288&
var render_optionvue_type_template_id_aa163288_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
    ("" + _vm.classPrefix)
]},[_vm._l((_vm.option),function(item,index){return [(item.option && Array.isArray(item.option))?_c('option-group',{key:index,attrs:{"label":item.label}},[_vm._l((item.option),function(oItem){return [_c('Option',{key:oItem.value,attrs:{"value":oItem.value,"label":oItem.label,"disabled":oItem.disabled}})]})],2):_c('Option',{key:item.value,attrs:{"value":item.value,"label":item.label,"disabled":item.disabled}})]})],2)}
var render_optionvue_type_template_id_aa163288_staticRenderFns = []


// CONCATENATED MODULE: ./packages/select/src/render-option.vue?vue&type=template&id=aa163288&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=template&id=63354fa1&
var optionvue_type_template_id_63354fa1_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.selectRoot)?_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.show),expression:"show"}],class:_vm.optionClass,on:{"click":function($event){$event.stopPropagation();return _vm.handleClick($event)},"mouseenter":_vm.handleMouseenter,"mouseleave":_vm.handleMouseleave,"mousedown":function($event){$event.preventDefault();}}},[_c('span',{class:[(_vm.classPrefix + "__text")]},[_vm._t("default",[_vm._v(_vm._s(_vm.label))])],2),_vm._v(" "),(_vm.multipleIconShow)?_c('Icon',{class:[(_vm.classPrefix + "__icon")],attrs:{"type":"check"}}):(_vm.allowCreate)?_c('Icon',{class:[(_vm.classPrefix + "__icon")],attrs:{"type":"check"}}):_vm._e()],1):_vm._e()}
var optionvue_type_template_id_63354fa1_staticRenderFns = []


// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=template&id=63354fa1&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/option.vue?vue&type=script&lang=js&




//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var optionvue_type_script_lang_js_ = ({
  name: 'Option',
  props: {
    value: {
      type: [String, Number],
      required: true
    },
    label: String,
    disabled: {
      type: Boolean,
      default: false
    },
    allowCreate: Boolean // 新建条目

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-option',
      componentName: 'Option',
      selectRoot: findComponent(this, 'Select'),
      optionGroupRoot: findComponent(this, 'OptionGroup')
    };
  },
  computed: {
    optionClass: function optionClass() {
      var result = ["".concat(this.classPrefix), this.localDisabled && 'is-disabled'];

      if (this.selectRoot) {
        result = [].concat(_toConsumableArray(result), [this.selectRoot.multiple && "".concat(this.classPrefix, "__multiple"), this.selectRoot.currentValue.includes(this.value) && 'is-selected', (this.selectRoot.hoverItemValue === this.value || this.selectRoot.keySelectValue === this.value) && 'is-hover', this.selectRoot.keySelectValue === this.value && "".concat(this.classPrefix, "__focus")]);
      }

      return result;
    },
    show: function show() {
      if (!this.selectRoot.isFilter) return true;
      if (this.allowCreate && this.selectRoot.allowCreate) return true;
      return this.selectRoot.filterableValue.includes(this.value);
    },
    multipleIconShow: function multipleIconShow() {
      if (!this.selectRoot || !this.selectRoot.multiple) return false;
      return this.selectRoot.multiple && this.selectRoot.currentValue.includes(this.value);
    },
    localDisabled: function localDisabled() {
      if (this.selectRoot.openMultipleLimitDisabled) {
        return !this.selectRoot.currentValue.includes(this.value);
      }

      return this.disabled;
    }
  },
  components: {
    Icon: packages_icon
  },
  mounted: function mounted() {
    this.$nextTick(this.optionGroupRoot && this.optionGroupRoot.setShow());
    this.$nextTick(this.selectRoot.initOption());
  },
  updated: function updated() {
    this.$nextTick(this.optionGroupRoot && this.optionGroupRoot.setShow());
  },
  destroyed: function destroyed() {
    // slot模式下远程搜索需要重新计算
    if (this.selectRoot.renderType === 'slot') {
      this.$nextTick(this.optionGroupRoot && this.optionGroupRoot.setShow());
      this.$nextTick(this.selectRoot.initOption());
    }
  },
  methods: {
    handleClick: function handleClick() {
      if (this.localDisabled) return false;

      if (this.allowCreate) {
        this.selectRoot && this.selectRoot.handleConfirmAllowCreate();
      } else {
        this.selectRoot && this.selectRoot.handleOptionClick(this.value);
      }
    },
    handleMouseenter: function handleMouseenter() {
      if (this.localDisabled) return false;
      this.selectRoot && this.selectRoot.handleOptionHover(this.value, true);
    },
    handleMouseleave: function handleMouseleave() {
      if (this.localDisabled) return false;
      this.selectRoot && this.selectRoot.handleOptionHover(this.value, false);
    }
  }
});
// CONCATENATED MODULE: ./packages/select/src/option.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_optionvue_type_script_lang_js_ = (optionvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/select/src/option.vue





/* normalize component */

var option_component = normalizeComponent(
  src_optionvue_type_script_lang_js_,
  optionvue_type_template_id_63354fa1_render,
  optionvue_type_template_id_63354fa1_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_option = (option_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/option-group.vue?vue&type=template&id=22336402&
var option_groupvue_type_template_id_22336402_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.show),expression:"show"}],class:_vm.groupClass},[_c('div',{class:[(_vm.classPrefix + "__title")]},[_vm._t("groupTitle",[_vm._v(_vm._s(_vm.label))])],2),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__wrap")]},[_vm._t("default")],2)])}
var option_groupvue_type_template_id_22336402_staticRenderFns = []


// CONCATENATED MODULE: ./packages/select/src/option-group.vue?vue&type=template&id=22336402&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/option-group.vue?vue&type=script&lang=js&










function option_groupvue_type_script_lang_js_createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = option_groupvue_type_script_lang_js_unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }

function option_groupvue_type_script_lang_js_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return option_groupvue_type_script_lang_js_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return option_groupvue_type_script_lang_js_arrayLikeToArray(o, minLen); }

function option_groupvue_type_script_lang_js_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }

//
//
//
//
//
//
//
//
//
//
//

/* harmony default export */ var option_groupvue_type_script_lang_js_ = ({
  name: 'OptionGroup',
  props: {
    label: {
      type: String,
      default: ''
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-option-group',
      componentName: 'OptionGroup',
      show: true
    };
  },
  computed: {
    groupClass: function groupClass() {
      return ["".concat(this.classPrefix)];
    }
  },
  mounted: function mounted() {
    this.$nextTick(this.setShow());
  },
  methods: {
    setShow: function setShow() {
      var result = true;

      if (this.$slots.default) {
        var childrenOptionShowArr = []; // eslint-disable-next-line no-unused-vars

        var _iterator = option_groupvue_type_script_lang_js_createForOfIteratorHelper(this.$slots.default),
            _step;

        try {
          for (_iterator.s(); !(_step = _iterator.n()).done;) {
            var option = _step.value;
            var Instance = option.componentInstance;
            var Options = option.componentOptions;
            var tag = Instance && Instance.componentName || Options && Options.tag;

            if (tag === 'Option') {
              childrenOptionShowArr.push(Instance.show || false);
            }
          }
        } catch (err) {
          _iterator.e(err);
        } finally {
          _iterator.f();
        }

        result = childrenOptionShowArr.includes(true);
      } else {
        result = false;
      }

      this.show = result;
    }
  }
});
// CONCATENATED MODULE: ./packages/select/src/option-group.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_option_groupvue_type_script_lang_js_ = (option_groupvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/select/src/option-group.vue





/* normalize component */

var option_group_component = normalizeComponent(
  src_option_groupvue_type_script_lang_js_,
  option_groupvue_type_template_id_22336402_render,
  option_groupvue_type_template_id_22336402_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var option_group = (option_group_component.exports);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/render-option.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var render_optionvue_type_script_lang_js_ = ({
  name: 'RenderOption',
  props: {
    option: {
      type: Array,
      default: function _default() {
        return [];
      }
    }
  },
  data: function data() {
    return {
      prefix: config.classPrefix,
      classPrefix: config.classPrefix + '-render-option'
    };
  },
  components: {
    Option: src_option,
    OptionGroup: option_group
  }
});
// CONCATENATED MODULE: ./packages/select/src/render-option.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_render_optionvue_type_script_lang_js_ = (render_optionvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/select/src/render-option.vue





/* normalize component */

var render_option_component = normalizeComponent(
  src_render_optionvue_type_script_lang_js_,
  render_optionvue_type_template_id_aa163288_render,
  render_optionvue_type_template_id_aa163288_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var render_option = (render_option_component.exports);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/select/src/select.vue?vue&type=script&lang=js&



//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//










/* harmony default export */ var selectvue_type_script_lang_js_ = ({
  name: 'Select',
  directives: {
    clickOutside: v_click_outside_x_esm_directive
  },
  mixins: [mixins_locale, mixins],
  provide: function provide() {
    return {
      selectRoot: this
    };
  },
  props: {
    value: [String, Number, Array],
    name: String,
    placeholder: String,
    disabled: Boolean,
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    option: Array,
    transition: {
      type: String,
      default: 'slideUp'
    },
    multiple: Boolean,
    clearable: Boolean,
    emptyText: String,
    filterable: Boolean,
    // 开启搜索
    remote: Boolean,
    // 开启远程搜索
    loading: Boolean,
    // 正在远程搜索
    allowCreate: Boolean,
    // 是否允许新建
    // 多选限制最多显示的tag数量，其他折叠 0不折叠
    maxTagCount: {
      type: Number,
      default: 0
    },
    // 超出最大数量限制时显示的内容，参数为当前选中的数量
    maxTagText: Function,
    // 多选限制选择的数量 0不限制
    multipleLimit: {
      type: Number,
      default: 0
    },
    maxHeight: {
      type: [String, Number],
      default: '200px'
    },
    placement: {
      type: String,
      default: 'bottom-start'
    },
    valueLable: Boolean,
    dropdownMatchSelectWidth: {
      type: Boolean,
      default: true
    },
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: false
    }
  },
  data: function data() {
    return {
      optionPrefix: config.classPrefix + '-option',
      classPrefix: config.classPrefix + '-select',
      componentName: 'Select',
      form: findComponent(this, 'Form')
    };
  },
  computed: {
    computedSize: function computedSize() {
      if (this.size !== 'default') return this.size;
      if (this.form && this.form.size !== 'default') return this.form.size;
      return this.size;
    },
    isEmpty: function isEmpty() {
      if (this.isFilter) {
        if (this.allowCreate && this.allowCreateOption) return false;
        return !this.filterableValue.length;
      }

      return !this.currentOption.length;
    },
    localEmptyText: function localEmptyText() {
      return this.emptyText || this.t('m.select.emptyData');
    },
    dropInnerStyle: function dropInnerStyle() {
      return {
        height: this.scrollInnerHeight + 'px'
      };
    },
    referenceTabIndex: function referenceTabIndex() {
      return this.disabled || this.filterable ? '-1' : '0';
    },
    // 开启多选限制的，此时除了已经选中的option 其他option全部disabled
    openMultipleLimitDisabled: function openMultipleLimitDisabled() {
      return this.multiple && this.multipleLimit > 0 && this.currentValue.length >= this.multipleLimit;
    },
    // 计算多选时 超出限制数量时的截取
    localCurrentSelectedItems: function localCurrentSelectedItems() {
      var data = this.currentSelectedItems;
      var maxTagCount = this.maxTagCount;

      if (this.multiple && maxTagCount > 0 && data.length > maxTagCount) {
        return data.slice(0, maxTagCount);
      }

      return data;
    },
    // 计算多选时 超出显示数量显示的文本
    localMaxTagText: function localMaxTagText() {
      var data = this.currentSelectedItems;
      var maxTagCount = this.maxTagCount;
      var maxTagText = "+ ".concat(data.length - maxTagCount, "...");

      if (this.maxTagText && typeof this.maxTagText === 'function') {
        maxTagText = this.maxTagText(data.length - maxTagCount);
      }

      return maxTagText;
    },
    // 计算多选时 是否超出限制数量
    showMaxTagText: function showMaxTagText() {
      var data = this.currentSelectedItems;
      var maxTagCount = this.maxTagCount;
      return this.multiple && maxTagCount > 0 && data.length > maxTagCount;
    }
  },
  components: {
    SelectReference: select_reference,
    Drop: drop,
    Scroll: packages_scroll,
    RenderOption: render_option,
    Option: src_option
  }
});
// CONCATENATED MODULE: ./packages/select/src/select.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_selectvue_type_script_lang_js_ = (selectvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/select/src/select.vue





/* normalize component */

var select_component = normalizeComponent(
  src_selectvue_type_script_lang_js_,
  selectvue_type_template_id_1c449d8b_render,
  selectvue_type_template_id_1c449d8b_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_select = (select_component.exports);
// CONCATENATED MODULE: ./packages/select/index.js

/* harmony default export */ var packages_select = (src_select);
// CONCATENATED MODULE: ./packages/option/index.js

/* harmony default export */ var packages_option = (src_option);
// CONCATENATED MODULE: ./packages/option-group/index.js

/* harmony default export */ var packages_option_group = (option_group);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/upload/src/upload.vue?vue&type=template&id=115df728&
var uploadvue_type_template_id_115df728_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[(_vm.showUploadList && _vm.listType === 'picture-card')?_c('upload-list',{attrs:{"listType":_vm.listType,"fileList":_vm.uploadFiles},on:{"preview":_vm.handlerPreview,"remove":_vm.handlerRemove}}):_vm._e(),_vm._v(" "),_c('div',{class:[
            (_vm.classPrefix + "__target"),
            _vm.listType && (_vm.classPrefix + "__" + _vm.listType),
            _vm.drag && (_vm.classPrefix + "__drag"),
            _vm.drag && _vm.dragOver && (_vm.classPrefix + "__dragOver") ],on:{"drop":function($event){$event.preventDefault();return _vm.onDrop($event)},"dragover":function($event){$event.preventDefault();_vm.dragOver = true},"dragleave":function($event){$event.preventDefault();_vm.dragOver = false},"click":_vm.handlerClick}},[_c('input',{ref:"input",class:[(_vm.classPrefix + "__input")],attrs:{"type":"file","name":_vm.name,"multiple":_vm.multiple,"accept":_vm.accept},on:{"change":_vm.handlerChange}}),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__target-slot")]},[_vm._t("default")],2)]),_vm._v(" "),_vm._t("tip"),_vm._v(" "),(_vm.showUploadList && _vm.listType !== 'picture-card')?_c('upload-list',{attrs:{"listType":_vm.listType,"fileList":_vm.uploadFiles},on:{"preview":_vm.handlerPreview,"remove":_vm.handlerRemove}}):_vm._e()],2)}
var uploadvue_type_template_id_115df728_staticRenderFns = []


// CONCATENATED MODULE: ./packages/upload/src/upload.vue?vue&type=template&id=115df728&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/upload/src/upload-list.vue?vue&type=template&id=641dc944&
var upload_listvue_type_template_id_641dc944_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
         ("" + _vm.classPrefix),
         _vm.listType && (_vm.classPrefix + "--" + _vm.listType)
     ]},_vm._l((_vm.fileList),function(file,fileIndex){return _c('div',{key:fileIndex,class:[(_vm.classPrefix + "__item")]},[(file.status !== 'uploading' && ['picture-card', 'picture'].includes(_vm.listType))?_c('img',{class:[(_vm.classPrefix + "__thumbnial")],attrs:{"src":file.url,"alt":""}}):_vm._e(),_vm._v(" "),(_vm.listType !== 'picture-card')?_c('span',{class:[
                  (_vm.classPrefix + "__file"),
                  !(_vm.listType !== 'picture-card' && (file.status === 'uploading' || file.status === 'start')) && (_vm.classPrefix + "__hide-progress")
              ]},[_c('span',{class:[(_vm.classPrefix + "__file-name")]},[(_vm.listType === 'text')?_c('Icon',{attrs:{"type":"file"}}):_vm._e(),_vm._v("\n                "+_vm._s(file.name)+"\n            ")],1),_vm._v(" "),(_vm.listType !== 'picture-card' && (file.status === 'uploading' || file.status === 'start'))?_c('Progress',{attrs:{"stroke-width":2,"percent":_vm.parsePercentage(file.percent)}}):_vm._e()],1):_vm._e(),_vm._v(" "),(_vm.listType !== 'picture-card')?_c('Icon',{class:[(_vm.classPrefix + "__remove")],attrs:{"type":"close"},on:{"click":function($event){return _vm.handlerRemove(file)}}}):_vm._e(),_vm._v(" "),(_vm.listType === 'picture-card')?_c('span',{class:[(_vm.classPrefix + "__picture-cover")]},[_c('span',{class:[(_vm.classPrefix + "__preview")],on:{"click":function($event){return _vm.handlerPreview(file)}}},[_c('Icon',{attrs:{"type":"eye-open"}})],1),_vm._v(" "),_c('span',{class:[(_vm.classPrefix + "__delete")],on:{"click":function($event){return _vm.handlerRemove(file)}}},[_c('Icon',{attrs:{"type":"delete"}})],1)]):_vm._e(),_vm._v(" "),(_vm.listType === 'picture-card' && (file.status === 'start' || file.status === 'uploading'))?_c('span',{class:[(_vm.classPrefix + "__picture-progress")]},[_c('span',{class:[(_vm.classPrefix + "__picture-progress-inner")]},[_c('Progress',{attrs:{"stroke-width":5,"type":"circle","width":"100%","percent":_vm.parsePercentage(file.percent)}})],1)]):_vm._e()],1)}),0)}
var upload_listvue_type_template_id_641dc944_staticRenderFns = []


// CONCATENATED MODULE: ./packages/upload/src/upload-list.vue?vue&type=template&id=641dc944&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/progress/src/progress.vue?vue&type=template&id=7c6a6864&
var progressvue_type_template_id_7c6a6864_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
         ("" + _vm.classPrefix),
          _vm.type && (_vm.classPrefix + "--" + _vm.type),
          _vm.status && (_vm.classPrefix + "--" + _vm.status),
          _vm.outerInfoShow && (_vm.classPrefix + "--show-info") ],attrs:{"role":"progressbar","aria-valuenow":_vm.percent,"aria-valuemin":"0","aria-valuemax":"100"}},[(_vm.type === 'line')?_c('div',{class:[(_vm.classPrefix + "__wrap")]},[_c('div',{class:[(_vm.classPrefix + "__rail")],style:(_vm.railStyle)},[_c('div',{class:[(_vm.classPrefix + "__bar")],style:(_vm.barStyle)},[(_vm.infoInside)?_c('span',{class:[(_vm.classPrefix + "__inside")],style:(_vm.valueStyle)},[_vm._t("default",[_vm._v(_vm._s(_vm.valueFormat(_vm.percent)))])],2):_vm._e()])])]):_c('div',{class:[(_vm.classPrefix + "__circle")],style:({height: _vm.circleWidth + 'px', width: _vm.circleWidth + 'px'})},[_c('svg',{attrs:{"viewBox":"0 0 100 100"}},[_c('path',{class:[(_vm.classPrefix + "__circle-track")],style:(_vm.dashPathStyle),attrs:{"d":_vm.trackPath,"stroke":_vm.railStroke,"stroke-linecap":"round","stroke-width":_vm.relativeStrokeWidth,"fill":"none"}}),_vm._v(" "),_c('path',{class:[(_vm.classPrefix + "__circle-path")],style:(_vm.circlePathStyle),attrs:{"d":_vm.trackPath,"stroke":_vm.barStroke,"stroke-linecap":"round","stroke-width":_vm.percent ? _vm.relativeStrokeWidth : 0,"fill":"none"}})])]),_vm._v(" "),(_vm.outerInfoShow)?_c('span',{class:[(_vm.classPrefix + "__value")],style:(_vm.valueStyle)},[_vm._t("default",[(!_vm.iconType)?_c('span',[_vm._v(_vm._s(_vm.valueFormat(_vm.percent)))]):_vm._e(),_vm._v(" "),(_vm.iconType)?_c('Icon',{class:[(_vm.classPrefix + "__icon")],attrs:{"type":_vm.iconType}}):_vm._e()])],2):_vm._e()])}
var progressvue_type_template_id_7c6a6864_staticRenderFns = []


// CONCATENATED MODULE: ./packages/progress/src/progress.vue?vue&type=template&id=7c6a6864&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/progress/src/progress.vue?vue&type=script&lang=js&








function progressvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function progressvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { progressvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { progressvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var progressvue_type_script_lang_js_ = ({
  name: 'Progress',
  props: {
    percent: {
      type: Number,
      default: 0,
      required: true,
      validator: function validator(value) {
        return value >= 0 && value <= 100;
      }
    },
    type: {
      type: String,
      default: 'line',
      validator: function validator(value) {
        return ['line', 'circle', 'dashboard'].includes(value);
      }
    },
    strokeWidth: {
      type: [String, Number],
      default: 10,
      validator: function validator(value) {
        return parseFloat(value) > 0;
      }
    },
    status: String,
    valueFormat: {
      type: Function,
      default: function _default(value) {
        return value + '%';
      }
    },
    showInfo: {
      type: Boolean,
      default: true
    },
    infoInside: Boolean,
    // 只在line模式下有效
    railColor: String,
    barColor: String,
    width: {
      type: [String, Number],
      default: 126
    } // circle模式下有效

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-progress'
    };
  },
  computed: {
    railStyle: function railStyle() {
      var style = {
        'border-radius': parseFloat(this.strokeWidth) + 'px',
        background: this.railColor
      };

      if (this.vertical) {
        style = progressvue_type_script_lang_js_objectSpread(progressvue_type_script_lang_js_objectSpread({}, style), {}, {
          width: parseFloat(this.strokeWidth) + 'px'
        });
      } else {
        style = progressvue_type_script_lang_js_objectSpread(progressvue_type_script_lang_js_objectSpread({}, style), {}, {
          height: parseFloat(this.strokeWidth) + 'px',
          'line-height': parseFloat(this.strokeWidth) + 'px'
        });
      }

      return style;
    },
    barStyle: function barStyle() {
      var style = progressvue_type_script_lang_js_objectSpread(progressvue_type_script_lang_js_objectSpread({}, this.railStyle), {}, {
        background: this.barColor
      });

      if (this.vertical) {
        style = progressvue_type_script_lang_js_objectSpread(progressvue_type_script_lang_js_objectSpread({}, style), {}, {
          height: this.percent + '%'
        });
      } else {
        style = progressvue_type_script_lang_js_objectSpread(progressvue_type_script_lang_js_objectSpread({}, style), {}, {
          width: this.percent + '%'
        });
      }

      return style;
    },
    valueStyle: function valueStyle() {
      var style = {};
      var fontSize = Math.max(parseFloat(this.strokeWidth) / 2, 12);

      if (this.type === 'circle' && this.iconType) {
        fontSize = Math.max(this.circleWidth * 0.1 + 2, 16);
      }

      style = {
        'line-height': parseFloat(this.strokeWidth) + 'px',
        'font-size': fontSize + 'px'
      };
      return style;
    },
    outerInfoShow: function outerInfoShow() {
      if (this.type === 'line' && this.infoInside) {
        return false;
      } else {
        return this.showInfo;
      }
    },
    iconType: function iconType() {
      var className = '';

      switch (this.status) {
        case 'success':
          className = 'success-fill';
          break;

        case 'error':
          className = 'error-fill';
          break;

        case 'warning':
          className = 'warning-fill';
          break;
      }

      return className;
    },
    radius: function radius() {
      if (this.type === 'circle' || this.type === 'dashboard') {
        return parseInt(50 - parseFloat(this.relativeStrokeWidth) / 2, 10);
      } else {
        return 0;
      }
    },
    relativeStrokeWidth: function relativeStrokeWidth() {
      return (this.strokeWidth / this.circleWidth * 100).toFixed(1);
    },
    trackPath: function trackPath() {
      var radius = this.radius;
      var isDashboard = this.type === 'dashboard';
      return "\n                M 50, 50\n                m 0, ".concat(isDashboard ? '' : '-').concat(radius, "\n                a ").concat(radius, " ").concat(radius, " 0 1 1 0, ").concat(isDashboard ? '-' : '').concat(radius * 2, "\n                a ").concat(radius, " ").concat(radius, " 0 1 1 0, ").concat(isDashboard ? '' : '-').concat(radius * 2);
    },
    perimeter: function perimeter() {
      return 2 * Math.PI * this.radius;
    },
    rate: function rate() {
      return this.type === 'dashboard' ? 0.75 : 1;
    },
    strokeDashoffset: function strokeDashoffset() {
      var offset = -1 * this.perimeter * (1 - this.rate) / 2;
      return "".concat(offset, "px");
    },
    dashPathStyle: function dashPathStyle() {
      return {
        strokeDasharray: "".concat(this.perimeter * this.rate, "px, ").concat(this.perimeter, "px"),
        strokeDashoffset: this.strokeDashoffset
      };
    },
    circlePathStyle: function circlePathStyle() {
      return {
        strokeDasharray: "".concat(this.perimeter * this.rate * (this.percent / 100), "px, ").concat(this.perimeter, "px"),
        strokeDashoffset: this.strokeDashoffset,
        transition: 'stroke-dasharray 0.6s ease 0s, stroke 0.6s ease'
      };
    },
    railStroke: function railStroke() {
      var ret;

      if (this.railColor) {
        ret = this.railColor;
      } else {
        ret = '#f5f7fa';
      }

      return ret;
    },
    barStroke: function barStroke() {
      var ret;

      if (this.barColor) {
        ret = this.barColor;
      } else {
        switch (this.status) {
          case 'success':
            ret = '#42b983';
            break;

          case 'error':
            ret = '#ed4014';
            break;

          case 'warning':
            ret = '#f8ac59';
            break;

          default:
            ret = '#2d8cf0';
        }
      }

      return ret;
    },
    circleWidth: function circleWidth() {
      return parseFloat(this.width);
    }
  },
  components: {
    Icon: packages_icon
  }
});
// CONCATENATED MODULE: ./packages/progress/src/progress.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_progressvue_type_script_lang_js_ = (progressvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/progress/src/progress.vue





/* normalize component */

var progress_component = normalizeComponent(
  src_progressvue_type_script_lang_js_,
  progressvue_type_template_id_7c6a6864_render,
  progressvue_type_template_id_7c6a6864_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var progress = (progress_component.exports);
// CONCATENATED MODULE: ./packages/progress/index.js

/* harmony default export */ var packages_progress = (progress);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/upload/src/upload-list.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var upload_listvue_type_script_lang_js_ = ({
  name: 'UploadList',
  props: {
    fileList: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    listType: String
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-upload-list'
    };
  },
  components: {
    Progress: packages_progress,
    Icon: packages_icon
  },
  methods: {
    parsePercentage: function parsePercentage(val) {
      return parseInt(val, 10) || 0;
    },
    handlerRemove: function handlerRemove(file) {
      this.$emit('remove', file);
    },
    handlerPreview: function handlerPreview(file) {
      this.$emit('preview', file);
    }
  }
});
// CONCATENATED MODULE: ./packages/upload/src/upload-list.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_upload_listvue_type_script_lang_js_ = (upload_listvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/upload/src/upload-list.vue





/* normalize component */

var upload_list_component = normalizeComponent(
  src_upload_listvue_type_script_lang_js_,
  upload_listvue_type_template_id_641dc944_render,
  upload_listvue_type_template_id_641dc944_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var upload_list = (upload_list_component.exports);
// CONCATENATED MODULE: ./packages/upload/src/ajax.js



var getBody = function getBody(xhr) {
  var text = xhr.responseText || xhr.response;
  if (!text) return text;

  try {
    return JSON.parse(text);
  } catch (e) {
    return text;
  }
};

var getError = function getError(action, option, xhr) {
  var msg = "fail to post ".concat(action, " ").concat(xhr.status);
  var err = new Error(msg);
  err.status = xhr.status;
  err.method = 'post';
  err.url = action;
  return err;
};

var uploadAjax = function uploadAjax(option) {
  if (typeof XMLHttpRequest === 'undefined') {
    return;
  }

  var xhr = new XMLHttpRequest();
  var action = option.action;

  if (xhr.upload) {
    xhr.upload.onprogress = function progress(e) {
      if (e.total > 0) {
        e.percent = e.loaded / e.total * 100;
      }

      option.onProgress(e);
    };
  }

  var formData = new FormData();

  if (option.data) {
    Object.keys(option.data).map(function (key) {
      formData.append(key, option.data[key]);
    });
  }

  formData.append(option.filename, option.file);

  xhr.onerror = function error(e) {
    option.onError(e);
  };

  xhr.onload = function onload() {
    if (xhr.status < 200 || xhr.status >= 300) {
      return option.onError(getError(action, option, xhr), getBody(xhr));
    }

    option.onSuccess(getBody(xhr));
  };

  xhr.open('post', action, true);
  var headers = option.headers || {}; // eslint-disable-next-line no-unused-vars

  for (var item in headers) {
    if (headers.hasOwnProperty(item) && headers[item] !== null) {
      xhr.setRequestHeader(item, headers[item]);
    }
  }

  xhr.send(formData);
};

/* harmony default export */ var ajax = (uploadAjax);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/upload/src/upload.vue?vue&type=script&lang=js&








//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var uploadvue_type_script_lang_js_ = ({
  name: 'Upload',
  props: {
    name: {
      type: String,
      default: 'file'
    },
    action: String,
    listType: {
      type: String,
      default: 'text',
      validator: function validator(value) {
        return ['text', 'picture', 'picture-card'].includes(value);
      }
    },
    fileList: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    drag: Boolean,
    multiple: Boolean,
    accept: String,
    format: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    showUploadList: {
      type: Boolean,
      default: true
    },
    limit: Number,
    maxSize: Number,
    disabled: Boolean,
    beforeUpload: {
      type: Function,
      default: function _default() {
        return {};
      }
    },
    onChange: {
      type: Function,
      default: function _default() {
        return {};
      }
    },
    onProgress: {
      type: Function,
      default: function _default() {
        return {};
      }
    },
    onSuccess: {
      type: Function,
      default: function _default() {
        return {};
      }
    },
    onError: {
      type: Function,
      default: function _default() {
        return {};
      }
    },
    onRemove: {
      type: Function,
      default: function _default() {
        return {};
      }
    },
    onPreview: {
      type: Function,
      default: function _default() {
        return {};
      }
    },
    onExceed: {
      type: Function,
      default: function _default() {
        return {};
      }
    },
    headers: Object,
    data: Object
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-upload',
      uploadFiles: [],
      tempIndex: 1,
      dragOver: false
    };
  },
  components: {
    UploadList: upload_list
  },
  methods: {
    handlerClick: function handlerClick() {
      if (this.disabled) return;
      this.$refs.input.click();
    },
    onDrop: function onDrop(e) {
      if (!this.drag) return;
      this.dragOver = false;
      if (this.disabled) return;
      this.uploadFile(e.dataTransfer.files);
    },
    handlerChange: function handlerChange(ev) {
      var files = ev.target.files;
      if (!files) return;
      this.uploadFile(files);
      this.$refs.input.value = null;
    },
    uploadFile: function uploadFile(files) {
      var _this = this;

      if (this.limit && this.uploadFiles.length + files.length > this.limit) {
        this.onExceed && this.onExceed('limit', files, this.uploadFiles);
        return;
      }

      var postFiles = Array.prototype.slice.call(files);
      if (!this.multiple) postFiles = postFiles.slice(0, 1);
      if (postFiles.length === 0) return;
      postFiles.forEach(function (file) {
        _this.upload(file);
      });
    },
    upload: function upload(file) {
      var _this2 = this;

      if (this.maxSize) {
        if (file.size > this.maxSize * 1024) {
          this.onExceed && this.onExceed('size', file, this.uploadFiles);
          return;
        }
      }

      if (!this.formatFileType(file)) {
        this.onExceed('type', file, this.uploadFiles);
        return;
      }

      if (!this.beforeUpload) {
        return this.postFile(file);
      }

      var before = this.beforeUpload(file);

      if (before && before.then) {
        before.then(function (processedFile) {
          if (Object.prototype.toString.call(processedFile) === '[object File]') {
            _this2.postFile(processedFile);
          } else {
            _this2.postFile(file);
          }
        });
      } else if (before !== false) {
        this.postFile(file);
      } else {// this.$emit('cancel', file);
      }
    },
    postFile: function postFile(file) {
      var _this3 = this;

      this.handlerStart(file);
      var option = {
        headers: this.headers,
        file: file,
        data: this.data,
        filename: this.name,
        action: this.action,
        onProgress: function onProgress(e) {
          _this3.handlerProgress(e, file);
        },
        onSuccess: function onSuccess(res) {
          _this3.hanlderSuccess(res, file);
        },
        onError: function onError(err, response) {
          _this3.handlerError(err, response, file);
        }
      };
      ajax(option);
    },
    handlerStart: function handlerStart(file) {
      file.uid = Date.now() + this.tempIndex++;
      var _file = {
        status: 'start',
        name: file.name,
        size: file.size,
        percent: 0,
        uid: file.uid,
        file: file
      };
      _file.url = this.createFileUrl(_file);
      this.uploadFiles.push(_file);
      this.onChange(_file, this.uploadFiles);
    },
    handlerProgress: function handlerProgress(e, file) {
      var _file = this.getFile(file);

      _file.percent = e.percent || 0;
      _file.status = 'uploading';
      this.onProgress(e, _file, this.uploadFiles);
    },
    hanlderSuccess: function hanlderSuccess(res, file) {
      var _file = this.getFile(file);

      if (_file) {
        _file.status = 'done';
        _file.response = res;
        this.onSuccess(res, _file, this.uploadFiles);
        this.onChange(_file, this.uploadFiles); // this.emitChange();
      }
    },
    handlerError: function handlerError(err, response, file) {
      var _file = this.getFile(file);

      _file.status = 'fail';
      this.uploadFiles.splice(this.uploadFiles.indexOf(_file), 1);
      this.onError(err, _file, this.uploadFiles);
      this.onChange(_file, this.uploadFiles); // this.emitChange();
    },
    handlerRemove: function handlerRemove(file) {
      this.uploadFiles.splice(this.uploadFiles.indexOf(file), 1);
      this.onRemove(file, this.uploadFiles); // this.emitChange();
    },
    handlerPreview: function handlerPreview(file) {
      if (file.status === 'done') {
        this.onPreview(file);
      }
    },
    getFile: function getFile(file) {
      var uploadList = this.uploadFiles;
      var target;
      uploadList.every(function (item) {
        target = file.uid === item.uid ? item : null;
        return !target;
      });
      return target;
    },
    formatFileType: function formatFileType(file) {
      if (!this.format.length) return true;
      var fileFormat = file.name.split('.').pop().toLocaleLowerCase();
      return this.format.includes(fileFormat);
    },
    createFileUrl: function createFileUrl(file) {
      var url = null;

      if (this.listType === 'picture' || this.listType === 'picture-card') {
        if (!file.url && file.file) {
          try {
            url = URL.createObjectURL(file.file);
          } catch (err) {
            console.error('[Element Error][Upload]', err);
          }
        }
      }

      return url;
    } // emitChange(){
    //     this.$emit('change', this.fileList)
    // }

  },
  watch: {
    fileList: {
      handler: function handler(fileList) {
        var _this4 = this;

        this.uploadFiles = fileList.map(function (item) {
          item.uid = item.uid || Date.now() + _this4.tempIndex++;
          item.status = item.status || 'done';
          return item;
        });
      },
      deep: true,
      immediate: true
    }
  }
});
// CONCATENATED MODULE: ./packages/upload/src/upload.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_uploadvue_type_script_lang_js_ = (uploadvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/upload/src/upload.vue





/* normalize component */

var upload_component = normalizeComponent(
  src_uploadvue_type_script_lang_js_,
  uploadvue_type_template_id_115df728_render,
  uploadvue_type_template_id_115df728_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var upload = (upload_component.exports);
// CONCATENATED MODULE: ./packages/upload/index.js

/* harmony default export */ var packages_upload = (upload);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/switch/src/switch.vue?vue&type=template&id=22d3d546&
var switchvue_type_template_id_22d3d546_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:[
          ("" + _vm.classPrefix),
          _vm.computedSize && (_vm.classPrefix + "--" + _vm.computedSize),
          {
             'is-checked': _vm.currentValue === _vm.trueValue,
             'is-disabled': _vm.isDisabled,
             'is-loading': _vm.loading
          }
      ],style:(_vm.expandStyle),attrs:{"tabindex":"0"},on:{"click":function($event){$event.stopPropagation();return _vm.handleClick($event)}}},[_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.currentValue),expression:"currentValue"}],attrs:{"type":"hidden","name":_vm.name},domProps:{"value":(_vm.currentValue)},on:{"input":function($event){if($event.target.composing){ return; }_vm.currentValue=$event.target.value}}}),_vm._v(" "),_c('span',{class:[(_vm.classPrefix + "__inner")]},[(_vm.currentValue === _vm.trueValue)?_vm._t("open"):_vm._e(),_vm._v(" "),(_vm.currentValue === _vm.falseValue)?_vm._t("close"):_vm._e()],2)])}
var switchvue_type_template_id_22d3d546_staticRenderFns = []


// CONCATENATED MODULE: ./packages/switch/src/switch.vue?vue&type=template&id=22d3d546&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/switch/src/switch.vue?vue&type=script&lang=js&



//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var switchvue_type_script_lang_js_ = ({
  name: 'MSwitch',
  props: {
    value: {
      type: [String, Number, Boolean],
      default: false
    },
    trueValue: {
      type: [String, Number, Boolean],
      default: true
    },
    falseValue: {
      type: [String, Number, Boolean],
      default: false
    },
    name: String,
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    disabled: Boolean,
    checkedColor: String,
    uncheckedColor: String,
    width: [String, Number],
    loading: Boolean
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-switch',
      currentValue: false,
      form: findComponent(this, 'Form')
    };
  },
  computed: {
    computedSize: function computedSize() {
      if (this.size !== 'default') return this.size;
      if (this.form && this.form.size !== 'default') return this.form.size;
      return this.size;
    },
    isDisabled: function isDisabled() {
      return this.disabled;
    },
    expandStyle: function expandStyle() {
      var width = parseFloat(this.width) + 'px';

      if (this.currentValue === this.trueValue) {
        return {
          'background-color': this.checkedColor,
          width: width
        };
      }

      return {
        'background-color': this.uncheckedColor,
        width: width
      };
    }
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.currentValue = _this.value;
    });
  },
  methods: {
    handleClick: function handleClick() {
      if (this.isDisabled || this.loading) return;
      var checked = this.currentValue === this.trueValue ? this.falseValue : this.trueValue;
      this.currentValue = checked;
      this.$emit('input', checked);
      this.$emit('change', checked);
    }
  },
  watch: {
    value: function value(newVal) {
      this.currentValue = newVal;
    }
  }
});
// CONCATENATED MODULE: ./packages/switch/src/switch.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_switchvue_type_script_lang_js_ = (switchvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/switch/src/switch.vue





/* normalize component */

var switch_component = normalizeComponent(
  src_switchvue_type_script_lang_js_,
  switchvue_type_template_id_22d3d546_render,
  switchvue_type_template_id_22d3d546_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_switch = (switch_component.exports);
// CONCATENATED MODULE: ./packages/switch/index.js

/* harmony default export */ var packages_switch = (src_switch);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/slider/src/slider.vue?vue&type=template&id=84fbceea&
var slidervue_type_template_id_84fbceea_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
         ("" + _vm.classPrefix),
         _vm.isDisabled && 'is-disabled',
         _vm.vertical && 'is-vertical'
     ]},[_c('div',{ref:"slider",class:[(_vm.classPrefix + "__rail")],style:(_vm.railStyle),on:{"click":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.sliderClick($event)}}},[_c('div',{class:[(_vm.classPrefix + "__bar")],style:(_vm.barStyle),on:{"click":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.sliderClick($event)}}}),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__handle")],style:(_vm.handleStyle),on:{"mousedown":function($event){return _vm.hanldeMousedown($event, 'min')}}},[_c('tooltip',{ref:"minTooltip",attrs:{"renderHtml":_vm.tooltipVisible === 'always' || false,"disabled":_vm.tipDisabled,"always":_vm.tooltipVisible === 'always',"placement":"top"}},[_c('span',{attrs:{"slot":"content"},slot:"content"},[_vm._v(_vm._s(_vm.tipFormat(_vm.emitValue[0])))]),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__handle-rel")],style:(_vm.handleRelStyle),on:{"mouseenter":function($event){_vm.isHover = true},"mouseleave":function($event){_vm.isHover = false}}})])],1)])])}
var slidervue_type_template_id_84fbceea_staticRenderFns = []


// CONCATENATED MODULE: ./packages/slider/src/slider.vue?vue&type=template&id=84fbceea&

// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/arrayWithHoles.js
function _arrayWithHoles(arr) {
  if (Array.isArray(arr)) return arr;
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/iterableToArrayLimit.js
function _iterableToArrayLimit(arr, i) {
  if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return;
  var _arr = [];
  var _n = true;
  var _d = false;
  var _e = undefined;

  try {
    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
      _arr.push(_s.value);

      if (i && _arr.length === i) break;
    }
  } catch (err) {
    _d = true;
    _e = err;
  } finally {
    try {
      if (!_n && _i["return"] != null) _i["return"]();
    } finally {
      if (_d) throw _e;
    }
  }

  return _arr;
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/nonIterableRest.js
function _nonIterableRest() {
  throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/slicedToArray.js




function _slicedToArray(arr, i) {
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
}
// CONCATENATED MODULE: ./src/utils/dom.js

var dom_isServer = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.prototype.$isServer;
/**
 * 绑定事件
 */

var on = function () {
  if (dom_isServer) return function () {};

  if (document.addEventListener) {
    return function (element, event, handler) {
      if (element && event && handler) {
        element.addEventListener(event, handler, false);
      }
    };
  } else {
    return function (element, event, handler) {
      if (element && event && handler) {
        element.attachEvent('on' + event, handler);
      }
    };
  }
}();
/**
 * 解除绑定的事件
 */

var off = function () {
  if (dom_isServer) return;

  if (document.removeEventListener) {
    return function (element, event, handler) {
      if (element && event) {
        element.removeEventListener(event, handler, false);
      }
    };
  } else {
    return function (element, event, handler) {
      if (element && event) {
        element.detachEvent('on' + event, handler);
      }
    };
  }
}();
/**
 * scrollTop animation
 * @param el 滚动元素
 * @param from 开始位置
 * @param to 结束位置
 * @param duration 总时间
 */

var scrollTop = function scrollTop(el) {
  var from = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
  var to = arguments.length > 2 ? arguments[2] : undefined;
  var duration = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 500;

  if (!window.requestAnimationFrame) {
    window.requestAnimationFrame = window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.msRequestAnimationFrame || function (cb) {
      return window.setTimeout(cb, 1000 / 60);
    };
  }

  var step = Math.ceil(Math.abs(from - to) / duration * 50);

  var scrollTo = function scrollTo(start, end, step) {
    if (start === end) return;
    var dis = start + step > end ? end : start + step;

    if (start > end) {
      dis = start - step < end ? end : start - step;
    }

    if (el === window) {
      window.scrollTo(dis, dis);
    } else {
      el.scrollTop = dis;
    }

    window.requestAnimationFrame(function () {
      return scrollTo(dis, end, step);
    });
  };

  scrollTo(from, to, step);
};
// CONCATENATED MODULE: ./src/utils/global.js


var global_deepClone = function deepClone(data) {
  var result;
  var dataType;

  if (_typeof(data) === 'object') {
    if (data instanceof Array) {
      result = [];
      dataType = 'array';
    } else {
      result = {};
      dataType = 'object';
    }
  } else {
    return data;
  }

  if (dataType === 'array') {
    for (var i = 0; i < data.length; i++) {
      result.push(deepClone(data[i]));
    }
  } else if (dataType === 'object') {
    // eslint-disable-next-line no-unused-vars
    for (var _i in data) {
      result[_i] = deepClone(data[_i]);
    }
  }

  return result;
};
/**
 * 获取滚动条的宽度
 * @returns {number}
 */

var getScrollBarWidth = function getScrollBarWidth() {
  var div = document.createElement('div');
  div.style.width = '100px';
  div.style.height = '100px';
  div.style.overflow = 'scroll';
  document.body.appendChild(div);
  var scrollBarWidth = div.offsetWidth - div.clientWidth;
  document.body.removeChild(div);
  return scrollBarWidth;
};
/**
 * 生成指定位数的随机数字符串
 * @param length
 * @returns {string}
 */

var createRandom = function createRandom(length) {
  var result = '';

  for (var i = 0; i < length; i++) {
    result += Math.floor(Math.random() * 10);
  }

  return result;
};
/**
 * 返回指定路径下data的值, 支持对象和数组的取值
 * @param obj
 * @param path eg1: a.b.c  eg2:0.1.2
 * @returns {string, object}
 */

var global_getObjectValueByPath = function getObjectValueByPath(obj, path) {
  try {
    if ((_typeof(obj) === 'object' || Array.isArray(obj)) && path) {
      var pathArray = path.split('.');

      var getValue = function getValue(obj, pathArray) {
        var key = pathArray.shift();

        if (typeof obj[key] === 'undefined' || obj[key] == null) {
          return '';
        }

        if (pathArray.length === 0) {
          return obj[key];
        }

        obj = obj[key];
        return getValue(obj, pathArray);
      };

      return getValue(obj, pathArray);
    }

    return '';
  } catch (error) {
    console.error(error);
  }
};
/**
 * 16进制色值转rgba
 * @param color
 * @param alpha
 * @returns {string}
 */

var colorToRgba = function colorToRgba(color) {
  var alpha = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
  // 16进制颜色值的正则
  var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
  if (typeof color !== 'string') return color;
  if (!reg.test(color)) return color; // 把颜色值变成小写

  color = color.toLowerCase(); // 如果只有三位的值，需变成六位，如：#fff => #ffffff

  if (color.length === 4) {
    var colorNew = '#';

    for (var _i2 = 1; _i2 < 4; _i2 += 1) {
      colorNew += color.slice(_i2, _i2 + 1).concat(color.slice(_i2, _i2 + 1));
    }

    color = colorNew;
  } // 处理六位的颜色值，转为RGBA


  var colorChange = [];

  for (var i = 1; i < 7; i += 2) {
    colorChange.push(parseInt('0x' + color.slice(i, i + 2)));
  }

  return "rgba(".concat(colorChange.join(','), ", ").concat(alpha, ")");
};
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/slider/src/slider.vue?vue&type=script&lang=js&













function slidervue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function slidervue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { slidervue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { slidervue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//





/* harmony default export */ var slidervue_type_script_lang_js_ = ({
  name: 'Slider',
  props: {
    value: [Array, Number],
    min: {
      type: Number,
      default: 0
    },
    max: {
      type: Number,
      default: 100
    },
    step: {
      type: Number,
      default: 1
    },
    range: {
      type: Boolean,
      default: false
    },
    disabled: Boolean,
    vertical: Boolean,
    tooltipVisible: {
      type: String,
      default: 'hover',
      validator: function validator(value) {
        return ['hover', 'always', 'never'].includes(value);
      }
    },
    tipFormat: {
      type: Function,
      default: function _default(val) {
        return val;
      }
    },
    railColor: String,
    barColor: String
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-slider',
      currentValue: [],
      startX: 0,
      startY: 0,
      startPos: 0,
      dragging: false,
      moveType: '',
      sliderLength: 0,
      observer: null,
      isHover: false
    };
  },
  computed: {
    directionType: function directionType() {
      return this.vertical ? 'Y' : 'X';
    },
    isDisabled: function isDisabled() {
      return this.disabled;
    },
    minPosition: function minPosition() {
      return (this.currentValue[0] - this.min) / this.rangeValue * 100;
    },
    maxPosition: function maxPosition() {
      return (this.currentValue[1] - this.min) / this.rangeValue * 100;
    },
    rangeValue: function rangeValue() {
      return this.max - this.min;
    },
    railStyle: function railStyle() {
      return this.railColor ? {
        'background-color': this.railColor
      } : {};
    },
    handleStyle: function handleStyle() {
      var style = {
        left: this.minPosition + '%'
      };

      if (this.vertical) {
        style = {
          bottom: this.minPosition + '%'
        };
      }

      return style;
    },
    barStyle: function barStyle() {
      var style = {
        width: (this.currentValue[0] - this.min) / this.rangeValue * 100 + '%',
        'background-color': this.barColor
      };

      if (this.vertical) {
        style = slidervue_type_script_lang_js_objectSpread(slidervue_type_script_lang_js_objectSpread({}, style), {}, {
          width: '100%',
          height: (this.currentValue[0] - this.min) / this.rangeValue * 100 + '%'
        });
      }

      return style;
    },
    tipDisabled: function tipDisabled() {
      return this.tipFormat(this.currentValue[0]) === null || this.tooltipVisible === 'never';
    },
    emitValue: function emitValue() {
      var fixedLength = 0;

      if (this.step.toString().includes('.')) {
        fixedLength = this.step.toString().split('.')[1];
      }

      return this.currentValue.map(function (i) {
        return Number(i.toFixed(fixedLength));
      });
    },
    handleRelStyle: function handleRelStyle() {
      var style = {};

      if (this.barColor) {
        var color = colorToRgba(this.barColor, 0.2);
        style = {
          'border-color': this.barColor
        };
        if (this.isHover) style = slidervue_type_script_lang_js_objectSpread(slidervue_type_script_lang_js_objectSpread({}, style), {}, {
          'box-shadow': "0 0 0 4px ".concat(color)
        });
      }

      return style;
    }
  },
  components: {
    Tooltip: packages_tooltip
  },
  mounted: function mounted() {
    this.observer = element_resize_detector_default()();
    this.observer.listenTo(this.$refs.slider, this.getSliderLength);
    this.initCurrentValue();
  },
  beforeDestroy: function beforeDestroy() {
    this.observer.removeListener(this.$refs.slider, this.getSliderLength);
  },
  watch: {
    value: function value() {
      this.initCurrentValue();
    },
    emitValue: function emitValue(newVal) {
      var value = this.range ? newVal : newVal[0];
      this.$emit('input', value);
    }
  },
  methods: {
    initCurrentValue: function initCurrentValue() {
      var value = Array.isArray(this.value) ? this.value : [this.value];
      this.currentValue = this.checkLimits(value);
    },
    checkLimits: function checkLimits(_ref) {
      var _ref2 = _slicedToArray(_ref, 2),
          min = _ref2[0],
          max = _ref2[1];

      min = Math.max(this.min, min);
      min = Math.min(this.max, min);
      max = Math.max(this.min, min, max);
      max = Math.min(this.max, max);
      return [min, max];
    },
    getPoint: function getPoint(event) {
      return event.type.indexOf('touch') !== -1 ? event.touches[0]["client".concat(this.directionType)] : event["client".concat(this.directionType)];
    },
    dragStart: function dragStart(event) {
      this.dragging = false;
      this["start".concat(this.directionType)] = this.getPoint(event);
      this.startPos = this["".concat(this.moveType, "Position")] * this.rangeValue / 100 + this.min;
    },
    dragRuning: function dragRuning(event) {
      this.dragging = true;
      var currentPos = this.getPoint(event);
      if (this.tooltipVisible === 'hover') this.$refs["".concat(this.moveType, "Tooltip")].visible = true;
      var diff = (currentPos - this["start".concat(this.directionType)]) / this.sliderLength * this.rangeValue;
      if (this.vertical) this.handleChangePosition(this.startPos - diff);else this.handleChangePosition(this.startPos + diff);
    },
    dragEnd: function dragEnd() {
      if (this.dragging) {
        this.dragging = false;
        if (this.tooltipVisible === 'hover') this.$refs["".concat(this.moveType, "Tooltip")].visible = false;
        this.emitChange();
      }

      this.moveType = '';
      off(window, 'mousemove', this.dragRuning);
      off(window, 'mouseup', this.dragEnd);
    },
    hanldeMousedown: function hanldeMousedown(event, type) {
      if (this.disabled) return;
      event.preventDefault();
      this.moveType = type;
      this.dragStart(event);
      on(window, 'mousemove', this.dragRuning);
      on(window, 'mouseup', this.dragEnd);
    },
    handleChangePosition: function handleChangePosition(newPos, type) {
      var index = (type || this.moveType) === 'min' ? 0 : 1;
      newPos = index === 0 ? this.checkLimits([newPos, this.max])[0] : this.checkLimits([this.min, newPos])[1];
      var value = this.currentValue;
      value[index] = newPos - this.stepDecimal(newPos, this.step);
      this.currentValue = _toConsumableArray(value);

      if (!this.dragging) {
        this.emitChange();
      }
    },
    stepDecimal: function stepDecimal(pos, step) {
      if (step < 1) {
        var sl = step.toString();
        var multiple = 1;
        var m;

        try {
          m = sl.split('.')[1].length;
        } catch (e) {
          m = 0;
        }

        multiple = Math.pow(10, m);
        return pos * multiple % (step * multiple) / multiple;
      }

      return pos % step;
    },
    sliderClick: function sliderClick(event) {
      if (this.disabled) return;
      this.dragging = false;
      var currentPos = this.getPoint(event);
      var sliderOffsetLeft = this.$refs.slider.getBoundingClientRect().left;
      var newPos = (currentPos - sliderOffsetLeft) / this.sliderLength * this.rangeValue + this.min;
      this.handleChangePosition(newPos, 'min');
    },
    emitChange: function emitChange() {
      var value = this.range ? this.emitValue : this.emitValue[0];
      this.$emit('change', value);
    },
    getSliderLength: function getSliderLength() {
      this.sliderLength = this.vertical ? this.$refs.slider.offsetHeight : this.$refs.slider.offsetWidth;
    }
  }
});
// CONCATENATED MODULE: ./packages/slider/src/slider.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_slidervue_type_script_lang_js_ = (slidervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/slider/src/slider.vue





/* normalize component */

var slider_component = normalizeComponent(
  src_slidervue_type_script_lang_js_,
  slidervue_type_template_id_84fbceea_render,
  slidervue_type_template_id_84fbceea_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var slider = (slider_component.exports);
// CONCATENATED MODULE: ./packages/slider/index.js

/* harmony default export */ var packages_slider = (slider);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/modal/src/modal.vue?vue&type=template&id=32682096&
var modalvue_type_template_id_32682096_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{"name":_vm.transition[1]}},[(_vm.coverShow)?_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],class:[(_vm.classPrefix + "__cover")],on:{"click":_vm.handleCover}}):_vm._e()]),_vm._v(" "),_c('div',{ref:"modalWrap",class:[
             (_vm.classPrefix + "__wrap"),
             _vm.wrapHidden && (_vm.classPrefix + "__hidden"),
             (_vm.bodyScroll || _vm.fullscreen) && (_vm.classPrefix + "__overhidden")
         ],on:{"click":_vm.handleWrapClick}},[_c('transition',{attrs:{"name":_vm.transition[0]},on:{"after-leave":_vm.handleAfterLeave}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],ref:"modal",class:[
                     ("" + _vm.classPrefix),
                     _vm.fullscreen && (_vm.classPrefix + "__fullscreen")
                 ],style:(_vm.modalStyle)},[_c('div',{class:[(_vm.classPrefix + "__content")]},[(_vm.closable)?_c('div',{class:[(_vm.classPrefix + "__close")],on:{"click":_vm.handleClose}},[_vm._t("close",[_c('Icon',{attrs:{"type":"close"}})])],2):_vm._e(),_vm._v(" "),(_vm.showHead)?_c('div',{ref:"modalHeader",class:[(_vm.classPrefix + "__header")]},[_vm._t("header",[_vm._v(_vm._s(_vm.title))])],2):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__body")],style:(_vm.bodyStyle)},[_c('scroll',{attrs:{"size":"small"}},[_c('div',{class:[(_vm.classPrefix + "__body-content")]},[_vm._t("default")],2)])],1),_vm._v(" "),(!_vm.footerHide)?_c('div',{ref:"modalFooter",class:[(_vm.classPrefix + "__footer")]},[_vm._t("footer",[(_vm.localCancelText)?_c('Button',{on:{"click":_vm.handleButtonCancel}},[_vm._v(_vm._s(_vm.localCancelText))]):_vm._e(),_vm._v(" "),(_vm.localOkText)?_c('Button',{attrs:{"type":"primary","loading":_vm.okButtonLoading},on:{"click":_vm.handleButtonOk}},[_vm._v("\n                                "+_vm._s(_vm.localOkText)+"\n                            ")]):_vm._e()])],2):_vm._e()])])])],1)],1)}
var modalvue_type_template_id_32682096_staticRenderFns = []


// CONCATENATED MODULE: ./packages/modal/src/modal.vue?vue&type=template&id=32682096&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/modal/src/modal.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//






/* harmony default export */ var modalvue_type_script_lang_js_ = ({
  name: 'Modal',
  mixins: [mixins_locale],
  props: {
    transition: {
      type: Array,
      default: function _default() {
        return ['scale', 'fade'];
      }
    },
    width: {
      type: [String, Number],
      default: 520
    },
    height: {
      type: [String, Number]
    },
    value: Boolean,
    fullscreen: Boolean,
    footerHide: Boolean,
    closable: {
      type: Boolean,
      default: true
    },
    // 是否显示右上角关闭按钮
    cancelText: String,
    okText: String,
    styles: Object,
    title: String,
    loading: Boolean,
    coverClosable: {
      type: Boolean,
      default: true
    },
    coverShow: {
      type: Boolean,
      default: true
    },
    closeRemoveDom: {
      type: Boolean,
      default: false
    },
    // 是否关闭之后移除dom
    bodyScroll: Boolean,
    // body内容自动滚动,
    modalTop: {
      type: [String, Number],
      default: 100
    },
    // 值为center时垂直居中（暂时没做居中）
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: function _default() {
        return true;
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-modal',
      visible: this.value,
      wrapHidden: !this.value,
      showHead: true,
      okButtonLoading: false,
      observer: null,
      bodyStyle: {}
    };
  },
  computed: {
    localOkText: function localOkText() {
      return this.okText === null ? null : this.okText ? this.okText : this.t('m.modal.okText');
    },
    localCancelText: function localCancelText() {
      return this.cancelText === null ? null : this.cancelText ? this.cancelText : this.t('m.modal.cancelText');
    },
    modalStyle: function modalStyle() {
      var style = {};
      var widthPar = parseFloat(this.width);
      var modalTop = parseFloat(this.modalTop);
      var isWidthPer = this.width.toString().includes('%');
      var isModalTopPer = this.modalTop.toString().includes('%');
      var width = isWidthPer ? "".concat(widthPar, "%") : "".concat(widthPar, "px");
      var top = isModalTopPer ? "".concat(modalTop, "%") : "".concat(modalTop, "px");
      var styles = this.styles ? this.styles : {};
      Object.assign(style, styles, {
        width: width,
        top: top
      });
      return style;
    }
  },
  components: {
    Button: packages_button,
    Scroll: packages_scroll,
    Icon: packages_icon
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.renderToHtml();

      _this.setShowHead();

      if (_this.bodyScroll || _this.fullscreen) {
        _this.observer = element_resize_detector_default()();

        _this.observer.listenTo(_this.$refs.modalWrap, _this.modalBodyResize);
      }
    });
  },
  beforeDestroy: function beforeDestroy() {
    this.observer && this.observer.removeListener(this.$refs.modalWrap, this.modalBodyResize);
  },
  watch: {
    value: function value(newVal) {
      if (newVal) this.wrapHidden = !newVal;
      this.visible = newVal;
    }
  },
  methods: {
    renderToHtml: function renderToHtml() {
      if (typeof this.renderHtml === 'boolean' && this.renderHtml === false || !this.renderHtml) return;

      if (typeof this.renderHtml === 'boolean' && this.renderHtml === true) {
        document.body.appendChild(this.$el);
      } else {
        this.renderHtml.appendChild(this.$el);
      }
    },
    modalBodyResize: function modalBodyResize() {
      if (!this.$refs.modal) return;
      var diffHeight = 20;
      var modalHeight = this.$refs.modal.offsetHeight;
      var modalTop = parseFloat(this.modalTop);
      var modalHeaderHeight = this.showHead && this.$refs.modalHeader.offsetHeight;
      var modalFooterHeight = !this.footerHide && this.$refs.modalFooter.offsetHeight;
      var modalWrapHeight = this.$refs.modalWrap.offsetHeight;
      var bodyHeight = 'auto';

      if (this.fullscreen) {
        bodyHeight = modalHeight - modalHeaderHeight - modalFooterHeight + 'px';
      } else if (this.bodyScroll) {
        if (modalHeight + modalTop + diffHeight > modalWrapHeight) {
          bodyHeight = modalWrapHeight - modalHeaderHeight - modalFooterHeight - modalTop - diffHeight + 'px';
        }

        if (this.height && parseFloat(this.height) && parseFloat(bodyHeight) > parseFloat(this.height)) {
          bodyHeight = parseFloat(this.height) + 'px';
        }
      }

      this.bodyStyle = {
        height: bodyHeight
      };
    },
    setShowHead: function setShowHead() {
      this.showHead = true;

      if (!this.$slots.header && !this.title) {
        this.showHead = false;
      }
    },
    handleClose: function handleClose() {
      this.visible = false;
      this.$emit('input', false);
      this.$emit('cancel');
    },
    handleButtonCancel: function handleButtonCancel() {
      this.handleClose();
    },
    handleButtonOk: function handleButtonOk() {
      if (this.loading) {
        this.okButtonLoading = true;
      } else {
        this.visible = false;
        this.$emit('input', false);
      }

      this.$emit('ok');
    },
    handleWrapClick: function handleWrapClick(event) {
      var className = event.target.getAttribute('class');
      className && className.indexOf("".concat(this.classPrefix, "__wrap")) > -1 && this.handleCover();
    },
    handleCover: function handleCover() {
      if (this.coverClosable) {
        this.handleClose();
      }
    },
    handleAfterLeave: function handleAfterLeave() {
      this.wrapHidden = true;

      if (this.closeRemoveDom) {
        this.handleRemoveDom();
      }
    },
    handleRemoveDom: function handleRemoveDom() {
      this.$el.parentNode && this.$el.parentNode.removeChild(this.$el);
    }
  }
});
// CONCATENATED MODULE: ./packages/modal/src/modal.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_modalvue_type_script_lang_js_ = (modalvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/modal/src/modal.vue





/* normalize component */

var modal_component = normalizeComponent(
  src_modalvue_type_script_lang_js_,
  modalvue_type_template_id_32682096_render,
  modalvue_type_template_id_32682096_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var modal = (modal_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/modal/src/modalConfirm.vue?vue&type=template&id=6ed7a24e&
var modalConfirmvue_type_template_id_6ed7a24e_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('modal',{class:[
            ("" + _vm.classPrefix),
            _vm.icon && (_vm.classPrefix + "--" + _vm.icon),
            _vm.type && (_vm.classPrefix + "--" + _vm.type)
       ],attrs:{"width":_vm.width,"footer-hide":"","cover-closable":false,"close-remove-dom":"","closable":false},on:{"cancel":_vm.handleButtonCancel},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:"visible"}},[(_vm.title)?_c('div',{class:[(_vm.classPrefix + "__header")]},[_c('div',{class:[(_vm.classPrefix + "__icon")]},[_c('Icon',{attrs:{"type":_vm.iconClass}})],1),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__title")]},[_vm._v(_vm._s(_vm.title))])]):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__content")],domProps:{"innerHTML":_vm._s(_vm.content)}}),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__footer")]},[(_vm.icon === 'confirm' && _vm.localCancelText)?_c('Button',{on:{"click":_vm.handleButtonCancel}},[_vm._v("\n            "+_vm._s(_vm.localCancelText)+"\n        ")]):_vm._e(),_vm._v(" "),(_vm.localOkText)?_c('Button',{attrs:{"type":"primary","loading":_vm.okButtonLoading},on:{"click":_vm.handleButtonOk}},[_vm._v("\n            "+_vm._s(_vm.localOkText)+"\n        ")]):_vm._e()],1)])}
var modalConfirmvue_type_template_id_6ed7a24e_staticRenderFns = []


// CONCATENATED MODULE: ./packages/modal/src/modalConfirm.vue?vue&type=template&id=6ed7a24e&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/modal/src/modalConfirm.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//





/* harmony default export */ var modalConfirmvue_type_script_lang_js_ = ({
  name: 'ModalConfirm',
  mixins: [mixins_locale],
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-modal-confirm',
      visible: false,
      width: 350,
      title: '',
      content: '',
      okText: '',
      cancelText: '',
      okButtonLoading: false,
      loading: false,
      icon: '',
      type: '' // 布局类型  两种(default, left)

    };
  },
  computed: {
    localOkText: function localOkText() {
      return this.okText === null ? null : this.okText ? this.okText : this.t('m.modal.okText');
    },
    localCancelText: function localCancelText() {
      return this.cancelText === null ? null : this.cancelText ? this.cancelText : this.t('m.modal.cancelText');
    },
    iconClass: function iconClass() {
      var result;

      switch (this.icon) {
        case 'info':
          result = 'info-fill';
          break;

        case 'success':
          result = 'success-fill';
          break;

        case 'warning':
          result = 'warning-fill';
          break;

        case 'error':
          result = 'error-fill';
          break;

        case 'confirm':
          result = 'question-fill';
          break;

        default:
          result = 'question-fill';
          break;
      }

      return result;
    }
  },
  components: {
    Modal: modal,
    Button: packages_button,
    Icon: packages_icon
  },
  methods: {
    show: function show(value) {
      this.visible = value;
    },
    handleButtonCancel: function handleButtonCancel() {
      this.visible = false;
      this.okButtonLoading = false;
      this.onCancel();
    },
    handleButtonOk: function handleButtonOk() {
      if (this.loading) {
        this.okButtonLoading = true;
      } else {
        this.visible = false;
      }

      this.onOk();
    },
    remove: function remove() {
      this.visible = false;
      this.okButtonLoading = false;
      this.onRemove();
    },
    onOk: function onOk() {},
    onCancel: function onCancel() {},
    onRemove: function onRemove() {}
  }
});
// CONCATENATED MODULE: ./packages/modal/src/modalConfirm.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_modalConfirmvue_type_script_lang_js_ = (modalConfirmvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/modal/src/modalConfirm.vue





/* normalize component */

var modalConfirm_component = normalizeComponent(
  src_modalConfirmvue_type_script_lang_js_,
  modalConfirmvue_type_template_id_6ed7a24e_render,
  modalConfirmvue_type_template_id_6ed7a24e_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var modalConfirm = (modalConfirm_component.exports);
// CONCATENATED MODULE: ./packages/modal/modalConfirm.js




var ModalInstance = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend(modalConfirm);
var exportObj = {};
var ModalInstances = [];
var confirmType = {
  info: 'info',
  success: 'success',
  warning: 'warning',
  error: 'error',
  confirm: 'confirm'
}; // 可配置项的默认值

var defaultOptions = {
  title: '',
  width: 350,
  closable: false,
  loading: false,
  okText: '',
  cancelText: '',
  type: ''
};

var initInstall = function initInstall(opts) {
  var Instance = new ModalInstance({
    el: document.createElement('div')
  });
  document.body.appendChild(Instance.$el);
  opts.icon = opts.key;
  Object.keys(opts).forEach(function (props) {
    Instance[props] = opts[props];
  });
  Instance.show(true);
  ModalInstances.push(Instance);
  return Instance;
};

Object.keys(confirmType).forEach(function (key) {
  exportObj[key] = function () {
    var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
    var opts = Object.assign({}, defaultOptions, props, {
      key: key
    });
    initInstall(opts);
  };
});

exportObj.remove = function () {
  ModalInstances.forEach(function (item) {
    item.remove();
  });
  ModalInstances = [];
};

/* harmony default export */ var modal_modalConfirm = (exportObj);
// CONCATENATED MODULE: ./packages/modal/index.js


modal.$Modal = modal_modalConfirm;
/* harmony default export */ var packages_modal = (modal);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/message/src/message.vue?vue&type=template&id=581221d9&
var messagevue_type_template_id_581221d9_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":"MessageFade","1":""}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],class:[
             ("" + _vm.classPrefix),
             _vm.type && (_vm.classPrefix + "--" + _vm.type),
             _vm.background && (_vm.classPrefix + "--background")
         ],style:(_vm.expandStyle),on:{"mouseenter":_vm.clearTimer,"mouseleave":_vm.startTimer}},[(_vm.iconType)?_c('Icon',{class:[
                  (_vm.classPrefix + "__icon"),
                  _vm.type === 'loading' && "animation-rotate" ],attrs:{"type":_vm.iconType}}):_vm._e(),_vm._v(" "),_c('span',{class:[(_vm.classPrefix + "__content")],domProps:{"innerHTML":_vm._s(_vm.content)}}),_vm._v(" "),(_vm.closable)?_c('Icon',{class:[(_vm.classPrefix + "__icon-closable")],attrs:{"type":"close"},on:{"click":_vm.close}}):_vm._e()],1)])}
var messagevue_type_template_id_581221d9_staticRenderFns = []


// CONCATENATED MODULE: ./packages/message/src/message.vue?vue&type=template&id=581221d9&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/message/src/message.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var messagevue_type_script_lang_js_ = ({
  name: 'Message',
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-message',
      visible: false,
      type: 'info',
      content: '',
      duration: 3000,
      top: 20,
      currentPosition: 20,
      timer: null,
      closed: false,
      background: false,
      closable: false
    };
  },
  computed: {
    iconType: function iconType() {
      var result;

      switch (this.type) {
        case 'info':
          result = 'info-fill';
          break;

        case 'success':
          result = 'success-fill';
          break;

        case 'warning':
          result = 'warning-fill';
          break;

        case 'error':
          result = 'error-fill';
          break;

        case 'loading':
          result = 'loading';
          break;

        default:
          result = 'question-fill';
          break;
      }

      return result;
    },
    expandStyle: function expandStyle() {
      return {
        top: parseFloat(this.currentPosition) + 'px'
      };
    }
  },
  components: {
    Icon: packages_icon
  },
  methods: {
    show: function show() {
      this.visible = true;
      this.startTimer();
    },
    close: function close() {
      this.closed = true;
      this.visible = false;
      this.onCloseComputed();
      this.onClose();
    },
    onClose: function onClose() {},
    onCloseComputed: function onCloseComputed() {},
    startTimer: function startTimer() {
      var _this = this;

      if (this.duration > 0) {
        this.timer = setTimeout(function () {
          !_this.closed && _this.close();
        }, this.duration);
      }
    },
    clearTimer: function clearTimer() {
      this.timer && clearTimeout(this.timer);
    },
    handleAfterLeave: function handleAfterLeave() {
      this.clearTimer();
      this.$el.parentNode.removeChild(this.$el);
    }
  },
  beforeDestroy: function beforeDestroy() {}
});
// CONCATENATED MODULE: ./packages/message/src/message.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_messagevue_type_script_lang_js_ = (messagevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/message/src/message.vue





/* normalize component */

var message_component = normalizeComponent(
  src_messagevue_type_script_lang_js_,
  messagevue_type_template_id_581221d9_render,
  messagevue_type_template_id_581221d9_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var message = (message_component.exports);
// CONCATENATED MODULE: ./packages/message/messageInstance.js






var MessageInstance = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend(message);
var MessageInstances = [];
var MessageHeight = 0; // 不可配置项的默认值

var defaultNoConfigOptions = {
  type: 'info',
  // 值有success error warning info loading
  currentPosition: 20,
  // 当前message距离顶部的top值
  messageItemDis: 10,
  // 每个message之间的间距
  onCloseComputed: function onCloseComputed() {} // 计算当前notice距离顶部的top值

}; // 提供全局配置的参数

var globalConfigOptions = {
  top: 20,
  // 第一个message距离顶部的top值
  duration: 3000 // 自动关闭的延时

}; // 可配置项的默认值

var messageInstance_defaultOptions = {
  content: '',
  duration: 3000,
  background: false,
  // 是否有背景色
  closable: false,
  onClose: function onClose() {} // 关闭的回调

};
var instanceType = {
  info: 'info',
  success: 'success',
  warning: 'warning',
  error: 'error',
  loading: 'loading',
  config: 'config'
};

var topComputed = function topComputed() {
  var len = MessageInstances.length;
  var firstMessageDisTop = defaultNoConfigOptions.currentPosition;

  if (len > 1) {
    MessageHeight = MessageInstances[len - 2].$el.offsetHeight;
    return (len - 1) * (defaultNoConfigOptions.messageItemDis + MessageHeight) + firstMessageDisTop;
  }

  return firstMessageDisTop;
};

var closeAfter = function closeAfter() {
  MessageInstances.splice(0, 1);
  MessageInstances.forEach(function (item) {
    if (item.visible) {
      item.currentPosition = item.currentPosition - (MessageHeight + defaultNoConfigOptions.messageItemDis);
    }
  });
};

var messageInstance_initInstall = function initInstall(opts) {
  var CreateInstance = new MessageInstance({
    el: document.createElement('div')
  });
  document.body.appendChild(CreateInstance.$el);
  MessageInstances.push(CreateInstance);
  Object.keys(opts).forEach(function (key) {
    if (key === 'currentPosition') {
      CreateInstance[key] = topComputed();
    } else if (key === 'onCloseComputed') {
      CreateInstance[key] = closeAfter;
    } else {
      CreateInstance[key] = opts[key];
    }
  });
  CreateInstance.show();
  return CreateInstance;
};

var messageInstance_message = function message(type, options, duration) {
  if (typeof options === 'string') {
    options = {
      content: options
    };

    if (typeof duration === 'number' && duration.toString()) {
      options.duration = duration;
    }
  } // 如果没有单独配置duration，则默认按照全局配置生效


  if (!options.hasOwnProperty('duration')) {
    options.duration = globalConfigOptions.duration;
  }

  var opts = Object.assign({}, messageInstance_defaultOptions, options, defaultNoConfigOptions, {
    type: type
  });
  return messageInstance_initInstall(opts);
};

var configGlobal = function configGlobal(options) {
  globalConfigOptions = Object.assign({}, globalConfigOptions, options);
  defaultNoConfigOptions.currentPosition = globalConfigOptions.top;
};

var messageInstance_exportObj = {};
Object.keys(instanceType).forEach(function (key) {
  messageInstance_exportObj[key] = function (options, duration) {
    if (key === 'config') {
      return configGlobal(options);
    }

    return messageInstance_message(key, options, duration);
  };
});
/* harmony default export */ var messageInstance = (messageInstance_exportObj);
// CONCATENATED MODULE: ./packages/message/index.js

/* harmony default export */ var packages_message = (messageInstance);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/notice/src/notice.vue?vue&type=template&id=3db4ffb2&
var noticevue_type_template_id_3db4ffb2_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":_vm.transitionName},on:{"after-leave":_vm.handleAfterLeave}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],class:[
             ("" + _vm.classPrefix),
              _vm.type && _vm.type !== 'open' && (_vm.classPrefix + "--" + _vm.type),
              _vm.type && _vm.type !== 'open' && (_vm.classPrefix + "--type"),
              _vm.isOnlyTitle && (_vm.classPrefix + "--only-title"),
              _vm.placement && (_vm.classPrefix + "--" + _vm.placement),
              _vm.background && (_vm.classPrefix + "--background") ],style:(_vm.noticeStyle)},[(_vm.type && _vm.type !== 'open')?_c('span',{class:[(_vm.classPrefix + "__icon")]},[_c('Icon',{attrs:{"type":_vm.iconType}})],1):_vm._e(),_vm._v(" "),(_vm.title)?_c('div',{class:[(_vm.classPrefix + "__title")]},[_vm._v("\n            "+_vm._s(_vm.title)+"\n        ")]):_vm._e(),_vm._v(" "),(_vm.content)?_c('div',{class:[(_vm.classPrefix + "__content")],domProps:{"innerHTML":_vm._s(_vm.content)}}):_vm._e(),_vm._v(" "),(_vm.closable)?_c('div',{class:[(_vm.classPrefix + "__close")],on:{"click":_vm.handleClose}},[_vm._t("close",[_c('Icon',{attrs:{"type":"close"}})])],2):_vm._e()])])}
var noticevue_type_template_id_3db4ffb2_staticRenderFns = []


// CONCATENATED MODULE: ./packages/notice/src/notice.vue?vue&type=template&id=3db4ffb2&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/notice/src/notice.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var noticevue_type_script_lang_js_ = ({
  name: 'Notice',
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-notice',
      placement: '',
      // 出现的位置
      type: 'open',
      // 默认值
      isOnlyTitle: false,
      // 是否只有标题
      title: '',
      content: '',
      duration: 0,
      background: false,
      closable: true,
      top: 85,
      currentPosition: 85,
      width: '350px',
      visible: false,
      closed: false,
      timer: null,
      onCloseComputed: function onCloseComputed() {},
      onClose: function onClose() {}
    };
  },
  computed: {
    noticeStyle: function noticeStyle() {
      var left = 0;
      var right = 0;
      var top = 0;
      var bottom = 0;
      var width = this.width;

      if (['topLeft', 'bottomLeft'].includes(this.placement)) {
        left = 0;
        right = 'auto';
      }

      if (['topRight', 'bottomRight'].includes(this.placement)) {
        left = 'auto';
        right = 0;
      }

      if (['bottomRight', 'bottomLeft'].includes(this.placement)) {
        bottom = this.currentPosition + 'px';
        top = 'auto';
      }

      if (['topRight', 'topLeft'].includes(this.placement)) {
        top = this.currentPosition + 'px';
        bottom = 'auto';
      }

      return {
        top: top,
        bottom: bottom,
        left: left,
        right: right,
        width: width
      };
    },
    transitionName: function transitionName() {
      var name = '';

      if (['topLeft', 'bottomLeft'].includes(this.placement)) {
        name = 'DrawerMoveLeft';
      } else {
        name = 'DrawerMoveRight';
      }

      return name;
    },
    iconType: function iconType() {
      var icon = '';

      switch (this.type) {
        case 'success':
          icon = !this.isOnlyTitle ? 'success' : 'success-fill';
          break;

        case 'error':
          icon = !this.isOnlyTitle ? 'error' : 'error-fill';
          break;

        case 'warning':
          icon = !this.isOnlyTitle ? 'warning' : 'warning-fill';
          break;

        case 'info':
          icon = !this.isOnlyTitle ? 'info' : 'info-fill';
          break;
      }

      return icon;
    }
  },
  components: {
    Icon: packages_icon
  },
  methods: {
    handleClose: function handleClose() {
      this.close();
    },
    show: function show() {
      this.visible = true;
      this.startTimer();
    },
    close: function close() {
      this.closed = true;
      this.visible = false;
      this.onCloseComputed(this.placement);
      this.onClose();
    },
    startTimer: function startTimer() {
      var _this = this;

      if (this.duration > 0) {
        this.timer = setTimeout(function () {
          !_this.closed && _this.close();
        }, this.duration);
      }
    },
    clearTimer: function clearTimer() {
      this.timer && clearTimeout(this.timer);
    },
    handleAfterLeave: function handleAfterLeave() {
      this.clearTimer();
      this.$el.parentNode.removeChild(this.$el);
    }
  }
});
// CONCATENATED MODULE: ./packages/notice/src/notice.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_noticevue_type_script_lang_js_ = (noticevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/notice/src/notice.vue





/* normalize component */

var notice_component = normalizeComponent(
  src_noticevue_type_script_lang_js_,
  noticevue_type_template_id_3db4ffb2_render,
  noticevue_type_template_id_3db4ffb2_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var notice = (notice_component.exports);
// CONCATENATED MODULE: ./packages/notice/noticeInstance.js





var NoticeInstance = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend(notice);
var NoticeInstances = {
  topLeft: [],
  topRight: [],
  bottomLeft: [],
  bottomRight: []
}; // 不可配置项的默认值

var noticeInstance_defaultNoConfigOptions = {
  type: 'open',
  // 值有success error warning info open 默认为open
  isOnlyTitle: false,
  // 是否只有title
  currentPosition: 85,
  // 当前notice距离顶部的top值 或者距离底部的bottom值
  noticeItemDis: 10,
  // 每个notice之间的间距
  onCloseComputed: function onCloseComputed() {} // 计算当前notice距离顶部的top值 或者距离底部的bottom值

}; // 提供全局配置的参数

var noticeInstance_globalConfigOptions = {
  position: 85,
  // 第一个notice距离顶部或者底部的距离
  duration: 4500,
  // 自动关闭的延时
  placement: 'topRight' // 出现的位置 topLeft topRight bottomLeft BottomRight 默认topRight

}; // 可配置项的默认值

var noticeInstance_defaultOptions = {
  title: '',
  content: '',
  duration: 4500,
  background: false,
  // 是否显示背景色
  placement: noticeInstance_globalConfigOptions.placement,
  onClose: function onClose() {} // 关闭的回调

};
var noticeInstance_instanceType = {
  open: 'open',
  config: 'config',
  success: 'success',
  error: 'error',
  warning: 'warning',
  info: 'info'
};

var noticeInstance_topComputed = function topComputed(placement) {
  var len = NoticeInstances[placement].length;
  var firstNoticeDisTop = noticeInstance_defaultNoConfigOptions.currentPosition;

  if (len > 1) {
    var NoticeHeight = 0;
    NoticeInstances[placement].forEach(function (item) {
      NoticeHeight += item.$el.offsetHeight;
    });
    return (len - 1) * noticeInstance_defaultNoConfigOptions.noticeItemDis + NoticeHeight + firstNoticeDisTop;
  }

  return firstNoticeDisTop;
};

var noticeInstance_closeAfter = function closeAfter(placement) {
  var currentIndex = NoticeInstances[placement].findIndex(function (item) {
    return item.duration !== 0;
  });
  var NoticeHeight = currentIndex > -1 ? NoticeInstances[placement][currentIndex].$el.offsetHeight : 0;
  currentIndex > -1 && NoticeInstances[placement].splice(currentIndex, 1);
  currentIndex = currentIndex === -1 ? NoticeInstances[placement].length : currentIndex;
  NoticeInstances[placement].forEach(function (item, index) {
    if (item.visible && index >= currentIndex) {
      item.currentPosition = item.currentPosition - (NoticeHeight + noticeInstance_defaultNoConfigOptions.noticeItemDis);
    } else if (!item.visible) {
      NoticeInstances[placement].splice(index, 1);
    }
  });
};

var noticeInstance_initInstall = function initInstall(opts) {
  var CreateInstance = new NoticeInstance({
    el: document.createElement('div')
  });
  document.body.appendChild(CreateInstance.$el);
  NoticeInstances[opts.placement].push(CreateInstance);
  Object.keys(opts).forEach(function (key) {
    if (key === 'currentPosition') {
      CreateInstance[key] = noticeInstance_topComputed(opts.placement);
    } else if (key === 'onCloseComputed') {
      CreateInstance[key] = function (placement) {
        return noticeInstance_closeAfter(placement);
      };
    } else {
      CreateInstance[key] = opts[key];
    }
  });
  CreateInstance.show();
  return CreateInstance;
};

var noticeInstance_notice = function notice(type, options) {
  // 如果单独没有配置duration，则默认按照全局配置生效
  if (!options.hasOwnProperty('duration')) {
    options.duration = noticeInstance_globalConfigOptions.duration;
  }

  var opts = Object.assign({
    placement: noticeInstance_globalConfigOptions.placement
  }, noticeInstance_defaultOptions, options, noticeInstance_defaultNoConfigOptions, {
    type: type,
    isOnlyTitle: !options.content
  });
  return noticeInstance_initInstall(opts);
};

var noticeInstance_configGlobal = function configGlobal(options) {
  noticeInstance_globalConfigOptions = Object.assign({}, noticeInstance_globalConfigOptions, options);
  noticeInstance_defaultOptions.placement = noticeInstance_globalConfigOptions.placement;
  noticeInstance_defaultNoConfigOptions.currentPosition = noticeInstance_globalConfigOptions.position;
};

var noticeInstance_exportObj = {};
Object.keys(noticeInstance_instanceType).forEach(function (key) {
  noticeInstance_exportObj[key] = function (options) {
    if (key === 'config') {
      return noticeInstance_configGlobal(options);
    }

    return noticeInstance_notice(key, options);
  };
});
/* harmony default export */ var noticeInstance = (noticeInstance_exportObj);
// CONCATENATED MODULE: ./packages/notice/index.js

/* harmony default export */ var packages_notice = (noticeInstance);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/popover/src/popover.vue?vue&type=template&id=12583974&
var popovervue_type_template_id_12583974_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"click-outside",rawName:"v-click-outside",value:(_vm.handleClose),expression:"handleClose"}],class:[("" + _vm.classPrefix)],on:{"mouseenter":_vm.handleMouseenter,"mouseleave":_vm.handleMouseleave}},[_c('transition',{attrs:{"name":_vm.transition}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],ref:"popper",class:[(_vm.classPrefix + "__popper")],on:{"mouseenter":_vm.handleMouseenter,"mouseleave":_vm.handleMouseleave}},[_c('div',{class:[(_vm.classPrefix + "__content")],style:(_vm.expandStyle)},[_c('div',{class:[(_vm.classPrefix + "__arrow")]}),_vm._v(" "),(_vm.confirm)?_c('div',{class:[(_vm.classPrefix + "__inner"), (_vm.classPrefix + "__confirm")]},[(_vm.showTitle)?_c('div',{class:[(_vm.classPrefix + "__title")]},[_vm._t("title",[_c('Icon',{attrs:{"type":"question-fill"}}),_vm._v(_vm._s(_vm.title))])],2):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__body")]},[_c('Button',{attrs:{"size":"mini","type":"text"},on:{"click":_vm.cancelClick}},[_vm._v(_vm._s(_vm.localeCancelText))]),_vm._v(" "),_c('Button',{attrs:{"size":"mini","type":"primary"},on:{"click":_vm.okClick}},[_vm._v(_vm._s(_vm.localeOkText))])],1)]):_c('div',{class:[(_vm.classPrefix + "__inner")]},[(_vm.showTitle)?_c('div',{class:[(_vm.classPrefix + "__title")]},[_vm._t("title",[_vm._v(_vm._s(_vm.title))])],2):_vm._e(),_vm._v(" "),_c('div',{class:[
                        (_vm.classPrefix + "__body"),
                        _vm.wordWrap && (_vm.classPrefix + "__body-wrap")
                    ]},[(!_vm.$slots.content)?_c('div',[_vm._v(_vm._s(_vm.content))]):_vm._e(),_vm._v(" "),_vm._t("content")],2)])])])]),_vm._v(" "),_c('div',{ref:"reference",class:[(_vm.classPrefix + "__target")],on:{"click":_vm.handleClick}},[_vm._t("default")],2)],1)}
var popovervue_type_template_id_12583974_staticRenderFns = []


// CONCATENATED MODULE: ./packages/popover/src/popover.vue?vue&type=template&id=12583974&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/popover/src/popover.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//







/* harmony default export */ var popovervue_type_script_lang_js_ = ({
  name: 'Popover',
  mixins: [popper, mixins_locale],
  directives: {
    clickOutside: v_click_outside_x_esm_directive
  },
  props: {
    placement: {
      type: String,
      default: 'top'
    },
    trigger: {
      type: String,
      default: 'click',
      validator: function validator(value) {
        return ['hover', 'click', 'focus'].includes(value);
      }
    },
    title: String,
    content: String,
    width: [String, Number],
    wordWrap: Boolean,
    disabled: Boolean,
    transition: {
      type: String,
      default: 'fade'
    },
    confirm: Boolean,
    cancelText: {
      type: String,
      default: ''
    },
    okText: {
      type: String,
      default: ''
    },
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: function _default() {
        return false;
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-popover',
      hoverTimer: null,
      // hover延时
      isInput: false,
      popperHover: false
    };
  },
  computed: {
    showTitle: function showTitle() {
      return this.title || this.$slots.title;
    },
    expandStyle: function expandStyle() {
      if (this.width === undefined) return {};
      var width = this.width.toString().includes('px') ? this.width : this.width + 'px';
      return Object.assign({}, {
        width: width
      });
    },
    localeCancelText: function localeCancelText() {
      if (!this.cancelText) {
        return this.t('m.popover.cancelText');
      } else {
        return this.cancelText;
      }
    },
    localeOkText: function localeOkText() {
      if (!this.okText) {
        return this.t('m.popover.okText');
      } else {
        return this.okText;
      }
    }
  },
  components: {
    Icon: packages_icon,
    Button: packages_button
  },
  created: function created() {},
  mounted: function mounted() {
    var _this = this;

    if (this.trigger === 'focus') {
      this.$nextTick(function () {
        var $children = _this.getReferenceInputChildren();

        if ($children) {
          _this.isInput = true;
          on($children, 'focus', _this.handleFocus);
          on($children, 'blur', _this.handleBlur);
        } else {
          on(_this.$refs.reference, 'mousedown', function () {
            return _this.handleFocus(false);
          });
          on(document, 'mouseup', function () {
            return _this.handleBlur(false);
          });
        }
      });
    }

    this.renderToHtml();
  },
  beforeDestroy: function beforeDestroy() {
    var _this2 = this;

    if (this.hoverTimer) clearTimeout(this.hoverTimer);
    var $children = this.getReferenceInputChildren();

    if ($children) {
      off($children, 'focus', this.handleFocus);
      off($children, 'blur', this.handleBlur);
    } else {
      off(this.$refs.reference, 'mousedown', function () {
        return _this2.handleFocus(false);
      });
      off(document, 'mouseup', function () {
        return _this2.handleBlur(false);
      });
    }

    this.renderHtml && typeof this.renderHtml !== 'boolean' && this.renderHtml.removeChild(this.$refs.popper);
  },
  methods: {
    handleClick: function handleClick() {
      if (this.disabled) return;

      if (this.trigger !== 'click') {
        return false;
      }

      this.visible = !this.visible;
    },
    handleMouseenter: function handleMouseenter() {
      var _this3 = this;

      if (this.disabled) return;
      this.popperHover = true;

      if (this.trigger !== 'hover') {
        return false;
      }

      if (this.hoverTimer) clearTimeout(this.hoverTimer);
      this.hoverTimer = setTimeout(function () {
        _this3.visible = true;
      }, 100);
    },
    handleMouseleave: function handleMouseleave() {
      var _this4 = this;

      if (this.disabled) return;
      this.popperHover = false;

      if (this.trigger !== 'hover') {
        return false;
      }

      if (this.hoverTimer) {
        clearTimeout(this.hoverTimer);
        this.hoverTimer = setTimeout(function () {
          _this4.visible = false;
        }, 100);
      }
    },
    handleClose: function handleClose() {
      if (this.disabled) return;

      if (this.trigger !== 'click') {
        return false;
      }

      if (this.popperHover) {
        return false;
      }

      this.visible = false;
    },
    cancelClick: function cancelClick() {
      this.visible = false;
      this.$emit('cancel');
    },
    okClick: function okClick() {
      this.visible = false;
      this.$emit('ok');
    },
    getReferenceInputChildren: function getReferenceInputChildren() {
      var $input = this.$refs.reference.querySelectorAll('input');
      var $textarea = this.$refs.reference.querySelectorAll('textarea');
      var $children = null;

      if ($input.length) {
        $children = $input[0];
      } else if ($textarea.length) {
        $children = $textarea[0];
      }

      return $children;
    },
    handleFocus: function handleFocus() {
      var isInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
      if (this.disabled) return;

      if (this.trigger !== 'focus' || this.isInput && !isInput) {
        return false;
      }

      this.visible = true;
    },
    handleBlur: function handleBlur() {
      var isInput = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;

      if (this.trigger !== 'focus' || this.isInput && !isInput) {
        return false;
      }

      this.visible = false;
    },
    renderToHtml: function renderToHtml() {
      if (typeof this.renderHtml === 'boolean' && this.renderHtml === false || !this.renderHtml) return;

      if (typeof this.renderHtml === 'boolean' && this.renderHtml === true) {
        document.body.appendChild(this.$refs.popper);
      } else {
        this.renderHtml.appendChild(this.$refs.popper);
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/popover/src/popover.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_popovervue_type_script_lang_js_ = (popovervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/popover/src/popover.vue





/* normalize component */

var popover_component = normalizeComponent(
  src_popovervue_type_script_lang_js_,
  popovervue_type_template_id_12583974_render,
  popovervue_type_template_id_12583974_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var popover = (popover_component.exports);
// CONCATENATED MODULE: ./packages/popover/index.js

/* harmony default export */ var packages_popover = (popover);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/badge/src/badge.vue?vue&type=template&id=0535e744&
var badgevue_type_template_id_0535e744_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
    ("" + _vm.classPrefix),
    _vm.dot && (_vm.classPrefix + "--dot"),
    _vm.status && (_vm.classPrefix + "--status " + _vm.classPrefix + "--status-" + _vm.status),
    _vm.alone && (_vm.classPrefix + "--alone"),
    _vm.isColor && (_vm.classPrefix + "--" + _vm.color)
]},[(!_vm.status)?_vm._t("default"):_vm._e(),_vm._v(" "),(_vm.supShow)?_c('sup',{class:[(_vm.classPrefix + "__sup")],style:(_vm.supStyle),attrs:{"title":_vm.supTitle}},[_vm._v(_vm._s(_vm.supText))]):_vm._e(),_vm._v(" "),(_vm.status)?_c('span',{class:[(_vm.classPrefix + "__status-text")]},[_vm._v(_vm._s(_vm.text))]):_vm._e()],2)}
var badgevue_type_template_id_0535e744_staticRenderFns = []


// CONCATENATED MODULE: ./packages/badge/src/badge.vue?vue&type=template&id=0535e744&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/badge/src/badge.vue?vue&type=script&lang=js&








function badgevue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function badgevue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { badgevue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { badgevue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//

/* harmony default export */ var badgevue_type_script_lang_js_ = ({
  name: 'Badge',
  props: {
    dot: Boolean,
    count: [Number, String],
    overflowCount: {
      type: Number,
      default: 99
    },
    showZero: Boolean,
    // 默认0时不展示
    text: String,
    status: {
      type: String,
      validator: function validator(value) {
        return ['success', 'error', 'warning', 'processing', 'default'].includes(value);
      }
    },
    color: String,
    offset: Array,
    title: String
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-badge'
    };
  },
  computed: {
    // 状态点 或者 上标的显示
    supShow: function supShow() {
      return !!this.status || this.showZero || parseFloat(this.count) !== 0;
    },
    supText: function supText() {
      var text = this.count !== undefined && this.count;
      if (this.dot || this.status) text = '';else if (this.text) text = this.text;else if (parseFloat(this.count) > this.overflowCount) text = this.overflowCount + '+';
      return text;
    },
    isColor: function isColor() {
      if (this.status) return false;
      return ['primary', 'success', 'error', 'info', 'warning'].includes(this.color);
    },
    supStyle: function supStyle() {
      var style = {};

      if (!this.isColor) {
        style = {
          'background-color': this.color
        };
      }

      if (Array.isArray(this.offset) && this.offset.length) {
        var x = parseFloat(this.offset[0]);
        var y = parseFloat(this.offset[1]);
        style = badgevue_type_script_lang_js_objectSpread(badgevue_type_script_lang_js_objectSpread({}, style), {}, {
          'margin-top': y + 'px',
          'margin-right': x + 'px'
        });
      }

      return style;
    },
    alone: function alone() {
      return !this.$slots.default;
    },
    supTitle: function supTitle() {
      if (this.dot || this.status) return '';
      return this.title || this.text || parseFloat(this.count);
    }
  }
});
// CONCATENATED MODULE: ./packages/badge/src/badge.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_badgevue_type_script_lang_js_ = (badgevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/badge/src/badge.vue





/* normalize component */

var badge_component = normalizeComponent(
  src_badgevue_type_script_lang_js_,
  badgevue_type_template_id_0535e744_render,
  badgevue_type_template_id_0535e744_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var badge = (badge_component.exports);
// CONCATENATED MODULE: ./packages/badge/index.js

/* harmony default export */ var packages_badge = (badge);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/alert/src/alter.vue?vue&type=template&id=5d51f6c4&
var altervue_type_template_id_5d51f6c4_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":_vm.transition}},[(!_vm.closed)?_c('div',{class:[
             ("" + _vm.classPrefix),
             _vm.type && (_vm.classPrefix + "--" + _vm.type),
             _vm.isDescription && (_vm.classPrefix + "--with-des"),
             _vm.showIcon && (_vm.classPrefix + "--with-icon"),
             _vm.theme && (_vm.classPrefix + "--" + _vm.theme)
         ]},[(_vm.showIcon)?_c('span',{class:[(_vm.classPrefix + "__icon")]},[_vm._t("icon",[_c('Icon',{attrs:{"type":_vm.iconType}})])],2):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__message")]},[_vm._t("default")],2),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__description")]},[_vm._t("description")],2),_vm._v(" "),(_vm.closable)?_c('span',{class:[(_vm.classPrefix + "__close")],on:{"click":_vm.handlerClose}},[_vm._t("close",[_c('Icon',{attrs:{"type":"close"}})])],2):_vm._e()]):_vm._e()])}
var altervue_type_template_id_5d51f6c4_staticRenderFns = []


// CONCATENATED MODULE: ./packages/alert/src/alter.vue?vue&type=template&id=5d51f6c4&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/alert/src/alter.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var altervue_type_script_lang_js_ = ({
  name: 'Alter',
  props: {
    type: {
      type: String,
      default: 'info',
      validator: function validator(value) {
        return ['success', 'info', 'warning', 'error'].includes(value);
      }
    },
    transition: {
      type: String,
      default: 'AlterFade'
    },
    showIcon: Boolean,
    closable: Boolean,
    theme: {
      type: String,
      default: 'light',
      validator: function validator(value) {
        return ['light', 'dark'].includes(value);
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-alter',
      closed: false
    };
  },
  computed: {
    isDescription: function isDescription() {
      return this.$slots.description;
    },
    iconType: function iconType() {
      var icon = '';

      switch (this.type) {
        case 'success':
          icon = this.isDescription ? 'success' : 'success-fill';
          break;

        case 'error':
          icon = this.isDescription ? 'error' : 'error-fill';
          break;

        case 'warning':
          icon = this.isDescription ? 'warning' : 'warning-fill';
          break;

        default:
          icon = this.isDescription ? 'info' : 'info-fill';
          break;
      }

      return icon;
    }
  },
  components: {
    Icon: packages_icon
  },
  methods: {
    handlerClose: function handlerClose(event) {
      this.closed = true;
      this.$emit('close', event);
    }
  }
});
// CONCATENATED MODULE: ./packages/alert/src/alter.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_altervue_type_script_lang_js_ = (altervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/alert/src/alter.vue





/* normalize component */

var alter_component = normalizeComponent(
  src_altervue_type_script_lang_js_,
  altervue_type_template_id_5d51f6c4_render,
  altervue_type_template_id_5d51f6c4_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var alter = (alter_component.exports);
// CONCATENATED MODULE: ./packages/alert/index.js

/* harmony default export */ var packages_alert = (alter);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/card/src/card.vue?vue&type=template&id=8c75bc16&
var cardvue_type_template_id_8c75bc16_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
            ("" + _vm.classPrefix),
            _vm.noHover && (_vm.classPrefix + "--no-hover"),
            _vm.noBorder && (_vm.classPrefix + "--no-border")
        ]},[(_vm.showHeader)?_c('div',{class:[(_vm.classPrefix + "__header")]},[_vm._t("header",[_c('div',{class:[(_vm.classPrefix + "__header-title")],attrs:{"title":_vm.title}},[_vm._v(_vm._s(_vm.title))]),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__header-extra")]},[_vm._t("extra")],2)])],2):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__body")],style:(_vm.bodyStyle)},[_vm._t("default")],2),_vm._v(" "),(_vm.showFooter)?_c('div',{class:[(_vm.classPrefix + "__footer")]},[_vm._t("footer")],2):_vm._e()])}
var cardvue_type_template_id_8c75bc16_staticRenderFns = []


// CONCATENATED MODULE: ./packages/card/src/card.vue?vue&type=template&id=8c75bc16&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/card/src/card.vue?vue&type=script&lang=js&

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//

/* harmony default export */ var cardvue_type_script_lang_js_ = ({
  name: 'Card',
  props: {
    title: String,
    noBorder: Boolean,
    noHover: Boolean,
    bodyPadding: [String, Number]
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-card'
    };
  },
  computed: {
    showHeader: function showHeader() {
      return this.title || this.$slots.header;
    },
    showFooter: function showFooter() {
      return this.$slots.footer;
    },
    bodyStyle: function bodyStyle() {
      return {
        padding: parseFloat(this.bodyPadding) + 'px'
      };
    }
  }
});
// CONCATENATED MODULE: ./packages/card/src/card.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_cardvue_type_script_lang_js_ = (cardvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/card/src/card.vue





/* normalize component */

var card_component = normalizeComponent(
  src_cardvue_type_script_lang_js_,
  cardvue_type_template_id_8c75bc16_render,
  cardvue_type_template_id_8c75bc16_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var card = (card_component.exports);
// CONCATENATED MODULE: ./packages/card/index.js

/* harmony default export */ var packages_card = (card);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/drawer/src/drawer.vue?vue&type=template&id=20f6f206&
var drawervue_type_template_id_20f6f206_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('transition',{attrs:{"name":"fade"}},[(_vm.coverShow)?_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],class:[(_vm.classPrefix + "__cover")],on:{"click":_vm.handleCover}}):_vm._e()]),_vm._v(" "),_c('div',{ref:"drawerWrap",class:[
             (_vm.classPrefix + "__wrap"),
             !_vm.wrapShow && (_vm.classPrefix + "__hidden")
         ],on:{"click":_vm.handleWrapClick}},[_c('transition',{attrs:{"name":_vm.drawerTransition}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],ref:"drawer",class:[
                     ("" + _vm.classPrefix),
                     _vm.placement && (_vm.classPrefix + "__" + _vm.placement)
                 ],style:(_vm.drawerStyle)},[_c('div',{class:[(_vm.classPrefix + "__content")]},[(_vm.closable)?_c('div',{class:[(_vm.classPrefix + "__close")],on:{"click":_vm.handleClose}},[_vm._t("close",[_c('Icon',{attrs:{"type":"close"}})])],2):_vm._e(),_vm._v(" "),(_vm.showHead)?_c('div',{ref:"drawerHeader",class:[(_vm.classPrefix + "__header")]},[_vm._t("header",[_vm._v(_vm._s(_vm.title))])],2):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__body")],style:(_vm.bodyStyle)},[_c('scroll',{attrs:{"size":"small"}},[_c('div',{class:[(_vm.classPrefix + "__body-content")]},[_vm._t("default")],2)])],1),_vm._v(" "),(!_vm.footerHide)?_c('div',{ref:"drawerFooter",class:[(_vm.classPrefix + "__footer")]},[_vm._t("footer",[(_vm.localCancelText)?_c('Button',{on:{"click":_vm.handleButtonCancel}},[_vm._v(_vm._s(_vm.localCancelText)+"\n                            ")]):_vm._e(),_vm._v(" "),(_vm.localOkText)?_c('Button',{attrs:{"type":"primary","loading":_vm.okButtonLoading},on:{"click":_vm.handleButtonOk}},[_vm._v(_vm._s(_vm.localOkText)+"\n                            ")]):_vm._e()])],2):_vm._e()])])])],1)],1)}
var drawervue_type_template_id_20f6f206_staticRenderFns = []


// CONCATENATED MODULE: ./packages/drawer/src/drawer.vue?vue&type=template&id=20f6f206&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/drawer/src/drawer.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//






/* harmony default export */ var drawervue_type_script_lang_js_ = ({
  name: 'Drawer',
  mixins: [mixins_locale],
  props: {
    width: {
      type: [String, Number],
      default: 260
    },
    height: {
      type: [String, Number],
      default: 260
    },
    // 只在top bottom时有效
    placement: {
      type: String,
      default: 'right',
      validator: function validator(value) {
        return ['left', 'right', 'bottom', 'top'].includes(value);
      }
    },
    value: Boolean,
    footerHide: Boolean,
    closable: {
      type: Boolean,
      default: true
    },
    // 是否显示右上角关闭按钮
    cancelText: String,
    okText: String,
    styles: Object,
    // 中间层的样式
    title: String,
    loading: Boolean,
    coverClosable: {
      type: Boolean,
      default: true
    },
    coverShow: {
      type: Boolean,
      default: true
    },
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: function _default() {
        return true;
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-drawer',
      visible: this.value,
      showHead: true,
      wrapShow: false,
      okButtonLoading: false,
      observer: null,
      bodyStyle: {},
      timer: null
    };
  },
  computed: {
    localOkText: function localOkText() {
      return this.okText === null ? null : this.okText ? this.okText : this.t('m.drawer.okText');
    },
    localCancelText: function localCancelText() {
      return this.cancelText === null ? null : this.cancelText ? this.cancelText : this.t('m.drawer.cancelText');
    },
    drawerStyle: function drawerStyle() {
      var style = {};
      var widthPar = parseFloat(this.width);
      var width = this.width.toString().includes('%') ? "".concat(widthPar, "%") : "".concat(widthPar, "px");
      width = ['top', 'bottom'].includes(this.placement) ? '100%' : width;
      var height = ['top', 'bottom'].includes(this.placement) ? parseFloat(this.height) + 'px' : '100%';
      var styles = this.styles ? this.styles : {};
      Object.assign(style, styles, {
        width: width,
        height: height
      });
      return style;
    },
    drawerTransition: function drawerTransition() {
      var transition;

      switch (this.placement) {
        case 'left':
          transition = 'DrawerMoveLeft';
          break;

        case 'top':
          transition = 'DrawerMoveTop';
          break;

        case 'bottom':
          transition = 'DrawerMoveBottom';
          break;

        default:
          transition = 'DrawerMoveRight';
          break;
      }

      return transition;
    }
  },
  components: {
    Button: packages_button,
    Scroll: packages_scroll,
    Icon: packages_icon
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.renderToHtml();

      _this.setShowHead();

      _this.observer = element_resize_detector_default()();

      _this.observer.listenTo(_this.$refs.drawerWrap, _this.drawerBodyResize);
    });
  },
  beforeDestroy: function beforeDestroy() {
    this.observer && this.observer.removeListener(this.$refs.drawerWrap, this.drawerBodyResize);
    this.timer && clearTimeout(this.timer);
  },
  watch: {
    value: function value(newVal) {
      this.visible = newVal;
    },
    visible: function visible(newVal) {
      var _this2 = this;

      if (!newVal) {
        this.timer = setTimeout(function () {
          _this2.wrapShow = false;
        }, 300);
      } else {
        this.timer && clearTimeout(this.timer);
        this.wrapShow = true;
        this.$nextTick(function () {
          _this2.drawerBodyResize();
        });
      }
    }
  },
  methods: {
    renderToHtml: function renderToHtml() {
      if (typeof this.renderHtml === 'boolean' && this.renderHtml === false || !this.renderHtml) return;

      if (typeof this.renderHtml === 'boolean' && this.renderHtml === true) {
        document.body.appendChild(this.$el);
      } else {
        this.renderHtml.appendChild(this.$el);
      }
    },
    drawerBodyResize: function drawerBodyResize() {
      if (!this.$refs.drawer) return;
      var drawerHeight = this.$refs.drawer.offsetHeight;
      var drawerHeaderHeight = this.showHead && this.$refs.drawerHeader.offsetHeight;
      var drawerFooterHeight = !this.footerHide && this.$refs.drawerFooter.offsetHeight;
      var bodyHeight = 'auto';
      bodyHeight = drawerHeight - drawerHeaderHeight - drawerFooterHeight + 'px';
      this.bodyStyle = {
        height: bodyHeight
      };
    },
    setShowHead: function setShowHead() {
      this.showHead = true;

      if (!this.$slots.header && !this.title) {
        this.showHead = false;
      }
    },
    handleClose: function handleClose() {
      this.visible = false;
      this.$emit('input', false);
      this.$emit('cancel');
    },
    handleButtonCancel: function handleButtonCancel() {
      this.handleClose();
    },
    handleButtonOk: function handleButtonOk() {
      if (this.loading) {
        this.okButtonLoading = true;
      } else {
        this.visible = false;
        this.$emit('input', false);
      }

      this.$emit('ok');
    },
    handleWrapClick: function handleWrapClick(event) {
      var className = event.target.getAttribute('class');
      className && className.indexOf("".concat(this.classPrefix, "__wrap")) > -1 && this.handleCover();
    },
    handleCover: function handleCover() {
      if (this.coverClosable) {
        this.handleClose();
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/drawer/src/drawer.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_drawervue_type_script_lang_js_ = (drawervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/drawer/src/drawer.vue





/* normalize component */

var drawer_component = normalizeComponent(
  src_drawervue_type_script_lang_js_,
  drawervue_type_template_id_20f6f206_render,
  drawervue_type_template_id_20f6f206_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var drawer = (drawer_component.exports);
// CONCATENATED MODULE: ./packages/drawer/index.js

/* harmony default export */ var packages_drawer = (drawer);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table.vue?vue&type=template&id=0c10749d&
var tablevue_type_template_id_0c10749d_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        _vm.border && (_vm.classPrefix + "--border"),
        _vm.size && (_vm.classPrefix + "--" + _vm.size),
        !_vm.ready && (_vm.classPrefix + "--hide") ],style:(_vm.tableStyle)},[_c('div',{ref:"tableWrap",class:[(_vm.classPrefix + "__wrap")]},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.showHeader),expression:"showHeader"}],ref:"header",class:[(_vm.classPrefix + "__head")]},[_c('table-head',{attrs:{"columns":_vm.headCloneColumns,"colgroup-columns":_vm.bodyCloneColumns,"data":_vm.cloneData,"columns-width":_vm.columnsWidth,"head-style":_vm.headStyle}})],1),_vm._v(" "),_c('div',{ref:"body",class:[
                 (_vm.classPrefix + "__body"),
                (!_vm.cloneData || !_vm.cloneData.length) && (_vm.classPrefix + "__body-empty")
             ],style:(_vm.bodyWrapStyle),on:{"scroll":_vm.bodyScrollHandle}},[_c('table-body',{ref:"tbody",attrs:{"columns":_vm.bodyCloneColumns,"colgroup-columns":_vm.bodyCloneColumns,"data":_vm.cloneData,"columns-width":_vm.columnsWidth,"body-style":_vm.bodyStyle}})],1),_vm._v(" "),(_vm.isFixedLeft)?_c('table-fixed',{ref:"fixedTableLeft",attrs:{"fixed":"left","head-columns":_vm.headCloneColumns,"body-columns":_vm.bodyCloneColumns,"colgroup-columns":_vm.bodyCloneColumns,"data":_vm.cloneData,"show-header":_vm.showHeader,"columns-width":_vm.columnsWidth,"head-style":_vm.headStyle,"body-style":_vm.bodyStyle,"bodyWrapStyle":_vm.bodyWrapStyle}}):_vm._e(),_vm._v(" "),(_vm.isFixedRight)?_c('table-fixed',{ref:"fixedTableRight",attrs:{"fixed":"right","head-columns":_vm.fixedRightHeadCloneColumns,"body-columns":_vm.fixedRightBodyCloneColumns,"colgroup-columns":_vm.fixedRightBodyCloneColumns,"data":_vm.cloneData,"show-header":_vm.showHeader,"columns-width":_vm.columnsWidth,"head-style":_vm.headStyle,"bodyWrapStyle":_vm.bodyWrapStyle,"body-style":_vm.bodyStyle}}):_vm._e(),_vm._v(" "),(_vm.$slots.footer)?_c('div',{ref:"footer",class:[(_vm.classPrefix + "__footer")]},[_vm._t("footer")],2):_vm._e()],1),_vm._v(" "),_c('loading',{attrs:{"fix":"","visible":_vm.loading}})],1)}
var tablevue_type_template_id_0c10749d_staticRenderFns = []


// CONCATENATED MODULE: ./packages/table/src/table.vue?vue&type=template&id=0c10749d&

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.string.fixed.js
var es6_string_fixed = __webpack_require__(120);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.array.sort.js
var es6_array_sort = __webpack_require__(122);

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-head.vue?vue&type=template&id=2892d471&
var table_headvue_type_template_id_2892d471_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',{class:[("" + _vm.classPrefix)],style:(_vm.tableHeadStyle),attrs:{"cellspacing":"0","cellpadding":"0","border":"0"}},[_c('colgroup',[_vm._l((_vm.colgroupColumns),function(column){return _c('col',{key:column.__id,attrs:{"width":_vm.setColWidth(column)}})}),_vm._v(" "),(_vm.$parent.showVerticalScrollBar)?_c('col',{attrs:{"width":_vm.$parent.scrollBarWidth}}):_vm._e()],2),_vm._v(" "),_c('thead',[_vm._l((_vm.columns),function(row,index){return [_c('table-tr',{key:index,attrs:{"type":"head","row":row[0]}},[_vm._l((row),function(column){return _c('th',{key:column.__id,class:[
                        _vm.fixed && column.fixed !== _vm.fixed && 'is-hidden',
                        _vm.sortType.includes(column.__sort) && column.__sort && (_vm.classPrefix + "__sort"),
                        column.className
                    ],attrs:{"rowspan":column.__rowSpan,"colspan":column.__colSpan},on:{"click":function($event){$event.stopPropagation();return _vm.sortHandle(column)}}},[_c('table-head-cell',{attrs:{"column":column,"sortType":_vm.sortType}})],1)}),_vm._v(" "),(_vm.$parent.showVerticalScrollBar)?_c('th',{class:[(_vm.classPrefix + "__scroll-th")],attrs:{"rowspan":_vm.columns.length}}):_vm._e()],2)]})],2)])}
var table_headvue_type_template_id_2892d471_staticRenderFns = []


// CONCATENATED MODULE: ./packages/table/src/table-head.vue?vue&type=template&id=2892d471&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-tr.vue?vue&type=template&id=072f1f46&
var table_trvue_type_template_id_072f1f46_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('tr',{class:[
        ("" + _vm.classPrefix),
        _vm.row.__isHover && (_vm.classPrefix + "--hover"),
        _vm.row.__isStripe && (_vm.classPrefix + "--stripe-" + (_vm.row.__index % 2)),
        _vm.className ]},[_vm._t("default")],2)}
var table_trvue_type_template_id_072f1f46_staticRenderFns = []


// CONCATENATED MODULE: ./packages/table/src/table-tr.vue?vue&type=template&id=072f1f46&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-tr.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//

/* harmony default export */ var table_trvue_type_script_lang_js_ = ({
  name: 'TableTr',
  inject: ['tableRoot'],
  props: {
    type: {
      type: String,
      default: 'body'
    },
    row: {
      type: Object,
      default: function _default() {
        return {};
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-table-row'
    };
  },
  computed: {
    className: function className() {
      if (this.type === 'body') {
        return this.tableRoot.getRowClassName(this.row, this.row.__index);
      }

      return '';
    }
  }
});
// CONCATENATED MODULE: ./packages/table/src/table-tr.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_table_trvue_type_script_lang_js_ = (table_trvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/table/src/table-tr.vue





/* normalize component */

var table_tr_component = normalizeComponent(
  src_table_trvue_type_script_lang_js_,
  table_trvue_type_template_id_072f1f46_render,
  table_trvue_type_template_id_072f1f46_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var table_tr = (table_tr_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-head-cell.vue?vue&type=template&id=7119832f&
var table_head_cellvue_type_template_id_7119832f_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
             ("" + _vm.classPrefix),
             ("" + _vm.classPrefixCell),
             _vm.column.align && (_vm.classPrefixCell + "--" + (_vm.column.align)),
             (_vm.column.ellipsis || _vm.column.tooltip) && (_vm.classPrefixCell + "--ellipsis") ]},[(_vm.renderType === 'selection')?[_c('Checkbox',{class:[(_vm.classPrefixCell + "__checkbox")],attrs:{"disabled":_vm.column.__isDisabled},on:{"change":_vm.checkboxChange},model:{value:(_vm.column.__isChecked),callback:function ($$v) {_vm.$set(_vm.column, "__isChecked", $$v)},expression:"column.__isChecked"}})]:_vm._e(),_vm._v(" "),(_vm.renderType === 'index')?[_vm._v("\n            #\n        ")]:_vm._e(),_vm._v(" "),(_vm.renderType === 'normal')?[(_vm.column.slotHead)?_c('table-slot-head',{attrs:{"column":_vm.column,"slot-name":_vm.column.slotHead}}):[_vm._v(_vm._s(_vm.column.title))],_vm._v(" "),(_vm.column.sort && _vm.sortType.includes(_vm.column.sort))?_c('span',{class:[(_vm.classPrefixCell + "__icon"), (_vm.classPrefix + "__sort")]},[_c('Icon',{class:[
                          _vm.column.__sort === 'ascend' && (_vm.classPrefixCell + "__icon-active")
                      ],attrs:{"type":"care-up"},on:{"click":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.sortHandle('ascend')}}}),_vm._v(" "),_c('Icon',{class:[_vm.column.__sort === 'descend' && (_vm.classPrefixCell + "__icon-active")],attrs:{"type":"care-down"},on:{"click":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.sortHandle('descend')}}})],1):_vm._e(),_vm._v(" "),(_vm.column.filterSlot || (_vm.column.filters && Array.isArray(_vm.column.filters)))?_c('span',{directives:[{name:"click-outside",rawName:"v-click-outside.capture",value:(_vm.handleClickOutside),expression:"handleClickOutside",modifiers:{"capture":true}}],class:[(_vm.classPrefixCell + "__icon"), (_vm.classPrefix + "__filter")]},[_c('span',{ref:"reference"},[_c('Icon',{class:[
                              _vm.column.__isFilterChecked && (_vm.classPrefixCell + "__icon-active")
                          ],attrs:{"type":"filter-fill"},on:{"click":function($event){$event.stopPropagation();return _vm.filterShow($event)}}})],1),_vm._v(" "),_c('transition',{attrs:{"name":"slideUp"}},[_c('Drop',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],ref:"dropDown",attrs:{"reference":_vm.$refs.reference,"placement":_vm.column.placement || 'bottom',"render-html":_vm.renderHtml,"min-width":false},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:"visible"}},[(!_vm.column.filterMultiple)?_c('div',{class:[(_vm.classPrefix + "__filter-list")]},[_c('div',{class:[
                                 (_vm.classPrefix + "__filter-item"),
                                 !_vm.column.__filterCheckedValues.length && (_vm.classPrefix + "__filter-item-active")
                             ],on:{"click":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.filterHandle()}}},[_vm._v(_vm._s(_vm.t('m.table.all')))]),_vm._v(" "),_vm._l((_vm.column.filters),function(item){return _c('div',{key:item.value,class:[
                                 (_vm.classPrefix + "__filter-item"),
                                 _vm.column.__filterCheckedValues.includes(item.value) && (_vm.classPrefix + "__filter-item-active")
                             ],on:{"click":function($event){if($event.target !== $event.currentTarget){ return null; }return _vm.filterHandle(item)}}},[_vm._v(_vm._s(item.label))])})],2):(_vm.column.filterMultiple)?_c('div',{class:[(_vm.classPrefix + "__filter-list")]},[_c('CheckboxGroup',{model:{value:(_vm.filterMultipleValue),callback:function ($$v) {_vm.filterMultipleValue=$$v},expression:"filterMultipleValue"}},_vm._l((_vm.column.filters),function(item){return _c('div',{key:item.value,class:[
                                     (_vm.classPrefix + "__filter-item"),
                                     _vm.column.__filterCheckedValues.includes(item.value) && (_vm.classPrefix + "__filter-item-active")
                                 ]},[_c('Checkbox',{attrs:{"label":item.value}},[_vm._v(_vm._s(item.label))])],1)}),0),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__filter-footer")]},[_c('Button',{attrs:{"size":"mini","type":"primary"},on:{"click":_vm.filterMultiple}},[_vm._v(_vm._s(_vm.t('m.table.filter')))]),_vm._v(" "),_c('Button',{attrs:{"size":"mini"},on:{"click":_vm.resetFilterMultiple}},[_vm._v(_vm._s(_vm.t('m.table.reset')))])],1)],1):_vm._e()])],1)],1):_vm._e()]:_vm._e()],2)}
var table_head_cellvue_type_template_id_7119832f_staticRenderFns = []


// CONCATENATED MODULE: ./packages/table/src/table-head-cell.vue?vue&type=template&id=7119832f&

// CONCATENATED MODULE: ./packages/table/src/table-slot-head.js
/* harmony default export */ var table_slot_head = ({
  name: 'TableSlotHead',
  functional: true,
  inject: ['tableRoot'],
  props: {
    column: Object,
    slotName: String
  },
  render: function render(h, context) {
    var r = context.injections.tableRoot.$scopedSlots[context.props.slotName];
    var className = context.data.class || {};

    if (r) {
      return h('div', {
        class: className
      }, r({
        column: context.props.column
      }));
    }

    return null;
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-head-cell.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//









/* harmony default export */ var table_head_cellvue_type_script_lang_js_ = ({
  name: 'TableHeadCell',
  directives: {
    clickOutside: v_click_outside_x_esm_directive
  },
  mixins: [mixins_locale],
  props: {
    column: Object,
    sortType: Array
  },
  inject: ['tableRoot'],
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-table-head-cell',
      classPrefixCell: config.classPrefix + '-table-cell',
      renderType: 'normal',
      isDefaultSort: null,
      // 初始化时默认的排序方式
      visible: false,
      filterMultipleValue: [],
      renderHtml: true
    };
  },
  computed: {},
  components: {
    Checkbox: packages_checkbox,
    CheckboxGroup: packages_checkbox_group,
    Button: packages_button,
    Icon: packages_icon,
    Drop: drop,
    tableSlotHead: table_slot_head
  },
  mounted: function mounted() {
    this.setRenderType();
  },
  methods: {
    setRenderType: function setRenderType() {
      var type = this.column.type;

      switch (type) {
        case 'selection':
          this.renderType = 'selection';
          break;

        case 'index':
          this.renderType = 'index';
          break;

        default:
          this.renderType = 'normal';
          break;
      }
    },
    checkboxChange: function checkboxChange(value) {
      this.tableRoot.selectAll(value);
    },
    sortHandle: function sortHandle(type) {
      this.tableRoot.sortHandle(this.column, type);
    },
    filterShow: function filterShow() {
      this.visible = !this.visible;
    },
    handleClickOutside: function handleClickOutside(event) {
      if (this.visible && (this.column.filterMultiple || this.column.filterSlot)) {
        if (this.renderHtml !== false) {
          var $el = this.$refs.dropDown.$el;

          if ($el === event.target || $el.contains(event.target)) {
            return;
          }
        }
      }

      this.closeDropDownPane(false);
    },
    closeDropDownPane: function closeDropDownPane(visible) {
      this.visible = visible;
    },
    filterHandle: function filterHandle(filterItem) {
      this.tableRoot.filterHandle('single', this.column, filterItem ? [filterItem.value] : []);
      this.visible = false;
    },
    filterMultiple: function filterMultiple() {
      this.tableRoot.filterHandle('multiple', this.column, this.filterMultipleValue);
      this.visible = false;
    },
    resetFilterMultiple: function resetFilterMultiple() {
      this.filterMultipleValue = [];
      this.tableRoot.filterHandle('multiple', this.column, []);
      this.visible = false;
    }
  },
  watch: {
    column: {
      handler: function handler(newVal) {
        if (this.isDefaultSort === null && newVal.__sort) {
          this.isDefaultSort = newVal.__sort;
        }
      },
      deep: true,
      immediate: true
    },
    isDefaultSort: {
      handler: function handler(newVal) {
        var _this = this;

        this.$nextTick(function () {
          newVal && newVal !== true && newVal !== 'remote' && _this.sortHandle(newVal);
        });
      },
      immediate: true
    },
    visible: function visible(newVal) {
      this.tableRoot.filterClick(this.column, newVal);
    }
  }
});
// CONCATENATED MODULE: ./packages/table/src/table-head-cell.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_table_head_cellvue_type_script_lang_js_ = (table_head_cellvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/table/src/table-head-cell.vue





/* normalize component */

var table_head_cell_component = normalizeComponent(
  src_table_head_cellvue_type_script_lang_js_,
  table_head_cellvue_type_template_id_7119832f_render,
  table_head_cellvue_type_template_id_7119832f_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var table_head_cell = (table_head_cell_component.exports);
// CONCATENATED MODULE: ./packages/table/src/table-mixins.js
/* harmony default export */ var table_mixins = ({
  methods: {
    setColWidth: function setColWidth(column) {
      var width = '';

      if (this.columnsWidth[column.__id]) {
        width = this.columnsWidth[column.__id].width;
      }

      return width;
    }
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-head.vue?vue&type=script&lang=js&



//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//




/* harmony default export */ var table_headvue_type_script_lang_js_ = ({
  name: 'TableHead',
  mixins: [table_mixins],
  inject: ['tableRoot'],
  props: {
    data: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    columns: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    colgroupColumns: Array,
    columnsWidth: Object,
    headStyle: Object,
    fixed: String
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-table-head',
      sortType: ['ascend', 'descend', true, false, 'remote']
    };
  },
  computed: {
    tableHeadStyle: function tableHeadStyle() {
      var style = {};
      if (this.headStyle && this.headStyle.width) style.width = this.headStyle.width;
      return style;
    }
  },
  components: {
    TableTr: table_tr,
    TableHeadCell: table_head_cell
  },
  methods: {
    sortHandle: function sortHandle(column) {
      this.tableRoot.headClick(column);
      if (!column.__sort || !this.sortType.includes(column.sort)) return;
      var type = true;

      if (column.__sort === 'ascend') {
        type = 'descend';
      } else if (column.__sort === 'descend') {
        type = true;
      } else if (column.__sort === true) {
        type = 'ascend';
      } else {
        type = 'remote';
      }

      this.tableRoot.sortHandle(column, type);
    }
  }
});
// CONCATENATED MODULE: ./packages/table/src/table-head.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_table_headvue_type_script_lang_js_ = (table_headvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/table/src/table-head.vue





/* normalize component */

var table_head_component = normalizeComponent(
  src_table_headvue_type_script_lang_js_,
  table_headvue_type_template_id_2892d471_render,
  table_headvue_type_template_id_2892d471_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var table_head = (table_head_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-body.vue?vue&type=template&id=463cb0cc&
var table_bodyvue_type_template_id_463cb0cc_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.data && _vm.data.length)?_c('table',{style:(_vm.tableBodyStyle),attrs:{"cellspacing":"0","cellpadding":"0","border":"0"}},[_c('colgroup',_vm._l((_vm.colgroupColumns),function(column){return _c('col',{key:column.__id,attrs:{"width":_vm.setColWidth(column)}})}),0),_vm._v(" "),_c('tbody',[_vm._l((_vm.data),function(row,index){return [_c('table-tr',{key:index,attrs:{"type":"body","row":row},nativeOn:{"mouseenter":function($event){return _vm.trMouseEnter(row.__index)},"mouseleave":function($event){return _vm.trMouseLeave(row.__index)}}},_vm._l((_vm.columns),function(column,columnIndex){return (_vm.spanShow(row, column, index, columnIndex))?_c('td',_vm._b({key:column.__id,class:[
                    _vm.fixed && column.fixed !== _vm.fixed && 'is-hidden',
                    column.className
                ],on:{"click":function($event){$event.stopPropagation();return _vm.rowClick(row, column)},"dblclick":function($event){$event.stopPropagation();return _vm.rowDbCkick(row, column)}}},'td',_vm.getSpan(row, column, index, columnIndex),false),[_c('table-cell',{attrs:{"row":row,"column":column}})],1):_vm._e()}),0),_vm._v(" "),(row.__isExpand)?_c('tr',{key:index + '-expand'},[_c('td',{class:[
                        (_vm.classPrefixTd + "__expand"),
                        _vm.fixed && 'is-hidden'
                    ],attrs:{"colspan":_vm.colgroupColumns.length}},[_c('table-expand',{attrs:{"row":_vm.emitDataFormat(row),"columns":_vm.emitDataFormat(_vm.columns)}})],1)]):_vm._e()]})],2)]):_c('table',{style:(_vm.tableBodyStyle),attrs:{"cellspacing":"0","cellpadding":"0","border":"0"}},[_c('tbody',[_c('tr',[_c('td',{class:[
                    _vm.fixed && 'is-hidden'
                ],attrs:{"colspan":_vm.colgroupColumns.length}},[_vm._v(_vm._s(_vm.t('m.table.emptyData'))+"\n        ")])])])])}
var table_bodyvue_type_template_id_463cb0cc_staticRenderFns = []


// CONCATENATED MODULE: ./packages/table/src/table-body.vue?vue&type=template&id=463cb0cc&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-cell.vue?vue&type=template&id=4bf9d04e&
var table_cellvue_type_template_id_4bf9d04e_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        (_vm.column.ellipsis || _vm.column.tooltip) && (_vm.classPrefix + "--ellipsis"),
        _vm.column.align && (_vm.classPrefix + "--" + (_vm.column.align)) ]},[(_vm.renderType === 'normal')?[(_vm.column.tooltip)?[_c('tooltip',{class:[(_vm.classPrefix + "__tooltip")],attrs:{"placement":"top","content":_vm.row[_vm.column.key]}},[_c('span',{class:[(_vm.classPrefix + "__tooltip-content")]},[_vm._v(_vm._s(_vm.row[_vm.column.key]))])])]:_c('span',[_vm._v(_vm._s(_vm.row[_vm.column.key]))])]:_vm._e(),_vm._v(" "),(_vm.renderType === 'slot')?[_c('table-slot',{attrs:{"column":_vm.column,"row":_vm.row}})]:_vm._e(),_vm._v(" "),(_vm.renderType === 'selection')?[_c('checkbox',{class:[(_vm.classPrefix + "__checkbox")],attrs:{"disabled":_vm.row.__isDisabled},on:{"change":_vm.checkboxChange},model:{value:(_vm.row.__isChecked),callback:function ($$v) {_vm.$set(_vm.row, "__isChecked", $$v)},expression:"row.__isChecked"}})]:_vm._e(),_vm._v(" "),(_vm.renderType === 'index')?[_vm._v("\n        "+_vm._s(_vm.row.__index + 1)+"\n    ")]:_vm._e(),_vm._v(" "),(_vm.renderType === 'expand')?[_c('span',{class:[
                (_vm.classPrefix + "__icon"),
                _vm.row.__isExpand && (_vm.classPrefix + "__expand")
            ],on:{"click":_vm.expandChange}},[_c('Icon',{attrs:{"type":"right"}})],1)]:_vm._e()],2)}
var table_cellvue_type_template_id_4bf9d04e_staticRenderFns = []


// CONCATENATED MODULE: ./packages/table/src/table-cell.vue?vue&type=template&id=4bf9d04e&

// CONCATENATED MODULE: ./packages/table/src/table-slot.js
/* harmony default export */ var table_slot = ({
  name: 'TableSlot',
  functional: true,
  inject: ['tableRoot'],
  props: {
    column: Object,
    row: Object
  },
  render: function render(h, context) {
    var r = context.injections.tableRoot.$scopedSlots[context.props.column.slot];

    if (r) {
      return h('div', r({
        row: context.props.row,
        column: context.props.column
      }));
    }

    return null;
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-cell.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//





/* harmony default export */ var table_cellvue_type_script_lang_js_ = ({
  name: 'TableCell',
  inject: ['tableRoot'],
  props: {
    row: {
      type: Object,
      default: function _default() {
        return {};
      }
    },
    column: Object
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-table-cell',
      observer: null,
      renderType: 'normal'
    };
  },
  components: {
    Tooltip: tooltip,
    Checkbox: src_checkbox,
    tableSlot: table_slot,
    Icon: packages_icon
  },
  mounted: function mounted() {
    this.setRenderType();
  },
  methods: {
    setRenderType: function setRenderType() {
      var type = this.column.slot ? 'slot' : this.column.type;

      switch (type) {
        case 'slot':
          this.renderType = 'slot';
          break;

        case 'selection':
          this.renderType = 'selection';
          break;

        case 'html':
          this.renderType = 'html';
          break;

        case 'index':
          this.renderType = 'index';
          break;

        case 'expand':
          this.renderType = 'expand';
          break;

        default:
          this.renderType = 'normal';
          break;
      }
    },
    checkboxChange: function checkboxChange() {
      this.tableRoot.checkboxChange(this.row);
    },
    expandChange: function expandChange() {
      this.tableRoot.expandChange(this.row);
    }
  },
  watch: {}
});
// CONCATENATED MODULE: ./packages/table/src/table-cell.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_table_cellvue_type_script_lang_js_ = (table_cellvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/table/src/table-cell.vue





/* normalize component */

var table_cell_component = normalizeComponent(
  src_table_cellvue_type_script_lang_js_,
  table_cellvue_type_template_id_4bf9d04e_render,
  table_cellvue_type_template_id_4bf9d04e_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var table_cell = (table_cell_component.exports);
// CONCATENATED MODULE: ./packages/table/src/table-expand.js
/* harmony default export */ var table_expand = ({
  name: 'TableExpand',
  functional: true,
  inject: ['tableRoot'],
  props: {
    columns: Array,
    row: Object
  },
  render: function render(h, context) {
    var r = context.injections.tableRoot.$scopedSlots['expand'];

    if (r) {
      return h('div', r({
        row: context.props.row,
        columns: context.props.columns
      }));
    }

    return null;
  }
});
// CONCATENATED MODULE: ./packages/table/src/util.js








var randomStr = function randomStr() {
  var len = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 32;
  var $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
  var maxPos = $chars.length;
  var str = '';

  for (var i = 0; i < len; i++) {
    str += $chars.charAt(Math.floor(Math.random() * maxPos));
  }

  return "".concat(str);
};
/**
 * if colums has children
 * @param cols
 * @param isParent
 * @returns {Array}
 */

var util_getAllColumns = function getAllColumns(cols, parentCols) {
  var result = [];
  cols.forEach(function (item) {
    if (!item.hide) {
      if (parentCols) {
        item.__parentId = parentCols.__id;
        item.__level = parentCols.__level + 1;
      } else {
        item.__level = 1;
      }

      if (item.children) {
        result.push.apply(result, _toConsumableArray(getAllColumns(item.children, item)));
      }

      result.push(item);
    }
  });
  return result;
};
var setGroupTableHead = function setGroupTableHead(columns) {
  var deepColumns = [];
  columns.forEach(function (item) {
    if (!item.__parentId) {
      deepColumns.push(item);
    }
  });
  var maxLevel = 1; // children最大层次

  var setColSpanforColumns = function setColSpanforColumns(column, parentColumn) {
    if (parentColumn) {
      column.__level = parentColumn.__level + 1;
      if (maxLevel < column.__level) maxLevel = column.__level;
    }

    if (column.children) {
      var __colSpan = 0;
      column.children.forEach(function (subColumn) {
        setColSpanforColumns(subColumn, column);
        __colSpan += subColumn.__colSpan;
      });
      column.__colSpan = __colSpan;
    } else {
      column.__colSpan = 1;
    }
  };

  deepColumns.forEach(function (item) {
    item.__level = 1;
    setColSpanforColumns(item);
  });
  var headRows = [];

  for (var i = 0; i < maxLevel; i++) {
    headRows.push([]);
  }

  var allColumns = util_getAllColumns(deepColumns);
  allColumns.forEach(function (item) {
    if (item.children) {
      item.__rowSpan = 1;
    } else {
      item.__rowSpan = maxLevel - item.__level + 1;
    }

    headRows[item.__level - 1].push(item);
  });
  return headRows;
};
/**
 * set defaultProps
 * @param cols
 */

var util_setCloneColumnsDefaultProps = function setCloneColumnsDefaultProps(cols) {
  var columns = global_deepClone(util_getAllColumns(cols));
  columns.forEach(function (column, index) {
    column.__isChecked = column.isChecked || false; // 全选的状态

    column.__isDisabled = column.isDisabled || false; // 全选的状态

    var columnsWidth = column.width ? parseFloat(column.width) : '';
    var columnsMinWidth = column.minWidth ? parseFloat(column.minWidth) : '';
    column.__index = index;
    column.__width = Math.max(columnsWidth, columnsMinWidth);
    column.__sort = column.sort || false;
    column.__filterCheckedValues = []; // 筛选项的value值，数组类型

    column.__isFilterChecked = false; // 是否确认筛选
  });
  return columns;
};
var removeBodyColumnsHaveChildren = function removeBodyColumnsHaveChildren(columns) {
  var newBodyCloneColumns = [];
  columns.forEach(function (item) {
    if (!item.children) {
      newBodyCloneColumns.push(item);
    }
  });
  return newBodyCloneColumns;
};
var sortFixedColumns = function sortFixedColumns(columns, fixedType) {
  var left = [];
  var center = [];
  var right = [];
  var result = [];
  columns.filter(function (item) {
    if (item.fixed && item.fixed === 'left') {
      left.push(item);
    } else if (item.fixed && item.fixed === 'right') {
      right.push(item);
    } else {
      center.push(item);
    }
  });

  if (fixedType && fixedType === 'right') {
    result.push.apply(result, right.concat(center, left));
  } else {
    result.push.apply(result, left.concat(center, right));
  }

  return result;
};
var fixedIds = function fixedIds(columns, fixedType) {
  var ids = [];
  columns.forEach(function (item) {
    if (item.__width && item.fixed && item.fixed === fixedType) {
      ids.push(item.__id);
    }
  });
  return ids;
};
var emitDataFormat = function emitDataFormat(data) {
  var type = data instanceof Array ? 'array' : data instanceof Object ? 'object' : '';
  if (!type) return;
  var result = type === 'array' ? [] : {};

  if (type === 'array') {
    data.forEach(function (item) {
      if (item instanceof Object) {
        var obj = {};
        Object.keys(item).forEach(function (key) {
          if (typeof key === 'string' && !key.includes('__')) {
            obj[key] = item[key];
          }
        });
        result.push(obj);
      }
    });
  } else {
    Object.keys(data).forEach(function (key) {
      if (typeof key === 'string' && !key.includes('__')) {
        result[key] = data[key];
      }
    });
  }

  return result;
};
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-body.vue?vue&type=script&lang=js&

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//







/* harmony default export */ var table_bodyvue_type_script_lang_js_ = ({
  name: 'TableBody',
  mixins: [table_mixins, mixins_locale],
  inject: ['tableRoot'],
  props: {
    data: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    columns: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    colgroupColumns: Array,
    columnsWidth: Object,
    bodyStyle: Object,
    fixed: String
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-table-body',
      classPrefixTd: config.classPrefix + '-table-td',
      emitDataFormat: emitDataFormat
    };
  },
  computed: {
    tableBodyStyle: function tableBodyStyle() {
      var style = {};
      if (this.bodyStyle && this.bodyStyle.width) style.width = this.bodyStyle.width;
      return style;
    }
  },
  components: {
    TableTr: table_tr,
    TableCell: table_cell,
    TableExpand: table_expand
  },
  methods: {
    trMouseEnter: function trMouseEnter(__id) {
      if (!this.tableRoot.hover) return;
      this.tableRoot.setCloneDataDefaultProps({
        __isHover: true
      }, [__id]);
    },
    trMouseLeave: function trMouseLeave(__id) {
      if (!this.tableRoot.hover) return;
      this.tableRoot.setCloneDataDefaultProps({
        __isHover: false
      }, [__id]);
    },
    rowClick: function rowClick(row, column) {
      this.tableRoot.rowClick(row, column);
      this.tableRoot.cellClick(row, column);
    },
    rowDbCkick: function rowDbCkick(row, column) {
      this.tableRoot.rowDbCkick(row, column);
      this.tableRoot.cellDbCkick(row, column);
    },
    getSpan: function getSpan(row, column, rowIndex, columnIndex) {
      var spanMethod = this.tableRoot.spanMethod;

      if (spanMethod && typeof spanMethod === 'function') {
        var result = spanMethod({
          row: row,
          column: column,
          rowIndex: rowIndex,
          columnIndex: columnIndex
        });
        var rowspan = 1;
        var colspan = 1;

        if (Array.isArray(result) && result.length === 2) {
          rowspan = result[0];
          colspan = result[1];
        } else if (_typeof(result) === 'object') {
          rowspan = result.rowspan;
          colspan = result.colspan;
        }

        if (typeof rowspan !== 'number' || typeof colspan !== 'number') {
          rowspan = 1;
          colspan = 1;
        }

        return {
          rowspan: rowspan,
          colspan: colspan
        };
      } else {
        return {};
      }
    },
    spanShow: function spanShow(row, column, rowIndex, columnIndex) {
      var result = this.getSpan(row, column, rowIndex, columnIndex);
      return !('rowspan' in result && result.rowspan === 0 || 'colspan' in result && result.colspan === 0);
    }
  }
});
// CONCATENATED MODULE: ./packages/table/src/table-body.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_table_bodyvue_type_script_lang_js_ = (table_bodyvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/table/src/table-body.vue





/* normalize component */

var table_body_component = normalizeComponent(
  src_table_bodyvue_type_script_lang_js_,
  table_bodyvue_type_template_id_463cb0cc_render,
  table_bodyvue_type_template_id_463cb0cc_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var table_body = (table_body_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-fixed.vue?vue&type=template&id=5778b4ea&
var table_fixedvue_type_template_id_5778b4ea_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        _vm.fixed && (_vm.classPrefix + "--" + _vm.fixed)
     ],style:(_vm.styleObj)},[_c('div',{class:[(_vm.classPrefix + "__content")]},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.showHeader),expression:"showHeader"}],ref:"fixedHeader",class:[(_vm.classPrefix + "__head")]},[_c('table-head',{attrs:{"fixed":_vm.fixed,"columns":_vm.headColumns,"colgroup-columns":_vm.bodyColumns,"data":_vm.data,"columns-width":_vm.columnsWidth,"head-style":_vm.headStyle}})],1),_vm._v(" "),_c('div',{ref:"fixedBody",class:[(_vm.classPrefix + "__body")],style:(_vm.fixedBodyWrapStyle)},[_c('table-body',{attrs:{"fixed":_vm.fixed,"columns":_vm.bodyColumns,"colgroup-columns":_vm.bodyColumns,"data":_vm.data,"columns-width":_vm.columnsWidth,"body-style":_vm.bodyStyle}})],1)]),_vm._v(" "),(_vm.fixed === 'right' && _vm.$parent.showVerticalScrollBar)?_c('div',{class:[(_vm.classPrefix + "__right-col")],style:(_vm.fixedRightStyle)}):_vm._e()])}
var table_fixedvue_type_template_id_5778b4ea_staticRenderFns = []


// CONCATENATED MODULE: ./packages/table/src/table-fixed.vue?vue&type=template&id=5778b4ea&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table-fixed.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//






/* harmony default export */ var table_fixedvue_type_script_lang_js_ = ({
  name: 'TableFixed',
  props: {
    fixed: String,
    headColumns: Array,
    bodyColumns: Array,
    colgroupColumns: Array,
    data: Array,
    columnsWidth: Object,
    headStyle: Object,
    bodyStyle: Object,
    bodyWrapStyle: Object,
    showHeader: Boolean
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-table-fixed',
      headerHeight: 0
    };
  },
  computed: {
    styleObj: function styleObj() {
      var _this = this;

      var style = {};
      var width = 0;
      var fixedId = fixedIds(this.bodyColumns, this.fixed);
      Object.keys(this.columnsWidth).forEach(function (key) {
        if (fixedId.includes(key)) {
          width += _this.columnsWidth[key].width;
        }
      });
      style.width = width + 'px';

      if (this.fixed === 'right' && this.$parent.showVerticalScrollBar) {
        style.right = this.$parent.scrollBarWidth + 'px';
      }

      return style;
    },
    fixedBodyWrapStyle: function fixedBodyWrapStyle() {
      var style = {};

      if (this.bodyWrapStyle && this.bodyWrapStyle.height) {
        var height = 0;

        if (this.$parent.showHorizontalScrollBar) {
          height = getScrollBarWidth();
        }

        style = {
          height: parseInt(this.bodyWrapStyle.height) - height + 'px'
        };
      }

      return style;
    },
    fixedRightStyle: function fixedRightStyle() {
      return {
        width: this.$parent.scrollBarWidth + 'px',
        height: this.headerHeight - 1 + 'px',
        right: -this.$parent.scrollBarWidth + 'px'
      };
    }
  },
  components: {
    TableHead: table_head,
    TableBody: table_body
  },
  mounted: function mounted() {
    on(this.$refs.fixedBody, 'mousewheel', this.mouseScroll);
    on(this.$refs.fixedBody, 'DOMMouseScroll', this.mouseScroll);
  },
  destroyed: function destroyed() {
    off(this.$refs.fixedBody, 'mousewheel', this.mouseScroll);
    off(this.$refs.fixedBody, 'DOMMouseScroll', this.mouseScroll);
  },
  methods: {
    mouseScroll: function mouseScroll(event) {
      var deltaY = event.deltaY;

      if (!deltaY && event.detail) {
        deltaY = event.detail * 40;
      }

      if (!deltaY && event.wheelDeltaY) {
        deltaY = -event.wheelDeltaY;
      }

      if (!deltaY && event.wheelDelta) {
        deltaY = -event.wheelDelta;
      }

      if (!deltaY) return;
      var body = this.$parent.$refs.body;
      var currentScrollTop = body.scrollTop;

      if (deltaY < 0 && currentScrollTop !== 0) {
        event.preventDefault();
      }

      if (deltaY > 0 && body.scrollHeight - body.clientHeight > currentScrollTop) {
        event.preventDefault();
      } // body.scrollTop += deltaY;


      var step = 0;
      var timeId = setInterval(function () {
        step += 5;

        if (deltaY > 0) {
          body.scrollTop += 2;
        } else {
          body.scrollTop -= 2;
        }

        if (step >= Math.abs(deltaY)) {
          clearInterval(timeId);
        }
      }, 5);
    }
  },
  watch: {
    headColumns: {
      handler: function handler() {
        this.headerHeight = this.$refs.fixedHeader && this.$refs.fixedHeader.offsetHeight;
      },
      deep: true,
      immediate: true
    }
  }
});
// CONCATENATED MODULE: ./packages/table/src/table-fixed.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_table_fixedvue_type_script_lang_js_ = (table_fixedvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/table/src/table-fixed.vue





/* normalize component */

var table_fixed_component = normalizeComponent(
  src_table_fixedvue_type_script_lang_js_,
  table_fixedvue_type_template_id_5778b4ea_render,
  table_fixedvue_type_template_id_5778b4ea_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var table_fixed = (table_fixed_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/loading/src/loading.vue?vue&type=template&id=1ff1c731&
var loadingvue_type_template_id_1ff1c731_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":"fade"}},[(_vm.showLoading)?_c('div',{class:[
            ("" + _vm.classPrefix),
            _vm.size && (_vm.classPrefix + "--" + _vm.size),
            (_vm.fix || _vm.fullscreen) && (_vm.classPrefix + "--fix"),
            _vm.fullscreen && (_vm.classPrefix + "--fullscreen") ]},[_c('div',{class:[(_vm.classPrefix + "__content")]},[_vm._t("default",[(_vm.type === 'loading1')?_c('Icon',{class:["animation-rotate", (_vm.classPrefix + "__icon-font")],attrs:{"type":"loading"}}):(_vm.showLoadingSvg)?_c('loading-svg',{class:[(_vm.classPrefix + "__icon-svg")],attrs:{"color":_vm.color,"type":_vm.type,"size":_vm.size}}):_c('div',{class:[(_vm.classPrefix + "__icon")]})]),_vm._v(" "),(_vm.text || _vm.$slots.text)?_c('div',{class:[(_vm.classPrefix + "__text")]},[_vm._t("text",[_vm._v(_vm._s(_vm.text))])],2):_vm._e()],2)]):_vm._e()])}
var loadingvue_type_template_id_1ff1c731_staticRenderFns = []


// CONCATENATED MODULE: ./packages/loading/src/loading.vue?vue&type=template&id=1ff1c731&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/loading/src/loading-svg.vue?vue&type=template&id=1137e6d6&
var loading_svgvue_type_template_id_1137e6d6_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.type === 'loading2')?_c('svg',{attrs:{"version":"1.1","id":"L5","xmlns":"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","x":"0px","y":"0px","viewBox":_vm.svgViewBox,"enable-background":"new 0 0 0 0","xml:space":"preserve"}},[_c('circle',{attrs:{"fill":_vm.svgColor,"stroke":"none","cx":_vm.svgCx[0],"cy":_vm.svgCy,"r":_vm.svgR,"transform":"translate(0 2.5404)"}},[_c('animateTransform',{attrs:{"attributeName":"transform","dur":"0.8s","type":"translate","values":"0 8 ; 0 -8; 0 8","repeatCount":"indefinite","begin":"0.1"}})],1),_vm._v(" "),_c('circle',{attrs:{"fill":_vm.svgColor,"stroke":"none","cx":_vm.svgCx[1],"cy":_vm.svgCy,"r":_vm.svgR,"transform":"translate(0 5.6936)"}},[_c('animateTransform',{attrs:{"attributeName":"transform","dur":"0.8s","type":"translate","values":"0 6 ; 0 -6; 0 6","repeatCount":"indefinite","begin":"0.2"}})],1),_vm._v(" "),_c('circle',{attrs:{"fill":_vm.svgColor,"stroke":"none","cx":_vm.svgCx[2],"cy":_vm.svgCy,"r":_vm.svgR,"transform":"translate(0 4.8468)"}},[_c('animateTransform',{attrs:{"attributeName":"transform","dur":"0.8s","type":"translate","values":"0 4 ; 0 -4; 0 4","repeatCount":"indefinite","begin":"0.3"}})],1)]):(_vm.type === 'loading3')?_c('svg',{attrs:{"version":"1.1","id":"L4","xmlns":"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","x":"0px","y":"0px","viewBox":_vm.svgViewBox,"enable-background":"new 0 0 0 0","xml:space":"preserve"}},[_c('circle',{attrs:{"fill":_vm.svgColor,"stroke":"none","cx":_vm.svgCx[0],"cy":_vm.svgCy,"r":_vm.svgR}},[_c('animate',{attrs:{"attributeName":"opacity","dur":"1s","values":"0;1;0","repeatCount":"indefinite","begin":"0.1"}})]),_vm._v(" "),_c('circle',{attrs:{"fill":_vm.svgColor,"stroke":"none","cx":_vm.svgCx[1],"cy":_vm.svgCy,"r":_vm.svgR}},[_c('animate',{attrs:{"attributeName":"opacity","dur":"1s","values":"0;1;0","repeatCount":"indefinite","begin":"0.2"}})]),_vm._v(" "),_c('circle',{attrs:{"fill":_vm.svgColor,"stroke":"none","cx":_vm.svgCx[2],"cy":_vm.svgCy,"r":_vm.svgR}},[_c('animate',{attrs:{"attributeName":"opacity","dur":"1s","values":"0;1;0","repeatCount":"indefinite","begin":"0.3"}})])]):(_vm.type === 'loading4')?_c('svg',{attrs:{"version":"1.1","id":"L6","xmlns":"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","x":"0px","y":"0px","viewBox":"0 0 100 100","enable-background":"new 0 0 100 100","xml:space":"preserve"}},[_c('rect',{attrs:{"fill":"none","stroke":"#2d8cf0","stroke-width":"4","x":"25","y":"25","width":"50","height":"50"}},[_c('animateTransform',{attrs:{"attributeName":"transform","dur":"0.5s","from":"0 50 50","to":"180 50 50","type":"rotate","id":"strokeBox","attributeType":"XML","begin":"rectBox.end"}})],1),_vm._v(" "),_c('rect',{attrs:{"x":"27","y":"27","fill":_vm.svgColor,"width":"46","height":"45.1694"}},[_c('animate',{attrs:{"attributeName":"height","dur":"1.3s","attributeType":"XML","from":"50","to":"0","id":"rectBox","fill":"freeze","begin":"0s;strokeBox.end"}})])]):(_vm.type === 'loading5')?_c('svg',{attrs:{"version":"1.1","id":"Layer_1","xmlns":"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink","x":"0px","y":"0px","viewBox":_vm.svgViewBox,"enable-background":"new 0 0 0 0","xml:space":"preserve"}},[_c('rect',{attrs:{"x":_vm.svgCx[0],"fill":_vm.svgColor,"width":_vm.svgR,"height":_vm.svgWidth,"transform":("rotate(180 " + (_vm.svgR + _vm.svgCx[0] - 2.5) + " " + _vm.svgCy + ")")}},[_c('animate',{attrs:{"attributeName":"height","attributeType":"XML","dur":"1s","values":"6; 20; 6","repeatCount":"indefinite"}})]),_vm._v(" "),_c('rect',{attrs:{"x":_vm.svgCx[1],"fill":_vm.svgColor,"width":_vm.svgR,"height":_vm.svgWidth,"transform":("rotate(180 " + (_vm.svgR + _vm.svgCx[1] - 2.5) + " " + _vm.svgCy + ")")}},[_c('animate',{attrs:{"attributeName":"height","attributeType":"XML","dur":"1s","values":"6; 20; 6","repeatCount":"indefinite","begin":"0.1s"}})]),_vm._v(" "),_c('rect',{attrs:{"x":_vm.svgCx[2],"fill":_vm.svgColor,"width":_vm.svgR,"height":_vm.svgWidth,"transform":("rotate(180 " + (_vm.svgR + _vm.svgCx[2] - 2.5) + " " + _vm.svgCy + ")")}},[_c('animate',{attrs:{"attributeName":"height","attributeType":"XML","dur":"1s","values":"6; 20; 6","repeatCount":"indefinite","begin":"0.3s"}})])]):_vm._e()}
var loading_svgvue_type_template_id_1137e6d6_staticRenderFns = []


// CONCATENATED MODULE: ./packages/loading/src/loading-svg.vue?vue&type=template&id=1137e6d6&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/loading/src/loading-svg.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var loading_svgvue_type_script_lang_js_ = ({
  name: 'LoadingSvg',
  props: {
    type: String,
    size: String,
    color: String
  },
  data: function data() {
    return {
      defaultSize: {
        mini: 24,
        small: 28,
        default: 32,
        large: 36
      },
      defaultR: {
        mini: 2,
        small: 2.5,
        default: 3,
        large: 3.5
      },
      svgColor: this.color || '#2d8cf0'
    };
  },
  computed: {
    svgWidth: function svgWidth() {
      return this.defaultSize[this.size];
    },
    svgViewBox: function svgViewBox() {
      return "0 0 ".concat(this.svgWidth, " ").concat(this.svgWidth);
    },
    svgCy: function svgCy() {
      return this.svgWidth / 2;
    },
    svgR: function svgR() {
      return this.defaultR[this.size];
    },
    svgCx: function svgCx() {
      var dis = (this.svgWidth - this.svgR * 2 * 3) / 4;
      var cx1 = dis + this.svgR;
      var cx2 = dis * 2 + this.svgR * 3;
      var cx3 = dis * 3 + this.svgR * 5;
      return [cx1, cx2, cx3];
    }
  }
});
// CONCATENATED MODULE: ./packages/loading/src/loading-svg.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_loading_svgvue_type_script_lang_js_ = (loading_svgvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/loading/src/loading-svg.vue





/* normalize component */

var loading_svg_component = normalizeComponent(
  src_loading_svgvue_type_script_lang_js_,
  loading_svgvue_type_template_id_1137e6d6_render,
  loading_svgvue_type_template_id_1137e6d6_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var loading_svg = (loading_svg_component.exports);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/loading/src/loading.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var loadingvue_type_script_lang_js_ = ({
  name: 'Loading',
  props: {
    visible: {
      type: Boolean,
      default: false
    },
    type: {
      type: String,
      default: 'default',
      validator: function validator(value) {
        return ['default', 'loading1', 'loading2', 'loading3', 'loading4', 'loading5'].includes(value);
      }
    },
    color: String,
    text: String,
    size: {
      type: String,
      default: 'default',
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    fix: {
      type: Boolean,
      default: false
    },
    // 固定 此时会相对于最近的定位父及元素定位 如果没有定位父及元素则相对于body定位
    fullscreen: {
      type: Boolean,
      default: false
    } // 覆盖整个屏幕

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-loading',
      showLoading: this.visible
    };
  },
  computed: {
    showLoadingSvg: function showLoadingSvg() {
      return ['loading2', 'loading3', 'loading4', 'loading5'].includes(this.type);
    }
  },
  components: {
    LoadingSvg: loading_svg,
    Icon: packages_icon
  },
  methods: {
    show: function show() {
      this.showLoading = true;
    },
    close: function close() {
      this.showLoading = false;
    }
  },
  watch: {
    visible: function visible(newVal) {
      this.showLoading = newVal;
    }
  }
});
// CONCATENATED MODULE: ./packages/loading/src/loading.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_loadingvue_type_script_lang_js_ = (loadingvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/loading/src/loading.vue





/* normalize component */

var loading_component = normalizeComponent(
  src_loadingvue_type_script_lang_js_,
  loadingvue_type_template_id_1ff1c731_render,
  loadingvue_type_template_id_1ff1c731_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var loading = (loading_component.exports);
// CONCATENATED MODULE: ./packages/loading/loadingInstance.js







function loadingInstance_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function loadingInstance_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { loadingInstance_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { loadingInstance_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }



var extendLoadingInstance = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend(loading);
var loadingInstance; // 不可配置项的默认值

var loadingInstance_defaultNoConfigOptions = {
  fix: false,
  fullscreen: true
}; // 可配置项的默认值

var loadingInstance_defaultOptions = {
  text: '',
  type: 'default',
  size: 'default'
};

var loadingInstance_initInstall = function initInstall(opts) {
  // eslint-disable-next-line new-cap
  loadingInstance = new extendLoadingInstance({
    el: document.createElement('div')
  });
  document.body.appendChild(loadingInstance.$el);
  Object.keys(opts).forEach(function (key) {
    loadingInstance.$props[key] = opts[key];
  });
  loadingInstance.show();
  return loadingInstance;
};

var openLoading = function openLoading(options) {
  if (typeof options === 'string') {
    options = {
      text: options
    };
  }

  options = Object.assign({}, loadingInstance_defaultOptions, options, loadingInstance_defaultNoConfigOptions);
  var defaultKeys = Object.keys(loadingInstance_objectSpread(loadingInstance_objectSpread({}, loadingInstance_defaultOptions), loadingInstance_defaultNoConfigOptions));
  Object.keys(options).forEach(function (key) {
    if (!defaultKeys.includes(key)) delete options[key];
  });
  return loadingInstance_initInstall(options);
};

var closeLoading = function closeLoading() {
  loadingInstance.close();
};

/* harmony default export */ var loading_loadingInstance = ({
  open: function open(options) {
    return openLoading(options);
  },
  close: function close() {
    return closeLoading();
  }
});
// CONCATENATED MODULE: ./packages/loading/loadingDirective.js







var LoadingInstance = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend(loading);
var loadingDirective_loadingInstance = []; // 配置项的默认值

var loadingDirective_defaultOptions = {
  fix: true,
  fullscreen: false,
  text: '',
  size: 'default'
};
var defaultSize = ['mini', 'small', 'default', 'large'];
var defaultType = ['default', 'loading1', 'loading2', 'loading3', 'loading4', 'loading5'];

var loadingDirective_initInstall = function initInstall(el, type, size, text, expression) {
  var instance = new LoadingInstance({
    el: document.createElement('div')
  });
  loadingDirective_loadingInstance.push({
    expression: expression,
    instance: instance
  });
  el.appendChild(instance.$el);
  var config = JSON.parse(JSON.stringify(loadingDirective_defaultOptions));

  if (type) {
    config = Object.assign({}, config, {
      type: type
    });
  }

  if (size) {
    config = Object.assign({}, config, {
      size: size
    });
  }

  if (text) {
    config = Object.assign({}, config, {
      text: text
    });
  }

  Object.keys(config).forEach(function (key) {
    instance.$props[key] = config[key];
  });
  return instance;
};

/* harmony default export */ var loadingDirective = ({
  bind: function bind(el, binding) {
    var value = binding.value;
    var expression = binding.expression;
    var arg = binding.arg ? binding.arg.split(':') : '';
    var size = 'default';
    var text = '';
    var type = '';
    if (arg && arg[0] && defaultType.includes(arg[0])) type = arg[0];
    if (arg && arg[1] && defaultSize.includes(arg[1])) size = arg[1];
    if (arg && arg[2]) text = arg[2];
    var loading = loadingDirective_initInstall(el, type, size, text, expression);
    value && loading.show();
    !value && loading.close();
  },
  inserted: function inserted(el) {
    var position = window.getComputedStyle && window.getComputedStyle(el, null)['position'];
    position = el.currentStyle && el.currentStyle['position'];
    if (!['relative', 'absolute'].includes(position)) el.style.position = 'relative';
  },
  update: function update(el, binding) {
    var value = binding.value;
    var expression = binding.expression;
    loadingDirective_loadingInstance.forEach(function (item) {
      if (item.expression === expression) {
        value && item.instance.show();
        !value && item.instance.close();
      }
    });
  },
  unbind: function unbind(el, binding) {
    var expression = binding.expression;
    loadingDirective_loadingInstance.forEach(function (item, index) {
      if (item.expression === expression) {
        loadingDirective_loadingInstance.splice(index, 1);
      }
    });
  }
});
// CONCATENATED MODULE: ./packages/loading/index.js



loading.instance = loading_loadingInstance;
loading.directive = loadingDirective;
/* harmony default export */ var packages_loading = (loading);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/table/src/table.vue?vue&type=script&lang=js&







//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//










/* harmony default export */ var tablevue_type_script_lang_js_ = ({
  name: 'Table',
  mixins: [mixins_locale],
  provide: function provide() {
    return {
      tableRoot: this
    };
  },
  props: {
    data: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    columns: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    border: {
      type: Boolean,
      default: false
    },
    stripe: Boolean,
    // 斑马纹
    height: [String, Number],
    // 设置高度后head固定
    emptyText: String,
    rowClassName: [String, Function],
    showHeader: {
      type: Boolean,
      default: true
    },
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    loading: Boolean,
    hover: {
      type: Boolean,
      default: true
    },
    // 是否开启行hover的效果
    spanMethod: {
      type: Function
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-table',
      commonColumns: [],
      columnRows: [],
      cloneData: [],
      commonData: [],
      statusData: {},
      // 状态数据map 包括checked hover 等状态
      columnsWidth: {},
      observer: null,
      tableWidth: '',
      bodyHeight: '',
      showHorizontalScrollBar: false,
      showVerticalScrollBar: false,
      scrollBarWidth: getScrollBarWidth(),
      isFixedLeft: false,
      isFixedRight: false,
      ready: false
    };
  },
  computed: {
    localEmptyText: function localEmptyText() {
      return this.emptyText ? this.emptyText : this.t('m.table.emptyData');
    },
    tableStyle: function tableStyle() {
      var style = {};
      if (this.height) style = {
        height: parseInt(this.height) + 'px'
      };
      return style;
    },
    headStyle: function headStyle() {
      var style = {};
      if (this.tableWidth) style.width = this.tableWidth - (this.showVerticalScrollBar ? 1 : 0) + 'px';
      return style;
    },
    bodyStyle: function bodyStyle() {
      var style = {};
      if (this.tableWidth) style.width = this.tableWidth - (this.showVerticalScrollBar ? this.scrollBarWidth + 1 : 0) + 'px';
      return style;
    },
    bodyWrapStyle: function bodyWrapStyle() {
      var style = {};

      if (this.height) {
        style = {
          height: this.bodyHeight + 'px'
        };
      }

      return style;
    },
    bodyCloneColumns: function bodyCloneColumns() {
      var commonColumns = sortFixedColumns(this.commonColumns);
      return removeBodyColumnsHaveChildren(commonColumns);
    },
    headCloneColumns: function headCloneColumns() {
      var commonColumns = sortFixedColumns(this.commonColumns);
      return setGroupTableHead(commonColumns);
    },
    fixedRightBodyCloneColumns: function fixedRightBodyCloneColumns() {
      var fixedRightCommonColumns = sortFixedColumns(this.commonColumns, 'right');
      return removeBodyColumnsHaveChildren(fixedRightCommonColumns);
    },
    fixedRightHeadCloneColumns: function fixedRightHeadCloneColumns() {
      var fixedRightCommonColumns = sortFixedColumns(this.commonColumns, 'right');
      return setGroupTableHead(fixedRightCommonColumns);
    }
  },
  components: {
    TableHead: table_head,
    TableBody: table_body,
    TableFixed: table_fixed,
    Loading: packages_loading
  },
  created: function created() {},
  mounted: function mounted() {
    var _this = this;

    this.handleResize();
    this.$nextTick(function () {
      _this.ready = true;
    });
    on(window, 'resize', this.handleResize);
    on(this.$refs.header, 'mousewheel', this.mouseScroll);
    on(this.$refs.header, 'DOMMouseScroll', this.mouseScroll);
    this.observer = element_resize_detector_default()();
    this.observer.listenTo(this.$el, this.handleResize);
  },
  beforeDestroy: function beforeDestroy() {
    this.observer && this.observer.removeListener(this.$el, this.handleResize);
    off(window, 'resize', this.handleResize);
    off(this.$refs.header, 'mousewheel', this.mouseScroll);
    off(this.$refs.header, 'DOMMouseScroll', this.mouseScroll);
  },
  methods: {
    setColumnsId: function setColumnsId(columns) {
      var _this2 = this;

      return columns.map(function (item, index) {
        item.__id = randomStr(6) + '-' + index; // 列的唯一标志

        if (item.children) _this2.setColumnsId(item.children);
        return item;
      });
    },
    // 给data设置默认属性或者指定值
    setCloneDataDefaultProps: function setCloneDataDefaultProps(obj) {
      var _this3 = this;

      var filterIndexs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
      var updateKeys = Object.keys(obj || {});
      var cloneData = global_deepClone(this.cloneData);
      cloneData.forEach(function (item, index) {
        if (updateKeys.length) {
          updateKeys.forEach(function (updateKey) {
            if (['__isDisabled', '__isChecked'].includes(updateKey)) {
              // 更新所有项的值
              if (updateKey === '__isDisabled') {
                item[updateKey] = obj[updateKey] || false;
              } else if (!item.__isDisabled) {
                item[updateKey] = obj[updateKey] || false;
              }
            } else if (filterIndexs.includes(item.__index)) {
              // 只更新指定项的值
              item[updateKey] = obj[updateKey] || false;
            }
          });
        } else {
          item.__isChecked = item.isChecked || false;
          item.__isDisabled = item.isDisabled || false;
          item.__isHover = false;
          item.__isStripe = _this3.stripe || false;
          item.__isExpand = false; // 展开行

          item.__index = index; // 行的唯一标志
        }
      });
      this.cloneData = cloneData;
      this.commonData = global_deepClone(cloneData);
    },
    // 设置列宽度及table宽度
    handleResize: function handleResize() {
      if (!this.$el) return;
      var tableWidth = this.$refs.tableWrap.offsetWidth;
      var columsWidths = {};
      var usableWidth = 0; // 可用的宽度

      var unusableWidth = 0; // 不可用的宽度

      var noWidthColumns = []; // 没有宽度的列，这些列都自动分配宽度

      var hasWidthColumns = []; // 有宽度的列

      var maxWidthColumns = []; // 设置最大宽的列

      var minWidthColumns = []; // 设置最小宽的列

      var noMaxWidthAndWidthColumns = []; // 没有设置最大宽的列

      var noWidthAndMaxWidthAndminWidthColumns = []; // 没有设置宽度、最大宽、最小宽的列

      this.bodyCloneColumns.forEach(function (itemCol) {
        if (itemCol.width) {
          hasWidthColumns.push(itemCol);
        } else {
          noWidthColumns.push(itemCol);
        }

        if (itemCol.minWidth) {
          minWidthColumns.push(itemCol);
        }

        if (itemCol.maxWidth) {
          maxWidthColumns.push(itemCol);
        }

        if (!itemCol.width && !itemCol.maxWidth) {
          noMaxWidthAndWidthColumns.push(itemCol);
          !itemCol.minWidth && noWidthAndMaxWidthAndminWidthColumns.push(itemCol);
        }

        if (itemCol.width || itemCol.minWidth) {
          var itemWidth = itemCol.width ? parseInt(itemCol.width) : 0;
          var itemMinWidth = itemCol.minWidth ? parseInt(itemCol.minWidth) : 0;
          unusableWidth += Math.max(itemWidth, itemMinWidth);
        }

        itemCol.__width = null;
      });
      usableWidth = tableWidth - unusableWidth - (this.showVerticalScrollBar ? this.scrollBarWidth : 0);
      var usableLength = noWidthColumns.length;
      var avgColumnsWidth = 0;

      if (usableWidth > 0 && usableLength > 0) {
        avgColumnsWidth = parseInt(usableWidth / usableLength);
      } // console.log(tableWidth,'tableWidthtableWidth',usableWidth,avgColumnsWidth)
      // --[width] width;
      // [minWidth] avgW  & min
      // [maxWidth] avg  & max
      // --[width, minWidth] width & minWidth
      // --[width, maxWidth] width & max
      // --[minWidth, maxWidth] avg &min & max
      // --[width, minWidth, maxWidth] width & min


      for (var i = 0; i < this.bodyCloneColumns.length; i++) {
        var colums = this.bodyCloneColumns[i];
        var width = avgColumnsWidth;

        if (colums.__width) {
          width = colums.__width;
        } else {
          if (colums.width) {
            width = colums.width;

            if (colums.minWidth) {
              width = Math.max(parseInt(colums.width), parseInt(colums.minWidth));
            }
          } else if (colums.minWidth && colums.maxWidth) {
            width = Math.min(parseInt(colums.minWidth) + avgColumnsWidth, parseInt(colums.maxWidth));
            usableWidth -= width;
            usableLength--;
          } else {
            if (colums.minWidth) {
              width = parseInt(colums.minWidth + avgColumnsWidth);
            }

            if (colums.maxWidth) {
              width = Math.min(width, parseInt(colums.maxWidth));
            }

            usableWidth -= width;
            usableLength--;
          }
        }

        width = Math.floor(width);
        colums.__width = width;
        columsWidths[colums.__id] = {
          width: width
        };
      } // 如果还有剩余的宽度给没有设置width和maxWidth的列分配


      if (usableWidth > 0) {
        usableLength = noMaxWidthAndWidthColumns.length;
        if (usableLength > 0) avgColumnsWidth = parseInt(usableWidth / usableLength);

        for (var _i = 0; _i < usableLength; _i++) {
          var _colums = noMaxWidthAndWidthColumns[_i];

          var _width = _colums.__width + avgColumnsWidth;

          _colums.__width = _width;
          columsWidths[_colums.__id] = {
            width: _width
          };
        }
      } // console.log(usableWidth,'usableWidth',JSON.parse(JSON.stringify(columsWidths)))


      if (usableWidth > 0) {
        usableLength = this.bodyCloneColumns.length;
        if (usableLength > 0) avgColumnsWidth = parseInt(usableWidth / usableLength);

        for (var _i2 = 0; _i2 < usableLength; _i2++) {
          var _colums2 = this.bodyCloneColumns[_i2];

          var _width2 = _colums2.__width + avgColumnsWidth;

          _colums2.__width = _width2;
          columsWidths[_colums2.__id] = {
            width: _width2
          };
        }
      }

      this.tableWidth = this.bodyCloneColumns.map(function (col) {
        return col.__width;
      }).reduce(function (a, b) {
        return a + b;
      }, 0) + (this.showVerticalScrollBar ? this.scrollBarWidth + 1 : 0) + usableWidth;
      this.columnsWidth = columsWidths;
      this.fixedHead();
    },
    // selection类型时checbox选择值变化
    checkboxChange: function checkboxChange(row) {
      var allCheckedData = this.getStatusPropsEqTrueRows('__isChecked');
      this.$emit(row.__isChecked ? 'select' : 'cancel-select', emitDataFormat(row), emitDataFormat(allCheckedData));
      this.$emit('selection-change', emitDataFormat(allCheckedData));
    },
    // 获取指定状态为true的项
    getStatusPropsEqTrueRows: function getStatusPropsEqTrueRows(status) {
      status = Array.isArray(status) ? status : [status];
      var resultData = [];
      this.cloneData.forEach(function (item) {
        status.forEach(function (itemStatus) {
          if (item[itemStatus]) resultData.push(item);
        });
      });
      return resultData;
    },
    // 全选状态发生变化
    selectAll: function selectAll(value) {
      this.setCloneDataDefaultProps({
        __isChecked: value
      });
      var allCheckedData = this.getStatusPropsEqTrueRows('__isChecked');
      this.$emit(value ? 'select-all' : 'cancel-select-all', emitDataFormat(allCheckedData));
      this.$emit('selection-change', emitDataFormat(allCheckedData));
    },
    // 固定头部的计算
    fixedHead: function fixedHead() {
      if (this.height) {
        var headerHeight = this.$refs.header ? this.$refs.header.offsetHeight : 0;
        var footerHeight = this.$refs.footer ? this.$refs.footer.offsetHeight : 0;
        this.bodyHeight = parseInt(this.height) - headerHeight - footerHeight;
      }

      this.fixedBody();
    },
    fixedBody: function fixedBody() {
      var bodyWidth = this.$refs.body.offsetWidth;
      var bodyHeight = this.$refs.body.offsetHeight;
      var tbodyWidth = this.$refs.tbody.$el.offsetWidth;
      var tbodyHeight = this.$refs.tbody.$el.offsetHeight;
      this.showHorizontalScrollBar = tbodyWidth > bodyWidth;
      this.showVerticalScrollBar = tbodyHeight > bodyHeight;
    },
    bodyScrollHandle: function bodyScrollHandle(event) {
      this.$refs.header && (this.$refs.header.scrollLeft = event.target.scrollLeft);
      this.$refs.fixedTableLeft && (this.$refs.fixedTableLeft.$refs.fixedBody.scrollTop = event.target.scrollTop);
      this.$refs.fixedTableRight && (this.$refs.fixedTableRight.$refs.fixedBody.scrollTop = event.target.scrollTop);
    },
    mouseScroll: function mouseScroll(event) {
      var deltaX = event.deltaX;
      var body = this.$refs.body;

      if (deltaX > 0) {
        body.scrollLeft = body.scrollLeft + 10;
      } else {
        body.scrollLeft = body.scrollLeft - 10;
      }
    },
    sortHandle: function sortHandle(column, type) {
      var key = column.key;
      var __id = column.__id;
      var sort = column.sort;
      var commonColumns = global_deepClone(this.commonColumns);
      commonColumns.forEach(function (item) {
        if (item.__id === __id) {
          item.__sort = type;
        } else if (item.__sort) {
          item.__sort = true; // 把其他排序清除
        }
      });

      if (type !== 'remote' && sort !== 'remote') {
        if (type === 'ascend' || type === 'descend') {
          var cloneData = global_deepClone(this.cloneData);
          cloneData.sort(function (a, b) {
            if (type === 'ascend') {
              return a[key] > b[key] ? 1 : -1;
            } else if (type === 'descend') {
              return a[key] < b[key] ? 1 : -1;
            }
          });
          this.cloneData = cloneData;
        } else {
          this.cloneData = global_deepClone(this.commonData);
        }
      }

      this.commonColumns = commonColumns;
      this.$emit('sort-change', emitDataFormat(column), type);
    },
    // 可控的排序
    sort: function sort(key, type) {
      var sortColumn = this.commonColumns.filter(function (item) {
        return item.key === key;
      });

      if (sortColumn && sortColumn.length) {
        this.sortHandle(sortColumn[0], type);
      }
    },
    // 清除排序
    clearSort: function clearSort() {
      var commonColumns = global_deepClone(this.commonColumns);
      commonColumns.forEach(function (item) {
        if (item.__sort) {
          item.__sort = true; // 把其他排序清除
        }
      });
      this.commonColumns = commonColumns;
      this.cloneData = global_deepClone(this.commonData);
    },
    filterHandle: function filterHandle(type, column, filterItemValue) {
      var __id = column.__id;
      var allFilterColumns = [];
      var commonColumns = global_deepClone(this.commonColumns);
      commonColumns.forEach(function (item) {
        if (item.__id === __id) {
          item.__filterCheckedValues = filterItemValue;

          if (filterItemValue.length) {
            item.__isFilterChecked = true;
          } else {
            item.__isFilterChecked = false;
          }
        }

        if (item.__isFilterChecked && item.__filterCheckedValues.length) {
          allFilterColumns.push({
            column: emitDataFormat(item),
            selectedValue: item.filterMultiple ? item.__filterCheckedValues : item.__filterCheckedValues[0]
          });
        }
      });
      this.commonColumns = commonColumns;
      this.$emit('filter-change', emitDataFormat(column), type !== 'single' ? filterItemValue : filterItemValue[0], allFilterColumns);
    },
    expandChange: function expandChange(row) {
      this.setCloneDataDefaultProps({
        __isExpand: !row.__isExpand
      }, [row.__index]);
      this.$emit('expand-change', emitDataFormat(row), !row.__isExpand);
    },
    getRowClassName: function getRowClassName(row, index) {
      if (typeof this.rowClassName === 'string') {
        return this.rowClassName;
      } else if (typeof this.rowClassName === 'function') {
        return this.rowClassName(row, index);
      } else {
        return null;
      }
    },
    rowClick: function rowClick(row) {
      this.$emit('row-click', emitDataFormat(row));
    },
    rowDbCkick: function rowDbCkick(row) {
      this.$emit('row-dbclick', emitDataFormat(row));
    },
    cellClick: function cellClick(row, column) {
      this.$emit('cell-click', emitDataFormat(row), emitDataFormat(column));
    },
    cellDbCkick: function cellDbCkick(row, column) {
      this.$emit('cell-dbclick', emitDataFormat(row), emitDataFormat(column));
    },
    headClick: function headClick(column) {
      this.$emit('head-click', emitDataFormat(column));
    },
    filterClick: function filterClick(column, visible) {
      this.$emit('filter-click', emitDataFormat(column), visible);
    }
  },
  watch: {
    data: {
      handler: function handler(newVal) {
        var _this4 = this;

        this.cloneData = global_deepClone(newVal);
        this.commonData = global_deepClone(newVal);
        this.setCloneDataDefaultProps();
        this.$nextTick(function () {
          _this4.handleResize();
        });
      },
      deep: true,
      immediate: true
    },
    columns: {
      handler: function handler(newVal) {
        var _this5 = this;

        var setColumnsId = this.setColumnsId(newVal);
        this.commonColumns = util_setCloneColumnsDefaultProps(setColumnsId);
        this.commonColumns.forEach(function (item) {
          if (item.fixed && item.fixed === 'left') {
            _this5.isFixedLeft = true;
          } else if (item.fixed && item.fixed === 'right') {
            _this5.isFixedRight = true;
          }
        });
        this.allColumns = util_getAllColumns(setColumnsId);
        this.handleResize();
      },
      deep: true,
      immediate: true
    }
  }
});
// CONCATENATED MODULE: ./packages/table/src/table.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_tablevue_type_script_lang_js_ = (tablevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/table/src/table.vue





/* normalize component */

var table_component = normalizeComponent(
  src_tablevue_type_script_lang_js_,
  tablevue_type_template_id_0c10749d_render,
  tablevue_type_template_id_0c10749d_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var table = (table_component.exports);
// CONCATENATED MODULE: ./packages/table/index.js

/* harmony default export */ var packages_table = (table);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/collapse/src/collapse.vue?vue&type=template&id=4ff0d45d&
var collapsevue_type_template_id_4ff0d45d_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        _vm.iconPosition && (_vm.classPrefix + "--" + _vm.iconPosition),
        _vm.type && (_vm.classPrefix + "--" + _vm.type) ]},[_vm._t("default")],2)}
var collapsevue_type_template_id_4ff0d45d_staticRenderFns = []


// CONCATENATED MODULE: ./packages/collapse/src/collapse.vue?vue&type=template&id=4ff0d45d&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/collapse/src/collapse.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var collapsevue_type_script_lang_js_ = ({
  name: 'Collapse',
  mixins: [emitter],
  props: {
    value: [String, Array],
    accordion: Boolean,
    type: {
      type: String,
      default: 'default',
      validator: function validator(value) {
        return ['default', 'simple'].includes(value);
      }
    },
    iconPosition: {
      type: String,
      default: 'left',
      validator: function validator(value) {
        return ['left', 'right'].includes(value);
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-collapse',
      componentName: 'Collapse',
      currentOpenedKey: []
    };
  },
  mounted: function mounted() {
    var _this = this;

    this.initOpenedKey();
    this.$on('on-update-opened-key', function (key) {
      _this.updateOpenedKey(key);
    });
  },
  methods: {
    initOpenedKey: function initOpenedKey() {
      this.currentOpenedKey = typeof this.value === 'string' ? [this.value] : this.value;
    },
    updateOpenedKey: function updateOpenedKey(key) {
      if (this.accordion) {
        if (Array.isArray(this.currentOpenedKey) && this.currentOpenedKey.includes(key)) {
          this.currentOpenedKey = [];
        } else {
          this.currentOpenedKey = [key];
        }
      } else {
        if (Array.isArray(this.currentOpenedKey) && this.currentOpenedKey.includes(key)) {
          var index = this.currentOpenedKey.indexOf(key);
          this.currentOpenedKey.splice(index, 1);
        } else {
          this.currentOpenedKey.push(key);
        }
      }

      if (!this.currentOpenedKey) this.currentOpenedKey = [];
      var inputKey = this.currentOpenedKey;

      if (this.accordion) {
        inputKey = this.currentOpenedKey.length ? key : '';
      }

      this.$emit('input', inputKey);
      this.$emit('change', key, this.currentOpenedKey);
    }
  },
  watch: {
    value: function value() {
      this.initOpenedKey();
    }
  }
});
// CONCATENATED MODULE: ./packages/collapse/src/collapse.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_collapsevue_type_script_lang_js_ = (collapsevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/collapse/src/collapse.vue





/* normalize component */

var collapse_component = normalizeComponent(
  src_collapsevue_type_script_lang_js_,
  collapsevue_type_template_id_4ff0d45d_render,
  collapsevue_type_template_id_4ff0d45d_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var collapse = (collapse_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/collapse/src/collapse-item.vue?vue&type=template&id=05b5b0e2&
var collapse_itemvue_type_template_id_05b5b0e2_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
    ("" + _vm.classPrefix),
    _vm.opened && (_vm.classPrefix + "--opened"),
    _vm.disabled && 'is-disabled'
]},[_c('div',{class:[(_vm.classPrefix + "__header")],on:{"click":_vm.handlerClick}},[(!_vm.hideArrow)?_c('Icon',{class:[(_vm.classPrefix + "__header-icon")],attrs:{"type":"right"}}):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__header-name")]},[_vm._t("title",[_vm._v("\n                "+_vm._s(_vm.name)+"\n            ")])],2),_vm._v(" "),_vm._t("extra")],2),_vm._v(" "),_c('SlideTransition',[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.opened),expression:"opened"}],class:[(_vm.classPrefix + "__content")]},[_c('div',{class:[(_vm.classPrefix + "__content-inner")]},[_vm._t("default")],2)])])],1)}
var collapse_itemvue_type_template_id_05b5b0e2_staticRenderFns = []


// CONCATENATED MODULE: ./packages/collapse/src/collapse-item.vue?vue&type=template&id=05b5b0e2&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/collapse/src/collapse-item.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//





/* harmony default export */ var collapse_itemvue_type_script_lang_js_ = ({
  name: 'CollapseItem',
  mixins: [emitter],
  props: {
    cKey: {
      type: String,
      required: true
    },
    name: String,
    disabled: Boolean,
    hideArrow: Boolean
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-collapse-item',
      componentName: 'CollapseItem',
      opened: false,
      collapseComponent: findComponent(this, 'Collapse')
    };
  },
  components: {
    SlideTransition: slide_transition,
    Icon: packages_icon
  },
  methods: {
    handlerClick: function handlerClick() {
      if (this.disabled) return;
      this.opened = !this.opened;
      this.parentEmit('Collapse', 'on-update-opened-key', this.cKey);
    }
  },
  watch: {
    'collapseComponent.currentOpenedKey': {
      handler: function handler(newVal) {
        if (this.disabled) return;

        if (!newVal) {
          this.opened = false;
          return;
        }

        this.opened = newVal.includes(this.cKey);
      },
      deep: true
    }
  }
});
// CONCATENATED MODULE: ./packages/collapse/src/collapse-item.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_collapse_itemvue_type_script_lang_js_ = (collapse_itemvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/collapse/src/collapse-item.vue





/* normalize component */

var collapse_item_component = normalizeComponent(
  src_collapse_itemvue_type_script_lang_js_,
  collapse_itemvue_type_template_id_05b5b0e2_render,
  collapse_itemvue_type_template_id_05b5b0e2_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var collapse_item = (collapse_item_component.exports);
// CONCATENATED MODULE: ./packages/collapse/index.js


collapse.Item = collapse_item;
/* harmony default export */ var packages_collapse = (collapse);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/grid/src/row.vue?vue&type=template&id=a59e0726&
var rowvue_type_template_id_a59e0726_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.rowClass,style:(_vm.rowStyle)},[_vm._t("default")],2)}
var rowvue_type_template_id_a59e0726_staticRenderFns = []


// CONCATENATED MODULE: ./packages/grid/src/row.vue?vue&type=template&id=a59e0726&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/grid/src/row.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//



/* harmony default export */ var rowvue_type_script_lang_js_ = ({
  name: 'Row',
  mixins: [emitter],
  props: {
    type: {
      type: String,
      validator: function validator(value) {
        return ['flex'].includes(value);
      }
    },
    align: {
      type: String,
      validator: function validator(value) {
        return ['top', 'middle', 'bottom'].includes(value);
      }
    },
    justify: {
      type: String,
      validator: function validator(value) {
        return ['start', 'end', 'center', 'space-around', 'space-between'].includes(value);
      }
    },
    gutter: {
      type: Number,
      default: 0
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-row',
      componentName: 'Row'
    };
  },
  computed: {
    rowClass: function rowClass() {
      var _ref;

      var classList = ["".concat(this.classPrefix), (_ref = {}, _defineProperty(_ref, "".concat(this.classPrefix, "--").concat(this.type), this.type), _defineProperty(_ref, "".concat(this.classPrefix, "--flex-").concat(this.align), this.align), _defineProperty(_ref, "".concat(this.classPrefix, "--flex-").concat(this.justify), this.justify), _ref)];

      if ((this.align || this.justify) && !this.type) {
        classList.push("".concat(this.classPrefix, "--flex"));
      }

      return classList;
    },
    rowStyle: function rowStyle() {
      var style = {};

      if (this.gutter) {
        style = {
          marginLeft: -(this.gutter / 2) + 'px',
          marginRight: -(this.gutter / 2) + 'px'
        };
      }

      return style;
    }
  },
  mounted: function mounted() {
    var _this = this;

    this.$on('on-update-span', function () {
      _this.initNoSetColChildrenSpan(); // 设置没有设置span的col

    });
  },
  methods: {
    initNoSetColChildrenSpan: function initNoSetColChildrenSpan() {
      var colChildren = findComponentDirectChildrens(this, 'Col');
      var allSpan = 0; // 所有span之和

      var noSpanComponents = []; // 没有设置span的元素（不包括设置为0的）

      var noSpanComponentsNum = 0;
      colChildren.forEach(function (item) {
        if (item.currentSpan !== -1) allSpan += parseFloat(item.currentSpan);else noSpanComponents.push(item);
      });
      noSpanComponentsNum = noSpanComponents.length; // 还有剩余空间可分配

      var freeSpace = 24 - parseFloat(allSpan); // 剩余空间量

      if (freeSpace >= 1) {
        var average = Math.floor(freeSpace / noSpanComponentsNum);

        var _average = Math.floor(freeSpace % noSpanComponentsNum); // 求余数，把余数的剩余量全部给最后一个元素
        // 如果剩余空间按平均分配不足，则全局分配给第一个元素


        if (average < 1) {
          noSpanComponents[0].currentSpan = freeSpace;
        } else {
          noSpanComponents.forEach(function (item, index) {
            if (index === noSpanComponentsNum - 1 && _average >= 1) {
              item.currentSpan = average + _average;
            } else {
              item.currentSpan = average;
            }
          });
        }
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/grid/src/row.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_rowvue_type_script_lang_js_ = (rowvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/grid/src/row.vue





/* normalize component */

var row_component = normalizeComponent(
  src_rowvue_type_script_lang_js_,
  rowvue_type_template_id_a59e0726_render,
  rowvue_type_template_id_a59e0726_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_row = (row_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/grid/src/col.vue?vue&type=template&id=44c859ef&
var colvue_type_template_id_44c859ef_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.colClass,style:(_vm.colStyle)},[_vm._t("default")],2)}
var colvue_type_template_id_44c859ef_staticRenderFns = []


// CONCATENATED MODULE: ./packages/grid/src/col.vue?vue&type=template&id=44c859ef&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/grid/src/col.vue?vue&type=script&lang=js&





//
//
//
//
//
//



var responseSize = ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'];
/* harmony default export */ var colvue_type_script_lang_js_ = ({
  name: 'Col',
  mixins: [emitter],
  props: {
    span: [Number, String],
    order: [Number, String],
    offset: [Number, String],
    push: [Number, String],
    pull: [Number, String],
    xs: [Number, Object],
    sm: [Number, Object],
    md: [Number, Object],
    lg: [Number, Object],
    xl: [Number, Object],
    xxl: [Number, Object]
  },
  data: function data() {
    var currentSpan = !this.span && this.span !== 0 || parseFloat(this.span) < 0 ? -1 : Math.floor(this.span);
    return {
      classPrefix: config.classPrefix + '-col',
      componentName: 'Col',
      currentSpan: currentSpan,
      parentRow: findComponent(this, 'Row'),
      gutter: 0
    };
  },
  computed: {
    colClass: function colClass() {
      var _ref,
          _this = this;

      var classList = ["".concat(this.classPrefix), (_ref = {}, _defineProperty(_ref, "".concat(this.classPrefix, "--span-").concat(this.currentSpan), this.currentSpan !== -1), _defineProperty(_ref, "".concat(this.classPrefix, "--order-").concat(this.order), this.order), _defineProperty(_ref, "".concat(this.classPrefix, "--offset-").concat(this.offset), this.offset), _defineProperty(_ref, "".concat(this.classPrefix, "--push-").concat(this.push), this.push), _defineProperty(_ref, "".concat(this.classPrefix, "--pull-").concat(this.pull), this.pull), _ref)];
      responseSize.forEach(function (size) {
        if (typeof _this[size] === 'number') {
          classList.push("".concat(_this.classPrefix, "--span-").concat(size, "-").concat(_this[size]));
        } else if (_typeof(_this[size]) === 'object') {
          var sizeObj = _this[size];
          Object.keys(sizeObj).forEach(function (key) {
            classList.push("".concat(_this.classPrefix, "--").concat(key, "-").concat(size, "-").concat(sizeObj[key]));
          });
        }
      });
      return classList;
    },
    colStyle: function colStyle() {
      var style = {};

      if (this.gutter) {
        style = {
          paddingLeft: this.gutter / 2 + 'px',
          paddingRight: this.gutter / 2 + 'px'
        };
      }

      return style;
    }
  },
  mounted: function mounted() {
    var _this2 = this;

    this.$nextTick(function () {
      _this2.updateGutter(_this2.parentRow && _this2.parentRow.gutter);

      _this2.parentEmit('Row', 'on-update-span');
    });
  },
  methods: {
    updateGutter: function updateGutter(value) {
      this.gutter = value;
    }
  },
  watch: {
    'parentRow.gutter': function parentRowGutter(newVal) {
      this.updateGutter(newVal);
    }
  }
});
// CONCATENATED MODULE: ./packages/grid/src/col.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_colvue_type_script_lang_js_ = (colvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/grid/src/col.vue





/* normalize component */

var col_component = normalizeComponent(
  src_colvue_type_script_lang_js_,
  colvue_type_template_id_44c859ef_render,
  colvue_type_template_id_44c859ef_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var col = (col_component.exports);
// CONCATENATED MODULE: ./packages/grid/index.js



// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tabs/src/tabs.vue?vue&type=template&id=1870ae2f&
var tabsvue_type_template_id_1870ae2f_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
         ("" + _vm.classPrefix),
         _vm.size && (_vm.classPrefix + "--" + _vm.size),
         _vm.type && (_vm.classPrefix + "--" + _vm.type),
         _vm.align && (_vm.classPrefix + "--" + _vm.align),
         _vm.border && (_vm.classPrefix + "--border") ]},[_c('div',{class:[
        (_vm.classPrefix + "__header")
    ]},[_c('div',{class:[(_vm.classPrefix + "__nav-wrap")]},[_c('scroll',{attrs:{"size":"small","scrollOption":_vm.scrollOption}},[_c('div',{class:[(_vm.classPrefix + "__nav")]},_vm._l((_vm.labelList),function(item){return _c('div',{key:item.cKey,class:[
                            (_vm.classPrefix + "__nav-item-wrap"),
                            _vm.activeTabIndex === item.index && "is-active",
                            item.disabled && "is-disabled" ],on:{"mouseenter":function($event){return _vm.navItemMouseEnter(item)},"mouseleave":function($event){return _vm.navItemMouseLeave(item)},"click":function($event){return _vm.tabClick(item)}}},[_c('div',{class:[(_vm.classPrefix + "__nav-item")],style:(_vm.navItemStyle(item))},[_c('div',{class:[(_vm.classPrefix + "__nav-item-name")],domProps:{"innerHTML":_vm._s(item.label)}}),_vm._v(" "),(_vm.closable)?_c('Icon',{class:[(_vm.classPrefix + "__close")],attrs:{"type":"close"},on:{"click":function($event){$event.stopPropagation();return _vm.close(item)}}}):_vm._e()],1)])}),0)])],1),_vm._v(" "),(_vm.align !== 'center')?_c('div',{class:[(_vm.classPrefix + "__extra")]},[_vm._t("extra")],2):_vm._e()]),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__wrap")]},[_c('div',{ref:"tabContent",class:[
                 (_vm.classPrefix + "__content"),
                 _vm.animation && (_vm.classPrefix + "__content-animation")
             ],style:(_vm.contentStyle)},[_vm._t("default")],2)])])}
var tabsvue_type_template_id_1870ae2f_staticRenderFns = []


// CONCATENATED MODULE: ./packages/tabs/src/tabs.vue?vue&type=template&id=1870ae2f&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tabs/src/tabs.vue?vue&type=script&lang=js&








function tabsvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function tabsvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { tabsvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { tabsvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//





/* harmony default export */ var tabsvue_type_script_lang_js_ = ({
  name: 'Tabs',
  mixins: [emitter],
  props: {
    value: String,
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    type: {
      type: String,
      default: 'line',
      validator: function validator(value) {
        return ['line', 'card'].includes(value);
      }
    },
    closable: Boolean,
    align: {
      type: String,
      default: 'left',
      validator: function validator(value) {
        return ['left', 'center', 'right'].includes(value);
      }
    },
    border: Boolean,
    // 是否需要边框
    navStyle: {
      type: Object,
      default: function _default() {
        return {
          defaultBackground: '',
          activeBackground: '',
          defaultColor: '',
          activeColor: '',
          defaultBorderColor: '',
          activeBorderColor: ''
        };
      }
    },
    // 自定义nav样式
    animation: {
      type: Boolean,
      default: true
    } // 是否需要动画效果

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-tabs',
      componentName: 'Tabs',
      labelList: [],
      activeTabIndex: '',
      scrollOption: {
        scrollPanel: {
          scrollingY: false
        },
        bar: {
          onlyShowBarOnScroll: false
        }
      }
    };
  },
  computed: {
    contentStyle: function contentStyle() {
      var x = this.activeTabIndex * 100;
      return {
        transform: "translateX(".concat(-x, "%)")
      };
    },
    navItemStyle: function navItemStyle() {
      return function (item) {
        var _this$navStyle = this.navStyle,
            defaultBackground = _this$navStyle.defaultBackground,
            activeBackground = _this$navStyle.activeBackground,
            defaultColor = _this$navStyle.defaultColor,
            activeColor = _this$navStyle.activeColor,
            defaultBorderColor = _this$navStyle.defaultBorderColor,
            activeBorderColor = _this$navStyle.activeBorderColor;
        var style = {
          backgroundColor: defaultBackground || '',
          color: defaultColor || ''
        };

        if (this.activeTabIndex === item.index) {
          style = tabsvue_type_script_lang_js_objectSpread(tabsvue_type_script_lang_js_objectSpread({}, style), {}, {
            backgroundColor: activeBackground,
            color: activeColor
          });
        }

        if (item.hover && !item.disabled) {
          style = tabsvue_type_script_lang_js_objectSpread(tabsvue_type_script_lang_js_objectSpread({}, style), {}, {
            color: activeColor
          });
        }

        if (this.type === 'card') {
          if (defaultBorderColor) {
            style = tabsvue_type_script_lang_js_objectSpread(tabsvue_type_script_lang_js_objectSpread({}, style), {}, {
              borderTopWidth: '2px',
              borderTopStyle: 'solid',
              borderTopColor: defaultBorderColor,
              borderLeftColor: defaultBorderColor,
              borderRightColor: defaultBorderColor
            });
          }

          if (this.activeTabIndex === item.index) {
            style = tabsvue_type_script_lang_js_objectSpread(tabsvue_type_script_lang_js_objectSpread({}, style), {}, {
              borderTopColor: activeBorderColor,
              borderLeftColor: activeBorderColor,
              borderRightColor: activeBorderColor
            });
          }
        } else if (this.type === 'line' && activeBorderColor && this.activeTabIndex === item.index) {
          style = tabsvue_type_script_lang_js_objectSpread(tabsvue_type_script_lang_js_objectSpread({}, style), {}, {
            borderBottomColor: activeBorderColor
          });
        }

        return style;
      };
    }
  },
  components: {
    Scroll: packages_scroll,
    Icon: packages_icon
  },
  mounted: function mounted() {
    var _this = this;

    this.$on('on-update-label-list', function () {
      _this.updateLabelList();
    });
  },
  methods: {
    getTabs: function getTabs() {
      var labelList = findComponentDirectChildrens(this, 'TabPane');
      labelList.sort(function (a, b) {
        if (a.order && b.order) {
          return a.order - b.order;
        }
      });
      return labelList;
    },
    updateLabelList: function updateLabelList() {
      var _this2 = this;

      this.labelList = [];
      this.getTabs().forEach(function (item, index) {
        _this2.labelList.push({
          index: index,
          cKey: item.cKey,
          label: item.labelValue,
          disabled: item.disabled,
          hover: false,
          el: item
        });
      });
      this.updateActiveTabIndex(this.value);
    },
    updateActiveTabIndex: function updateActiveTabIndex(value) {
      var activePane = this.labelList.filter(function (item) {
        return item.cKey === value;
      });
      this.activeTabIndex = '';

      if (activePane && activePane.length) {
        this.activeTabIndex = activePane[0].index;
      } else if (this.labelList.length) {
        this.activeTabIndex = this.labelList[0].index;
      }
    },
    tabClick: function tabClick(tabData) {
      if (tabData.disabled) return;
      this.activeTabIndex = tabData.index;
      this.$emit('tab-click', tabData.cKey);
    },
    close: function close(tabData) {
      this.$refs.tabContent.removeChild(tabData.el.$el);
      tabData.el && tabData.el.$destroy();
      this.updateLabelList();
      this.$emit('tab-remove', tabData.cKey);
    },
    navItemMouseEnter: function navItemMouseEnter(tabData) {
      tabData.hover = true;
    },
    navItemMouseLeave: function navItemMouseLeave(tabData) {
      tabData.hover = false;
    }
  },
  watch: {
    value: function value(newVal) {
      this.updateActiveTabIndex(newVal);
    },
    activeTabIndex: function activeTabIndex(newVal) {
      var activePane = this.labelList.filter(function (item) {
        return item.index === newVal;
      });

      if (activePane && activePane.length) {
        this.$emit('input', activePane[0].cKey);
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/tabs/src/tabs.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_tabsvue_type_script_lang_js_ = (tabsvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/tabs/src/tabs.vue





/* normalize component */

var tabs_component = normalizeComponent(
  src_tabsvue_type_script_lang_js_,
  tabsvue_type_template_id_1870ae2f_render,
  tabsvue_type_template_id_1870ae2f_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var tabs = (tabs_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tabs/src/tab-pane.vue?vue&type=template&id=55c2c7a8&
var tab_panevue_type_template_id_55c2c7a8_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)],style:(_vm.tabPaneStyle)},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(false),expression:"false"}]},[_vm._t("label")],2),_vm._v(" "),_vm._t("default")],2)}
var tab_panevue_type_template_id_55c2c7a8_staticRenderFns = []


// CONCATENATED MODULE: ./packages/tabs/src/tab-pane.vue?vue&type=template&id=55c2c7a8&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tabs/src/tab-pane.vue?vue&type=script&lang=js&

//
//
//
//
//
//
//
//
//



/* harmony default export */ var tab_panevue_type_script_lang_js_ = ({
  name: 'TabPane',
  mixins: [emitter],
  props: {
    label: {
      type: String,
      default: ''
    },
    cKey: {
      type: String,
      required: true
    },
    disabled: Boolean,
    order: Number // 在pane使用v-if时并不会按照预期的顺序进行排序，此时可以使用order属性设置顺序（此值需要大于0并且不可重复）

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-tab-pane',
      componentName: 'TabPane',
      parentTabsComponent: findComponent(this, 'Tabs')
    };
  },
  computed: {
    labelValue: function labelValue() {
      var label = this.label;

      if (this.$slots.label && this.$slots.label[0].elm.outerHTML) {
        label = this.$slots.label[0].elm.outerHTML;
      }

      return label;
    },
    tabPaneIndex: function tabPaneIndex() {
      var _this = this;

      var currentPane = this.parentTabsComponent.labelList.filter(function (item) {
        return item.cKey === _this.cKey;
      });
      var index = -1;

      if (currentPane && currentPane.length) {
        index = currentPane[0].index;
      }

      return index;
    },
    tabPaneStyle: function tabPaneStyle() {
      return {
        visibility: this.tabPaneIndex === this.parentTabsComponent.activeTabIndex ? 'visible' : 'hidden',
        order: this.tabPaneIndex
      };
    }
  },
  mounted: function mounted() {
    this.triggerUpdate();
  },
  methods: {
    triggerUpdate: function triggerUpdate() {
      var _this2 = this;

      this.$nextTick(function () {
        _this2.parentEmit('Tabs', 'on-update-label-list');
      });
    }
  },
  beforeDestroy: function beforeDestroy() {
    this.triggerUpdate();
  }
});
// CONCATENATED MODULE: ./packages/tabs/src/tab-pane.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_tab_panevue_type_script_lang_js_ = (tab_panevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/tabs/src/tab-pane.vue





/* normalize component */

var tab_pane_component = normalizeComponent(
  src_tab_panevue_type_script_lang_js_,
  tab_panevue_type_template_id_55c2c7a8_render,
  tab_panevue_type_template_id_55c2c7a8_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var tab_pane = (tab_pane_component.exports);
// CONCATENATED MODULE: ./packages/tabs/index.js



// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tree/src/tree.vue?vue&type=template&id=5cd8baf6&
var treevue_type_template_id_5cd8baf6_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[_c('tree-node',{directives:[{name:"show",rawName:"v-show",value:(!_vm.filterLoading),expression:"!filterLoading"}],attrs:{"data":_vm.currentData}}),_vm._v(" "),(_vm.isEmpty)?_c('div',{class:[(_vm.classPrefix + "__empty")]},[_vm._v(_vm._s(_vm.localEmptyText))]):_vm._e()],1)}
var treevue_type_template_id_5cd8baf6_staticRenderFns = []


// CONCATENATED MODULE: ./packages/tree/src/tree.vue?vue&type=template&id=5cd8baf6&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tree/src/tree-node.vue?vue&type=template&id=beb9ed6a&
var tree_nodevue_type_template_id_beb9ed6a_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},_vm._l((_vm.data),function(item){return _c('div',{key:item.key,class:[(_vm.classPrefix + "__item")]},[(item.__visible)?[_c('div',{class:[
                    (_vm.classPrefix + "__title"),
                    item.__expand && 'is-expand',
                    item.__disabled && 'is-disabled' ],style:(_vm.titleStyle(item)),on:{"click":function($event){$event.stopPropagation();return _vm.handleClick(item)}}},[(!_vm.treeRoot.hideIcon)?_c('span',{class:[(_vm.classPrefix + "__expand-icon")],on:{"click":function($event){$event.stopPropagation();return _vm.handleExpandClick(item)}}},[(item.__loading)?_c('Icon',{class:[_vm.treeRoot.loadingIconClass, "animation-rotate"],attrs:{"type":_vm.treeRoot.loadingIconClass}}):(item.__more)?_c('Icon',{class:_vm.treeRoot.expandIconClass,attrs:{"type":_vm.treeRoot.expandIconClass}}):_vm._e()],1):_vm._e(),_vm._v(" "),(_vm.parentComponent.showCheckbox)?_c('checkbox',{class:[(_vm.classPrefix + "__checkbox")],attrs:{"indeterminate":item.__indeterminate,"disabled":item.__disabled || item.__disabledCheckbox},on:{"change":function (value) { return _vm.handleCheckboxChange(value, item); }},nativeOn:{"click":function($event){$event.stopPropagation();}},model:{value:(item.__checked),callback:function ($$v) {_vm.$set(item, "__checked", $$v)},expression:"item.__checked"}}):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__label")]},[_c('Render',_vm._b({},'Render',_vm.renderProps(item),false))],1)],1),_vm._v(" "),_c('slide-transition',[(item.__expand && item.__more)?_c('tree-node',{key:item.key,attrs:{"data":item.children}}):_vm._e()],1)]:_vm._e()],2)}),0)}
var tree_nodevue_type_template_id_beb9ed6a_staticRenderFns = []


// CONCATENATED MODULE: ./packages/tree/src/tree-node.vue?vue&type=template&id=beb9ed6a&

// CONCATENATED MODULE: ./packages/tree/src/render.js

/* harmony default export */ var src_render = ({
  name: 'RenderNode',
  functional: true,
  inject: ['treeRoot'],
  props: {
    type: String,
    renderContent: Function,
    data: Object,
    root: Array
  },
  render: function render(h, ctx) {
    if (ctx.props.type === 'slot') {
      var r = ctx.injections.treeRoot.$scopedSlots.default;

      if (r) {
        return h('div', r({
          root: ctx.props.root,
          data: ctx.props.data
        }));
      }

      return null;
    } else if (ctx.props.type === 'render') {
      var params = {
        root: ctx.props.root,
        data: ctx.props.data
      };
      var renderContent = ctx.props.renderContent(h, params);

      if (typeof renderContent === 'string') {
        renderContent = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend({
          template: renderContent
        });
        return h(renderContent);
      }

      return renderContent;
    }

    return h('div', ctx.props.data && ctx.props.data.label);
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tree/src/tree-node.vue?vue&type=script&lang=js&

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//







/* harmony default export */ var tree_nodevue_type_script_lang_js_ = ({
  name: 'TreeNode',
  mixins: [emitter],
  inject: ['treeRoot'],
  props: {
    data: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    asyncLoading: Boolean // 是否开启异步数据加载

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-tree-node',
      parentComponent: findComponent(this, 'Tree')
    };
  },
  computed: {
    titleStyle: function titleStyle() {
      return function (item) {
        return {
          paddingLeft: item.__deepIndex * parseFloat(this.treeRoot.indent) + 'px'
        };
      };
    },
    renderProps: function renderProps() {
      return function (item) {
        var props = {
          type: this.parentComponent.renderType,
          data: this.parentComponent.getDataFromRenderDataByKey(item.key),
          root: this.parentComponent.renderData
        };

        if (props.type === 'render') {
          props.renderContent = this.parentComponent.renderContent;
        }

        return props;
      };
    }
  },
  components: {
    SlideTransition: slide_transition,
    Render: src_render,
    Icon: packages_icon,
    Checkbox: packages_checkbox
  },
  methods: {
    handleClick: function handleClick(item) {
      if (this.parentComponent.expandClickOnNode) {
        this.handleExpandClick(item);
      }
    },
    handleExpandClick: function handleExpandClick(item) {
      var _this = this;

      if (item.__disabled || item.__loading) return;

      if (this.parentComponent.loadData && !item.last && (!item.children || !item.children.length)) {
        this.parentComponent.setReduceDataProp(item, '__loading', true);
        var promise = this.parentComponent.loadData(item);

        if (_typeof(promise) === 'object' && promise.then) {
          promise.then(function (result) {
            _this.parentComponent.setReduceDataProp(item, 'children', result);

            _this.parentComponent.setReduceDataProp(item, '__loading', false);
          }).catch(function (e) {
            console.log(e);

            _this.parentComponent.setReduceDataProp(item, '__loading', false);
          });
        }
      }

      this.parentComponent.setReduceDataProp(item, '__expand', !item.__expand, 'node');
    },
    handleCheckboxChange: function handleCheckboxChange(value, item) {
      if (item.__disabled || item.__disabledCheckbox || !this.parentComponent.showCheckbox) return;
      this.parentComponent.setReduceDataProp(item, '__checked', value, 'node');
    }
  }
});
// CONCATENATED MODULE: ./packages/tree/src/tree-node.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_tree_nodevue_type_script_lang_js_ = (tree_nodevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/tree/src/tree-node.vue





/* normalize component */

var tree_node_component = normalizeComponent(
  src_tree_nodevue_type_script_lang_js_,
  tree_nodevue_type_template_id_beb9ed6a_render,
  tree_nodevue_type_template_id_beb9ed6a_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var tree_node = (tree_node_component.exports);
// CONCATENATED MODULE: ./packages/tree/src/mixins.js






/* harmony default export */ var src_mixins = ({
  data: function data() {
    return {
      currentData: [],
      reduceData: [],
      renderData: [],
      initHasChecked: false,
      // 初始数据是否存在checked的项
      initHasDisabled: false,
      // 初始数据是否存在disabled的项
      initHasExpand: false,
      // 初始数据是否存在expand的项
      isExpandKeysChange: false,
      defaultLoad: true // 是否是默认第一次加载数据

    };
  },
  methods: {
    // 深度克隆并给指定data添加初始值
    deepCloneData: function deepCloneData(data, parentItem) {
      var _this = this;

      if (!data || !data.length) return [];
      var deepData = JSON.parse(JSON.stringify(data));
      var index = parentItem ? parseInt(parentItem.__deepIndex) + 1 : 0;

      var fn = function fn(data, parentItem) {
        data.forEach(function (item, i) {
          var pathIndex = parentItem && parentItem.__pathIndex ? parentItem.__pathIndex + '.' + i : i.toString();
          var pathLabel = parentItem && parentItem.__pathLabel ? parentItem.__pathLabel + ' / ' + item.label : item.label;
          if (!item.children) item.children = [];
          item.__deepIndex = index.toString();
          item.__pathIndex = pathIndex;
          item.__visible = item.__visible || true; // 该值控制当前项的显示

          item.__expand = item.expand || item.__expand || false; // 该值控制children的显示

          item.__disabled = item.disabled || item.__disabled || false;
          item.__more = item.children && item.children.length;
          item.__loading = item.__loading || false;
          item.__selected = item.selected || item.__selected || false;
          item.__checked = _this.showCheckbox ? item.checked || item.__checked || false : false;
          item.__disabledCheckbox = item.disabledCheckbox || item.__disabledCheckbox || false;
          item.__indeterminate = item.__indeterminate || false;
          item.__pathLabel = pathLabel || '';
          item.rootParentKey = parentItem ? parentItem.rootParentKey : item.key; // 父级根节点的key

          item.parentKey = parentItem ? parentItem.key : ''; // 直接父级的key

          item.allparentKeys = parentItem ? [parentItem.key].concat(_toConsumableArray(parentItem.allparentKeys)) : [];
          item.childrenKeys = [];
          item.allChildrenKeys = [];

          if (_this.defaultLoad && _this.defaultExpandAll && !item.__disabled) {
            item.__expand = true;
          }

          if (_this.loadData) {
            item.__more = !item.last;
          }

          if (item.__disabled) _this.initHasDisabled = true;
          if (item.__checked) _this.initHasChecked = true;
          if (item.__expand) _this.initHasExpand = true;

          if (item.children && item.children.length) {
            index++;
            fn(item.children, item);
            index--;
          }
        });
      };

      fn(deepData, parentItem);
      this.defaultLoad = false;
      return deepData;
    },
    // 平铺数据
    tileData: function tileData(data) {
      var deepData = JSON.parse(JSON.stringify(data));

      var fn = function fn(data) {
        if (!data || !data.length) return [];
        return data.reduce(function (r, item) {
          return r.concat(item).concat(fn(item.children));
        }, []);
      };

      return fn(deepData);
    },
    // 设置childrenKey信息
    setChildrenKeys: function setChildrenKeys(data) {
      if (!Array.isArray(data)) return data;

      for (var i = 0; i < data.length; i++) {
        var childrenKeys = [];
        var allChildrenKeys = [];

        for (var j = 0; j < data.length; j++) {
          if (data[j].allparentKeys.includes(data[i].key)) {
            allChildrenKeys.push(data[j].key);
          }

          if (data[j].parentKey === data[i].key) {
            childrenKeys.push(data[j].key);
          }
        }

        data[i].childrenKeys = childrenKeys;
        data[i].allChildrenKeys = allChildrenKeys;
      }

      return data;
    },

    /**
     * 设置reduceData的值
     * @param item 指定要设置的项
     * @param prop 要设置的属性
     * @param value 设置的值
     * @param source 触发的来源 node(节点触发)
     */
    setReduceDataProp: function setReduceDataProp(item, prop, value, source) {
      var _this2 = this;

      var key = item.key;
      var rootParentKey = item.rootParentKey;

      if (prop === 'children') {
        value = this.deepCloneData(value, item);
      }

      this.reduceData.forEach(function (item) {
        if (prop === '__expand' && !item.__disabled) {
          // 如果是手风琴模式 不是该根节点下的子项都设置为false
          if (_this2.accordion && item.rootParentKey !== rootParentKey) item[prop] = false; // 如果value为true 所有父级都展开

          if (item.allChildrenKeys.includes(key) && value) item[prop] = value; // 如果value为false 所有子级收起

          if (item.allparentKeys.includes(key) && !value) item[prop] = value; // 当前项设置

          if (item.key === key) item[prop] = value;
        }

        if (_this2.showCheckbox && prop === '__checked') {
          // 如果严格控制checked 只改变当前项的checked
          // if(this.checkStrictly && item.key === key && !item.__disabled) item[prop] = value;
          // 如果不严格控制checked 所有子级的checked改变
          if (!_this2.checkStrictly && item.allparentKeys.includes(key)) {
            item[prop] = value;
            item['__indeterminate'] = false;
          } // 当前项设置


          if (item.key === key) item['__indeterminate'] = false;
        }

        if (prop === '__visible') {
          // 如果value为true 所有父级显示
          if (item.allChildrenKeys.includes(key) && !!value) item[prop] = value; // 如果value为false 所有子级隐藏

          if (item.allChildrenKeys.includes(key) && !value) item[prop] = value; // 当前项设置

          if (item.key === key) item[prop] = value;
        }

        if (item.key === key && !item.__disabled) item[prop] = value;
      }); // 如果不是严格控制 所有父级checked改变

      if (prop === '__checked' && !this.checkStrictly) {
        this.setCheckboxStatus(item);
      }

      if (prop === 'children') {
        var filterData = this.reduceData.filter(function (item) {
          return !item.parentKey;
        });
        this.initData(filterData);
      }

      if (source === 'node' && prop === '__expand') {
        this.expandChange(item);
      }

      if (source === 'node' && prop === '__checked') {
        this.checkChange(item);
      }
    },
    // 设置被改变项的所有父级的Indeterminate和checked
    setCheckboxStatus: function setCheckboxStatus(item) {
      var _this3 = this;

      if (!this.reduceData || !this.reduceData.length) return;
      var key = item.key;
      var checked = item.__checked;
      this.reduceData.forEach(function (_item) {
        if (_item.allChildrenKeys.includes(key)) {
          var childrenCheckedArray = _this3.getChildrenPropValue(_item, '__checked'); // 选中时 子项有没有选中的即为indeterminate


          if (checked) {
            _item.__indeterminate = childrenCheckedArray.includes(false);
            _item.__checked = !childrenCheckedArray.includes(false);
          } // 取消选中时 子项有一项checked即为indeterminate


          if (!checked) {
            _item.__indeterminate = childrenCheckedArray.includes(true);
            _item.__checked = false;
          }
        }
      });
    },
    // expandKey改变触发
    expandKeysChange: function expandKeysChange() {
      var _this4 = this;

      if (!this.reduceData.length) return;
      this.isExpandKeysChange = true;
      var expandData = this.reduceData.filter(function (item) {
        return _this4.expandKeys.includes(item.key);
      });
      expandData.forEach(function (item) {
        _this4.setReduceDataProp(item, '__expand', true);
      });
      this.isExpandKeysChange = false;
    },
    // checkedKey改变触发
    checkedKeysChange: function checkedKeysChange() {
      var _this5 = this;

      if (!this.reduceData.length || !this.showCheckbox) return;
      var checkedData = this.reduceData.filter(function (item) {
        return _this5.checkedKeys.includes(item.key);
      });
      checkedData.forEach(function (item) {
        _this5.setReduceDataProp(item, '__checked', true);
      });
    },
    // 获取所有子级指定prop属性的value值的数组集合
    getChildrenPropValue: function getChildrenPropValue(item, prop) {
      // if(!this.reduceData || !this.reduceData.length) return;
      var result = [];
      var key = item.key;
      this.reduceData.forEach(function (_item) {
        if (_item.allparentKeys.includes(key) && _item.key !== key) {
          result.push(_item[prop]);
        }
      });
      return result;
    },
    // 获取所有子级指定prop=value值的项的数组和keys数组
    getDataByPropValue: function getDataByPropValue(prop, value) {
      // if(!this.reduceData || !this.reduceData.length) return;
      var result = {
        data: [],
        keys: []
      };
      this.reduceData.forEach(function (item) {
        if (item[prop] === value) {
          result.data.push(item);
          result.keys.push(item.key);
        }
      });
      return result;
    },
    // 获取label满足搜索value的项
    getDataByfilterValue: function getDataByfilterValue(value) {
      // if(!this.reduceData || !this.reduceData.length) return;
      if (!value.trim()) return;
      var result = [];
      this.reduceData.forEach(function (item) {
        if (item.label.includes(value)) {
          result.push(item);
        }
      });
      return result;
    },
    // 初始化reduceData
    initData: function initData(data) {
      var _this6 = this;

      var deepData = this.deepCloneData(data || this.data);
      deepData = this.tileData(deepData);
      this.setChildrenKeys(deepData);
      this.reduceData = deepData;

      if (this.showCheckbox && this.initHasChecked && !this.checkStrictly) {
        // 过滤出所有checked被选中的项
        var checkedData = this.getDataByPropValue('__checked', true).data;

        if (checkedData.length) {
          checkedData.forEach(function (item) {
            _this6.setReduceDataProp(item, '__checked', true);
          });
        }
      }

      if (this.initHasExpand) {
        // 过滤出所有expand项
        var expandData = this.getDataByPropValue('__expand', true).data;

        if (expandData.length) {
          expandData.forEach(function (item) {
            _this6.setReduceDataProp(item, '__expand', true);
          });
        }
      } // if(this.initHasDisabled){
      //     //过滤出所有disabled项
      //     let disabledData = this.filterDataByPropValue('__disabled', true, 'eq');
      //
      //     if(disabledData.length){
      //         disabledData.forEach(item=>{
      //             this.setData('__disabled', item, true);
      //         })
      //     }
      // }


      if (this.expandKeys.length) {
        this.expandKeysChange();
      }

      if (this.checkedKeys.length) {
        this.checkedKeysChange();
      }
    },
    // 设置currentData
    setCurrentData: function setCurrentData() {
      var reduceData = JSON.parse(JSON.stringify(this.reduceData));
      var result = [];
      reduceData.forEach(function (item) {
        if (!item.parentKey) result.push(item);
      });
      this.currentData = result;
    },
    setRenderData: function setRenderData() {
      var deepReduceData = JSON.parse(JSON.stringify(this.reduceData));
      deepReduceData = deepReduceData.filter(function (item) {
        return !item.parentKey;
      });
      deepReduceData = this.tileData(deepReduceData);
      this.renderData = deepReduceData;
    },
    renderDataChange: function renderDataChange() {
      if (JSON.stringify(this.renderData) === JSON.stringify(this.reduceData)) return; // if(!this.renderData || !this.renderData.length) return;

      var result = this.renderData.filter(function (item) {
        return !item.parentKey;
      });
      this.initData(result);
    },
    getDataFromRenderDataByKey: function getDataFromRenderDataByKey(key) {
      if (!this.renderData || !this.renderData.length) return null;
      var result = this.renderData.filter(function (item) {
        return item.key === key;
      });
      if (result && result.length) return result[0];
      return null;
    }
  },
  watch: {
    data: {
      handler: function handler() {
        this.initData();
      },
      deep: true,
      immediate: true
    },
    reduceData: {
      handler: function handler() {
        this.setRenderData();
        this.setCurrentData();
      },
      deep: true,
      immediate: true
    },
    renderData: {
      handler: function handler() {
        this.renderDataChange();
      },
      deep: true
    },
    expandKeys: {
      handler: function handler() {
        this.expandKeysChange();
      },
      deep: true,
      immediate: true
    },
    checkedKeys: {
      handler: function handler() {
        this.checkedKeysChange();
      },
      deep: true,
      immediate: true
    }
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/tree/src/tree.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//




/* harmony default export */ var treevue_type_script_lang_js_ = ({
  name: 'Tree',
  mixins: [mixins_locale, src_mixins],
  provide: function provide() {
    return {
      treeRoot: this
    };
  },
  props: {
    data: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    // 相邻数据节点之间水平缩进大小，单位px
    indent: {
      type: [String, Number],
      default: 16
    },
    // 过滤node节点执行的方法 暂时不用
    filterNodeMethods: {
      type: Function,
      default: function _default() {
        return function () {
          return true;
        };
      }
    },
    // 是否默认展开所有数据
    defaultExpandAll: Boolean,
    // 隐藏节点前的图标(包括展开收起和加载中的图标)
    hideIcon: Boolean,
    // 自定义展开收起图标
    expandIconClass: {
      type: String,
      default: 'right'
    },
    // 自定义加载中的图标
    loadingIconClass: {
      type: String,
      default: 'loading'
    },
    // 异步加载数据的方法，参数为当前选择项，返回Promise
    loadData: {
      type: Function
    },
    accordion: Boolean,
    // 手风琴模式，开启后每次最多展开一个子菜单
    emptyText: String,
    showCheckbox: Boolean,
    checkStrictly: Boolean,
    // 显示checkbox的情况下是否遵循父子不相关联
    expandKeys: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    checkedKeys: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    renderContent: {
      type: Function
    },
    expandClickOnNode: {
      type: Boolean,
      default: true
    } // 是否在点击节点的时候收起或展开

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-tree',
      componentName: 'Tree',
      renderType: 'normal',
      filterLoading: false // 搜索中

    };
  },
  computed: {
    localEmptyText: function localEmptyText() {
      return this.emptyText ? this.emptyText : this.t('m.tree.emptyData');
    },
    isEmpty: function isEmpty() {
      if (this.currentData && this.currentData.length) {
        var visibleData = this.currentData.filter(function (item) {
          return !!item.__visible;
        });
        return !visibleData.length;
      }

      return !this.currentData || !this.currentData.length;
    }
  },
  components: {
    TreeNode: tree_node
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.setRenderType();
    });
  },
  methods: {
    setRenderType: function setRenderType() {
      this.renderType = 'normal';

      if (this.$scopedSlots.default) {
        this.renderType = 'slot';
      }

      if (this.renderContent) {
        this.renderType = 'render';
      }
    },
    getExpandNodes: function getExpandNodes() {
      return this.getDataByPropValue('__expand', true).data;
    },
    getCheckedNodes: function getCheckedNodes() {
      return this.getDataByPropValue('__checked', true).data;
    },
    getSelectedNodes: function getSelectedNodes() {
      return this.getDataByPropValue('__selected', true).data;
    },
    filterNodes: function filterNodes(value) {
      var _this2 = this;

      this.filterLoading = true;

      if (!value.trim()) {
        this.reduceData.forEach(function (item) {
          item.__visible = true;
          item.__expand = true;
        });
      } else {
        this.reduceData.forEach(function (item) {
          item.__visible = false;
          item.__expand = false;
        });
        var data = this.getDataByfilterValue(value);
        data.forEach(function (item) {
          _this2.setReduceDataProp(item, '__visible', true);

          _this2.setReduceDataProp(item, '__expand', true);
        });
      }

      this.$nextTick(function () {
        _this2.filterLoading = false;
      });
    },
    // 提供给上层调用的
    getData: function getData() {
      return JSON.parse(JSON.stringify(this.reduceData));
    },
    expandChange: function expandChange(item) {
      var expandData = this.getExpandNodes();
      this.$emit('expand-change', expandData, item);
    },
    checkChange: function checkChange(item) {
      var checkedData = this.getCheckedNodes();
      this.$emit('check-change', checkedData, item);
    }
  }
});
// CONCATENATED MODULE: ./packages/tree/src/tree.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_treevue_type_script_lang_js_ = (treevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/tree/src/tree.vue





/* normalize component */

var tree_component = normalizeComponent(
  src_treevue_type_script_lang_js_,
  treevue_type_template_id_5cd8baf6_render,
  treevue_type_template_id_5cd8baf6_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var tree = (tree_component.exports);
// CONCATENATED MODULE: ./packages/tree/index.js

/* harmony default export */ var packages_tree = (tree);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/page/src/page.vue?vue&type=template&id=7c11a877&
var pagevue_type_template_id_7c11a877_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!(_vm.hidenOnlySinglePage && _vm.allPage <= 1))?_c('div',{class:[
        ("" + _vm.classPrefix),
        typeof _vm.background === 'boolean' && _vm.background && (_vm.classPrefix + "--background"),
        typeof _vm.border === 'boolean' && _vm.border && (_vm.classPrefix + "--border"),
        _vm.size === 'mini' && (_vm.classPrefix + "--mini") ]},[(_vm.orderList('total') > -1)?_c('div',{class:[
             (_vm.classPrefix + "__common"),
              (_vm.classPrefix + "__total")
         ],style:({order: _vm.orderList('total')})},[_vm._v("\n        "+_vm._s(_vm.localeTotalText.replace('{total}', _vm.total))+"\n    ")]):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__content")],style:({order: _vm.orderList('page')})},[_c('div',{class:[
                (_vm.classPrefix + "__common"),
                (_vm.classPrefix + "__item"),
                (_vm.classPrefix + "__pre"),
                _vm.currentPage === 1 && (_vm.classPrefix + "__item-disabled")
             ],on:{"click":function($event){$event.stopPropagation();return _vm.changePage(_vm.currentPage - 1)}}},[(_vm.preText)?[_vm._v(_vm._s(_vm.preText))]:_c('Icon',{attrs:{"type":"left"}})],2),_vm._v(" "),_c('div',{class:[
                 (_vm.classPrefix + "__common"),
                 (_vm.classPrefix + "__item"),
                 (_vm.classPrefix + "__item-first"),
                 _vm.currentPage === 1 && (_vm.classPrefix + "__item-active")
             ],on:{"click":function($event){$event.stopPropagation();return _vm.changePage(1)}}},[_vm._v("1\n        ")]),_vm._v(" "),(_vm.pageItemPreShow)?_c('div',{class:[
                 (_vm.classPrefix + "__common"),
                 (_vm.classPrefix + "__item"),
                 (_vm.classPrefix + "__item-jump-pre") ],on:{"mouseenter":function($event){return _vm.jumpMouseEnter('pre')},"mouseleave":function($event){return _vm.jumpMouseLeave('pre')},"click":function($event){$event.stopPropagation();return _vm.jumpPage('pre')}}},[_c('Icon',{attrs:{"type":_vm.jumpPreIcon}})],1):_vm._e(),_vm._v(" "),_vm._l((_vm.allPage),function(item){return [(_vm.pageShow(item))?_c('div',{key:item,class:[
                     (_vm.classPrefix + "__common"),
                     (_vm.classPrefix + "__item"),
                     _vm.currentPage === item && (_vm.classPrefix + "__item-active")
                 ],on:{"click":function($event){$event.stopPropagation();return _vm.changePage(item)}}},[_vm._v(_vm._s(item)+"\n            ")]):_vm._e()]}),_vm._v(" "),(_vm.pageItemNextShow)?_c('div',{class:[
                 (_vm.classPrefix + "__common"),
                 (_vm.classPrefix + "__item"),
                 (_vm.classPrefix + "__item-jump-next") ],on:{"mouseenter":function($event){return _vm.jumpMouseEnter('next')},"mouseleave":function($event){return _vm.jumpMouseLeave('next')},"click":function($event){$event.stopPropagation();return _vm.jumpPage('next')}}},[_c('Icon',{attrs:{"type":_vm.jumpNextIcon}})],1):_vm._e(),_vm._v(" "),(_vm.allPage > 1)?_c('div',{class:[
                 (_vm.classPrefix + "__common"),
                 (_vm.classPrefix + "__item"),
                 (_vm.classPrefix + "__item-final"),
                 _vm.currentPage === _vm.allPage && (_vm.classPrefix + "__item-active")
             ],on:{"click":function($event){$event.stopPropagation();return _vm.changePage(_vm.allPage)}}},[_vm._v(_vm._s(_vm.allPage)+"\n        ")]):_vm._e(),_vm._v(" "),_c('div',{class:[
                 (_vm.classPrefix + "__common"),
                 (_vm.classPrefix + "__item"),
                 (_vm.classPrefix + "__next"),
                 _vm.currentPage === _vm.allPage && (_vm.classPrefix + "__item-disabled")
             ],on:{"click":function($event){$event.stopPropagation();return _vm.changePage(_vm.currentPage + 1)}}},[(_vm.nextText)?[_vm._v(_vm._s(_vm.nextText))]:_c('Icon',{attrs:{"type":"right"}})],2)],2),_vm._v(" "),(_vm.orderList('pageSize') > -1)?_c('div',{class:[
             (_vm.classPrefix + "__common"),
             (_vm.classPrefix + "__page-size") ],style:({order: _vm.orderList('pageSize')})},[_c('Select',{class:[(_vm.classPrefix + "__page-size-select")],attrs:{"size":_vm.size},on:{"change":_vm.pageSizeChange},model:{value:(_vm.currentPageSize),callback:function ($$v) {_vm.currentPageSize=$$v},expression:"currentPageSize"}},_vm._l((_vm.currentPageSizeOption),function(item){return _c('Option',{key:item.value,attrs:{"value":item.value,"label":item.label}})}),1)],1):_vm._e(),_vm._v(" "),(_vm.orderList('jump') > -1)?_c('div',{class:[
            (_vm.classPrefix + "__common"),
             (_vm.classPrefix + "__jump-to")
         ],style:({order: _vm.orderList('jump')})},[_vm._v("\n        "+_vm._s(_vm.t('m.page.goto'))+"\n        "),_c('Input',{class:[(_vm.classPrefix + "__jump-to-input")],attrs:{"type":"number","step":false,"size":_vm.size},on:{"enter":_vm.jumpToPageChange},model:{value:(_vm.jumpToPage),callback:function ($$v) {_vm.jumpToPage=$$v},expression:"jumpToPage"}}),_vm._v("\n        "+_vm._s(_vm.t('m.page.page'))+"\n    ")],1):_vm._e()]):_vm._e()}
var pagevue_type_template_id_7c11a877_staticRenderFns = []


// CONCATENATED MODULE: ./packages/page/src/page.vue?vue&type=template&id=7c11a877&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/page/src/page.vue?vue&type=script&lang=js&







//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//






/* harmony default export */ var pagevue_type_script_lang_js_ = ({
  name: 'Page',
  mixins: [mixins_locale],
  props: {
    page: {
      type: Number,
      default: 1
    },
    total: {
      type: Number,
      default: 0
    },
    pageSize: {
      type: Number,
      default: 10
    },
    pageSizeOption: {
      type: Array,
      default: function _default() {
        return [10, 20, 30, 40];
      }
    },
    // pageSize切换配置
    maxPage: {
      type: Number,
      default: 5,
      validator: function validator(value) {
        return value >= 5;
      }
    },
    size: {
      type: String,
      default: 'default',
      validator: function validator(value) {
        return ['default', 'mini'].includes(value);
      }
    },
    background: Boolean,
    // 是否为分页添加背景
    border: Boolean,
    // 是否为分页添加边框
    hidenOnlySinglePage: Boolean,
    // 当只有一页时是否隐藏
    preText: String,
    nextText: String,
    order: {
      type: String,
      default: ''
    },
    // 排序及显示
    totalText: {
      type: String,
      default: ''
    },
    // 定义总数量显示方式
    pageSizeText: {
      type: String,
      default: ''
    } // 定义pageSize选项的显示方式

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-page',
      currentPage: this.page,
      currentPageSize: this.pageSize,
      jumpToPage: this.page,
      currentPageSizeOption: [],
      currentSelectPageSize: '',
      jumpPreIcon: 'more',
      jumpNextIcon: 'more'
    };
  },
  computed: {
    allPage: function allPage() {
      return Math.ceil(this.total / this.currentPageSize);
    },
    // page前后多少项展示
    pagePreNextItemLenSHow: function pagePreNextItemLenSHow() {
      return (this.maxPage - 3) / 2; // 3为 第一页 最后一页和当前页
    },
    pageItemPreShow: function pageItemPreShow() {
      return this.allPage > this.maxPage && this.currentPage >= this.maxPage - this.pagePreNextItemLenSHow;
    },
    pageItemNextShow: function pageItemNextShow() {
      return this.allPage > this.maxPage && this.allPage - this.currentPage > this.pagePreNextItemLenSHow + 1;
    },
    pageShow: function pageShow() {
      return function (pageItem) {
        if (pageItem === 1 || pageItem === this.allPage) {
          return false;
        } else if (this.allPage <= this.maxPage || Math.abs(this.currentPage - pageItem) <= this.pagePreNextItemLenSHow || !this.pageItemPreShow && pageItem < this.maxPage || !this.pageItemNextShow && this.allPage - pageItem < this.maxPage - this.pagePreNextItemLenSHow) {
          return true;
        }
      };
    },
    orderList: function orderList() {
      return function (type) {
        return this.order.split(',').findIndex(function (item) {
          return item.trim() === type;
        });
      };
    },
    localeTotalText: function localeTotalText() {
      if (!this.totalText) {
        return this.t('m.page.total') + ' {total} ' + this.t('m.page.item');
      } else {
        return this.totalText;
      }
    },
    localePageSizeText: function localePageSizeText() {
      if (!this.pageSizeText) {
        return '{pageSize} ' + this.t('m.page.item') + '/' + this.t('m.page.page');
      } else {
        return this.pageSizeText;
      }
    }
  },
  components: {
    Input: packages_input,
    Select: packages_select,
    Option: packages_option,
    Icon: packages_icon
  },
  methods: {
    changePage: function changePage(page) {
      this.jumpPreIcon = 'more';
      this.jumpNextIcon = 'more';
      page = parseInt(page);

      if (page <= 1) {
        page = 1;
      }

      if (page >= this.allPage) {
        page = this.allPage;
      }

      if (page === this.currentPage) {
        return;
      }

      this.currentPage = page;
      this.jumpToPage = page;
      this.$emit('change', page, this.currentPageSize);
    },
    pageSizeChange: function pageSizeChange() {
      if (this.allPage < this.currentPage) {
        this.changePage(this.allPage);
      }
    },
    jumpPage: function jumpPage(type) {
      if (type === 'pre') {
        this.changePage(this.currentPage - this.maxPage);
      } else if (type === 'next') {
        this.changePage(this.currentPage + this.maxPage);
      }
    },
    jumpToPageChange: function jumpToPageChange(value) {
      parseInt(value) >= 1 && this.changePage(value);
    },
    jumpMouseEnter: function jumpMouseEnter(type) {
      if (type === 'pre') {
        this.jumpPreIcon = 'arrow-left';
      } else if (type === 'next') {
        this.jumpNextIcon = 'arrow-right';
      }
    },
    jumpMouseLeave: function jumpMouseLeave(type) {
      if (type === 'pre') {
        this.jumpPreIcon = 'more';
      } else if (type === 'next') {
        this.jumpNextIcon = 'more';
      }
    },
    setPageSizeOption: function setPageSizeOption() {
      var _this = this;

      this.pageSizeOption.forEach(function (item) {
        _this.currentPageSizeOption.push({
          label: _this.localePageSizeText.replace('{pageSize}', item),
          value: item
        });
      });
    }
  },
  watch: {
    page: function page(newVal) {
      this.currentPage = newVal;
      this.jumpToPage = parseInt(newVal);
    },
    pageSize: function pageSize(newVal) {
      this.currentPageSize = newVal;
    },
    pageSizeOption: {
      handler: function handler() {
        this.setPageSizeOption();
      },
      deep: true,
      immediate: true
    }
  }
});
// CONCATENATED MODULE: ./packages/page/src/page.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_pagevue_type_script_lang_js_ = (pagevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/page/src/page.vue





/* normalize component */

var page_component = normalizeComponent(
  src_pagevue_type_script_lang_js_,
  pagevue_type_template_id_7c11a877_render,
  pagevue_type_template_id_7c11a877_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var page = (page_component.exports);
// CONCATENATED MODULE: ./packages/page/index.js

/* harmony default export */ var packages_page = (page);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/list/src/list.vue?vue&type=template&id=6a1b08a5&
var listvue_type_template_id_6a1b08a5_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
    ("" + _vm.classPrefix),
    _vm.border && (_vm.classPrefix + "--border"),
    _vm.size && (_vm.classPrefix + "--" + _vm.size),
    _vm.split && (_vm.classPrefix + "--split") ]},[(_vm.header || _vm.$slots.header)?_c('div',{class:[(_vm.classPrefix + "__header")]},[_vm._t("header",[_vm._v(_vm._s(_vm.header))])],2):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__content")]},[_vm._t("default")],2),_vm._v(" "),(_vm.footer || _vm.$slots.footer)?_c('div',{class:[(_vm.classPrefix + "__footer")]},[_vm._t("footer",[_vm._v(_vm._s(_vm.footer))])],2):_vm._e(),_vm._v(" "),_c('Loading',{attrs:{"fix":"","visible":_vm.loading}})],1)}
var listvue_type_template_id_6a1b08a5_staticRenderFns = []


// CONCATENATED MODULE: ./packages/list/src/list.vue?vue&type=template&id=6a1b08a5&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/list/src/list.vue?vue&type=script&lang=js&




//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var listvue_type_script_lang_js_ = ({
  name: 'List',
  props: {
    border: Boolean,
    hover: {
      type: Boolean,
      default: true
    },
    // 是否需要hover效果
    split: {
      type: Boolean,
      default: true
    },
    // 是否显示分割线
    header: String,
    footer: String,
    loading: Boolean,
    type: {
      type: String,
      default: ''
    },
    // 可选值meta
    gutter: {
      type: [String, Number],
      default: 10
    },
    // list-row类型时item列之间的间隔，此时type属性不起作用
    labelWidth: {
      type: [String, Number],
      default: 100
    },
    // list-row类型时有效
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-list',
      componentName: 'List',
      everyRowItemLen: [],
      // 每一个list-row下item的数量的数组
      itemWidth: '0%'
    };
  },
  components: {
    Loading: packages_loading
  },
  mounted: function mounted() {
    var _this = this;

    this.$on('on-update-item-width', function (len) {
      _this.everyRowItemLen.push(len);

      var sortArr = _this.everyRowItemLen.sort(function (a, b) {
        return a - b;
      }).reverse();

      if (sortArr && sortArr.length) {
        _this.itemWidth = 100 / sortArr[0] + '%';
      }
    });
  }
});
// CONCATENATED MODULE: ./packages/list/src/list.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_listvue_type_script_lang_js_ = (listvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/list/src/list.vue





/* normalize component */

var list_component = normalizeComponent(
  src_listvue_type_script_lang_js_,
  listvue_type_template_id_6a1b08a5_render,
  listvue_type_template_id_6a1b08a5_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var list = (list_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/list/src/list-item.vue?vue&type=template&id=6765fcb1&
var list_itemvue_type_template_id_6765fcb1_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        _vm.parentListComponent.split && (_vm.classPrefix + "--split"),
        _vm.parentListComponent.hover && (_vm.classPrefix + "--hover"),
        _vm.currentType === 'meta' && (_vm.classPrefix + "--meta"),
        _vm.parentListRowComponent && (_vm.classPrefix + "--row"),
        _vm.isFirstItemNoBorder && (_vm.classPrefix + "--first-no-border"),
        _vm.isLastItemNoBorder && (_vm.classPrefix + "--last-no-border")
    ],style:(_vm.itemStyle),on:{"click":_vm.handleClick}},[(_vm.parentListRowComponent)?_c('div',{class:[(_vm.classPrefix + "__row")]},[_c('div',{class:[(_vm.classPrefix + "__label")],style:(_vm.labelStyle)},[_vm._t("label",[_vm._v(_vm._s(_vm.label))])],2),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__value")]},[_vm._t("value",[_vm._v(_vm._s(_vm.value))])],2)]):(_vm.currentType === 'meta')?[(_vm.avatar || _vm.$slots.avatar)?_c('div',{class:[(_vm.classPrefix + "__avatar")]},[_vm._t("avatar",[_c('img',{attrs:{"src":_vm.avatar,"alt":""}})])],2):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__content")]},[(_vm.title || _vm.$slots.title)?_c('div',{class:[(_vm.classPrefix + "__title")]},[_vm._t("title",[_vm._v(_vm._s(_vm.title))])],2):_vm._e(),_vm._v(" "),(_vm.description || _vm.$slots.description)?_c('div',{class:[(_vm.classPrefix + "__description")]},[_vm._t("description",[_vm._v(_vm._s(_vm.description))])],2):_vm._e(),_vm._v(" "),_vm._t("default")],2),_vm._v(" "),(_vm.$slots.extra)?_c('div',{class:[(_vm.classPrefix + "__extra")]},[_vm._t("extra")],2):_vm._e()]:_vm._t("default")],2)}
var list_itemvue_type_template_id_6765fcb1_staticRenderFns = []


// CONCATENATED MODULE: ./packages/list/src/list-item.vue?vue&type=template&id=6765fcb1&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/list/src/list-item.vue?vue&type=script&lang=js&






function list_itemvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function list_itemvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { list_itemvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { list_itemvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var list_itemvue_type_script_lang_js_ = ({
  name: 'ListItem',
  mixins: [emitter],
  props: {
    type: {
      type: String,
      default: '' // 可选值meta default

    },
    title: String,
    label: [String, Number],
    // list-row类型时可用
    value: [String, Number],
    // list-row类型时可用
    description: String,
    avatar: String
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-list-item',
      componentName: 'ListItem',
      parentListComponent: findComponent(this, 'List'),
      parentListRowComponent: findComponentDirect(this, 'ListRow')
    };
  },
  computed: {
    currentType: function currentType() {
      if (this.parentListRowComponent) return '';
      return this.type ? this.type : this.parentListComponent.type;
    },
    itemStyle: function itemStyle() {
      var style = {};

      if (this.parentListRowComponent) {
        style = {
          width: this.parentListComponent.itemWidth
        };

        if (this.parentListComponent.gutter) {
          style = list_itemvue_type_script_lang_js_objectSpread(list_itemvue_type_script_lang_js_objectSpread({}, style), {}, {
            paddingLeft: this.parentListComponent.gutter / 2 + 'px',
            paddingRight: this.parentListComponent.gutter / 2 + 'px'
          });
        }
      }

      return style;
    },
    labelStyle: function labelStyle() {
      return {
        width: parseFloat(this.parentListComponent.labelWidth) + 'px'
      };
    },
    isFirstItemNoBorder: function isFirstItemNoBorder() {
      return this.parentListComponent && this.parentListComponent.border && !(this.parentListComponent.header || this.parentListComponent.$slots.header);
    },
    isLastItemNoBorder: function isLastItemNoBorder() {
      return this.parentListComponent && this.parentListComponent.border && !(this.parentListComponent.footer || this.parentListComponent.$slots.footer);
    }
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      if (_this.parentListRowComponent) {
        _this.parentEmit('ListRow', 'on-update-item-len');
      }
    });
  },
  methods: {
    handleClick: function handleClick(event) {
      this.$emit('click', event);
    }
  }
});
// CONCATENATED MODULE: ./packages/list/src/list-item.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_list_itemvue_type_script_lang_js_ = (list_itemvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/list/src/list-item.vue





/* normalize component */

var list_item_component = normalizeComponent(
  src_list_itemvue_type_script_lang_js_,
  list_itemvue_type_template_id_6765fcb1_render,
  list_itemvue_type_template_id_6765fcb1_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var list_item = (list_item_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/list/src/list-row.vue?vue&type=template&id=55829a4d&
var list_rowvue_type_template_id_55829a4d_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)],style:(_vm.rowStyle)},[_vm._t("default")],2)}
var list_rowvue_type_template_id_55829a4d_staticRenderFns = []


// CONCATENATED MODULE: ./packages/list/src/list-row.vue?vue&type=template&id=55829a4d&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/list/src/list-row.vue?vue&type=script&lang=js&
//
//
//
//
//
//



/* harmony default export */ var list_rowvue_type_script_lang_js_ = ({
  name: 'ListRow',
  mixins: [emitter],
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-list-row',
      componentName: 'ListRow',
      parentListComponent: findComponent(this, 'List'),
      itemLen: 0 // list-item的数量

    };
  },
  computed: {
    rowStyle: function rowStyle() {
      return {
        marginLeft: -this.parentListComponent.gutter / 2 + 'px',
        marginRight: -this.parentListComponent.gutter / 2 + 'px'
      };
    }
  },
  mounted: function mounted() {
    var _this = this;

    this.$on('on-update-item-len', function () {
      _this.parentEmit('List', 'on-update-item-width', _this.updateItemWidth());
    });
  },
  methods: {
    updateItemWidth: function updateItemWidth() {
      var listItemChildren = findComponentDirectChildrens(this, 'ListItem');
      return listItemChildren.length;
    }
  }
});
// CONCATENATED MODULE: ./packages/list/src/list-row.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_list_rowvue_type_script_lang_js_ = (list_rowvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/list/src/list-row.vue





/* normalize component */

var list_row_component = normalizeComponent(
  src_list_rowvue_type_script_lang_js_,
  list_rowvue_type_template_id_55829a4d_render,
  list_rowvue_type_template_id_55829a4d_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var list_row = (list_row_component.exports);
// CONCATENATED MODULE: ./packages/list/index.js



list.item = list_item;
list.row = list_row;
/* harmony default export */ var packages_list = (list);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/back-top/src/back-top.vue?vue&type=template&id=791f2060&
var back_topvue_type_template_id_791f2060_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":"fade"}},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible),expression:"visible"}],class:[("" + _vm.classPrefix)],style:(_vm.backTopStyle),on:{"click":_vm.backTopClick}},[_vm._t("default",[_c('div',{class:[(_vm.classPrefix + "__inner")]},[_c('Icon',{attrs:{"type":"up"}})],1)])],2)])}
var back_topvue_type_template_id_791f2060_staticRenderFns = []


// CONCATENATED MODULE: ./packages/back-top/src/back-top.vue?vue&type=template&id=791f2060&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/back-top/src/back-top.vue?vue&type=script&lang=js&

//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var back_topvue_type_script_lang_js_ = ({
  name: 'BackTop',
  props: {
    // 设置需要监听滚动的元素的类名，此类名需要唯一
    target: {
      type: String,
      default: ''
    },
    // 设置触发显示的高度
    height: {
      type: [String, Number],
      default: 400
    },
    bottom: {
      type: [String, Number],
      default: 30
    },
    right: {
      type: [String, Number],
      default: 30
    },
    duration: {
      type: Number,
      default: 1000
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-back-top',
      visible: false,
      targetElement: null // 监听滚动的元素

    };
  },
  computed: {
    backTopStyle: function backTopStyle() {
      return {
        bottom: parseInt(this.bottom) + 'px',
        right: parseInt(this.right) + 'px'
      };
    }
  },
  components: {
    Icon: packages_icon
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      var target = window;

      if (_this.target) {
        target = document.getElementsByClassName(_this.target)[0];
      }

      _this.targetElement = target;
      on(target, 'scroll', _this.handleScroll);
      on(target, 'size', _this.handleScroll);
    });
  },
  destroyed: function destroyed() {
    this.targetElement && off(this.targetElement, 'scroll', this.handleScroll);
    this.targetElement && off(this.targetElement, 'size', this.handleScroll);
  },
  methods: {
    handleScroll: function handleScroll() {
      var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

      if (this.target) {
        scrollTop = this.targetElement.scrollTop;
      }

      this.visible = scrollTop >= parseInt(this.height);
    },
    backTopClick: function backTopClick() {
      var scrollTopForm = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

      if (this.target) {
        scrollTopForm = this.targetElement.scrollTop;
      }

      scrollTop(this.targetElement, scrollTopForm, 0, this.duration);
      this.$emit('click');
    }
  }
});
// CONCATENATED MODULE: ./packages/back-top/src/back-top.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_back_topvue_type_script_lang_js_ = (back_topvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/back-top/src/back-top.vue





/* normalize component */

var back_top_component = normalizeComponent(
  src_back_topvue_type_script_lang_js_,
  back_topvue_type_template_id_791f2060_render,
  back_topvue_type_template_id_791f2060_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var back_top = (back_top_component.exports);
// CONCATENATED MODULE: ./packages/back-top/index.js

/* harmony default export */ var packages_back_top = (back_top);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/affix/src/affix.vue?vue&type=template&id=30ef7314&
var affixvue_type_template_id_30ef7314_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[_c('div',{ref:"affixSlot",class:[(_vm.classPrefix + "__slot")],style:(_vm.slotStyle)},[_vm._t("default")],2),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(!_vm.fix && _vm.showSeat),expression:"!fix && showSeat"}],class:[(_vm.classPrefix + "__seat")],style:(_vm.seatStyle)})])}
var affixvue_type_template_id_30ef7314_staticRenderFns = []


// CONCATENATED MODULE: ./packages/affix/src/affix.vue?vue&type=template&id=30ef7314&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/affix/src/affix.vue?vue&type=script&lang=js&



//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var affixvue_type_script_lang_js_ = ({
  name: 'Affix',
  props: {
    // 监听滚动元素的类名，需要给当前指定元素添加定位
    target: {
      type: String
    },
    top: {
      type: [String, Number],
      default: 0
    },
    bottom: String,
    Number: Number,
    // 是否固定在指定位置，不随滚动改变
    fix: Boolean
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-affix',
      defaultSlotStyle: {
        width: 0,
        height: 0,
        top: 0,
        position: 'fixed' // 定位类型，默认为固定，如果设置了target元素则相对于target元素定位，类型为absolute

      },
      slotStyle: {},
      showSeat: false,
      // 是否显示占位元素，如果监听对象为window时需要
      targetElement: null,
      // 监听滚动的元素
      defaultAffixOnTargetPosition: null // 初始化时图钉距离滚动元素的位置

    };
  },
  computed: {
    seatStyle: function seatStyle() {
      return {
        width: parseFloat(this.slotStyle.width) + 'px',
        height: parseFloat(this.slotStyle.height) + 'px'
      };
    },
    affixPositionType: function affixPositionType() {
      return this.bottom !== undefined ? 'bottom' : 'top';
    }
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      var target = window;

      if (_this.target) {
        target = document.getElementsByClassName(_this.target)[0];
      }

      _this.targetElement = target;

      _this.setTargetElementPostion();

      _this.getSlotStyle();

      if (!_this.fix) {
        on(target, 'scroll', _this.scrollHandler);
        on(target, 'size', _this.scrollHandler);
      }

      _this.scrollHandler();
    });
  },
  destroyed: function destroyed() {
    !this.fix && this.targetElement && off(this.targetElement, 'scroll', this.scrollHandler);
    !this.fix && this.targetElement && off(this.targetElement, 'size', this.scrollHandler);
  },
  methods: {
    // 设置target元素的定位属性
    setTargetElementPostion: function setTargetElementPostion() {
      if (this.target) {
        var targetElement = this.targetElement;
        var targetPosition = window.getComputedStyle && window.getComputedStyle(targetElement, null).position;
        targetPosition = targetElement.currentStyle && targetElement.currentStyle.position;
        if (!['relative', 'absolute'].includes(targetPosition)) targetElement.style.position = 'relative';
      }
    },
    // 获取图钉的宽高
    getSlotStyle: function getSlotStyle() {
      this.defaultSlotStyle.width = this.$refs.affixSlot.clientWidth;
      this.defaultSlotStyle.height = this.$refs.affixSlot.clientHeight;
    },
    // 滚动事件
    scrollHandler: function scrollHandler() {
      var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
      var innerHeight = window.innerHeight;
      var winInnerHeight = window.innerHeight;

      if (this.target) {
        scrollTop = this.targetElement.scrollTop;
        innerHeight = this.targetElement.offsetHeight;
      }

      var affixOnTargetPosition = this.updateAffixOnTargetBoundingClientRect();
      var targetPosition = this.updateTargetBoundingClientRect();
      var top = targetPosition.top + parseInt(this.top);
      var bottom = winInnerHeight - targetPosition.bottom + parseInt(this.bottom);

      if (!this.defaultAffixOnTargetPosition) {
        this.defaultAffixOnTargetPosition = JSON.parse(JSON.stringify(affixOnTargetPosition));
      }

      if (this.affixPositionType === 'top') {
        if (this.defaultAffixOnTargetPosition.top - scrollTop <= parseInt(this.top) || this.fix) {
          this.slotStyle = Object.assign({}, this.defaultSlotStyle);
          this.slotStyle.top = top + 'px';
          this.slotStyle.bottom = 'auto';
          this.showSeat = true;
        } else {
          this.slotStyle = {};
          this.showSeat = false;
        }
      } else if (this.affixPositionType === 'bottom') {
        var bottomFlag = Math.abs(this.defaultAffixOnTargetPosition.top - innerHeight) - scrollTop + this.defaultSlotStyle.height + parseInt(this.bottom);

        if (affixOnTargetPosition.top > this.defaultAffixOnTargetPosition.top || bottomFlag >= 0 || this.fix) {
          this.slotStyle = Object.assign({}, this.defaultSlotStyle);
          this.slotStyle.top = 'auto';
          this.slotStyle.bottom = bottom + 'px';
          this.showSeat = true;
        } else {
          this.slotStyle = {};
          this.showSeat = false;
        }
      }
    },
    // 更新图钉在窗口中的位置
    updateAffixBoundingClientRect: function updateAffixBoundingClientRect() {
      var rect = this.$refs.affixSlot.getBoundingClientRect();
      var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
      return {
        top: Math.round(rect.top) + scrollTop,
        bottom: Math.round(rect.bottom) + scrollTop
      };
    },
    // 更新滚动元素在窗口中的位置
    updateTargetBoundingClientRect: function updateTargetBoundingClientRect() {
      var top = 0;
      var bottom = 0;

      if (this.target) {
        var rect = this.targetElement.getBoundingClientRect();
        var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
        top = Math.round(rect.top) + scrollTop;
        bottom = Math.round(rect.bottom) + scrollTop;
      }

      return {
        top: top,
        bottom: bottom
      };
    },
    // 更新图钉相对于滚动元素的位置
    updateAffixOnTargetBoundingClientRect: function updateAffixOnTargetBoundingClientRect() {
      var disTop = this.updateAffixBoundingClientRect().top - this.updateTargetBoundingClientRect().top;
      var disBottom = this.updateAffixBoundingClientRect().bottom - this.updateTargetBoundingClientRect().bottom;
      return {
        top: disTop,
        bottom: disBottom
      };
    }
  },
  watch: {
    showSeat: function showSeat(newVal) {
      this.$emit('change', newVal);
    }
  }
});
// CONCATENATED MODULE: ./packages/affix/src/affix.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_affixvue_type_script_lang_js_ = (affixvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/affix/src/affix.vue





/* normalize component */

var affix_component = normalizeComponent(
  src_affixvue_type_script_lang_js_,
  affixvue_type_template_id_30ef7314_render,
  affixvue_type_template_id_30ef7314_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var affix = (affix_component.exports);
// CONCATENATED MODULE: ./packages/affix/index.js

/* harmony default export */ var packages_affix = (affix);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/picker/date-picker.vue?vue&type=template&id=a15f9178&
var date_pickervue_type_template_id_a15f9178_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"click-outside",rawName:"v-click-outside.capture",value:(_vm.handleClickOutside),expression:"handleClickOutside",modifiers:{"capture":true}}],class:[
        ("" + _vm.classPrefix),
        _vm.className ]},[(!_vm.onlyShowPane)?[_c('div',{ref:"reference",class:[(_vm.classPrefix + "__reference")]},[_vm._t("default",[_c('Input',{ref:"dateInput",attrs:{"suffix":_vm.suffix,"prefix":_vm.prefix,"size":_vm.computedSize,"disabled":_vm.disabled,"clearable":_vm.clearable,"placeholder":_vm.placeholder,"readonly":_vm.readonlyInput},on:{"enter":_vm.handleEnter,"clear":_vm.handleClear},nativeOn:{"click":function($event){return _vm.handleFocus($event)}},model:{value:(_vm.dateInputValue),callback:function ($$v) {_vm.dateInputValue=$$v},expression:"dateInputValue"}})])],2),_vm._v(" "),_c('transition',{attrs:{"name":_vm.transition}},[_c('Drop',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible && !_vm.disabled),expression:"visible && !disabled"}],ref:"dropDown",class:_vm.dropdownClassName,attrs:{"reference":this.$refs.reference,"placement":_vm.placement,"min-width":false,"dropdownMatchSelectWidth":false,"render-html":_vm.renderHtml},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:"visible"}},[_c('div',{class:[(_vm.classPrefix + "__drop-down-inner")]},[_c('date-pane',{ref:"datePane",attrs:{"picker-type":"date","multiple":_vm.multiple,"shortcuts":_vm.shortcuts,"is-range":_vm.isRange,"type":_vm.type},on:{"change":_vm.handleDateValueChange},model:{value:(_vm.dateValue),callback:function ($$v) {_vm.dateValue=$$v},expression:"dateValue"}})],1)])],1)]:[_c('div',{class:[(_vm.classPrefix + "__drop-down-inner")]},[_c('date-pane',{ref:"datePane",attrs:{"picker-type":"date","multiple":_vm.multiple,"shortcuts":_vm.shortcuts,"is-range":_vm.isRange,"type":_vm.type},on:{"change":_vm.handleDateValueChange},model:{value:(_vm.dateValue),callback:function ($$v) {_vm.dateValue=$$v},expression:"dateValue"}})],1)]],2)}
var date_pickervue_type_template_id_a15f9178_staticRenderFns = []


// CONCATENATED MODULE: ./packages/date-picker/src/picker/date-picker.vue?vue&type=template&id=a15f9178&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane.vue?vue&type=template&id=385d95c2&
var date_panevue_type_template_id_385d95c2_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[(_vm.shortcuts && _vm.shortcuts.length)?_c('div',{class:[(_vm.classPrefix + "__shortcuts")]},_vm._l((_vm.shortcuts),function(item,index){return _c('div',{key:index,class:[(_vm.classPrefix + "__shortcuts-item")],on:{"click":function($event){return _vm.shortcutsClick(item)}}},[_vm._v(_vm._s(item.text))])}),0):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__main")]},[_c('div',{class:[(_vm.classPrefix + "__content")]},[_c('date-pane-single',{ref:"leftPane",class:[(_vm.classPrefix + "__left")],attrs:{"index":_vm.datePane0.index,"year":_vm.datePane0.year,"month":_vm.datePane0.month,"date":_vm.selectedDateValue,"hover-date":_vm.hoverDate,"is-range":_vm.isRange,"type":_vm.type,"pickerType":_vm.pickerType},on:{"hover-date":_vm.handleHoverDate,"update-date":_vm.updateValue,"update-pane":_vm.updatePane}}),_vm._v(" "),(_vm.isRange)?_c('date-pane-single',{ref:"rightPane",class:[(_vm.classPrefix + "__right")],attrs:{"index":_vm.datePane1.index,"year":_vm.datePane1.year,"month":_vm.datePane1.month,"date":_vm.selectedDateValue,"hover-date":_vm.hoverDate,"is-range":_vm.isRange,"type":_vm.type,"pickerType":_vm.pickerType},on:{"hover-date":_vm.handleHoverDate,"update-date":_vm.updateValue,"update-pane":_vm.updatePane}}):_vm._e()],1),_vm._v(" "),(_vm.showFooter)?_c('div',{class:[(_vm.classPrefix + "__footer")]},[(_vm.pickerType === 'date')?_c('Button',{class:[(_vm.classPrefix + "__footer-button"), (_vm.classPrefix + "__footer-time")],attrs:{"type":"text","size":"small","disabled":_vm.changeTimeDisabled},on:{"click":_vm.changeTimeAndDate}},[_vm._v("\n                "+_vm._s(_vm.isTime ? _vm.t('m.datePicker.selectDate') : _vm.t('m.datePicker.selectTime'))+"\n            ")]):_vm._e(),_vm._v(" "),_c('Button',{class:[(_vm.classPrefix + "__footer-button")],attrs:{"size":"small"},on:{"click":_vm.handleClean}},[_vm._v(_vm._s(_vm.t('m.datePicker.clean')))]),_vm._v(" "),_c('Button',{class:[(_vm.classPrefix + "__footer-button")],attrs:{"type":"primary","size":"small"},on:{"click":function($event){return _vm.closeDropDown(true)}}},[_vm._v(_vm._s(_vm.t('m.datePicker.ok')))])],1):_vm._e(),_vm._v(" "),(_vm.picker.$slots.paneFooter)?_c('DatePaneFooterSlot',{class:[(_vm.classPrefix + "__footer")]}):_vm._e()],1)])}
var date_panevue_type_template_id_385d95c2_staticRenderFns = []


// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane.vue?vue&type=template&id=385d95c2&

// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/setPrototypeOf.js
function _setPrototypeOf(o, p) {
  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
    o.__proto__ = p;
    return o;
  };

  return _setPrototypeOf(o, p);
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/isNativeReflectConstruct.js
function _isNativeReflectConstruct() {
  if (typeof Reflect === "undefined" || !Reflect.construct) return false;
  if (Reflect.construct.sham) return false;
  if (typeof Proxy === "function") return true;

  try {
    Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));
    return true;
  } catch (e) {
    return false;
  }
}
// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/construct.js


function construct_construct(Parent, args, Class) {
  if (_isNativeReflectConstruct()) {
    construct_construct = Reflect.construct;
  } else {
    construct_construct = function _construct(Parent, args, Class) {
      var a = [null];
      a.push.apply(a, args);
      var Constructor = Function.bind.apply(Parent, a);
      var instance = new Constructor();
      if (Class) _setPrototypeOf(instance, Class.prototype);
      return instance;
    };
  }

  return construct_construct.apply(null, arguments);
}
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-single.vue?vue&type=template&id=fd1411be&
var date_pane_singlevue_type_template_id_fd1411be_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix) ]},[(_vm.showDateHeader)?_c('div',{class:[(_vm.classPrefix + "__header")]},[_c('span',{class:[(_vm.classPrefix + "__header-pre")]},[_c('Icon',{attrs:{"type":"arrow-left"},on:{"click":function($event){$event.stopPropagation();return _vm.jumpDate('pre-year')}}}),_vm._v(" "),(_vm.dateChangeIconShow)?_c('Icon',{attrs:{"type":"left"},on:{"click":function($event){$event.stopPropagation();return _vm.jumpDate('pre-month')}}}):_vm._e()],1),_vm._v(" "),_c('span',{class:[(_vm.classPrefix + "__header-date")]},[_c('span',{class:[(_vm.classPrefix + "__header-date-label")],on:{"click":function($event){$event.stopPropagation();return _vm.updateCurrentType('year')}}},[_vm._v(_vm._s(_vm.year)+_vm._s(_vm.t('m.datePicker.year'))+" ")]),_vm._v(" "),(_vm.headerMonthShow)?_c('span',{class:[(_vm.classPrefix + "__header-date-label")],on:{"click":function($event){$event.stopPropagation();return _vm.updateCurrentType('month')}}},[_vm._v(_vm._s(_vm.month)+_vm._s(_vm.t('m.datePicker.month')))]):_vm._e()]),_vm._v(" "),_c('span',{class:[(_vm.classPrefix + "__header-next")]},[(_vm.dateChangeIconShow)?_c('Icon',{attrs:{"type":"right"},on:{"click":function($event){$event.stopPropagation();return _vm.jumpDate('next-month')}}}):_vm._e(),_vm._v(" "),_c('Icon',{attrs:{"type":"arrow-right"},on:{"click":function($event){$event.stopPropagation();return _vm.jumpDate('next-year')}}})],1)]):_vm._e(),_vm._v(" "),(_vm.showTimeHeader)?_c('div',{class:[(_vm.classPrefix + "__header")]},[_c('span',{class:[(_vm.classPrefix + "__header-date")]},[_vm._v("\n            "+_vm._s(_vm.index === 0 ? _vm.t('m.datePicker.startTime') : _vm.t('m.datePicker.endTime'))+"\n        ")])]):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__body")]},[(_vm.pickerType === 'date')?[_c('date-pane-date',{directives:[{name:"show",rawName:"v-show",value:(_vm.currentType === 'date' || _vm.currentType === 'week'),expression:"currentType === 'date' || currentType === 'week'"}],attrs:{"type":_vm.currentType,"year":_vm.year,"month":_vm.month,"date":_vm.date,"index":_vm.index,"hover-date":_vm.hoverDate,"currentDate":_vm.currentDate,"is-range":_vm.isRange},on:{"updateWeek":_vm.updateSelectWeek,"updateDate":_vm.updateSelectDate,"hover-date":_vm.handleHoverDate}}),_vm._v(" "),_c('date-pane-year',{directives:[{name:"show",rawName:"v-show",value:(_vm.currentType === 'year'),expression:"currentType === 'year'"}],attrs:{"type":_vm.currentType,"year":_vm.year,"month":_vm.month,"date":_vm.date,"index":_vm.index,"currentDate":_vm.currentDate,"is-range":_vm.isRange},on:{"update-year":_vm.updateSelectYear}}),_vm._v(" "),_c('date-pane-month',{directives:[{name:"show",rawName:"v-show",value:(_vm.currentType === 'month'),expression:"currentType === 'month'"}],attrs:{"type":_vm.currentType,"year":_vm.year,"month":_vm.month,"date":_vm.date,"index":_vm.index,"currentDate":_vm.currentDate,"is-range":_vm.isRange},on:{"update-month":_vm.updateSelectMonth}})]:_vm._e(),_vm._v(" "),_c('date-pane-time',{directives:[{name:"show",rawName:"v-show",value:(_vm.currentType === 'time' || _vm.currentType === 'timerange'),expression:"currentType === 'time' || currentType === 'timerange'"}],attrs:{"type":_vm.currentType,"year":_vm.year,"month":_vm.month,"date":_vm.date,"index":_vm.index,"hover-date":_vm.hoverDate,"currentDate":_vm.currentDate,"is-range":_vm.isRange},on:{"update-time":_vm.updateSelectTime}})],2)])}
var date_pane_singlevue_type_template_id_fd1411be_staticRenderFns = []


// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-single.vue?vue&type=template&id=fd1411be&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-time.vue?vue&type=template&id=5f5a5493&
var date_pane_timevue_type_template_id_5f5a5493_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        !_vm.showSsCol && (_vm.classPrefix + "--no-show-ss") ]},[_c('div',{class:[(_vm.classPrefix + "__hh")]},[_c('scroll',{ref:"hhScroll",attrs:{"size":"small"}},[_c('div',{class:[(_vm.classPrefix + "__hh-inner")]},[_vm._l((_vm.hhData),function(hhItem){return [(!(_vm.picker.hideDisabledOptions && _vm.picker.disabledHours.includes(parseInt(hhItem.id))))?_c('div',{key:hhItem.id,class:[
                             (_vm.classPrefixItem + "__col"),
                             !(hhItem.id === _vm.selectedHours) && !(_vm.picker.disabledHours && _vm.picker.disabledHours.includes(parseInt(hhItem.id))) && (_vm.classPrefixItem + "__hover"),
                             !hhItem.visibility && (_vm.classPrefix + "__hide"),
                             hhItem.id === _vm.selectedHours && (_vm.classPrefixItem + "__selected"),
                             _vm.picker.disabledHours && _vm.picker.disabledHours.includes(parseInt(hhItem.id)) && (_vm.classPrefixItem + "__disabled") ],on:{"click":function($event){return _vm.selectHours(hhItem)}}},[_c('em',[_vm._v(_vm._s(hhItem.name))])]):_vm._e()]})],2)])],1),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__mm")]},[_c('scroll',{ref:"mmScroll",attrs:{"size":"small"}},[_c('div',{class:[(_vm.classPrefix + "__mm-inner")]},[_vm._l((_vm.mmData),function(mmItem){return [(!(_vm.picker.hideDisabledOptions && _vm.picker.disabledMinutes.includes(parseInt(mmItem.id))))?_c('div',{key:mmItem.id,class:[
                             (_vm.classPrefixItem + "__col"),
                             !(mmItem.id === _vm.selectedMinutes) && !(_vm.picker.disabledMinutes && _vm.picker.disabledMinutes.includes(parseInt(mmItem.id))) && (_vm.classPrefixItem + "__hover"),
                             !mmItem.visibility && (_vm.classPrefix + "__hide"),
                             mmItem.id === _vm.selectedMinutes && (_vm.classPrefixItem + "__selected"),
                             _vm.picker.disabledMinutes && _vm.picker.disabledMinutes.includes(parseInt(mmItem.id)) && (_vm.classPrefixItem + "__disabled") ],on:{"click":function($event){return _vm.selectMinutes(mmItem)}}},[_c('em',[_vm._v(_vm._s(mmItem.name))])]):_vm._e()]})],2)])],1),_vm._v(" "),(_vm.showSsCol)?_c('div',{class:[(_vm.classPrefix + "__ss")]},[_c('scroll',{ref:"ssScroll",attrs:{"size":"small"}},[_c('div',{class:[(_vm.classPrefix + "__ss-inner")]},[_vm._l((_vm.ssData),function(ssItem){return [(!(_vm.picker.hideDisabledOptions && _vm.picker.disabledSeconds.includes(parseInt(ssItem.id))))?_c('div',{key:ssItem.id,class:[
                             (_vm.classPrefixItem + "__col"),
                             !(ssItem.id === _vm.selectedSecond) && !(_vm.picker.disabledSeconds && _vm.picker.disabledSeconds.includes(parseInt(ssItem.id))) && (_vm.classPrefixItem + "__hover"),
                             !ssItem.visibility && (_vm.classPrefix + "__hide"),
                             ssItem.id === _vm.selectedSecond && (_vm.classPrefixItem + "__selected"),
                             _vm.picker.disabledSeconds && _vm.picker.disabledSeconds.includes(parseInt(ssItem.id)) && (_vm.classPrefixItem + "__disabled") ],on:{"click":function($event){return _vm.selectSecond(ssItem)}}},[_c('em',[_vm._v(_vm._s(ssItem.name))])]):_vm._e()]})],2)])],1):_vm._e()])}
var date_pane_timevue_type_template_id_5f5a5493_staticRenderFns = []


// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-time.vue?vue&type=template&id=5f5a5493&

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.regexp.constructor.js
var es6_regexp_constructor = __webpack_require__(124);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.regexp.search.js
var es6_regexp_search = __webpack_require__(126);

// EXTERNAL MODULE: ./node_modules/_core-js@2.6.11@core-js/modules/es6.regexp.match.js
var es6_regexp_match = __webpack_require__(128);

// CONCATENATED MODULE: ./src/utils/date.js








 // 常量

var dateObj = {
  month: [{
    id: 1,
    name: locale_t('m.datePicker.months.m1')
  }, {
    id: 2,
    name: locale_t('m.datePicker.months.m2')
  }, {
    id: 3,
    name: locale_t('m.datePicker.months.m3')
  }, {
    id: 4,
    name: locale_t('m.datePicker.months.m4')
  }, {
    id: 5,
    name: locale_t('m.datePicker.months.m5')
  }, {
    id: 6,
    name: locale_t('m.datePicker.months.m6')
  }, {
    id: 7,
    name: locale_t('m.datePicker.months.m7')
  }, {
    id: 8,
    name: locale_t('m.datePicker.months.m8')
  }, {
    id: 9,
    name: locale_t('m.datePicker.months.m9')
  }, {
    id: 10,
    name: locale_t('m.datePicker.months.m10')
  }, {
    id: 11,
    name: locale_t('m.datePicker.months.m11')
  }, {
    id: 12,
    name: locale_t('m.datePicker.months.m12')
  }],
  week: [{
    id: 0,
    name: locale_t('m.datePicker.weeks.sun')
  }, {
    id: 1,
    name: locale_t('m.datePicker.weeks.mon')
  }, {
    id: 2,
    name: locale_t('m.datePicker.weeks.tue')
  }, {
    id: 3,
    name: locale_t('m.datePicker.weeks.wed')
  }, {
    id: 4,
    name: locale_t('m.datePicker.weeks.thu')
  }, {
    id: 5,
    name: locale_t('m.datePicker.weeks.fri')
  }, {
    id: 6,
    name: locale_t('m.datePicker.weeks.sat')
  }],
  reg: /d{1,4}|M{1,4}|yy(?:yy)?|([HhMsWm])\1?|[aA]|"[^"]*"|'[^']*'/g,
  yyyy: /yyyy/g,
  yy: /yy/g,
  MM: /MM/g,
  M: /M/g,
  dd: /dd/g,
  d: /d/g,
  hh: /hh/g,
  h: /h/g,
  HH: /HH/g,
  H: /H/g,
  mm: /mm/g,
  m: /m/g,
  ss: /ss/g,
  s: /s/g,
  A: /A/g,
  a: /a/g,
  WW: /WW/g,
  W: /W/g,
  fourNumberReg: /\d{4}/,
  twoNumberReg: /\d\d?/,
  // eslint-disable-next-line no-useless-escape
  word: /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i
};
var parseDateObj = function parseDateObj(o, f, r) {
  r = isNaN(parseInt(r)) ? r : parseInt(r);

  switch (f) {
    case 'yyyy':
      o.year = r;
      break;

    case 'yy':
      var nowDate = new Date();
      var fullYear = nowDate.getFullYear();
      fullYear = fullYear.toString().substring(0, 2);
      o.year = fullYear + r;
      break;

    case 'MM':
      o.month = r - 1;
      break;

    case 'M':
      o.month = r - 1;
      break;

    case 'dd':
      o.date = r;
      break;

    case 'd':
      o.date = r;
      break;

    case 'hh':
      o.hour = r >= 12 ? r - 12 : r;
      break;

    case 'h':
      o.hour = r >= 12 ? r - 12 : r;
      break;

    case 'HH':
      o.hour = r;
      break;

    case 'H':
      o.hour = r;
      break;

    case 'mm':
      o.minute = r;
      break;

    case 'm':
      o.minute = r;
      break;

    case 'ss':
      o.second = r;
      break;

    case 's':
      o.second = r;
      break;

    case 'A':
      o.apm = r;
      break;

    case 'a':
      o.apm = r;
      break;

    case 'WW':
      o.week = r;
      break;

    case 'W':
      o.week = r;
      break;
  }
};
var zero = function zero(value) {
  if (isNaN(parseInt(value)) || !value.toString()) return value;

  if (value < 10) {
    value = '0' + parseInt(value);
  }

  return value.toString();
};
/**
 * 格式化日期格式
 * @param forDate
 * @param format
 * @returns {string|*}
 */

var dateFormat = function dateFormat(forDate, format) {
  if (!forDate) return forDate;
  format = format || 'yyyy-MM-dd';

  if (typeof forDate === 'string') {
    var dateArr = forDate.match(/(\d{1,})/g);
    var dateSeparator = '-';
    var timeSeparator = ':';
    var foryy = dateArr[0] ? dateArr[0].length !== 4 ? dateArr[0].substring(0, 4) : dateArr[0] : '';
    var forMM = dateArr[1] ? dateSeparator + (dateArr[1].length > 2 ? dateArr[1].substring(0, 2) : dateArr[1]) : '';
    var fordd = dateArr[2] ? dateSeparator + (dateArr[2].length > 2 ? dateArr[2].substring(0, 2) : dateArr[2]) : '';
    var forhh = dateArr[3] ? ' ' + (dateArr[3].length > 2 ? dateArr[3].substring(0, 2) : dateArr[3]) : '';
    var formm = dateArr[4] ? timeSeparator + (dateArr[4].length > 2 ? dateArr[4].substring(0, 2) : dateArr[4]) : '';
    var forss = dateArr[5] ? timeSeparator + (dateArr[5].length > 2 ? dateArr[5].substring(0, 2) : dateArr[5]) : '';
    if (foryy && foryy.length !== 4) foryy = new Date().getFullYear().toString();
    if (forMM && Math.abs(forMM) > 12) forMM = '12';
    if (fordd && Math.abs(fordd) > 31) fordd = '31';
    if (forhh && Math.abs(forhh) > 59) forhh = '59';
    if (formm && Math.abs(formm) > 59) formm = '59';
    if (forss && Math.abs(forss) > 59) forss = '59';
    forDate = new Date("".concat(foryy).concat(forMM).concat(fordd).concat(forhh).concat(formm).concat(forss));
  } else {
    forDate = new Date(forDate);
  }

  var fullYear = forDate.getFullYear();
  var year = fullYear.toString().substring(2);
  var month = forDate.getMonth() + 1;
  var date = forDate.getDate();
  var hours = forDate.getHours();
  var minutes = forDate.getMinutes();
  var second = forDate.getSeconds();
  var apm = hours >= 12 ? 'pm' : 'am';
  var week = getWeekNumber(forDate).week; // 12小时制

  var lowerHours = hours >= 12 ? hours - 12 : hours;

  if (format === 'timestamp') {
    return forDate.getTime();
  }

  return format.replace(dateObj.yyyy, fullYear).replace(dateObj.yy, year).replace(dateObj.MM, zero(month)).replace(dateObj.M, month).replace(dateObj.dd, zero(date)).replace(dateObj.d, date).replace(dateObj.hh, zero(lowerHours)).replace(dateObj.h, lowerHours).replace(dateObj.HH, zero(hours)).replace(dateObj.H, hours).replace(dateObj.mm, zero(minutes)).replace(dateObj.m, minutes).replace(dateObj.ss, zero(second)).replace(dateObj.s, second).replace(dateObj.A, apm.toUpperCase()).replace(dateObj.a, apm.toLowerCase()).replace(dateObj.WW, zero(week)).replace(dateObj.W, week);
};
/**
 * 转换格式化的日期为标准日期格式
 * @param formatDate 格式化的日期
 * @param format 日期格式
 */

var formatToDate = function formatToDate(formatDate, format) {
  if (!format || typeof format !== 'string') {
    throw new Error('Invalid format faild');
  }

  if (!formatDate) return;
  if (typeof formatDate !== 'string') formatDate = dateFormat(formatDate, format);
  var isValid = true;
  var dateInfo = {};
  format.replace(dateObj.reg, function ($0) {
    var len = $0.length;
    var reg = len === 4 ? dateObj.fourNumberReg : dateObj.twoNumberReg;
    if ($0 === 'a' || $0 === 'A') reg = dateObj.word;
    var index = formatDate.search(reg);
    if (index < 0) isValid = false;
    formatDate.replace(reg, function (result) {
      parseDateObj(dateInfo, $0, result);
      formatDate = formatDate.substring(index + result.length);
      return result;
    });
  });
  if (!isValid) return;

  if (dateInfo.week) {
    var computedDate = convertWeekToDate(dateInfo.year, dateInfo.week);
    dateInfo.month = computedDate.month - 1;
    dateInfo.date = computedDate.date;
  }

  var today = new Date();
  if (typeof dateInfo.hour === 'number' && dateInfo.hour < 12 && dateInfo.apm && dateInfo.apm.toLowerCase() === 'pm') dateInfo.hour = dateInfo.hour + 12;
  var date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month === 0 ? 0 : dateInfo.month || today.getMonth() || 0, dateInfo.date || today.getDate() || 1, dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0);
  if (isNaN(date.getTime())) return;
  return date;
};
/**
 * 指定日期下的所有月份或者所有日期
 * @param forYear 指定年
 * @param forMonth 指定月 如果此值不存在则返回指定年下的月份
 * @returns {[]|*[]|*}
 */

var dateOnMonth = function dateOnMonth(forYear, forMonth) {
  var forDate;
  if (!forYear) return forYear;

  if (forMonth) {
    forDate = new Date(forYear, forMonth - 1, 1);
  } else {
    return dateObj.month;
  }

  var result = [];
  var year = forDate.getFullYear();
  var month = forDate.getMonth();
  var nowDate = dateFormat(new Date()); // 获取当前月第一天的日期

  var firstDate = new Date(year, month, 1);
  var firstDay = firstDate.getDay(); // 第一天是周几
  // 获取当前月最后一天的日期

  var endDate = new Date(year, month + 1, 0);
  var endDay = firstDate.getDay(); // 最后一天是周几
  // 当前月天数

  var currentTotalDay = endDate.getDate() - firstDate.getDate() + 1;

  if (firstDay > 0) {
    var firstDateCopy = new Date(year, month, 1);

    for (var i = 0; i < firstDay; i++) {
      firstDateCopy.setDate(firstDateCopy.getDate() - 1);
      var key = new Date(firstDateCopy);
      result.push({
        year: firstDateCopy.getFullYear(),
        month: firstDateCopy.getMonth() + 1,
        date: firstDateCopy.getDate(),
        isNowDate: false,
        isNowMonth: false,
        key: key,
        format: dateFormat(firstDateCopy),
        week: getWeekNumber(key).week
      });
    }

    result.reverse();
  }

  for (var _i = 0; _i < currentTotalDay; _i++) {
    var _key = new Date(firstDate);

    result.push({
      year: firstDate.getFullYear(),
      month: firstDate.getMonth() + 1,
      date: firstDate.getDate(),
      isNowDate: nowDate === dateFormat(firstDate),
      isNowMonth: true,
      key: _key,
      format: dateFormat(firstDate),
      week: getWeekNumber(_key).week
    });
    firstDate.setDate(firstDate.getDate() + 1);
  }

  if (endDay < 6 || result.length < 6 * 7) {
    var endDateCopy = endDate;
    var num = Math.max(6 - endDay, 42 - result.length);

    for (var _i2 = 0; _i2 < num; _i2++) {
      endDateCopy.setDate(endDateCopy.getDate() + 1);

      var _key2 = new Date(endDateCopy);

      result.push({
        year: endDateCopy.getFullYear(),
        month: endDateCopy.getMonth() + 1,
        date: endDateCopy.getDate(),
        isNowDate: false,
        isNowMonth: false,
        key: _key2,
        format: dateFormat(endDateCopy),
        week: getWeekNumber(_key2).week
      });
    }
  }

  return result;
};
/**
 * 格式化年列表
 * @param forYear
 * @returns {[]|Array}
 */

var yearListInit = function yearListInit(forYear) {
  if (!forYear) return [];
  forYear = forYear.toString();
  var result = [];
  var yearSplitArr = forYear.split('');
  var startYear = []; // 四位的年份字符串

  startYear[0] = yearSplitArr[0];
  startYear[1] = yearSplitArr[1];
  startYear[2] = yearSplitArr[2];
  startYear[3] = '0';
  startYear = parseInt(startYear.join(''));

  for (var i = 0; i <= 9; i++) {
    result.push({
      id: startYear,
      key: "year".concat(startYear),
      name: startYear.toString()
    });
    startYear++;
  }

  return result;
};
/**
 * 获取指定日期在本年中的周数
 * @param date
 * @returns {number|*}
 */

var getWeekNumber = function getWeekNumber(date) {
  if (!date) return date;

  var computedWeekNumber = function computedWeekNumber(date) {
    var startDate = new Date(date);
    var nowDate = new Date(date);
    startDate.setHours(0);
    startDate.setMinutes(0);
    startDate.setSeconds(0);
    startDate.setMonth(0);
    startDate.setDate(1);
    var startDay = startDate.getDay();

    if (startDay <= 4) {
      startDate.setDate(1 - startDay);
    } else if (startDay > 4) {
      startDate.setDate(1 + 7 - startDay);
    }

    var dis = nowDate.getTime() - startDate.getTime();
    return Math.ceil(dis / (24 * 60 * 60 * 1000) / 7);
  };

  var nowDate = new Date(date);

  var _nowDate = nowDate.getDate();

  var nowDay = nowDate.getDay();

  if (nowDay >= 4) {
    nowDate.setDate(_nowDate - (nowDate.getDay() - 4));
  } else {
    nowDate.setDate(_nowDate + (4 - nowDate.getDay()));
  }

  return {
    year: nowDate.getFullYear(),
    month: nowDate.getMonth() + 1,
    week: computedWeekNumber(nowDate)
  };
};
/**
 * 根据年、周反推日期
 * @param year
 * @param week
 * @returns {Date}
 */

var convertWeekToDate = function convertWeekToDate(year, week) {
  // 根据周数反推月数
  // 计算周四的时间戳 所以减去3
  var m = (week * 7 - 3) * 24 * 60 * 60 * 1000;
  var startDate = new Date("".concat(year, "-01-01"));
  startDate.setHours(0);
  var startDay = startDate.getDay();

  if (startDay <= 4) {
    startDate.setDate(1 - startDay);
  } else {
    startDate.setDate(7 - startDay);
  }

  var currentDate = new Date(startDate.getTime() + m);
  return {
    month: currentDate.getMonth() + 1,
    date: currentDate.getDate()
  };
};
/**
 * 获取指定年指定周数的信息
 * @param weekNumberInfo
 * @param format
 * @returns {*}
 */

var getWeekNumberInfo = function getWeekNumberInfo(weekNumberInfo, format) {
  if (!weekNumberInfo || !format) return weekNumberInfo;
  var formatMatch = format.match(/(\S*)yyyy(\S*)WW(\S*)/);
  var yearReg = new RegExp("".concat(formatMatch[1], "(\\d*)").concat(formatMatch[2]));
  var weekReg = new RegExp("".concat(formatMatch[2], "(\\d*)").concat(formatMatch[3]));
  var regResult = weekNumberInfo.match(yearReg);
  var year;
  var month;
  var week;

  if (regResult) {
    year = weekNumberInfo.match(yearReg)[1];
    week = weekNumberInfo.match(weekReg)[1]; // 根据周数反推月数
    // 计算周四的时间戳 所以减去3

    var m = (week * 7 - 3) * 24 * 60 * 60 * 1000;
    var startDate = new Date("".concat(year, "-01-01"));
    startDate.setHours(0);
    var startDay = startDate.getDay();

    if (startDay <= 4) {
      startDate.setDate(1 - startDay);
    } else {
      startDate.setDate(7 - startDay);
    }

    var currentDate = new Date(startDate.getTime() + m);
    month = currentDate.getMonth() + 1;
  } else {
    year = getWeekNumber(weekNumberInfo).year;
    month = getWeekNumber(weekNumberInfo).month;
    week = getWeekNumber(weekNumberInfo).week;
  }

  return {
    year: year,
    month: month,
    weekNumber: week
  };
};
/**
 * 排序日期数组
 * @param date
 * @returns {*}
 */

var sortDate = function sortDate() {
  var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  if (!Array.isArray(date)) return date;
  var result = JSON.parse(JSON.stringify(date));
  result.sort(function (a, b) {
    var date1 = new Date(a);
    var date2 = new Date(b);
    var time1 = date1.getTime();
    var time2 = date2.getTime();
    return time1 > time2;
  });
  return result;
};
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-time.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var date_pane_timevue_type_script_lang_js_ = ({
  name: 'DatePaneTime',
  inject: ['picker'],
  props: {
    type: String,
    year: Number,
    month: Number,
    date: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    currentDate: Object,
    isRange: Boolean,
    hoverDate: Date,
    index: Number
  },
  data: function data() {
    var nowDate = new Date();
    nowDate.setHours(0);
    nowDate.setMinutes(0);
    nowDate.setSeconds(0);
    return {
      classPrefix: config.classPrefix + '-date-pane-time',
      classPrefixItem: config.classPrefix + '-date-pane-item',
      hhData: [],
      mmData: [],
      ssData: [],
      selectedHours: null,
      selectedMinutes: null,
      selectedSecond: null,
      hideNum: 8,
      defaultHours: null,
      defaultMinutes: null,
      defaultSecond: null,
      nowDate: nowDate
    };
  },
  computed: {
    showSsCol: function showSsCol() {
      return this.picker.formatType ? this.picker.formatType.includes('ss') : this.picker.valueFormat.includes('ss');
    }
  },
  components: {
    Scroll: packages_scroll
  },
  mounted: function mounted() {
    var _this = this;

    this.initData();
    this.$nextTick(function () {
      _this.getSelected();
    });
  },
  methods: {
    initData: function initData() {
      if (this.hhData.length && this.mmData.length && this.ssData.length) return;
      this.hhData = [];
      this.mmData = [];
      this.ssData = [];
      this.defaultHours = null;
      this.defaultMinutes = null;
      this.defaultSecond = null;

      for (var i = 0; i < 24 + this.hideNum; i++) {
        if (this.picker && this.picker.disabledHours && !this.picker.disabledHours.includes(i) && this.defaultHours === null) {
          this.defaultHours = i;
        }

        this.hhData.push({
          id: i,
          name: zero(i.toString()),
          visibility: i < 24
        });
      }

      for (var _i = 0; _i < 60 + this.hideNum; _i++) {
        if (this.picker && this.picker.disabledMinutes && !this.picker.disabledMinutes.includes(_i) && this.defaultMinutes === null) {
          this.defaultMinutes = _i;
        }

        if (this.picker && this.picker.disabledSeconds && !this.picker.disabledSeconds.includes(_i) && !this.defaultSecond === null) {
          this.defaultSecond = _i;
        }

        this.mmData.push({
          id: _i,
          name: zero(_i.toString()),
          visibility: _i < 60
        });
        this.ssData.push({
          id: _i,
          name: zero(_i.toString()),
          visibility: _i < 60
        });
      }
    },
    setNowDate: function setNowDate() {
      this.nowDate.setHours(this.defaultHours || 0);
      this.nowDate.setMinutes(this.defaultMinutes || 0);
      this.nowDate.setSeconds(this.defaultSecond || 0);
    },
    getSelected: function getSelected() {
      this.selectedHours = null;
      this.selectedMinutes = null;
      this.selectedSecond = null;
      this.setNowDate();
      var date = this.nowDate;

      if (this.date[this.index]) {
        date = this.date[this.index];
        this.selectedHours = date.getHours();
        this.selectedMinutes = date.getMinutes();
        this.selectedSecond = date.getSeconds();
      }

      this.scrollToHours();
      this.scrollToMinutes();
      this.scrollToSecond();
    },
    selectHours: function selectHours(hhItem) {
      var disabledHours = this.picker.disabledHours;
      disabledHours = disabledHours ? disabledHours.map(function (item) {
        return parseInt(item);
      }) : null;
      if (disabledHours && disabledHours.includes(hhItem.id)) return;
      this.selectedHours = hhItem.id;
      this.emitUpdateTime();
    },
    selectMinutes: function selectMinutes(mmItem) {
      var disabledMinutes = this.picker.disabledMinutes;
      disabledMinutes = disabledMinutes ? disabledMinutes.map(function (item) {
        return parseInt(item);
      }) : null;
      if (disabledMinutes && disabledMinutes.includes(mmItem.id)) return;
      this.selectedMinutes = mmItem.id;
      this.emitUpdateTime();
    },
    selectSecond: function selectSecond(ssItem) {
      var disabledSeconds = this.picker.disabledSeconds;
      disabledSeconds = disabledSeconds ? disabledSeconds.map(function (item) {
        return parseInt(item);
      }) : null;
      if (disabledSeconds && disabledSeconds.includes(ssItem.id)) return;
      this.selectedSecond = ssItem.id;
      this.emitUpdateTime();
    },
    emitUpdateTime: function emitUpdateTime() {
      var date = new Date(this.nowDate);
      if (this.date[this.index]) date = new Date(this.date[this.index]);
      date.setHours(this.selectedHours || this.defaultHours);
      date.setMinutes(this.selectedMinutes || this.defaultMinutes);
      date.setSeconds(this.selectedSecond || this.defaultSecond);
      this.$emit('update-time', [date]);
    },
    scrollToHours: function scrollToHours() {
      var _this2 = this;

      var y = 0;
      var scrollLen = this.selectedHours;
      var totalLen = 23;

      if (this.picker.disabledHours && this.picker.hideDisabledOptions) {
        var filter = this.picker.disabledHours.filter(function (item) {
          return parseInt(item) < _this2.selectedHours;
        });
        scrollLen = scrollLen - filter.length;
        totalLen = totalLen - this.picker.disabledHours.length;
      }

      if (this.selectedHours) y = scrollLen / totalLen * 100 + '%';
      this.$nextTick(function () {
        _this2.$refs.hhScroll && _this2.$refs.hhScroll.scrollTo({
          x: 0,
          y: y
        }, 200);
      });
    },
    scrollToMinutes: function scrollToMinutes() {
      var _this3 = this;

      var y = 0;
      var scrollLen = this.selectedMinutes;
      var totalLen = 59;

      if (this.picker.disabledMinutes && this.picker.hideDisabledOptions) {
        var filter = this.picker.disabledMinutes.filter(function (item) {
          return parseInt(item) < _this3.selectedMinutes;
        });
        scrollLen = scrollLen - filter.length;
        totalLen = totalLen - this.picker.disabledMinutes.length;
      }

      if (this.selectedMinutes) y = scrollLen / totalLen * 100 + '%';
      this.$nextTick(function () {
        _this3.$refs.mmScroll && _this3.$refs.mmScroll.scrollTo({
          x: 0,
          y: y
        }, 200);
      });
    },
    scrollToSecond: function scrollToSecond() {
      var _this4 = this;

      var y = 0;
      var scrollLen = this.selectedSecond;
      var totalLen = 59;

      if (this.picker.disabledSeconds && this.picker.hideDisabledOptions) {
        var filter = this.picker.disabledSeconds.filter(function (item) {
          return parseInt(item) < _this4.selectedSecond;
        });
        scrollLen = scrollLen - filter.length;
        totalLen = totalLen - this.picker.disabledSeconds.length;
      }

      if (this.selectedSecond) y = scrollLen / totalLen * 100 + '%';
      this.$nextTick(function () {
        _this4.$refs.ssScroll && _this4.$refs.ssScroll.scrollTo({
          x: 0,
          y: y
        }, 200);
      });
    }
  },
  watch: {
    date: function date() {
      this.getSelected();
    },
    type: function type() {
      this.getSelected();
    },
    'picker.visible': function pickerVisible(newVal) {
      if (newVal) {
        this.getSelected();
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-time.vue?vue&type=script&lang=js&
 /* harmony default export */ var pane_date_pane_timevue_type_script_lang_js_ = (date_pane_timevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-time.vue





/* normalize component */

var date_pane_time_component = normalizeComponent(
  pane_date_pane_timevue_type_script_lang_js_,
  date_pane_timevue_type_template_id_5f5a5493_render,
  date_pane_timevue_type_template_id_5f5a5493_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var date_pane_time = (date_pane_time_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-date.vue?vue&type=template&id=53d7ed52&
var date_pane_datevue_type_template_id_53d7ed52_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        _vm.picker.showWeekNumber && (_vm.classPrefix + "--show-week-number")
     ]},[_c('div',{class:[(_vm.classPrefix + "__week")]},_vm._l((_vm.weekList),function(week){return _c('span',{key:week.id,class:[(_vm.classPrefixItem + "__col"), (_vm.classPrefixItem + "__week")]},[_c('em',[_vm._v(_vm._s(week.name))])])}),0),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__date")]},_vm._l((_vm.dateList),function(row,rowIndex){return _c('div',{key:rowIndex,class:[
                (_vm.classPrefix + "__date-row"),
                _vm.type === 'week' && (_vm.classPrefix + "__date-row-week"),
                _vm.type === 'week' && _vm.isWeekSelect(row) && (_vm.classPrefix + "__date-row-week-selected")
             ],on:{"!click":function($event){return _vm.handleSelectWeek(row)}}},[(_vm.picker.showWeekNumber)?[_c('span',{class:[
                        (_vm.classPrefixItem + "__col"),
                        (_vm.classPrefixItem + "__week-number") ]},[_c('em',[_vm._v(_vm._s(row[4].week))])])]:_vm._e(),_vm._v(" "),_vm._l((row),function(dateItem){return _c('span',{key:dateItem.format,class:_vm.dateItemColClass(dateItem),on:{"mouseenter":function($event){return _vm.mouseEnter(dateItem)},"mouseleave":function($event){return _vm.mouseLeave(dateItem)},"click":function($event){return _vm.handleSelectDate(dateItem)}}},[_c('em',[_vm._v(_vm._s(dateItem.date))])])})],2)}),0)])}
var date_pane_datevue_type_template_id_53d7ed52_staticRenderFns = []


// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-date.vue?vue&type=template&id=53d7ed52&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-date.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var date_pane_datevue_type_script_lang_js_ = ({
  name: 'DatePaneDate',
  inject: ['picker'],
  props: {
    type: String,
    year: Number,
    month: Number,
    date: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    currentDate: Object,
    isRange: Boolean,
    hoverDate: Date,
    index: Number
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-date-pane-date',
      classPrefixItem: config.classPrefix + '-date-pane-item',
      dateList: [],
      weekList: dateObj.week,
      selectDate: []
    };
  },
  computed: {
    isWeekSelect: function isWeekSelect() {
      return function (rowDate) {
        rowDate = rowDate.map(function (item) {
          return item.format;
        });
        var select = dateFormat(this.selectDate[this.index]);
        return rowDate.includes(select);
      };
    },
    dateItemColClass: function dateItemColClass() {
      var selectDate = this.selectDate.map(function (item) {
        return dateFormat(item);
      });
      return function (dateItem) {
        return ["".concat(this.classPrefixItem, "__col"), this.type === 'date' && !dateItem.isDisabled && dateItem.isNowMonth && !selectDate.includes(dateItem.format) && "".concat(this.classPrefixItem, "__hover"), dateItem.isNowDate && "".concat(this.classPrefixItem, "__now"), !dateItem.isNowMonth && "".concat(this.classPrefixItem, "__no-now-month"), this.type !== 'week' && selectDate.includes(dateItem.format) && dateItem.isNowMonth && "".concat(this.classPrefixItem, "__selected"), !selectDate.includes(dateItem.format) && dateItem.isBetween && "".concat(this.classPrefixItem, "__between"), dateItem.isDisabled && "".concat(this.classPrefixItem, "__disabled")];
      };
    }
  },
  mounted: function mounted() {
    this.setDateList();
  },
  methods: {
    // 获取日期列表
    setDateList: function setDateList() {
      var _this = this;

      if (!this.year || !this.month) return;
      var dateList = dateOnMonth(this.year, this.month);
      var newDateList = [];
      var row = [];
      dateList.forEach(function (item, index) {
        item.isBetween = false;
        item.isDisabled = false;

        if (typeof _this.picker.disabledDate === 'function') {
          item.isDisabled = _this.picker.disabledDate(item.key);
        }

        if (_this.isRange && _this.selectDate.length === 2 && item.key > _this.selectDate[0] && item.key < _this.selectDate[1]) {
          item.isBetween = true;
        }

        if (index % 7 === 0) {
          row = [];
          newDateList.push(row);
        }

        row.push(item);
      });
      this.dateList = newDateList;
      this.clearHover(true);
    },
    handleSelectDate: function handleSelectDate(date) {
      if (date.isDisabled || this.type === 'week') return;

      if (this.selectDate.length === 2) {
        this.clearHover();
      }

      var _date = date.key;

      _date.setHours(0);

      _date.setMinutes(0);

      _date.setSeconds(0);

      this.$emit('updateDate', [_date]);
      this.picker && this.picker.dateClick(_date);
    },
    handleSelectWeek: function handleSelectWeek(row) {
      if (this.type === 'date') return;
      var date = row[4]; // 如果该周中存在禁用的项则不可选

      var index = row.findIndex(function (item) {
        return item.isDisabled;
      });
      if (index >= 0) return;
      this.$emit('updateWeek', [date.key]);
    },
    mouseEnter: function mouseEnter(dateItem) {
      if (this.type === 'week') return;

      if (this.isRange && this.selectDate.length === 1) {
        if (dateItem.isNowMonth) {
          dateItem.isBetween = true;
        }

        this.$emit('hover-date', dateItem.key); // range时清除另一个date-pane的hover效果
      }
    },
    mouseLeave: function mouseLeave(dateItem) {
      if (dateItem.isNowMonth) {
        if (this.selectDate.length === 2 && dateItem.key > this.selectDate[0] && dateItem.key < this.selectDate[1]) {
          dateItem.isBetween = true;
        } else {
          dateItem.isBetween = false;
        }
      }
    },
    rangeHovering: function rangeHovering(date) {
      var _this2 = this;

      if (this.selectDate.length === 1) {
        this.dateList.forEach(function (row) {
          row.forEach(function (item) {
            if (date > _this2.selectDate[0]) {
              if (item.key <= date && item.key > _this2.selectDate[0] && item.isNowMonth) {
                item.isBetween = true;
              } else {
                item.isBetween = false;
              }
            } else {
              if (item.key >= date && item.key < _this2.selectDate[0] && item.isNowMonth) {
                item.isBetween = true;
              } else {
                item.isBetween = false;
              }
            }
          });
        });
      }
    },
    // 清除hover效果, 如果noMonth存在只清除不是当前月的hover效果
    clearHover: function clearHover() {
      var noMonth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
      this.dateList.forEach(function (row) {
        row.forEach(function (item) {
          if (noMonth) {
            if (!item.isNowMonth) {
              item.isBetween = false;
            }
          } else {
            item.isBetween = false;
          }
        });
      });
    }
  },
  watch: {
    year: function year() {
      this.setDateList();
    },
    month: function month() {
      this.setDateList();
    },
    date: function date(newVal) {
      if (!newVal) return;
      this.selectDate = newVal || [];

      if (newVal.length === 1 && this.isRange) {
        this.clearHover();
      }

      this.setDateList();
    },
    hoverDate: function hoverDate(newVal) {
      if (this.isRange && newVal) this.rangeHovering(newVal);
    }
  }
});
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-date.vue?vue&type=script&lang=js&
 /* harmony default export */ var pane_date_pane_datevue_type_script_lang_js_ = (date_pane_datevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-date.vue





/* normalize component */

var date_pane_date_component = normalizeComponent(
  pane_date_pane_datevue_type_script_lang_js_,
  date_pane_datevue_type_template_id_53d7ed52_render,
  date_pane_datevue_type_template_id_53d7ed52_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var date_pane_date = (date_pane_date_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-year.vue?vue&type=template&id=7bb26a96&
var date_pane_yearvue_type_template_id_7bb26a96_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix) ]},_vm._l((_vm.yearList),function(row,rowIndex){return _c('div',{key:rowIndex,class:[(_vm.classPrefix + "__row")]},_vm._l((row),function(_year){return _c('span',{key:_year.id,class:[
                  (_vm.classPrefixItem + "__col"),
                  _vm.selectYear !== _year.id && (_vm.classPrefixItem + "__hover"),
                  _year.id === _vm.currentDate.year && (_vm.classPrefixItem + "__now"),
                  _vm.selectYear === _year.id && (_vm.classPrefixItem + "__selected")
              ],on:{"click":function($event){$event.stopPropagation();return _vm.handleSelectYear(_year)}}},[_c('em',[_vm._v(_vm._s(_year.name))])])}),0)}),0)}
var date_pane_yearvue_type_template_id_7bb26a96_staticRenderFns = []


// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-year.vue?vue&type=template&id=7bb26a96&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-year.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var date_pane_yearvue_type_script_lang_js_ = ({
  name: 'DatePaneYear',
  props: {
    type: String,
    year: Number,
    month: Number,
    date: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    currentDate: Object,
    index: Number
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-date-pane-year',
      classPrefixItem: config.classPrefix + '-date-pane-item',
      yearList: []
    };
  },
  computed: {
    selectYear: function selectYear() {
      return this.date[this.index] ? this.date[this.index].getFullYear() : null;
    }
  },
  mounted: function mounted() {
    this.setYearList();
  },
  methods: {
    // 获取年份列表
    setYearList: function setYearList(year) {
      if (!year && !this.year) return;
      var yearList = yearListInit(year || this.year);
      var newYearList = [];
      var row = [];
      yearList.forEach(function (item, index) {
        if (index % 3 === 0) {
          row = [];
          newYearList.push(row);
        }

        row.push(item);
      });
      this.yearList = newYearList;
    },
    handleSelectYear: function handleSelectYear(year) {
      this.$emit('update-year', year.id);
    }
  },
  watch: {
    year: function year() {
      if (this.type === 'year') {
        this.setYearList();
      }
    },
    type: function type(newVal) {
      newVal === 'year' && this.setYearList();
    }
  }
});
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-year.vue?vue&type=script&lang=js&
 /* harmony default export */ var pane_date_pane_yearvue_type_script_lang_js_ = (date_pane_yearvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-year.vue





/* normalize component */

var date_pane_year_component = normalizeComponent(
  pane_date_pane_yearvue_type_script_lang_js_,
  date_pane_yearvue_type_template_id_7bb26a96_render,
  date_pane_yearvue_type_template_id_7bb26a96_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var date_pane_year = (date_pane_year_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-month.vue?vue&type=template&id=53026a95&
var date_pane_monthvue_type_template_id_53026a95_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix) ]},_vm._l((_vm.monthList),function(row,rowIndex){return _c('div',{key:rowIndex,class:[(_vm.classPrefix + "__row")]},_vm._l((row),function(_month){return _c('span',{key:_month.id,class:[
                    (_vm.classPrefixItem + "__col"),
                    !(_vm.isSelectYear && _month.id === _vm.selectedMonth) && (_vm.classPrefixItem + "__hover"),
                    _month.id === _vm.currentDate.month && _vm.currentDate.year === _vm.year && (_vm.classPrefixItem + "__now"),
                    _vm.isSelectYear && _month.id === _vm.selectedMonth && (_vm.classPrefixItem + "__selected")
              ],on:{"click":function($event){$event.stopPropagation();return _vm.handleSelectMonth(_month)}}},[_c('em',[_vm._v(_vm._s(_month.name))])])}),0)}),0)}
var date_pane_monthvue_type_template_id_53026a95_staticRenderFns = []


// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-month.vue?vue&type=template&id=53026a95&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-month.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var date_pane_monthvue_type_script_lang_js_ = ({
  name: 'DatePaneMonth',
  props: {
    type: String,
    year: Number,
    month: Number,
    date: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    currentDate: Object,
    index: Number
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-date-pane-month',
      classPrefixItem: config.classPrefix + '-date-pane-item',
      monthList: []
    };
  },
  computed: {
    selectedMonth: function selectedMonth() {
      var month = this.date[this.index] ? this.date[this.index].getMonth() + 1 : null;
      return this.type === 'month' ? month : this.month;
    },
    isSelectYear: function isSelectYear() {
      return this.date[this.index] ? this.date[this.index].getFullYear() === this.year : false;
    }
  },
  mounted: function mounted() {
    this.setMonthList();
  },
  methods: {
    // 获取年份列表
    setMonthList: function setMonthList(year) {
      if (!year && !this.year) return;
      var monthList = dateObj.month;
      var newMonthList = [];
      var row = [];
      monthList.forEach(function (item, index) {
        if (index % 3 === 0) {
          row = [];
          newMonthList.push(row);
        }

        row.push(item);
      });
      this.monthList = newMonthList;
    },
    handleSelectMonth: function handleSelectMonth(month) {
      this.$emit('update-month', month.id);
    }
  },
  watch: {
    month: function month() {
      if (this.type === 'month') {
        this.setMonthList();
      }
    },
    type: function type(newVal) {
      newVal === 'month' && this.setMonthList();
    }
  }
});
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-month.vue?vue&type=script&lang=js&
 /* harmony default export */ var pane_date_pane_monthvue_type_script_lang_js_ = (date_pane_monthvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-month.vue





/* normalize component */

var date_pane_month_component = normalizeComponent(
  pane_date_pane_monthvue_type_script_lang_js_,
  date_pane_monthvue_type_template_id_53026a95_render,
  date_pane_monthvue_type_template_id_53026a95_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var date_pane_month = (date_pane_month_component.exports);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane-single.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//







/* harmony default export */ var date_pane_singlevue_type_script_lang_js_ = ({
  name: 'DatePaneSingle',
  mixins: [mixins_locale],
  inject: ['picker'],
  props: {
    type: String,
    index: Number,
    year: Number,
    month: Number,
    date: Array,
    hoverDate: Date,
    isRange: Boolean,
    pickerType: String
  },
  data: function data() {
    var currentType = ['date', 'daterange', 'datetime', 'datetimerange'].includes(this.type) ? 'date' : this.type;
    var nowDate = new Date();
    return {
      classPrefix: config.classPrefix + '-date-pane-single',
      currentType: currentType,
      currentDate: {
        year: nowDate.getFullYear(),
        month: nowDate.getMonth() + 1,
        date: nowDate.getDate()
      }
    };
  },
  computed: {
    dateChangeIconShow: function dateChangeIconShow() {
      return ['date', 'daterange', 'week'].includes(this.currentType);
    },
    headerMonthShow: function headerMonthShow() {
      return !['year', 'month'].includes(this.currentType);
    },
    yearJumpStep: function yearJumpStep() {
      return ['year'].includes(this.currentType) ? 10 : 1;
    },
    showDateHeader: function showDateHeader() {
      return !['time', 'timerange'].includes(this.currentType);
    },
    showTimeHeader: function showTimeHeader() {
      return this.isRange && ['time', 'timerange'].includes(this.currentType);
    }
  },
  components: {
    Icon: packages_icon,
    DatePaneTime: date_pane_time,
    DatePaneDate: date_pane_date,
    DatePaneYear: date_pane_year,
    DatePaneMonth: date_pane_month
  },
  methods: {
    jumpDate: function jumpDate(type) {
      this.updateSingleDate(type, null, null);
    },
    updateCurrentType: function updateCurrentType(type) {
      this.currentType = type;
    },
    handleHoverDate: function handleHoverDate(date) {
      this.$emit('hover-date', this.index, date);
    },
    updateSelectDate: function updateSelectDate(date) {
      date = [date[0]];
      this.$emit('update-date', this.index, date);
    },
    updateSelectTime: function updateSelectTime(date) {
      this.$emit('update-date', this.index, date, 'time');
    },
    updateSelectWeek: function updateSelectWeek(date) {
      this.$emit('update-date', this.index, date);
    },
    updateSelectYear: function updateSelectYear(year) {
      if (this.type === 'year') {
        this.updateSelectDate([new Date(year.toString())]);
      } else {
        this.updateCurrentType('month');
      }

      this.updateSingleDate('update-year', year, null);
    },
    updateSelectMonth: function updateSelectMonth(month) {
      if (['date', 'daterange', 'datetime', 'datetimerange'].includes(this.type)) {
        this.currentType = 'date';
      } else if (this.type === 'week') {
        this.currentType = 'week';
      } else {
        var date = new Date(this.year, month - 1);
        this.updateSelectDate([date]);
      }

      this.updateSingleDate('update-month', null, month);
    },
    updateSingleDate: function updateSingleDate(type, year, month) {
      year = year || this.year;
      month = month || this.month;
      this.$emit('update-pane', {
        type: type,
        year: year,
        month: month,
        jumpStep: this.yearJumpStep,
        index: this.index
      });
    }
  }
});
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-single.vue?vue&type=script&lang=js&
 /* harmony default export */ var pane_date_pane_singlevue_type_script_lang_js_ = (date_pane_singlevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-single.vue





/* normalize component */

var date_pane_single_component = normalizeComponent(
  pane_date_pane_singlevue_type_script_lang_js_,
  date_pane_singlevue_type_template_id_fd1411be_render,
  date_pane_singlevue_type_template_id_fd1411be_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var date_pane_single = (date_pane_single_component.exports);
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane-footer-slot.js
/* harmony default export */ var date_pane_footer_slot = ({
  name: 'DatePaneFooterSlot',
  functional: true,
  inject: ['picker'],
  render: function render(h, context) {
    var r = context.injections.picker.$scopedSlots.paneFooter;
    var className = context.data.class || {};

    if (r) {
      return h('div', {
        class: className
      }, r());
    }

    return null;
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/pane/date-pane.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//






/* harmony default export */ var date_panevue_type_script_lang_js_ = ({
  name: 'DatePane',
  inject: ['picker'],
  mixins: [mixins_locale],
  props: {
    value: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    type: String,
    isRange: Boolean,
    shortcuts: Array,
    multiple: Boolean,
    pickerType: String
  },
  data: function data() {
    var nowDate = new Date();
    return {
      classPrefix: config.classPrefix + '-date-pane',
      datePane0: {
        index: 0,
        year: null,
        month: null
      },
      datePane1: {
        index: 1,
        year: null,
        month: null
      },
      nowDate: nowDate,
      selectedDateValue: [],
      hoverDate: null,
      // 当前hover的日期
      isTime: false
    };
  },
  computed: {
    showFooter: function showFooter() {
      if (this.pickerType === 'time' && this.picker.confirm) return true;
      return ['datetime', 'datetimerange'].includes(this.type);
    },
    changeTimeDisabled: function changeTimeDisabled() {
      if (this.isRange) {
        return this.selectedDateValue.length !== 2;
      }

      return false;
    }
  },
  components: {
    DatePaneSingle: date_pane_single,
    Button: packages_button,
    DatePaneFooterSlot: date_pane_footer_slot
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.dealValue();
    });
  },
  methods: {
    dealValue: function dealValue() {
      this.selectedDateValue = Array.isArray(this.value) ? this.value : [];
      var startDate = this.nowDate;
      var endDate = null;

      if (this.selectedDateValue.length) {
        if (this.isRange) {
          startDate = this.selectedDateValue[0];
          endDate = this.selectedDateValue[1];
        } else if (this.multiple && this.type === 'date') {
          startDate = this.selectedDateValue[this.selectedDateValue.length - 1];
        } else {
          startDate = this.selectedDateValue[0];
        }
      }

      this.initYearAndMonth(startDate, endDate);
    },
    initYearAndMonth: function initYearAndMonth(startDate, endDate) {
      var paneYear0 = startDate.getFullYear();
      var paneMonth0 = startDate.getMonth() + 1;
      var paneYear1 = null;
      var paneMonth2 = null;
      var rightPaneDate = new Date(startDate);
      if (endDate) rightPaneDate = new Date(endDate);
      if (rightPaneDate.getMonth() === startDate.getMonth()) rightPaneDate.setMonth(startDate.getMonth() + 1);
      paneYear1 = rightPaneDate.getFullYear();
      paneMonth2 = rightPaneDate.getMonth() + 1;
      this.datePane0.year = paneYear0;
      this.datePane0.month = paneMonth0;
      this.datePane1.year = paneYear1;
      this.datePane1.month = paneMonth2;
    },
    handleHoverDate: function handleHoverDate(index, hoverDate) {
      if (this.isRange) {
        this.hoverDate = hoverDate;
      }
    },
    // 更新pane的日期 一个pane时更新当前pane的日期 两个pane时更新两个pane的日期
    updatePane: function updatePane(obj) {
      var index = obj.index; // 更新当前pane的日期

      this.updateDateCommon(obj); // 如果是range类型 更新另一个pane的日期

      if (this.isRange) {
        // 先判断第一个pane的当前年月是否小于第二个pane当前的年月 如果第一个pane的日期大于等于第二个pane的日期则更新另一个pane的日期
        var paneDate0 = new Date("".concat(this.datePane0.year, "-").concat(this.datePane0.month));
        var paneDate1 = new Date("".concat(this.datePane1.year, "-").concat(this.datePane1.month));

        if (paneDate0 >= paneDate1) {
          // 如果是第一个pane更新了 需要去更新第二个pane的，否则相反
          if (index === 0) {
            paneDate0.setMonth(paneDate0.getMonth() + 1);
            this.datePane1.year = paneDate0.getFullYear();
            this.datePane1.month = paneDate0.getMonth() + 1;
          } else if (index === 1) {
            paneDate1.setMonth(paneDate1.getMonth() - 1);
            this.datePane0.year = paneDate1.getFullYear();
            this.datePane0.month = paneDate1.getMonth() + 1;
          }
        }
      }
    },
    updateDateCommon: function updateDateCommon(obj) {
      var type = obj.type,
          year = obj.year,
          month = obj.month,
          jumpStep = obj.jumpStep,
          index = obj.index;

      switch (type) {
        case 'pre-year':
          this["datePane".concat(index)].year = year - jumpStep;
          break;

        case 'pre-month':
          month = month - 1;

          if (month < 1) {
            month = 12;
            this["datePane".concat(index)].year = year - 1;
          }

          this["datePane".concat(index)].month = month;
          break;

        case 'next-month':
          month = month + 1;

          if (month > 12) {
            month = 1;
            this["datePane".concat(index)].year = year + 1;
          }

          this["datePane".concat(index)].month = month;
          break;

        case 'next-year':
          this["datePane".concat(index)].year = year + jumpStep;
          break;

        case 'update-year':
          this["datePane".concat(index)].year = year;
          break;

        case 'update-month':
          this["datePane".concat(index)].month = month;
          break;
      }
    },
    updateValue: function updateValue(index, date, updateType) {
      if (this.pickerType === 'date') {
        if (this.multiple && this.type === 'date') {
          var _this$selectedDateVal;

          var currentDate = dateFormat(date[0]);
          var selectedDateValue = this.selectedDateValue.map(function (item) {
            return dateFormat(item);
          });

          var _index = selectedDateValue.findIndex(function (item) {
            return item === currentDate;
          });

          if (_index >= 0) this.selectedDateValue.splice(_index, 1);else (_this$selectedDateVal = this.selectedDateValue).push.apply(_this$selectedDateVal, _toConsumableArray(date));
        } else {
          if (!this.isRange) {
            this.selectedDateValue = date;
          } else {
            if (this.selectedDateValue.length === 2) {
              if (updateType === 'time') {
                var _this$selectedDateVal2;

                // 日期选择时间时第二个日期时间不能小于第一个日期时间
                (_this$selectedDateVal2 = this.selectedDateValue).splice.apply(_this$selectedDateVal2, [index, 1].concat(_toConsumableArray(date)));

                var leftDate = this.selectedDateValue[0];
                var rightDate = this.selectedDateValue[1];

                if (leftDate.getTime() > rightDate.getTime()) {
                  this.selectedDateValue.splice(1, 1, this.selectedDateValue[0]);
                }
              } else {
                this.selectedDateValue = _toConsumableArray(date);
              }
            } else if (this.selectedDateValue.length === 1) {
              if (date[0] > this.selectedDateValue[0]) {
                var _this$selectedDateVal3;

                (_this$selectedDateVal3 = this.selectedDateValue).push.apply(_this$selectedDateVal3, _toConsumableArray(date));
              } else {
                var _this$selectedDateVal4;

                (_this$selectedDateVal4 = this.selectedDateValue).unshift.apply(_this$selectedDateVal4, _toConsumableArray(date));
              }

              this.initYearAndMonth(this.selectedDateValue[0], this.selectedDateValue[1]);
            } else {
              var _this$selectedDateVal5;

              (_this$selectedDateVal5 = this.selectedDateValue).push.apply(_this$selectedDateVal5, _toConsumableArray(date));
            }
          }
        }
      } else if (this.pickerType === 'time') {
        if (!this.isRange) {
          this.selectedDateValue = _toConsumableArray(date);
        } else {
          if (!this.selectedDateValue.length) {
            if (index === 0) {
              var _this$selectedDateVal6;

              (_this$selectedDateVal6 = this.selectedDateValue).push.apply(_this$selectedDateVal6, _toConsumableArray(date).concat(_toConsumableArray(date)));
            } else if (index === 1) {
              var _this$selectedDateVal7;

              var date0 = construct_construct(Date, _toConsumableArray(date));

              date0.setHours(0);
              date0.setMinutes(0);
              date0.setSeconds(0);

              (_this$selectedDateVal7 = this.selectedDateValue).push.apply(_this$selectedDateVal7, [date0].concat(_toConsumableArray(date)));
            }
          } else if (this.selectedDateValue.length === 1) {
            if (index === 0) {
              var _this$selectedDateVal8;

              (_this$selectedDateVal8 = this.selectedDateValue).splice.apply(_this$selectedDateVal8, [index, 1].concat(_toConsumableArray(date)));
            } else if (index === 1) {
              var _this$selectedDateVal9;

              (_this$selectedDateVal9 = this.selectedDateValue).push.apply(_this$selectedDateVal9, _toConsumableArray(date));
            }
          } else if (this.selectedDateValue.length === 2) {
            var _this$selectedDateVal10;

            (_this$selectedDateVal10 = this.selectedDateValue).splice.apply(_this$selectedDateVal10, [index, 1].concat(_toConsumableArray(date)));

            var _date = new Date(this.selectedDateValue[0]);

            var date1 = new Date(this.selectedDateValue[1]);

            var time0 = _date.getTime();

            var time1 = date1.getTime();

            if (time0 > time1) {
              this.selectedDateValue.splice(1, 1, this.selectedDateValue[0]);
            }
          }
        }
      }

      this.$emit('input', this.selectedDateValue);
      this.$emit('change', this.selectedDateValue); // todo 多选时选择不是本月的日期不引起面板日期联动切换 所以需要手动改变

      if (this.multiple && this.type === 'date') this.dealValue();
      this.closeDropDown();
    },
    changeTimeAndDate: function changeTimeAndDate() {
      this.$refs.leftPane && this.$refs.leftPane.updateCurrentType(this.isTime ? 'date' : 'time');
      this.$refs.rightPane && this.$refs.rightPane.updateCurrentType(this.isTime ? 'date' : 'time');
      this.isTime = !this.isTime;
    },
    shortcutsClick: function shortcutsClick(item) {
      item.onClick && item.onClick(this.picker);
      this.closeDropDown(true);
    },
    handleClean: function handleClean() {
      this.isTime && this.changeTimeAndDate();
      this.picker && this.picker.handleClear();
      this.closeDropDown(true);
    },
    closeDropDown: function closeDropDown(isClose) {
      if (isClose) {
        this.picker.dropDownVisible(false);
        return;
      }

      switch (this.type) {
        case 'date':
          !this.multiple && this.picker.dropDownVisible(false);
          break;

        case 'daterange':
          this.selectedDateValue.length === 2 && this.picker.dropDownVisible(false);
          break;

        case 'datetime':
          isClose && this.picker.dropDownVisible(false);
          break;

        case 'datetimerange':
          isClose && this.picker.dropDownVisible(false);
          break;

        case 'year':
          this.picker.dropDownVisible(false);
          break;

        case 'month':
          this.picker.dropDownVisible(false);
          break;

        case 'week':
          this.picker.dropDownVisible(false);
          break;
      }
    }
  },
  watch: {
    value: function value(newVal, oldVal) {
      if (JSON.stringify(newVal) !== JSON.stringify(oldVal)) this.dealValue();
    }
  }
});
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane.vue?vue&type=script&lang=js&
 /* harmony default export */ var pane_date_panevue_type_script_lang_js_ = (date_panevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/date-picker/src/pane/date-pane.vue





/* normalize component */

var date_pane_component = normalizeComponent(
  pane_date_panevue_type_script_lang_js_,
  date_panevue_type_template_id_385d95c2_render,
  date_panevue_type_template_id_385d95c2_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var date_pane = (date_pane_component.exports);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/picker/date-picker.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//







/* harmony default export */ var date_pickervue_type_script_lang_js_ = ({
  name: 'DatePicker',
  directives: {
    clickOutside: v_click_outside_x_esm_directive
  },
  provide: function provide() {
    return {
      picker: this
    };
  },
  props: {
    value: [String, Array, Date, Number],
    type: {
      type: String,
      default: 'date',
      validator: function validator(value) {
        return ['date', 'daterange', 'datetime', 'datetimerange', 'year', 'month', 'week'].includes(value);
      }
    },
    disabled: Boolean,
    readonly: Boolean,
    placeholder: String,
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    clearable: {
      type: Boolean,
      default: true
    },
    suffix: {
      type: String,
      default: 'date'
    },
    prefix: {
      type: String,
      default: ''
    },
    transition: {
      type: String,
      default: 'slideUp'
    },
    editable: {
      type: Boolean,
      default: true
    },
    // 文本框是否可以输入
    placement: {
      type: String,
      default: 'bottom-start'
    },
    format: {
      type: String,
      default: ''
    },
    valueFormat: {
      type: String,
      default: ''
    },
    shortcuts: Array,
    disabledDate: Function,
    showWeekNumber: Boolean,
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: function _default() {
        return false;
      }
    },
    open: Boolean,
    // 手动控制日期框的打开关闭
    multiple: Boolean,
    // 多选日期
    separator: {
      type: String,
      default: '~'
    },
    // 两个日期之间的分隔符
    className: String,
    // 选择器的类名
    dropdownClassName: String,
    // 日期下拉框的类名
    onlyShowPane: Boolean // 是否只显示pane日期框

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-date-picker',
      dateValue: [],
      dateInputValue: '',
      visible: false,
      form: findComponent(this, 'Form')
    };
  },
  computed: {
    isRange: function isRange() {
      return this.type.includes('range');
    },
    readonlyInput: function readonlyInput() {
      return this.readonly || !this.editable;
    },
    computedSize: function computedSize() {
      if (this.size !== 'default') return this.size;
      if (this.form && this.form.size !== 'default') return this.form.size;
      return this.size;
    },
    defaultFormatType: function defaultFormatType() {
      var result;

      switch (this.type) {
        case 'date':
          result = 'yyyy-MM-dd';
          break;

        case 'daterange':
          result = 'yyyy-MM-dd';
          break;

        case 'datetime':
          result = 'yyyy-MM-dd hh:mm:ss';
          break;

        case 'datetimerange':
          result = 'yyyy-MM-dd hh:mm:ss';
          break;

        case 'year':
          result = 'yyyy';
          break;

        case 'month':
          result = 'yyyy-MM';
          break;

        case 'week':
          result = 'yyyy-WW';
          break;

        default:
          result = 'yyyy-MM-dd';
          break;
      }

      return result;
    },
    formatType: function formatType() {
      if (this.format && this.format !== 'timestamp') return this.format;
      return this.defaultFormatType;
    }
  },
  components: {
    Drop: drop,
    DatePane: date_pane,
    Input: packages_input
  },
  mounted: function mounted() {
    this.initDateValue();
    this.updateInputValue();
    this.visible = this.open;
  },
  methods: {
    initDateValue: function initDateValue(val) {
      var _this = this;

      var value = val || this.value;
      var valid = true;

      if (value && Array.isArray(value)) {
        value = value.map(function (item) {
          var v = formatToDate(item, _this.formatType);
          if (!v || v && isNaN(v.getTime())) valid = false;
          return v;
        });
      } else if (value) {
        var v = formatToDate(value, this.formatType);
        if (!v || v && isNaN(v.getTime())) valid = false;
        value = [v];
      } else {
        value = [];
      }

      if (!valid) return;

      if (this.multiple && this.type === 'date') {
        this.dateValue = value;
      } else {
        if (this.isRange) {
          this.dateValue = value.length >= 2 ? [value[0], value[1]] : [];
        } else {
          this.dateValue = value.length >= 1 ? [value[0]] : [];
        }
      }
    },
    setValue: function setValue(value) {
      if (!Array.isArray(value)) {
        value = new Date(value);
      }

      this.initDateValue(value);
      this.handleDateValueChange();
    },
    handleFocus: function handleFocus() {
      this.dropDownVisible(true);
    },
    // 转换输入的inputvalue为标准日期格式
    handleEnter: function handleEnter(value) {
      var _this2 = this;

      if (!value) return this.updateInputValue();
      var result = [];
      if (this.isRange && value.includes(this.separator)) value = value.split(this.separator);else if (this.multiple) value = value.split(',');else value = [value];
      var valid = true;
      value.forEach(function (item) {
        var v = formatToDate(item, _this2.formatType);
        if (valid) valid = !!v;
        result.push(v);
      });
      if (JSON.stringify(result) === JSON.stringify(this.dateValue)) return;

      if (result.length && valid) {
        this.initDateValue(result);
        this.handleDateValueChange();
      } else {
        this.updateInputValue();
      }
    },
    handleClickOutside: function handleClickOutside(event) {
      if (this.visible) {
        if (this.renderHtml !== false) {
          var $el = this.$refs.dropDown.$el;

          if ($el === event.target || $el.contains(event.target)) {
            return;
          }
        }

        this.dropDownVisible(false);
        this.handleEnter(this.dateInputValue);
        this.$emit('click-outside', event);
      }
    },
    dropDownVisible: function dropDownVisible(visible) {
      if (this.readonly || this.open || this.disabled) return;
      this.visible = visible;
      visible && this.$refs.datePane.isTime && this.$refs.datePane.changeTimeAndDate();
    },
    handleClear: function handleClear() {
      this.dateValue = [];
      this.handleDateValueChange();
      this.$emit('clear');
    },
    updateInputValue: function updateInputValue() {
      var _this3 = this;

      var dateValue = this.dateValue.map(function (item) {
        return dateFormat(item, _this3.formatType);
      });

      if (this.multiple && this.type === 'date') {
        this.dateInputValue = dateValue.join(',');
      } else {
        if (this.isRange) {
          if (dateValue.length === 2) {
            this.dateInputValue = "".concat(dateValue[0], " ").concat(this.separator, " ").concat(dateValue[1]);
          }

          if (dateValue.length === 0) this.dateInputValue = '';
        } else {
          this.dateInputValue = dateValue[0] || '';
        }
      }
    },
    focus: function focus() {
      this.$refs.dateInput && this.$refs.dateInput.focus();
    },
    blur: function blur() {
      this.$refs.dateInput && this.$refs.dateInput.blur();
    },
    dateClick: function dateClick(selectValue) {
      this.$emit('date-click', selectValue);
    },
    handleDateValueChange: function handleDateValueChange(value) {
      var _this4 = this;

      this.updateInputValue();
      value = value || this.dateValue;
      var result = value.map(function (item) {
        return new Date(item);
      });
      if (this.valueFormat) result = result.map(function (item) {
        return dateFormat(item, _this4.valueFormat);
      });

      if (this.isRange) {
        if (result.length === 2 || !result.length) {
          this.$emit('input', result);
          this.$emit('change', result);
        }
      } else if (this.multiple && this.type === 'date') {
        this.$emit('input', result);
        this.$emit('change', result);
      } else {
        this.$emit('input', result[0] || '');
        this.$emit('change', result[0] || '');
      }
    }
  },
  watch: {
    value: function value(newVal, oldVal) {
      if (JSON.stringify(newVal) === JSON.stringify(oldVal)) return;
      this.initDateValue(); // this.handleDateValueChange();

      this.updateInputValue();
    },
    open: function open(newVal) {
      this.visible = newVal;
    }
  }
});
// CONCATENATED MODULE: ./packages/date-picker/src/picker/date-picker.vue?vue&type=script&lang=js&
 /* harmony default export */ var picker_date_pickervue_type_script_lang_js_ = (date_pickervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/date-picker/src/picker/date-picker.vue





/* normalize component */

var date_picker_component = normalizeComponent(
  picker_date_pickervue_type_script_lang_js_,
  date_pickervue_type_template_id_a15f9178_render,
  date_pickervue_type_template_id_a15f9178_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var date_picker = (date_picker_component.exports);
// CONCATENATED MODULE: ./packages/date-picker/index.js

/* harmony default export */ var packages_date_picker = (date_picker);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/picker/time-picker.vue?vue&type=template&id=4b67e338&
var time_pickervue_type_template_id_4b67e338_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"click-outside",rawName:"v-click-outside.capture",value:(_vm.handleClickOutside),expression:"handleClickOutside",modifiers:{"capture":true}}],class:[
        ("" + _vm.classPrefix),
        _vm.className ]},[(!_vm.onlyShowPane)?[_c('div',{ref:"reference",class:[(_vm.classPrefix + "__reference")]},[_vm._t("default",[_c('Input',{ref:"timeInput",attrs:{"suffix":_vm.suffix,"prefix":_vm.prefix,"size":_vm.computedSize,"disabled":_vm.disabled,"clearable":_vm.clearable,"placeholder":_vm.placeholder,"readonly":_vm.readonlyInput},on:{"enter":_vm.handleEnter,"clear":_vm.handleClear},nativeOn:{"click":function($event){return _vm.handleFocus($event)}},model:{value:(_vm.dateInputValue),callback:function ($$v) {_vm.dateInputValue=$$v},expression:"dateInputValue"}})])],2),_vm._v(" "),_c('transition',{attrs:{"name":_vm.transition}},[_c('Drop',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible && !_vm.disabled),expression:"visible && !disabled"}],ref:"dropDown",class:_vm.dropdownClassName,attrs:{"reference":this.$refs.reference,"placement":_vm.placement,"min-width":false,"dropdownMatchSelectWidth":false,"render-html":_vm.renderHtml},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:"visible"}},[_c('div',{class:[(_vm.classPrefix + "__drop-down-inner")]},[_c('date-pane',{attrs:{"picker-type":"time","is-range":_vm.isRange,"type":_vm.type},on:{"change":_vm.handleDateValueChange},model:{value:(_vm.dateValue),callback:function ($$v) {_vm.dateValue=$$v},expression:"dateValue"}})],1)])],1)]:[_c('div',{class:[(_vm.classPrefix + "__drop-down-inner")]},[_c('date-pane',{attrs:{"picker-type":"time","is-range":_vm.isRange,"type":_vm.type},on:{"change":_vm.handleDateValueChange},model:{value:(_vm.dateValue),callback:function ($$v) {_vm.dateValue=$$v},expression:"dateValue"}})],1)]],2)}
var time_pickervue_type_template_id_4b67e338_staticRenderFns = []


// CONCATENATED MODULE: ./packages/date-picker/src/picker/time-picker.vue?vue&type=template&id=4b67e338&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/date-picker/src/picker/time-picker.vue?vue&type=script&lang=js&





//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//







/* harmony default export */ var time_pickervue_type_script_lang_js_ = ({
  name: 'TimePicker',
  directives: {
    clickOutside: v_click_outside_x_esm_directive
  },
  provide: function provide() {
    return {
      picker: this
    };
  },
  props: {
    value: [String, Date, Array, Number],
    type: {
      type: String,
      default: 'time',
      validator: function validator(value) {
        return ['time', 'timerange'].includes(value);
      }
    },
    disabled: Boolean,
    disabledHours: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    // 不可选的时
    disabledMinutes: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    // 不可选的分
    disabledSeconds: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    // 不可选的秒
    hideDisabledOptions: Boolean,
    // 是否隐藏disabled的时分秒
    confirm: Boolean,
    readonly: Boolean,
    placeholder: String,
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    clearable: {
      type: Boolean,
      default: true
    },
    suffix: {
      type: String,
      default: 'time'
    },
    prefix: {
      type: String,
      default: ''
    },
    transition: {
      type: String,
      default: 'slideUp'
    },
    editable: {
      type: Boolean,
      default: true
    },
    // 文本框是否可以输入
    placement: {
      type: String,
      default: 'bottom-start'
    },
    format: {
      type: String,
      default: 'HH:mm:ss'
    },
    valueFormat: {
      type: String,
      default: 'HH:mm:ss'
    },
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: function _default() {
        return false;
      }
    },
    open: Boolean,
    // 手动控制时间框的打开关闭
    separator: {
      type: String,
      default: '~'
    },
    // 两个时间之间的分隔符
    className: String,
    // 选择器的类名
    dropdownClassName: String,
    // 时间下拉框的类名
    onlyShowPane: Boolean // 是否只显示pane日期框

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-time-picker',
      dateValue: [],
      dateInputValue: '',
      visible: false,
      nowDate: new Date(),
      form: findComponent(this, 'Form')
    };
  },
  computed: {
    isRange: function isRange() {
      return this.type.includes('range');
    },
    computedSize: function computedSize() {
      if (this.size !== 'default') return this.size;
      if (this.form && this.form.size !== 'default') return this.form.size;
      return this.size;
    },
    readonlyInput: function readonlyInput() {
      return this.readonly || !this.editable;
    }
  },
  components: {
    Drop: drop,
    DatePane: date_pane,
    Input: packages_input
  },
  mounted: function mounted() {
    this.initDateValue();
    this.updateInputValue();
    this.visible = this.open;
  },
  methods: {
    initDateValue: function initDateValue(val) {
      var _this = this;

      var value = val || this.value;

      if (value && Array.isArray(value)) {
        value = value.map(function (item) {
          return _this.formatTimeToDate(item);
        });
      } else if (value) {
        value = [this.formatTimeToDate(value)];
      } else {
        value = [];
      }

      if (this.isRange) {
        this.dateValue = value.length >= 2 ? [value[0], value[1]] : [];
      } else {
        this.dateValue = value.length >= 1 ? [value[0]] : [];
      }
    },
    formatTimeToDate: function formatTimeToDate(time) {
      var result = new Date();
      if (time instanceof Date) result = time;else if (typeof time === 'string') {
        var t = new Date(time);

        if (!isNaN(t.getTime())) {
          result = t;
        } else {
          t = formatToDate(time, this.valueFormat);
          if (t) result = t;
        }
      }
      return result;
    },
    setValue: function setValue(value) {
      if (!Array.isArray(value)) {
        value = new Date(value);
      }

      this.initDateValue(value);
      this.handleDateValueChange();
    },
    handleFocus: function handleFocus() {
      this.dropDownVisible(!this.visible);
    },
    // 转换输入的inputvalue为标准日期格式
    handleEnter: function handleEnter(value) {
      var _this2 = this;

      if (!value) return this.updateInputValue();
      var result = [];
      if (this.isRange && value.includes(this.separator)) value = value.split(this.separator);else value = [value];
      var valid = true;
      value.forEach(function (item) {
        var v = formatToDate(item, _this2.format);
        if (valid) valid = !!v;
        result.push(v);
      });

      if (result.length && valid && JSON.stringify(result) !== JSON.stringify(this.dateValue)) {
        this.initDateValue(result);
        this.handleDateValueChange();
      } else {
        this.updateInputValue();
      }
    },
    handleClickOutside: function handleClickOutside(event) {
      if (this.visible) {
        if (this.renderHtml !== false) {
          var $el = this.$refs.dropDown.$el;

          if ($el === event.target || $el.contains(event.target)) {
            return;
          }
        }

        this.$emit('click-outside', event);
        this.handleEnter(this.dateInputValue);
        this.dropDownVisible(false);
      }
    },
    dropDownVisible: function dropDownVisible(visible) {
      if (this.readonly || this.open || this.disabled) return;
      this.visible = visible;
    },
    handleClear: function handleClear() {
      this.dateValue = [];
      this.handleDateValueChange();
      this.$emit('clear');
    },
    updateInputValue: function updateInputValue() {
      var _this3 = this;

      var dateValue = this.dateValue.map(function (item) {
        return dateFormat(item, _this3.format);
      });

      if (this.isRange) {
        if (dateValue.length === 2) {
          this.dateInputValue = "".concat(dateValue[0], " ").concat(this.separator, " ").concat(dateValue[1]);
        }

        if (dateValue.length === 0) this.dateInputValue = '';
      } else {
        this.dateInputValue = dateValue[0] || '';
      }
    },
    focus: function focus() {
      this.$refs.timeInput && this.$refs.timeInput.focus();
    },
    blur: function blur() {
      this.$refs.timeInput && this.$refs.timeInput.blur();
    },
    handleDateValueChange: function handleDateValueChange(value) {
      var _this4 = this;

      this.updateInputValue();
      value = value || this.dateValue;
      var result = value.map(function (item) {
        return new Date(item);
      });
      if (this.valueFormat) result = result.map(function (item) {
        return dateFormat(item, _this4.valueFormat);
      });

      if (this.isRange) {
        this.$emit('input', result);
        this.$emit('change', result);
      } else {
        this.$emit('input', result[0] || '');
        this.$emit('change', result[0] || '');
      }
    }
  },
  watch: {
    value: function value(newVal, oldVal) {
      if (JSON.stringify(newVal) === JSON.stringify(oldVal)) return;
      this.initDateValue();
      this.updateInputValue();
    },
    open: function open(newVal) {
      this.visible = newVal;
    }
  }
});
// CONCATENATED MODULE: ./packages/date-picker/src/picker/time-picker.vue?vue&type=script&lang=js&
 /* harmony default export */ var picker_time_pickervue_type_script_lang_js_ = (time_pickervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/date-picker/src/picker/time-picker.vue





/* normalize component */

var time_picker_component = normalizeComponent(
  picker_time_pickervue_type_script_lang_js_,
  time_pickervue_type_template_id_4b67e338_render,
  time_pickervue_type_template_id_4b67e338_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var time_picker = (time_picker_component.exports);
// CONCATENATED MODULE: ./packages/time-picker/index.js

/* harmony default export */ var packages_time_picker = (time_picker);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/form/src/form.vue?vue&type=template&id=f0311dea&
var formvue_type_template_id_f0311dea_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationObserver',{ref:"form",class:[
                        ("" + _vm.classPrefix),
                        (_vm.classPrefix + "--" + _vm.layout)
                     ],attrs:{"tag":"div"}},[_vm._t("default")],2)}
var formvue_type_template_id_f0311dea_staticRenderFns = []


// CONCATENATED MODULE: ./packages/form/src/form.vue?vue&type=template&id=f0311dea&

// EXTERNAL MODULE: ./node_modules/_regenerator-runtime@0.13.7@regenerator-runtime/runtime.js
var runtime = __webpack_require__(129);

// CONCATENATED MODULE: ./node_modules/_@babel_runtime@7.11.2@@babel/runtime/helpers/esm/asyncToGenerator.js
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  try {
    var info = gen[key](arg);
    var value = info.value;
  } catch (error) {
    reject(error);
    return;
  }

  if (info.done) {
    resolve(value);
  } else {
    Promise.resolve(value).then(_next, _throw);
  }
}

function _asyncToGenerator(fn) {
  return function () {
    var self = this,
        args = arguments;
    return new Promise(function (resolve, reject) {
      var gen = fn.apply(self, args);

      function _next(value) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
      }

      function _throw(err) {
        asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
      }

      _next(undefined);
    });
  };
}
// CONCATENATED MODULE: ./node_modules/_vee-validate@3.4.0@vee-validate/dist/vee-validate.esm.js
/**
  * vee-validate v3.4.0
  * (c) 2020 Abdelrahman Awad
  * @license MIT
  */


/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */

var __assign = function() {
    __assign = Object.assign || function __assign(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};

function __awaiter(thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
}

function __generator(thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
}

function __spreadArrays() {
    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
    for (var r = Array(s), k = 0, i = 0; i < il; i++)
        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
            r[k] = a[j];
    return r;
}

function vee_validate_esm_isNaN(value) {
    // NaN is the one value that does not equal itself.
    // eslint-disable-next-line
    return value !== value;
}
function isNullOrUndefined(value) {
    return value === null || value === undefined;
}
function isEmptyArray(arr) {
    return Array.isArray(arr) && arr.length === 0;
}
var isObject = function (obj) {
    return obj !== null && obj && typeof obj === 'object' && !Array.isArray(obj);
};
/**
 * A reference comparison function with NaN support
 */
function isRefEqual(lhs, rhs) {
    if (vee_validate_esm_isNaN(lhs) && vee_validate_esm_isNaN(rhs)) {
        return true;
    }
    return lhs === rhs;
}
/**
 * Shallow object comparison.
 */
function isEqual(lhs, rhs) {
    if (lhs instanceof RegExp && rhs instanceof RegExp) {
        return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);
    }
    if (Array.isArray(lhs) && Array.isArray(rhs)) {
        if (lhs.length !== rhs.length)
            return false;
        for (var i = 0; i < lhs.length; i++) {
            if (!isEqual(lhs[i], rhs[i])) {
                return false;
            }
        }
        return true;
    }
    // if both are objects, compare each key recursively.
    if (isObject(lhs) && isObject(rhs)) {
        return (Object.keys(lhs).every(function (key) {
            return isEqual(lhs[key], rhs[key]);
        }) &&
            Object.keys(rhs).every(function (key) {
                return isEqual(lhs[key], rhs[key]);
            }));
    }
    return isRefEqual(lhs, rhs);
}
// Checks if a given value is not an empty string or null or undefined.
function isSpecified(val) {
    if (val === '') {
        return false;
    }
    return !isNullOrUndefined(val);
}
function isCallable(fn) {
    return typeof fn === 'function';
}
function isLocator(value) {
    return isCallable(value) && !!value.__locatorRef;
}

function findIndex(arrayLike, predicate) {
    var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);
    if (isCallable(array.findIndex)) {
        return array.findIndex(predicate);
    }
    /* istanbul ignore next */
    for (var i = 0; i < array.length; i++) {
        if (predicate(array[i], i)) {
            return i;
        }
    }
    /* istanbul ignore next */
    return -1;
}
/**
 * finds the first element that satisfies the predicate callback, polyfills array.find
 */
function find(arrayLike, predicate) {
    var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);
    var idx = findIndex(array, predicate);
    return idx === -1 ? undefined : array[idx];
}
function includes(collection, item) {
    return collection.indexOf(item) !== -1;
}
/**
 * Converts an array-like object to array, provides a simple polyfill for Array.from
 */
function toArray(arrayLike) {
    if (isCallable(Array.from)) {
        return Array.from(arrayLike);
    }
    /* istanbul ignore next */
    return _copyArray(arrayLike);
}
/* istanbul ignore next */
function _copyArray(arrayLike) {
    var array = [];
    var length = arrayLike.length;
    for (var i = 0; i < length; i++) {
        array.push(arrayLike[i]);
    }
    return array;
}
function values(obj) {
    if (isCallable(Object.values)) {
        return Object.values(obj);
    }
    // fallback to keys()
    /* istanbul ignore next */
    return Object.keys(obj).map(function (k) { return obj[k]; });
}
function merge(target, source) {
    Object.keys(source).forEach(function (key) {
        if (isObject(source[key])) {
            if (!target[key]) {
                target[key] = {};
            }
            merge(target[key], source[key]);
            return;
        }
        target[key] = source[key];
    });
    return target;
}

function createFlags() {
    return {
        untouched: true,
        touched: false,
        dirty: false,
        pristine: true,
        valid: false,
        invalid: false,
        validated: false,
        pending: false,
        required: false,
        changed: false,
        passed: false,
        failed: false
    };
}

function identity(x) {
    return x;
}
function debounce(fn, wait, token) {
    if (wait === void 0) { wait = 0; }
    if (token === void 0) { token = { cancelled: false }; }
    if (wait === 0) {
        return fn;
    }
    var timeout;
    return function () {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
        }
        var later = function () {
            timeout = undefined;
            // check if the fn call was cancelled.
            if (!token.cancelled)
                fn.apply(void 0, args);
        };
        // because we might want to use Node.js setTimout for SSR.
        clearTimeout(timeout);
        timeout = setTimeout(later, wait);
    };
}

/**
 * Emits a warning to the console
 */
function warn(message) {
    console.warn("[vee-validate] " + message);
}
/**
 * Replaces placeholder values in a string with their actual values
 */
function interpolate(template, values) {
    return template.replace(/{([^}]+)}/g, function (_, p) {
        return p in values ? values[p] : "{" + p + "}";
    });
}

var RULES = {};
function normalizeSchema(schema) {
    var _a;
    if ((_a = schema.params) === null || _a === void 0 ? void 0 : _a.length) {
        schema.params = schema.params.map(function (param) {
            if (typeof param === 'string') {
                return { name: param };
            }
            return param;
        });
    }
    return schema;
}
var RuleContainer = /** @class */ (function () {
    function RuleContainer() {
    }
    RuleContainer.extend = function (name, schema) {
        // if rule already exists, overwrite it.
        var rule = normalizeSchema(schema);
        if (RULES[name]) {
            RULES[name] = merge(RULES[name], schema);
            return;
        }
        RULES[name] = __assign({ lazy: false, computesRequired: false }, rule);
    };
    RuleContainer.isLazy = function (name) {
        var _a;
        return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.lazy);
    };
    RuleContainer.isRequireRule = function (name) {
        var _a;
        return !!((_a = RULES[name]) === null || _a === void 0 ? void 0 : _a.computesRequired);
    };
    RuleContainer.getRuleDefinition = function (ruleName) {
        return RULES[ruleName];
    };
    return RuleContainer;
}());
/**
 * Adds a custom validator to the list of validation rules.
 */
function extend(name, schema) {
    // makes sure new rules are properly formatted.
    guardExtend(name, schema);
    // Full schema object.
    if (typeof schema === 'object') {
        RuleContainer.extend(name, schema);
        return;
    }
    RuleContainer.extend(name, {
        validate: schema
    });
}
/**
 * Guards from extension violations.
 */
function guardExtend(name, validator) {
    if (isCallable(validator)) {
        return;
    }
    if (isCallable(validator.validate)) {
        return;
    }
    if (RuleContainer.getRuleDefinition(name)) {
        return;
    }
    throw new Error("Extension Error: The validator '" + name + "' must be a function or have a 'validate' method.");
}

var DEFAULT_CONFIG = {
    defaultMessage: "{_field_} is not valid.",
    skipOptional: true,
    classes: {
        touched: 'touched',
        untouched: 'untouched',
        valid: 'valid',
        invalid: 'invalid',
        pristine: 'pristine',
        dirty: 'dirty' // control has been interacted with
    },
    bails: true,
    mode: 'aggressive',
    useConstraintAttrs: true
};
var currentConfig = __assign({}, DEFAULT_CONFIG);
var getConfig = function () { return currentConfig; };
var setConfig = function (newConf) {
    currentConfig = __assign(__assign({}, currentConfig), newConf);
};
var configure = function (cfg) {
    setConfig(cfg);
};

/**
 * Normalizes the given rules expression.
 */
function normalizeRules(rules) {
    // if falsy value return an empty object.
    var acc = {};
    Object.defineProperty(acc, '_$$isNormalized', {
        value: true,
        writable: false,
        enumerable: false,
        configurable: false
    });
    if (!rules) {
        return acc;
    }
    // Object is already normalized, skip.
    if (isObject(rules) && rules._$$isNormalized) {
        return rules;
    }
    if (isObject(rules)) {
        return Object.keys(rules).reduce(function (prev, curr) {
            var params = [];
            if (rules[curr] === true) {
                params = [];
            }
            else if (Array.isArray(rules[curr])) {
                params = rules[curr];
            }
            else if (isObject(rules[curr])) {
                params = rules[curr];
            }
            else {
                params = [rules[curr]];
            }
            if (rules[curr] !== false) {
                prev[curr] = buildParams(curr, params);
            }
            return prev;
        }, acc);
    }
    /* istanbul ignore if */
    if (typeof rules !== 'string') {
        warn('rules must be either a string or an object.');
        return acc;
    }
    return rules.split('|').reduce(function (prev, rule) {
        var parsedRule = parseRule(rule);
        if (!parsedRule.name) {
            return prev;
        }
        prev[parsedRule.name] = buildParams(parsedRule.name, parsedRule.params);
        return prev;
    }, acc);
}
function buildParams(ruleName, provided) {
    var ruleSchema = RuleContainer.getRuleDefinition(ruleName);
    if (!ruleSchema) {
        return provided;
    }
    var params = {};
    if (!ruleSchema.params && !Array.isArray(provided)) {
        throw new Error('You provided an object params to a rule that has no defined schema.');
    }
    // Rule probably uses an array for their args, keep it as is.
    if (Array.isArray(provided) && !ruleSchema.params) {
        return provided;
    }
    var definedParams;
    // collect the params schema.
    if (!ruleSchema.params || (ruleSchema.params.length < provided.length && Array.isArray(provided))) {
        var lastDefinedParam_1;
        // collect any additional parameters in the last item.
        definedParams = provided.map(function (_, idx) {
            var _a;
            var param = (_a = ruleSchema.params) === null || _a === void 0 ? void 0 : _a[idx];
            lastDefinedParam_1 = param || lastDefinedParam_1;
            if (!param) {
                param = lastDefinedParam_1;
            }
            return param;
        });
    }
    else {
        definedParams = ruleSchema.params;
    }
    // Match the provided array length with a temporary schema.
    for (var i = 0; i < definedParams.length; i++) {
        var options = definedParams[i];
        var value = options.default;
        // if the provided is an array, map element value.
        if (Array.isArray(provided)) {
            if (i in provided) {
                value = provided[i];
            }
        }
        else {
            // If the param exists in the provided object.
            if (options.name in provided) {
                value = provided[options.name];
                // if the provided is the first param value.
            }
            else if (definedParams.length === 1) {
                value = provided;
            }
        }
        // if the param is a target, resolve the target value.
        if (options.isTarget) {
            value = createLocator(value, options.cast);
        }
        // A target param using interpolation
        if (typeof value === 'string' && value[0] === '@') {
            value = createLocator(value.slice(1), options.cast);
        }
        // If there is a transformer defined.
        if (!isLocator(value) && options.cast) {
            value = options.cast(value);
        }
        // already been set, probably multiple values.
        if (params[options.name]) {
            params[options.name] = Array.isArray(params[options.name]) ? params[options.name] : [params[options.name]];
            params[options.name].push(value);
        }
        else {
            // set the value.
            params[options.name] = value;
        }
    }
    return params;
}
/**
 * Parses a rule string expression.
 */
var parseRule = function (rule) {
    var params = [];
    var name = rule.split(':')[0];
    if (includes(rule, ':')) {
        params = rule
            .split(':')
            .slice(1)
            .join(':')
            .split(',');
    }
    return { name: name, params: params };
};
function createLocator(value, castFn) {
    var locator = function (crossTable) {
        var val = crossTable[value];
        return castFn ? castFn(val) : val;
    };
    locator.__locatorRef = value;
    return locator;
}
function extractLocators(params) {
    if (Array.isArray(params)) {
        return params.filter(function (param) {
            return isLocator(param) || (typeof param === 'string' && param[0] === '@');
        });
    }
    return Object.keys(params)
        .filter(function (key) { return isLocator(params[key]); })
        .map(function (key) { return params[key]; });
}

/**
 * Validates a value against the rules.
 */
function validate(value, rules, options) {
    if (options === void 0) { options = {}; }
    return __awaiter(this, void 0, void 0, function () {
        var shouldBail, skipIfEmpty, field, result, errors, failedRules, regenerateMap;
        return __generator(this, function (_a) {
            switch (_a.label) {
                case 0:
                    shouldBail = options === null || options === void 0 ? void 0 : options.bails;
                    skipIfEmpty = options === null || options === void 0 ? void 0 : options.skipIfEmpty;
                    field = {
                        name: (options === null || options === void 0 ? void 0 : options.name) || '{field}',
                        rules: normalizeRules(rules),
                        bails: shouldBail !== null && shouldBail !== void 0 ? shouldBail : true,
                        skipIfEmpty: skipIfEmpty !== null && skipIfEmpty !== void 0 ? skipIfEmpty : true,
                        forceRequired: false,
                        crossTable: (options === null || options === void 0 ? void 0 : options.values) || {},
                        names: (options === null || options === void 0 ? void 0 : options.names) || {},
                        customMessages: (options === null || options === void 0 ? void 0 : options.customMessages) || {}
                    };
                    return [4 /*yield*/, _validate(field, value, options)];
                case 1:
                    result = _a.sent();
                    errors = [];
                    failedRules = {};
                    regenerateMap = {};
                    result.errors.forEach(function (e) {
                        var msg = e.msg();
                        errors.push(msg);
                        failedRules[e.rule] = msg;
                        regenerateMap[e.rule] = e.msg;
                    });
                    return [2 /*return*/, {
                            valid: result.valid,
                            errors: errors,
                            failedRules: failedRules,
                            regenerateMap: regenerateMap
                        }];
            }
        });
    });
}
/**
 * Starts the validation process.
 */
function _validate(field, value, _a) {
    var _b = (_a === void 0 ? {} : _a).isInitial, isInitial = _b === void 0 ? false : _b;
    return __awaiter(this, void 0, void 0, function () {
        var _c, shouldSkip, errors, rules, length, i, rule, result;
        return __generator(this, function (_d) {
            switch (_d.label) {
                case 0: return [4 /*yield*/, _shouldSkip(field, value)];
                case 1:
                    _c = _d.sent(), shouldSkip = _c.shouldSkip, errors = _c.errors;
                    if (shouldSkip) {
                        return [2 /*return*/, {
                                valid: !errors.length,
                                errors: errors
                            }];
                    }
                    rules = Object.keys(field.rules).filter(function (rule) { return !RuleContainer.isRequireRule(rule); });
                    length = rules.length;
                    i = 0;
                    _d.label = 2;
                case 2:
                    if (!(i < length)) return [3 /*break*/, 5];
                    if (isInitial && RuleContainer.isLazy(rules[i])) {
                        return [3 /*break*/, 4];
                    }
                    rule = rules[i];
                    return [4 /*yield*/, _test(field, value, {
                            name: rule,
                            params: field.rules[rule]
                        })];
                case 3:
                    result = _d.sent();
                    if (!result.valid && result.error) {
                        errors.push(result.error);
                        if (field.bails) {
                            return [2 /*return*/, {
                                    valid: false,
                                    errors: errors
                                }];
                        }
                    }
                    _d.label = 4;
                case 4:
                    i++;
                    return [3 /*break*/, 2];
                case 5: return [2 /*return*/, {
                        valid: !errors.length,
                        errors: errors
                    }];
            }
        });
    });
}
function _shouldSkip(field, value) {
    return __awaiter(this, void 0, void 0, function () {
        var requireRules, length, errors, isEmpty, isEmptyAndOptional, isRequired, i, rule, result;
        return __generator(this, function (_a) {
            switch (_a.label) {
                case 0:
                    requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);
                    length = requireRules.length;
                    errors = [];
                    isEmpty = isNullOrUndefined(value) || value === '' || isEmptyArray(value);
                    isEmptyAndOptional = isEmpty && field.skipIfEmpty;
                    isRequired = false;
                    i = 0;
                    _a.label = 1;
                case 1:
                    if (!(i < length)) return [3 /*break*/, 4];
                    rule = requireRules[i];
                    return [4 /*yield*/, _test(field, value, {
                            name: rule,
                            params: field.rules[rule]
                        })];
                case 2:
                    result = _a.sent();
                    if (!isObject(result)) {
                        throw new Error('Require rules has to return an object (see docs)');
                    }
                    if (result.required) {
                        isRequired = true;
                    }
                    if (!result.valid && result.error) {
                        errors.push(result.error);
                        // Exit early as the field is required and failed validation.
                        if (field.bails) {
                            return [2 /*return*/, {
                                    shouldSkip: true,
                                    errors: errors
                                }];
                        }
                    }
                    _a.label = 3;
                case 3:
                    i++;
                    return [3 /*break*/, 1];
                case 4:
                    if (isEmpty && !isRequired && !field.skipIfEmpty) {
                        return [2 /*return*/, {
                                shouldSkip: false,
                                errors: errors
                            }];
                    }
                    // field is configured to run through the pipeline regardless
                    if (!field.bails && !isEmptyAndOptional) {
                        return [2 /*return*/, {
                                shouldSkip: false,
                                errors: errors
                            }];
                    }
                    // skip if the field is not required and has an empty value.
                    return [2 /*return*/, {
                            shouldSkip: !isRequired && isEmpty,
                            errors: errors
                        }];
            }
        });
    });
}
/**
 * Tests a single input value against a rule.
 */
function _test(field, value, rule) {
    return __awaiter(this, void 0, void 0, function () {
        var ruleSchema, normalizedValue, params, result, values_1;
        return __generator(this, function (_a) {
            switch (_a.label) {
                case 0:
                    ruleSchema = RuleContainer.getRuleDefinition(rule.name);
                    if (!ruleSchema || !ruleSchema.validate) {
                        throw new Error("No such validator '" + rule.name + "' exists.");
                    }
                    normalizedValue = ruleSchema.castValue ? ruleSchema.castValue(value) : value;
                    params = fillTargetValues(rule.params, field.crossTable);
                    return [4 /*yield*/, ruleSchema.validate(normalizedValue, params)];
                case 1:
                    result = _a.sent();
                    if (typeof result === 'string') {
                        values_1 = __assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: rule.name });
                        return [2 /*return*/, {
                                valid: false,
                                error: { rule: rule.name, msg: function () { return interpolate(result, values_1); } }
                            }];
                    }
                    if (!isObject(result)) {
                        result = { valid: result };
                    }
                    return [2 /*return*/, {
                            valid: result.valid,
                            required: result.required,
                            error: result.valid ? undefined : _generateFieldError(field, value, ruleSchema, rule.name, params)
                        }];
            }
        });
    });
}
/**
 * Generates error messages.
 */
function _generateFieldError(field, value, ruleSchema, ruleName, params) {
    var _a;
    var message = (_a = field.customMessages[ruleName]) !== null && _a !== void 0 ? _a : ruleSchema.message;
    var ruleTargets = _getRuleTargets(field, ruleSchema, ruleName);
    var _b = _getUserTargets(field, ruleSchema, ruleName, message), userTargets = _b.userTargets, userMessage = _b.userMessage;
    var values = __assign(__assign(__assign(__assign({}, (params || {})), { _field_: field.name, _value_: value, _rule_: ruleName }), ruleTargets), userTargets);
    return {
        msg: function () { return _normalizeMessage(userMessage || getConfig().defaultMessage, field.name, values); },
        rule: ruleName
    };
}
function _getRuleTargets(field, ruleSchema, ruleName) {
    var params = ruleSchema.params;
    if (!params) {
        return {};
    }
    var numTargets = params.filter(function (param) { return param.isTarget; }).length;
    if (numTargets <= 0) {
        return {};
    }
    var names = {};
    var ruleConfig = field.rules[ruleName];
    if (!Array.isArray(ruleConfig) && isObject(ruleConfig)) {
        ruleConfig = params.map(function (param) {
            return ruleConfig[param.name];
        });
    }
    for (var index = 0; index < params.length; index++) {
        var param = params[index];
        var key = ruleConfig[index];
        if (!isLocator(key)) {
            continue;
        }
        key = key.__locatorRef;
        var name_1 = field.names[key] || key;
        names[param.name] = name_1;
        names["_" + param.name + "_"] = field.crossTable[key];
    }
    return names;
}
function _getUserTargets(field, ruleSchema, ruleName, userMessage) {
    var userTargets = {};
    var rules = field.rules[ruleName];
    var params = ruleSchema.params || [];
    // early return if no rules
    if (!rules) {
        return {};
    }
    // check all rules to convert targets
    Object.keys(rules).forEach(function (key, index) {
        // get the rule
        var rule = rules[key];
        if (!isLocator(rule)) {
            return {};
        }
        // get associated parameter
        var param = params[index];
        if (!param) {
            return {};
        }
        // grab the name of the target
        var name = rule.__locatorRef;
        userTargets[param.name] = field.names[name] || name;
        userTargets["_" + param.name + "_"] = field.crossTable[name];
    });
    return {
        userTargets: userTargets,
        userMessage: userMessage
    };
}
function _normalizeMessage(template, field, values) {
    if (typeof template === 'function') {
        return template(field, values);
    }
    return interpolate(template, __assign(__assign({}, values), { _field_: field }));
}
function fillTargetValues(params, crossTable) {
    if (Array.isArray(params)) {
        return params.map(function (param) {
            var targetPart = typeof param === 'string' && param[0] === '@' ? param.slice(1) : param;
            if (targetPart in crossTable) {
                return crossTable[targetPart];
            }
            return param;
        });
    }
    var values = {};
    var normalize = function (value) {
        if (isLocator(value)) {
            return value(crossTable);
        }
        return value;
    };
    Object.keys(params).forEach(function (param) {
        values[param] = normalize(params[param]);
    });
    return values;
}

var aggressive = function () { return ({
    on: ['input', 'blur']
}); };
var lazy = function () { return ({
    on: ['change', 'blur']
}); };
var eager = function (_a) {
    var errors = _a.errors;
    if (errors.length) {
        return {
            on: ['input', 'change']
        };
    }
    return {
        on: ['change', 'blur']
    };
};
var passive = function () { return ({
    on: []
}); };
var modes = {
    aggressive: aggressive,
    eager: eager,
    passive: passive,
    lazy: lazy
};
var setInteractionMode = function (mode, implementation) {
    setConfig({ mode: mode });
    if (!implementation) {
        return;
    }
    if (!isCallable(implementation)) {
        throw new Error('A mode implementation must be a function');
    }
    modes[mode] = implementation;
};

var EVENT_BUS = new external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a();
function localeChanged() {
    EVENT_BUS.$emit('change:locale');
}

var Dictionary = /** @class */ (function () {
    function Dictionary(locale, dictionary) {
        this.container = {};
        this.locale = locale;
        this.merge(dictionary);
    }
    Dictionary.prototype.resolve = function (field, rule, values) {
        return this.format(this.locale, field, rule, values);
    };
    Dictionary.prototype.format = function (locale, field, rule, values) {
        var _a, _b, _c, _d, _e, _f, _g, _h;
        var message;
        // find if specific message for that field was specified.
        message = ((_c = (_b = (_a = this.container[locale]) === null || _a === void 0 ? void 0 : _a.fields) === null || _b === void 0 ? void 0 : _b[field]) === null || _c === void 0 ? void 0 : _c[rule]) || ((_e = (_d = this.container[locale]) === null || _d === void 0 ? void 0 : _d.messages) === null || _e === void 0 ? void 0 : _e[rule]);
        if (!message) {
            message = '{_field_} is not valid';
        }
        field = (_h = (_g = (_f = this.container[locale]) === null || _f === void 0 ? void 0 : _f.names) === null || _g === void 0 ? void 0 : _g[field]) !== null && _h !== void 0 ? _h : field;
        return isCallable(message) ? message(field, values) : interpolate(message, __assign(__assign({}, values), { _field_: field }));
    };
    Dictionary.prototype.merge = function (dictionary) {
        merge(this.container, dictionary);
    };
    Dictionary.prototype.hasRule = function (name) {
        var _a, _b;
        return !!((_b = (_a = this.container[this.locale]) === null || _a === void 0 ? void 0 : _a.messages) === null || _b === void 0 ? void 0 : _b[name]);
    };
    return Dictionary;
}());
var DICTIONARY;
function localize(locale, dictionary) {
    var _a;
    if (!DICTIONARY) {
        DICTIONARY = new Dictionary('en', {});
        setConfig({
            defaultMessage: function (field, values) {
                return DICTIONARY.resolve(field, values === null || values === void 0 ? void 0 : values._rule_, values || {});
            }
        });
    }
    if (typeof locale === 'string') {
        DICTIONARY.locale = locale;
        if (dictionary) {
            DICTIONARY.merge((_a = {}, _a[locale] = dictionary, _a));
        }
        localeChanged();
        return;
    }
    DICTIONARY.merge(locale);
}

var isEvent = function (evt) {
    if (!evt) {
        return false;
    }
    if (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) {
        return true;
    }
    // this is for IE
    /* istanbul ignore next */
    if (evt && evt.srcElement) {
        return true;
    }
    return false;
};
function normalizeEventValue(value) {
    var _a, _b;
    if (!isEvent(value)) {
        return value;
    }
    var input = value.target;
    if (input.type === 'file' && input.files) {
        return toArray(input.files);
    }
    // If the input has a `v-model.number` modifier applied.
    if ((_a = input._vModifiers) === null || _a === void 0 ? void 0 : _a.number) {
        // as per the spec the v-model.number uses parseFloat
        var valueAsNumber = parseFloat(input.value);
        if (vee_validate_esm_isNaN(valueAsNumber)) {
            return input.value;
        }
        return valueAsNumber;
    }
    if ((_b = input._vModifiers) === null || _b === void 0 ? void 0 : _b.trim) {
        var trimmedValue = typeof input.value === 'string' ? input.value.trim() : input.value;
        return trimmedValue;
    }
    return input.value;
}

var isTextInput = function (vnode) {
    var _a;
    var attrs = ((_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs) || vnode.elm;
    // it will fallback to being a text input per browsers spec.
    if (vnode.tag === 'input' && (!attrs || !attrs.type)) {
        return true;
    }
    if (vnode.tag === 'textarea') {
        return true;
    }
    return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'number'], attrs === null || attrs === void 0 ? void 0 : attrs.type);
};
// export const isCheckboxOrRadioInput = (vnode: VNode): boolean => {
//   const attrs = (vnode.data && vnode.data.attrs) || vnode.elm;
//   return includes(['radio', 'checkbox'], attrs && attrs.type);
// };
// Gets the model object on the vnode.
function findModel(vnode) {
    if (!vnode.data) {
        return undefined;
    }
    // Component Model
    // THIS IS NOT TYPED IN OFFICIAL VUE TYPINGS
    // eslint-disable-next-line
    var nonStandardVNodeData = vnode.data;
    if ('model' in nonStandardVNodeData) {
        return nonStandardVNodeData.model;
    }
    if (!vnode.data.directives) {
        return undefined;
    }
    return find(vnode.data.directives, function (d) { return d.name === 'model'; });
}
function findValue(vnode) {
    var _a, _b;
    var model = findModel(vnode);
    if (model) {
        return { value: model.value };
    }
    var config = findModelConfig(vnode);
    var prop = (config === null || config === void 0 ? void 0 : config.prop) || 'value';
    if (((_a = vnode.componentOptions) === null || _a === void 0 ? void 0 : _a.propsData) && prop in vnode.componentOptions.propsData) {
        var propsDataWithValue = vnode.componentOptions.propsData;
        return { value: propsDataWithValue[prop] };
    }
    if (((_b = vnode.data) === null || _b === void 0 ? void 0 : _b.domProps) && 'value' in vnode.data.domProps) {
        return { value: vnode.data.domProps.value };
    }
    return undefined;
}
function extractChildren(vnode) {
    if (Array.isArray(vnode)) {
        return vnode;
    }
    if (Array.isArray(vnode.children)) {
        return vnode.children;
    }
    /* istanbul ignore next */
    if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {
        return vnode.componentOptions.children;
    }
    return [];
}
function findInputNodes(vnode) {
    if (!Array.isArray(vnode) && findValue(vnode) !== undefined) {
        return [vnode];
    }
    var children = extractChildren(vnode);
    return children.reduce(function (nodes, node) {
        var candidates = findInputNodes(node);
        if (candidates.length) {
            nodes.push.apply(nodes, candidates);
        }
        return nodes;
    }, []);
}
// Resolves v-model config if exists.
function findModelConfig(vnode) {
    /* istanbul ignore next */
    if (!vnode.componentOptions)
        return null;
    // This is also not typed in the standard Vue TS.
    return vnode.componentOptions.Ctor.options.model;
}
// Adds a listener to vnode listener object.
function mergeVNodeListeners(obj, eventName, handler) {
    // no listener at all.
    if (isNullOrUndefined(obj[eventName])) {
        obj[eventName] = [handler];
        return;
    }
    // Is an invoker.
    if (isCallable(obj[eventName]) && obj[eventName].fns) {
        var invoker = obj[eventName];
        invoker.fns = Array.isArray(invoker.fns) ? invoker.fns : [invoker.fns];
        if (!includes(invoker.fns, handler)) {
            invoker.fns.push(handler);
        }
        return;
    }
    if (isCallable(obj[eventName])) {
        var prev = obj[eventName];
        obj[eventName] = [prev];
    }
    if (Array.isArray(obj[eventName]) && !includes(obj[eventName], handler)) {
        obj[eventName].push(handler);
    }
}
// Adds a listener to a native HTML vnode.
function addNativeNodeListener(node, eventName, handler) {
    /* istanbul ignore next */
    if (!node.data) {
        node.data = {};
    }
    if (isNullOrUndefined(node.data.on)) {
        node.data.on = {};
    }
    mergeVNodeListeners(node.data.on, eventName, handler);
}
// Adds a listener to a Vue component vnode.
function addComponentNodeListener(node, eventName, handler) {
    /* istanbul ignore next */
    if (!node.componentOptions) {
        return;
    }
    /* istanbul ignore next */
    if (!node.componentOptions.listeners) {
        node.componentOptions.listeners = {};
    }
    mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);
}
function addVNodeListener(vnode, eventName, handler) {
    if (vnode.componentOptions) {
        addComponentNodeListener(vnode, eventName, handler);
        return;
    }
    addNativeNodeListener(vnode, eventName, handler);
}
// Determines if `change` should be used over `input` for listeners.
function getInputEventName(vnode, model) {
    var _a;
    // Is a component.
    if (vnode.componentOptions) {
        var event_1 = (findModelConfig(vnode) || { event: 'input' }).event;
        return event_1;
    }
    // Lazy Models typically use change event
    if ((_a = model === null || model === void 0 ? void 0 : model.modifiers) === null || _a === void 0 ? void 0 : _a.lazy) {
        return 'change';
    }
    // is a textual-type input.
    if (isTextInput(vnode)) {
        return 'input';
    }
    return 'change';
}
function isHTMLNode(node) {
    return includes(['input', 'select', 'textarea'], node.tag);
}
// TODO: Type this one properly.
function normalizeSlots(slots, ctx) {
    var acc = [];
    return Object.keys(slots).reduce(function (arr, key) {
        slots[key].forEach(function (vnode) {
            if (!vnode.context) {
                slots[key].context = ctx;
                if (!vnode.data) {
                    vnode.data = {};
                }
                vnode.data.slot = key;
            }
        });
        return arr.concat(slots[key]);
    }, acc);
}
function resolveTextualRules(vnode) {
    var _a;
    var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;
    var rules = {};
    if (!attrs)
        return rules;
    if (attrs.type === 'email' && RuleContainer.getRuleDefinition('email')) {
        rules.email = ['multiple' in attrs];
    }
    if (attrs.pattern && RuleContainer.getRuleDefinition('regex')) {
        rules.regex = attrs.pattern;
    }
    if (attrs.maxlength >= 0 && RuleContainer.getRuleDefinition('max')) {
        rules.max = attrs.maxlength;
    }
    if (attrs.minlength >= 0 && RuleContainer.getRuleDefinition('min')) {
        rules.min = attrs.minlength;
    }
    if (attrs.type === 'number') {
        if (isSpecified(attrs.min) && RuleContainer.getRuleDefinition('min_value')) {
            rules.min_value = Number(attrs.min);
        }
        if (isSpecified(attrs.max) && RuleContainer.getRuleDefinition('max_value')) {
            rules.max_value = Number(attrs.max);
        }
    }
    return rules;
}
function resolveRules(vnode) {
    var _a;
    var htmlTags = ['input', 'select', 'textarea'];
    var attrs = (_a = vnode.data) === null || _a === void 0 ? void 0 : _a.attrs;
    if (!includes(htmlTags, vnode.tag) || !attrs) {
        return {};
    }
    var rules = {};
    if ('required' in attrs && attrs.required !== false && RuleContainer.getRuleDefinition('required')) {
        rules.required = attrs.type === 'checkbox' ? [true] : true;
    }
    if (isTextInput(vnode)) {
        return normalizeRules(__assign(__assign({}, rules), resolveTextualRules(vnode)));
    }
    return normalizeRules(rules);
}
function normalizeChildren(context, slotProps) {
    if (context.$scopedSlots.default) {
        return context.$scopedSlots.default(slotProps) || [];
    }
    return context.$slots.default || [];
}

/**
 * Determines if a provider needs to run validation.
 */
function shouldValidate(ctx, value) {
    // when an immediate/initial validation is needed and wasn't done before.
    if (!ctx._ignoreImmediate && ctx.immediate) {
        return true;
    }
    // when the value changes for whatever reason.
    if (!isRefEqual(ctx.value, value) && ctx.normalizedEvents.length) {
        return true;
    }
    // when it needs validation due to props/cross-fields changes.
    if (ctx._needsValidation) {
        return true;
    }
    // when the initial value is undefined and the field wasn't rendered yet.
    if (!ctx.initialized && value === undefined) {
        return true;
    }
    return false;
}
function createValidationCtx(ctx) {
    return __assign(__assign({}, ctx.flags), { errors: ctx.errors, classes: ctx.classes, failedRules: ctx.failedRules, reset: function () { return ctx.reset(); }, validate: function () {
            var args = [];
            for (var _i = 0; _i < arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            return ctx.validate.apply(ctx, args);
        }, ariaInput: {
            'aria-invalid': ctx.flags.invalid ? 'true' : 'false',
            'aria-required': ctx.isRequired ? 'true' : 'false',
            'aria-errormessage': "vee_" + ctx.id
        }, ariaMsg: {
            id: "vee_" + ctx.id,
            'aria-live': ctx.errors.length ? 'assertive' : 'off'
        } });
}
function onRenderUpdate(vm, value) {
    if (!vm.initialized) {
        vm.initialValue = value;
    }
    var validateNow = shouldValidate(vm, value);
    vm._needsValidation = false;
    vm.value = value;
    vm._ignoreImmediate = true;
    if (!validateNow) {
        return;
    }
    var validate = function () {
        if (vm.immediate || vm.flags.validated) {
            return triggerThreadSafeValidation(vm);
        }
        vm.validateSilent();
    };
    if (vm.initialized) {
        validate();
        return;
    }
    vm.$once('hook:mounted', function () { return validate(); });
}
function computeModeSetting(ctx) {
    var compute = (isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode]);
    return compute(ctx);
}
function triggerThreadSafeValidation(vm) {
    var pendingPromise = vm.validateSilent();
    // avoids race conditions between successive validations.
    vm._pendingValidation = pendingPromise;
    return pendingPromise.then(function (result) {
        if (pendingPromise === vm._pendingValidation) {
            vm.applyResult(result);
            vm._pendingValidation = undefined;
        }
        return result;
    });
}
// Creates the common handlers for a validatable context.
function createCommonHandlers(vm) {
    if (!vm.$veeOnInput) {
        vm.$veeOnInput = function (e) {
            vm.syncValue(e); // track and keep the value updated.
            vm.setFlags({ dirty: true, pristine: false });
        };
    }
    var onInput = vm.$veeOnInput;
    if (!vm.$veeOnBlur) {
        vm.$veeOnBlur = function () {
            vm.setFlags({ touched: true, untouched: false });
        };
    }
    // Blur event listener.
    var onBlur = vm.$veeOnBlur;
    var onValidate = vm.$veeHandler;
    var mode = computeModeSetting(vm);
    // Handle debounce changes.
    if (!onValidate || vm.$veeDebounce !== vm.debounce) {
        onValidate = debounce(function () {
            vm.$nextTick(function () {
                if (!vm._pendingReset) {
                    triggerThreadSafeValidation(vm);
                }
                vm._pendingReset = false;
            });
        }, mode.debounce || vm.debounce);
        // Cache the handler so we don't create it each time.
        vm.$veeHandler = onValidate;
        // cache the debounce value so we detect if it was changed.
        vm.$veeDebounce = vm.debounce;
    }
    return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };
}
// Adds all plugin listeners to the vnode.
function addListeners(vm, node) {
    var value = findValue(node);
    // cache the input eventName.
    vm._inputEventName = vm._inputEventName || getInputEventName(node, findModel(node));
    onRenderUpdate(vm, value === null || value === void 0 ? void 0 : value.value);
    var _a = createCommonHandlers(vm), onInput = _a.onInput, onBlur = _a.onBlur, onValidate = _a.onValidate;
    addVNodeListener(node, vm._inputEventName, onInput);
    addVNodeListener(node, 'blur', onBlur);
    // add the validation listeners.
    vm.normalizedEvents.forEach(function (evt) {
        addVNodeListener(node, evt, onValidate);
    });
    vm.initialized = true;
}

var PROVIDER_COUNTER = 0;
function vee_validate_esm_data() {
    var errors = [];
    var fieldName = '';
    var defaultValues = {
        errors: errors,
        value: undefined,
        initialized: false,
        initialValue: undefined,
        flags: createFlags(),
        failedRules: {},
        isActive: true,
        fieldName: fieldName,
        id: ''
    };
    return defaultValues;
}
var ValidationProvider = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend({
    inject: {
        $_veeObserver: {
            from: '$_veeObserver',
            default: function () {
                if (!this.$vnode.context.$_veeObserver) {
                    this.$vnode.context.$_veeObserver = createObserver();
                }
                return this.$vnode.context.$_veeObserver;
            }
        }
    },
    props: {
        vid: {
            type: String,
            default: ''
        },
        name: {
            type: String,
            default: null
        },
        mode: {
            type: [String, Function],
            default: function () {
                return getConfig().mode;
            }
        },
        rules: {
            type: [Object, String],
            default: null
        },
        immediate: {
            type: Boolean,
            default: false
        },
        bails: {
            type: Boolean,
            default: function () { return getConfig().bails; }
        },
        skipIfEmpty: {
            type: Boolean,
            default: function () { return getConfig().skipOptional; }
        },
        debounce: {
            type: Number,
            default: 0
        },
        tag: {
            type: String,
            default: 'span'
        },
        slim: {
            type: Boolean,
            default: false
        },
        disabled: {
            type: Boolean,
            default: false
        },
        customMessages: {
            type: Object,
            default: function () {
                return {};
            }
        }
    },
    watch: {
        rules: {
            deep: true,
            handler: function (val, oldVal) {
                this._needsValidation = !isEqual(val, oldVal);
            }
        }
    },
    data: vee_validate_esm_data,
    computed: {
        fieldDeps: function () {
            var _this = this;
            return Object.keys(this.normalizedRules).reduce(function (acc, rule) {
                var deps = extractLocators(_this.normalizedRules[rule]).map(function (dep) {
                    return isLocator(dep) ? dep.__locatorRef : dep.slice(1);
                });
                acc.push.apply(acc, deps);
                deps.forEach(function (depName) {
                    watchCrossFieldDep(_this, depName);
                });
                return acc;
            }, []);
        },
        normalizedEvents: function () {
            var _this = this;
            var on = computeModeSetting(this).on;
            return (on || []).map(function (e) {
                if (e === 'input') {
                    return _this._inputEventName;
                }
                return e;
            });
        },
        isRequired: function () {
            var rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);
            var isRequired = Object.keys(rules).some(RuleContainer.isRequireRule);
            this.flags.required = !!isRequired;
            return isRequired;
        },
        classes: function () {
            var names = getConfig().classes;
            return computeClassObj(names, this.flags);
        },
        normalizedRules: function () {
            return normalizeRules(this.rules);
        }
    },
    mounted: function () {
        var _this = this;
        var onLocaleChanged = function () {
            if (!_this.flags.validated) {
                return;
            }
            var regenerateMap = _this._regenerateMap;
            if (regenerateMap) {
                var errors_1 = [];
                var failedRules_1 = {};
                Object.keys(regenerateMap).forEach(function (rule) {
                    var msg = regenerateMap[rule]();
                    errors_1.push(msg);
                    failedRules_1[rule] = msg;
                });
                _this.applyResult({ errors: errors_1, failedRules: failedRules_1, regenerateMap: regenerateMap });
                return;
            }
            _this.validate();
        };
        EVENT_BUS.$on('change:locale', onLocaleChanged);
        this.$on('hook:beforeDestroy', function () {
            EVENT_BUS.$off('change:locale', onLocaleChanged);
        });
    },
    render: function (h) {
        var _this = this;
        this.registerField();
        var ctx = createValidationCtx(this);
        var children = normalizeChildren(this, ctx);
        var inputs = findInputNodes(children);
        if (!inputs.length) {
            // Silent exit if no input was found.
            return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);
        }
        inputs.forEach(function (input, idx) {
            var _a, _b, _c, _d, _e, _f;
            // If the elements are not checkboxes and there are more input nodes
            if (!includes(['checkbox', 'radio'], (_b = (_a = input.data) === null || _a === void 0 ? void 0 : _a.attrs) === null || _b === void 0 ? void 0 : _b.type) && idx > 0) {
                return;
            }
            var resolved = getConfig().useConstraintAttrs ? resolveRules(input) : {};
            if (!isEqual(_this._resolvedRules, resolved)) {
                _this._needsValidation = true;
            }
            if (isHTMLNode(input)) {
                _this.fieldName = ((_d = (_c = input.data) === null || _c === void 0 ? void 0 : _c.attrs) === null || _d === void 0 ? void 0 : _d.name) || ((_f = (_e = input.data) === null || _e === void 0 ? void 0 : _e.attrs) === null || _f === void 0 ? void 0 : _f.id);
            }
            _this._resolvedRules = resolved;
            addListeners(_this, input);
        });
        return this.slim && children.length <= 1 ? children[0] : h(this.tag, children);
    },
    beforeDestroy: function () {
        // cleanup reference.
        this.$_veeObserver.unobserve(this.id);
    },
    activated: function () {
        this.isActive = true;
    },
    deactivated: function () {
        this.isActive = false;
    },
    methods: {
        setFlags: function (flags) {
            var _this = this;
            Object.keys(flags).forEach(function (flag) {
                _this.flags[flag] = flags[flag];
            });
        },
        syncValue: function (v) {
            var value = normalizeEventValue(v);
            this.value = value;
            this.flags.changed = this.initialValue !== value;
        },
        reset: function () {
            var _this = this;
            this.errors = [];
            this.initialValue = this.value;
            var flags = createFlags();
            flags.required = this.isRequired;
            this.setFlags(flags);
            this.failedRules = {};
            this.validateSilent();
            this._pendingValidation = undefined;
            this._pendingReset = true;
            setTimeout(function () {
                _this._pendingReset = false;
            }, this.debounce);
        },
        validate: function () {
            var args = [];
            for (var _i = 0; _i < arguments.length; _i++) {
                args[_i] = arguments[_i];
            }
            return __awaiter(this, void 0, void 0, function () {
                return __generator(this, function (_a) {
                    if (args.length > 0) {
                        this.syncValue(args[0]);
                    }
                    return [2 /*return*/, triggerThreadSafeValidation(this)];
                });
            });
        },
        validateSilent: function () {
            return __awaiter(this, void 0, void 0, function () {
                var rules, result;
                return __generator(this, function (_a) {
                    switch (_a.label) {
                        case 0:
                            this.setFlags({ pending: true });
                            rules = __assign(__assign({}, this._resolvedRules), this.normalizedRules);
                            Object.defineProperty(rules, '_$$isNormalized', {
                                value: true,
                                writable: false,
                                enumerable: false,
                                configurable: false
                            });
                            return [4 /*yield*/, validate(this.value, rules, __assign(__assign({ name: this.name || this.fieldName }, createLookup(this)), { bails: this.bails, skipIfEmpty: this.skipIfEmpty, isInitial: !this.initialized, customMessages: this.customMessages }))];
                        case 1:
                            result = _a.sent();
                            this.setFlags({
                                pending: false,
                                valid: result.valid,
                                invalid: !result.valid
                            });
                            return [2 /*return*/, result];
                    }
                });
            });
        },
        setErrors: function (errors) {
            this.applyResult({ errors: errors, failedRules: {} });
        },
        applyResult: function (_a) {
            var errors = _a.errors, failedRules = _a.failedRules, regenerateMap = _a.regenerateMap;
            this.errors = errors;
            this._regenerateMap = regenerateMap;
            this.failedRules = __assign({}, (failedRules || {}));
            this.setFlags({
                valid: !errors.length,
                passed: !errors.length,
                invalid: !!errors.length,
                failed: !!errors.length,
                validated: true,
                changed: this.value !== this.initialValue
            });
        },
        registerField: function () {
            updateRenderingContextRefs(this);
        }
    }
});
function computeClassObj(names, flags) {
    var acc = {};
    var keys = Object.keys(flags);
    var length = keys.length;
    var _loop_1 = function (i) {
        var flag = keys[i];
        var className = (names && names[flag]) || flag;
        var value = flags[flag];
        if (isNullOrUndefined(value)) {
            return "continue";
        }
        if ((flag === 'valid' || flag === 'invalid') && !flags.validated) {
            return "continue";
        }
        if (typeof className === 'string') {
            acc[className] = value;
        }
        else if (Array.isArray(className)) {
            className.forEach(function (cls) {
                acc[cls] = value;
            });
        }
    };
    for (var i = 0; i < length; i++) {
        _loop_1(i);
    }
    return acc;
}
function createLookup(vm) {
    var providers = vm.$_veeObserver.refs;
    var reduced = {
        names: {},
        values: {}
    };
    return vm.fieldDeps.reduce(function (acc, depName) {
        if (!providers[depName]) {
            return acc;
        }
        acc.values[depName] = providers[depName].value;
        acc.names[depName] = providers[depName].name;
        return acc;
    }, reduced);
}
function extractId(vm) {
    if (vm.vid) {
        return vm.vid;
    }
    if (vm.name) {
        return vm.name;
    }
    if (vm.id) {
        return vm.id;
    }
    if (vm.fieldName) {
        return vm.fieldName;
    }
    PROVIDER_COUNTER++;
    return "_vee_" + PROVIDER_COUNTER;
}
function updateRenderingContextRefs(vm) {
    var providedId = extractId(vm);
    var id = vm.id;
    // Nothing has changed.
    if (!vm.isActive || (id === providedId && vm.$_veeObserver.refs[id])) {
        return;
    }
    // vid was changed.
    if (id !== providedId && vm.$_veeObserver.refs[id] === vm) {
        vm.$_veeObserver.unobserve(id);
    }
    vm.id = providedId;
    vm.$_veeObserver.observe(vm);
}
function createObserver() {
    return {
        refs: {},
        observe: function (vm) {
            this.refs[vm.id] = vm;
        },
        unobserve: function (id) {
            delete this.refs[id];
        }
    };
}
function watchCrossFieldDep(ctx, depName, withHooks) {
    if (withHooks === void 0) { withHooks = true; }
    var providers = ctx.$_veeObserver.refs;
    if (!ctx._veeWatchers) {
        ctx._veeWatchers = {};
    }
    if (!providers[depName] && withHooks) {
        return ctx.$once('hook:mounted', function () {
            watchCrossFieldDep(ctx, depName, false);
        });
    }
    if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {
        ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {
            if (ctx.flags.validated) {
                ctx._needsValidation = true;
                ctx.validate();
            }
        });
    }
}

var FLAGS_STRATEGIES = [
    ['pristine', 'every'],
    ['dirty', 'some'],
    ['touched', 'some'],
    ['untouched', 'every'],
    ['valid', 'every'],
    ['invalid', 'some'],
    ['pending', 'some'],
    ['validated', 'every'],
    ['changed', 'some'],
    ['passed', 'every'],
    ['failed', 'some']
];
var OBSERVER_COUNTER = 0;
function data$1() {
    var refs = {};
    var errors = {};
    var flags = createObserverFlags();
    var fields = {};
    // FIXME: Not sure of this one can be typed, circular type reference.
    var observers = [];
    return {
        id: '',
        refs: refs,
        observers: observers,
        errors: errors,
        flags: flags,
        fields: fields
    };
}
function provideSelf() {
    return {
        $_veeObserver: this
    };
}
var ValidationObserver = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend({
    name: 'ValidationObserver',
    provide: provideSelf,
    inject: {
        $_veeObserver: {
            from: '$_veeObserver',
            default: function () {
                if (!this.$vnode.context.$_veeObserver) {
                    return null;
                }
                return this.$vnode.context.$_veeObserver;
            }
        }
    },
    props: {
        tag: {
            type: String,
            default: 'span'
        },
        vid: {
            type: String,
            default: function () {
                return "obs_" + OBSERVER_COUNTER++;
            }
        },
        slim: {
            type: Boolean,
            default: false
        },
        disabled: {
            type: Boolean,
            default: false
        }
    },
    data: data$1,
    created: function () {
        var _this = this;
        this.id = this.vid;
        register(this);
        var onChange = debounce(function (_a) {
            var errors = _a.errors, flags = _a.flags, fields = _a.fields;
            _this.errors = errors;
            _this.flags = flags;
            _this.fields = fields;
        }, 16);
        this.$watch(computeObserverState, onChange);
    },
    activated: function () {
        register(this);
    },
    deactivated: function () {
        unregister(this);
    },
    beforeDestroy: function () {
        unregister(this);
    },
    render: function (h) {
        var children = normalizeChildren(this, prepareSlotProps(this));
        return this.slim && children.length <= 1 ? children[0] : h(this.tag, { on: this.$listeners }, children);
    },
    methods: {
        observe: function (subscriber, kind) {
            var _a;
            if (kind === void 0) { kind = 'provider'; }
            if (kind === 'observer') {
                this.observers.push(subscriber);
                return;
            }
            this.refs = __assign(__assign({}, this.refs), (_a = {}, _a[subscriber.id] = subscriber, _a));
        },
        unobserve: function (id, kind) {
            if (kind === void 0) { kind = 'provider'; }
            if (kind === 'provider') {
                var provider = this.refs[id];
                if (!provider) {
                    return;
                }
                this.$delete(this.refs, id);
                return;
            }
            var idx = findIndex(this.observers, function (o) { return o.id === id; });
            if (idx !== -1) {
                this.observers.splice(idx, 1);
            }
        },
        validateWithInfo: function (_a) {
            var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;
            return __awaiter(this, void 0, void 0, function () {
                var results, isValid, _c, errors, flags, fields;
                return __generator(this, function (_d) {
                    switch (_d.label) {
                        case 0: return [4 /*yield*/, Promise.all(__spreadArrays(values(this.refs)
                                .filter(function (r) { return !r.disabled; })
                                .map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }), this.observers.filter(function (o) { return !o.disabled; }).map(function (obs) { return obs.validate({ silent: silent }); })))];
                        case 1:
                            results = _d.sent();
                            isValid = results.every(function (r) { return r; });
                            _c = computeObserverState.call(this), errors = _c.errors, flags = _c.flags, fields = _c.fields;
                            this.errors = errors;
                            this.flags = flags;
                            this.fields = fields;
                            return [2 /*return*/, {
                                    errors: errors,
                                    flags: flags,
                                    fields: fields,
                                    isValid: isValid
                                }];
                    }
                });
            });
        },
        validate: function (_a) {
            var _b = (_a === void 0 ? {} : _a).silent, silent = _b === void 0 ? false : _b;
            return __awaiter(this, void 0, void 0, function () {
                var isValid;
                return __generator(this, function (_c) {
                    switch (_c.label) {
                        case 0: return [4 /*yield*/, this.validateWithInfo({ silent: silent })];
                        case 1:
                            isValid = (_c.sent()).isValid;
                            return [2 /*return*/, isValid];
                    }
                });
            });
        },
        handleSubmit: function (cb) {
            return __awaiter(this, void 0, void 0, function () {
                var isValid;
                return __generator(this, function (_a) {
                    switch (_a.label) {
                        case 0: return [4 /*yield*/, this.validate()];
                        case 1:
                            isValid = _a.sent();
                            if (!isValid || !cb) {
                                return [2 /*return*/];
                            }
                            return [2 /*return*/, cb()];
                    }
                });
            });
        },
        reset: function () {
            return __spreadArrays(values(this.refs), this.observers).forEach(function (ref) { return ref.reset(); });
        },
        setErrors: function (errors) {
            var _this = this;
            Object.keys(errors).forEach(function (key) {
                var provider = _this.refs[key];
                if (!provider)
                    return;
                var errorArr = errors[key] || [];
                errorArr = typeof errorArr === 'string' ? [errorArr] : errorArr;
                provider.setErrors(errorArr);
            });
            this.observers.forEach(function (observer) {
                observer.setErrors(errors);
            });
        }
    }
});
function unregister(vm) {
    if (vm.$_veeObserver) {
        vm.$_veeObserver.unobserve(vm.id, 'observer');
    }
}
function register(vm) {
    if (vm.$_veeObserver) {
        vm.$_veeObserver.observe(vm, 'observer');
    }
}
function prepareSlotProps(vm) {
    return __assign(__assign({}, vm.flags), { errors: vm.errors, fields: vm.fields, validate: vm.validate, passes: vm.handleSubmit, handleSubmit: vm.handleSubmit, reset: vm.reset });
}
// Creates a modified version of validation flags
function createObserverFlags() {
    return __assign(__assign({}, createFlags()), { valid: true, invalid: false });
}
function computeObserverState() {
    var vms = __spreadArrays(values(this.refs), this.observers);
    var errors = {};
    var flags = createObserverFlags();
    var fields = {};
    var length = vms.length;
    for (var i = 0; i < length; i++) {
        var vm = vms[i];
        // validation provider
        if (Array.isArray(vm.errors)) {
            errors[vm.id] = vm.errors;
            fields[vm.id] = __assign({ id: vm.id, name: vm.name, failedRules: vm.failedRules }, vm.flags);
            continue;
        }
        // Nested observer, merge errors and fields
        errors = __assign(__assign({}, errors), vm.errors);
        fields = __assign(__assign({}, fields), vm.fields);
    }
    FLAGS_STRATEGIES.forEach(function (_a) {
        var flag = _a[0], method = _a[1];
        flags[flag] = vms[method](function (vm) { return vm.flags[flag]; });
    });
    return { errors: errors, flags: flags, fields: fields };
}

function withValidation(component, mapProps) {
    var _a;
    if (mapProps === void 0) { mapProps = identity; }
    var options = 'options' in component ? component.options : component;
    var providerOpts = ValidationProvider.options;
    var hoc = {
        name: (options.name || 'AnonymousHoc') + "WithValidation",
        props: __assign({}, providerOpts.props),
        data: providerOpts.data,
        computed: __assign({}, providerOpts.computed),
        methods: __assign({}, providerOpts.methods),
        beforeDestroy: providerOpts.beforeDestroy,
        inject: providerOpts.inject
    };
    var eventName = ((_a = options === null || options === void 0 ? void 0 : options.model) === null || _a === void 0 ? void 0 : _a.event) || 'input';
    hoc.render = function (h) {
        var _a;
        this.registerField();
        var vctx = createValidationCtx(this);
        var listeners = __assign({}, this.$listeners);
        var model = findModel(this.$vnode);
        this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);
        var value = findValue(this.$vnode);
        onRenderUpdate(this, value === null || value === void 0 ? void 0 : value.value);
        var _b = createCommonHandlers(this), onInput = _b.onInput, onBlur = _b.onBlur, onValidate = _b.onValidate;
        mergeVNodeListeners(listeners, eventName, onInput);
        mergeVNodeListeners(listeners, 'blur', onBlur);
        this.normalizedEvents.forEach(function (evt) {
            mergeVNodeListeners(listeners, evt, onValidate);
        });
        // Props are any attrs not associated with ValidationProvider Plus the model prop.
        // WARNING: Accidental prop overwrite will probably happen.
        var prop = (findModelConfig(this.$vnode) || { prop: 'value' }).prop;
        var props = __assign(__assign(__assign({}, this.$attrs), (_a = {}, _a[prop] = model === null || model === void 0 ? void 0 : model.value, _a)), mapProps(vctx));
        return h(options, {
            attrs: this.$attrs,
            props: props,
            on: listeners,
            scopedSlots: this.$scopedSlots
        }, normalizeSlots(this.$slots, this.$vnode.context));
    };
    return hoc;
}

var version = '3.4.0';



// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/form/src/form.vue?vue&type=script&lang=js&






//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var formvue_type_script_lang_js_ = ({
  name: 'Form',
  props: {
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    showRequiredIcon: {
      type: Boolean,
      default: true
    },
    // required的item是否需要*
    showLabelColon: {
      type: Boolean,
      default: false
    },
    // 是否显示label后的冒号
    showMessage: {
      type: Boolean,
      default: true
    },
    // 是否显示表单校验的错误信息
    inlineMessage: {
      type: Boolean,
      default: false
    },
    // 是否以行内形式显示表单校验的错误信息(暂时保留)
    labelWidth: {
      type: [Number, String],
      default: 80
    },
    labelAlgin: {
      type: String,
      default: 'right',
      validator: function validator(value) {
        return ['left', 'center', 'right'].includes(value);
      }
    },
    layout: {
      type: String,
      default: 'horizontal',
      validator: function validator(value) {
        return ['horizontal', 'vertical', 'inline'].includes(value);
      }
    },
    rules: {
      type: Object,
      default: function _default() {
        return {};
      }
    }
  },
  provide: function provide() {
    return {
      form: this
    };
  },
  components: {
    ValidationObserver: ValidationObserver
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-form',
      componentName: 'Form'
    };
  },
  methods: {
    validate: function validate() {
      return this.$refs.form.validate();
    },
    // 验证部分表单字段，根据表单item的name属性区分
    validateField: function () {
      var _validateField = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var names,
            childrenItem,
            validResult,
            i,
            _args = arguments;
        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                names = _args.length > 0 && _args[0] !== undefined ? _args[0] : [];
                childrenItem = this.$children[0].$children;
                validResult = {};
                i = 0;

              case 4:
                if (!(i < childrenItem.length)) {
                  _context.next = 12;
                  break;
                }

                if (!names.includes(childrenItem[i].name)) {
                  _context.next = 9;
                  break;
                }

                _context.next = 8;
                return childrenItem[i].validateSilent();

              case 8:
                validResult[childrenItem[i].name] = _context.sent;

              case 9:
                i++;
                _context.next = 4;
                break;

              case 12:
                return _context.abrupt("return", validResult);

              case 13:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function validateField() {
        return _validateField.apply(this, arguments);
      }

      return validateField;
    }(),
    reset: function reset() {
      return this.$refs.form.reset();
    }
  }
});
// CONCATENATED MODULE: ./packages/form/src/form.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_formvue_type_script_lang_js_ = (formvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/form/src/form.vue





/* normalize component */

var form_component = normalizeComponent(
  src_formvue_type_script_lang_js_,
  formvue_type_template_id_f0311dea_render,
  formvue_type_template_id_f0311dea_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_form = (form_component.exports);
// CONCATENATED MODULE: ./packages/form/index.js

/* harmony default export */ var packages_form = (src_form);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/form/src/form-item.vue?vue&type=template&id=3ad3060d&
var form_itemvue_type_template_id_3ad3060d_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ValidationProvider',{ref:"provider",attrs:{"mode":_vm.mode,"name":_vm.name,"slim":"","rules":_vm.currentLocalRules},scopedSlots:_vm._u([{key:"default",fn:function(v){return [_c('div',{class:[
        ("" + _vm.classPrefix),
        (_vm.classPrefix + "--" + (_vm.form.labelAlgin)),
        v.invalid && v.validated && (_vm.classPrefix + "--error")
    ]},[(_vm.isShowLabel)?_c('label',{class:[(_vm.classPrefix + "__label")],style:(_vm.labelStyle)},[_vm._t("label",[(_vm.form.showRequiredIcon && _vm.isRequired)?_c('span',{class:[(_vm.classPrefix + "__label-icon")]},[_vm._v("*")]):_vm._e(),_vm._v(" "),_c('span',{class:[
                        (_vm.classPrefix + "__label-name"),
                        _vm.form.showLabelColon && (_vm.classPrefix + "__label-name-colon")
                    ]},[_vm._v(_vm._s(_vm.label))])])],2):_vm._e(),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__content")],style:(_vm.contentStyle)},[_vm._t("default"),_vm._v(" "),_c('transition',{attrs:{"name":"slideUp"}},[(_vm.form.showMessage && v.invalid && v.validated)?_c('div',{class:[(_vm.classPrefix + "__error-tip")]},[_vm._v(_vm._s(v.errors[0]))]):_vm._e()])],2)])]}}],null,true)})}
var form_itemvue_type_template_id_3ad3060d_staticRenderFns = []


// CONCATENATED MODULE: ./packages/form/src/form-item.vue?vue&type=template&id=3ad3060d&

// CONCATENATED MODULE: ./node_modules/_vee-validate@3.4.0@vee-validate/dist/rules.js
/**
  * vee-validate v3.4.0
  * (c) 2020 Abdelrahman Awad
  * @license MIT
  */
/**
 * Some Alpha Regex helpers.
 * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js
 */
/* eslint-disable no-misleading-character-class */
var alpha = {
    en: /^[A-Z]*$/i,
    cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,
    da: /^[A-ZÆØÅ]*$/i,
    de: /^[A-ZÄÖÜß]*$/i,
    es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,
    fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,
    fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,
    it: /^[A-Z\xC0-\xFF]*$/i,
    lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,
    nl: /^[A-ZÉËÏÓÖÜ]*$/i,
    hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,
    pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,
    pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,
    ro: /^[A-ZĂÂÎŞŢ]*$/i,
    ru: /^[А-ЯЁ]*$/i,
    sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,
    sr: /^[A-ZČĆŽŠĐ]*$/i,
    sv: /^[A-ZÅÄÖ]*$/i,
    tr: /^[A-ZÇĞİıÖŞÜ]*$/i,
    uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,
    ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,
    az: /^[A-ZÇƏĞİıÖŞÜ]*$/i,
    el: /^[Α-ώ]*$/i
};
var alphaSpaces = {
    en: /^[A-Z\s]*$/i,
    cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\s]*$/i,
    da: /^[A-ZÆØÅ\s]*$/i,
    de: /^[A-ZÄÖÜß\s]*$/i,
    es: /^[A-ZÁÉÍÑÓÚÜ\s]*$/i,
    fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,
    fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\s]*$/i,
    it: /^[A-Z\xC0-\xFF\s]*$/i,
    lt: /^[A-ZĄČĘĖĮŠŲŪŽ\s]*$/i,
    nl: /^[A-ZÉËÏÓÖÜ\s]*$/i,
    hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\s]*$/i,
    pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\s]*$/i,
    pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\s]*$/i,
    ro: /^[A-ZĂÂÎŞŢ\s]*$/i,
    ru: /^[А-ЯЁ\s]*$/i,
    sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\s]*$/i,
    sr: /^[A-ZČĆŽŠĐ\s]*$/i,
    sv: /^[A-ZÅÄÖ\s]*$/i,
    tr: /^[A-ZÇĞİıÖŞÜ\s]*$/i,
    uk: /^[А-ЩЬЮЯЄІЇҐ\s]*$/i,
    ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\s]*$/,
    az: /^[A-ZÇƏĞİıÖŞÜ\s]*$/i,
    el: /^[Α-ώ\s]*$/i
};
var alphanumeric = {
    en: /^[0-9A-Z]*$/i,
    cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,
    da: /^[0-9A-ZÆØÅ]$/i,
    de: /^[0-9A-ZÄÖÜß]*$/i,
    es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,
    fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,
    fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,
    it: /^[0-9A-Z\xC0-\xFF]*$/i,
    lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,
    hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,
    nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,
    pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,
    pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,
    ro: /^[0-9A-ZĂÂÎŞŢ]*$/i,
    ru: /^[0-9А-ЯЁ]*$/i,
    sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,
    sr: /^[0-9A-ZČĆŽŠĐ]*$/i,
    sv: /^[0-9A-ZÅÄÖ]*$/i,
    tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,
    uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,
    ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,
    az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i,
    el: /^[0-9Α-ώ]*$/i
};
var alphaDash = {
    en: /^[0-9A-Z_-]*$/i,
    cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,
    da: /^[0-9A-ZÆØÅ_-]*$/i,
    de: /^[0-9A-ZÄÖÜß_-]*$/i,
    es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,
    fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,
    fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,
    it: /^[0-9A-Z\xC0-\xFF_-]*$/i,
    lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,
    nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,
    hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,
    pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,
    pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,
    ro: /^[0-9A-ZĂÂÎŞŢ_-]*$/i,
    ru: /^[0-9А-ЯЁ_-]*$/i,
    sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,
    sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,
    sv: /^[0-9A-ZÅÄÖ_-]*$/i,
    tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,
    uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,
    ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,
    az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i,
    el: /^[0-9Α-ώ_-]*$/i
};

var rules_validate = function (value, _a) {
    var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;
    if (Array.isArray(value)) {
        return value.every(function (val) { return rules_validate(val, { locale: locale }); });
    }
    // Match at least one locale.
    if (!locale) {
        return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });
    }
    return (alpha[locale] || alpha.en).test(value);
};
var rules_params = [
    {
        name: 'locale'
    }
];
var alpha$1 = {
    validate: rules_validate,
    params: rules_params
};

var validate$1 = function (value, _a) {
    var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;
    if (Array.isArray(value)) {
        return value.every(function (val) { return validate$1(val, { locale: locale }); });
    }
    // Match at least one locale.
    if (!locale) {
        return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });
    }
    return (alphaDash[locale] || alphaDash.en).test(value);
};
var params$1 = [
    {
        name: 'locale'
    }
];
var alpha_dash = {
    validate: validate$1,
    params: params$1
};

var validate$2 = function (value, _a) {
    var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;
    if (Array.isArray(value)) {
        return value.every(function (val) { return validate$2(val, { locale: locale }); });
    }
    // Match at least one locale.
    if (!locale) {
        return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });
    }
    return (alphanumeric[locale] || alphanumeric.en).test(value);
};
var params$2 = [
    {
        name: 'locale'
    }
];
var alpha_num = {
    validate: validate$2,
    params: params$2
};

var validate$3 = function (value, _a) {
    var _b = (_a === void 0 ? {} : _a).locale, locale = _b === void 0 ? '' : _b;
    if (Array.isArray(value)) {
        return value.every(function (val) { return validate$3(val, { locale: locale }); });
    }
    // Match at least one locale.
    if (!locale) {
        return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });
    }
    return (alphaSpaces[locale] || alphaSpaces.en).test(value);
};
var params$3 = [
    {
        name: 'locale'
    }
];
var alpha_spaces = {
    validate: validate$3,
    params: params$3
};

var validate$4 = function (value, _a) {
    var _b = _a === void 0 ? {} : _a, min = _b.min, max = _b.max;
    if (Array.isArray(value)) {
        return value.every(function (val) { return !!validate$4(val, { min: min, max: max }); });
    }
    return Number(min) <= value && Number(max) >= value;
};
var params$4 = [
    {
        name: 'min'
    },
    {
        name: 'max'
    }
];
var between = {
    validate: validate$4,
    params: params$4
};

var validate$5 = function (value, _a) {
    var target = _a.target;
    return String(value) === String(target);
};
var params$5 = [
    {
        name: 'target',
        isTarget: true
    }
];
var confirmed = {
    validate: validate$5,
    params: params$5
};

var validate$6 = function (value, _a) {
    var length = _a.length;
    if (Array.isArray(value)) {
        return value.every(function (val) { return validate$6(val, { length: length }); });
    }
    var strVal = String(value);
    return /^[0-9]*$/.test(strVal) && strVal.length === length;
};
var params$6 = [
    {
        name: 'length',
        cast: function (value) {
            return Number(value);
        }
    }
];
var digits = {
    validate: validate$6,
    params: params$6
};

var validateImage = function (file, width, height) {
    var URL = window.URL || window.webkitURL;
    return new Promise(function (resolve) {
        var image = new Image();
        image.onerror = function () { return resolve(false); };
        image.onload = function () { return resolve(image.width === width && image.height === height); };
        image.src = URL.createObjectURL(file);
    });
};
var validate$7 = function (files, _a) {
    var width = _a.width, height = _a.height;
    var list = [];
    files = Array.isArray(files) ? files : [files];
    for (var i = 0; i < files.length; i++) {
        // if file is not an image, reject.
        if (!/\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(files[i].name)) {
            return Promise.resolve(false);
        }
        list.push(files[i]);
    }
    return Promise.all(list.map(function (file) { return validateImage(file, width, height); })).then(function (values) {
        return values.every(function (v) { return v; });
    });
};
var params$7 = [
    {
        name: 'width',
        cast: function (value) {
            return Number(value);
        }
    },
    {
        name: 'height',
        cast: function (value) {
            return Number(value);
        }
    }
];
var dimensions = {
    validate: validate$7,
    params: params$7
};

var validate$8 = function (value, _a) {
    var multiple = (_a === void 0 ? {} : _a).multiple;
    // eslint-disable-next-line
    var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    if (multiple && !Array.isArray(value)) {
        value = String(value)
            .split(',')
            .map(function (emailStr) { return emailStr.trim(); });
    }
    if (Array.isArray(value)) {
        return value.every(function (val) { return re.test(String(val)); });
    }
    return re.test(String(value));
};
var params$8 = [
    {
        name: 'multiple',
        default: false
    }
];
var email = {
    validate: validate$8,
    params: params$8
};

function rules_isNullOrUndefined(value) {
    return value === null || value === undefined;
}
function rules_isEmptyArray(arr) {
    return Array.isArray(arr) && arr.length === 0;
}
function rules_isCallable(fn) {
    return typeof fn === 'function';
}

function rules_includes(collection, item) {
    return collection.indexOf(item) !== -1;
}
/**
 * Converts an array-like object to array, provides a simple polyfill for Array.from
 */
function rules_toArray(arrayLike) {
    if (rules_isCallable(Array.from)) {
        return Array.from(arrayLike);
    }
    /* istanbul ignore next */
    return rules_copyArray(arrayLike);
}
/* istanbul ignore next */
function rules_copyArray(arrayLike) {
    var array = [];
    var length = arrayLike.length;
    for (var i = 0; i < length; i++) {
        array.push(arrayLike[i]);
    }
    return array;
}

var validate$9 = function (value, options) {
    if (Array.isArray(value)) {
        return value.every(function (val) { return validate$9(val, options); });
    }
    return rules_toArray(options).some(function (item) {
        // eslint-disable-next-line
        return item == value;
    });
};
var oneOf = {
    validate: validate$9
};

var validate$a = function (value, args) {
    return !validate$9(value, args);
};
var excluded = {
    validate: validate$a
};

var validate$b = function (files, extensions) {
    var regex = new RegExp(".(" + extensions.join('|') + ")$", 'i');
    if (Array.isArray(files)) {
        return files.every(function (file) { return regex.test(file.name); });
    }
    return regex.test(files.name);
};
var ext = {
    validate: validate$b
};

var validate$c = function (files) {
    var regex = /\.(jpg|svg|jpeg|png|bmp|gif|webp)$/i;
    if (Array.isArray(files)) {
        return files.every(function (file) { return regex.test(file.name); });
    }
    return regex.test(files.name);
};
var rules_image = {
    validate: validate$c
};

var validate$d = function (value) {
    if (Array.isArray(value)) {
        return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });
    }
    return /^-?[0-9]+$/.test(String(value));
};
var integer = {
    validate: validate$d
};

var validate$e = function (value, _a) {
    var other = _a.other;
    return value === other;
};
var params$9 = [
    {
        name: 'other'
    }
];
var is = {
    validate: validate$e,
    params: params$9
};

var validate$f = function (value, _a) {
    var other = _a.other;
    return value !== other;
};
var params$a = [
    {
        name: 'other'
    }
];
var is_not = {
    validate: validate$f,
    params: params$a
};

var validate$g = function (value, _a) {
    var length = _a.length;
    if (rules_isNullOrUndefined(value)) {
        return false;
    }
    if (typeof value === 'string') {
        value = rules_toArray(value);
    }
    if (typeof value === 'number') {
        value = String(value);
    }
    if (!value.length) {
        value = rules_toArray(value);
    }
    return value.length === length;
};
var params$b = [
    {
        name: 'length',
        cast: function (value) { return Number(value); }
    }
];
var rules_length = {
    validate: validate$g,
    params: params$b
};

var validate$h = function (value, _a) {
    var length = _a.length;
    if (rules_isNullOrUndefined(value)) {
        return length >= 0;
    }
    if (Array.isArray(value)) {
        return value.every(function (val) { return validate$h(val, { length: length }); });
    }
    return String(value).length <= length;
};
var params$c = [
    {
        name: 'length',
        cast: function (value) {
            return Number(value);
        }
    }
];
var rules_max = {
    validate: validate$h,
    params: params$c
};

var validate$i = function (value, _a) {
    var max = _a.max;
    if (rules_isNullOrUndefined(value) || value === '') {
        return false;
    }
    if (Array.isArray(value)) {
        return value.length > 0 && value.every(function (val) { return validate$i(val, { max: max }); });
    }
    return Number(value) <= max;
};
var params$d = [
    {
        name: 'max',
        cast: function (value) {
            return Number(value);
        }
    }
];
var max_value = {
    validate: validate$i,
    params: params$d
};

var validate$j = function (files, mimes) {
    var regex = new RegExp(mimes.join('|').replace('*', '.+') + "$", 'i');
    if (Array.isArray(files)) {
        return files.every(function (file) { return regex.test(file.type); });
    }
    return regex.test(files.type);
};
var mimes = {
    validate: validate$j
};

var validate$k = function (value, _a) {
    var length = _a.length;
    if (rules_isNullOrUndefined(value)) {
        return false;
    }
    if (Array.isArray(value)) {
        return value.every(function (val) { return validate$k(val, { length: length }); });
    }
    return String(value).length >= length;
};
var params$e = [
    {
        name: 'length',
        cast: function (value) {
            return Number(value);
        }
    }
];
var rules_min = {
    validate: validate$k,
    params: params$e
};

var validate$l = function (value, _a) {
    var min = _a.min;
    if (rules_isNullOrUndefined(value) || value === '') {
        return false;
    }
    if (Array.isArray(value)) {
        return value.length > 0 && value.every(function (val) { return validate$l(val, { min: min }); });
    }
    return Number(value) >= min;
};
var params$f = [
    {
        name: 'min',
        cast: function (value) {
            return Number(value);
        }
    }
];
var min_value = {
    validate: validate$l,
    params: params$f
};

var ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;
var en = /^[0-9]+$/;
var validate$m = function (value) {
    var testValue = function (val) {
        var strValue = String(val);
        return en.test(strValue) || ar.test(strValue);
    };
    if (Array.isArray(value)) {
        return value.every(testValue);
    }
    return testValue(value);
};
var numeric = {
    validate: validate$m
};

var validate$n = function (value, _a) {
    var regex = _a.regex;
    if (Array.isArray(value)) {
        return value.every(function (val) { return validate$n(val, { regex: regex }); });
    }
    return regex.test(String(value));
};
var params$g = [
    {
        name: 'regex',
        cast: function (value) {
            if (typeof value === 'string') {
                return new RegExp(value);
            }
            return value;
        }
    }
];
var regex = {
    validate: validate$n,
    params: params$g
};

var validate$o = function (value, _a) {
    var allowFalse = (_a === void 0 ? { allowFalse: true } : _a).allowFalse;
    var result = {
        valid: false,
        required: true
    };
    if (rules_isNullOrUndefined(value) || rules_isEmptyArray(value)) {
        return result;
    }
    // incase a field considers `false` as an empty value like checkboxes.
    if (value === false && !allowFalse) {
        return result;
    }
    result.valid = !!String(value).trim().length;
    return result;
};
var computesRequired = true;
var params$h = [
    {
        name: 'allowFalse',
        default: true
    }
];
var required = {
    validate: validate$o,
    params: params$h,
    computesRequired: computesRequired
};

var testEmpty = function (value) {
    return rules_isEmptyArray(value) || rules_includes([false, null, undefined], value) || !String(value).trim().length;
};
var validate$p = function (value, _a) {
    var target = _a.target, values = _a.values;
    var required;
    if (values && values.length) {
        if (!Array.isArray(values) && typeof values === 'string') {
            values = [values];
        }
        // eslint-disable-next-line
        required = values.some(function (val) { return val == String(target).trim(); });
    }
    else {
        required = !testEmpty(target);
    }
    if (!required) {
        return {
            valid: true,
            required: required
        };
    }
    return {
        valid: !testEmpty(value),
        required: required
    };
};
var params$i = [
    {
        name: 'target',
        isTarget: true
    },
    {
        name: 'values'
    }
];
var computesRequired$1 = true;
var required_if = {
    validate: validate$p,
    params: params$i,
    computesRequired: computesRequired$1
};

var validate$q = function (files, _a) {
    var size = _a.size;
    if (isNaN(size)) {
        return false;
    }
    var nSize = size * 1024;
    if (!Array.isArray(files)) {
        return files.size <= nSize;
    }
    for (var i = 0; i < files.length; i++) {
        if (files[i].size > nSize) {
            return false;
        }
    }
    return true;
};
var params$j = [
    {
        name: 'size',
        cast: function (value) {
            return Number(value);
        }
    }
];
var rules_size = {
    validate: validate$q,
    params: params$j
};



// EXTERNAL MODULE: ./node_modules/_vee-validate@3.4.0@vee-validate/dist/locale/en.json
var locale_en = __webpack_require__(130);

// CONCATENATED MODULE: ./packages/form/src/validate.js






function validate_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function validate_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { validate_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { validate_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }





var validate_validator = function validator(validatorName, validatorFn) {
  if (validatorName && validatorFn && typeof validatorFn === 'function') {
    extend(validatorName, {
      validate: function validate(value) {
        return validatorFn(value);
      },
      message: function message(fieldName, placeholders) {
        return validatorFn(placeholders._value_);
      }
    });
  }
};

var validateMessages = {
  required: locale_en["messages"]['required'],
  email: locale_en["messages"]['email'],
  // eslint-disable-next-line no-template-curly-in-string
  between: 'The {_field_} must be between {min} and ${max} {type}',
  min: 'The {_field_} must be min {min} {type}',
  max: 'The {_field_} must be max {max} {type}'
};
extend('required', validate_objectSpread(validate_objectSpread({}, required), {}, {
  params: ['message'],
  message: function message(fieldName, placeholders) {
    // return `The ${fieldName} field must be`
    return placeholders.message || validateMessages.required.replace('{_field_}', fieldName);
  }
}));
extend('email', validate_objectSpread(validate_objectSpread({}, email), {}, {
  params: ['message'],
  message: function message(fieldName, placeholders) {
    return placeholders.message || validateMessages.email.replace('{_field_}', fieldName);
  }
}));
extend('string', {
  validate: function validate(value, args) {
    var isMin = !isNaN(args.min);
    var isMax = !isNaN(args.max);

    if (isMin && isMax) {
      return value.length >= args.min && value.length <= args.max;
    } else if (isMin) {
      return value.length >= args.min;
    } else if (isMax) {
      return value.length <= args.max;
    } else {
      return true;
    }
  },
  params: ['min', 'max', 'message'],
  message: function message(fieldName, placeholders) {
    var isMin = !isNaN(placeholders.min);
    var isMax = !isNaN(placeholders.max);
    var message = placeholders.message;
    var type = '';

    if (!placeholders.message) {
      if (isMin && isMax) {
        type = 'between';
      } else if (isMin) {
        type = 'min';
      } else if (isMax) {
        type = 'max';
      }

      message = validateMessages[type].replace('{_field_}', fieldName).replace('{min}', placeholders.min).replace('{max}', placeholders.max).replace('{type}', 'characters');
    }

    return message;
  }
});
extend('number', {
  validate: function validate(value, args) {
    var isMin = !isNaN(args.min);
    var isMax = !isNaN(args.max);

    if (isMin && isMax) {
      return value >= args.min && value <= args.max;
    } else if (isMin) {
      return value >= args.min;
    } else if (isMax) {
      return value <= args.max;
    } else {
      return true;
    }
  },
  params: ['min', 'max', 'message'],
  message: function message(fieldName, placeholders) {
    var isMin = !isNaN(placeholders.min);
    var isMax = !isNaN(placeholders.max);
    var message = placeholders.message;
    var type = '';

    if (!placeholders.message) {
      if (isMin && isMax) {
        type = 'between';
      } else if (isMin) {
        type = 'min';
      } else if (isMax) {
        type = 'max';
      }

      message = validateMessages[type].replace('{_field_}', fieldName).replace('{min}', placeholders.min).replace('{max}', placeholders.max).replace('{type}', 'characters');
    }

    return message;
  }
});
extend('array', {
  validate: function validate(value, args) {
    var isMin = !isNaN(args.min);
    var isMax = !isNaN(args.max);

    if (isMin && isMax) {
      return value.length >= args.min && value.length <= args.max;
    } else if (isMin) {
      return value.length >= args.min;
    } else if (isMax) {
      return value.length <= args.max;
    } else {
      return true;
    }
  },
  params: ['min', 'max', 'message'],
  message: function message(fieldName, placeholders) {
    var isMin = !isNaN(placeholders.min);
    var isMax = !isNaN(placeholders.max);
    var message = placeholders.message;
    var type = '';

    if (!placeholders.message) {
      if (isMin && isMax) {
        type = 'between';
      } else if (isMin) {
        type = 'min';
      } else if (isMax) {
        type = 'max';
      }

      message = validateMessages[type].replace('{_field_}', fieldName).replace('{min}', placeholders.min).replace('{max}', placeholders.max).replace('{type}', 'characters');
    }

    return message;
  }
});

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/form/src/form-item.vue?vue&type=script&lang=js&









function form_itemvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function form_itemvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { form_itemvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { form_itemvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//




/* harmony default export */ var form_itemvue_type_script_lang_js_ = ({
  name: 'FormItem',
  props: {
    validatorValue: {},
    // 如果此字段值存在则根绝此值验证，在没有v-model时使用
    name: String,
    labelWidth: {
      type: [Number, String]
    },
    labelFor: {
      type: String,
      default: ''
    },
    // 配合组件的name属性(保留属性)
    label: String,
    rules: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    required: Boolean // 是否为必填项

  },
  inject: ['form'],
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-form-item',
      componentName: 'FormItem',
      localRules: {},
      // 当前所有的规则
      currentLocalRules: {},
      // 当前使用的规则
      trigger: 'blur',
      // 当前触发方式
      isRequired: false // 是否是required

    };
  },
  components: {
    ValidationProvider: ValidationProvider
  },
  computed: {
    labelStyle: function labelStyle() {
      var labelWidth = parseInt(this.labelWidth) === 0 || this.labelWidth ? this.labelWidth : this.form.labelWidth;
      return {
        width: parseInt(labelWidth) + 'px'
      };
    },
    contentStyle: function contentStyle() {
      if (this.form.layout === 'vertical') {
        return {};
      }

      var labelWidth = parseInt(this.labelWidth) === 0 || this.labelWidth ? this.labelWidth : this.form.labelWidth;
      return {
        marginLeft: parseInt(labelWidth) + 'px'
      };
    },
    mode: function mode() {
      var trigger = this.trigger === 'blur' ? ['blur', 'change'] : [this.trigger];
      return function () {
        return {
          on: trigger
        };
      };
    },
    isShowLabel: function isShowLabel() {
      var labelWidth = parseInt(this.labelWidth) === 0 || this.labelWidth ? this.labelWidth : this.form.labelWidth;
      return parseInt(labelWidth) > 0;
    }
  },
  mounted: function mounted() {
    this.initLocalRules();
    this.triggerValidate(this.trigger);
  },
  methods: {
    initLocalRules: function initLocalRules() {
      var _this = this;

      var localRulesObj = {};
      var rules = [];
      this.isRequired = false;

      if (this.name && this.form.rules[this.name]) {
        rules = this.form.rules[this.name];
      }

      if (this.rules && this.rules.length) {
        rules = this.rules;
      }

      if (this.required) {
        this.isRequired = true;
        rules.push({
          required: true
        });
      }

      rules.forEach(function (item) {
        var trigger = item.trigger || _this.trigger;

        if (!localRulesObj[trigger]) {
          localRulesObj[trigger] = {};
        }

        if (item.required || _this.required) {
          _this.isRequired = true;
          localRulesObj[trigger]['required'] = {
            message: item.message
          };
        } else if (item.type) {
          localRulesObj[trigger][item.type] = {
            min: item.min,
            max: item.max,
            message: item.message
          };
        } else if (item.validator && typeof item.validator === 'function') {
          var validatorName = _this.name + createRandom(6);
          validate_validator(validatorName, item.validator);
          localRulesObj[trigger][validatorName] = true;
        }
      });
      this.localRules = localRulesObj;
    },
    filterRules: function filterRules(trigger) {
      var _this2 = this;

      if (trigger === 'blur') {
        var currentLocalRules = {};
        Object.keys(this.localRules).forEach(function (key) {
          currentLocalRules = form_itemvue_type_script_lang_js_objectSpread(form_itemvue_type_script_lang_js_objectSpread({}, currentLocalRules), _this2.localRules[key]);
        });
        this.currentLocalRules = currentLocalRules;
      } else {
        this.currentLocalRules = this.localRules[trigger] || {};
      }

      this.trigger = trigger;
    },
    // 表单组件中会调用此方法 针对不同的trigger做出过滤
    triggerValidate: function triggerValidate(trigger) {
      if (!trigger) return;
      this.filterRules(trigger);
    },
    providerValidate: function providerValidate() {
      this.$refs.provider.validate(this.validatorValue);
    },
    validateSilent: function () {
      var _validateSilent = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
        var result;
        return regeneratorRuntime.wrap(function _callee$(_context) {
          while (1) {
            switch (_context.prev = _context.next) {
              case 0:
                _context.next = 2;
                return this.$refs.provider.validateSilent();

              case 2:
                result = _context.sent;
                this.$refs.provider.applyResult(result);
                return _context.abrupt("return", result);

              case 5:
              case "end":
                return _context.stop();
            }
          }
        }, _callee, this);
      }));

      function validateSilent() {
        return _validateSilent.apply(this, arguments);
      }

      return validateSilent;
    }()
  },
  watch: {
    validatorValue: function validatorValue() {
      this.providerValidate();
    }
  }
});
// CONCATENATED MODULE: ./packages/form/src/form-item.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_form_itemvue_type_script_lang_js_ = (form_itemvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/form/src/form-item.vue





/* normalize component */

var form_item_component = normalizeComponent(
  src_form_itemvue_type_script_lang_js_,
  form_itemvue_type_template_id_3ad3060d_render,
  form_itemvue_type_template_id_3ad3060d_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var form_item = (form_item_component.exports);
// CONCATENATED MODULE: ./packages/form-item/index.js

/* harmony default export */ var packages_form_item = (form_item);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/drop-down/src/dropdown.vue?vue&type=template&id=728588d9&
var dropdownvue_type_template_id_728588d9_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"click-outside",rawName:"v-click-outside.capture",value:(_vm.handleClickOutside),expression:"handleClickOutside",modifiers:{"capture":true}}],class:[("" + _vm.classPrefix)],on:{"mouseenter":_vm.handleMouseEnter,"mouseleave":_vm.handleMouseLeave}},[_c('div',{ref:"reference",class:[(_vm.classPrefix + "__reference")],on:{"click":_vm.handleClick,"contextmenu":function($event){$event.preventDefault();return _vm.handleRightClick($event)}}},[_vm._t("default")],2),_vm._v(" "),_c('transition',{attrs:{"name":_vm.transition}},[_c('Drop',{directives:[{name:"show",rawName:"v-show",value:(_vm.currentVisible),expression:"currentVisible"}],ref:"dropDown",attrs:{"reference":this.$refs.reference,"placement":_vm.placement,"render-html":_vm.renderHtml,"dropdownMatchSelectWidth":_vm.dropdownMatchSelectWidth},nativeOn:{"mouseenter":function($event){return _vm.handleMouseEnter($event)},"mouseleave":function($event){return _vm.handleMouseLeave($event)}},model:{value:(_vm.currentVisible),callback:function ($$v) {_vm.currentVisible=$$v},expression:"currentVisible"}},[_vm._t("menu")],2)],1)],1)}
var dropdownvue_type_template_id_728588d9_staticRenderFns = []


// CONCATENATED MODULE: ./packages/drop-down/src/dropdown.vue?vue&type=template&id=728588d9&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/drop-down/src/dropdown.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//



/* harmony default export */ var dropdownvue_type_script_lang_js_ = ({
  name: 'Dropdown',
  directives: {
    clickOutside: v_click_outside_x_esm_directive
  },
  props: {
    transition: {
      type: String,
      default: 'slideUp'
    },
    placement: {
      type: String,
      default: 'bottom'
    },
    dropdownMatchSelectWidth: {
      type: Boolean,
      default: false
    },
    trigger: {
      type: String,
      default: 'hover',
      validator: function validator(value) {
        return ['hover', 'click', 'contextmenu', 'custom'].includes(value);
      }
    },
    visible: {
      type: Boolean,
      default: false
    },
    hideOnClick: {
      type: Boolean,
      default: true
    },
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: true
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-dropdown',
      componentName: 'Dropdown',
      currentVisible: this.visible,
      timer: null
    };
  },
  components: {
    Drop: drop
  },
  methods: {
    handleMouseEnter: function handleMouseEnter() {
      var _this = this;

      if (this.trigger === 'hover') {
        clearTimeout(this.timer);
        this.timer = setTimeout(function () {
          _this.changeDropDown(true);
        }, 200);
      }
    },
    handleMouseLeave: function handleMouseLeave() {
      var _this2 = this;

      if (this.trigger === 'hover') {
        clearTimeout(this.timer);
        this.timer = setTimeout(function () {
          _this2.changeDropDown();
        }, 100);
      }
    },
    handleClick: function handleClick() {
      if (this.trigger === 'click') {
        this.changeDropDown(!this.currentVisible);
      }
    },
    handleRightClick: function handleRightClick() {
      if (this.trigger === 'contextmenu') {
        this.changeDropDown(!this.currentVisible);
      }
    },
    handleClickOutside: function handleClickOutside(event) {
      if (this.currentVisible) {
        if (this.trigger === 'click' || this.trigger === 'contextmenu') {
          var $el = this.$refs.dropDown.$el;

          if ($el !== event.target && !$el.contains(event.target)) {
            this.changeDropDown();
            return;
          }

          if (this.hideOnClick) this.changeDropDown();
        }

        this.$emit('click-outside', event);
      }
    },
    changeDropDown: function changeDropDown(visible) {
      this.currentVisible = visible || false;
      this.$emit('update:visible', this.currentVisible);
    },
    itemClick: function itemClick(name) {
      if (this.hideOnClick) this.changeDropDown();
      this.$emit('click-item', name);
    }
  },
  watch: {
    visible: function visible(newVal) {
      this.currentVisible = newVal;
      this.$emit('visible-change', newVal);
    }
  }
});
// CONCATENATED MODULE: ./packages/drop-down/src/dropdown.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_dropdownvue_type_script_lang_js_ = (dropdownvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/drop-down/src/dropdown.vue





/* normalize component */

var dropdown_component = normalizeComponent(
  src_dropdownvue_type_script_lang_js_,
  dropdownvue_type_template_id_728588d9_render,
  dropdownvue_type_template_id_728588d9_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var dropdown = (dropdown_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/drop-down/src/dropdown-menu.vue?vue&type=template&id=e140dfd4&
var dropdown_menuvue_type_template_id_e140dfd4_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[_vm._t("default")],2)}
var dropdown_menuvue_type_template_id_e140dfd4_staticRenderFns = []


// CONCATENATED MODULE: ./packages/drop-down/src/dropdown-menu.vue?vue&type=template&id=e140dfd4&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/drop-down/src/dropdown-menu.vue?vue&type=script&lang=js&
//
//
//
//
//
//

/* harmony default export */ var dropdown_menuvue_type_script_lang_js_ = ({
  name: 'DropdownMenu',
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-dropdown-menu'
    };
  }
});
// CONCATENATED MODULE: ./packages/drop-down/src/dropdown-menu.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_dropdown_menuvue_type_script_lang_js_ = (dropdown_menuvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/drop-down/src/dropdown-menu.vue





/* normalize component */

var dropdown_menu_component = normalizeComponent(
  src_dropdown_menuvue_type_script_lang_js_,
  dropdown_menuvue_type_template_id_e140dfd4_render,
  dropdown_menuvue_type_template_id_e140dfd4_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var dropdown_menu = (dropdown_menu_component.exports);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/drop-down/src/dropdown-item.vue?vue&type=template&id=4d3422da&
var dropdown_itemvue_type_template_id_4d3422da_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
        ("" + _vm.classPrefix),
        _vm.disabled && 'is-disabled',
        _vm.divided && (_vm.classPrefix + "--divided") ],on:{"click":_vm.handleClick}},[_vm._t("default")],2)}
var dropdown_itemvue_type_template_id_4d3422da_staticRenderFns = []


// CONCATENATED MODULE: ./packages/drop-down/src/dropdown-item.vue?vue&type=template&id=4d3422da&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/drop-down/src/dropdown-item.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var dropdown_itemvue_type_script_lang_js_ = ({
  name: 'DropdownItem',
  props: {
    name: String,
    disabled: Boolean,
    divided: Boolean // 显示分割线

  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-dropdown-item',
      dropDown: findComponents(this, 'Dropdown')
    };
  },
  methods: {
    handleClick: function handleClick() {
      var _this = this;

      if (this.disabled) return;

      if (this.dropDown && this.dropDown.length) {
        this.dropDown.forEach(function (item) {
          item.itemClick && item.itemClick(_this.name);
        });
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/drop-down/src/dropdown-item.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_dropdown_itemvue_type_script_lang_js_ = (dropdown_itemvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/drop-down/src/dropdown-item.vue





/* normalize component */

var dropdown_item_component = normalizeComponent(
  src_dropdown_itemvue_type_script_lang_js_,
  dropdown_itemvue_type_template_id_4d3422da_render,
  dropdown_itemvue_type_template_id_4d3422da_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var dropdown_item = (dropdown_item_component.exports);
// CONCATENATED MODULE: ./packages/drop-down/index.js



dropdown.Menu = dropdown_menu;
dropdown.Item = dropdown_item;
/* harmony default export */ var drop_down = (dropdown);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/time/src/time.vue?vue&type=template&id=62afd85a&
var timevue_type_template_id_62afd85a_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',{class:[("" + _vm.classPrefix)]},[_vm._v("\n    "+_vm._s(_vm.currentTime)+"\n")])}
var timevue_type_template_id_62afd85a_staticRenderFns = []


// CONCATENATED MODULE: ./packages/time/src/time.vue?vue&type=template&id=62afd85a&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/time/src/time.vue?vue&type=script&lang=js&



//
//
//
//
//
//


/* harmony default export */ var timevue_type_script_lang_js_ = ({
  name: 'Time',
  props: {
    time: {
      type: [String, Number, Date],
      required: true,
      default: ''
    },
    type: {
      type: String,
      default: 'relative',
      validator: function validator(value) {
        return ['relative', 'date', 'datetime'].includes(value);
      }
    },
    // relative类型：一分钟之内显示（..秒前），1小时之内显示（..分钟前）,今天之内显示（时间点(时分秒，根据format)），昨天显示（昨天 时间点(时分秒，根据format)），昨天之前显示（时间点(根据format)）
    format: {
      type: String,
      default: ''
    },
    // 自动更新时间，单位：秒
    interval: {
      type: Number
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-time',
      defaultFormat: 'yyyy-MM-dd hh:mm:ss',
      currentFormatDate: '',
      // 日期格式化
      currentFormatTime: '',
      // 时间格式化
      currentTime: '',
      timer: null
    };
  },
  mounted: function mounted() {
    this.initFormat();
  },
  methods: {
    initFormat: function initFormat() {
      var _this = this;

      var format = this.format || this.defaultFormat;

      if (this.type === 'date') {
        format = this.format || 'yyyy-MM-dd';
      }

      var splitIndex = format.indexOf(' ');
      this.currentFormatDate = format.substring(0, splitIndex).trim() || 'yyyy-MM-dd';
      this.currentFormatTime = format.substring(splitIndex + 1).trim() || 'hh:mm:ss';
      this.initCurrentTime();

      if (this.interval !== undefined && this.interval > 0) {
        var interval = parseInt(this.interval) * 1000;
        clearInterval(this.timer);
        this.timer = setInterval(function () {
          _this.initCurrentTime();
        }, interval);
      }
    },
    initCurrentTime: function initCurrentTime() {
      var time = '';

      switch (this.type) {
        case 'relative':
          time = this.autoTime(this.time);
          break;

        case 'date':
          time = dateFormat(this.time, this.currentFormatDate);
          break;

        case 'datetime':
          time = dateFormat(this.time, this.format || this.defaultFormat);
          break;
      }

      this.currentTime = time;
    },
    autoTime: function autoTime(time) {
      if (!time) return;
      var result = '刚刚';
      var nowDate = new Date();
      var yesterDate = new Date();
      var tomorrowDate = new Date();
      yesterDate.setDate(nowDate.getDate() - 1);
      tomorrowDate.setDate(nowDate.getDate() + 1);
      var date = new Date(time);
      var disTimeStamp = nowDate - date;
      var oneHoursTimeStamp = 60 * 60 * 1000; // 一小时毫秒数

      var oneMinutesTimeStamp = 60 * 1000; // 一分钟毫秒数

      var nowDay = nowDate.getDate(); // 今天的日期

      var yesterDay = yesterDate.getDate(); // 昨天的日期

      var tomorrowDay = tomorrowDate.getDate(); // 明天的日期

      var day = date.getDate(); // 设置时间的日期

      if (disTimeStamp >= 0) {
        // 一分钟之内
        if (disTimeStamp <= oneMinutesTimeStamp) {
          result = parseInt(disTimeStamp / 1000) + '秒前';
        } else if (disTimeStamp <= oneHoursTimeStamp) {
          // 一小时之内
          result = parseInt(disTimeStamp / 1000 / 60) + '分钟前';
        } else if (nowDay === day) {
          // 今天之内
          result = dateFormat(date, this.currentFormatTime);
        } else if (yesterDay === day) {
          // 昨天
          result = '昨天' + dateFormat(date, this.currentFormatTime);
        } else {
          result = dateFormat(date, this.format || this.defaultFormat);
        }
      } else {
        // 设置的时间是当前时间点之后的时间
        disTimeStamp = Math.abs(disTimeStamp); // 一分钟之内

        if (disTimeStamp <= oneMinutesTimeStamp) {
          result = parseInt(disTimeStamp / 1000) + '秒后';
        } else if (disTimeStamp <= oneHoursTimeStamp) {
          // 一小时之内
          result = parseInt(disTimeStamp / 1000 / 60) + '分钟后';
        } else if (nowDay === day) {
          // 今天
          result = parseInt(disTimeStamp / 1000 / 60 / 60) + '小时后';
        } else if (tomorrowDay === day) {
          // 明天
          result = '明天' + dateFormat(date, this.currentFormatTime);
        } else {
          result = dateFormat(date, this.format || this.defaultFormat);
        }
      }

      return result;
    }
  },
  destroyed: function destroyed() {
    this.timer && clearInterval(this.timer);
  },
  watch: {
    value: function value() {
      this.initFormat();
    }
  }
});
// CONCATENATED MODULE: ./packages/time/src/time.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_timevue_type_script_lang_js_ = (timevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/time/src/time.vue





/* normalize component */

var time_component = normalizeComponent(
  src_timevue_type_script_lang_js_,
  timevue_type_template_id_62afd85a_render,
  timevue_type_template_id_62afd85a_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_time = (time_component.exports);
// CONCATENATED MODULE: ./packages/time/index.js

/* harmony default export */ var packages_time = (src_time);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/image/src/image.vue?vue&type=template&id=0a9f033f&
var imagevue_type_template_id_0a9f033f_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
    ("" + _vm.classPrefix),
    (_vm.isLoading || _vm.isError) && (_vm.classPrefix + "--status"),
    !_vm.clientWidth && (_vm.classPrefix + "--no-clientwidth") ]},[(_vm.isLoading)?_c('div',{class:[(_vm.classPrefix + "__loading")]},[_vm._t("loading",[_c('loading',{attrs:{"type":"loading5","size":"large","fix":"","color":"#ccc","visible":_vm.isLoading}})])],2):(_vm.isError)?_c('div',{class:[(_vm.classPrefix + "__error")]},[_vm._t("error",[_vm._v(_vm._s(_vm.t('m.image.errorText')))])],2):_c('img',{class:[
             (_vm.classPrefix + "__inner"),
             _vm.fit && (_vm.classPrefix + "__" + _vm.fit)
         ],style:(_vm.imageStyle),attrs:{"src":_vm.src,"alt":_vm.alt},on:{"click":_vm.handleImageClick}}),_vm._v(" "),(_vm.previewList.length)?[(_vm.previewVisible)?_c('image-preview',{style:(_vm.previewStyle),attrs:{"list":_vm.previewList},on:{"close":function($event){_vm.previewVisible = false}}}):_vm._e()]:_vm._e()],2)}
var imagevue_type_template_id_0a9f033f_staticRenderFns = []


// CONCATENATED MODULE: ./packages/image/src/image.vue?vue&type=template&id=0a9f033f&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/image/src/imagePreview.vue?vue&type=template&id=c4d385b2&
var imagePreviewvue_type_template_id_c4d385b2_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('transition',{attrs:{"name":"fade"}},[(_vm.visible)?_c('div',{class:[("" + _vm.classPrefix)]},[_c('div',{class:[(_vm.classPrefix + "__wrap")]},[_c('div',{class:[(_vm.classPrefix + "__close")],on:{"click":_vm.handleClose}},[_c('Icon',{attrs:{"type":"close"}})],1),_vm._v(" "),_c('Icon',{class:[(_vm.classPrefix + "__left")],attrs:{"type":"left"},on:{"click":function($event){return _vm.handleChange('left')}}}),_vm._v(" "),_c('Icon',{class:[(_vm.classPrefix + "__right")],attrs:{"type":"right"},on:{"click":function($event){return _vm.handleChange('right')}}}),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__body")]},[_vm._l((_vm.list),function(item,index){return [(index === _vm.selectedIndex)?_c('img',{key:index,class:[(_vm.classPrefix + "__image")],style:(_vm.imageStyle),attrs:{"src":item,"alt":""},on:{"mousedown":_vm.handleImageMouseDown}}):_vm._e()]})],2),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__footer")]},[_c('Icon',{attrs:{"type":"circle-plus"},on:{"click":function($event){return _vm.handleAction('zoomIn')}}}),_vm._v(" "),_c('Icon',{attrs:{"type":"remove"},on:{"click":function($event){return _vm.handleAction('zoomOut')}}}),_vm._v(" "),_c('Icon',{attrs:{"type":_vm.actionToggle === 'max' ? 'look' : 'renew'},on:{"click":function($event){return _vm.handleAction('toggle')}}}),_vm._v(" "),_c('Icon',{class:[(_vm.classPrefix + "__refresh-left")],attrs:{"type":"refresh"},on:{"click":function($event){return _vm.handleAction('rotateLeft')}}}),_vm._v(" "),_c('Icon',{attrs:{"type":"refresh"},on:{"click":function($event){return _vm.handleAction('rotateRight')}}})],1)],1)]):_vm._e()])}
var imagePreviewvue_type_template_id_c4d385b2_staticRenderFns = []


// CONCATENATED MODULE: ./packages/image/src/imagePreview.vue?vue&type=template&id=c4d385b2&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/image/src/imagePreview.vue?vue&type=script&lang=js&





function imagePreviewvue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function imagePreviewvue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { imagePreviewvue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { imagePreviewvue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//




/* harmony default export */ var imagePreviewvue_type_script_lang_js_ = ({
  name: 'ImagePreview',
  mixins: [mixins_locale],
  props: {
    list: {
      type: Array,
      default: function _default() {
        return [];
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-image-preview',
      visible: false,
      selectedIndex: 0,
      minScale: 0.1,
      // 最小缩小
      maxScale: 10,
      // 最大放大
      everyScale: 0.1,
      // 每次缩放的倍数
      everyRotate: 90,
      // 每次旋转角度
      transform: {
        scale: 1,
        rotate: 0,
        translateX: 0,
        translateY: 0
      },
      actionToggle: 'max' // nomral正常 max限制最大宽高

    };
  },
  computed: {
    imageStyle: function imageStyle() {
      var _this$transform = this.transform,
          scale = _this$transform.scale,
          rotate = _this$transform.rotate,
          translateX = _this$transform.translateX,
          translateY = _this$transform.translateY;
      var style = {};

      if (this.actionToggle === 'max') {
        style = {
          maxWidth: '100%',
          maxHeight: '100%'
        };
      }

      return imagePreviewvue_type_script_lang_js_objectSpread(imagePreviewvue_type_script_lang_js_objectSpread({}, style), {}, {
        transform: "scale(".concat(scale, ") rotate(").concat(rotate, "deg) translateX(").concat(translateX, "px) translateY(").concat(translateY, "px)")
      });
    }
  },
  components: {
    Icon: packages_icon
  },
  mounted: function mounted() {
    var _this = this;

    this.$nextTick(function () {
      _this.visible = true;

      _this.renderToHtml();

      _this.listener();
    });
  },
  beforeDestroy: function beforeDestroy() {
    off(document, 'mousewheel', this.handleMouseWheel);
    off(document, 'DOMMouseScroll', this.handleMouseWheel);
  },
  methods: {
    renderToHtml: function renderToHtml() {
      document.body.appendChild(this.$el);
    },
    listener: function listener() {
      on(document, 'mousewheel', this.handleMouseWheel);
      on(document, 'DOMMouseScroll', this.handleMouseWheel);
    },
    handleMouseWheel: function handleMouseWheel(e) {
      var delta = e.wheelDelta ? e.wheelDelta : -e.detail;

      if (delta > 0) {
        this.handleAction('zoomIn');
      } else {
        this.handleAction('zoomOut');
      }
    },
    handleClose: function handleClose() {
      this.visible = false;
      this.$emit('input', false);
      this.$emit('close');
    },
    handleAction: function handleAction(action) {
      var _this$transform2 = this.transform,
          scale = _this$transform2.scale,
          rotate = _this$transform2.rotate;

      switch (action) {
        case 'zoomIn':
          scale = scale + this.everyScale;
          break;

        case 'zoomOut':
          scale = scale - this.everyScale;
          break;

        case 'toggle':
          this.actionToggle = this.actionToggle === 'max' ? 'normal' : 'max';
          rotate = 0;
          scale = 1;
          this.transform.translateX = 0;
          this.transform.translateY = 0;
          break;

        case 'rotateLeft':
          rotate = rotate - this.everyRotate;
          break;

        case 'rotateRight':
          rotate = rotate + this.everyRotate;
          break;
      }

      if (scale <= this.minScale) {
        scale = this.minScale;
      }

      if (scale >= this.maxScale) {
        scale = this.maxScale;
      }

      this.transform.scale = scale;
      this.transform.rotate = rotate;
    },
    handleImageMouseDown: function handleImageMouseDown(e) {
      var _this2 = this;

      e.preventDefault();
      var _this$transform3 = this.transform,
          translateX = _this$transform3.translateX,
          translateY = _this$transform3.translateY;
      var x = e.pageX;
      var y = e.pageY;

      var handleDrag = function handleDrag(ev) {
        _this2.transform.translateX = translateX + ev.pageX - x;
        _this2.transform.translateY = translateY + ev.pageY - y;
      };

      on(document, 'mousemove', handleDrag);
      on(document, 'mouseup', function () {
        off(document, 'mousemove', handleDrag);
      });
    },
    handleChange: function handleChange(type) {
      var len = this.list.length;

      if (type === 'left') {
        this.selectedIndex--;

        if (this.selectedIndex < 0) {
          this.selectedIndex = len - 1;
        }
      } else {
        this.selectedIndex++;

        if (this.selectedIndex > len - 1) {
          this.selectedIndex = 0;
        }
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/image/src/imagePreview.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_imagePreviewvue_type_script_lang_js_ = (imagePreviewvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/image/src/imagePreview.vue





/* normalize component */

var imagePreview_component = normalizeComponent(
  src_imagePreviewvue_type_script_lang_js_,
  imagePreviewvue_type_template_id_c4d385b2_render,
  imagePreviewvue_type_template_id_c4d385b2_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var imagePreview = (imagePreview_component.exports);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/image/src/image.vue?vue&type=script&lang=js&








function imagevue_type_script_lang_js_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function imagevue_type_script_lang_js_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { imagevue_type_script_lang_js_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { imagevue_type_script_lang_js_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//




var isObjectFit = document.documentElement.style.objectFit !== undefined;
/* harmony default export */ var imagevue_type_script_lang_js_ = ({
  name: 'MImage',
  mixins: [mixins_locale],
  props: {
    fit: {
      type: String,
      default: 'none',
      validator: function validator(value) {
        return ['fill', 'none', 'contain', 'cover', 'scale-down'].includes(value);
      }
    },
    src: {
      type: String,
      default: ''
    },
    alt: String,
    previewList: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    zIndex: {
      type: Number,
      default: 2000
    }
  },
  computed: {
    imageStyle: function imageStyle() {
      // return this.computedImageStyle();
      return isObjectFit ? {} : this.computedImageStyle();
    },
    previewStyle: function previewStyle() {
      return {
        'z-index': this.zIndex
      };
    }
  },
  components: {
    ImagePreview: imagePreview,
    Loading: packages_loading
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-image',
      isLoading: true,
      isError: false,
      imageWidth: 0,
      imageHeight: 0,
      previewVisible: false,
      clientWidth: 0
    };
  },
  mounted: function mounted() {
    var _this = this;

    this.initImage();
    this.$nextTick(function () {
      _this.computedClientWidth();
    });
  },
  methods: {
    initImage: function initImage() {
      var _this2 = this;

      var img = new Image();

      img.onload = function (e) {
        return _this2.loadImage(e, img);
      };

      img.onerror = function (e) {
        return _this2.errorLoadImage(e);
      };

      img.src = this.src;
    },
    loadImage: function loadImage(e, img) {
      this.imageWidth = img.width;
      this.imageHeight = img.height;
      this.isLoading = false;
      this.isError = false;
      this.$emit('load', e);
    },
    errorLoadImage: function errorLoadImage(e) {
      this.isLoading = false;
      this.isError = true;
      this.$emit('error', e);
    },
    computedClientWidth: function computedClientWidth() {
      this.clientWidth = this.$el && this.$el.clientWidth;
    },
    computedImageStyle: function computedImageStyle() {
      var style = {
        position: 'absolute',
        top: '50%',
        left: '50%',
        transform: 'translate(-50%, -50%)'
      };
      var clientWidth = this.$el && this.$el.clientWidth;
      var clientHeight = this.$el && this.$el.clientHeight;
      var imageWidth = this.imageWidth;
      var imageHeight = this.imageHeight;

      if (!imageHeight || !clientHeight || !imageWidth || !clientWidth) {
        return style;
      }

      var scaleVertical = imageWidth / imageHeight < 1; // 图片的垂直比例

      var fit = this.fit;

      if (fit === 'scale-down') {
        if (imageHeight < clientHeight && imageWidth < clientWidth) {
          fit = 'none';
        } else {
          fit = 'contain';
        }
      }

      var c = {};

      switch (fit) {
        case 'none':
          style = imagevue_type_script_lang_js_objectSpread(imagevue_type_script_lang_js_objectSpread({}, style), {}, {
            width: 'auto',
            height: 'auto'
          });
          break;

        case 'contain':
          c = scaleVertical ? {
            width: 'auto'
          } : {
            height: 'auto'
          };
          style = imagevue_type_script_lang_js_objectSpread(imagevue_type_script_lang_js_objectSpread({}, style), c);
          break;

        case 'cover':
          c = scaleVertical ? {
            height: 'auto'
          } : {
            width: 'auto'
          };
          style = imagevue_type_script_lang_js_objectSpread(imagevue_type_script_lang_js_objectSpread({}, style), c);
          break;
      }

      return style;
    },
    handleImageClick: function handleImageClick() {
      if (!this.previewList.length) return;
      this.previewVisible = true;
    }
  }
});
// CONCATENATED MODULE: ./packages/image/src/image.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_imagevue_type_script_lang_js_ = (imagevue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/image/src/image.vue





/* normalize component */

var image_component = normalizeComponent(
  src_imagevue_type_script_lang_js_,
  imagevue_type_template_id_0a9f033f_render,
  imagevue_type_template_id_0a9f033f_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_image = (image_component.exports);
// CONCATENATED MODULE: ./packages/image/index.js

/* harmony default export */ var packages_image = (src_image);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/skeleton/src/skeleton.vue?vue&type=template&id=6af799dc&
var skeletonvue_type_template_id_6af799dc_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
    ("" + _vm.classPrefix),
    (_vm.classPrefix + "--" + _vm.type)
]},[(_vm.type === 'list')?[_c('skeleton-item',{class:[(_vm.classPrefix + "__title")],staticStyle:{"width":"60%"},attrs:{"animation":_vm.animation,"type":"line"}}),_vm._v(" "),_c('skeleton-item',{attrs:{"animation":_vm.animation,"type":"line"}}),_vm._v(" "),_c('skeleton-item',{attrs:{"animation":_vm.animation,"type":"line"}}),_vm._v(" "),_c('skeleton-item',{staticStyle:{"width":"80%"},attrs:{"animation":_vm.animation,"type":"line"}})]:_vm._e(),_vm._v(" "),(_vm.type === 'avatar')?[_c('skeleton-item',{attrs:{"animation":_vm.animation,"type":"circle"}}),_vm._v(" "),_c('div',{class:[(_vm.classPrefix + "__avatar-line")]},[_c('skeleton-item',{class:[(_vm.classPrefix + "__title")],staticStyle:{"width":"60%"},attrs:{"animation":_vm.animation,"type":"line"}}),_vm._v(" "),_c('skeleton-item',{attrs:{"animation":_vm.animation,"type":"line"}}),_vm._v(" "),_c('skeleton-item',{attrs:{"animation":_vm.animation,"type":"line"}}),_vm._v(" "),_c('skeleton-item',{attrs:{"animation":_vm.animation,"type":"line"}}),_vm._v(" "),_c('skeleton-item',{staticStyle:{"width":"80%"},attrs:{"animation":_vm.animation,"type":"line"}})],1)]:_vm._e()],2)}
var skeletonvue_type_template_id_6af799dc_staticRenderFns = []


// CONCATENATED MODULE: ./packages/skeleton/src/skeleton.vue?vue&type=template&id=6af799dc&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/skeleton/src/skeletonItem.vue?vue&type=template&id=46cf3240&
var skeletonItemvue_type_template_id_46cf3240_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.itemClass})}
var skeletonItemvue_type_template_id_46cf3240_staticRenderFns = []


// CONCATENATED MODULE: ./packages/skeleton/src/skeletonItem.vue?vue&type=template&id=46cf3240&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/skeleton/src/skeletonItem.vue?vue&type=script&lang=js&


//
//
//
//

/* harmony default export */ var skeletonItemvue_type_script_lang_js_ = ({
  name: 'SkeletonItem',
  props: {
    type: {
      type: String,
      default: 'line',
      validator: function validator(value) {
        return ['line', 'circle'].includes(value);
      }
    },
    animation: {
      type: Boolean,
      default: false
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-skeleton-item'
    };
  },
  computed: {
    itemClass: function itemClass() {
      return ["".concat(this.classPrefix), "".concat(this.classPrefix, "--").concat(this.type), this.animation && "".concat(this.classPrefix, "--animation")];
    }
  }
});
// CONCATENATED MODULE: ./packages/skeleton/src/skeletonItem.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_skeletonItemvue_type_script_lang_js_ = (skeletonItemvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/skeleton/src/skeletonItem.vue





/* normalize component */

var skeletonItem_component = normalizeComponent(
  src_skeletonItemvue_type_script_lang_js_,
  skeletonItemvue_type_template_id_46cf3240_render,
  skeletonItemvue_type_template_id_46cf3240_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var skeletonItem = (skeletonItem_component.exports);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/skeleton/src/skeleton.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//


/* harmony default export */ var skeletonvue_type_script_lang_js_ = ({
  name: 'Skeleton',
  props: {
    type: {
      type: String,
      default: 'list',
      validator: function validator(value) {
        return ['list', 'avatar'].includes(value);
      }
    },
    animation: {
      type: Boolean,
      default: false
    }
  },
  components: {
    SkeletonItem: skeletonItem
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-skeleton',
      railColor: '#cccccc',
      strokeWidth: 20
    };
  },
  computed: {
    railStyle: function railStyle() {
      return {
        background: this.railColor,
        height: parseFloat(this.strokeWidth) + 'px'
      };
    }
  }
});
// CONCATENATED MODULE: ./packages/skeleton/src/skeleton.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_skeletonvue_type_script_lang_js_ = (skeletonvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/skeleton/src/skeleton.vue





/* normalize component */

var skeleton_component = normalizeComponent(
  src_skeletonvue_type_script_lang_js_,
  skeletonvue_type_template_id_6af799dc_render,
  skeletonvue_type_template_id_6af799dc_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var skeleton = (skeleton_component.exports);
// CONCATENATED MODULE: ./packages/skeleton/index.js


skeleton.Item = skeletonItem;
/* harmony default export */ var packages_skeleton = (skeleton);
// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/cascader/src/cascader.vue?vue&type=template&id=94c19ab6&
var cascadervue_type_template_id_94c19ab6_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"click-outside",rawName:"v-click-outside.capture",value:(_vm.handleClickOutside),expression:"handleClickOutside",modifiers:{"capture":true}}],class:[("" + _vm.classPrefix)]},[_c('div',{ref:"reference",class:[(_vm.classPrefix + "__reference")],on:{"click":function($event){$event.stopPropagation();return _vm.handleInputClick($event)}}},[_vm._t("default",[_c('Input',{class:[(_vm.classPrefix + "__reference-input")],attrs:{"disabled":_vm.disabled,"size":_vm.computedSize,"readonly":_vm.readonly,"placeholder":_vm.computedPlaceholder},on:{"focus":_vm.handleInputFocus,"change":_vm.handleInputChange},nativeOn:{"mouseenter":function($event){_vm.isHover = true},"mouseleave":function($event){_vm.isHover = false}},model:{value:(_vm.inputValue),callback:function ($$v) {_vm.inputValue=$$v},expression:"inputValue"}},[_c('template',{slot:"suffix"},[_c('Icon',{directives:[{name:"show",rawName:"v-show",value:(_vm.showClear),expression:"showClear"}],attrs:{"type":"error-fill"},on:{"click":function($event){$event.stopPropagation();return _vm.handleInputClear($event)}}}),_vm._v(" "),_c('Icon',{directives:[{name:"show",rawName:"v-show",value:(!_vm.showClear),expression:"!showClear"}],class:[
                              (_vm.classPrefix + "__suffix-icon"),
                              _vm.visible && (_vm.classPrefix + "__suffix-icon-open") ],attrs:{"type":"down"}})],1)],2)])],2),_vm._v(" "),_c('transition',{attrs:{"name":_vm.transition}},[_c('Drop',{directives:[{name:"show",rawName:"v-show",value:(_vm.visible && !_vm.disabled),expression:"visible && !disabled"}],ref:"dropDown",attrs:{"reference":this.$refs.reference,"min-width":false,"dropdownMatchSelectWidth":false,"render-html":_vm.renderHtml},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:"visible"}},[_c('div',{class:[(_vm.classPrefix + "__drop-down-inner")]},[(_vm.loading)?_c('div',{class:[(_vm.classPrefix + "__loading")]},[_vm._v("\n                    "+_vm._s(_vm.computedLoadingText)+"\n                    "),(!_vm.loadingText)?_c('Icon',{staticClass:"animation-rotate",attrs:{"type":"loading"}}):_vm._e()],1):(_vm.showEmpty)?_c('div',{class:[(_vm.classPrefix + "__empty")]},[_vm._v(_vm._s(_vm.computedEmptyText))]):_c('cascader-panel',{attrs:{"data":_vm.currentData}})],1)])],1)],1)}
var cascadervue_type_template_id_94c19ab6_staticRenderFns = []


// CONCATENATED MODULE: ./packages/cascader/src/cascader.vue?vue&type=template&id=94c19ab6&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/cascader/src/cascaderPanel.vue?vue&type=template&id=544c71fb&
var cascaderPanelvue_type_template_id_544c71fb_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[
    ("" + _vm.classPrefix),
    !_vm.parentComponent && (_vm.classPrefix + "--border")
]},[(_vm.parentComponent && _vm.parentComponent.showFilterablePanel)?_c('cascader-item',{attrs:{"data":_vm.parentComponent.currentFilterableData,"show-path-label":""}}):_c('cascader-item',{attrs:{"data":_vm.parentComponent ? _vm.data : _vm.currentData}})],1)}
var cascaderPanelvue_type_template_id_544c71fb_staticRenderFns = []


// CONCATENATED MODULE: ./packages/cascader/src/cascaderPanel.vue?vue&type=template&id=544c71fb&

// CONCATENATED MODULE: ./node_modules/_vue-loader@15.9.3@vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/cascader/src/cascaderItem.vue?vue&type=template&id=1631f335&
var cascaderItemvue_type_template_id_1631f335_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[("" + _vm.classPrefix)]},[_c('div',{class:[(_vm.classPrefix + "__label")]},[_c('scroll',{attrs:{"size":"small","scrollOption":{scrollPanel:{scrollingX:false}}}},[_vm._l((_vm.data),function(item){return [_c('div',{key:item.value,class:[
                            (_vm.classPrefix + "__label-inner"),
                            (item.__selected || item.__visible) && (_vm.classPrefix + "__label-inner-selected"),
                            item.__disabled && (_vm.classPrefix + "__label-inner-disabled") ],on:{"click":function($event){return _vm.handleClick(item)},"mouseover":function($event){return _vm.handleMouseover(item)}}},[(_vm.showPathLabel)?_c('span',{domProps:{"innerHTML":_vm._s(_vm.computedLable(item))}}):_c('span',[_vm._v(_vm._s(_vm.parentComponent.formatLabel(item)))]),_vm._v(" "),(item.__loading)?_c('span',{class:[(_vm.classPrefix + "__label-expand-icon")]},[_c('Icon',{staticClass:"animation-rotate",attrs:{"type":"loading"}})],1):(item.__more)?_c('Icon',{class:[(_vm.classPrefix + "__label-expand-icon")],attrs:{"type":"right"}}):_vm._e()],1)]})],2)],1),_vm._v(" "),_vm._l((_vm.data),function(item){return [(item.children && item.children.length && item.__visible)?_c('cascader-item',{key:item.value,attrs:{"data":item.children}}):_vm._e()]})],2)}
var cascaderItemvue_type_template_id_1631f335_staticRenderFns = []


// CONCATENATED MODULE: ./packages/cascader/src/cascaderItem.vue?vue&type=template&id=1631f335&

// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/cascader/src/cascaderItem.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//




/* harmony default export */ var cascaderItemvue_type_script_lang_js_ = ({
  name: 'CascaderItem',
  props: {
    data: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    showPathLabel: {
      type: Boolean,
      default: false
    }
  },
  computed: {
    computedLable: function computedLable() {
      return function (item) {
        if (!this.isCascader) return;
        var searchValue = this.parentComponent.inputValue;
        var replaceValue = "<span class=\"".concat(this.classPrefix, "__label-match\">").concat(searchValue, "</span>");
        return item.__pathLabel.replace(searchValue, replaceValue);
      };
    }
  },
  data: function data() {
    var cascader = findComponent(this, 'Cascader');
    var cascaderPanel = findComponent(this, 'CascaderPanel');
    return {
      classPrefix: config.classPrefix + '-cascader-item',
      visible: false,
      currentValue: '',
      isCascader: !!cascader,
      parentComponent: cascader || cascaderPanel
    };
  },
  components: {
    Scroll: packages_scroll,
    Icon: packages_icon
  },
  methods: {
    handleClick: function handleClick(item) {
      var _this = this;

      if (this.parentComponent.disabled || item.disabled || item.loading) return;

      if (this.parentComponent.loadData && !item.last && (!item.children || !item.children.length)) {
        this.parentComponent.setCurrentData('__loading', item, true);
        var promise = this.parentComponent.loadData(item);

        if (_typeof(promise) === 'object' && promise.then) {
          promise.then(function (result) {
            _this.parentComponent.setCurrentData('children', item, result);

            _this.parentComponent.setCurrentData('__loading', item, false);
          }).catch(function (e) {
            console.log(e);

            _this.parentComponent.setCurrentData('__loading', item, false);
          });
        }
      }

      this.handleTrigger(item);
    },
    handleMouseover: function handleMouseover(item) {
      if (this.parentComponent.disabled || item.disabled) return;

      if (this.parentComponent.trigger === 'hover') {
        this.parentComponent.setCurrentData('__visible', item, true);
        this.parentComponent.setCurrentData('__selected', item, true); // if(this.parentComponent.changeOnSelect && item.__more){
        //     this.parentComponent.setCurrentData('__visible', item, true);
        //     this.parentComponent.setCurrentData('__selected', item, true);
        // }else{
        //     this.parentComponent.setCurrentData('__visible', item, true);
        //     this.parentComponent.setCurrentData('__selected', item, true);
        // }
      }
    },
    handleTrigger: function handleTrigger(item) {
      // if(item.__visible) return;
      this.parentComponent.setCurrentData('__visible', item, true);
      this.parentComponent.setCurrentData('__selected', item, true);

      if (!item.__more || this.parentComponent.changeOnSelect) {
        this.parentComponent.filterSelectedValue(item);
      }
    }
  }
});
// CONCATENATED MODULE: ./packages/cascader/src/cascaderItem.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_cascaderItemvue_type_script_lang_js_ = (cascaderItemvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/cascader/src/cascaderItem.vue





/* normalize component */

var cascaderItem_component = normalizeComponent(
  src_cascaderItemvue_type_script_lang_js_,
  cascaderItemvue_type_template_id_1631f335_render,
  cascaderItemvue_type_template_id_1631f335_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var cascaderItem = (cascaderItem_component.exports);
// CONCATENATED MODULE: ./packages/cascader/src/mixin.js






/* harmony default export */ var mixin = ({
  props: {
    value: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    data: {
      type: Array,
      default: function _default() {
        return [];
      }
    },
    trigger: {
      type: String,
      default: 'click',
      validator: function validator(value) {
        return ['click', 'hover'].includes(value);
      }
    },
    // 是否可以选择任意项，默认只能选择叶子节点
    changeOnSelect: {
      type: Boolean,
      default: false
    },
    loadData: {
      type: Function
    },
    // 格式化label的显示
    formatLabel: {
      type: Function,
      default: function _default(data) {
        return data.label || '';
      }
    }
  },
  data: function data() {
    return {
      currentData: [],
      currentValue: [],
      currentLabel: [],
      currentSelectedData: [] // 当前选中的数据集合，一维数组

    };
  },
  mounted: function mounted() {
    this.currentValue = this.value;
  },
  methods: {
    resetCurrentData: function resetCurrentData() {
      var _this = this;

      var deepData = JSON.parse(JSON.stringify(this.currentData));
      var index = 0;

      var fn = function fn(data, parentItem) {
        data.forEach(function (item, i) {
          var pathIndex = parentItem && parentItem.__pathIndex ? parentItem.__pathIndex + '.' + i : i.toString();
          var pathLabel = parentItem && parentItem.__pathLabel ? parentItem.__pathLabel + ' / ' + item.label : item.label;
          item.__deepIndex = item.__deepIndex || index.toString();
          item.__pathIndex = item.__pathIndex || pathIndex;
          item.__visible = false; // 该值控制children的显示

          item.__disabled = item.disabled || false;
          item.__more = item.children && item.children.length;
          item.__loading = false;
          item.__selected = false;
          item.__pathLabel = pathLabel || '';

          if (_this.loadData) {
            item.__more = !item.last;
          }

          if (item.children && item.children.length) {
            index++;
            fn(item.children, item);
            index--;
          }
        });
      };

      fn(deepData);
      this.currentData = deepData;
      return deepData;
    },
    // 深度克隆并给指定data添加初始值
    deepCloneData: function deepCloneData(data, parentItem) {
      var _this2 = this;

      if (!data || !data.length) return [];
      var deepData = JSON.parse(JSON.stringify(data));
      var index = parentItem ? parseInt(parentItem.__deepIndex) + 1 : 0;

      var fn = function fn(data, parentItem) {
        data.forEach(function (item, i) {
          var pathIndex = parentItem && parentItem.__pathIndex ? parentItem.__pathIndex + '.' + i : i.toString();
          var pathLabel = parentItem && parentItem.__pathLabel ? parentItem.__pathLabel + ' / ' + item.label : item.label;
          item.__deepIndex = item.__deepIndex || index.toString();
          item.__pathIndex = item.__pathIndex || pathIndex;
          item.__visible = item.__visible || false; // 该值控制children的显示

          item.__disabled = item.disabled || false;
          item.__more = item.children && item.children.length;
          item.__loading = false;
          item.__selected = item.__selected || false;
          item.__pathLabel = pathLabel || '';

          if (_this2.loadData) {
            item.__more = !item.last;
          }

          if (item.children && item.children.length) {
            index++;
            fn(item.children, item);
            index--;
          }
        });
      };

      fn(deepData, parentItem);
      return deepData;
    },
    // 初始化currentData
    initCurrentData: function initCurrentData() {
      this.currentData = this.deepCloneData(this.data); // 当value存在，data后更新时

      if (this.currentValue.length) {
        this.handleValueChange(this.currentData, this.currentValue);
      }

      return this.currentData;
    },
    // 设置currentData中指定item的prop的value值，
    // 如果设置的是__visible\__selected属性时 会同时设置父级相同属性的值，
    // 如果设置的是__loading属性，只设置本级别的值
    // 如果设置的是children属性，会初始化value后进行设置
    setCurrentData: function setCurrentData(prop, item, value) {
      var _this3 = this;

      var deepData = JSON.parse(JSON.stringify(this.currentData));

      if (prop === 'children') {
        value = this.deepCloneData(value, item);
      }

      var has = false; // 是否有满足的

      var isSelected = this.currentValue.includes(item.value); // 点击的项是否是选中的项

      var fn = function fn(data) {
        data.forEach(function (_item) {
          if (['__visible', '__selected'].includes(prop)) {
            _item[prop] = false;
          }

          if (_item.value === item.value && !has && !item.__disabled) {
            has = true;
            _item[prop] = value;
          } // 如果在当前选中项的层级上点击 该路径下的为__selected属性设置为true


          if (isSelected && _this3.currentValue.includes(_item.value)) _item.__selected = true;

          if (_item.children && _item.children.length) {
            fn(_item.children);
          }
        });
      };

      fn(deepData);

      if (['__visible', '__selected'].includes(prop)) {
        deepData = this.setCurrentDataByPath(deepData, prop, item, value);
      }

      this.currentData = deepData;
    },
    // 设置currentData，通过指定项的path查找对应的所有父级统一设置指定的属性值
    setCurrentDataByPath: function setCurrentDataByPath(data, prop, item, value) {
      var deepData = JSON.parse(JSON.stringify(data));

      var pathIndexArr = item.__pathIndex.split('.');

      var fn = function fn(data) {
        var index = pathIndexArr.shift();
        if (!data.length || !index) return;
        if (data[index].__disabled) return;
        data[index][prop] = value;

        var _data = data[index].children || [];

        fn(_data);
      };

      fn(deepData, pathIndexArr);
      return deepData;
    },
    // 通过指定项的path 从currentData数据中获取指定的prop 返回查找到的属性值组成的数组
    getPropFromCurrentDataByPath: function getPropFromCurrentDataByPath(item, prop) {
      var _this4 = this;

      var deepData = JSON.parse(JSON.stringify(this.currentData));

      var pathIndexArr = item.__pathIndex.split('.');

      var result = [];
      this.currentSelectedData = [];

      var fn = function fn(data) {
        var index = pathIndexArr.shift();
        if (!data.length || !index) return;
        if (data[index].__disabled) return;
        result.push(data[index][prop]);

        _this4.currentSelectedData.push(data[index]);

        var _data = data[index].children || [];

        fn(_data);
      };

      fn(deepData, pathIndexArr);
      return result;
    },
    // 过滤出所有被选中项，并设置currentValue 和 currentLabel
    filterSelectedValue: function filterSelectedValue() {
      var _this5 = this;

      var deepData = JSON.parse(JSON.stringify(this.currentData));

      var fn = function fn(data) {
        data.forEach(function (item) {
          if (item.__selected && !item.__disabled) {
            _this5.setCurrentValue(item);

            _this5.setCurrentLabel(item);
          }

          if (item.children && item.children.length) {
            fn(item.children);
          }
        });
      };

      fn(deepData);
    },
    // 设置currentValue
    setCurrentValue: function setCurrentValue(data) {
      if (!this.changeOnSelect && data.__more) return;
      this.openFilterable = false;
      this.currentValue = this.getPropFromCurrentDataByPath(data, 'value');
      this.$emit('change', this.currentValue, this.currentSelectedData);

      if (!data.__more) {
        this.dropDownVisible && this.dropDownVisible(false);
      }
    },
    // 设置currentLabel 并 触发修改inputValue的值
    setCurrentLabel: function setCurrentLabel(data) {
      if (!this.changeOnSelect && data.__more) return;
      this.currentLabel = this.getPropFromCurrentDataByPath(data, 'label');
      this.setInputValue && this.setInputValue();
    },
    // 通过指定的value数组 从data中查找出所有子项 并返回子项的数组
    getItemDataByValue: function getItemDataByValue(data, value) {
      if (!value.length) return [];
      var result = [];
      var deepData = JSON.parse(JSON.stringify(data));

      var fn = function fn(data) {
        data.forEach(function (item) {
          if (value.includes(item.value) && !item.__disabled) {
            result.push(item);
          }

          if (item.children && item.children.length) {
            fn(item.children);
          }
        });
      };

      fn(deepData);
      return result;
    },
    // 上层value变化时 设置currentValue currentLabel currentData(选中属性的值)
    handleValueChange: function handleValueChange(data, values) {
      var itemData = this.getItemDataByValue(data, values);

      if (itemData.length) {
        for (var i = 0; i < itemData.length; i++) {
          if (itemData[i].value === values[i]) {
            this.setCurrentData('__visible', itemData[i], true);
            this.setCurrentData('__selected', itemData[i], true);
            this.filterSelectedValue();
          } else {
            break;
          }
        }
      }
    },
    // 根据value搜索
    searchFilter: function searchFilter(value) {
      var _this6 = this;

      var deepData = JSON.parse(JSON.stringify(this.currentData));
      var result = [];

      var fn = function fn(data) {
        data.forEach(function (item) {
          if (item.__pathLabel.includes(value) && !item.__disabled) {
            if (_this6.changeOnSelect) {
              delete item.children;
              result.push(item);
            } else if (!item.children || !item.children.length) {
              result.push(item);
            }
          }

          if (item.children && item.children.length) {
            fn(item.children);
          }
        });
      };

      fn(deepData);
      return result;
    }
  },
  watch: {
    value: {
      handler: function handler(val) {
        if (JSON.stringify(val) === JSON.stringify(this.currentValue)) return;
        this.handleValueChange(this.currentData, val);
        this.currentValue = val;
      },
      deep: true,
      immediate: true
    },
    currentValue: function currentValue(val) {
      this.$emit('input', val);
    }
  }
});
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/cascader/src/cascaderPanel.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//




/* harmony default export */ var cascaderPanelvue_type_script_lang_js_ = ({
  name: 'CascaderPanel',
  mixins: [mixin],
  data: function data() {
    var cascader = findComponent(this, 'Cascader');
    return {
      classPrefix: config.classPrefix + '-cascader-panel',
      componentName: 'CascaderPanel',
      currentValue: [],
      parentComponent: cascader || null
    };
  },
  components: {
    CascaderItem: cascaderItem
  },
  watch: {
    data: {
      handler: function handler() {
        if (!this.parentComponent) {
          this.initCurrentData();
        }
      },
      deep: true,
      immediate: true
    }
  }
});
// CONCATENATED MODULE: ./packages/cascader/src/cascaderPanel.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_cascaderPanelvue_type_script_lang_js_ = (cascaderPanelvue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/cascader/src/cascaderPanel.vue





/* normalize component */

var cascaderPanel_component = normalizeComponent(
  src_cascaderPanelvue_type_script_lang_js_,
  cascaderPanelvue_type_template_id_544c71fb_render,
  cascaderPanelvue_type_template_id_544c71fb_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_cascaderPanel = (cascaderPanel_component.exports);
// CONCATENATED MODULE: ./node_modules/_babel-loader@8.1.0@babel-loader/lib??ref--1!./node_modules/_vue-loader@15.9.3@vue-loader/lib??vue-loader-options!./packages/cascader/src/cascader.vue?vue&type=script&lang=js&


//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//









/* harmony default export */ var cascadervue_type_script_lang_js_ = ({
  name: 'Cascader',
  directives: {
    clickOutside: v_click_outside_x_esm_directive
  },
  mixins: [mixin, mixins_locale],
  props: {
    transition: {
      type: String,
      default: 'slideUp'
    },
    disabled: {
      type: Boolean,
      default: false
    },
    clearable: {
      type: Boolean,
      default: true
    },
    placeholder: String,
    emptyText: String,
    loadingText: String,
    loading: Boolean,
    size: {
      type: String,
      default: function _default() {
        return !this.$MONKEY || this.$MONKEY.size === '' ? 'default' : this.$MONKEY.size;
      },
      validator: function validator(value) {
        return ['mini', 'small', 'default', 'large'].includes(value);
      }
    },
    format: {
      type: Function
    },
    filterable: {
      type: Boolean,
      default: false
    },
    renderHtml: {
      type: [HTMLElement, Boolean],
      default: function _default() {
        return false;
      }
    }
  },
  data: function data() {
    return {
      classPrefix: config.classPrefix + '-cascader',
      componentName: 'Cascader',
      inputValue: '',
      visible: false,
      openFilterable: false,
      // 开启搜索
      currentFilterableData: [],
      // 搜索到的数据
      isHover: false,
      form: findComponent(this, 'Form')
    };
  },
  computed: {
    computedSize: function computedSize() {
      if (this.size !== 'default') return this.size;
      if (this.form && this.form.size !== 'default') return this.form.size;
      return this.size;
    },
    computedPlaceholder: function computedPlaceholder() {
      return this.placeholder ? this.placeholder : this.t('m.cascader.placeholder');
    },
    computedEmptyText: function computedEmptyText() {
      return this.emptyText ? this.emptyText : this.t('m.cascader.emptyData');
    },
    computedLoadingText: function computedLoadingText() {
      return this.loadingText ? this.loadingText : this.t('m.cascader.loading');
    },
    readonly: function readonly() {
      if (this.disabled) return true;
      if (this.filterable) return false;
      return true;
    },
    showFilterablePanel: function showFilterablePanel() {
      return this.filterable && this.openFilterable;
    },
    showEmpty: function showEmpty() {
      if (this.showFilterablePanel) {
        return !this.currentFilterableData.length;
      }

      return !this.currentData.length;
    },
    showClear: function showClear() {
      return this.clearable && this.inputValue && this.isHover;
    }
  },
  components: {
    Input: packages_input,
    Icon: packages_icon,
    Drop: drop,
    CascaderPanel: src_cascaderPanel
  },
  methods: {
    setInputValue: function setInputValue() {
      if (this.format) {
        var result = this.format(this.currentLabel, this.currentSelectedData);

        if (typeof result === 'string') {
          this.inputValue = result;
        }
      } else {
        this.inputValue = this.currentLabel.join(' / ');
      }
    },
    handleInputFocus: function handleInputFocus() {
      if (this.disabled || !this.filterable) return;
      this.dropDownVisible(true);
    },
    handleInputClear: function handleInputClear() {
      this.inputValue = '';
      this.currentValue = [];
      this.currentLabel = [];
      this.currentSelectedData = [];
      this.resetCurrentData();
      this.$emit('change', [], []);
      this.$emit('clear');
    },
    handleInputChange: function handleInputChange(value) {
      this.openFilterable = !!value;
      this.currentFilterableData = [];

      if (this.filterable) {
        // 用户搜索改变
        this.currentFilterableData = this.searchFilter(value);
      }
    },
    handleInputClick: function handleInputClick() {
      if (this.disabled || this.filterable) return;
      this.dropDownVisible(!this.visible);
    },
    dropDownVisible: function dropDownVisible(visible) {
      if (this.disabled) return;
      this.visible = visible;
    },
    handleClickOutside: function handleClickOutside(event) {
      if (this.visible) {
        if (this.renderHtml !== false) {
          var $el = this.$refs.dropDown.$el;

          if ($el === event.target || $el.contains(event.target)) {
            return;
          }
        }
      } // 如果是可搜索 在失去焦点时重置label数据


      if (this.filterable) {
        this.handleValueChange(this.currentData, this.currentValue);
      }

      this.$emit('click-outside', event);
      this.dropDownVisible(false);
    }
  },
  watch: {
    data: {
      handler: function handler() {
        this.initCurrentData();
      },
      deep: true,
      immediate: true
    }
  }
});
// CONCATENATED MODULE: ./packages/cascader/src/cascader.vue?vue&type=script&lang=js&
 /* harmony default export */ var src_cascadervue_type_script_lang_js_ = (cascadervue_type_script_lang_js_); 
// CONCATENATED MODULE: ./packages/cascader/src/cascader.vue





/* normalize component */

var cascader_component = normalizeComponent(
  src_cascadervue_type_script_lang_js_,
  cascadervue_type_template_id_94c19ab6_render,
  cascadervue_type_template_id_94c19ab6_staticRenderFns,
  false,
  null,
  null,
  null
  
)

/* harmony default export */ var src_cascader = (cascader_component.exports);
// CONCATENATED MODULE: ./packages/cascader/index.js


src_cascader.panel = src_cascaderPanel;
/* harmony default export */ var packages_cascader = (src_cascader);
// CONCATENATED MODULE: ./src/index.js





function src_ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }

function src_objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { src_ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { src_ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }

















































var components = {
  Layout: packages_layout,
  Sider: packages_layout.Sider,
  Header: packages_layout.Header,
  Footer: packages_layout.Footer,
  Content: packages_layout.Content,
  Menu: packages_menu,
  MenuItem: packages_menu.MenuItem,
  MenuGroup: packages_menu.MenuGroup,
  Submenu: packages_menu.Submenu,
  Button: packages_button,
  ButtonGroup: packages_button_group,
  Checkbox: packages_checkbox,
  CheckboxGroup: packages_checkbox_group,
  Radio: packages_radio,
  RadioGroup: packages_radio_group,
  Input: packages_input,
  Select: packages_select,
  Option: packages_option,
  OptionGroup: packages_option_group,
  Upload: packages_upload,
  Slider: packages_slider,
  Modal: packages_modal,
  Popover: packages_popover,
  Tooltip: packages_tooltip,
  Progress: packages_progress,
  Tag: packages_tag,
  Badge: packages_badge,
  Scroll: packages_scroll,
  Alter: packages_alert,
  Card: packages_card,
  Drawer: packages_drawer,
  Table: packages_table,
  Collapse: packages_collapse,
  CollapseItem: packages_collapse.Item,
  Row: src_row,
  Col: col,
  Tabs: tabs,
  TabPane: tab_pane,
  Tree: packages_tree,
  Page: packages_page,
  List: packages_list,
  ListItem: packages_list.item,
  ListRow: packages_list.row,
  Loading: packages_loading,
  BackTop: packages_back_top,
  Affix: packages_affix,
  DatePicker: packages_date_picker,
  TimePicker: packages_time_picker,
  Form: packages_form,
  FormItem: packages_form_item,
  Dropdown: drop_down,
  DropdownMenu: drop_down.Menu,
  DropdownItem: drop_down.Item,
  Time: packages_time,
  Skeleton: packages_skeleton,
  SkeletonItem: packages_skeleton.Item,
  Cascader: packages_cascader,
  CascaderPanel: packages_cascader.panel,
  Icon: packages_icon
};

var monkeyView = src_objectSpread(src_objectSpread({}, components), {}, {
  mButton: packages_button,
  mCol: col,
  mContent: packages_layout.Content,
  mForm: packages_form,
  mFooter: packages_layout.Footer,
  mHeader: packages_layout.Header,
  mInput: packages_input,
  mMenu: packages_menu,
  mOption: packages_option,
  mProgress: packages_progress,
  mSelect: packages_select,
  mSwitch: packages_switch,
  mTable: packages_table,
  mTime: packages_time,
  mImage: packages_image
});

var src_install = function install(Vue) {
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  if (install.installed) return;
  locale.use(opts.locale);
  locale.i18n(opts.i18n);
  Object.keys(monkeyView).forEach(function (key) {
    Vue.component(key, monkeyView[key]);
  });
  src_directive(Vue);
  Vue.prototype.$MONKEY = {
    size: opts.size || ''
  };
  Vue.prototype.$Modal = packages_modal.$Modal;
  Vue.prototype.$Message = packages_message;
  Vue.prototype.$Notice = packages_notice;
  Vue.prototype.$Loading = packages_loading.instance;
};

var src_directive = function directive(Vue) {
  Vue.directive('loading', packages_loading.directive);
};

if (typeof window !== 'undefined' && window.Vue) {
  src_install(window.Vue);
  src_directive(window.Vue);
}

var API = src_objectSpread({
  version: '0.1.0-alpha.0',
  locale: locale.use,
  i18n: locale.i18n,
  install: src_install,
  Switch: packages_switch,
  Image: packages_image
}, components);

/* harmony default export */ var src = __webpack_exports__["default"] = (API);

/***/ })
/******/ ])["default"];
});
//# sourceMappingURL=monkey-view.js.map