\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PieCharts.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PieCharts.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PieCharts.vue?vue&type=template&id=237d89c6&scoped=true&\"\nimport script from \"./PieCharts.vue?vue&type=script&lang=js&\"\nexport * from \"./PieCharts.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PieCharts.vue?vue&type=style&index=0&id=237d89c6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"237d89c6\",\n null\n \n)\n\nexport default component.exports","\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n\r\n \r\n \r\n
\r\n 距离下次数据更新还有 00: {{minute}}: {{second}}\r\n
\r\n\r\n
\r\n
![]()
\r\n
\r\n\r\n\r\n
数字化资产管理驾驶舱
\r\n
\r\n\r\n\r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{dateFtt('yyyy-MM-dd', new Date().getFullYear() +'-'+ (new Date().getMonth()+1)+ '-01')}} - {{dateFtt('yyyy-MM-dd', new Date())}}\r\n
\r\n \r\n 总维修 {{woFailureData.woFailureAmount}}\r\n 平均维修 {{woFailureData.workcenterPeopleAvg}}\r\n
\r\n\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DepetmentManage.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DepetmentManage.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./DepetmentManage.vue?vue&type=template&id=b14029d4&scoped=true&\"\nimport script from \"./DepetmentManage.vue?vue&type=script&lang=js&\"\nexport * from \"./DepetmentManage.vue?vue&type=script&lang=js&\"\nimport style0 from \"./DepetmentManage.vue?vue&type=style&index=0&id=b14029d4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b14029d4\",\n null\n \n)\n\nexport default component.exports","\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Home.vue?vue&type=template&id=0713771e&scoped=true&\"\nimport script from \"./Home.vue?vue&type=script&lang=js&\"\nexport * from \"./Home.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Home.vue?vue&type=style&index=0&id=0713771e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0713771e\",\n null\n \n)\n\nexport default component.exports","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","module.exports = __webpack_public_path__ + \"static/img/logo-tongfu.764db9f7.png\";","module.exports = require('./lib/axios');","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var QueryHandler = require('./QueryHandler');\nvar each = require('./Util').each;\n\n/**\n * Represents a single media query, manages it's state and registered handlers for this query\n *\n * @constructor\n * @param {string} query the media query string\n * @param {boolean} [isUnconditional=false] whether the media query should run regardless of whether the conditions are met. Primarily for helping older browsers deal with mobile-first design\n */\nfunction MediaQuery(query, isUnconditional) {\n this.query = query;\n this.isUnconditional = isUnconditional;\n this.handlers = [];\n this.mql = window.matchMedia(query);\n\n var self = this;\n this.listener = function(mql) {\n // Chrome passes an MediaQueryListEvent object, while other browsers pass MediaQueryList directly\n self.mql = mql.currentTarget || mql;\n self.assess();\n };\n this.mql.addListener(this.listener);\n}\n\nMediaQuery.prototype = {\n\n constuctor : MediaQuery,\n\n /**\n * add a handler for this query, triggering if already active\n *\n * @param {object} handler\n * @param {function} handler.match callback for when query is activated\n * @param {function} [handler.unmatch] callback for when query is deactivated\n * @param {function} [handler.setup] callback for immediate execution when a query handler is registered\n * @param {boolean} [handler.deferSetup=false] should the setup callback be deferred until the first time the handler is matched?\n */\n addHandler : function(handler) {\n var qh = new QueryHandler(handler);\n this.handlers.push(qh);\n\n this.matches() && qh.on();\n },\n\n /**\n * removes the given handler from the collection, and calls it's destroy methods\n *\n * @param {object || function} handler the handler to remove\n */\n removeHandler : function(handler) {\n var handlers = this.handlers;\n each(handlers, function(h, i) {\n if(h.equals(handler)) {\n h.destroy();\n return !handlers.splice(i,1); //remove from array and exit each early\n }\n });\n },\n\n /**\n * Determine whether the media query should be considered a match\n *\n * @return {Boolean} true if media query can be considered a match, false otherwise\n */\n matches : function() {\n return this.mql.matches || this.isUnconditional;\n },\n\n /**\n * Clears all handlers and unbinds events\n */\n clear : function() {\n each(this.handlers, function(handler) {\n handler.destroy();\n });\n this.mql.removeListener(this.listener);\n this.handlers.length = 0; //clear array\n },\n\n /*\n * Assesses the query, turning on all handlers if it matches, turning them off if it doesn't match\n */\n assess : function() {\n var action = this.matches() ? 'on' : 'off';\n\n each(this.handlers, function(handler) {\n handler[action]();\n });\n }\n};\n\nmodule.exports = MediaQuery;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.filterNonNumber = filterNonNumber;\nexports.deepMerge = deepMerge;\nexports.mulAdd = mulAdd;\nexports.mergeSameStackData = mergeSameStackData;\nexports.getTwoPointDistance = getTwoPointDistance;\nexports.getLinearGradientColor = getLinearGradientColor;\nexports.getPolylineLength = getPolylineLength;\nexports.getPointToLineDistance = getPointToLineDistance;\nexports.initNeedSeries = initNeedSeries;\nexports.radianToAngle = radianToAngle;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _util = require(\"@jiaminghi/c-render/lib/plugin/util\");\n\nfunction filterNonNumber(array) {\n return array.filter(function (n) {\n return typeof n === 'number';\n });\n}\n\nfunction deepMerge(target, merged) {\n for (var key in merged) {\n if (target[key] && (0, _typeof2[\"default\"])(target[key]) === 'object') {\n deepMerge(target[key], merged[key]);\n continue;\n }\n\n if ((0, _typeof2[\"default\"])(merged[key]) === 'object') {\n target[key] = (0, _util.deepClone)(merged[key], true);\n continue;\n }\n\n target[key] = merged[key];\n }\n\n return target;\n}\n\nfunction mulAdd(nums) {\n nums = filterNonNumber(nums);\n return nums.reduce(function (all, num) {\n return all + num;\n }, 0);\n}\n\nfunction mergeSameStackData(item, series) {\n var stack = item.stack;\n if (!stack) return (0, _toConsumableArray2[\"default\"])(item.data);\n var stacks = series.filter(function (_ref) {\n var s = _ref.stack;\n return s === stack;\n });\n var index = stacks.findIndex(function (_ref2) {\n var d = _ref2.data;\n return d === item.data;\n });\n var datas = stacks.splice(0, index + 1).map(function (_ref3) {\n var data = _ref3.data;\n return data;\n });\n var dataLength = datas[0].length;\n return new Array(dataLength).fill(0).map(function (foo, i) {\n return mulAdd(datas.map(function (d) {\n return d[i];\n }));\n });\n}\n\nfunction getTwoPointDistance(pointOne, pointTwo) {\n var minusX = Math.abs(pointOne[0] - pointTwo[0]);\n var minusY = Math.abs(pointOne[1] - pointTwo[1]);\n return Math.sqrt(minusX * minusX + minusY * minusY);\n}\n\nfunction getLinearGradientColor(ctx, begin, end, color) {\n if (!ctx || !begin || !end || !color.length) return;\n var colors = color;\n typeof colors === 'string' && (colors = [color, color]);\n var linearGradientColor = ctx.createLinearGradient.apply(ctx, (0, _toConsumableArray2[\"default\"])(begin).concat((0, _toConsumableArray2[\"default\"])(end)));\n var colorGap = 1 / (colors.length - 1);\n colors.forEach(function (c, i) {\n return linearGradientColor.addColorStop(colorGap * i, c);\n });\n return linearGradientColor;\n}\n\nfunction getPolylineLength(points) {\n var lineSegments = new Array(points.length - 1).fill(0).map(function (foo, i) {\n return [points[i], points[i + 1]];\n });\n var lengths = lineSegments.map(function (item) {\n return getTwoPointDistance.apply(void 0, (0, _toConsumableArray2[\"default\"])(item));\n });\n return mulAdd(lengths);\n}\n\nfunction getPointToLineDistance(point, linePointOne, linePointTwo) {\n var a = getTwoPointDistance(point, linePointOne);\n var b = getTwoPointDistance(point, linePointTwo);\n var c = getTwoPointDistance(linePointOne, linePointTwo);\n return 0.5 * Math.sqrt((a + b + c) * (a + b - c) * (a + c - b) * (b + c - a)) / c;\n}\n\nfunction initNeedSeries(series, config, type) {\n series = series.filter(function (_ref4) {\n var st = _ref4.type;\n return st === type;\n });\n series = series.map(function (item) {\n return deepMerge((0, _util.deepClone)(config, true), item);\n });\n return series.filter(function (_ref5) {\n var show = _ref5.show;\n return show;\n });\n}\n\nfunction radianToAngle(radian) {\n return radian / Math.PI * 180;\n}","var baseIsRegExp = require('./_baseIsRegExp'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\nmodule.exports = isRegExp;\n","/**\r\n * Introduction 全局方法申明\r\n *\r\n * @param Vue\r\n * @param options\r\n */\r\nexports.install = function(Vue, options)\r\n{\r\n /**\r\n * Introudction 语言翻译,解决服务端返回的字段带有语言规则的情况\r\n *\r\n * @author 刘维中\r\n * @email weizhong.lulu@gmail.com\r\n * @since 1.0\r\n * @date 2021/03/05\r\n * @param options\r\n * @returns {(string|number)|string}\r\n */\r\n Vue.prototype.$gT = function(options)\r\n {\r\n // 为空的情况直接返回空\r\n if( typeof options === 'undefined' || options === null || options === '' || JSON.stringify(options) === '{}' || options.length <= 0 )\r\n {\r\n return ''\r\n }\r\n\r\n // 如果有为0的情况,则直接返回\r\n if( options === 0 || options === '0' )\r\n {\r\n return options\r\n }\r\n\r\n // 如果是字符串或者数字的情况下则直接返回\r\n if( typeof options === 'string' || typeof options === 'number' )\r\n {\r\n return options\r\n }\r\n\r\n // 当前应用下的配置 -> 主应用下的配置 -> 默认\"简体中文\"\r\n const currentLanguage = process.env.VUE_APP_LANGUAGE || Vue.prototype.$app.env.VUE_APP_LANGUAGE || 'zh_CN'\r\n\r\n return typeof options[ currentLanguage ] !== 'undefined' && options[ currentLanguage ] ? options[ currentLanguage ] : ''\r\n }\r\n}\r\n","var global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TypeError = global.TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","var MediaQuery = require('./MediaQuery');\nvar Util = require('./Util');\nvar each = Util.each;\nvar isFunction = Util.isFunction;\nvar isArray = Util.isArray;\n\n/**\n * Allows for registration of query handlers.\n * Manages the query handler's state and is responsible for wiring up browser events\n *\n * @constructor\n */\nfunction MediaQueryDispatch () {\n if(!window.matchMedia) {\n throw new Error('matchMedia not present, legacy browsers require a polyfill');\n }\n\n this.queries = {};\n this.browserIsIncapable = !window.matchMedia('only all').matches;\n}\n\nMediaQueryDispatch.prototype = {\n\n constructor : MediaQueryDispatch,\n\n /**\n * Registers a handler for the given media query\n *\n * @param {string} q the media query\n * @param {object || Array || Function} options either a single query handler object, a function, or an array of query handlers\n * @param {function} options.match fired when query matched\n * @param {function} [options.unmatch] fired when a query is no longer matched\n * @param {function} [options.setup] fired when handler first triggered\n * @param {boolean} [options.deferSetup=false] whether setup should be run immediately or deferred until query is first matched\n * @param {boolean} [shouldDegrade=false] whether this particular media query should always run on incapable browsers\n */\n register : function(q, options, shouldDegrade) {\n var queries = this.queries,\n isUnconditional = shouldDegrade && this.browserIsIncapable;\n\n if(!queries[q]) {\n queries[q] = new MediaQuery(q, isUnconditional);\n }\n\n //normalise to object in an array\n if(isFunction(options)) {\n options = { match : options };\n }\n if(!isArray(options)) {\n options = [options];\n }\n each(options, function(handler) {\n if (isFunction(handler)) {\n handler = { match : handler };\n }\n queries[q].addHandler(handler);\n });\n\n return this;\n },\n\n /**\n * unregisters a query and all it's handlers, or a specific handler for a query\n *\n * @param {string} q the media query to target\n * @param {object || function} [handler] specific handler to unregister\n */\n unregister : function(q, handler) {\n var query = this.queries[q];\n\n if(query) {\n if(handler) {\n query.removeHandler(handler);\n }\n else {\n query.clear();\n delete this.queries[q];\n }\n }\n\n return this;\n }\n};\n\nmodule.exports = MediaQueryDispatch;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","//! moment.js\n//! version : 2.29.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i;\n for (i = 0; i < arr.length; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i, prop, val;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentProperties.length > 0) {\n for (i = 0; i < momentProperties.length; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key;\n for (i = 0; i < arguments.length; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens = /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i;\n for (i = 0; i < prioritized.length; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord = /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(/\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g, function (\n matched,\n p1,\n p2,\n p3,\n p4\n ) {\n return p1 || p2 || p3 || p4;\n })\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n for (i = 0; i < token.length; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(\n '_'\n ),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(['w', 'ww', 'W', 'WW'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 1)] = toInt(input);\n });\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat;\n\n if (match) {\n getParsingFlags(config).iso = true;\n\n for (i = 0, l = isoDates.length; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimes.length; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^)]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n\n for (i = 0; i < tokens.length; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false;\n\n if (config._f.length === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < config._f.length; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < ordering.length; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex = /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (\n input,\n array,\n config,\n token\n ) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n });\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (\n input,\n week,\n config,\n token\n ) {\n week[token.substr(0, 2)] = toInt(input);\n });\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', //
\n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', //
\n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', //
\n DATE: 'YYYY-MM-DD', //
\n TIME: 'HH:mm', //
\n TIME_SECONDS: 'HH:mm:ss', //
\n TIME_MS: 'HH:mm:ss.SSS', //
\n WEEK: 'GGGG-[W]WW', //
\n MONTH: 'YYYY-MM', //
\n };\n\n return hooks;\n\n})));\n","/**\n * Introduction 获取query中的参数值\n *\n * @author 刘维中\n * @email weizhong.lulu@gmail.com\n * @since 1.0\n * @date 2022/05/25\n * @param name\n * @returns {string}\n */\nfunction getQueryString(name) {\n\n let currentHref = window.location.href;\n if(currentHref.indexOf('?') > 0)\n {\n let reg = new RegExp(\"(^|&)\" + name + \"=([^&]*)(&|$)\", \"i\");\n let r = currentHref.substring(currentHref.indexOf('?') + 1).match(reg);\n if(r !== null)\n {\n return decodeURI(r[2]);\n }\n }\n\n return null;\n}\n\n/**\n * Introduction 构建访问域名\n *\n * @author 刘维中\n * @email weizhong.lulu@gmail.com\n * @since 1.0\n * @date 2022/05/25\n * @returns {string}\n */\nfunction buildDomain() {\n return window.top.location.protocol + \"//\" + window.top.location.host\n}\n\n/**\n * Introduction 构建api的访问地址\n *\n * @author 刘维中\n * @email weizhong.lulu@gmail.com\n * @since 1.0\n * @date 2022/05/25\n * @returns {string}\n */\nfunction buildApiUrl() {\n const domain = buildDomain();\n const apiUrl = window.top.location.href.includes(\"/ierp\") === true ? domain.concat(\"/ierp\") : domain;\n return apiUrl;\n}\n\n/**\n * Introduction 设置全局本地属性对象\n *\n * @author 刘维中\n * @email weizhong.lulu@gmail.com\n * @since 1.0\n * @date 2022/05/25\n * @param key\n * @param value\n */\nfunction setLocalStorageItem(key, value) {\n if(window.__POWERED_BY_QIANKUN__)\n {\n window.proxy.localStorage.setItem(key, value);\n }\n else\n {\n window.localStorage.setItem(key, value);\n }\n}\n\n/**\n * Introduction 获取全局本地属性对象\n *\n * @author 刘维中\n * @email weizhong.lulu@gmail.com\n * @since 1.0\n * @date 2022/05/25\n * @param key\n * @param value\n */\nfunction getLocalStorageItem(key) {\n if(window.__POWERED_BY_QIANKUN__)\n {\n return window.proxy.localStorage.getItem(key);\n }\n else\n {\n return window.localStorage.getItem(key);\n }\n}\n\n/**\n * Introduction 代码沉睡\n *\n * @author 刘维中\n * @email weizhong.lulu@gamil.com\n * @since 1.0\n * @date 2022/05/25\n * @param numberMillis\n * @returns {boolean}\n */\nfunction sleep(numberMillis) {\n let now = new Date();\n let exitTime = now.getTime() + numberMillis;\n while (true) {\n now = new Date();\n if (now.getTime() > exitTime)\n return true;\n }\n}\n\nexport default {\n getQueryString,\n buildDomain,\n buildApiUrl,\n setLocalStorageItem,\n getLocalStorageItem,\n sleep\n}\n","import request from 'sync-request';\nimport tools from \"./tools\";\n\nexport function queryData(apiUrl) {\n return request('GET', apiUrl + \"/kapi/app/digi_visualization/getUserInfo\");\n}\n","import {queryData} from \"./tools/query\";\nimport tools from './tools/tools'\n\n/**\n * Introduction 返回apiUrl地址的获取方法 - 无需校验\n *\n * @author 刘维中\n * @email weizhong.lulu@gmail.com\n * @since 1.0\n * @date 2022/05/25\n */\nexport function apiUrl() {\n // 非生产环境\n if(process.env.NODE_ENV !== 'production') {\n return process.env.VUE_APP_URL;\n }\n\n // 生产环境\n // 1. 从缓存中读取\n let apiUrl = tools.getLocalStorageItem(\"api-url\");\n if(typeof apiUrl !== 'undefined' && !!apiUrl) {\n return decodeURIComponent(apiUrl);\n }\n\n // 2. 从api的url地址中获取\n apiUrl = tools.getQueryString(\"apiUrl\");\n if(typeof apiUrl !== 'undefined' && !!apiUrl) {\n tools.setLocalStorageItem(\"api-url\", encodeURIComponent(apiUrl));\n return apiUrl;\n }\n\n // 3. 直接读取域名地址\n apiUrl = tools.buildApiUrl();\n if(typeof apiUrl !== 'undefined' || !!apiUrl) {\n tools.setLocalStorageItem(\"api-url\", encodeURIComponent(apiUrl));\n return apiUrl;\n }\n\n // 4. 默认返回打包的配置值\n return process.env.VUE_APP_URL;\n}\n\n/**\n * Introduction 返回api地址的获取方法 - 需要校验\n *\n * @author 刘维中\n * @email weizhong.lulu@gmail.com\n * @since 1.0\n * @date 2022/05/25\n * @returns {string}\n */\nexport function asyncApiUrl() {\n // 非生产环境\n if(process.env.NODE_ENV !== 'production') {\n return process.env.VUE_APP_URL;\n }\n\n // 生产环境\n // 1. 从缓存中读取\n let apiUrl = tools.getLocalStorageItem(\"api-url\");\n if(typeof apiUrl !== 'undefined' && !!apiUrl) {\n return decodeURIComponent(apiUrl);\n }\n\n // 2. 从api的url地址中获取\n apiUrl = tools.getQueryString(\"apiUrl\");\n if(typeof apiUrl !== 'undefined' && !!apiUrl) {\n tools.setLocalStorageItem(\"api-url\", encodeURIComponent(apiUrl));\n return apiUrl;\n }\n\n // 3. 通过url地址中获取api地址并进行校验接口\n apiUrl = tools.buildApiUrl();\n const response = queryData(apiUrl);\n if(response.statusCode === 404 || response.statusCode === '404') {\n apiUrl = apiUrl.endsWith ( \"/ierp\" ) ? apiUrl.substr ( 0, apiUrl.length - 5 ) : apiUrl + \"/ierp\"\n }\n if(typeof apiUrl !== 'undefined' && !!apiUrl) {\n tools.setLocalStorageItem(\"api-url\", encodeURIComponent(apiUrl));\n return apiUrl;\n }\n\n return process.env.VUE_APP_URL;\n}\n\n/**\n * Introduction 返回domainUrl地址的获取方法\n *\n * @author 刘维中\n * @email weizhong.lulu@gmail.com\n * @since 1.0\n * @date 2022/05/25\n */\nexport function domainUrl() {\n return tools.buildDomain();\n}\n","/**\r\n * Introduction HTTP 同步请求的类\r\n *\r\n * @author 刘维中\r\n * @email weizhong.liu@gmail.com\r\n * @since 1.0\r\n * @date 2020/07/10\r\n */\r\nimport axios from 'axios'\r\nimport store from '@/store/store'\r\nimport {asyncApiUrl} from 'alm-process'\r\n\r\n// HTTP 请求对象\r\nconst TIME_OUT = 150000;\r\nconst http = axios.create ( {\r\n timeout: TIME_OUT,\r\n baseURL: asyncApiUrl()\r\n} )\r\n\r\n// HTTP 接口请求配置\r\nhttp.interceptors.request.use (\r\n ( config ) =>\r\n {\r\n // 请求的Token的值\r\n const accessToken = store.getters.currentAccessToken\r\n config.headers.accessToken = accessToken\r\n\r\n return config\r\n },\r\n ( error ) =>\r\n {\r\n return Promise.reject ( error )\r\n }\r\n)\r\n\r\n// HTTP 接口响应\r\nhttp.interceptors.response.use (\r\n ( response ) =>\r\n {\r\n // 响应结果\r\n return Promise.resolve ( response )\r\n },\r\n ( error ) =>\r\n {\r\n return Promise.reject ( error )\r\n }\r\n)\r\n\r\n// 返回 POST 同步请求\r\nexport function PostHttp ( url, payload )\r\n{\r\n return http.post ( url, payload )\r\n}\r\n\r\n// 返回 GET 同步请求\r\nexport function GetHttp ( url )\r\n{\r\n return http.get ( url )\r\n}\r\n\r\n// 返回 HTTP 请求服务 - 用于异常请求\r\nexport default http\r\n","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","'use strict';\n\nfunction shallowEqualArrays(arrA, arrB) {\n if (arrA === arrB) {\n return true;\n }\n\n if (!arrA || !arrB) {\n return false;\n }\n\n var len = arrA.length;\n\n if (arrB.length !== len) {\n return false;\n }\n\n for (var i = 0; i < len; i++) {\n if (arrA[i] !== arrB[i]) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = shallowEqualArrays;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","/**\r\n * Introduction 系统中的提示消息的JS\r\n *\r\n * @author 刘维中\r\n * @email weizhong.lulu@gmail.com\r\n * @since 1.0\r\n * @date 2021/03/05\r\n */\r\nimport {message} from 'ant-design-vue'\r\n\r\n/**\r\n * Introduction 消息参数配置\r\n */\r\nmessage.config({\r\n duration: 1.5, // 自动关闭前的时间,以秒为单位\r\n maxCount: 3 // 最大消息显示,如果超过限制,则降旧\r\n})\r\n\r\n\r\nconst toast = {}\r\n\r\n/**\r\n * Introudction 提示操作成功的消息\r\n *\r\n * @author 刘维中\r\n * @email weizhong.lulu@gmail.com\r\n * @since 1.0\r\n * @date 2021/03/05\r\n * @param content\r\n * @param duration\r\n * @param callback\r\n */\r\ntoast.success = function(content, duration, callback)\r\n{\r\n message.success(content, duration, callback)\r\n}\r\n\r\n/**\r\n * Introduction 提示操作失败的消息\r\n *\r\n * @author 刘维中\r\n * @email weizhong.lulu@gmail.com\r\n * @since 1.0\r\n * @date 2021/03/05\r\n * @param content\r\n * @param duration\r\n * @param callback\r\n */\r\ntoast.error = function(content, duration, callback)\r\n{\r\n message.error(content, duration, callback)\r\n}\r\n\r\n/**\r\n * Introduction 提示警告的消息\r\n *\r\n * @author 刘维中\r\n * @email weizhong.lulu@gmail.com\r\n * @since 1.0\r\n * @date 2021/03/05\r\n * @param content\r\n * @param duration\r\n * @param callback\r\n */\r\ntoast.warning = function(content, duration, callback)\r\n{\r\n message.warning(content, duration, callback)\r\n}\r\n\r\n\r\n/**\r\n * Introduction 提示信息的消息\r\n *\r\n * @author 刘维中\r\n * @email weizhong.lulu@gmail.com\r\n * @since 1.0\r\n * @date 2021/03/05\r\n * @param content\r\n * @param duration\r\n * @param callback\r\n */\r\ntoast.info = function(content, duration, callback)\r\n{\r\n message.info(content, duration, callback)\r\n}\r\n\r\n/**\r\n * Introduction 加载中\r\n *\r\n * @author 刘维中\r\n * @email weizhong.lulu@gmail.com\r\n * @since 1.0\r\n * @date 2021/03/05\r\n * @param content\r\n * @param duration\r\n * @param callback\r\n */\r\ntoast.loading = function(content, duration, callback)\r\n{\r\n message.loading(content, duration, callback)\r\n}\r\n\r\nexport default toast\r\n","import PropTypes from '../../_util/vue-types';\n\nvar defaultProps = {\n accessibility: PropTypes.bool.def(true),\n // 自定义高度\n adaptiveHeight: PropTypes.bool.def(false),\n afterChange: PropTypes.any.def(null),\n arrows: PropTypes.bool.def(true),\n autoplay: PropTypes.bool.def(false),\n autoplaySpeed: PropTypes.number.def(3000),\n beforeChange: PropTypes.any.def(null),\n centerMode: PropTypes.bool.def(false),\n centerPadding: PropTypes.string.def('50px'),\n cssEase: PropTypes.string.def('ease'),\n dots: PropTypes.bool.def(false),\n dotsClass: PropTypes.string.def('slick-dots'),\n draggable: PropTypes.bool.def(true),\n unslick: PropTypes.bool.def(false),\n easing: PropTypes.string.def('linear'),\n edgeFriction: PropTypes.number.def(0.35),\n fade: PropTypes.bool.def(false),\n focusOnSelect: PropTypes.bool.def(false),\n infinite: PropTypes.bool.def(true),\n initialSlide: PropTypes.number.def(0),\n lazyLoad: PropTypes.any.def(null),\n verticalSwiping: PropTypes.bool.def(false),\n asNavFor: PropTypes.any.def(null),\n // 圆点hover是否暂停\n pauseOnDotsHover: PropTypes.bool.def(false),\n // focus是否暂停\n pauseOnFocus: PropTypes.bool.def(false),\n // hover是否暂停\n pauseOnHover: PropTypes.bool.def(true),\n responsive: PropTypes.array,\n rows: PropTypes.number.def(1),\n rtl: PropTypes.bool.def(false),\n slide: PropTypes.string.def('div'),\n slidesPerRow: PropTypes.number.def(1),\n slidesToScroll: PropTypes.number.def(1),\n slidesToShow: PropTypes.number.def(1),\n speed: PropTypes.number.def(500),\n swipe: PropTypes.bool.def(true),\n swipeEvent: PropTypes.any.def(null),\n swipeToSlide: PropTypes.bool.def(false),\n touchMove: PropTypes.bool.def(true),\n touchThreshold: PropTypes.number.def(5),\n useCSS: PropTypes.bool.def(true),\n useTransform: PropTypes.bool.def(true),\n variableWidth: PropTypes.bool.def(false),\n vertical: PropTypes.bool.def(false),\n waitForAnimate: PropTypes.bool.def(true),\n children: PropTypes.array,\n __propsSymbol__: PropTypes.any\n};\n\nexport default defaultProps;","var initialState = {\n animating: false,\n autoplaying: null,\n currentDirection: 0,\n currentLeft: null,\n currentSlide: 0,\n direction: 1,\n dragging: false,\n edgeDragged: false,\n initialized: false,\n lazyLoadedList: [],\n listHeight: null,\n listWidth: null,\n scrolling: false,\n slideCount: null,\n slideHeight: null,\n slideWidth: null,\n swipeLeft: null,\n swiped: false, // used by swipeEvent. differentites between touch and swipe.\n swiping: false,\n touchObject: { startX: 0, startY: 0, curX: 0, curY: 0 },\n trackStyle: {},\n trackWidth: 0\n};\n\nexport default initialState;","import _extends from 'babel-runtime/helpers/extends';\nexport var getOnDemandLazySlides = function getOnDemandLazySlides(spec) {\n var onDemandSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n if (spec.lazyLoadedList.indexOf(slideIndex) < 0) {\n onDemandSlides.push(slideIndex);\n }\n }\n return onDemandSlides;\n};\n\n// return list of slides that need to be present\nexport var getRequiredLazySlides = function getRequiredLazySlides(spec) {\n var requiredSlides = [];\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n for (var slideIndex = startIndex; slideIndex < endIndex; slideIndex++) {\n requiredSlides.push(slideIndex);\n }\n return requiredSlides;\n};\n\n// startIndex that needs to be present\nexport var lazyStartIndex = function lazyStartIndex(spec) {\n return spec.currentSlide - lazySlidesOnLeft(spec);\n};\nexport var lazyEndIndex = function lazyEndIndex(spec) {\n return spec.currentSlide + lazySlidesOnRight(spec);\n};\nexport var lazySlidesOnLeft = function lazySlidesOnLeft(spec) {\n return spec.centerMode ? Math.floor(spec.slidesToShow / 2) + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : 0;\n};\nexport var lazySlidesOnRight = function lazySlidesOnRight(spec) {\n return spec.centerMode ? Math.floor((spec.slidesToShow - 1) / 2) + 1 + (parseInt(spec.centerPadding) > 0 ? 1 : 0) : spec.slidesToShow;\n};\n\n// get width of an element\nexport var getWidth = function getWidth(elem) {\n return elem && elem.offsetWidth || 0;\n};\nexport var getHeight = function getHeight(elem) {\n return elem && elem.offsetHeight || 0;\n};\nexport var getSwipeDirection = function getSwipeDirection(touchObject) {\n var verticalSwiping = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var swipeAngle = void 0;\n var xDist = touchObject.startX - touchObject.curX;\n var yDist = touchObject.startY - touchObject.curY;\n var r = Math.atan2(yDist, xDist);\n swipeAngle = Math.round(r * 180 / Math.PI);\n if (swipeAngle < 0) {\n swipeAngle = 360 - Math.abs(swipeAngle);\n }\n if (swipeAngle <= 45 && swipeAngle >= 0 || swipeAngle <= 360 && swipeAngle >= 315) {\n return 'left';\n }\n if (swipeAngle >= 135 && swipeAngle <= 225) {\n return 'right';\n }\n if (verticalSwiping === true) {\n if (swipeAngle >= 35 && swipeAngle <= 135) {\n return 'up';\n } else {\n return 'down';\n }\n }\n\n return 'vertical';\n};\n\n// whether or not we can go next\nexport var canGoNext = function canGoNext(spec) {\n var canGo = true;\n if (!spec.infinite) {\n if (spec.centerMode && spec.currentSlide >= spec.slideCount - 1) {\n canGo = false;\n } else if (spec.slideCount <= spec.slidesToShow || spec.currentSlide >= spec.slideCount - spec.slidesToShow) {\n canGo = false;\n }\n }\n return canGo;\n};\n\n// given an object and a list of keys, return new object with given keys\nexport var extractObject = function extractObject(spec, keys) {\n var newObject = {};\n keys.forEach(function (key) {\n return newObject[key] = spec[key];\n });\n return newObject;\n};\n\n// get initialized state\nexport var initializedState = function initializedState(spec) {\n // spec also contains listRef, trackRef\n var slideCount = spec.children.length;\n var listWidth = Math.ceil(getWidth(spec.listRef));\n var trackWidth = Math.ceil(getWidth(spec.trackRef));\n var slideWidth = void 0;\n if (!spec.vertical) {\n var centerPaddingAdj = spec.centerMode && parseInt(spec.centerPadding) * 2;\n if (typeof spec.centerPadding === 'string' && spec.centerPadding.slice(-1) === '%') {\n centerPaddingAdj *= listWidth / 100;\n }\n slideWidth = Math.ceil((listWidth - centerPaddingAdj) / spec.slidesToShow);\n } else {\n slideWidth = listWidth;\n }\n var slideHeight = spec.listRef && getHeight(spec.listRef.querySelector('[data-index=\"0\"]'));\n var listHeight = slideHeight * spec.slidesToShow;\n var currentSlide = spec.currentSlide === undefined ? spec.initialSlide : spec.currentSlide;\n if (spec.rtl && spec.currentSlide === undefined) {\n currentSlide = slideCount - 1 - spec.initialSlide;\n }\n var lazyLoadedList = spec.lazyLoadedList || [];\n var slidesToLoad = getOnDemandLazySlides({ currentSlide: currentSlide, lazyLoadedList: lazyLoadedList }, spec);\n lazyLoadedList.concat(slidesToLoad);\n\n var state = {\n slideCount: slideCount,\n slideWidth: slideWidth,\n listWidth: listWidth,\n trackWidth: trackWidth,\n currentSlide: currentSlide,\n slideHeight: slideHeight,\n listHeight: listHeight,\n lazyLoadedList: lazyLoadedList\n };\n\n if (spec.autoplaying === null && spec.autoplay) {\n state['autoplaying'] = 'playing';\n }\n\n return state;\n};\n\nexport var slideHandler = function slideHandler(spec) {\n var waitForAnimate = spec.waitForAnimate,\n animating = spec.animating,\n fade = spec.fade,\n infinite = spec.infinite,\n index = spec.index,\n slideCount = spec.slideCount,\n lazyLoadedList = spec.lazyLoadedList,\n lazyLoad = spec.lazyLoad,\n currentSlide = spec.currentSlide,\n centerMode = spec.centerMode,\n slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n useCSS = spec.useCSS;\n\n if (waitForAnimate && animating) return {};\n var animationSlide = index;\n var finalSlide = void 0;\n var animationLeft = void 0;\n var finalLeft = void 0;\n var state = {};\n var nextState = {};\n if (fade) {\n if (!infinite && (index < 0 || index >= slideCount)) return {};\n if (index < 0) {\n animationSlide = index + slideCount;\n } else if (index >= slideCount) {\n animationSlide = index - slideCount;\n }\n if (lazyLoad && lazyLoadedList.indexOf(animationSlide) < 0) {\n lazyLoadedList.push(animationSlide);\n }\n state = {\n animating: true,\n currentSlide: animationSlide,\n lazyLoadedList: lazyLoadedList\n };\n nextState = { animating: false };\n } else {\n finalSlide = animationSlide;\n if (animationSlide < 0) {\n finalSlide = animationSlide + slideCount;\n if (!infinite) finalSlide = 0;else if (slideCount % slidesToScroll !== 0) {\n finalSlide = slideCount - slideCount % slidesToScroll;\n }\n } else if (!canGoNext(spec) && animationSlide > currentSlide) {\n animationSlide = finalSlide = currentSlide;\n } else if (centerMode && animationSlide >= slideCount) {\n animationSlide = infinite ? slideCount : slideCount - 1;\n finalSlide = infinite ? 0 : slideCount - 1;\n } else if (animationSlide >= slideCount) {\n finalSlide = animationSlide - slideCount;\n if (!infinite) finalSlide = slideCount - slidesToShow;else if (slideCount % slidesToScroll !== 0) finalSlide = 0;\n }\n animationLeft = getTrackLeft(_extends({}, spec, { slideIndex: animationSlide }));\n finalLeft = getTrackLeft(_extends({}, spec, { slideIndex: finalSlide }));\n if (!infinite) {\n if (animationLeft === finalLeft) animationSlide = finalSlide;\n animationLeft = finalLeft;\n }\n lazyLoad && lazyLoadedList.concat(getOnDemandLazySlides(_extends({}, spec, { currentSlide: animationSlide })));\n if (!useCSS) {\n state = {\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_extends({}, spec, { left: finalLeft })),\n lazyLoadedList: lazyLoadedList\n };\n } else {\n state = {\n animating: true,\n currentSlide: finalSlide,\n trackStyle: getTrackAnimateCSS(_extends({}, spec, { left: animationLeft })),\n lazyLoadedList: lazyLoadedList\n };\n nextState = {\n animating: false,\n currentSlide: finalSlide,\n trackStyle: getTrackCSS(_extends({}, spec, { left: finalLeft })),\n swipeLeft: null\n };\n }\n }\n return { state: state, nextState: nextState };\n};\n\nexport var changeSlide = function changeSlide(spec, options) {\n var previousInt = void 0,\n slideOffset = void 0,\n targetSlide = void 0;\n var slidesToScroll = spec.slidesToScroll,\n slidesToShow = spec.slidesToShow,\n slideCount = spec.slideCount,\n currentSlide = spec.currentSlide,\n lazyLoad = spec.lazyLoad,\n infinite = spec.infinite;\n\n var unevenOffset = slideCount % slidesToScroll !== 0;\n var indexOffset = unevenOffset ? 0 : (slideCount - currentSlide) % slidesToScroll;\n\n if (options.message === 'previous') {\n slideOffset = indexOffset === 0 ? slidesToScroll : slidesToShow - indexOffset;\n targetSlide = currentSlide - slideOffset;\n if (lazyLoad && !infinite) {\n previousInt = currentSlide - slideOffset;\n targetSlide = previousInt === -1 ? slideCount - 1 : previousInt;\n }\n } else if (options.message === 'next') {\n slideOffset = indexOffset === 0 ? slidesToScroll : indexOffset;\n targetSlide = currentSlide + slideOffset;\n if (lazyLoad && !infinite) {\n targetSlide = (currentSlide + slidesToScroll) % slideCount + indexOffset;\n }\n } else if (options.message === 'dots') {\n // Click on dots\n targetSlide = options.index * options.slidesToScroll;\n if (targetSlide === options.currentSlide) {\n return null;\n }\n } else if (options.message === 'children') {\n // Click on the slides\n targetSlide = options.index;\n if (targetSlide === options.currentSlide) {\n return null;\n }\n if (infinite) {\n var direction = siblingDirection(_extends({}, spec, { targetSlide: targetSlide }));\n if (targetSlide > options.currentSlide && direction === 'left') {\n targetSlide = targetSlide - slideCount;\n } else if (targetSlide < options.currentSlide && direction === 'right') {\n targetSlide = targetSlide + slideCount;\n }\n }\n } else if (options.message === 'index') {\n targetSlide = Number(options.index);\n if (targetSlide === options.currentSlide) {\n return null;\n }\n }\n return targetSlide;\n};\nexport var keyHandler = function keyHandler(e, accessibility, rtl) {\n if (e.target.tagName.match('TEXTAREA|INPUT|SELECT') || !accessibility) {\n return '';\n }\n if (e.keyCode === 37) return rtl ? 'next' : 'previous';\n if (e.keyCode === 39) return rtl ? 'previous' : 'next';\n return '';\n};\n\nexport var swipeStart = function swipeStart(e, swipe, draggable) {\n e.target.tagName === 'IMG' && e.preventDefault();\n if (!swipe || !draggable && e.type.indexOf('mouse') !== -1) return '';\n return {\n dragging: true,\n touchObject: {\n startX: e.touches ? e.touches[0].pageX : e.clientX,\n startY: e.touches ? e.touches[0].pageY : e.clientY,\n curX: e.touches ? e.touches[0].pageX : e.clientX,\n curY: e.touches ? e.touches[0].pageY : e.clientY\n }\n };\n};\nexport var swipeMove = function swipeMove(e, spec) {\n // spec also contains, trackRef and slideIndex\n var scrolling = spec.scrolling,\n animating = spec.animating,\n vertical = spec.vertical,\n swipeToSlide = spec.swipeToSlide,\n verticalSwiping = spec.verticalSwiping,\n rtl = spec.rtl,\n currentSlide = spec.currentSlide,\n edgeFriction = spec.edgeFriction,\n edgeDragged = spec.edgeDragged,\n onEdge = spec.onEdge,\n swiped = spec.swiped,\n swiping = spec.swiping,\n slideCount = spec.slideCount,\n slidesToScroll = spec.slidesToScroll,\n infinite = spec.infinite,\n touchObject = spec.touchObject,\n swipeEvent = spec.swipeEvent,\n listHeight = spec.listHeight,\n listWidth = spec.listWidth;\n\n if (scrolling) return;\n if (animating) return e.preventDefault();\n if (vertical && swipeToSlide && verticalSwiping) e.preventDefault();\n var swipeLeft = void 0;\n var state = {};\n var curLeft = getTrackLeft(spec);\n touchObject.curX = e.touches ? e.touches[0].pageX : e.clientX;\n touchObject.curY = e.touches ? e.touches[0].pageY : e.clientY;\n touchObject.swipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2)));\n var verticalSwipeLength = Math.round(Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2)));\n if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n return { scrolling: true };\n }\n if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength;\n var positionOffset = (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1);\n if (verticalSwiping) {\n positionOffset = touchObject.curY > touchObject.startY ? 1 : -1;\n }\n\n var dotCount = Math.ceil(slideCount / slidesToScroll);\n var swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping);\n var touchSwipeLength = touchObject.swipeLength;\n if (!infinite) {\n if (currentSlide === 0 && swipeDirection === 'right' || currentSlide + 1 >= dotCount && swipeDirection === 'left' || !canGoNext(spec) && swipeDirection === 'left') {\n touchSwipeLength = touchObject.swipeLength * edgeFriction;\n if (edgeDragged === false && onEdge) {\n onEdge(swipeDirection);\n state['edgeDragged'] = true;\n }\n }\n }\n if (!swiped && swipeEvent) {\n swipeEvent(swipeDirection);\n state['swiped'] = true;\n }\n if (!vertical) {\n if (!rtl) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n } else {\n swipeLeft = curLeft - touchSwipeLength * positionOffset;\n }\n } else {\n swipeLeft = curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset;\n }\n if (verticalSwiping) {\n swipeLeft = curLeft + touchSwipeLength * positionOffset;\n }\n state = _extends({}, state, {\n touchObject: touchObject,\n swipeLeft: swipeLeft,\n trackStyle: getTrackCSS(_extends({}, spec, { left: swipeLeft }))\n });\n if (Math.abs(touchObject.curX - touchObject.startX) < Math.abs(touchObject.curY - touchObject.startY) * 0.8) {\n return state;\n }\n if (touchObject.swipeLength > 10) {\n state['swiping'] = true;\n e.preventDefault();\n }\n return state;\n};\nexport var swipeEnd = function swipeEnd(e, spec) {\n var dragging = spec.dragging,\n swipe = spec.swipe,\n touchObject = spec.touchObject,\n listWidth = spec.listWidth,\n touchThreshold = spec.touchThreshold,\n verticalSwiping = spec.verticalSwiping,\n listHeight = spec.listHeight,\n currentSlide = spec.currentSlide,\n swipeToSlide = spec.swipeToSlide,\n scrolling = spec.scrolling,\n onSwipe = spec.onSwipe;\n\n if (!dragging) {\n if (swipe) e.preventDefault();\n return {};\n }\n var minSwipe = verticalSwiping ? listHeight / touchThreshold : listWidth / touchThreshold;\n var swipeDirection = getSwipeDirection(touchObject, verticalSwiping);\n // reset the state of touch related state variables.\n var state = {\n dragging: false,\n edgeDragged: false,\n scrolling: false,\n swiping: false,\n swiped: false,\n swipeLeft: null,\n touchObject: {}\n };\n if (scrolling) {\n return state;\n }\n if (!touchObject.swipeLength) {\n return state;\n }\n if (touchObject.swipeLength > minSwipe) {\n e.preventDefault();\n if (onSwipe) {\n onSwipe(swipeDirection);\n }\n var slideCount = void 0,\n newSlide = void 0;\n switch (swipeDirection) {\n case 'left':\n case 'up':\n newSlide = currentSlide + getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state['currentDirection'] = 0;\n break;\n case 'right':\n case 'down':\n newSlide = currentSlide - getSlideCount(spec);\n slideCount = swipeToSlide ? checkNavigable(spec, newSlide) : newSlide;\n state['currentDirection'] = 1;\n break;\n default:\n slideCount = currentSlide;\n }\n state['triggerSlideHandler'] = slideCount;\n } else {\n // Adjust the track back to it's original position.\n var currentLeft = getTrackLeft(spec);\n state['trackStyle'] = getTrackAnimateCSS(_extends({}, spec, { left: currentLeft }));\n }\n return state;\n};\nexport var getNavigableIndexes = function getNavigableIndexes(spec) {\n var max = spec.infinite ? spec.slideCount * 2 : spec.slideCount;\n var breakpoint = spec.infinite ? spec.slidesToShow * -1 : 0;\n var counter = spec.infinite ? spec.slidesToShow * -1 : 0;\n var indexes = [];\n while (breakpoint < max) {\n indexes.push(breakpoint);\n breakpoint = counter + spec.slidesToScroll;\n counter += Math.min(spec.slidesToScroll, spec.slidesToShow);\n }\n return indexes;\n};\nexport var checkNavigable = function checkNavigable(spec, index) {\n var navigables = getNavigableIndexes(spec);\n var prevNavigable = 0;\n if (index > navigables[navigables.length - 1]) {\n index = navigables[navigables.length - 1];\n } else {\n for (var n in navigables) {\n if (index < navigables[n]) {\n index = prevNavigable;\n break;\n }\n prevNavigable = navigables[n];\n }\n }\n return index;\n};\nexport var getSlideCount = function getSlideCount(spec) {\n var centerOffset = spec.centerMode ? spec.slideWidth * Math.floor(spec.slidesToShow / 2) : 0;\n if (spec.swipeToSlide) {\n var swipedSlide = void 0;\n var slickList = spec.listRef;\n var slides = slickList.querySelectorAll('.slick-slide');\n Array.from(slides).every(function (slide) {\n if (!spec.vertical) {\n if (slide.offsetLeft - centerOffset + getWidth(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n } else {\n if (slide.offsetTop + getHeight(slide) / 2 > spec.swipeLeft * -1) {\n swipedSlide = slide;\n return false;\n }\n }\n\n return true;\n });\n\n if (!swipedSlide) {\n return 0;\n }\n var currentIndex = spec.rtl === true ? spec.slideCount - spec.currentSlide : spec.currentSlide;\n var slidesTraversed = Math.abs(swipedSlide.dataset.index - currentIndex) || 1;\n return slidesTraversed;\n } else {\n return spec.slidesToScroll;\n }\n};\n\nexport var checkSpecKeys = function checkSpecKeys(spec, keysArray) {\n return keysArray.reduce(function (value, key) {\n return value && spec.hasOwnProperty(key);\n }, true) ? null : console.error('Keys Missing:', spec);\n};\n\nexport var getTrackCSS = function getTrackCSS(spec) {\n checkSpecKeys(spec, ['left', 'variableWidth', 'slideCount', 'slidesToShow', 'slideWidth']);\n var trackWidth = void 0,\n trackHeight = void 0;\n var trackChildren = spec.slideCount + 2 * spec.slidesToShow;\n if (!spec.vertical) {\n trackWidth = getTotalSlides(spec) * spec.slideWidth;\n } else {\n trackHeight = trackChildren * spec.slideHeight;\n }\n var style = {\n opacity: 1,\n transition: '',\n WebkitTransition: ''\n };\n if (spec.useTransform) {\n var WebkitTransform = !spec.vertical ? 'translate3d(' + spec.left + 'px, 0px, 0px)' : 'translate3d(0px, ' + spec.left + 'px, 0px)';\n var transform = !spec.vertical ? 'translate3d(' + spec.left + 'px, 0px, 0px)' : 'translate3d(0px, ' + spec.left + 'px, 0px)';\n var msTransform = !spec.vertical ? 'translateX(' + spec.left + 'px)' : 'translateY(' + spec.left + 'px)';\n style = _extends({}, style, {\n WebkitTransform: WebkitTransform,\n transform: transform,\n msTransform: msTransform\n });\n } else {\n if (spec.vertical) {\n style['top'] = spec.left;\n } else {\n style['left'] = spec.left;\n }\n }\n if (spec.fade) style = { opacity: 1 };\n if (trackWidth) style.width = trackWidth + 'px';\n if (trackHeight) style.height = trackHeight + 'px';\n\n // Fallback for IE8\n if (window && !window.addEventListener && window.attachEvent) {\n if (!spec.vertical) {\n style.marginLeft = spec.left + 'px';\n } else {\n style.marginTop = spec.left + 'px';\n }\n }\n\n return style;\n};\nexport var getTrackAnimateCSS = function getTrackAnimateCSS(spec) {\n checkSpecKeys(spec, ['left', 'variableWidth', 'slideCount', 'slidesToShow', 'slideWidth', 'speed', 'cssEase']);\n var style = getTrackCSS(spec);\n // useCSS is true by default so it can be undefined\n if (spec.useTransform) {\n style.WebkitTransition = '-webkit-transform ' + spec.speed + 'ms ' + spec.cssEase;\n style.transition = 'transform ' + spec.speed + 'ms ' + spec.cssEase;\n } else {\n if (spec.vertical) {\n style.transition = 'top ' + spec.speed + 'ms ' + spec.cssEase;\n } else {\n style.transition = 'left ' + spec.speed + 'ms ' + spec.cssEase;\n }\n }\n return style;\n};\nexport var getTrackLeft = function getTrackLeft(spec) {\n if (spec.unslick) {\n return 0;\n }\n\n checkSpecKeys(spec, ['slideIndex', 'trackRef', 'infinite', 'centerMode', 'slideCount', 'slidesToShow', 'slidesToScroll', 'slideWidth', 'listWidth', 'variableWidth', 'slideHeight']);\n\n var slideIndex = spec.slideIndex,\n trackRef = spec.trackRef,\n infinite = spec.infinite,\n centerMode = spec.centerMode,\n slideCount = spec.slideCount,\n slidesToShow = spec.slidesToShow,\n slidesToScroll = spec.slidesToScroll,\n slideWidth = spec.slideWidth,\n listWidth = spec.listWidth,\n variableWidth = spec.variableWidth,\n slideHeight = spec.slideHeight,\n fade = spec.fade,\n vertical = spec.vertical;\n\n\n var slideOffset = 0;\n var targetLeft = void 0;\n var targetSlide = void 0;\n var verticalOffset = 0;\n\n if (fade || spec.slideCount === 1) {\n return 0;\n }\n\n var slidesToOffset = 0;\n if (infinite) {\n slidesToOffset = -getPreClones(spec); // bring active slide to the beginning of visual area\n // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting slidesToScroll children\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = -(slideIndex > slideCount ? slidesToShow - (slideIndex - slideCount) : slideCount % slidesToScroll);\n }\n // shift current slide to center of the frame\n if (centerMode) {\n slidesToOffset += parseInt(slidesToShow / 2);\n }\n } else {\n if (slideCount % slidesToScroll !== 0 && slideIndex + slidesToScroll > slideCount) {\n slidesToOffset = slidesToShow - slideCount % slidesToScroll;\n }\n if (centerMode) {\n slidesToOffset = parseInt(slidesToShow / 2);\n }\n }\n slideOffset = slidesToOffset * slideWidth;\n verticalOffset = slidesToOffset * slideHeight;\n\n if (!vertical) {\n targetLeft = slideIndex * slideWidth * -1 + slideOffset;\n } else {\n targetLeft = slideIndex * slideHeight * -1 + verticalOffset;\n }\n\n if (variableWidth === true) {\n var targetSlideIndex = void 0;\n var trackElem = trackRef;\n targetSlideIndex = slideIndex + getPreClones(spec);\n targetSlide = trackElem && trackElem.childNodes[targetSlideIndex];\n targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0;\n if (centerMode === true) {\n targetSlideIndex = infinite ? slideIndex + getPreClones(spec) : slideIndex;\n targetSlide = trackElem && trackElem.children[targetSlideIndex];\n targetLeft = 0;\n for (var slide = 0; slide < targetSlideIndex; slide++) {\n targetLeft -= trackElem && trackElem.children[slide] && trackElem.children[slide].offsetWidth;\n }\n targetLeft -= parseInt(spec.centerPadding);\n targetLeft += targetSlide && (listWidth - targetSlide.offsetWidth) / 2;\n }\n }\n\n return targetLeft;\n};\n\nexport var getPreClones = function getPreClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n if (spec.variableWidth) {\n return spec.slideCount;\n }\n return spec.slidesToShow + (spec.centerMode ? 1 : 0);\n};\n\nexport var getPostClones = function getPostClones(spec) {\n if (spec.unslick || !spec.infinite) {\n return 0;\n }\n return spec.slideCount;\n};\n\nexport var getTotalSlides = function getTotalSlides(spec) {\n return spec.slideCount === 1 ? 1 : getPreClones(spec) + spec.slideCount + getPostClones(spec);\n};\nexport var siblingDirection = function siblingDirection(spec) {\n if (spec.targetSlide > spec.currentSlide) {\n if (spec.targetSlide > spec.currentSlide + slidesOnRight(spec)) {\n return 'left';\n }\n return 'right';\n } else {\n if (spec.targetSlide < spec.currentSlide - slidesOnLeft(spec)) {\n return 'right';\n }\n return 'left';\n }\n};\n\nexport var slidesOnRight = function slidesOnRight(_ref) {\n var slidesToShow = _ref.slidesToShow,\n centerMode = _ref.centerMode,\n rtl = _ref.rtl,\n centerPadding = _ref.centerPadding;\n\n // returns no of slides on the right of active slide\n if (centerMode) {\n var right = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) right += 1;\n if (rtl && slidesToShow % 2 === 0) right += 1;\n return right;\n }\n if (rtl) {\n return 0;\n }\n return slidesToShow - 1;\n};\n\nexport var slidesOnLeft = function slidesOnLeft(_ref2) {\n var slidesToShow = _ref2.slidesToShow,\n centerMode = _ref2.centerMode,\n rtl = _ref2.rtl,\n centerPadding = _ref2.centerPadding;\n\n // returns no of slides on the left of active slide\n if (centerMode) {\n var left = (slidesToShow - 1) / 2 + 1;\n if (parseInt(centerPadding) > 0) left += 1;\n if (!rtl && slidesToShow % 2 === 0) left += 1;\n return left;\n }\n if (rtl) {\n return slidesToShow - 1;\n }\n return 0;\n};\n\nexport var canUseDOM = function canUseDOM() {\n return !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n};","import _extends from 'babel-runtime/helpers/extends';\nimport classnames from 'classnames';\nimport { cloneElement } from '../../_util/vnode';\nimport { getStyle, getClass } from '../../_util/props-util';\nimport { lazyStartIndex, lazyEndIndex, getPreClones } from './utils/innerSliderUtils';\n\n// given specifications/props for a slide, fetch all the classes that need to be applied to the slide\nvar getSlideClasses = function getSlideClasses(spec) {\n var slickActive = void 0,\n slickCenter = void 0;\n var centerOffset = void 0,\n index = void 0;\n\n if (spec.rtl) {\n index = spec.slideCount - 1 - spec.index;\n } else {\n index = spec.index;\n }\n var slickCloned = index < 0 || index >= spec.slideCount;\n if (spec.centerMode) {\n centerOffset = Math.floor(spec.slidesToShow / 2);\n slickCenter = (index - spec.currentSlide) % spec.slideCount === 0;\n if (index > spec.currentSlide - centerOffset - 1 && index <= spec.currentSlide + centerOffset) {\n slickActive = true;\n }\n } else {\n slickActive = spec.currentSlide <= index && index < spec.currentSlide + spec.slidesToShow;\n }\n var slickCurrent = index === spec.currentSlide;\n return {\n 'slick-slide': true,\n 'slick-active': slickActive,\n 'slick-center': slickCenter,\n 'slick-cloned': slickCloned,\n 'slick-current': slickCurrent // dubious in case of RTL\n };\n};\n\nvar getSlideStyle = function getSlideStyle(spec) {\n var style = {};\n\n if (spec.variableWidth === undefined || spec.variableWidth === false) {\n style.width = spec.slideWidth + (typeof spec.slideWidth === 'number' ? 'px' : '');\n }\n\n if (spec.fade) {\n style.position = 'relative';\n if (spec.vertical) {\n style.top = -spec.index * parseInt(spec.slideHeight) + 'px';\n } else {\n style.left = -spec.index * parseInt(spec.slideWidth) + 'px';\n }\n style.opacity = spec.currentSlide === spec.index ? 1 : 0;\n style.transition = 'opacity ' + spec.speed + 'ms ' + spec.cssEase + ', ' + 'visibility ' + spec.speed + 'ms ' + spec.cssEase;\n style.WebkitTransition = 'opacity ' + spec.speed + 'ms ' + spec.cssEase + ', ' + 'visibility ' + spec.speed + 'ms ' + spec.cssEase;\n }\n\n return style;\n};\n\nvar getKey = function getKey(child, fallbackKey) {\n return child.key || child.key === 0 && '0' || fallbackKey;\n};\n\nvar renderSlides = function renderSlides(spec, children, createElement) {\n var key = void 0;\n var slides = [];\n var preCloneSlides = [];\n var postCloneSlides = [];\n var childrenCount = children.length;\n var startIndex = lazyStartIndex(spec);\n var endIndex = lazyEndIndex(spec);\n\n children.forEach(function (elem, index) {\n var child = void 0;\n var childOnClickOptions = {\n message: 'children',\n index: index,\n slidesToScroll: spec.slidesToScroll,\n currentSlide: spec.currentSlide\n };\n\n // in case of lazyLoad, whether or not we want to fetch the slide\n if (!spec.lazyLoad || spec.lazyLoad && spec.lazyLoadedList.indexOf(index) >= 0) {\n child = elem;\n } else {\n child = createElement('div');\n }\n var childStyle = getSlideStyle(_extends({}, spec, { index: index }));\n var slideClass = getClass(child.context) || '';\n var slideClasses = getSlideClasses(_extends({}, spec, { index: index }));\n // push a cloned element of the desired slide\n slides.push(cloneElement(child, {\n key: 'original' + getKey(child, index),\n attrs: {\n tabIndex: '-1',\n 'data-index': index,\n 'aria-hidden': !slideClasses['slick-active']\n },\n 'class': classnames(slideClasses, slideClass),\n style: _extends({ outline: 'none' }, getStyle(child.context) || {}, childStyle),\n on: {\n click: function click() {\n // child.props && child.props.onClick && child.props.onClick(e)\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }\n }, true));\n\n // if slide needs to be precloned or postcloned\n if (spec.infinite && spec.fade === false) {\n var preCloneNo = childrenCount - index;\n if (preCloneNo <= getPreClones(spec) && childrenCount !== spec.slidesToShow) {\n key = -preCloneNo;\n if (key >= startIndex) {\n child = elem;\n }\n slideClasses = getSlideClasses(_extends({}, spec, { index: key }));\n preCloneSlides.push(cloneElement(child, {\n key: 'precloned' + getKey(child, key),\n 'class': classnames(slideClasses, slideClass),\n attrs: {\n tabIndex: '-1',\n 'data-index': key,\n 'aria-hidden': !slideClasses['slick-active']\n },\n style: _extends({}, getStyle(child.context) || {}, childStyle),\n on: {\n click: function click() {\n // child.props && child.props.onClick && child.props.onClick(e)\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }\n }));\n }\n\n if (childrenCount !== spec.slidesToShow) {\n key = childrenCount + index;\n if (key < endIndex) {\n child = elem;\n }\n slideClasses = getSlideClasses(_extends({}, spec, { index: key }));\n postCloneSlides.push(cloneElement(child, {\n key: 'postcloned' + getKey(child, key),\n attrs: {\n tabIndex: '-1',\n 'data-index': key,\n 'aria-hidden': !slideClasses['slick-active']\n },\n 'class': classnames(slideClasses, slideClass),\n style: _extends({}, getStyle(child.context) || {}, childStyle),\n on: {\n click: function click() {\n // child.props && child.props.onClick && child.props.onClick(e)\n if (spec.focusOnSelect) {\n spec.focusOnSelect(childOnClickOptions);\n }\n }\n }\n }));\n }\n }\n });\n if (spec.rtl) {\n return preCloneSlides.concat(slides, postCloneSlides).reverse();\n } else {\n return preCloneSlides.concat(slides, postCloneSlides);\n }\n};\n\nexport default {\n functional: true,\n render: function render(createElement, context) {\n var h = arguments[0];\n var props = context.props,\n listeners = context.listeners,\n children = context.children,\n data = context.data;\n\n var slides = renderSlides(props, children, createElement);\n var mouseenter = listeners.mouseenter,\n mouseover = listeners.mouseover,\n mouseleave = listeners.mouseleave;\n\n var mouseEvents = { mouseenter: mouseenter, mouseover: mouseover, mouseleave: mouseleave };\n var trackProps = {\n 'class': 'slick-track',\n style: props.trackStyle,\n on: _extends({}, mouseEvents),\n directives: data.directives\n };\n return h(\n 'div',\n trackProps,\n [slides]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport classnames from 'classnames';\nimport { cloneElement } from '../../_util/vnode';\n\nvar getDotCount = function getDotCount(spec) {\n var dots = void 0;\n\n if (spec.infinite) {\n dots = Math.ceil(spec.slideCount / spec.slidesToScroll);\n } else {\n dots = Math.ceil((spec.slideCount - spec.slidesToShow) / spec.slidesToScroll) + 1;\n }\n\n return dots;\n};\n\nexport default {\n functional: true,\n render: function render(createElement, context) {\n var h = arguments[0];\n var props = context.props,\n listeners = context.listeners;\n var slideCount = props.slideCount,\n slidesToScroll = props.slidesToScroll,\n slidesToShow = props.slidesToShow,\n infinite = props.infinite,\n currentSlide = props.currentSlide,\n appendDots = props.appendDots,\n customPaging = props.customPaging,\n clickHandler = props.clickHandler,\n dotsClass = props.dotsClass;\n\n var dotCount = getDotCount({\n slideCount: slideCount,\n slidesToScroll: slidesToScroll,\n slidesToShow: slidesToShow,\n infinite: infinite\n });\n\n // Apply join & split to Array to pre-fill it for IE8\n //\n // Credit: http://stackoverflow.com/a/13735425/1849458\n var mouseenter = listeners.mouseenter,\n mouseover = listeners.mouseover,\n mouseleave = listeners.mouseleave;\n\n var mouseEvents = { mouseenter: mouseenter, mouseover: mouseover, mouseleave: mouseleave };\n var dots = Array.apply(null, Array(dotCount + 1).join('0').split('')).map(function (x, i) {\n var leftBound = i * slidesToScroll;\n var rightBound = i * slidesToScroll + (slidesToScroll - 1);\n var className = classnames({\n 'slick-active': currentSlide >= leftBound && currentSlide <= rightBound\n });\n\n var dotOptions = {\n message: 'dots',\n index: i,\n slidesToScroll: slidesToScroll,\n currentSlide: currentSlide\n };\n function onClick(e) {\n // In Autoplay the focus stays on clicked button even after transition\n // to next slide. That only goes away by click somewhere outside\n if (e) {\n e.preventDefault();\n }\n clickHandler(dotOptions);\n }\n return h(\n 'li',\n { key: i, 'class': className },\n [cloneElement(customPaging({ i: i }), {\n on: {\n click: onClick\n }\n })]\n );\n });\n\n return cloneElement(appendDots({ dots: dots }), {\n 'class': dotsClass,\n on: _extends({}, mouseEvents)\n });\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport { cloneElement } from '../../_util/vnode';\nimport { canGoNext } from './utils/innerSliderUtils';\n\nfunction noop() {}\n\nexport var PrevArrow = {\n functional: true,\n clickHandler: function clickHandler(options, handle, e) {\n if (e) {\n e.preventDefault();\n }\n handle(options, e);\n },\n render: function render(createElement, context) {\n var h = arguments[0];\n var props = context.props;\n var clickHandler = props.clickHandler,\n infinite = props.infinite,\n currentSlide = props.currentSlide,\n slideCount = props.slideCount,\n slidesToShow = props.slidesToShow;\n\n var prevClasses = { 'slick-arrow': true, 'slick-prev': true };\n var prevHandler = function prevHandler(e) {\n if (e) {\n e.preventDefault();\n }\n clickHandler({ message: 'previous' });\n };\n\n if (!infinite && (currentSlide === 0 || slideCount <= slidesToShow)) {\n prevClasses['slick-disabled'] = true;\n prevHandler = noop;\n }\n\n var prevArrowProps = {\n key: '0',\n domProps: {\n 'data-role': 'none'\n },\n 'class': prevClasses,\n style: { display: 'block' },\n on: {\n click: prevHandler\n }\n };\n var customProps = {\n currentSlide: currentSlide,\n slideCount: slideCount\n };\n var prevArrow = void 0;\n\n if (props.prevArrow) {\n prevArrow = cloneElement(props.prevArrow(_extends({}, prevArrowProps, {\n props: customProps\n })), {\n key: '0',\n 'class': prevClasses,\n style: { display: 'block' },\n on: {\n click: prevHandler\n }\n });\n } else {\n prevArrow = h(\n 'button',\n _mergeJSXProps([{ key: '0', attrs: { type: 'button' }\n }, prevArrowProps]),\n [' ', 'Previous']\n );\n }\n\n return prevArrow;\n }\n};\n\nexport var NextArrow = {\n functional: true,\n clickHandler: function clickHandler(options, handle, e) {\n if (e) {\n e.preventDefault();\n }\n handle(options, e);\n },\n render: function render(createElement, context) {\n var h = arguments[0];\n var props = context.props;\n var clickHandler = props.clickHandler,\n currentSlide = props.currentSlide,\n slideCount = props.slideCount;\n\n\n var nextClasses = { 'slick-arrow': true, 'slick-next': true };\n var nextHandler = function nextHandler(e) {\n if (e) {\n e.preventDefault();\n }\n clickHandler({ message: 'next' });\n };\n if (!canGoNext(props)) {\n nextClasses['slick-disabled'] = true;\n nextHandler = noop;\n }\n\n var nextArrowProps = {\n key: '1',\n domProps: {\n 'data-role': 'none'\n },\n 'class': nextClasses,\n style: { display: 'block' },\n on: {\n click: nextHandler\n }\n };\n var customProps = {\n currentSlide: currentSlide,\n slideCount: slideCount\n };\n var nextArrow = void 0;\n\n if (props.nextArrow) {\n nextArrow = cloneElement(props.nextArrow(_extends({}, nextArrowProps, {\n props: customProps\n })), {\n key: '1',\n 'class': nextClasses,\n style: { display: 'block' },\n on: {\n click: nextHandler\n }\n });\n } else {\n nextArrow = h(\n 'button',\n _mergeJSXProps([{ key: '1', attrs: { type: 'button' }\n }, nextArrowProps]),\n [' ', 'Next']\n );\n }\n\n return nextArrow;\n }\n};","import _typeof from 'babel-runtime/helpers/typeof';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport debounce from 'lodash/debounce';\nimport classnames from 'classnames';\nimport Vue from 'vue';\nimport ref from 'vue-ref';\nimport { getStyle, getListeners } from '../../_util/props-util';\nimport BaseMixin from '../../_util/BaseMixin';\nimport defaultProps from './default-props';\nimport initialState from './initial-state';\nimport { getOnDemandLazySlides, extractObject, initializedState, getHeight, canGoNext, slideHandler as _slideHandler, changeSlide as _changeSlide, keyHandler as _keyHandler, swipeStart as _swipeStart, swipeMove as _swipeMove, swipeEnd as _swipeEnd, getPreClones, getPostClones, getTrackLeft, getTrackCSS } from './utils/innerSliderUtils';\nimport Track from './track';\nimport Dots from './dots';\nimport { PrevArrow, NextArrow } from './arrows';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nVue.use(ref, { name: 'ant-ref' });\n\nfunction noop() {}\n\nexport default {\n props: _extends({}, defaultProps),\n mixins: [BaseMixin],\n data: function data() {\n this.preProps = _extends({}, this.$props);\n this.list = null;\n this.track = null;\n this.callbackTimers = [];\n this.clickable = true;\n this.debouncedResize = null;\n return _extends({}, initialState, {\n currentSlide: this.initialSlide,\n slideCount: this.children.length\n });\n },\n\n methods: {\n listRefHandler: function listRefHandler(ref) {\n this.list = ref;\n },\n trackRefHandler: function trackRefHandler(ref) {\n this.track = ref;\n },\n adaptHeight: function adaptHeight() {\n if (this.adaptiveHeight && this.list) {\n var elem = this.list.querySelector('[data-index=\"' + this.currentSlide + '\"]');\n this.list.style.height = getHeight(elem) + 'px';\n }\n },\n onWindowResized: function onWindowResized(setTrackStyle) {\n var _this = this;\n\n if (this.debouncedResize) this.debouncedResize.cancel();\n this.debouncedResize = debounce(function () {\n return _this.resizeWindow(setTrackStyle);\n }, 50);\n this.debouncedResize();\n },\n resizeWindow: function resizeWindow() {\n var _this2 = this;\n\n var setTrackStyle = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\n if (!this.track) return;\n var spec = _extends({\n listRef: this.list,\n trackRef: this.track,\n children: this.children\n }, this.$props, this.$data);\n this.updateState(spec, setTrackStyle, function () {\n if (_this2.autoplay) {\n _this2.handleAutoPlay('update');\n } else {\n _this2.pause('paused');\n }\n });\n // animating state should be cleared while resizing, otherwise autoplay stops working\n this.setState({\n animating: false\n });\n clearTimeout(this.animationEndCallback);\n delete this.animationEndCallback;\n },\n updateState: function updateState(spec, setTrackStyle, callback) {\n var updatedState = initializedState(spec);\n spec = _extends({}, spec, updatedState, { slideIndex: updatedState.currentSlide });\n var targetLeft = getTrackLeft(spec);\n spec = _extends({}, spec, { left: targetLeft });\n var trackStyle = getTrackCSS(spec);\n if (setTrackStyle || this.children.length !== spec.children.length) {\n updatedState['trackStyle'] = trackStyle;\n }\n this.setState(updatedState, callback);\n },\n ssrInit: function ssrInit() {\n var children = this.children;\n if (this.variableWidth) {\n var _trackWidth = 0;\n var _trackLeft = 0;\n var childrenWidths = [];\n var preClones = getPreClones(_extends({}, this.$props, this.$data, {\n slideCount: children.length\n }));\n var postClones = getPostClones(_extends({}, this.$props, this.$data, {\n slideCount: children.length\n }));\n children.forEach(function (child) {\n var childWidth = getStyle(child).width.split('px')[0];\n childrenWidths.push(childWidth);\n _trackWidth += childWidth;\n });\n for (var i = 0; i < preClones; i++) {\n _trackLeft += childrenWidths[childrenWidths.length - 1 - i];\n _trackWidth += childrenWidths[childrenWidths.length - 1 - i];\n }\n for (var _i = 0; _i < postClones; _i++) {\n _trackWidth += childrenWidths[_i];\n }\n for (var _i2 = 0; _i2 < this.currentSlide; _i2++) {\n _trackLeft += childrenWidths[_i2];\n }\n var _trackStyle = {\n width: _trackWidth + 'px',\n left: -_trackLeft + 'px'\n };\n if (this.centerMode) {\n var currentWidth = childrenWidths[this.currentSlide] + 'px';\n _trackStyle.left = 'calc(' + _trackStyle.left + ' + (100% - ' + currentWidth + ') / 2 ) ';\n }\n this.setState({\n trackStyle: _trackStyle\n });\n return;\n }\n var childrenCount = children.length;\n var spec = _extends({}, this.$props, this.$data, { slideCount: childrenCount });\n var slideCount = getPreClones(spec) + getPostClones(spec) + childrenCount;\n var trackWidth = 100 / this.slidesToShow * slideCount;\n var slideWidth = 100 / slideCount;\n var trackLeft = -slideWidth * (getPreClones(spec) + this.currentSlide) * trackWidth / 100;\n if (this.centerMode) {\n trackLeft += (100 - slideWidth * trackWidth / 100) / 2;\n }\n var trackStyle = {\n width: trackWidth + '%',\n left: trackLeft + '%'\n };\n this.setState({\n slideWidth: slideWidth + '%',\n trackStyle: trackStyle\n });\n },\n checkImagesLoad: function checkImagesLoad() {\n var _this3 = this;\n\n var images = document.querySelectorAll('.slick-slide img');\n var imagesCount = images.length;\n var loadedCount = 0;\n Array.prototype.forEach.call(images, function (image) {\n var handler = function handler() {\n return ++loadedCount && loadedCount >= imagesCount && _this3.onWindowResized();\n };\n if (!image.onclick) {\n image.onclick = function () {\n return image.parentNode.focus();\n };\n } else {\n var prevClickHandler = image.onclick;\n image.onclick = function () {\n prevClickHandler();\n image.parentNode.focus();\n };\n }\n if (!image.onload) {\n if (_this3.$props.lazyLoad) {\n image.onload = function () {\n _this3.adaptHeight();\n _this3.callbackTimers.push(setTimeout(_this3.onWindowResized, _this3.speed));\n };\n } else {\n image.onload = handler;\n image.onerror = function () {\n handler();\n _this3.$emit('lazyLoadError');\n };\n }\n }\n });\n },\n progressiveLazyLoad: function progressiveLazyLoad() {\n var slidesToLoad = [];\n var spec = _extends({}, this.$props, this.$data);\n for (var index = this.currentSlide; index < this.slideCount + getPostClones(spec); index++) {\n if (this.lazyLoadedList.indexOf(index) < 0) {\n slidesToLoad.push(index);\n break;\n }\n }\n for (var _index = this.currentSlide - 1; _index >= -getPreClones(spec); _index--) {\n if (this.lazyLoadedList.indexOf(_index) < 0) {\n slidesToLoad.push(_index);\n break;\n }\n }\n if (slidesToLoad.length > 0) {\n this.setState(function (state) {\n return {\n lazyLoadedList: state.lazyLoadedList.concat(slidesToLoad)\n };\n });\n this.$emit('lazyLoad', slidesToLoad);\n } else {\n if (this.lazyLoadTimer) {\n clearInterval(this.lazyLoadTimer);\n delete this.lazyLoadTimer;\n }\n }\n },\n slideHandler: function slideHandler(index) {\n var _this4 = this;\n\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var _$props = this.$props,\n asNavFor = _$props.asNavFor,\n currentSlide = _$props.currentSlide,\n beforeChange = _$props.beforeChange,\n speed = _$props.speed,\n afterChange = _$props.afterChange;\n\n var _slideHandler2 = _slideHandler(_extends({\n index: index\n }, this.$props, this.$data, {\n trackRef: this.track,\n useCSS: this.useCSS && !dontAnimate\n })),\n state = _slideHandler2.state,\n nextState = _slideHandler2.nextState;\n\n if (!state) return;\n beforeChange && beforeChange(currentSlide, state.currentSlide);\n var slidesToLoad = state.lazyLoadedList.filter(function (value) {\n return _this4.lazyLoadedList.indexOf(value) < 0;\n });\n if (getListeners(this).lazyLoad && slidesToLoad.length > 0) {\n this.$emit('lazyLoad', slidesToLoad);\n }\n this.setState(state, function () {\n asNavFor && asNavFor.innerSlider.currentSlide !== currentSlide && asNavFor.innerSlider.slideHandler(index);\n if (!nextState) return;\n _this4.animationEndCallback = setTimeout(function () {\n var animating = nextState.animating,\n firstBatch = _objectWithoutProperties(nextState, ['animating']);\n\n _this4.setState(firstBatch, function () {\n _this4.callbackTimers.push(setTimeout(function () {\n return _this4.setState({ animating: animating });\n }, 10));\n afterChange && afterChange(state.currentSlide);\n delete _this4.animationEndCallback;\n });\n }, speed);\n });\n },\n changeSlide: function changeSlide(options) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var spec = _extends({}, this.$props, this.$data);\n var targetSlide = _changeSlide(spec, options);\n if (targetSlide !== 0 && !targetSlide) return;\n if (dontAnimate === true) {\n this.slideHandler(targetSlide, dontAnimate);\n } else {\n this.slideHandler(targetSlide);\n }\n },\n clickHandler: function clickHandler(e) {\n if (this.clickable === false) {\n e.stopPropagation();\n e.preventDefault();\n }\n this.clickable = true;\n },\n keyHandler: function keyHandler(e) {\n var dir = _keyHandler(e, this.accessibility, this.rtl);\n dir !== '' && this.changeSlide({ message: dir });\n },\n selectHandler: function selectHandler(options) {\n this.changeSlide(options);\n },\n disableBodyScroll: function disableBodyScroll() {\n var preventDefault = function preventDefault(e) {\n e = e || window.event;\n if (e.preventDefault) e.preventDefault();\n e.returnValue = false;\n };\n window.ontouchmove = preventDefault;\n },\n enableBodyScroll: function enableBodyScroll() {\n window.ontouchmove = null;\n },\n swipeStart: function swipeStart(e) {\n if (this.verticalSwiping) {\n this.disableBodyScroll();\n }\n var state = _swipeStart(e, this.swipe, this.draggable);\n state !== '' && this.setState(state);\n },\n swipeMove: function swipeMove(e) {\n var state = _swipeMove(e, _extends({}, this.$props, this.$data, {\n trackRef: this.track,\n listRef: this.list,\n slideIndex: this.currentSlide\n }));\n if (!state) return;\n if (state['swiping']) {\n this.clickable = false;\n }\n this.setState(state);\n },\n swipeEnd: function swipeEnd(e) {\n var state = _swipeEnd(e, _extends({}, this.$props, this.$data, {\n trackRef: this.track,\n listRef: this.list,\n slideIndex: this.currentSlide\n }));\n if (!state) return;\n var triggerSlideHandler = state['triggerSlideHandler'];\n delete state['triggerSlideHandler'];\n this.setState(state);\n if (triggerSlideHandler === undefined) return;\n this.slideHandler(triggerSlideHandler);\n if (this.$props.verticalSwiping) {\n this.enableBodyScroll();\n }\n },\n slickPrev: function slickPrev() {\n var _this5 = this;\n\n // this and fellow methods are wrapped in setTimeout\n // to make sure initialize setState has happened before\n // any of such methods are called\n this.callbackTimers.push(setTimeout(function () {\n return _this5.changeSlide({ message: 'previous' });\n }, 0));\n },\n slickNext: function slickNext() {\n var _this6 = this;\n\n this.callbackTimers.push(setTimeout(function () {\n return _this6.changeSlide({ message: 'next' });\n }, 0));\n },\n slickGoTo: function slickGoTo(slide) {\n var _this7 = this;\n\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n slide = Number(slide);\n if (isNaN(slide)) return '';\n this.callbackTimers.push(setTimeout(function () {\n return _this7.changeSlide({\n message: 'index',\n index: slide,\n currentSlide: _this7.currentSlide\n }, dontAnimate);\n }, 0));\n },\n play: function play() {\n var nextIndex = void 0;\n if (this.rtl) {\n nextIndex = this.currentSlide - this.slidesToScroll;\n } else {\n if (canGoNext(_extends({}, this.$props, this.$data))) {\n nextIndex = this.currentSlide + this.slidesToScroll;\n } else {\n return false;\n }\n }\n\n this.slideHandler(nextIndex);\n },\n handleAutoPlay: function handleAutoPlay(playType) {\n if (this.autoplayTimer) {\n clearInterval(this.autoplayTimer);\n }\n var autoplaying = this.autoplaying;\n if (playType === 'update') {\n if (autoplaying === 'hovered' || autoplaying === 'focused' || autoplaying === 'paused') {\n return;\n }\n } else if (playType === 'leave') {\n if (autoplaying === 'paused' || autoplaying === 'focused') {\n return;\n }\n } else if (playType === 'blur') {\n if (autoplaying === 'paused' || autoplaying === 'hovered') {\n return;\n }\n }\n this.autoplayTimer = setInterval(this.play, this.autoplaySpeed + 50);\n this.setState({ autoplaying: 'playing' });\n },\n pause: function pause(pauseType) {\n if (this.autoplayTimer) {\n clearInterval(this.autoplayTimer);\n this.autoplayTimer = null;\n }\n var autoplaying = this.autoplaying;\n if (pauseType === 'paused') {\n this.setState({ autoplaying: 'paused' });\n } else if (pauseType === 'focused') {\n if (autoplaying === 'hovered' || autoplaying === 'playing') {\n this.setState({ autoplaying: 'focused' });\n }\n } else {\n // pauseType is 'hovered'\n if (autoplaying === 'playing') {\n this.setState({ autoplaying: 'hovered' });\n }\n }\n },\n onDotsOver: function onDotsOver() {\n this.autoplay && this.pause('hovered');\n },\n onDotsLeave: function onDotsLeave() {\n this.autoplay && this.autoplaying === 'hovered' && this.handleAutoPlay('leave');\n },\n onTrackOver: function onTrackOver() {\n this.autoplay && this.pause('hovered');\n },\n onTrackLeave: function onTrackLeave() {\n this.autoplay && this.autoplaying === 'hovered' && this.handleAutoPlay('leave');\n },\n onSlideFocus: function onSlideFocus() {\n this.autoplay && this.pause('focused');\n },\n onSlideBlur: function onSlideBlur() {\n this.autoplay && this.autoplaying === 'focused' && this.handleAutoPlay('blur');\n },\n customPaging: function customPaging(_ref) {\n var i = _ref.i;\n var h = this.$createElement;\n\n return h('button', [i + 1]);\n },\n appendDots: function appendDots(_ref2) {\n var dots = _ref2.dots;\n var h = this.$createElement;\n\n return h(\n 'ul',\n { style: { display: 'block' } },\n [dots]\n );\n }\n },\n beforeMount: function beforeMount() {\n this.ssrInit();\n this.$emit('init');\n if (this.lazyLoad) {\n var slidesToLoad = getOnDemandLazySlides(_extends({}, this.$props, this.$data));\n if (slidesToLoad.length > 0) {\n this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n this.$emit('lazyLoad', slidesToLoad);\n }\n }\n },\n mounted: function mounted() {\n var _this8 = this;\n\n this.$nextTick(function () {\n var spec = _extends({\n listRef: _this8.list,\n trackRef: _this8.track,\n children: _this8.children\n }, _this8.$props);\n _this8.updateState(spec, true, function () {\n _this8.adaptHeight();\n _this8.autoplay && _this8.handleAutoPlay('update');\n });\n if (_this8.lazyLoad === 'progressive') {\n _this8.lazyLoadTimer = setInterval(_this8.progressiveLazyLoad, 1000);\n }\n _this8.ro = new ResizeObserver(function () {\n if (_this8.animating) {\n _this8.onWindowResized(false); // don't set trackStyle hence don't break animation\n _this8.callbackTimers.push(setTimeout(function () {\n return _this8.onWindowResized();\n }, _this8.speed));\n } else {\n _this8.onWindowResized();\n }\n });\n _this8.ro.observe(_this8.list);\n Array.prototype.forEach.call(document.querySelectorAll('.slick-slide'), function (slide) {\n slide.onfocus = _this8.$props.pauseOnFocus ? _this8.onSlideFocus : null;\n slide.onblur = _this8.$props.pauseOnFocus ? _this8.onSlideBlur : null;\n });\n // To support server-side rendering\n if (!window) {\n return;\n }\n if (window.addEventListener) {\n window.addEventListener('resize', _this8.onWindowResized);\n } else {\n window.attachEvent('onresize', _this8.onWindowResized);\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.animationEndCallback) {\n clearTimeout(this.animationEndCallback);\n }\n if (this.lazyLoadTimer) {\n clearInterval(this.lazyLoadTimer);\n }\n if (this.callbackTimers.length) {\n this.callbackTimers.forEach(function (timer) {\n return clearTimeout(timer);\n });\n this.callbackTimers = [];\n }\n if (window.addEventListener) {\n window.removeEventListener('resize', this.onWindowResized);\n } else {\n window.detachEvent('onresize', this.onWindowResized);\n }\n if (this.autoplayTimer) {\n clearInterval(this.autoplayTimer);\n }\n },\n updated: function updated() {\n this.checkImagesLoad();\n this.$emit('reInit');\n if (this.lazyLoad) {\n var slidesToLoad = getOnDemandLazySlides(_extends({}, this.$props, this.$data));\n if (slidesToLoad.length > 0) {\n this.setState(function (prevState) {\n return {\n lazyLoadedList: prevState.lazyLoadedList.concat(slidesToLoad)\n };\n });\n this.$emit('lazyLoad');\n }\n }\n // if (this.props.onLazyLoad) {\n // this.props.onLazyLoad([leftMostSlide])\n // }\n this.adaptHeight();\n },\n\n watch: {\n __propsSymbol__: function __propsSymbol__() {\n var _this9 = this;\n\n var nextProps = this.$props;\n var spec = _extends({\n listRef: this.list,\n trackRef: this.track\n }, nextProps, this.$data);\n var setTrackStyle = false;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Object.keys(this.preProps)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n\n if (!nextProps.hasOwnProperty(key)) {\n setTrackStyle = true;\n break;\n }\n if (_typeof(nextProps[key]) === 'object' || typeof nextProps[key] === 'function' || _typeof(nextProps[key]) === 'symbol') {\n continue;\n }\n if (nextProps[key] !== this.preProps[key]) {\n setTrackStyle = true;\n break;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n this.updateState(spec, setTrackStyle, function () {\n if (_this9.currentSlide >= nextProps.children.length) {\n _this9.changeSlide({\n message: 'index',\n index: nextProps.children.length - nextProps.slidesToShow,\n currentSlide: _this9.currentSlide\n });\n }\n if (nextProps.autoplay) {\n _this9.handleAutoPlay('update');\n } else {\n _this9.pause('paused');\n }\n });\n this.preProps = _extends({}, nextProps);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var className = classnames('slick-slider', {\n 'slick-vertical': this.vertical,\n 'slick-initialized': true\n });\n var spec = _extends({}, this.$props, this.$data);\n var trackProps = extractObject(spec, ['fade', 'cssEase', 'speed', 'infinite', 'centerMode', 'focusOnSelect', 'currentSlide', 'lazyLoad', 'lazyLoadedList', 'rtl', 'slideWidth', 'slideHeight', 'listHeight', 'vertical', 'slidesToShow', 'slidesToScroll', 'slideCount', 'trackStyle', 'variableWidth', 'unslick', 'centerPadding']);\n var pauseOnHover = this.$props.pauseOnHover;\n\n trackProps = {\n props: _extends({}, trackProps, {\n focusOnSelect: this.focusOnSelect ? this.selectHandler : null\n }),\n directives: [{\n name: 'ant-ref',\n value: this.trackRefHandler\n }],\n on: {\n mouseenter: pauseOnHover ? this.onTrackOver : noop,\n mouseleave: pauseOnHover ? this.onTrackLeave : noop,\n mouseover: pauseOnHover ? this.onTrackOver : noop\n }\n };\n\n var dots = void 0;\n if (this.dots === true && this.slideCount >= this.slidesToShow) {\n var dotProps = extractObject(spec, ['dotsClass', 'slideCount', 'slidesToShow', 'currentSlide', 'slidesToScroll', 'clickHandler', 'children', 'infinite', 'appendDots']);\n dotProps.customPaging = this.customPaging;\n dotProps.appendDots = this.appendDots;\n var _$scopedSlots = this.$scopedSlots,\n customPaging = _$scopedSlots.customPaging,\n appendDots = _$scopedSlots.appendDots;\n\n if (customPaging) {\n dotProps.customPaging = customPaging;\n }\n if (appendDots) {\n dotProps.appendDots = appendDots;\n }\n var pauseOnDotsHover = this.$props.pauseOnDotsHover;\n\n dotProps = {\n props: _extends({}, dotProps, {\n clickHandler: this.changeSlide\n }),\n on: {\n mouseenter: pauseOnDotsHover ? this.onDotsLeave : noop,\n mouseover: pauseOnDotsHover ? this.onDotsOver : noop,\n mouseleave: pauseOnDotsHover ? this.onDotsLeave : noop\n }\n };\n dots = h(Dots, dotProps);\n }\n\n var prevArrow = void 0,\n nextArrow = void 0;\n var arrowProps = extractObject(spec, ['infinite', 'centerMode', 'currentSlide', 'slideCount', 'slidesToShow']);\n arrowProps.clickHandler = this.changeSlide;\n var _$scopedSlots2 = this.$scopedSlots,\n prevArrowCustom = _$scopedSlots2.prevArrow,\n nextArrowCustom = _$scopedSlots2.nextArrow;\n\n if (prevArrowCustom) {\n arrowProps.prevArrow = prevArrowCustom;\n }\n if (nextArrowCustom) {\n arrowProps.nextArrow = nextArrowCustom;\n }\n if (this.arrows) {\n prevArrow = h(PrevArrow, { props: arrowProps });\n nextArrow = h(NextArrow, { props: arrowProps });\n }\n var verticalHeightStyle = null;\n\n if (this.vertical) {\n verticalHeightStyle = {\n height: typeof this.listHeight === 'number' ? this.listHeight + 'px' : this.listHeight\n };\n }\n\n var centerPaddingStyle = null;\n\n if (this.vertical === false) {\n if (this.centerMode === true) {\n centerPaddingStyle = {\n padding: '0px ' + this.centerPadding\n };\n }\n } else {\n if (this.centerMode === true) {\n centerPaddingStyle = {\n padding: this.centerPadding + ' 0px'\n };\n }\n }\n\n var listStyle = _extends({}, verticalHeightStyle, centerPaddingStyle);\n var touchMove = this.touchMove;\n var listProps = {\n directives: [{\n name: 'ant-ref',\n value: this.listRefHandler\n }],\n 'class': 'slick-list',\n style: listStyle,\n on: {\n click: this.clickHandler,\n mousedown: touchMove ? this.swipeStart : noop,\n mousemove: this.dragging && touchMove ? this.swipeMove : noop,\n mouseup: touchMove ? this.swipeEnd : noop,\n mouseleave: this.dragging && touchMove ? this.swipeEnd : noop,\n touchstart: touchMove ? this.swipeStart : noop,\n touchmove: this.dragging && touchMove ? this.swipeMove : noop,\n touchend: touchMove ? this.swipeEnd : noop,\n touchcancel: this.dragging && touchMove ? this.swipeEnd : noop,\n keydown: this.accessibility ? this.keyHandler : noop\n }\n };\n\n var innerSliderProps = {\n 'class': className,\n props: {\n dir: 'ltr'\n }\n };\n\n if (this.unslick) {\n listProps = {\n 'class': 'slick-list',\n directives: [{\n name: 'ant-ref',\n value: this.listRefHandler\n }]\n };\n innerSliderProps = { 'class': className };\n }\n return h(\n 'div',\n innerSliderProps,\n [!this.unslick ? prevArrow : '', h(\n 'div',\n listProps,\n [h(\n Track,\n trackProps,\n [this.children]\n )]\n ), !this.unslick ? nextArrow : '', !this.unslick ? dots : '']\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport json2mq from 'json2mq';\nimport Vue from 'vue';\nimport ref from 'vue-ref';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { cloneElement } from '../../_util/vnode';\nimport { getStyle, getListeners } from '../../_util/props-util';\nimport InnerSlider from './inner-slider';\nimport defaultProps from './default-props';\nimport { canUseDOM } from './utils/innerSliderUtils';\nvar enquire = canUseDOM() && require('enquire.js');\n\nVue.use(ref, { name: 'ant-ref' });\n\nexport default {\n props: _extends({}, defaultProps),\n mixins: [BaseMixin],\n data: function data() {\n this._responsiveMediaHandlers = [];\n return {\n breakpoint: null\n };\n },\n\n methods: {\n innerSliderRefHandler: function innerSliderRefHandler(ref) {\n this.innerSlider = ref;\n },\n media: function media(query, handler) {\n // javascript handler for css media query\n enquire.register(query, handler);\n this._responsiveMediaHandlers.push({ query: query, handler: handler });\n },\n slickPrev: function slickPrev() {\n this.innerSlider.slickPrev();\n },\n slickNext: function slickNext() {\n this.innerSlider.slickNext();\n },\n slickGoTo: function slickGoTo(slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n this.innerSlider.slickGoTo(slide, dontAnimate);\n },\n slickPause: function slickPause() {\n this.innerSlider.pause('paused');\n },\n slickPlay: function slickPlay() {\n this.innerSlider.handleAutoPlay('play');\n }\n },\n // handles responsive breakpoints\n beforeMount: function beforeMount() {\n var _this = this;\n\n // performance monitoring\n // if (process.env.NODE_ENV !== 'production') {\n // const { whyDidYouUpdate } = require('why-did-you-update')\n // whyDidYouUpdate(React)\n // }\n if (this.responsive) {\n var breakpoints = this.responsive.map(function (breakpt) {\n return breakpt.breakpoint;\n });\n // sort them in increasing order of their numerical value\n breakpoints.sort(function (x, y) {\n return x - y;\n });\n\n breakpoints.forEach(function (breakpoint, index) {\n // media query for each breakpoint\n var bQuery = void 0;\n if (index === 0) {\n bQuery = json2mq({ minWidth: 0, maxWidth: breakpoint });\n } else {\n bQuery = json2mq({\n minWidth: breakpoints[index - 1] + 1,\n maxWidth: breakpoint\n });\n }\n // when not using server side rendering\n canUseDOM() && _this.media(bQuery, function () {\n _this.setState({ breakpoint: breakpoint });\n });\n });\n\n // Register media query for full screen. Need to support resize from small to large\n // convert javascript object to media query string\n var query = json2mq({ minWidth: breakpoints.slice(-1)[0] });\n\n canUseDOM() && this.media(query, function () {\n _this.setState({ breakpoint: null });\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n this._responsiveMediaHandlers.forEach(function (obj) {\n enquire.unregister(obj.query, obj.handler);\n });\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n\n var settings = void 0;\n var newProps = void 0;\n if (this.breakpoint) {\n newProps = this.responsive.filter(function (resp) {\n return resp.breakpoint === _this2.breakpoint;\n });\n settings = newProps[0].settings === 'unslick' ? 'unslick' : _extends({}, this.$props, newProps[0].settings);\n } else {\n settings = _extends({}, this.$props);\n }\n\n // force scrolling by one if centerMode is on\n if (settings.centerMode) {\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== 'production') {\n console.warn('slidesToScroll should be equal to 1 in centerMode, you are using ' + settings.slidesToScroll);\n }\n settings.slidesToScroll = 1;\n }\n // force showing one slide and scrolling by one if the fade mode is on\n if (settings.fade) {\n if (settings.slidesToShow > 1 && process.env.NODE_ENV !== 'production') {\n console.warn('slidesToShow should be equal to 1 when fade is true, you\\'re using ' + settings.slidesToShow);\n }\n if (settings.slidesToScroll > 1 && process.env.NODE_ENV !== 'production') {\n console.warn('slidesToScroll should be equal to 1 when fade is true, you\\'re using ' + settings.slidesToScroll);\n }\n settings.slidesToShow = 1;\n settings.slidesToScroll = 1;\n }\n\n // makes sure that children is an array, even when there is only 1 child\n var children = this.$slots['default'] || [];\n\n // Children may contain false or null, so we should filter them\n // children may also contain string filled with spaces (in certain cases where we use jsx strings)\n children = children.filter(function (child) {\n if (typeof child === 'string') {\n return !!child.trim();\n }\n return !!child;\n });\n\n // rows and slidesPerRow logic is handled here\n if (settings.variableWidth && (settings.rows > 1 || settings.slidesPerRow > 1)) {\n console.warn('variableWidth is not supported in case of rows > 1 or slidesPerRow > 1');\n settings.variableWidth = false;\n }\n var newChildren = [];\n var currentWidth = null;\n for (var i = 0; i < children.length; i += settings.rows * settings.slidesPerRow) {\n var newSlide = [];\n for (var j = i; j < i + settings.rows * settings.slidesPerRow; j += settings.slidesPerRow) {\n var row = [];\n for (var k = j; k < j + settings.slidesPerRow; k += 1) {\n if (settings.variableWidth && getStyle(children[k])) {\n currentWidth = getStyle(children[k]).width;\n }\n if (k >= children.length) break;\n row.push(cloneElement(children[k], {\n key: 100 * i + 10 * j + k,\n attrs: {\n tabIndex: -1\n },\n style: {\n width: 100 / settings.slidesPerRow + '%',\n display: 'inline-block'\n }\n }));\n }\n newSlide.push(h(\n 'div',\n { key: 10 * i + j },\n [row]\n ));\n }\n if (settings.variableWidth) {\n newChildren.push(h(\n 'div',\n { key: i, style: { width: currentWidth } },\n [newSlide]\n ));\n } else {\n newChildren.push(h(\n 'div',\n { key: i },\n [newSlide]\n ));\n }\n }\n\n if (settings === 'unslick') {\n var className = 'regular slider ' + (this.className || '');\n return h(\n 'div',\n { 'class': className },\n [newChildren]\n );\n } else if (newChildren.length <= settings.slidesToShow) {\n settings.unslick = true;\n }\n var sliderProps = {\n props: _extends({}, settings, {\n children: newChildren,\n __propsSymbol__: Symbol()\n }),\n on: getListeners(this),\n directives: [{\n name: 'ant-ref',\n value: this.innerSliderRefHandler\n }],\n scopedSlots: this.$scopedSlots\n };\n return h(InnerSlider, sliderProps);\n }\n};","// base react-slick 0.23.2\nimport Slider from './slider';\n\nexport default Slider;","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","module.exports = false;\n","var now = require('performance-now')\n , root = typeof window === 'undefined' ? global : window\n , vendors = ['moz', 'webkit']\n , suffix = 'AnimationFrame'\n , raf = root['request' + suffix]\n , caf = root['cancel' + suffix] || root['cancelRequest' + suffix]\n\nfor(var i = 0; !raf && i < vendors.length; i++) {\n raf = root[vendors[i] + 'Request' + suffix]\n caf = root[vendors[i] + 'Cancel' + suffix]\n || root[vendors[i] + 'CancelRequest' + suffix]\n}\n\n// Some versions of FF have rAF but not cAF\nif(!raf || !caf) {\n var last = 0\n , id = 0\n , queue = []\n , frameDuration = 1000 / 60\n\n raf = function(callback) {\n if(queue.length === 0) {\n var _now = now()\n , next = Math.max(0, frameDuration - (_now - last))\n last = next + _now\n setTimeout(function() {\n var cp = queue.slice(0)\n // Clear queue here to prevent\n // callbacks from appending listeners\n // to the current frame's queue\n queue.length = 0\n for(var i = 0; i < cp.length; i++) {\n if(!cp[i].cancelled) {\n try{\n cp[i].callback(last)\n } catch(e) {\n setTimeout(function() { throw e }, 0)\n }\n }\n }\n }, Math.round(next))\n }\n queue.push({\n handle: ++id,\n callback: callback,\n cancelled: false\n })\n return id\n }\n\n caf = function(handle) {\n for(var i = 0; i < queue.length; i++) {\n if(queue[i].handle === handle) {\n queue[i].cancelled = true\n }\n }\n }\n}\n\nmodule.exports = function(fn) {\n // Wrap in a new function to prevent\n // `cancel` potentially being assigned\n // to the native rAF function\n return raf.call(root, fn)\n}\nmodule.exports.cancel = function() {\n caf.apply(root, arguments)\n}\nmodule.exports.polyfill = function(object) {\n if (!object) {\n object = root;\n }\n object.requestAnimationFrame = raf\n object.cancelAnimationFrame = caf\n}\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports['default'] = {\n // Options.jsx\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页'\n};","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","var START_EVENT_NAME_MAP = {\n transitionstart: {\n transition: 'transitionstart',\n WebkitTransition: 'webkitTransitionStart',\n MozTransition: 'mozTransitionStart',\n OTransition: 'oTransitionStart',\n msTransition: 'MSTransitionStart'\n },\n\n animationstart: {\n animation: 'animationstart',\n WebkitAnimation: 'webkitAnimationStart',\n MozAnimation: 'mozAnimationStart',\n OAnimation: 'oAnimationStart',\n msAnimation: 'MSAnimationStart'\n }\n};\n\nvar END_EVENT_NAME_MAP = {\n transitionend: {\n transition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'mozTransitionEnd',\n OTransition: 'oTransitionEnd',\n msTransition: 'MSTransitionEnd'\n },\n\n animationend: {\n animation: 'animationend',\n WebkitAnimation: 'webkitAnimationEnd',\n MozAnimation: 'mozAnimationEnd',\n OAnimation: 'oAnimationEnd',\n msAnimation: 'MSAnimationEnd'\n }\n};\n\nvar startEvents = [];\nvar endEvents = [];\n\nfunction detectEvents() {\n var testEl = document.createElement('div');\n var style = testEl.style;\n\n if (!('AnimationEvent' in window)) {\n delete START_EVENT_NAME_MAP.animationstart.animation;\n delete END_EVENT_NAME_MAP.animationend.animation;\n }\n\n if (!('TransitionEvent' in window)) {\n delete START_EVENT_NAME_MAP.transitionstart.transition;\n delete END_EVENT_NAME_MAP.transitionend.transition;\n }\n\n function process(EVENT_NAME_MAP, events) {\n for (var baseEventName in EVENT_NAME_MAP) {\n if (EVENT_NAME_MAP.hasOwnProperty(baseEventName)) {\n var baseEvents = EVENT_NAME_MAP[baseEventName];\n for (var styleName in baseEvents) {\n if (styleName in style) {\n events.push(baseEvents[styleName]);\n break;\n }\n }\n }\n }\n }\n\n process(START_EVENT_NAME_MAP, startEvents);\n process(END_EVENT_NAME_MAP, endEvents);\n}\n\nif (typeof window !== 'undefined' && typeof document !== 'undefined') {\n detectEvents();\n}\n\nfunction addEventListener(node, eventName, eventListener) {\n node.addEventListener(eventName, eventListener, false);\n}\n\nfunction removeEventListener(node, eventName, eventListener) {\n node.removeEventListener(eventName, eventListener, false);\n}\n\nvar TransitionEvents = {\n // Start events\n startEvents: startEvents,\n\n addStartEventListener: function addStartEventListener(node, eventListener) {\n if (startEvents.length === 0) {\n window.setTimeout(eventListener, 0);\n return;\n }\n startEvents.forEach(function (startEvent) {\n addEventListener(node, startEvent, eventListener);\n });\n },\n removeStartEventListener: function removeStartEventListener(node, eventListener) {\n if (startEvents.length === 0) {\n return;\n }\n startEvents.forEach(function (startEvent) {\n removeEventListener(node, startEvent, eventListener);\n });\n },\n\n\n // End events\n endEvents: endEvents,\n\n addEndEventListener: function addEndEventListener(node, eventListener) {\n if (endEvents.length === 0) {\n window.setTimeout(eventListener, 0);\n return;\n }\n endEvents.forEach(function (endEvent) {\n addEventListener(node, endEvent, eventListener);\n });\n },\n removeEndEventListener: function removeEndEventListener(node, eventListener) {\n if (endEvents.length === 0) {\n return;\n }\n endEvents.forEach(function (endEvent) {\n removeEventListener(node, endEvent, eventListener);\n });\n }\n};\n\nexport default TransitionEvents;","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var global = require('../internals/global');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar classof = require('../internals/classof-raw');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getInternalState = require('../internals/internal-state').get;\n\nvar RegExpPrototype = RegExp.prototype;\nvar TypeError = global.TypeError;\n\n// `RegExp.prototype.dotAll` getter\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.dotall\nif (DESCRIPTORS && UNSUPPORTED_DOT_ALL) {\n defineProperty(RegExpPrototype, 'dotAll', {\n configurable: true,\n get: function () {\n if (this === RegExpPrototype) return undefined;\n // We can't use InternalStateModule.getterFor because\n // we don't add metadata for regexps created by a literal.\n if (classof(this) === 'RegExp') {\n return !!getInternalState(this).dotAll;\n }\n throw TypeError('Incompatible receiver, RegExp required');\n }\n });\n}\n","var call = Function.prototype.call;\n\nmodule.exports = call.bind ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(\n '_'\n ),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse: /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.yAxisConfig = exports.xAxisConfig = void 0;\nvar xAxisConfig = {\n /**\n * @description Axis name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Whether to display this axis\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis position\n * @type {String}\n * @default position = 'bottom'\n * @example position = 'bottom' | 'top'\n */\n position: 'bottom',\n\n /**\n * @description Name gap\n * @type {Number}\n * @default nameGap = 15\n */\n nameGap: 15,\n\n /**\n * @description Name location\n * @type {String}\n * @default nameLocation = 'end'\n * @example nameLocation = 'end' | 'center' | 'start'\n */\n nameLocation: 'end',\n\n /**\n * @description Name default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n nameTextStyle: {\n fill: '#333',\n fontSize: 10\n },\n\n /**\n * @description Axis min value\n * @type {String|Number}\n * @default min = '20%'\n * @example min = '20%' | 0\n */\n min: '20%',\n\n /**\n * @description Axis max value\n * @type {String|Number}\n * @default max = '20%'\n * @example max = '20%' | 0\n */\n max: '20%',\n\n /**\n * @description Axis value interval\n * @type {Number}\n * @default interval = null\n * @example interval = 100\n */\n interval: null,\n\n /**\n * @description Min interval\n * @type {Number}\n * @default minInterval = null\n * @example minInterval = 1\n */\n minInterval: null,\n\n /**\n * @description Max interval\n * @type {Number}\n * @default maxInterval = null\n * @example maxInterval = 100\n */\n maxInterval: null,\n\n /**\n * @description Boundary gap\n * @type {Boolean}\n * @default boundaryGap = null\n * @example boundaryGap = true\n */\n boundaryGap: null,\n\n /**\n * @description Axis split number\n * @type {Number}\n * @default splitNumber = 5\n */\n splitNumber: 5,\n\n /**\n * @description Axis line configuration\n * @type {Object}\n */\n axisLine: {\n /**\n * @description Whether to display axis line\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#333',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis tick configuration\n * @type {Object}\n */\n axisTick: {\n /**\n * @description Whether to display axis tick\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis tick default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#333',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis label configuration\n * @type {Object}\n */\n axisLabel: {\n /**\n * @description Whether to display axis label\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}件'\n * @example formatter = (dataItem) => (dataItem.value)\n */\n formatter: null,\n\n /**\n * @description Axis label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: '#333',\n fontSize: 10,\n rotate: 0\n }\n },\n\n /**\n * @description Axis split line configuration\n * @type {Object}\n */\n splitLine: {\n /**\n * @description Whether to display axis split line\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Axis split line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#d4d4d4',\n lineWidth: 1\n }\n },\n\n /**\n * @description X axis render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = -20\n */\n rLevel: -20,\n\n /**\n * @description X axis animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description X axis animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.xAxisConfig = xAxisConfig;\nvar yAxisConfig = {\n /**\n * @description Axis name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Whether to display this axis\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis position\n * @type {String}\n * @default position = 'left'\n * @example position = 'left' | 'right'\n */\n position: 'left',\n\n /**\n * @description Name gap\n * @type {Number}\n * @default nameGap = 15\n */\n nameGap: 15,\n\n /**\n * @description Name location\n * @type {String}\n * @default nameLocation = 'end'\n * @example nameLocation = 'end' | 'center' | 'start'\n */\n nameLocation: 'end',\n\n /**\n * @description name default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n nameTextStyle: {\n fill: '#333',\n fontSize: 10\n },\n\n /**\n * @description Axis min value\n * @type {String|Number}\n * @default min = '20%'\n * @example min = '20%' | 0\n */\n min: '20%',\n\n /**\n * @description Axis max value\n * @type {String|Number}\n * @default max = '20%'\n * @example max = '20%' | 0\n */\n max: '20%',\n\n /**\n * @description Axis value interval\n * @type {Number}\n * @default interval = null\n * @example interval = 100\n */\n interval: null,\n\n /**\n * @description Min interval\n * @type {Number}\n * @default minInterval = null\n * @example minInterval = 1\n */\n minInterval: null,\n\n /**\n * @description Max interval\n * @type {Number}\n * @default maxInterval = null\n * @example maxInterval = 100\n */\n maxInterval: null,\n\n /**\n * @description Boundary gap\n * @type {Boolean}\n * @default boundaryGap = null\n * @example boundaryGap = true\n */\n boundaryGap: null,\n\n /**\n * @description Axis split number\n * @type {Number}\n * @default splitNumber = 5\n */\n splitNumber: 5,\n\n /**\n * @description Axis line configuration\n * @type {Object}\n */\n axisLine: {\n /**\n * @description Whether to display axis line\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#333',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis tick configuration\n * @type {Object}\n */\n axisTick: {\n /**\n * @description Whether to display axis tick\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis tick default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#333',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis label configuration\n * @type {Object}\n */\n axisLabel: {\n /**\n * @description Whether to display axis label\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}件'\n * @example formatter = (dataItem) => (dataItem.value)\n */\n formatter: null,\n\n /**\n * @description Axis label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: '#333',\n fontSize: 10,\n rotate: 0\n }\n },\n\n /**\n * @description Axis split line configuration\n * @type {Object}\n */\n splitLine: {\n /**\n * @description Whether to display axis split line\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis split line default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#d4d4d4',\n lineWidth: 1\n }\n },\n\n /**\n * @description Y axis render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = -20\n */\n rLevel: -20,\n\n /**\n * @description Y axis animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Y axis animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.yAxisConfig = yAxisConfig;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\n/* eslint no-loop-func: 0*/\nimport warning from 'warning';\nimport omit from 'omit.js';\nimport TreeNode from './TreeNode';\nimport { getSlotOptions, getOptionProps } from '../../_util/props-util';\nvar DRAG_SIDE_RANGE = 0.25;\nvar DRAG_MIN_GAP = 2;\n\nvar onlyTreeNodeWarned = false;\n\nexport function warnOnlyTreeNode() {\n if (onlyTreeNodeWarned) return;\n\n onlyTreeNodeWarned = true;\n warning(false, 'Tree only accept TreeNode as children.');\n}\n\nexport function arrDel(list, value) {\n var clone = list.slice();\n var index = clone.indexOf(value);\n if (index >= 0) {\n clone.splice(index, 1);\n }\n return clone;\n}\n\nexport function arrAdd(list, value) {\n var clone = list.slice();\n if (clone.indexOf(value) === -1) {\n clone.push(value);\n }\n return clone;\n}\n\nexport function posToArr(pos) {\n return pos.split('-');\n}\n\nexport function getPosition(level, index) {\n return level + '-' + index;\n}\n\nexport function isTreeNode(node) {\n return getSlotOptions(node).isTreeNode;\n}\n\nexport function getNodeChildren() {\n var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return children.filter(isTreeNode);\n}\n\nexport function isCheckDisabled(node) {\n var _ref = getOptionProps(node) || {},\n disabled = _ref.disabled,\n disableCheckbox = _ref.disableCheckbox,\n checkable = _ref.checkable;\n\n return !!(disabled || disableCheckbox) || checkable === false;\n}\n\nexport function traverseTreeNodes(treeNodes, callback) {\n function processNode(node, index, parent) {\n var children = node ? node.componentOptions.children : treeNodes;\n var pos = node ? getPosition(parent.pos, index) : 0;\n\n // Filter children\n var childList = getNodeChildren(children);\n\n // Process node if is not root\n if (node) {\n var key = node.key;\n if (!key && (key === undefined || key === null)) {\n key = pos;\n }\n var data = {\n node: node,\n index: index,\n pos: pos,\n key: key,\n parentPos: parent.node ? parent.pos : null\n };\n callback(data);\n }\n\n // Process children node\n childList.forEach(function (subNode, subIndex) {\n processNode(subNode, subIndex, { node: node, pos: pos });\n });\n }\n\n processNode(null);\n}\n\n/**\n * Use `rc-util` `toArray` to get the children list which keeps the key.\n * And return single node if children is only one(This can avoid `key` missing check).\n */\nexport function mapChildren() {\n var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var func = arguments[1];\n\n var list = children.map(func);\n if (list.length === 1) {\n return list[0];\n }\n return list;\n}\n\nexport function getDragNodesKeys(treeNodes, node) {\n var _getOptionProps = getOptionProps(node),\n eventKey = _getOptionProps.eventKey,\n pos = _getOptionProps.pos;\n\n var dragNodesKeys = [];\n\n traverseTreeNodes(treeNodes, function (_ref2) {\n var key = _ref2.key;\n\n dragNodesKeys.push(key);\n });\n dragNodesKeys.push(eventKey || pos);\n return dragNodesKeys;\n}\n\nexport function calcDropPosition(event, treeNode) {\n var clientY = event.clientY;\n\n var _treeNode$$refs$selec = treeNode.$refs.selectHandle.getBoundingClientRect(),\n top = _treeNode$$refs$selec.top,\n bottom = _treeNode$$refs$selec.bottom,\n height = _treeNode$$refs$selec.height;\n\n var des = Math.max(height * DRAG_SIDE_RANGE, DRAG_MIN_GAP);\n\n if (clientY <= top + des) {\n return -1;\n }\n if (clientY >= bottom - des) {\n return 1;\n }\n return 0;\n}\n\n/**\n * Return selectedKeys according with multiple prop\n * @param selectedKeys\n * @param props\n * @returns [string]\n */\nexport function calcSelectedKeys(selectedKeys, props) {\n if (!selectedKeys) {\n return undefined;\n }\n\n var multiple = props.multiple;\n\n if (multiple) {\n return selectedKeys.slice();\n }\n\n if (selectedKeys.length) {\n return [selectedKeys[0]];\n }\n return selectedKeys;\n}\n\n/**\n * Since React internal will convert key to string,\n * we need do this to avoid `checkStrictly` use number match\n */\n// function keyListToString (keyList) {\n// if (!keyList) return keyList\n// return keyList.map(key => String(key))\n// }\n\nvar internalProcessProps = function internalProcessProps() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return {\n props: omit(props, ['on', 'key', 'class', 'className', 'style']),\n on: props.on || {},\n 'class': props['class'] || props.className,\n style: props.style,\n key: props.key\n };\n};\nexport function convertDataToTree(h, treeData, processor) {\n if (!treeData) return [];\n\n var _ref3 = processor || {},\n _ref3$processProps = _ref3.processProps,\n processProps = _ref3$processProps === undefined ? internalProcessProps : _ref3$processProps;\n\n var list = Array.isArray(treeData) ? treeData : [treeData];\n return list.map(function (_ref4) {\n var children = _ref4.children,\n props = _objectWithoutProperties(_ref4, ['children']);\n\n var childrenNodes = convertDataToTree(h, children, processor);\n return h(\n TreeNode,\n processProps(props),\n [childrenNodes]\n );\n });\n}\n\n// TODO: ========================= NEW LOGIC =========================\n/**\n * Calculate treeNodes entities. `processTreeEntity` is used for `rc-tree-select`\n * @param treeNodes\n * @param processTreeEntity User can customize the entity\n */\nexport function convertTreeToEntities(treeNodes) {\n var _ref5 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n initWrapper = _ref5.initWrapper,\n processEntity = _ref5.processEntity,\n onProcessFinished = _ref5.onProcessFinished;\n\n var posEntities = new Map();\n var keyEntities = new Map();\n var wrapper = {\n posEntities: posEntities,\n keyEntities: keyEntities\n };\n\n if (initWrapper) {\n wrapper = initWrapper(wrapper) || wrapper;\n }\n\n traverseTreeNodes(treeNodes, function (item) {\n var node = item.node,\n index = item.index,\n pos = item.pos,\n key = item.key,\n parentPos = item.parentPos;\n\n var entity = { node: node, index: index, key: key, pos: pos };\n\n posEntities.set(pos, entity);\n keyEntities.set(key, entity);\n\n // Fill children\n entity.parent = posEntities.get(parentPos);\n if (entity.parent) {\n entity.parent.children = entity.parent.children || [];\n entity.parent.children.push(entity);\n }\n\n if (processEntity) {\n processEntity(entity, wrapper);\n }\n });\n\n if (onProcessFinished) {\n onProcessFinished(wrapper);\n }\n\n return wrapper;\n}\n\n/**\n * Parse `checkedKeys` to { checkedKeys, halfCheckedKeys } style\n */\nexport function parseCheckedKeys(keys) {\n if (!keys) {\n return null;\n }\n\n // Convert keys to object format\n var keyProps = void 0;\n if (Array.isArray(keys)) {\n // [Legacy] Follow the api doc\n keyProps = {\n checkedKeys: keys,\n halfCheckedKeys: undefined\n };\n } else if ((typeof keys === 'undefined' ? 'undefined' : _typeof(keys)) === 'object') {\n keyProps = {\n checkedKeys: keys.checked || undefined,\n halfCheckedKeys: keys.halfChecked || undefined\n };\n } else {\n warning(false, '`checkedKeys` is not an array or an object');\n return null;\n }\n\n // keyProps.checkedKeys = keyListToString(keyProps.checkedKeys)\n // keyProps.halfCheckedKeys = keyListToString(keyProps.halfCheckedKeys)\n\n return keyProps;\n}\n\n/**\n * Conduct check state by the keyList. It will conduct up & from the provided key.\n * If the conduct path reach the disabled or already checked / unchecked node will stop conduct.\n * @param keyList list of keys\n * @param isCheck is check the node or not\n * @param keyEntities parsed by `convertTreeToEntities` function in Tree\n * @param checkStatus Can pass current checked status for process (usually for uncheck operation)\n * @returns {{checkedKeys: [], halfCheckedKeys: []}}\n */\nexport function conductCheck(keyList, isCheck, keyEntities) {\n var checkStatus = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n var checkedKeys = new Map();\n var halfCheckedKeys = new Map(); // Record the key has some child checked (include child half checked)\n\n (checkStatus.checkedKeys || []).forEach(function (key) {\n checkedKeys.set(key, true);\n });\n\n (checkStatus.halfCheckedKeys || []).forEach(function (key) {\n halfCheckedKeys.set(key, true);\n });\n\n // Conduct up\n function conductUp(key) {\n if (checkedKeys.get(key) === isCheck) return;\n\n var entity = keyEntities.get(key);\n if (!entity) return;\n\n var children = entity.children,\n parent = entity.parent,\n node = entity.node;\n\n\n if (isCheckDisabled(node)) return;\n\n // Check child node checked status\n var everyChildChecked = true;\n var someChildChecked = false; // Child checked or half checked\n\n (children || []).filter(function (child) {\n return !isCheckDisabled(child.node);\n }).forEach(function (_ref6) {\n var childKey = _ref6.key;\n\n var childChecked = checkedKeys.get(childKey);\n var childHalfChecked = halfCheckedKeys.get(childKey);\n\n if (childChecked || childHalfChecked) someChildChecked = true;\n if (!childChecked) everyChildChecked = false;\n });\n\n // Update checked status\n if (isCheck) {\n checkedKeys.set(key, everyChildChecked);\n } else {\n checkedKeys.set(key, false);\n }\n halfCheckedKeys.set(key, someChildChecked);\n\n if (parent) {\n conductUp(parent.key);\n }\n }\n\n // Conduct down\n function conductDown(key) {\n if (checkedKeys.get(key) === isCheck) return;\n\n var entity = keyEntities.get(key);\n if (!entity) return;\n\n var children = entity.children,\n node = entity.node;\n\n\n if (isCheckDisabled(node)) return;\n\n checkedKeys.set(key, isCheck);\n\n (children || []).forEach(function (child) {\n conductDown(child.key);\n });\n }\n\n function conduct(key) {\n var entity = keyEntities.get(key);\n\n if (!entity) {\n warning(false, '\\'' + key + '\\' does not exist in the tree.');\n return;\n }\n var children = entity.children,\n parent = entity.parent,\n node = entity.node;\n\n checkedKeys.set(key, isCheck);\n\n if (isCheckDisabled(node)) return;\n\n // Conduct down\n (children || []).filter(function (child) {\n return !isCheckDisabled(child.node);\n }).forEach(function (child) {\n conductDown(child.key);\n });\n\n // Conduct up\n if (parent) {\n conductUp(parent.key);\n }\n }\n\n (keyList || []).forEach(function (key) {\n conduct(key);\n });\n\n var checkedKeyList = [];\n var halfCheckedKeyList = [];\n\n // Fill checked list\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = checkedKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref7 = _step.value;\n\n var _ref8 = _slicedToArray(_ref7, 2);\n\n var key = _ref8[0];\n var value = _ref8[1];\n\n if (value) {\n checkedKeyList.push(key);\n }\n }\n\n // Fill half checked list\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = halfCheckedKeys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _ref9 = _step2.value;\n\n var _ref10 = _slicedToArray(_ref9, 2);\n\n var _key = _ref10[0];\n var _value = _ref10[1];\n\n if (!checkedKeys.get(_key) && _value) {\n halfCheckedKeyList.push(_key);\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2['return']) {\n _iterator2['return']();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return {\n checkedKeys: checkedKeyList,\n halfCheckedKeys: halfCheckedKeyList\n };\n}\n\n/**\n * If user use `autoExpandParent` we should get the list of parent node\n * @param keyList\n * @param keyEntities\n */\nexport function conductExpandParent(keyList, keyEntities) {\n var expandedKeys = new Map();\n\n function conductUp(key) {\n if (expandedKeys.get(key)) return;\n\n var entity = keyEntities.get(key);\n if (!entity) return;\n\n expandedKeys.set(key, true);\n\n var parent = entity.parent,\n node = entity.node;\n\n var props = getOptionProps(node);\n if (props && props.disabled) return;\n\n if (parent) {\n conductUp(parent.key);\n }\n }\n\n (keyList || []).forEach(function (key) {\n conductUp(key);\n });\n\n return [].concat(_toConsumableArray(expandedKeys.keys()));\n}\n\n/**\n * Returns only the data- and aria- key/value pairs\n * @param {object} props\n */\nexport function getDataAndAria(props) {\n return Object.keys(props).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-') {\n prev[key] = props[key];\n }\n return prev;\n }, {});\n}","var baseProperty = require('./_baseProperty');\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\nmodule.exports = asciiSize;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var $ = require('../internals/export');\nvar fill = require('../internals/array-fill');\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.fill` method\n// https://tc39.es/ecma262/#sec-array.prototype.fill\n$({ target: 'Array', proto: true }, {\n fill: fill\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('fill');\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.gaugeConfig = void 0;\nvar gaugeConfig = {\n /**\n * @description Whether to display this gauge\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Legend name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Radius of gauge\n * @type {String|Number}\n * @default radius = '60%'\n * @example radius = '60%' | 100\n */\n radius: '60%',\n\n /**\n * @description Center point of gauge\n * @type {Array}\n * @default center = ['50%','50%']\n * @example center = ['50%','50%'] | [100, 100]\n */\n center: ['50%', '50%'],\n\n /**\n * @description Gauge start angle\n * @type {Number}\n * @default startAngle = -(Math.PI / 4) * 5\n * @example startAngle = -Math.PI\n */\n startAngle: -(Math.PI / 4) * 5,\n\n /**\n * @description Gauge end angle\n * @type {Number}\n * @default endAngle = Math.PI / 4\n * @example endAngle = 0\n */\n endAngle: Math.PI / 4,\n\n /**\n * @description Gauge min value\n * @type {Number}\n * @default min = 0\n */\n min: 0,\n\n /**\n * @description Gauge max value\n * @type {Number}\n * @default max = 100\n */\n max: 100,\n\n /**\n * @description Gauge split number\n * @type {Number}\n * @default splitNum = 5\n */\n splitNum: 5,\n\n /**\n * @description Gauge arc line width\n * @type {Number}\n * @default arcLineWidth = 15\n */\n arcLineWidth: 15,\n\n /**\n * @description Gauge chart data\n * @type {Array}\n * @default data = []\n */\n data: [],\n\n /**\n * @description Data item arc default style configuration\n * @type {Object}\n * @default dataItemStyle = {Configuration Of Class Style}\n */\n dataItemStyle: {},\n\n /**\n * @description Axis tick configuration\n * @type {Object}\n */\n axisTick: {\n /**\n * @description Whether to display axis tick\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis tick length\n * @type {Number}\n * @default tickLength = 6\n */\n tickLength: 6,\n\n /**\n * @description Axis tick default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#999',\n lineWidth: 1\n }\n },\n\n /**\n * @description Axis label configuration\n * @type {Object}\n */\n axisLabel: {\n /**\n * @description Whether to display axis label\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Axis label data (Can be calculated automatically)\n * @type {Array}\n * @default data = [Number...]\n */\n data: [],\n\n /**\n * @description Axis label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}%'\n * @example formatter = (labelItem) => (labelItem.value)\n */\n formatter: null,\n\n /**\n * @description Axis label gap between label and axis tick\n * @type {String|Function}\n * @default labelGap = 5\n */\n labelGap: 5,\n\n /**\n * @description Axis label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {}\n },\n\n /**\n * @description Gauge pointer configuration\n * @type {Object}\n */\n pointer: {\n /**\n * @description Whether to display pointer\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Pointer value index of data\n * @type {Number}\n * @default valueIndex = 0 (pointer.value = data[0].value)\n */\n valueIndex: 0,\n\n /**\n * @description Pointer default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n scale: [1, 1],\n fill: '#fb7293'\n }\n },\n\n /**\n * @description Data item arc detail configuration\n * @type {Object}\n */\n details: {\n /**\n * @description Whether to display details\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Details formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}%'\n * @example formatter = '{name}%'\n * @example formatter = (dataItem) => (dataItem.value)\n */\n formatter: null,\n\n /**\n * @description Details position offset\n * @type {Array}\n * @default offset = [0, 0]\n * @example offset = [10, 10]\n */\n offset: [0, 0],\n\n /**\n * @description Value fractional precision\n * @type {Number}\n * @default valueToFixed = 0\n */\n valueToFixed: 0,\n\n /**\n * @description Details position\n * @type {String}\n * @default position = 'center'\n * @example position = 'start' | 'center' | 'end'\n */\n position: 'center',\n\n /**\n * @description Details default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fontSize: 20,\n fontWeight: 'bold',\n textAlign: 'center',\n textBaseline: 'middle'\n }\n },\n\n /**\n * @description Gauge background arc configuration\n * @type {Object}\n */\n backgroundArc: {\n /**\n * @description Whether to display background arc\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Background arc default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n stroke: '#e0e0e0'\n }\n },\n\n /**\n * @description Gauge chart render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = 10\n */\n rLevel: 10,\n\n /**\n * @description Gauge animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Gauge animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.gaugeConfig = gaugeConfig;","var $ = require('../internals/export');\nvar assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, forced: Object.assign !== assign }, {\n assign: assign\n});\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport classNames from 'classnames';\nimport { getNodeChildren as _getNodeChildren, mapChildren, warnOnlyTreeNode } from './util';\nimport { initDefaultProps, filterEmpty, getComponentFromProp } from '../../_util/props-util';\nimport BaseMixin from '../../_util/BaseMixin';\nimport getTransitionProps from '../../_util/getTransitionProps';\n\nfunction noop() {}\nvar ICON_OPEN = 'open';\nvar ICON_CLOSE = 'close';\n\nvar defaultTitle = '---';\n\nvar TreeNode = {\n name: 'TreeNode',\n mixins: [BaseMixin],\n __ANT_TREE_NODE: true,\n props: initDefaultProps({\n eventKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), // Pass by parent `cloneElement`\n prefixCls: PropTypes.string,\n // className: PropTypes.string,\n root: PropTypes.object,\n // onSelect: PropTypes.func,\n\n // By parent\n expanded: PropTypes.bool,\n selected: PropTypes.bool,\n checked: PropTypes.bool,\n loaded: PropTypes.bool,\n loading: PropTypes.bool,\n halfChecked: PropTypes.bool,\n title: PropTypes.any,\n pos: PropTypes.string,\n dragOver: PropTypes.bool,\n dragOverGapTop: PropTypes.bool,\n dragOverGapBottom: PropTypes.bool,\n\n // By user\n isLeaf: PropTypes.bool,\n checkable: PropTypes.bool,\n selectable: PropTypes.bool,\n disabled: PropTypes.bool,\n disableCheckbox: PropTypes.bool,\n icon: PropTypes.any,\n dataRef: PropTypes.object,\n switcherIcon: PropTypes.any,\n label: PropTypes.any,\n value: PropTypes.any\n }, {}),\n\n data: function data() {\n return {\n dragNodeHighlight: false\n };\n },\n\n inject: {\n vcTree: { 'default': function _default() {\n return {};\n } },\n vcTreeNode: { 'default': function _default() {\n return {};\n } }\n },\n provide: function provide() {\n return {\n vcTreeNode: this\n };\n },\n\n\n // Isomorphic needn't load data in server side\n mounted: function mounted() {\n var eventKey = this.eventKey,\n registerTreeNode = this.vcTree.registerTreeNode;\n\n this.syncLoadData(this.$props);\n registerTreeNode && registerTreeNode(eventKey, this);\n },\n updated: function updated() {\n this.syncLoadData(this.$props);\n },\n beforeDestroy: function beforeDestroy() {\n var eventKey = this.eventKey,\n registerTreeNode = this.vcTree.registerTreeNode;\n\n registerTreeNode && registerTreeNode(eventKey, null);\n },\n\n\n methods: {\n onSelectorClick: function onSelectorClick(e) {\n // Click trigger before select/check operation\n var onNodeClick = this.vcTree.onNodeClick;\n\n onNodeClick(e, this);\n if (this.isSelectable()) {\n this.onSelect(e);\n } else {\n this.onCheck(e);\n }\n },\n onSelectorDoubleClick: function onSelectorDoubleClick(e) {\n var onNodeDoubleClick = this.vcTree.onNodeDoubleClick;\n\n onNodeDoubleClick(e, this);\n },\n onSelect: function onSelect(e) {\n if (this.isDisabled()) return;\n\n var onNodeSelect = this.vcTree.onNodeSelect;\n\n e.preventDefault();\n onNodeSelect(e, this);\n },\n onCheck: function onCheck(e) {\n if (this.isDisabled()) return;\n\n var disableCheckbox = this.disableCheckbox,\n checked = this.checked;\n var onNodeCheck = this.vcTree.onNodeCheck;\n\n\n if (!this.isCheckable() || disableCheckbox) return;\n\n e.preventDefault();\n var targetChecked = !checked;\n onNodeCheck(e, this, targetChecked);\n },\n onMouseEnter: function onMouseEnter(e) {\n var onNodeMouseEnter = this.vcTree.onNodeMouseEnter;\n\n onNodeMouseEnter(e, this);\n },\n onMouseLeave: function onMouseLeave(e) {\n var onNodeMouseLeave = this.vcTree.onNodeMouseLeave;\n\n onNodeMouseLeave(e, this);\n },\n onContextMenu: function onContextMenu(e) {\n var onNodeContextMenu = this.vcTree.onNodeContextMenu;\n\n onNodeContextMenu(e, this);\n },\n onDragStart: function onDragStart(e) {\n var onNodeDragStart = this.vcTree.onNodeDragStart;\n\n\n e.stopPropagation();\n this.setState({\n dragNodeHighlight: true\n });\n onNodeDragStart(e, this);\n\n try {\n // ie throw error\n // firefox-need-it\n e.dataTransfer.setData('text/plain', '');\n } catch (error) {\n // empty\n }\n },\n onDragEnter: function onDragEnter(e) {\n var onNodeDragEnter = this.vcTree.onNodeDragEnter;\n\n\n e.preventDefault();\n e.stopPropagation();\n onNodeDragEnter(e, this);\n },\n onDragOver: function onDragOver(e) {\n var onNodeDragOver = this.vcTree.onNodeDragOver;\n\n\n e.preventDefault();\n e.stopPropagation();\n onNodeDragOver(e, this);\n },\n onDragLeave: function onDragLeave(e) {\n var onNodeDragLeave = this.vcTree.onNodeDragLeave;\n\n\n e.stopPropagation();\n onNodeDragLeave(e, this);\n },\n onDragEnd: function onDragEnd(e) {\n var onNodeDragEnd = this.vcTree.onNodeDragEnd;\n\n\n e.stopPropagation();\n this.setState({\n dragNodeHighlight: false\n });\n onNodeDragEnd(e, this);\n },\n onDrop: function onDrop(e) {\n var onNodeDrop = this.vcTree.onNodeDrop;\n\n\n e.preventDefault();\n e.stopPropagation();\n this.setState({\n dragNodeHighlight: false\n });\n onNodeDrop(e, this);\n },\n\n\n // Disabled item still can be switch\n onExpand: function onExpand(e) {\n var onNodeExpand = this.vcTree.onNodeExpand;\n\n onNodeExpand(e, this);\n },\n getNodeChildren: function getNodeChildren() {\n var children = this.$slots['default'];\n\n var originList = filterEmpty(children);\n var targetList = _getNodeChildren(originList);\n\n if (originList.length !== targetList.length) {\n warnOnlyTreeNode();\n }\n\n return targetList;\n },\n getNodeState: function getNodeState() {\n var expanded = this.expanded;\n\n\n if (this.isLeaf2()) {\n return null;\n }\n\n return expanded ? ICON_OPEN : ICON_CLOSE;\n },\n isLeaf2: function isLeaf2() {\n var isLeaf = this.isLeaf,\n loaded = this.loaded;\n var loadData = this.vcTree.loadData;\n\n\n var hasChildren = this.getNodeChildren().length !== 0;\n if (isLeaf === false) {\n return false;\n }\n return isLeaf || !loadData && !hasChildren || loadData && loaded && !hasChildren;\n },\n isDisabled: function isDisabled() {\n var disabled = this.disabled;\n var treeDisabled = this.vcTree.disabled;\n\n // Follow the logic of Selectable\n\n if (disabled === false) {\n return false;\n }\n\n return !!(treeDisabled || disabled);\n },\n isCheckable: function isCheckable() {\n var checkable = this.$props.checkable;\n var treeCheckable = this.vcTree.checkable;\n\n // Return false if tree or treeNode is not checkable\n\n if (!treeCheckable || checkable === false) return false;\n return treeCheckable;\n },\n\n\n // Load data to avoid default expanded tree without data\n syncLoadData: function syncLoadData(props) {\n var expanded = props.expanded,\n loading = props.loading,\n loaded = props.loaded;\n var _vcTree = this.vcTree,\n loadData = _vcTree.loadData,\n onNodeLoad = _vcTree.onNodeLoad;\n\n if (loading) return;\n // read from state to avoid loadData at same time\n if (loadData && expanded && !this.isLeaf2()) {\n // We needn't reload data when has children in sync logic\n // It's only needed in node expanded\n var hasChildren = this.getNodeChildren().length !== 0;\n if (!hasChildren && !loaded) {\n onNodeLoad(this);\n }\n }\n },\n isSelectable: function isSelectable() {\n var selectable = this.selectable;\n var treeSelectable = this.vcTree.selectable;\n\n // Ignore when selectable is undefined or null\n\n if (typeof selectable === 'boolean') {\n return selectable;\n }\n\n return treeSelectable;\n },\n\n\n // Switcher\n renderSwitcher: function renderSwitcher() {\n var h = this.$createElement;\n var expanded = this.expanded;\n var prefixCls = this.vcTree.prefixCls;\n\n var switcherIcon = getComponentFromProp(this, 'switcherIcon', {}, false) || getComponentFromProp(this.vcTree, 'switcherIcon', {}, false);\n if (this.isLeaf2()) {\n return h(\n 'span',\n {\n key: 'switcher',\n 'class': classNames(prefixCls + '-switcher', prefixCls + '-switcher-noop')\n },\n [typeof switcherIcon === 'function' ? switcherIcon(_extends({}, this.$props, this.$props.dataRef, { isLeaf: true })) : switcherIcon]\n );\n }\n\n var switcherCls = classNames(prefixCls + '-switcher', prefixCls + '-switcher_' + (expanded ? ICON_OPEN : ICON_CLOSE));\n return h(\n 'span',\n { key: 'switcher', on: {\n 'click': this.onExpand\n },\n 'class': switcherCls },\n [typeof switcherIcon === 'function' ? switcherIcon(_extends({}, this.$props, this.$props.dataRef, { isLeaf: false })) : switcherIcon]\n );\n },\n\n\n // Checkbox\n renderCheckbox: function renderCheckbox() {\n var h = this.$createElement;\n var checked = this.checked,\n halfChecked = this.halfChecked,\n disableCheckbox = this.disableCheckbox;\n var prefixCls = this.vcTree.prefixCls;\n\n var disabled = this.isDisabled();\n var checkable = this.isCheckable();\n\n if (!checkable) return null;\n\n // [Legacy] Custom element should be separate with `checkable` in future\n var $custom = typeof checkable !== 'boolean' ? checkable : null;\n\n return h(\n 'span',\n {\n key: 'checkbox',\n 'class': classNames(prefixCls + '-checkbox', checked && prefixCls + '-checkbox-checked', !checked && halfChecked && prefixCls + '-checkbox-indeterminate', (disabled || disableCheckbox) && prefixCls + '-checkbox-disabled'),\n on: {\n 'click': this.onCheck\n }\n },\n [$custom]\n );\n },\n renderIcon: function renderIcon() {\n var h = this.$createElement;\n var loading = this.loading;\n var prefixCls = this.vcTree.prefixCls;\n\n\n return h('span', {\n key: 'icon',\n 'class': classNames(prefixCls + '-iconEle', prefixCls + '-icon__' + (this.getNodeState() || 'docu'), loading && prefixCls + '-icon_loading')\n });\n },\n\n\n // Icon + Title\n renderSelector: function renderSelector(h) {\n var selected = this.selected,\n loading = this.loading,\n dragNodeHighlight = this.dragNodeHighlight;\n\n var icon = getComponentFromProp(this, 'icon', {}, false);\n var _vcTree2 = this.vcTree,\n prefixCls = _vcTree2.prefixCls,\n showIcon = _vcTree2.showIcon,\n treeIcon = _vcTree2.icon,\n draggable = _vcTree2.draggable,\n loadData = _vcTree2.loadData;\n\n var disabled = this.isDisabled();\n var title = getComponentFromProp(this, 'title', {}, false);\n var wrapClass = prefixCls + '-node-content-wrapper';\n\n // Icon - Still show loading icon when loading without showIcon\n var $icon = void 0;\n\n if (showIcon) {\n var currentIcon = icon || treeIcon;\n $icon = currentIcon ? h(\n 'span',\n { 'class': classNames(prefixCls + '-iconEle', prefixCls + '-icon__customize') },\n [typeof currentIcon === 'function' ? currentIcon(_extends({}, this.$props, this.$props.dataRef), h) : currentIcon]\n ) : this.renderIcon();\n } else if (loadData && loading) {\n $icon = this.renderIcon();\n }\n\n var currentTitle = title;\n var $title = currentTitle ? h(\n 'span',\n { 'class': prefixCls + '-title' },\n [typeof currentTitle === 'function' ? currentTitle(_extends({}, this.$props, this.$props.dataRef), h) : currentTitle]\n ) : h(\n 'span',\n { 'class': prefixCls + '-title' },\n [defaultTitle]\n );\n\n return h(\n 'span',\n {\n key: 'selector',\n ref: 'selectHandle',\n attrs: { title: typeof title === 'string' ? title : '',\n\n draggable: !disabled && draggable || undefined,\n 'aria-grabbed': !disabled && draggable || undefined\n },\n 'class': classNames('' + wrapClass, wrapClass + '-' + (this.getNodeState() || 'normal'), !disabled && (selected || dragNodeHighlight) && prefixCls + '-node-selected', !disabled && draggable && 'draggable'), on: {\n 'mouseenter': this.onMouseEnter,\n 'mouseleave': this.onMouseLeave,\n 'contextmenu': this.onContextMenu,\n 'click': this.onSelectorClick,\n 'dblclick': this.onSelectorDoubleClick,\n 'dragstart': draggable ? this.onDragStart : noop\n }\n },\n [$icon, $title]\n );\n },\n\n\n // Children list wrapped with `Animation`\n renderChildren: function renderChildren() {\n var h = this.$createElement;\n var expanded = this.expanded,\n pos = this.pos;\n var _vcTree3 = this.vcTree,\n prefixCls = _vcTree3.prefixCls,\n openTransitionName = _vcTree3.openTransitionName,\n openAnimation = _vcTree3.openAnimation,\n renderTreeNode = _vcTree3.renderTreeNode;\n\n\n var animProps = {};\n if (openTransitionName) {\n animProps = getTransitionProps(openTransitionName);\n } else if ((typeof openAnimation === 'undefined' ? 'undefined' : _typeof(openAnimation)) === 'object') {\n animProps = _extends({}, openAnimation);\n animProps.props = _extends({ css: false }, animProps.props);\n }\n\n // Children TreeNode\n var nodeList = this.getNodeChildren();\n\n if (nodeList.length === 0) {\n return null;\n }\n\n var $children = void 0;\n if (expanded) {\n $children = h(\n 'ul',\n {\n 'class': classNames(prefixCls + '-child-tree', expanded && prefixCls + '-child-tree-open'),\n attrs: { 'data-expanded': expanded,\n role: 'group'\n }\n },\n [mapChildren(nodeList, function (node, index) {\n return renderTreeNode(node, index, pos);\n })]\n );\n }\n\n return h(\n 'transition',\n animProps,\n [$children]\n );\n }\n },\n\n render: function render(h) {\n var _ref;\n\n var _$props = this.$props,\n dragOver = _$props.dragOver,\n dragOverGapTop = _$props.dragOverGapTop,\n dragOverGapBottom = _$props.dragOverGapBottom,\n isLeaf = _$props.isLeaf,\n expanded = _$props.expanded,\n selected = _$props.selected,\n checked = _$props.checked,\n halfChecked = _$props.halfChecked,\n loading = _$props.loading;\n var _vcTree4 = this.vcTree,\n prefixCls = _vcTree4.prefixCls,\n filterTreeNode = _vcTree4.filterTreeNode,\n draggable = _vcTree4.draggable;\n\n var disabled = this.isDisabled();\n return h(\n 'li',\n {\n 'class': (_ref = {}, _defineProperty(_ref, prefixCls + '-treenode-disabled', disabled), _defineProperty(_ref, prefixCls + '-treenode-switcher-' + (expanded ? 'open' : 'close'), !isLeaf), _defineProperty(_ref, prefixCls + '-treenode-checkbox-checked', checked), _defineProperty(_ref, prefixCls + '-treenode-checkbox-indeterminate', halfChecked), _defineProperty(_ref, prefixCls + '-treenode-selected', selected), _defineProperty(_ref, prefixCls + '-treenode-loading', loading), _defineProperty(_ref, 'drag-over', !disabled && dragOver), _defineProperty(_ref, 'drag-over-gap-top', !disabled && dragOverGapTop), _defineProperty(_ref, 'drag-over-gap-bottom', !disabled && dragOverGapBottom), _defineProperty(_ref, 'filter-node', filterTreeNode && filterTreeNode(this)), _ref),\n attrs: { role: 'treeitem'\n },\n on: {\n 'dragenter': draggable ? this.onDragEnter : noop,\n 'dragover': draggable ? this.onDragOver : noop,\n 'dragleave': draggable ? this.onDragLeave : noop,\n 'drop': draggable ? this.onDrop : noop,\n 'dragend': draggable ? this.onDragEnd : noop\n }\n },\n [this.renderSwitcher(), this.renderCheckbox(), this.renderSelector(h), this.renderChildren()]\n );\n }\n};\n\nTreeNode.isTreeNode = 1;\n\nexport default TreeNode;","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TitleComponents.vue?vue&type=style&index=0&lang=css&\"","module.exports = function(arr, obj){\n if (arr.indexOf) return arr.indexOf(obj);\n for (var i = 0; i < arr.length; ++i) {\n if (arr[i] === obj) return i;\n }\n return -1;\n};","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković
: https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jedne minute'],\n mm: ['minut', 'minute', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mesec', 'meseca', 'meseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","module.exports = {};\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _color = require(\"@jiaminghi/color\");\n\nvar _util = require(\"../plugin/util\");\n\n/**\r\n * @description Class Style\r\n * @param {Object} style Style configuration\r\n * @return {Style} Instance of Style\r\n */\nvar Style = function Style(style) {\n (0, _classCallCheck2[\"default\"])(this, Style);\n this.colorProcessor(style);\n var defaultStyle = {\n /**\r\n * @description Rgba value of graph fill color\r\n * @type {Array}\r\n * @default fill = [0, 0, 0, 1]\r\n */\n fill: [0, 0, 0, 1],\n\n /**\r\n * @description Rgba value of graph stroke color\r\n * @type {Array}\r\n * @default stroke = [0, 0, 0, 1]\r\n */\n stroke: [0, 0, 0, 0],\n\n /**\r\n * @description Opacity of graph\r\n * @type {Number}\r\n * @default opacity = 1\r\n */\n opacity: 1,\n\n /**\r\n * @description LineCap of Ctx\r\n * @type {String}\r\n * @default lineCap = null\r\n * @example lineCap = 'butt'|'round'|'square'\r\n */\n lineCap: null,\n\n /**\r\n * @description Linejoin of Ctx\r\n * @type {String}\r\n * @default lineJoin = null\r\n * @example lineJoin = 'round'|'bevel'|'miter'\r\n */\n lineJoin: null,\n\n /**\r\n * @description LineDash of Ctx\r\n * @type {Array}\r\n * @default lineDash = null\r\n * @example lineDash = [10, 10]\r\n */\n lineDash: null,\n\n /**\r\n * @description LineDashOffset of Ctx\r\n * @type {Number}\r\n * @default lineDashOffset = null\r\n * @example lineDashOffset = 10\r\n */\n lineDashOffset: null,\n\n /**\r\n * @description ShadowBlur of Ctx\r\n * @type {Number}\r\n * @default shadowBlur = 0\r\n */\n shadowBlur: 0,\n\n /**\r\n * @description Rgba value of graph shadow color\r\n * @type {Array}\r\n * @default shadowColor = [0, 0, 0, 0]\r\n */\n shadowColor: [0, 0, 0, 0],\n\n /**\r\n * @description ShadowOffsetX of Ctx\r\n * @type {Number}\r\n * @default shadowOffsetX = 0\r\n */\n shadowOffsetX: 0,\n\n /**\r\n * @description ShadowOffsetY of Ctx\r\n * @type {Number}\r\n * @default shadowOffsetY = 0\r\n */\n shadowOffsetY: 0,\n\n /**\r\n * @description LineWidth of Ctx\r\n * @type {Number}\r\n * @default lineWidth = 0\r\n */\n lineWidth: 0,\n\n /**\r\n * @description Center point of the graph\r\n * @type {Array}\r\n * @default graphCenter = null\r\n * @example graphCenter = [10, 10]\r\n */\n graphCenter: null,\n\n /**\r\n * @description Graph scale\r\n * @type {Array}\r\n * @default scale = null\r\n * @example scale = [1.5, 1.5]\r\n */\n scale: null,\n\n /**\r\n * @description Graph rotation degree\r\n * @type {Number}\r\n * @default rotate = null\r\n * @example rotate = 10\r\n */\n rotate: null,\n\n /**\r\n * @description Graph translate distance\r\n * @type {Array}\r\n * @default translate = null\r\n * @example translate = [10, 10]\r\n */\n translate: null,\n\n /**\r\n * @description Cursor status when hover\r\n * @type {String}\r\n * @default hoverCursor = 'pointer'\r\n * @example hoverCursor = 'default'|'pointer'|'auto'|'crosshair'|'move'|'wait'|...\r\n */\n hoverCursor: 'pointer',\n\n /**\r\n * @description Font style of Ctx\r\n * @type {String}\r\n * @default fontStyle = 'normal'\r\n * @example fontStyle = 'normal'|'italic'|'oblique'\r\n */\n fontStyle: 'normal',\n\n /**\r\n * @description Font varient of Ctx\r\n * @type {String}\r\n * @default fontVarient = 'normal'\r\n * @example fontVarient = 'normal'|'small-caps'\r\n */\n fontVarient: 'normal',\n\n /**\r\n * @description Font weight of Ctx\r\n * @type {String|Number}\r\n * @default fontWeight = 'normal'\r\n * @example fontWeight = 'normal'|'bold'|'bolder'|'lighter'|Number\r\n */\n fontWeight: 'normal',\n\n /**\r\n * @description Font size of Ctx\r\n * @type {Number}\r\n * @default fontSize = 10\r\n */\n fontSize: 10,\n\n /**\r\n * @description Font family of Ctx\r\n * @type {String}\r\n * @default fontFamily = 'Arial'\r\n */\n fontFamily: 'Arial',\n\n /**\r\n * @description TextAlign of Ctx\r\n * @type {String}\r\n * @default textAlign = 'center'\r\n * @example textAlign = 'start'|'end'|'left'|'right'|'center'\r\n */\n textAlign: 'center',\n\n /**\r\n * @description TextBaseline of Ctx\r\n * @type {String}\r\n * @default textBaseline = 'middle'\r\n * @example textBaseline = 'top'|'bottom'|'middle'|'alphabetic'|'hanging'\r\n */\n textBaseline: 'middle',\n\n /**\r\n * @description The color used to create the gradient\r\n * @type {Array}\r\n * @default gradientColor = null\r\n * @example gradientColor = ['#000', '#111', '#222']\r\n */\n gradientColor: null,\n\n /**\r\n * @description Gradient type\r\n * @type {String}\r\n * @default gradientType = 'linear'\r\n * @example gradientType = 'linear' | 'radial'\r\n */\n gradientType: 'linear',\n\n /**\r\n * @description Gradient params\r\n * @type {Array}\r\n * @default gradientParams = null\r\n * @example gradientParams = [x0, y0, x1, y1] (Linear Gradient)\r\n * @example gradientParams = [x0, y0, r0, x1, y1, r1] (Radial Gradient)\r\n */\n gradientParams: null,\n\n /**\r\n * @description When to use gradients\r\n * @type {String}\r\n * @default gradientWith = 'stroke'\r\n * @example gradientWith = 'stroke' | 'fill'\r\n */\n gradientWith: 'stroke',\n\n /**\r\n * @description Gradient color stops\r\n * @type {String}\r\n * @default gradientStops = 'auto'\r\n * @example gradientStops = 'auto' | [0, .2, .3, 1]\r\n */\n gradientStops: 'auto',\n\n /**\r\n * @description Extended color that supports animation transition\r\n * @type {Array|Object}\r\n * @default colors = null\r\n * @example colors = ['#000', '#111', '#222', 'red' ]\r\n * @example colors = { a: '#000', b: '#111' }\r\n */\n colors: null\n };\n Object.assign(this, defaultStyle, style);\n};\n/**\r\n * @description Set colors to rgba value\r\n * @param {Object} style style config\r\n * @param {Boolean} reverse Whether to perform reverse operation\r\n * @return {Undefined} Void\r\n */\n\n\nexports[\"default\"] = Style;\n\nStyle.prototype.colorProcessor = function (style) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var processor = reverse ? _color.getColorFromRgbValue : _color.getRgbaValue;\n var colorProcessorKeys = ['fill', 'stroke', 'shadowColor'];\n var allKeys = Object.keys(style);\n var colorKeys = allKeys.filter(function (key) {\n return colorProcessorKeys.find(function (k) {\n return k === key;\n });\n });\n colorKeys.forEach(function (key) {\n return style[key] = processor(style[key]);\n });\n var gradientColor = style.gradientColor,\n colors = style.colors;\n if (gradientColor) style.gradientColor = gradientColor.map(function (c) {\n return processor(c);\n });\n\n if (colors) {\n var colorsKeys = Object.keys(colors);\n colorsKeys.forEach(function (key) {\n return colors[key] = processor(colors[key]);\n });\n }\n};\n/**\r\n * @description Init graph style\r\n * @param {Object} ctx Context of canvas\r\n * @return {Undefined} Void\r\n */\n\n\nStyle.prototype.initStyle = function (ctx) {\n initTransform(ctx, this);\n initGraphStyle(ctx, this);\n initGradient(ctx, this);\n};\n/**\r\n * @description Init canvas transform\r\n * @param {Object} ctx Context of canvas\r\n * @param {Style} style Instance of Style\r\n * @return {Undefined} Void\r\n */\n\n\nfunction initTransform(ctx, style) {\n ctx.save();\n var graphCenter = style.graphCenter,\n rotate = style.rotate,\n scale = style.scale,\n translate = style.translate;\n if (!(graphCenter instanceof Array)) return;\n ctx.translate.apply(ctx, (0, _toConsumableArray2[\"default\"])(graphCenter));\n if (rotate) ctx.rotate(rotate * Math.PI / 180);\n if (scale instanceof Array) ctx.scale.apply(ctx, (0, _toConsumableArray2[\"default\"])(scale));\n if (translate) ctx.translate.apply(ctx, (0, _toConsumableArray2[\"default\"])(translate));\n ctx.translate(-graphCenter[0], -graphCenter[1]);\n}\n\nvar autoSetStyleKeys = ['lineCap', 'lineJoin', 'lineDashOffset', 'shadowOffsetX', 'shadowOffsetY', 'lineWidth', 'textAlign', 'textBaseline'];\n/**\r\n * @description Set the style of canvas ctx\r\n * @param {Object} ctx Context of canvas\r\n * @param {Style} style Instance of Style\r\n * @return {Undefined} Void\r\n */\n\nfunction initGraphStyle(ctx, style) {\n var fill = style.fill,\n stroke = style.stroke,\n shadowColor = style.shadowColor,\n opacity = style.opacity;\n autoSetStyleKeys.forEach(function (key) {\n if (key || typeof key === 'number') ctx[key] = style[key];\n });\n fill = (0, _toConsumableArray2[\"default\"])(fill);\n stroke = (0, _toConsumableArray2[\"default\"])(stroke);\n shadowColor = (0, _toConsumableArray2[\"default\"])(shadowColor);\n fill[3] *= opacity;\n stroke[3] *= opacity;\n shadowColor[3] *= opacity;\n ctx.fillStyle = (0, _color.getColorFromRgbValue)(fill);\n ctx.strokeStyle = (0, _color.getColorFromRgbValue)(stroke);\n ctx.shadowColor = (0, _color.getColorFromRgbValue)(shadowColor);\n var lineDash = style.lineDash,\n shadowBlur = style.shadowBlur;\n\n if (lineDash) {\n lineDash = lineDash.map(function (v) {\n return v >= 0 ? v : 0;\n });\n ctx.setLineDash(lineDash);\n }\n\n if (typeof shadowBlur === 'number') ctx.shadowBlur = shadowBlur > 0 ? shadowBlur : 0.001;\n var fontStyle = style.fontStyle,\n fontVarient = style.fontVarient,\n fontWeight = style.fontWeight,\n fontSize = style.fontSize,\n fontFamily = style.fontFamily;\n ctx.font = fontStyle + ' ' + fontVarient + ' ' + fontWeight + ' ' + fontSize + 'px' + ' ' + fontFamily;\n}\n/**\r\n * @description Set the gradient color of canvas ctx\r\n * @param {Object} ctx Context of canvas\r\n * @param {Style} style Instance of Style\r\n * @return {Undefined} Void\r\n */\n\n\nfunction initGradient(ctx, style) {\n if (!gradientValidator(style)) return;\n var gradientColor = style.gradientColor,\n gradientParams = style.gradientParams,\n gradientType = style.gradientType,\n gradientWith = style.gradientWith,\n gradientStops = style.gradientStops,\n opacity = style.opacity;\n gradientColor = gradientColor.map(function (color) {\n var colorOpacity = color[3] * opacity;\n var clonedColor = (0, _toConsumableArray2[\"default\"])(color);\n clonedColor[3] = colorOpacity;\n return clonedColor;\n });\n gradientColor = gradientColor.map(function (c) {\n return (0, _color.getColorFromRgbValue)(c);\n });\n if (gradientStops === 'auto') gradientStops = getAutoColorStops(gradientColor);\n var gradient = ctx[\"create\".concat(gradientType.slice(0, 1).toUpperCase() + gradientType.slice(1), \"Gradient\")].apply(ctx, (0, _toConsumableArray2[\"default\"])(gradientParams));\n gradientStops.forEach(function (stop, i) {\n return gradient.addColorStop(stop, gradientColor[i]);\n });\n ctx[\"\".concat(gradientWith, \"Style\")] = gradient;\n}\n/**\r\n * @description Check if the gradient configuration is legal\r\n * @param {Style} style Instance of Style\r\n * @return {Boolean} Check Result\r\n */\n\n\nfunction gradientValidator(style) {\n var gradientColor = style.gradientColor,\n gradientParams = style.gradientParams,\n gradientType = style.gradientType,\n gradientWith = style.gradientWith,\n gradientStops = style.gradientStops;\n if (!gradientColor || !gradientParams) return false;\n\n if (gradientColor.length === 1) {\n console.warn('The gradient needs to provide at least two colors');\n return false;\n }\n\n if (gradientType !== 'linear' && gradientType !== 'radial') {\n console.warn('GradientType only supports linear or radial, current value is ' + gradientType);\n return false;\n }\n\n var gradientParamsLength = gradientParams.length;\n\n if (gradientType === 'linear' && gradientParamsLength !== 4 || gradientType === 'radial' && gradientParamsLength !== 6) {\n console.warn('The expected length of gradientParams is ' + (gradientType === 'linear' ? '4' : '6'));\n return false;\n }\n\n if (gradientWith !== 'fill' && gradientWith !== 'stroke') {\n console.warn('GradientWith only supports fill or stroke, current value is ' + gradientWith);\n return false;\n }\n\n if (gradientStops !== 'auto' && !(gradientStops instanceof Array)) {\n console.warn(\"gradientStops only supports 'auto' or Number Array ([0, .5, 1]), current value is \" + gradientStops);\n return false;\n }\n\n return true;\n}\n/**\r\n * @description Get a uniform gradient color stop\r\n * @param {Array} color Gradient color\r\n * @return {Array} Gradient color stop\r\n */\n\n\nfunction getAutoColorStops(color) {\n var stopGap = 1 / (color.length - 1);\n return color.map(function (foo, i) {\n return stopGap * i;\n });\n}\n/**\r\n * @description Restore canvas ctx transform\r\n * @param {Object} ctx Context of canvas\r\n * @return {Undefined} Void\r\n */\n\n\nStyle.prototype.restoreTransform = function (ctx) {\n ctx.restore();\n};\n/**\r\n * @description Update style data\r\n * @param {Object} change Changed data\r\n * @return {Undefined} Void\r\n */\n\n\nStyle.prototype.update = function (change) {\n this.colorProcessor(change);\n Object.assign(this, change);\n};\n/**\r\n * @description Get the current style configuration\r\n * @return {Object} Style configuration\r\n */\n\n\nStyle.prototype.getStyle = function () {\n var clonedStyle = (0, _util.deepClone)(this, true);\n this.colorProcessor(clonedStyle, true);\n return clonedStyle;\n};","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n var obj;\n\n while (queue.length) {\n var item = queue.pop();\n obj = item.obj[item.prop];\n\n if (Array.isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n\n return obj;\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (Array.isArray(target)) {\n target.push(source);\n } else if (typeof target === 'object') {\n if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (Array.isArray(target) && !Array.isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (Array.isArray(target) && Array.isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n if (target[i] && typeof target[i] === 'object') {\n target[i] = merge(target[i], item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str) {\n try {\n return decodeURIComponent(str.replace(/\\+/g, ' '));\n } catch (e) {\n return str;\n }\n};\n\nvar encode = function encode(str) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = typeof str === 'string' ? str : String(str);\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n return compactQueue(queue);\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (obj === null || typeof obj === 'undefined') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n merge: merge\n};\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","/* eslint-disable no-proto -- safe */\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = uncurryThis(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var availablePrefixs = ['moz', 'ms', 'webkit'];\n\nfunction requestAnimationFramePolyfill() {\n var lastTime = 0;\n return function (callback) {\n var currTime = new Date().getTime();\n var timeToCall = Math.max(0, 16 - (currTime - lastTime));\n var id = window.setTimeout(function () {\n callback(currTime + timeToCall);\n }, timeToCall);\n lastTime = currTime + timeToCall;\n return id;\n };\n}\n\nexport default function getRequestAnimationFrame() {\n if (typeof window === 'undefined') {\n return function () {};\n }\n if (window.requestAnimationFrame) {\n // https://github.com/vuejs/vue/issues/4465\n return window.requestAnimationFrame.bind(window);\n }\n\n var prefix = availablePrefixs.filter(function (key) {\n return key + 'RequestAnimationFrame' in window;\n })[0];\n\n return prefix ? window[prefix + 'RequestAnimationFrame'] : requestAnimationFramePolyfill();\n}\n\nexport function cancelRequestAnimationFrame(id) {\n if (typeof window === 'undefined') {\n return null;\n }\n if (window.cancelAnimationFrame) {\n return window.cancelAnimationFrame(id);\n }\n var prefix = availablePrefixs.filter(function (key) {\n return key + 'CancelAnimationFrame' in window || key + 'CancelRequestAnimationFrame' in window;\n })[0];\n\n return prefix ? (window[prefix + 'CancelAnimationFrame'] || window[prefix + 'CancelRequestAnimationFrame']).call(this, id) : clearTimeout(id);\n}","import getRequestAnimationFrame, { cancelRequestAnimationFrame as caf } from './getRequestAnimationFrame';\nvar raf = getRequestAnimationFrame();\n\nexport var cancelAnimationTimeout = function cancelAnimationTimeout(frame) {\n return caf(frame.id);\n};\n\nexport var requestAnimationTimeout = function requestAnimationTimeout(callback, delay) {\n var start = Date.now();\n function timeout() {\n if (Date.now() - start >= delay) {\n callback.call();\n } else {\n frame.id = raf(timeout);\n }\n }\n\n var frame = {\n id: raf(timeout)\n };\n\n return frame;\n};","var defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var userAgent = require('../internals/engine-user-agent');\nvar global = require('../internals/global');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && global.Pebble !== undefined;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar redefine = require('../internals/redefine');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) != 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () { execCalled = true; return null; };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var uncurriedNativeRegExpMethod = uncurryThis(/./[SYMBOL]);\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var uncurriedNativeMethod = uncurryThis(nativeMethod);\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: uncurriedNativeRegExpMethod(regexp, str, arg2) };\n }\n return { done: true, value: uncurriedNativeMethod(str, regexp, arg2) };\n }\n return { done: false };\n });\n\n redefine(String.prototype, KEY, methods[0]);\n redefine(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","'use strict';\nvar $ = require('../internals/export');\nvar $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","// FF26- bug: ArrayBuffers are non-extensible, but Object.isExtensible does not report it\nvar fails = require('../internals/fails');\n\nmodule.exports = fails(function () {\n if (typeof ArrayBuffer == 'function') {\n var buffer = new ArrayBuffer(8);\n // eslint-disable-next-line es/no-object-isextensible, es/no-object-defineproperty -- safe\n if (Object.isExtensible(buffer)) Object.defineProperty(buffer, 'a', { value: 8 });\n }\n});\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\nvar __DEV__ = process.env.NODE_ENV !== 'production';\n\nvar warning = function() {};\n\nif (__DEV__) {\n var printWarning = function printWarning(format, args) {\n var len = arguments.length;\n args = new Array(len > 1 ? len - 1 : 0);\n for (var key = 1; key < len; key++) {\n args[key - 1] = arguments[key];\n }\n var argIndex = 0;\n var message = 'Warning: ' +\n format.replace(/%s/g, function() {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n }\n\n warning = function(condition, format, args) {\n var len = arguments.length;\n args = new Array(len > 2 ? len - 2 : 0);\n for (var key = 2; key < len; key++) {\n args[key - 2] = arguments[key];\n }\n if (format === undefined) {\n throw new Error(\n '`warning(condition, format, ...args)` requires a warning ' +\n 'message argument'\n );\n }\n if (!condition) {\n printWarning.apply(null, [format].concat(args));\n }\n };\n}\n\nmodule.exports = warning;\n","var UA = require('../internals/engine-user-agent');\n\nmodule.exports = /MSIE|Trident/.test(UA);\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","var global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Object = global.Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, Object(it));\n};\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","export default {\r\n GET_USER_INFO: '/kapi/app/digi_assets/getUserInfo', // 获取当前用户的登录信息\r\n GET_ASSET_INDEX_DATA: '/kapi/app/digi_maint_pf/getAssetIndexData', // 获取统计数据\r\n GET_GY_SR_REND: '/kapi/app/digi_maint_pf/getGySrTrend', // 获取服务申请单的创建趋势\r\n GET_FAILURE_WO_AMOUNT: '/kapi/app/digi_maint_pf/getFailureWoAmount', // 统计当月时间内故障类工单的总数,以及按工作中心人员计算平均值\r\n GET_ASSET_CATEGORY_FAILURE_RANK: '/kapi/app/digi_maint_pf/getAssetCategoryFailureRank', // 统计历史工单的各类设备发生次数占比\r\n GET_ASSET_ORG_AMOUNT: '/kapi/app/digi_maint_pf/getAssetOrgAmount', // 按照资产使用组织统计设备数量\r\n\r\n GET_SR_LIST: '/kapi/app/digi_maintain/getSrList', // 获取SR数量\r\n GET_GY_CATOGORY_ASSET: '/kapi/app/digi_assets/getGyCategoryAssetKpiNumberData', // 统计设备分类\r\n GET_GY_SR_LIST: '/kapi/app/digi_maint_pf/getGySrList', // 国药定制sr列表分页查询\r\n}\r\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","import _typeof from 'babel-runtime/helpers/typeof';\nimport _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport isPlainObject from 'lodash/isPlainObject';\nimport classNames from 'classnames';\nfunction getType(fn) {\n var match = fn && fn.toString().match(/^\\s*function (\\w+)/);\n return match ? match[1] : '';\n}\n\nvar camelizeRE = /-(\\w)/g;\nvar camelize = function camelize(str) {\n return str.replace(camelizeRE, function (_, c) {\n return c ? c.toUpperCase() : '';\n });\n};\nvar parseStyleText = function parseStyleText() {\n var cssText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var camel = arguments[1];\n\n var res = {};\n var listDelimiter = /;(?![^(]*\\))/g;\n var propertyDelimiter = /:(.+)/;\n cssText.split(listDelimiter).forEach(function (item) {\n if (item) {\n var tmp = item.split(propertyDelimiter);\n if (tmp.length > 1) {\n var k = camel ? camelize(tmp[0].trim()) : tmp[0].trim();\n res[k] = tmp[1].trim();\n }\n }\n });\n return res;\n};\n\nvar hasProp = function hasProp(instance, prop) {\n var $options = instance.$options || {};\n var propsData = $options.propsData || {};\n return prop in propsData;\n};\nvar slotHasProp = function slotHasProp(slot, prop) {\n var $options = slot.componentOptions || {};\n var propsData = $options.propsData || {};\n return prop in propsData;\n};\nvar filterProps = function filterProps(props) {\n var propsData = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var res = {};\n Object.keys(props).forEach(function (k) {\n if (k in propsData || props[k] !== undefined) {\n res[k] = props[k];\n }\n });\n return res;\n};\n\nvar getScopedSlots = function getScopedSlots(ele) {\n return ele.data && ele.data.scopedSlots || {};\n};\n\nvar getSlots = function getSlots(ele) {\n var componentOptions = ele.componentOptions || {};\n if (ele.$vnode) {\n componentOptions = ele.$vnode.componentOptions || {};\n }\n var children = ele.children || componentOptions.children || [];\n var slots = {};\n children.forEach(function (child) {\n if (!isEmptyElement(child)) {\n var name = child.data && child.data.slot || 'default';\n slots[name] = slots[name] || [];\n slots[name].push(child);\n }\n });\n return _extends({}, slots, getScopedSlots(ele));\n};\nvar getSlot = function getSlot(self) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'default';\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n return self.$scopedSlots && self.$scopedSlots[name] && self.$scopedSlots[name](options) || self.$slots[name] || [];\n};\n\nvar getAllChildren = function getAllChildren(ele) {\n var componentOptions = ele.componentOptions || {};\n if (ele.$vnode) {\n componentOptions = ele.$vnode.componentOptions || {};\n }\n return ele.children || componentOptions.children || [];\n};\nvar getSlotOptions = function getSlotOptions(ele) {\n if (ele.fnOptions) {\n // 函数式组件\n return ele.fnOptions;\n }\n var componentOptions = ele.componentOptions;\n if (ele.$vnode) {\n componentOptions = ele.$vnode.componentOptions;\n }\n return componentOptions ? componentOptions.Ctor.options || {} : {};\n};\nvar getOptionProps = function getOptionProps(instance) {\n if (instance.componentOptions) {\n var componentOptions = instance.componentOptions;\n var _componentOptions$pro = componentOptions.propsData,\n propsData = _componentOptions$pro === undefined ? {} : _componentOptions$pro,\n _componentOptions$Cto = componentOptions.Ctor,\n Ctor = _componentOptions$Cto === undefined ? {} : _componentOptions$Cto;\n\n var props = (Ctor.options || {}).props || {};\n var res = {};\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Object.entries(props)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var k = _ref2[0];\n var v = _ref2[1];\n\n var def = v['default'];\n if (def !== undefined) {\n res[k] = typeof def === 'function' && getType(v.type) !== 'Function' ? def.call(instance) : def;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return _extends({}, res, propsData);\n }\n var _instance$$options = instance.$options,\n $options = _instance$$options === undefined ? {} : _instance$$options,\n _instance$$props = instance.$props,\n $props = _instance$$props === undefined ? {} : _instance$$props;\n\n return filterProps($props, $options.propsData);\n};\n\nvar getComponentFromProp = function getComponentFromProp(instance, prop) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : instance;\n var execute = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;\n\n if (instance.$createElement) {\n var h = instance.$createElement;\n var temp = instance[prop];\n if (temp !== undefined) {\n return typeof temp === 'function' && execute ? temp(h, options) : temp;\n }\n return instance.$scopedSlots[prop] && execute && instance.$scopedSlots[prop](options) || instance.$scopedSlots[prop] || instance.$slots[prop] || undefined;\n } else {\n var _h = instance.context.$createElement;\n var _temp = getPropsData(instance)[prop];\n if (_temp !== undefined) {\n return typeof _temp === 'function' && execute ? _temp(_h, options) : _temp;\n }\n var slotScope = getScopedSlots(instance)[prop];\n if (slotScope !== undefined) {\n return typeof slotScope === 'function' && execute ? slotScope(_h, options) : slotScope;\n }\n var slotsProp = [];\n var componentOptions = instance.componentOptions || {};\n (componentOptions.children || []).forEach(function (child) {\n if (child.data && child.data.slot === prop) {\n if (child.data.attrs) {\n delete child.data.attrs.slot;\n }\n if (child.tag === 'template') {\n slotsProp.push(child.children);\n } else {\n slotsProp.push(child);\n }\n }\n });\n return slotsProp.length ? slotsProp : undefined;\n }\n};\n\nvar getAllProps = function getAllProps(ele) {\n var data = ele.data || {};\n var componentOptions = ele.componentOptions || {};\n if (ele.$vnode) {\n data = ele.$vnode.data || {};\n componentOptions = ele.$vnode.componentOptions || {};\n }\n return _extends({}, data.props, data.attrs, componentOptions.propsData);\n};\n\nvar getPropsData = function getPropsData(ele) {\n var componentOptions = ele.componentOptions;\n if (ele.$vnode) {\n componentOptions = ele.$vnode.componentOptions;\n }\n return componentOptions ? componentOptions.propsData || {} : {};\n};\nvar getValueByProp = function getValueByProp(ele, prop) {\n return getPropsData(ele)[prop];\n};\n\nvar getAttrs = function getAttrs(ele) {\n var data = ele.data;\n if (ele.$vnode) {\n data = ele.$vnode.data;\n }\n return data ? data.attrs || {} : {};\n};\n\nvar getKey = function getKey(ele) {\n var key = ele.key;\n if (ele.$vnode) {\n key = ele.$vnode.key;\n }\n return key;\n};\n\nexport function getEvents(child) {\n var events = {};\n if (child.componentOptions && child.componentOptions.listeners) {\n events = child.componentOptions.listeners;\n } else if (child.data && child.data.on) {\n events = child.data.on;\n }\n return _extends({}, events);\n}\n\n// 获取 xxx.native 或者 原生标签 事件\nexport function getDataEvents(child) {\n var events = {};\n if (child.data && child.data.on) {\n events = child.data.on;\n }\n return _extends({}, events);\n}\n\n// use getListeners instead this.$listeners\n// https://github.com/vueComponent/ant-design-vue/issues/1705\nexport function getListeners(context) {\n return (context.$vnode ? context.$vnode.componentOptions.listeners : context.$listeners) || {};\n}\nexport function getClass(ele) {\n var data = {};\n if (ele.data) {\n data = ele.data;\n } else if (ele.$vnode && ele.$vnode.data) {\n data = ele.$vnode.data;\n }\n var tempCls = data['class'] || {};\n var staticClass = data.staticClass;\n var cls = {};\n staticClass && staticClass.split(' ').forEach(function (c) {\n cls[c.trim()] = true;\n });\n if (typeof tempCls === 'string') {\n tempCls.split(' ').forEach(function (c) {\n cls[c.trim()] = true;\n });\n } else if (Array.isArray(tempCls)) {\n classNames(tempCls).split(' ').forEach(function (c) {\n cls[c.trim()] = true;\n });\n } else {\n cls = _extends({}, cls, tempCls);\n }\n return cls;\n}\nexport function getStyle(ele, camel) {\n var data = {};\n if (ele.data) {\n data = ele.data;\n } else if (ele.$vnode && ele.$vnode.data) {\n data = ele.$vnode.data;\n }\n var style = data.style || data.staticStyle;\n if (typeof style === 'string') {\n style = parseStyleText(style, camel);\n } else if (camel && style) {\n // 驼峰化\n var res = {};\n Object.keys(style).forEach(function (k) {\n return res[camelize(k)] = style[k];\n });\n return res;\n }\n return style;\n}\n\nexport function getComponentName(opts) {\n return opts && (opts.Ctor.options.name || opts.tag);\n}\n\nexport function isEmptyElement(c) {\n return !(c.tag || c.text && c.text.trim() !== '');\n}\n\nexport function isStringElement(c) {\n return !c.tag;\n}\n\nexport function filterEmpty() {\n var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n return children.filter(function (c) {\n return !isEmptyElement(c);\n });\n}\nvar initDefaultProps = function initDefaultProps(propTypes, defaultProps) {\n Object.keys(defaultProps).forEach(function (k) {\n if (propTypes[k]) {\n propTypes[k].def && (propTypes[k] = propTypes[k].def(defaultProps[k]));\n } else {\n throw new Error('not have ' + k + ' prop');\n }\n });\n return propTypes;\n};\n\nexport function mergeProps() {\n var args = [].slice.call(arguments, 0);\n var props = {};\n args.forEach(function () {\n var p = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = Object.entries(p)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _ref3 = _step2.value;\n\n var _ref4 = _slicedToArray(_ref3, 2);\n\n var k = _ref4[0];\n var v = _ref4[1];\n\n props[k] = props[k] || {};\n if (isPlainObject(v)) {\n _extends(props[k], v);\n } else {\n props[k] = v;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2['return']) {\n _iterator2['return']();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n });\n return props;\n}\n\nfunction isValidElement(element) {\n return element && (typeof element === 'undefined' ? 'undefined' : _typeof(element)) === 'object' && 'componentOptions' in element && 'context' in element && element.tag !== undefined; // remove text node\n}\n\nexport { hasProp, filterProps, getOptionProps, getComponentFromProp, getSlotOptions, slotHasProp, getPropsData, getKey, getAttrs, getValueByProp, parseStyleText, initDefaultProps, isValidElement, camelize, getSlots, getSlot, getAllProps, getAllChildren };\nexport default hasProp;","export function antPortal(Vue) {\n return Vue.directive('ant-portal', {\n inserted: function inserted(el, binding) {\n var value = binding.value;\n\n var parentNode = typeof value === 'function' ? value(el) : value;\n if (parentNode !== el.parentNode) {\n parentNode.appendChild(el);\n }\n },\n componentUpdated: function componentUpdated(el, binding) {\n var value = binding.value;\n\n var parentNode = typeof value === 'function' ? value(el) : value;\n if (parentNode !== el.parentNode) {\n parentNode.appendChild(el);\n }\n }\n });\n}\n\nexport default {\n install: function install(Vue) {\n antPortal(Vue);\n }\n};","import ref from 'vue-ref';\nimport { antInput } from './antInputDirective';\nimport { antDecorator } from './FormDecoratorDirective';\nimport { antPortal } from './portalDirective';\n\nexport default {\n install: function install(Vue) {\n Vue.use(ref, { name: 'ant-ref' });\n antInput(Vue);\n antDecorator(Vue);\n antPortal(Vue);\n }\n};","import antDirective from '../_util/antDirective';\nvar base = {};\nvar install = function install(Vue) {\n base.Vue = Vue;\n Vue.use(antDirective);\n};\nbase.install = install;\n\nexport default base;","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Progress.vue?vue&type=style&index=0&id=3dceab99&lang=scss&scoped=true&\"","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollRankingBoard.vue?vue&type=style&index=0&id=77103f88&lang=scss&scoped=true&\"","var $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar ownKeys = require('../internals/own-keys');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar createProperty = require('../internals/create-property');\n\n// `Object.getOwnPropertyDescriptors` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n$({ target: 'Object', stat: true, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object) {\n var O = toIndexedObject(object);\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n var keys = ownKeys(O);\n var result = {};\n var index = 0;\n var key, descriptor;\n while (keys.length > index) {\n descriptor = getOwnPropertyDescriptor(O, key = keys[index++]);\n if (descriptor !== undefined) createProperty(result, key, descriptor);\n }\n return result;\n }\n});\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","var aCallable = require('../internals/a-callable');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return func == null ? undefined : aCallable(func);\n};\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(\n '_'\n ),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex: /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex: /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(global[COLLECTION_NAME] && global[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n}\n\n// path.resolve([from ...], to)\n// posix version\nexports.resolve = function() {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = (i >= 0) ? arguments[i] : process.cwd();\n\n // Skip empty and invalid entries\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n }\n\n // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n\n // Normalize the path\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n\n return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';\n};\n\n// path.normalize(path)\n// posix version\nexports.normalize = function(path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/';\n\n // Normalize the path\n path = normalizeArray(filter(path.split('/'), function(p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n};\n\n// posix version\nexports.isAbsolute = function(path) {\n return path.charAt(0) === '/';\n};\n\n// posix version\nexports.join = function() {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function(p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n return p;\n }).join('/'));\n};\n\n\n// path.relative(from, to)\n// posix version\nexports.relative = function(from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47 /*/*/;\n var end = -1;\n var matchedSlash = true;\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n}\n\n// Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\nexports.basename = function (path, ext) {\n var f = basename(path);\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true;\n // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n var preDotState = 0;\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n if (code === 47 /*/*/) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n continue;\n }\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n if (code === 46 /*.*/) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1)\n startDot = i;\n else if (preDotState !== 1)\n preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 ||\n // We saw a non-dot character immediately before the dot\n preDotState === 0 ||\n // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n return path.slice(startDot, end);\n};\n\nfunction filter (xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n return res;\n}\n\n// String.prototype.substr - negative index don't work in IE8\nvar substr = 'ab'.substr(-1) === 'b'\n ? function (str, start, len) { return str.substr(start, len) }\n : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n }\n;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.easeInOutBounce = exports.easeOutBounce = exports.easeInBounce = exports.easeInOutElastic = exports.easeOutElastic = exports.easeInElastic = exports.easeInOutBack = exports.easeOutBack = exports.easeInBack = exports.easeInOutQuint = exports.easeOutQuint = exports.easeInQuint = exports.easeInOutQuart = exports.easeOutQuart = exports.easeInQuart = exports.easeInOutCubic = exports.easeOutCubic = exports.easeInCubic = exports.easeInOutQuad = exports.easeOutQuad = exports.easeInQuad = exports.easeInOutSine = exports.easeOutSine = exports.easeInSine = exports.linear = void 0;\nvar linear = [[[0, 1], '', [0.33, 0.67]], [[1, 0], [0.67, 0.33]]];\n/**\r\n * @description Sine\r\n */\n\nexports.linear = linear;\nvar easeInSine = [[[0, 1]], [[0.538, 0.564], [0.169, 0.912], [0.880, 0.196]], [[1, 0]]];\nexports.easeInSine = easeInSine;\nvar easeOutSine = [[[0, 1]], [[0.444, 0.448], [0.169, 0.736], [0.718, 0.16]], [[1, 0]]];\nexports.easeOutSine = easeOutSine;\nvar easeInOutSine = [[[0, 1]], [[0.5, 0.5], [0.2, 1], [0.8, 0]], [[1, 0]]];\n/**\r\n * @description Quad\r\n */\n\nexports.easeInOutSine = easeInOutSine;\nvar easeInQuad = [[[0, 1]], [[0.550, 0.584], [0.231, 0.904], [0.868, 0.264]], [[1, 0]]];\nexports.easeInQuad = easeInQuad;\nvar easeOutQuad = [[[0, 1]], [[0.413, 0.428], [0.065, 0.816], [0.760, 0.04]], [[1, 0]]];\nexports.easeOutQuad = easeOutQuad;\nvar easeInOutQuad = [[[0, 1]], [[0.5, 0.5], [0.3, 0.9], [0.7, 0.1]], [[1, 0]]];\n/**\r\n * @description Cubic\r\n */\n\nexports.easeInOutQuad = easeInOutQuad;\nvar easeInCubic = [[[0, 1]], [[0.679, 0.688], [0.366, 0.992], [0.992, 0.384]], [[1, 0]]];\nexports.easeInCubic = easeInCubic;\nvar easeOutCubic = [[[0, 1]], [[0.321, 0.312], [0.008, 0.616], [0.634, 0.008]], [[1, 0]]];\nexports.easeOutCubic = easeOutCubic;\nvar easeInOutCubic = [[[0, 1]], [[0.5, 0.5], [0.3, 1], [0.7, 0]], [[1, 0]]];\n/**\r\n * @description Quart\r\n */\n\nexports.easeInOutCubic = easeInOutCubic;\nvar easeInQuart = [[[0, 1]], [[0.812, 0.74], [0.611, 0.988], [1.013, 0.492]], [[1, 0]]];\nexports.easeInQuart = easeInQuart;\nvar easeOutQuart = [[[0, 1]], [[0.152, 0.244], [0.001, 0.448], [0.285, -0.02]], [[1, 0]]];\nexports.easeOutQuart = easeOutQuart;\nvar easeInOutQuart = [[[0, 1]], [[0.5, 0.5], [0.4, 1], [0.6, 0]], [[1, 0]]];\n/**\r\n * @description Quint\r\n */\n\nexports.easeInOutQuart = easeInOutQuart;\nvar easeInQuint = [[[0, 1]], [[0.857, 0.856], [0.714, 1], [1, 0.712]], [[1, 0]]];\nexports.easeInQuint = easeInQuint;\nvar easeOutQuint = [[[0, 1]], [[0.108, 0.2], [0.001, 0.4], [0.214, -0.012]], [[1, 0]]];\nexports.easeOutQuint = easeOutQuint;\nvar easeInOutQuint = [[[0, 1]], [[0.5, 0.5], [0.5, 1], [0.5, 0]], [[1, 0]]];\n/**\r\n * @description Back\r\n */\n\nexports.easeInOutQuint = easeInOutQuint;\nvar easeInBack = [[[0, 1]], [[0.667, 0.896], [0.380, 1.184], [0.955, 0.616]], [[1, 0]]];\nexports.easeInBack = easeInBack;\nvar easeOutBack = [[[0, 1]], [[0.335, 0.028], [0.061, 0.22], [0.631, -0.18]], [[1, 0]]];\nexports.easeOutBack = easeOutBack;\nvar easeInOutBack = [[[0, 1]], [[0.5, 0.5], [0.4, 1.4], [0.6, -0.4]], [[1, 0]]];\n/**\r\n * @description Elastic\r\n */\n\nexports.easeInOutBack = easeInOutBack;\nvar easeInElastic = [[[0, 1]], [[0.474, 0.964], [0.382, 0.988], [0.557, 0.952]], [[0.619, 1.076], [0.565, 1.088], [0.669, 1.08]], [[0.770, 0.916], [0.712, 0.924], [0.847, 0.904]], [[0.911, 1.304], [0.872, 1.316], [0.961, 1.34]], [[1, 0]]];\nexports.easeInElastic = easeInElastic;\nvar easeOutElastic = [[[0, 1]], [[0.073, -0.32], [0.034, -0.328], [0.104, -0.344]], [[0.191, 0.092], [0.110, 0.06], [0.256, 0.08]], [[0.310, -0.076], [0.260, -0.068], [0.357, -0.076]], [[0.432, 0.032], [0.362, 0.028], [0.683, -0.004]], [[1, 0]]];\nexports.easeOutElastic = easeOutElastic;\nvar easeInOutElastic = [[[0, 1]], [[0.210, 0.94], [0.167, 0.884], [0.252, 0.98]], [[0.299, 1.104], [0.256, 1.092], [0.347, 1.108]], [[0.5, 0.496], [0.451, 0.672], [0.548, 0.324]], [[0.696, -0.108], [0.652, -0.112], [0.741, -0.124]], [[0.805, 0.064], [0.756, 0.012], [0.866, 0.096]], [[1, 0]]];\n/**\r\n * @description Bounce\r\n */\n\nexports.easeInOutElastic = easeInOutElastic;\nvar easeInBounce = [[[0, 1]], [[0.148, 1], [0.075, 0.868], [0.193, 0.848]], [[0.326, 1], [0.276, 0.836], [0.405, 0.712]], [[0.600, 1], [0.511, 0.708], [0.671, 0.348]], [[1, 0]]];\nexports.easeInBounce = easeInBounce;\nvar easeOutBounce = [[[0, 1]], [[0.357, 0.004], [0.270, 0.592], [0.376, 0.252]], [[0.604, -0.004], [0.548, 0.312], [0.669, 0.184]], [[0.820, 0], [0.749, 0.184], [0.905, 0.132]], [[1, 0]]];\nexports.easeOutBounce = easeOutBounce;\nvar easeInOutBounce = [[[0, 1]], [[0.102, 1], [0.050, 0.864], [0.117, 0.86]], [[0.216, 0.996], [0.208, 0.844], [0.227, 0.808]], [[0.347, 0.996], [0.343, 0.8], [0.480, 0.292]], [[0.635, 0.004], [0.511, 0.676], [0.656, 0.208]], [[0.787, 0], [0.760, 0.2], [0.795, 0.144]], [[0.905, -0.004], [0.899, 0.164], [0.944, 0.144]], [[1, 0]]];\nexports.easeInOutBounce = easeInOutBounce;\n\nvar _default = new Map([['linear', linear], ['easeInSine', easeInSine], ['easeOutSine', easeOutSine], ['easeInOutSine', easeInOutSine], ['easeInQuad', easeInQuad], ['easeOutQuad', easeOutQuad], ['easeInOutQuad', easeInOutQuad], ['easeInCubic', easeInCubic], ['easeOutCubic', easeOutCubic], ['easeInOutCubic', easeInOutCubic], ['easeInQuart', easeInQuart], ['easeOutQuart', easeOutQuart], ['easeInOutQuart', easeInOutQuart], ['easeInQuint', easeInQuint], ['easeOutQuint', easeOutQuint], ['easeInOutQuint', easeInOutQuint], ['easeInBack', easeInBack], ['easeOutBack', easeOutBack], ['easeInOutBack', easeInOutBack], ['easeInElastic', easeInElastic], ['easeOutElastic', easeOutElastic], ['easeInOutElastic', easeInOutElastic], ['easeInBounce', easeInBounce], ['easeOutBounce', easeOutBounce], ['easeInOutBounce', easeInOutBounce]]);\n\nexports[\"default\"] = _default;","export function antDecorator(Vue) {\n return Vue.directive('decorator', {});\n}\n\nexport default {\n // just for tag\n install: function install(Vue) {\n antDecorator(Vue);\n }\n};","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('test')) == 'Symbol(test)';\n var symbolToString = uncurryThis(SymbolPrototype.toString);\n var symbolValueOf = uncurryThis(SymbolPrototype.valueOf);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineProperty(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = symbolValueOf(this);\n var string = symbolToString(symbol);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","var isPlainObject = require('./isPlainObject');\n\n/**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\nfunction customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n}\n\nmodule.exports = customOmitClone;\n","var toInteger = require('./toInteger');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\nfunction before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n}\n\nmodule.exports = before;\n","var global = require('../internals/global');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar Object = global.Object;\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof Object ? ObjectPrototype : null;\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.drawPolylinePath = drawPolylinePath;\nexports.drawBezierCurvePath = drawBezierCurvePath;\nexports[\"default\"] = void 0;\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\n/**\r\n * @description Draw a polyline path\r\n * @param {Object} ctx Canvas 2d context\r\n * @param {Array} points The points that makes up a polyline\r\n * @param {Boolean} beginPath Whether to execute beginPath\r\n * @param {Boolean} closePath Whether to execute closePath\r\n * @return {Undefined} Void\r\n */\nfunction drawPolylinePath(ctx, points) {\n var beginPath = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var closePath = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n if (!ctx || points.length < 2) return false;\n if (beginPath) ctx.beginPath();\n points.forEach(function (point, i) {\n return point && (i === 0 ? ctx.moveTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(point)) : ctx.lineTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(point)));\n });\n if (closePath) ctx.closePath();\n}\n/**\r\n * @description Draw a bezier curve path\r\n * @param {Object} ctx Canvas 2d context\r\n * @param {Array} points The points that makes up a bezier curve\r\n * @param {Array} moveTo The point need to excute moveTo\r\n * @param {Boolean} beginPath Whether to execute beginPath\r\n * @param {Boolean} closePath Whether to execute closePath\r\n * @return {Undefined} Void\r\n */\n\n\nfunction drawBezierCurvePath(ctx, points) {\n var moveTo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var beginPath = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n var closePath = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n if (!ctx || !points) return false;\n if (beginPath) ctx.beginPath();\n if (moveTo) ctx.moveTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(moveTo));\n points.forEach(function (item) {\n return item && ctx.bezierCurveTo.apply(ctx, (0, _toConsumableArray2[\"default\"])(item[0]).concat((0, _toConsumableArray2[\"default\"])(item[1]), (0, _toConsumableArray2[\"default\"])(item[2])));\n });\n if (closePath) ctx.closePath();\n}\n\nvar _default = {\n drawPolylinePath: drawPolylinePath,\n drawBezierCurvePath: drawBezierCurvePath\n};\nexports[\"default\"] = _default;","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _cloneDeep from \"lodash/cloneDeep\";\nvar globalState = {};\nvar deps = {}; // 触发全局监听\n\nfunction emitGlobal(state, prevState) {\n Object.keys(deps).forEach(function (id) {\n if (deps[id] instanceof Function) {\n deps[id](_cloneDeep(state), _cloneDeep(prevState));\n }\n });\n}\n\nexport function initGlobalState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (process.env.NODE_ENV === 'development') {\n console.warn(\"[qiankun] globalState tools will be removed in 3.0, pls don't use it!\");\n }\n\n if (state === globalState) {\n console.warn('[qiankun] state has not changed!');\n } else {\n var prevGlobalState = _cloneDeep(globalState);\n\n globalState = _cloneDeep(state);\n emitGlobal(globalState, prevGlobalState);\n }\n\n return getMicroAppStateActions(\"global-\".concat(+new Date()), true);\n}\nexport function getMicroAppStateActions(id, isMaster) {\n return {\n /**\n * onGlobalStateChange 全局依赖监听\n *\n * 收集 setState 时所需要触发的依赖\n *\n * 限制条件:每个子应用只有一个激活状态的全局监听,新监听覆盖旧监听,若只是监听部分属性,请使用 onGlobalStateChange\n *\n * 这么设计是为了减少全局监听滥用导致的内存爆炸\n *\n * 依赖数据结构为:\n * {\n * {id}: callback\n * }\n *\n * @param callback\n * @param fireImmediately\n */\n onGlobalStateChange: function onGlobalStateChange(callback, fireImmediately) {\n if (!(callback instanceof Function)) {\n console.error('[qiankun] callback must be function!');\n return;\n }\n\n if (deps[id]) {\n console.warn(\"[qiankun] '\".concat(id, \"' global listener already exists before this, new listener will overwrite it.\"));\n }\n\n deps[id] = callback;\n\n if (fireImmediately) {\n var cloneState = _cloneDeep(globalState);\n\n callback(cloneState, cloneState);\n }\n },\n\n /**\n * setGlobalState 更新 store 数据\n *\n * 1. 对输入 state 的第一层属性做校验,只有初始化时声明过的第一层(bucket)属性才会被更改\n * 2. 修改 store 并触发全局监听\n *\n * @param state\n */\n setGlobalState: function setGlobalState() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (state === globalState) {\n console.warn('[qiankun] state has not changed!');\n return false;\n }\n\n var changeKeys = [];\n\n var prevGlobalState = _cloneDeep(globalState);\n\n globalState = _cloneDeep(Object.keys(state).reduce(function (_globalState, changeKey) {\n if (isMaster || _globalState.hasOwnProperty(changeKey)) {\n changeKeys.push(changeKey);\n return Object.assign(_globalState, _defineProperty({}, changeKey, state[changeKey]));\n }\n\n console.warn(\"[qiankun] '\".concat(changeKey, \"' not declared when init state\\uFF01\"));\n return _globalState;\n }, globalState));\n\n if (changeKeys.length === 0) {\n console.warn('[qiankun] state has not changed!');\n return false;\n }\n\n emitGlobal(globalState, prevGlobalState);\n return true;\n },\n // 注销该应用下的依赖\n offGlobalStateChange: function offGlobalStateChange() {\n delete deps[id];\n return true;\n }\n };\n}","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/define-iterator');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var redefine = require('../internals/redefine');\n\nmodule.exports = function (target, src, options) {\n for (var key in src) redefine(target, key, src[key], options);\n return target;\n};\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var FunctionPrototype = Function.prototype;\nvar bind = FunctionPrototype.bind;\nvar call = FunctionPrototype.call;\nvar callBind = bind && bind.bind(call);\n\nmodule.exports = bind ? function (fn) {\n return fn && callBind(call, fn);\n} : function (fn) {\n return fn && function () {\n return call.apply(fn, arguments);\n };\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar nativeGetOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeGetOwnPropertyDescriptor(1); });\nvar FORCED = !DESCRIPTORS || FAILS_ON_PRIMITIVES;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\n$({ target: 'Object', stat: true, forced: FORCED, sham: !DESCRIPTORS }, {\n getOwnPropertyDescriptor: function getOwnPropertyDescriptor(it, key) {\n return nativeGetOwnPropertyDescriptor(toIndexedObject(it), key);\n }\n});\n","module.exports = true;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport defaultLocaleData from './default';\n\nexport default {\n name: 'LocaleReceiver',\n props: {\n componentName: PropTypes.string.def('global'),\n defaultLocale: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n children: PropTypes.func\n },\n inject: {\n localeData: { 'default': function _default() {\n return {};\n } }\n },\n methods: {\n getLocale: function getLocale() {\n var componentName = this.componentName,\n defaultLocale = this.defaultLocale;\n\n var locale = defaultLocale || defaultLocaleData[componentName || 'global'];\n var antLocale = this.localeData.antLocale;\n\n\n var localeFromContext = componentName && antLocale ? antLocale[componentName] : {};\n return _extends({}, typeof locale === 'function' ? locale() : locale, localeFromContext || {});\n },\n getLocaleCode: function getLocaleCode() {\n var antLocale = this.localeData.antLocale;\n\n var localeCode = antLocale && antLocale.locale;\n // Had use LocaleProvide but didn't set locale\n if (antLocale && antLocale.exist && !localeCode) {\n return defaultLocaleData.locale;\n }\n return localeCode;\n }\n },\n render: function render() {\n var $scopedSlots = this.$scopedSlots;\n\n var children = this.children || $scopedSlots['default'];\n var antLocale = this.localeData.antLocale;\n\n return children(this.getLocale(), this.getLocaleCode(), antLocale);\n }\n};","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar call = require('../internals/function-call');\nvar NativePromise = require('../internals/native-promise-constructor');\nvar redefine = require('../internals/redefine');\nvar redefineAll = require('../internals/redefine-all');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar inspectSource = require('../internals/inspect-source');\nvar iterate = require('../internals/iterate');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar promiseResolve = require('../internals/promise-resolve');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar isForced = require('../internals/is-forced');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_NODE = require('../internals/engine-is-node');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\n\nvar getInternalState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar NativePromisePrototype = NativePromise && NativePromise.prototype;\nvar PromiseConstructor = NativePromise;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar NATIVE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar SUBCLASSING = false;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\nvar FORCED = isForced(PROMISE, function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(PromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(PromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#finally in the pure version for preventing prototype pollution\n if (IS_PURE && !PromisePrototype['finally']) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (V8_VERSION >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;\n // Detect correctness of subclassing with @@species support\n var promise = new PromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return !GLOBAL_CORE_JS_PROMISE && IS_BROWSER && !NATIVE_REJECTION_EVENT;\n});\n\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () { /* empty */ });\n});\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n PromisePrototype = PromiseConstructor.prototype;\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n Internal.prototype = redefineAll(PromisePrototype, {\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.es/ecma262/#sec-promise.prototype.catch\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromise) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n redefine(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n\n // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\n redefine(NativePromisePrototype, 'catch', PromisePrototype['catch'], { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, wrap: true, forced: FORCED }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n\nPromiseWrapper = getBuiltIn(PROMISE);\n\n// statics\n$({ target: PROMISE, stat: true, forced: FORCED }, {\n // `Promise.reject` method\n // https://tc39.es/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n\n$({ target: PROMISE, stat: true, forced: IS_PURE || FORCED }, {\n // `Promise.resolve` method\n // https://tc39.es/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(IS_PURE && this === PromiseWrapper ? PromiseConstructor : this, x);\n }\n});\n\n$({ target: PROMISE, stat: true, forced: INCORRECT_ITERATION }, {\n // `Promise.all` method\n // https://tc39.es/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.es/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) == 'Array';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\n\nvar Array = global.Array;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar fix = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nvar FORCED = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n // https://github.com/tc39/proposal-well-formed-stringify\n $({ target: 'JSON', stat: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n for (var i = 0, l = arguments.length, args = Array(l); i < l; i++) args[i] = arguments[i];\n var result = apply($stringify, null, args);\n return typeof result == 'string' ? replace(result, tester, fix) : result;\n }\n });\n}\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","var asciiWords = require('./_asciiWords'),\n hasUnicodeWord = require('./_hasUnicodeWord'),\n toString = require('./toString'),\n unicodeWords = require('./_unicodeWords');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = words;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _regenerator = _interopRequireDefault(require(\"@babel/runtime/regenerator\"));\n\nvar _asyncToGenerator2 = _interopRequireDefault(require(\"@babel/runtime/helpers/asyncToGenerator\"));\n\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\n\nvar _toConsumableArray2 = _interopRequireDefault(require(\"@babel/runtime/helpers/toConsumableArray\"));\n\nvar _classCallCheck2 = _interopRequireDefault(require(\"@babel/runtime/helpers/classCallCheck\"));\n\nvar _style = _interopRequireDefault(require(\"./style.class\"));\n\nvar _transition = _interopRequireDefault(require(\"@jiaminghi/transition\"));\n\nvar _util = require(\"../plugin/util\");\n\n/**\r\n * @description Class Graph\r\n * @param {Object} graph Graph default configuration\r\n * @param {Object} config Graph config\r\n * @return {Graph} Instance of Graph\r\n */\nvar Graph = function Graph(graph, config) {\n (0, _classCallCheck2[\"default\"])(this, Graph);\n config = (0, _util.deepClone)(config, true);\n var defaultConfig = {\n /**\r\n * @description Weather to render graph\r\n * @type {Boolean}\r\n * @default visible = true\r\n */\n visible: true,\n\n /**\r\n * @description Whether to enable drag\r\n * @type {Boolean}\r\n * @default drag = false\r\n */\n drag: false,\n\n /**\r\n * @description Whether to enable hover\r\n * @type {Boolean}\r\n * @default hover = false\r\n */\n hover: false,\n\n /**\r\n * @description Graph rendering index\r\n * Give priority to index high graph in rendering\r\n * @type {Number}\r\n * @example index = 1\r\n */\n index: 1,\n\n /**\r\n * @description Animation delay time(ms)\r\n * @type {Number}\r\n * @default animationDelay = 0\r\n */\n animationDelay: 0,\n\n /**\r\n * @description Number of animation frames\r\n * @type {Number}\r\n * @default animationFrame = 30\r\n */\n animationFrame: 30,\n\n /**\r\n * @description Animation dynamic curve (Supported by transition)\r\n * @type {String}\r\n * @default animationCurve = 'linear'\r\n * @link https://github.com/jiaming743/Transition\r\n */\n animationCurve: 'linear',\n\n /**\r\n * @description Weather to pause graph animation\r\n * @type {Boolean}\r\n * @default animationPause = false\r\n */\n animationPause: false,\n\n /**\r\n * @description Rectangular hover detection zone\r\n * Use this method for hover detection first\r\n * @type {Null|Array}\r\n * @default hoverRect = null\r\n * @example hoverRect = [0, 0, 100, 100] // [Rect start x, y, Rect width, height]\r\n */\n hoverRect: null,\n\n /**\r\n * @description Mouse enter event handler\r\n * @type {Function|Null}\r\n * @default mouseEnter = null\r\n */\n mouseEnter: null,\n\n /**\r\n * @description Mouse outer event handler\r\n * @type {Function|Null}\r\n * @default mouseOuter = null\r\n */\n mouseOuter: null,\n\n /**\r\n * @description Mouse click event handler\r\n * @type {Function|Null}\r\n * @default click = null\r\n */\n click: null\n };\n var configAbleNot = {\n status: 'static',\n animationRoot: [],\n animationKeys: [],\n animationFrameState: [],\n cache: {}\n };\n if (!config.shape) config.shape = {};\n if (!config.style) config.style = {};\n var shape = Object.assign({}, graph.shape, config.shape);\n Object.assign(defaultConfig, config, configAbleNot);\n Object.assign(this, graph, defaultConfig);\n this.shape = shape;\n this.style = new _style[\"default\"](config.style);\n this.addedProcessor();\n};\n/**\r\n * @description Processor of added\r\n * @return {Undefined} Void\r\n */\n\n\nexports[\"default\"] = Graph;\n\nGraph.prototype.addedProcessor = function () {\n if (typeof this.setGraphCenter === 'function') this.setGraphCenter(null, this); // The life cycle 'added\"\n\n if (typeof this.added === 'function') this.added(this);\n};\n/**\r\n * @description Processor of draw\r\n * @param {CRender} render Instance of CRender\r\n * @param {Graph} graph Instance of Graph\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.drawProcessor = function (render, graph) {\n var ctx = render.ctx;\n graph.style.initStyle(ctx);\n if (typeof this.beforeDraw === 'function') this.beforeDraw(this, render);\n graph.draw(render, graph);\n if (typeof this.drawed === 'function') this.drawed(this, render);\n graph.style.restoreTransform(ctx);\n};\n/**\r\n * @description Processor of hover check\r\n * @param {Array} position Mouse Position\r\n * @param {Graph} graph Instance of Graph\r\n * @return {Boolean} Result of hover check\r\n */\n\n\nGraph.prototype.hoverCheckProcessor = function (position, _ref) {\n var hoverRect = _ref.hoverRect,\n style = _ref.style,\n hoverCheck = _ref.hoverCheck;\n var graphCenter = style.graphCenter,\n rotate = style.rotate,\n scale = style.scale,\n translate = style.translate;\n\n if (graphCenter) {\n if (rotate) position = (0, _util.getRotatePointPos)(-rotate, position, graphCenter);\n if (scale) position = (0, _util.getScalePointPos)(scale.map(function (s) {\n return 1 / s;\n }), position, graphCenter);\n if (translate) position = (0, _util.getTranslatePointPos)(translate.map(function (v) {\n return v * -1;\n }), position);\n }\n\n if (hoverRect) return _util.checkPointIsInRect.apply(void 0, [position].concat((0, _toConsumableArray2[\"default\"])(hoverRect)));\n return hoverCheck(position, this);\n};\n/**\r\n * @description Processor of move\r\n * @param {Event} e Mouse movement event\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.moveProcessor = function (e) {\n this.move(e, this);\n if (typeof this.beforeMove === 'function') this.beforeMove(e, this);\n if (typeof this.setGraphCenter === 'function') this.setGraphCenter(e, this);\n if (typeof this.moved === 'function') this.moved(e, this);\n};\n/**\r\n * @description Update graph state\r\n * @param {String} attrName Updated attribute name\r\n * @param {Any} change Updated value\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.attr = function (attrName) {\n var change = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n if (!attrName || change === undefined) return false;\n var isObject = (0, _typeof2[\"default\"])(this[attrName]) === 'object';\n if (isObject) change = (0, _util.deepClone)(change, true);\n var render = this.render;\n\n if (attrName === 'style') {\n this.style.update(change);\n } else if (isObject) {\n Object.assign(this[attrName], change);\n } else {\n this[attrName] = change;\n }\n\n if (attrName === 'index') render.sortGraphsByIndex();\n render.drawAllGraph();\n};\n/**\r\n * @description Update graphics state (with animation)\r\n * Only shape and style attributes are supported\r\n * @param {String} attrName Updated attribute name\r\n * @param {Any} change Updated value\r\n * @param {Boolean} wait Whether to store the animation waiting\r\n * for the next animation request\r\n * @return {Promise} Animation Promise\r\n */\n\n\nGraph.prototype.animation =\n/*#__PURE__*/\nfunction () {\n var _ref2 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee2(attrName, change) {\n var wait,\n changeRoot,\n changeKeys,\n beforeState,\n animationFrame,\n animationCurve,\n animationDelay,\n animationFrameState,\n render,\n _args2 = arguments;\n return _regenerator[\"default\"].wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n wait = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : false;\n\n if (!(attrName !== 'shape' && attrName !== 'style')) {\n _context2.next = 4;\n break;\n }\n\n console.error('Only supported shape and style animation!');\n return _context2.abrupt(\"return\");\n\n case 4:\n change = (0, _util.deepClone)(change, true);\n if (attrName === 'style') this.style.colorProcessor(change);\n changeRoot = this[attrName];\n changeKeys = Object.keys(change);\n beforeState = {};\n changeKeys.forEach(function (key) {\n return beforeState[key] = changeRoot[key];\n });\n animationFrame = this.animationFrame, animationCurve = this.animationCurve, animationDelay = this.animationDelay;\n animationFrameState = (0, _transition[\"default\"])(animationCurve, beforeState, change, animationFrame, true);\n this.animationRoot.push(changeRoot);\n this.animationKeys.push(changeKeys);\n this.animationFrameState.push(animationFrameState);\n\n if (!wait) {\n _context2.next = 17;\n break;\n }\n\n return _context2.abrupt(\"return\");\n\n case 17:\n if (!(animationDelay > 0)) {\n _context2.next = 20;\n break;\n }\n\n _context2.next = 20;\n return delay(animationDelay);\n\n case 20:\n render = this.render;\n return _context2.abrupt(\"return\", new Promise(\n /*#__PURE__*/\n function () {\n var _ref3 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee(resolve) {\n return _regenerator[\"default\"].wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return render.launchAnimation();\n\n case 2:\n resolve();\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function (_x3) {\n return _ref3.apply(this, arguments);\n };\n }()));\n\n case 22:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n return function (_x, _x2) {\n return _ref2.apply(this, arguments);\n };\n}();\n/**\r\n * @description Extract the next frame of data from the animation queue\r\n * and update the graph state\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.turnNextAnimationFrame = function (timeStamp) {\n var animationDelay = this.animationDelay,\n animationRoot = this.animationRoot,\n animationKeys = this.animationKeys,\n animationFrameState = this.animationFrameState,\n animationPause = this.animationPause;\n if (animationPause) return;\n if (Date.now() - timeStamp < animationDelay) return;\n animationRoot.forEach(function (root, i) {\n animationKeys[i].forEach(function (key) {\n root[key] = animationFrameState[i][0][key];\n });\n });\n animationFrameState.forEach(function (stateItem, i) {\n stateItem.shift();\n var noFrame = stateItem.length === 0;\n if (noFrame) animationRoot[i] = null;\n if (noFrame) animationKeys[i] = null;\n });\n this.animationFrameState = animationFrameState.filter(function (state) {\n return state.length;\n });\n this.animationRoot = animationRoot.filter(function (root) {\n return root;\n });\n this.animationKeys = animationKeys.filter(function (keys) {\n return keys;\n });\n};\n/**\r\n * @description Skip to the last frame of animation\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.animationEnd = function () {\n var animationFrameState = this.animationFrameState,\n animationKeys = this.animationKeys,\n animationRoot = this.animationRoot,\n render = this.render;\n animationRoot.forEach(function (root, i) {\n var currentKeys = animationKeys[i];\n var lastState = animationFrameState[i].pop();\n currentKeys.forEach(function (key) {\n return root[key] = lastState[key];\n });\n });\n this.animationFrameState = [];\n this.animationKeys = [];\n this.animationRoot = [];\n return render.drawAllGraph();\n};\n/**\r\n * @description Pause animation behavior\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.pauseAnimation = function () {\n this.attr('animationPause', true);\n};\n/**\r\n * @description Try animation behavior\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.playAnimation = function () {\n var render = this.render;\n this.attr('animationPause', false);\n return new Promise(\n /*#__PURE__*/\n function () {\n var _ref4 = (0, _asyncToGenerator2[\"default\"])(\n /*#__PURE__*/\n _regenerator[\"default\"].mark(function _callee3(resolve) {\n return _regenerator[\"default\"].wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return render.launchAnimation();\n\n case 2:\n resolve();\n\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function (_x4) {\n return _ref4.apply(this, arguments);\n };\n }());\n};\n/**\r\n * @description Processor of delete\r\n * @param {CRender} render Instance of CRender\r\n * @return {Undefined} Void\r\n */\n\n\nGraph.prototype.delProcessor = function (render) {\n var _this = this;\n\n var graphs = render.graphs;\n var index = graphs.findIndex(function (graph) {\n return graph === _this;\n });\n if (index === -1) return;\n if (typeof this.beforeDelete === 'function') this.beforeDelete(this);\n graphs.splice(index, 1, null);\n if (typeof this.deleted === 'function') this.deleted(this);\n};\n/**\r\n * @description Return a timed release Promise\r\n * @param {Number} time Release time\r\n * @return {Promise} A timed release Promise\r\n */\n\n\nfunction delay(time) {\n return new Promise(function (resolve) {\n setTimeout(resolve, time);\n });\n}","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(\n '_'\n ),\n weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Home.vue?vue&type=style&index=0&id=0713771e&lang=scss&scoped=true&\"","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","var createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\nvar snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n});\n\nmodule.exports = snakeCase;\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.barConfig = void 0;\nvar barConfig = {\n /**\n * @description Whether to display this bar chart\n * @type {Boolean}\n * @default show = true\n */\n show: true,\n\n /**\n * @description Legend name\n * @type {String}\n * @default name = ''\n */\n name: '',\n\n /**\n * @description Data stacking\n * The data value of the series element of the same stack\n * will be superimposed (the latter value will be superimposed on the previous value)\n * @type {String}\n * @default stack = ''\n */\n stack: '',\n\n /**\n * @description Bar shape type\n * @type {String}\n * @default shapeType = 'normal'\n * @example shapeType = 'normal' | 'leftEchelon' | 'rightEchelon'\n */\n shapeType: 'normal',\n\n /**\n * @description Echelon bar sharpness offset\n * @type {Number}\n * @default echelonOffset = 10\n */\n echelonOffset: 10,\n\n /**\n * @description Bar width\n * This property should be set on the last 'bar' series\n * in this coordinate system to take effect and will be in effect\n * for all 'bar' series in this coordinate system\n * @type {String|Number}\n * @default barWidth = 'auto'\n * @example barWidth = 'auto' | '10%' | 20\n */\n barWidth: 'auto',\n\n /**\n * @description Bar gap\n * This property should be set on the last 'bar' series\n * in this coordinate system to take effect and will be in effect\n * for all 'bar' series in this coordinate system\n * @type {String|Number}\n * @default barGap = '30%'\n * @example barGap = '30%' | 30\n */\n barGap: '30%',\n\n /**\n * @description Bar category gap\n * This property should be set on the last 'bar' series\n * in this coordinate system to take effect and will be in effect\n * for all 'bar' series in this coordinate system\n * @type {String|Number}\n * @default barCategoryGap = '20%'\n * @example barCategoryGap = '20%' | 20\n */\n barCategoryGap: '20%',\n\n /**\n * @description Bar x axis index\n * @type {Number}\n * @default xAxisIndex = 0\n * @example xAxisIndex = 0 | 1\n */\n xAxisIndex: 0,\n\n /**\n * @description Bar y axis index\n * @type {Number}\n * @default yAxisIndex = 0\n * @example yAxisIndex = 0 | 1\n */\n yAxisIndex: 0,\n\n /**\n * @description Bar chart data\n * @type {Array}\n * @default data = []\n * @example data = [100, 200, 300]\n */\n data: [],\n\n /**\n * @description Background bar configuration\n * @type {Object}\n */\n backgroundBar: {\n /**\n * @description Whether to display background bar\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Background bar width\n * @type {String|Number}\n * @default width = 'auto'\n * @example width = 'auto' | '30%' | 30\n */\n width: 'auto',\n\n /**\n * @description Background bar default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fill: 'rgba(200, 200, 200, .4)'\n }\n },\n\n /**\n * @description Bar label configuration\n * @type {Object}\n */\n label: {\n /**\n * @description Whether to display bar label\n * @type {Boolean}\n * @default show = false\n */\n show: false,\n\n /**\n * @description Bar label position\n * @type {String}\n * @default position = 'top'\n * @example position = 'top' | 'center' | 'bottom'\n */\n position: 'top',\n\n /**\n * @description Bar label offset\n * @type {Array}\n * @default offset = [0, -10]\n */\n offset: [0, -10],\n\n /**\n * @description Bar label formatter\n * @type {String|Function}\n * @default formatter = null\n * @example formatter = '{value}件'\n * @example formatter = (dataItem) => (dataItem.value)\n */\n formatter: null,\n\n /**\n * @description Bar label default style configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n style: {\n fontSize: 10\n }\n },\n\n /**\n * @description Bar gradient configuration\n * @type {Object}\n */\n gradient: {\n /**\n * @description Gradient color (Hex|rgb|rgba)\n * @type {Array}\n * @default color = []\n */\n color: [],\n\n /**\n * @description Local gradient\n * @type {Boolean}\n * @default local = true\n */\n local: true\n },\n\n /**\n * @description Bar style default configuration\n * @type {Object}\n * @default style = {Configuration Of Class Style}\n */\n barStyle: {},\n\n /**\n * @description Independent color mode\n * When set to true, independent color mode is enabled\n * @type {Boolean}\n * @default independentColor = false\n */\n independentColor: false,\n\n /**\n * @description Independent colors\n * Only effective when independent color mode is enabled\n * Default value is the same as the color in the root configuration\n * Two-dimensional color array can produce gradient colors\n * @type {Array}\n * @example independentColor = ['#fff', '#000']\n * @example independentColor = [['#fff', '#000'], '#000']\n */\n independentColors: [],\n\n /**\n * @description Bar chart render level\n * Priority rendering high level\n * @type {Number}\n * @default rLevel = 0\n */\n rLevel: 0,\n\n /**\n * @description Bar animation curve\n * @type {String}\n * @default animationCurve = 'easeOutCubic'\n */\n animationCurve: 'easeOutCubic',\n\n /**\n * @description Bar animation frame\n * @type {Number}\n * @default animationFrame = 50\n */\n animationFrame: 50\n};\nexports.barConfig = barConfig;","var $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar isObject = require('../internals/is-object');\nvar hasOwn = require('../internals/has-own-property');\nvar defineProperty = require('../internals/object-define-property').f;\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternalModule = require('../internals/object-get-own-property-names-external');\nvar isExtensible = require('../internals/object-is-extensible');\nvar uid = require('../internals/uid');\nvar FREEZING = require('../internals/freezing');\n\nvar REQUIRED = false;\nvar METADATA = uid('meta');\nvar id = 0;\n\nvar setMetadata = function (it) {\n defineProperty(it, METADATA, { value: {\n objectID: 'O' + id++, // object ID\n weakData: {} // weak collections IDs\n } });\n};\n\nvar fastKey = function (it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMetadata(it);\n // return object ID\n } return it[METADATA].objectID;\n};\n\nvar getWeakData = function (it, create) {\n if (!hasOwn(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMetadata(it);\n // return the store of weak collections IDs\n } return it[METADATA].weakData;\n};\n\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZING && REQUIRED && isExtensible(it) && !hasOwn(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar enable = function () {\n meta.enable = function () { /* empty */ };\n REQUIRED = true;\n var getOwnPropertyNames = getOwnPropertyNamesModule.f;\n var splice = uncurryThis([].splice);\n var test = {};\n test[METADATA] = 1;\n\n // prevent exposing of metadata key\n if (getOwnPropertyNames(test).length) {\n getOwnPropertyNamesModule.f = function (it) {\n var result = getOwnPropertyNames(it);\n for (var i = 0, length = result.length; i < length; i++) {\n if (result[i] === METADATA) {\n splice(result, i, 1);\n break;\n }\n } return result;\n };\n\n $({ target: 'Object', stat: true, forced: true }, {\n getOwnPropertyNames: getOwnPropertyNamesExternalModule.f\n });\n }\n};\n\nvar meta = module.exports = {\n enable: enable,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n\nhiddenKeys[METADATA] = true;\n","\"use strict\";\n/**\n * A response from a web request\n */\nvar Response = /** @class */ (function () {\n function Response(statusCode, headers, body, url) {\n if (typeof statusCode !== 'number') {\n throw new TypeError('statusCode must be a number but was ' + typeof statusCode);\n }\n if (headers === null) {\n throw new TypeError('headers cannot be null');\n }\n if (typeof headers !== 'object') {\n throw new TypeError('headers must be an object but was ' + typeof headers);\n }\n this.statusCode = statusCode;\n var headersToLowerCase = {};\n for (var key in headers) {\n headersToLowerCase[key.toLowerCase()] = headers[key];\n }\n this.headers = headersToLowerCase;\n this.body = body;\n this.url = url;\n }\n Response.prototype.isError = function () {\n return this.statusCode === 0 || this.statusCode >= 400;\n };\n Response.prototype.getBody = function (encoding) {\n if (this.statusCode === 0) {\n var err = new Error('This request to ' +\n this.url +\n ' resulted in a status code of 0. This usually indicates some kind of network error in a browser (e.g. CORS not being set up or the DNS failing to resolve):\\n' +\n this.body.toString());\n err.statusCode = this.statusCode;\n err.headers = this.headers;\n err.body = this.body;\n err.url = this.url;\n throw err;\n }\n if (this.statusCode >= 300) {\n var err = new Error('Server responded to ' +\n this.url +\n ' with status code ' +\n this.statusCode +\n ':\\n' +\n this.body.toString());\n err.statusCode = this.statusCode;\n err.headers = this.headers;\n err.body = this.body;\n err.url = this.url;\n throw err;\n }\n if (!encoding || typeof this.body === 'string') {\n return this.body;\n }\n return this.body.toString(encoding);\n };\n return Response;\n}());\nmodule.exports = Response;\n","// based on rc-resize-observer 0.1.3\nimport ResizeObserver from 'resize-observer-polyfill';\n\n// Still need to be compatible with React 15, we use class component here\nvar VueResizeObserver = {\n name: 'ResizeObserver',\n props: {\n disabled: Boolean\n },\n data: function data() {\n this.currentElement = null;\n this.resizeObserver = null;\n return {\n width: 0,\n height: 0\n };\n },\n mounted: function mounted() {\n this.onComponentUpdated();\n },\n updated: function updated() {\n this.onComponentUpdated();\n },\n beforeDestroy: function beforeDestroy() {\n this.destroyObserver();\n },\n\n methods: {\n onComponentUpdated: function onComponentUpdated() {\n var disabled = this.$props.disabled;\n\n // Unregister if disabled\n\n if (disabled) {\n this.destroyObserver();\n return;\n }\n\n // Unregister if element changed\n var element = this.$el;\n var elementChanged = element !== this.currentElement;\n if (elementChanged) {\n this.destroyObserver();\n this.currentElement = element;\n }\n\n if (!this.resizeObserver && element) {\n this.resizeObserver = new ResizeObserver(this.onResize);\n this.resizeObserver.observe(element);\n }\n },\n onResize: function onResize(entries) {\n var target = entries[0].target;\n\n var _target$getBoundingCl = target.getBoundingClientRect(),\n width = _target$getBoundingCl.width,\n height = _target$getBoundingCl.height;\n /**\n * Resize observer trigger when content size changed.\n * In most case we just care about element size,\n * let's use `boundary` instead of `contentRect` here to avoid shaking.\n */\n\n\n var fixedWidth = Math.floor(width);\n var fixedHeight = Math.floor(height);\n\n if (this.width !== fixedWidth || this.height !== fixedHeight) {\n var size = { width: fixedWidth, height: fixedHeight };\n this.width = fixedWidth;\n this.height = fixedHeight;\n this.$emit('resize', size);\n }\n },\n destroyObserver: function destroyObserver() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n },\n\n render: function render() {\n return this.$slots['default'][0];\n }\n};\n\nexport default VueResizeObserver;","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport raf from 'raf';\n\nexport default function throttleByAnimationFrame(fn) {\n var requestId = void 0;\n\n var later = function later(args) {\n return function () {\n requestId = null;\n fn.apply(undefined, _toConsumableArray(args));\n };\n };\n\n var throttled = function throttled() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (requestId == null) {\n requestId = raf(later(args));\n }\n };\n\n throttled.cancel = function () {\n return raf.cancel(requestId);\n };\n\n return throttled;\n}\n\nexport function throttleByAnimationFrameDecorator() {\n return function (target, key, descriptor) {\n var fn = descriptor.value;\n var definingProperty = false;\n return {\n configurable: true,\n get: function get() {\n if (definingProperty || this === target.prototype || this.hasOwnProperty(key)) {\n return fn;\n }\n\n var boundFn = throttleByAnimationFrame(fn.bind(this));\n definingProperty = true;\n Object.defineProperty(this, key, {\n value: boundFn,\n configurable: true,\n writable: true\n });\n definingProperty = false;\n return boundFn;\n }\n };\n };\n}","export default {\n functional: true,\n PRESENTED_IMAGE_DEFAULT: true,\n render: function render() {\n var h = arguments[0];\n\n return h(\n \"svg\",\n {\n attrs: { width: \"184\", height: \"152\", viewBox: \"0 0 184 152\", xmlns: \"http://www.w3.org/2000/svg\" }\n },\n [h(\n \"g\",\n {\n attrs: { fill: \"none\", fillRule: \"evenodd\" }\n },\n [h(\n \"g\",\n {\n attrs: { transform: \"translate(24 31.67)\" }\n },\n [h(\"ellipse\", {\n attrs: {\n fillOpacity: \".8\",\n fill: \"#F5F5F7\",\n cx: \"67.797\",\n cy: \"106.89\",\n rx: \"67.797\",\n ry: \"12.668\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M122.034 69.674L98.109 40.229c-1.148-1.386-2.826-2.225-4.593-2.225h-51.44c-1.766 0-3.444.839-4.592 2.225L13.56 69.674v15.383h108.475V69.674z\",\n fill: \"#AEB8C2\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M101.537 86.214L80.63 61.102c-1.001-1.207-2.507-1.867-4.048-1.867H31.724c-1.54 0-3.047.66-4.048 1.867L6.769 86.214v13.792h94.768V86.214z\",\n fill: \"url(#linearGradient-1)\",\n transform: \"translate(13.56)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M33.83 0h67.933a4 4 0 0 1 4 4v93.344a4 4 0 0 1-4 4H33.83a4 4 0 0 1-4-4V4a4 4 0 0 1 4-4z\",\n fill: \"#F5F5F7\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M42.678 9.953h50.237a2 2 0 0 1 2 2V36.91a2 2 0 0 1-2 2H42.678a2 2 0 0 1-2-2V11.953a2 2 0 0 1 2-2zM42.94 49.767h49.713a2.262 2.262 0 1 1 0 4.524H42.94a2.262 2.262 0 0 1 0-4.524zM42.94 61.53h49.713a2.262 2.262 0 1 1 0 4.525H42.94a2.262 2.262 0 0 1 0-4.525zM121.813 105.032c-.775 3.071-3.497 5.36-6.735 5.36H20.515c-3.238 0-5.96-2.29-6.734-5.36a7.309 7.309 0 0 1-.222-1.79V69.675h26.318c2.907 0 5.25 2.448 5.25 5.42v.04c0 2.971 2.37 5.37 5.277 5.37h34.785c2.907 0 5.277-2.421 5.277-5.393V75.1c0-2.972 2.343-5.426 5.25-5.426h26.318v33.569c0 .617-.077 1.216-.221 1.789z\",\n fill: \"#DCE0E6\"\n }\n })]\n ), h(\"path\", {\n attrs: {\n d: \"M149.121 33.292l-6.83 2.65a1 1 0 0 1-1.317-1.23l1.937-6.207c-2.589-2.944-4.109-6.534-4.109-10.408C138.802 8.102 148.92 0 161.402 0 173.881 0 184 8.102 184 18.097c0 9.995-10.118 18.097-22.599 18.097-4.528 0-8.744-1.066-12.28-2.902z\",\n fill: \"#DCE0E6\"\n }\n }), h(\n \"g\",\n {\n attrs: { transform: \"translate(149.65 15.383)\", fill: \"#FFF\" }\n },\n [h(\"ellipse\", {\n attrs: { cx: \"20.654\", cy: \"3.167\", rx: \"2.849\", ry: \"2.815\" }\n }), h(\"path\", {\n attrs: { d: \"M5.698 5.63H0L2.898.704zM9.259.704h4.985V5.63H9.259z\" }\n })]\n )]\n )]\n );\n }\n};","export default {\n functional: true,\n PRESENTED_IMAGE_SIMPLE: true,\n render: function render() {\n var h = arguments[0];\n\n return h(\n \"svg\",\n {\n attrs: { width: \"64\", height: \"41\", viewBox: \"0 0 64 41\", xmlns: \"http://www.w3.org/2000/svg\" }\n },\n [h(\n \"g\",\n {\n attrs: { transform: \"translate(0 1)\", fill: \"none\", fillRule: \"evenodd\" }\n },\n [h(\"ellipse\", {\n attrs: { fill: \"#F5F5F5\", cx: \"32\", cy: \"33\", rx: \"32\", ry: \"7\" }\n }), h(\n \"g\",\n {\n attrs: { fillRule: \"nonzero\", stroke: \"#D9D9D9\" }\n },\n [h(\"path\", {\n attrs: { d: \"M55 12.76L44.854 1.258C44.367.474 43.656 0 42.907 0H21.093c-.749 0-1.46.474-1.947 1.257L9 12.761V22h46v-9.24z\" }\n }), h(\"path\", {\n attrs: {\n d: \"M41.613 15.931c0-1.605.994-2.93 2.227-2.931H55v18.137C55 33.26 53.68 35 52.05 35h-40.1C10.32 35 9 33.259 9 31.137V13h11.16c1.233 0 2.227 1.323 2.227 2.928v.022c0 1.605 1.005 2.901 2.237 2.901h14.752c1.232 0 2.237-1.308 2.237-2.913v-.007z\",\n fill: \"#FAFAFA\"\n }\n })]\n )]\n )]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { getComponentFromProp, getListeners } from '../_util/props-util';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport DefaultEmptyImg from './empty';\nimport SimpleEmptyImg from './simple';\nimport Base from '../base';\n\nexport var TransferLocale = function TransferLocale() {\n return {\n description: PropTypes.string\n };\n};\n\nexport var EmptyProps = function EmptyProps() {\n return {\n prefixCls: PropTypes.string,\n image: PropTypes.any,\n description: PropTypes.any,\n imageStyle: PropTypes.object\n };\n};\n\nvar Empty = {\n name: 'AEmpty',\n props: _extends({}, EmptyProps()),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n renderEmpty: function renderEmpty(contentLocale) {\n var h = this.$createElement;\n var _$props = this.$props,\n customizePrefixCls = _$props.prefixCls,\n imageStyle = _$props.imageStyle;\n var getPrefixCls = this.configProvider.getPrefixCls;\n\n var prefixCls = getPrefixCls('empty', customizePrefixCls);\n var image = getComponentFromProp(this, 'image') || h(DefaultEmptyImg);\n var description = getComponentFromProp(this, 'description');\n\n var des = typeof description !== 'undefined' ? description : contentLocale.description;\n var alt = typeof des === 'string' ? des : 'empty';\n var cls = _defineProperty({}, prefixCls, true);\n var imageNode = null;\n if (typeof image === 'string') {\n imageNode = h('img', {\n attrs: { alt: alt, src: image }\n });\n } else if ((typeof image === 'undefined' ? 'undefined' : _typeof(image)) === 'object' && image.PRESENTED_IMAGE_SIMPLE) {\n var Image = image;\n imageNode = h(Image);\n cls[prefixCls + '-normal'] = true;\n } else {\n imageNode = image;\n }\n return h(\n 'div',\n _mergeJSXProps([{ 'class': cls }, { on: getListeners(this) }]),\n [h(\n 'div',\n { 'class': prefixCls + '-image', style: imageStyle },\n [imageNode]\n ), des && h(\n 'p',\n { 'class': prefixCls + '-description' },\n [des]\n ), this.$slots['default'] && h(\n 'div',\n { 'class': prefixCls + '-footer' },\n [this.$slots['default']]\n )]\n );\n }\n },\n render: function render() {\n var h = arguments[0];\n\n return h(LocaleReceiver, {\n attrs: { componentName: 'Empty' },\n scopedSlots: { 'default': this.renderEmpty } });\n }\n};\n\nEmpty.PRESENTED_IMAGE_DEFAULT = DefaultEmptyImg;\nEmpty.PRESENTED_IMAGE_SIMPLE = SimpleEmptyImg;\n\n/* istanbul ignore next */\nEmpty.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Empty.name, Empty);\n};\n\nexport default Empty;","import PropTypes from '../_util/vue-types';\nimport Empty from '../empty';\nimport { ConfigConsumerProps } from './configConsumerProps';\n\nvar RenderEmpty = {\n functional: true,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n props: {\n componentName: PropTypes.string\n },\n render: function render(createElement, context) {\n var h = arguments[0];\n var props = context.props,\n injections = context.injections;\n\n function renderHtml(componentName) {\n var getPrefixCls = injections.configProvider.getPrefixCls;\n var prefix = getPrefixCls('empty');\n switch (componentName) {\n case 'Table':\n case 'List':\n return h(Empty, {\n attrs: { image: Empty.PRESENTED_IMAGE_SIMPLE }\n });\n\n case 'Select':\n case 'TreeSelect':\n case 'Cascader':\n case 'Transfer':\n case 'Mentions':\n return h(Empty, {\n attrs: { image: Empty.PRESENTED_IMAGE_SIMPLE },\n 'class': prefix + '-small' });\n\n default:\n return h(Empty);\n }\n }\n return renderHtml(props.componentName);\n }\n};\n\nfunction renderEmpty(h, componentName) {\n return h(RenderEmpty, {\n attrs: { componentName: componentName }\n });\n}\n\nexport default renderEmpty;","import defaultRenderEmpty from './renderEmpty';\n\nexport var ConfigConsumerProps = {\n getPrefixCls: function getPrefixCls(suffixCls, customizePrefixCls) {\n if (customizePrefixCls) return customizePrefixCls;\n return 'ant-' + suffixCls;\n },\n renderEmpty: defaultRenderEmpty\n};","import addDOMEventListener from 'add-dom-event-listener';\n\nexport default function addEventListenerWrap(target, eventType, cb, option) {\n return addDOMEventListener(target, eventType, cb, option);\n}","import addEventListener from '../vc-util/Dom/addEventListener';\n\nexport function getTargetRect(target) {\n return target !== window ? target.getBoundingClientRect() : { top: 0, bottom: window.innerHeight };\n}\n\nexport function getFixedTop(placeholderReact, targetRect, offsetTop) {\n if (offsetTop !== undefined && targetRect.top > placeholderReact.top - offsetTop) {\n return offsetTop + targetRect.top + 'px';\n }\n return undefined;\n}\n\nexport function getFixedBottom(placeholderReact, targetRect, offsetBottom) {\n if (offsetBottom !== undefined && targetRect.bottom < placeholderReact.bottom + offsetBottom) {\n var targetBottomOffset = window.innerHeight - targetRect.bottom;\n return offsetBottom + targetBottomOffset + 'px';\n }\n return undefined;\n}\n\n// ======================== Observer ========================\nvar TRIGGER_EVENTS = ['resize', 'scroll', 'touchstart', 'touchmove', 'touchend', 'pageshow', 'load'];\n\nvar observerEntities = [];\n\nexport function getObserverEntities() {\n // Only used in test env. Can be removed if refactor.\n return observerEntities;\n}\n\nexport function addObserveTarget(target, affix) {\n if (!target) return;\n\n var entity = observerEntities.find(function (item) {\n return item.target === target;\n });\n\n if (entity) {\n entity.affixList.push(affix);\n } else {\n entity = {\n target: target,\n affixList: [affix],\n eventHandlers: {}\n };\n observerEntities.push(entity);\n\n // Add listener\n TRIGGER_EVENTS.forEach(function (eventName) {\n entity.eventHandlers[eventName] = addEventListener(target, eventName, function () {\n entity.affixList.forEach(function (targetAffix) {\n targetAffix.lazyUpdatePosition();\n });\n });\n });\n }\n}\n\nexport function removeObserveTarget(affix) {\n var observerEntity = observerEntities.find(function (oriObserverEntity) {\n var hasAffix = oriObserverEntity.affixList.some(function (item) {\n return item === affix;\n });\n if (hasAffix) {\n oriObserverEntity.affixList = oriObserverEntity.affixList.filter(function (item) {\n return item !== affix;\n });\n }\n return hasAffix;\n });\n\n if (observerEntity && observerEntity.affixList.length === 0) {\n observerEntities = observerEntities.filter(function (item) {\n return item !== observerEntity;\n });\n\n // Remove listener\n TRIGGER_EVENTS.forEach(function (eventName) {\n var handler = observerEntity.eventHandlers[eventName];\n if (handler && handler.remove) {\n handler.remove();\n }\n });\n }\n}","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport omit from 'omit.js';\nimport ResizeObserver from '../vc-resize-observer';\nimport BaseMixin from '../_util/BaseMixin';\nimport throttleByAnimationFrame from '../_util/throttleByAnimationFrame';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\nimport warning from '../_util/warning';\nimport { addObserveTarget, removeObserveTarget, getTargetRect, getFixedTop, getFixedBottom } from './utils';\n\nfunction getDefaultTarget() {\n return typeof window !== 'undefined' ? window : null;\n}\n\n// Affix\nvar AffixProps = {\n /**\n * 距离窗口顶部达到指定偏移量后触发\n */\n offsetTop: PropTypes.number,\n offset: PropTypes.number,\n /** 距离窗口底部达到指定偏移量后触发 */\n offsetBottom: PropTypes.number,\n /** 固定状态改变时触发的回调函数 */\n // onChange?: (affixed?: boolean) => void;\n /** 设置 Affix 需要监听其滚动事件的元素,值为一个返回对应 DOM 元素的函数 */\n target: PropTypes.func.def(getDefaultTarget),\n prefixCls: PropTypes.string\n};\nvar AffixStatus = {\n None: 'none',\n Prepare: 'Prepare'\n};\nvar Affix = {\n name: 'AAffix',\n props: AffixProps,\n mixins: [BaseMixin],\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n affixStyle: undefined,\n placeholderStyle: undefined,\n status: AffixStatus.None,\n lastAffix: false,\n prevTarget: null\n };\n },\n beforeMount: function beforeMount() {\n this.updatePosition = throttleByAnimationFrame(this.updatePosition);\n this.lazyUpdatePosition = throttleByAnimationFrame(this.lazyUpdatePosition);\n },\n mounted: function mounted() {\n var _this = this;\n\n var target = this.target;\n\n if (target) {\n // [Legacy] Wait for parent component ref has its value.\n // We should use target as directly element instead of function which makes element check hard.\n this.timeout = setTimeout(function () {\n addObserveTarget(target(), _this);\n // Mock Event object.\n _this.updatePosition();\n });\n }\n },\n updated: function updated() {\n this.measure();\n },\n\n watch: {\n target: function target(val) {\n var newTarget = null;\n if (val) {\n newTarget = val() || null;\n }\n if (this.prevTarget !== newTarget) {\n removeObserveTarget(this);\n if (newTarget) {\n addObserveTarget(newTarget, this);\n // Mock Event object.\n this.updatePosition();\n }\n this.prevTarget = newTarget;\n }\n },\n offsetTop: function offsetTop() {\n this.updatePosition();\n },\n offsetBottom: function offsetBottom() {\n this.updatePosition();\n }\n },\n beforeDestroy: function beforeDestroy() {\n clearTimeout(this.timeout);\n removeObserveTarget(this);\n this.updatePosition.cancel();\n // https://github.com/ant-design/ant-design/issues/22683\n this.lazyUpdatePosition.cancel();\n },\n\n methods: {\n getOffsetTop: function getOffsetTop() {\n var offset = this.offset,\n offsetBottom = this.offsetBottom;\n var offsetTop = this.offsetTop;\n\n if (typeof offsetTop === 'undefined') {\n offsetTop = offset;\n warning(typeof offset === 'undefined', 'Affix', '`offset` is deprecated. Please use `offsetTop` instead.');\n }\n\n if (offsetBottom === undefined && offsetTop === undefined) {\n offsetTop = 0;\n }\n return offsetTop;\n },\n getOffsetBottom: function getOffsetBottom() {\n return this.offsetBottom;\n },\n\n // =================== Measure ===================\n measure: function measure() {\n var status = this.status,\n lastAffix = this.lastAffix;\n var target = this.target;\n\n if (status !== AffixStatus.Prepare || !this.$refs.fixedNode || !this.$refs.placeholderNode || !target) {\n return;\n }\n\n var offsetTop = this.getOffsetTop();\n var offsetBottom = this.getOffsetBottom();\n\n var targetNode = target();\n if (!targetNode) {\n return;\n }\n\n var newState = {\n status: AffixStatus.None\n };\n var targetRect = getTargetRect(targetNode);\n var placeholderReact = getTargetRect(this.$refs.placeholderNode);\n var fixedTop = getFixedTop(placeholderReact, targetRect, offsetTop);\n var fixedBottom = getFixedBottom(placeholderReact, targetRect, offsetBottom);\n if (fixedTop !== undefined) {\n newState.affixStyle = {\n position: 'fixed',\n top: fixedTop,\n width: placeholderReact.width + 'px',\n height: placeholderReact.height + 'px'\n };\n newState.placeholderStyle = {\n width: placeholderReact.width + 'px',\n height: placeholderReact.height + 'px'\n };\n } else if (fixedBottom !== undefined) {\n newState.affixStyle = {\n position: 'fixed',\n bottom: fixedBottom,\n width: placeholderReact.width + 'px',\n height: placeholderReact.height + 'px'\n };\n newState.placeholderStyle = {\n width: placeholderReact.width + 'px',\n height: placeholderReact.height + 'px'\n };\n }\n\n newState.lastAffix = !!newState.affixStyle;\n if (lastAffix !== newState.lastAffix) {\n this.$emit('change', newState.lastAffix);\n }\n\n this.setState(newState);\n },\n\n\n // @ts-ignore TS6133\n prepareMeasure: function prepareMeasure() {\n this.setState({\n status: AffixStatus.Prepare,\n affixStyle: undefined,\n placeholderStyle: undefined\n });\n this.$forceUpdate();\n\n // Test if `updatePosition` called\n if (process.env.NODE_ENV === 'test') {\n this.$emit('testUpdatePosition');\n }\n },\n updatePosition: function updatePosition() {\n this.prepareMeasure();\n },\n lazyUpdatePosition: function lazyUpdatePosition() {\n var target = this.target;\n var affixStyle = this.affixStyle;\n\n // Check position change before measure to make Safari smooth\n\n if (target && affixStyle) {\n var offsetTop = this.getOffsetTop();\n var offsetBottom = this.getOffsetBottom();\n\n var targetNode = target();\n if (targetNode && this.$refs.placeholderNode) {\n var targetRect = getTargetRect(targetNode);\n var placeholderReact = getTargetRect(this.$refs.placeholderNode);\n var fixedTop = getFixedTop(placeholderReact, targetRect, offsetTop);\n var fixedBottom = getFixedBottom(placeholderReact, targetRect, offsetBottom);\n\n if (fixedTop !== undefined && affixStyle.top === fixedTop || fixedBottom !== undefined && affixStyle.bottom === fixedBottom) {\n return;\n }\n }\n }\n // Directly call prepare measure since it's already throttled.\n this.prepareMeasure();\n }\n },\n\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n affixStyle = this.affixStyle,\n placeholderStyle = this.placeholderStyle,\n $slots = this.$slots,\n $props = this.$props;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var className = classNames(_defineProperty({}, getPrefixCls('affix', prefixCls), affixStyle));\n\n var props = {\n attrs: omit($props, ['prefixCls', 'offsetTop', 'offsetBottom', 'target'])\n };\n return h(\n ResizeObserver,\n {\n on: {\n 'resize': function resize() {\n _this2.updatePosition();\n }\n }\n },\n [h(\n 'div',\n _mergeJSXProps([props, { style: placeholderStyle, ref: 'placeholderNode' }]),\n [h(\n 'div',\n { 'class': className, ref: 'fixedNode', style: affixStyle },\n [$slots['default']]\n )]\n )]\n );\n }\n};\n\n/* istanbul ignore next */\nAffix.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Affix.name, Affix);\n};\n\nexport default Affix;","export default function getScroll(target, top) {\n if (typeof window === 'undefined') {\n return 0;\n }\n\n var prop = top ? 'pageYOffset' : 'pageXOffset';\n var method = top ? 'scrollTop' : 'scrollLeft';\n var isWindow = target === window;\n\n var ret = isWindow ? target[prop] : target[method];\n // ie6,7,8 standard mode\n if (isWindow && typeof ret !== 'number') {\n ret = window.document.documentElement[method];\n }\n\n return ret;\n}","export function easeInOutCubic(t, b, c, d) {\n var cc = c - b;\n t /= d / 2;\n if (t < 1) {\n return cc / 2 * t * t * t + b;\n }\n return cc / 2 * ((t -= 2) * t * t + 2) + b;\n}","import raf from 'raf';\nimport getScroll from './getScroll';\nimport { easeInOutCubic } from './easings';\n\n// interface ScrollToOptions {\n// /** Scroll container, default as window */\n// getContainer?: () => HTMLElement | Window;\n// /** Scroll end callback */\n// callback?: () => any;\n// /** Animation duration, default as 450 */\n// duration?: number;\n// }\n\nexport default function scrollTo(y) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$getContainer = options.getContainer,\n getContainer = _options$getContainer === undefined ? function () {\n return window;\n } : _options$getContainer,\n callback = options.callback,\n _options$duration = options.duration,\n duration = _options$duration === undefined ? 450 : _options$duration;\n\n\n var container = getContainer();\n var scrollTop = getScroll(container, true);\n var startTime = Date.now();\n\n var frameFunc = function frameFunc() {\n var timestamp = Date.now();\n var time = timestamp - startTime;\n var nextScrollTop = easeInOutCubic(time > duration ? duration : time, scrollTop, y, duration);\n if (container === window) {\n window.scrollTo(window.pageXOffset, nextScrollTop);\n } else {\n container.scrollTop = nextScrollTop;\n }\n if (time < duration) {\n raf(frameFunc);\n } else if (typeof callback === 'function') {\n callback();\n }\n };\n raf(frameFunc);\n}","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport Affix from '../affix';\nimport scrollTo from '../_util/scrollTo';\nimport getScroll from '../_util/getScroll';\nimport { initDefaultProps } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nfunction getDefaultContainer() {\n return window;\n}\n\nfunction getOffsetTop(element, container) {\n if (!element) {\n return 0;\n }\n\n if (!element.getClientRects().length) {\n return 0;\n }\n\n var rect = element.getBoundingClientRect();\n\n if (rect.width || rect.height) {\n if (container === window) {\n container = element.ownerDocument.documentElement;\n return rect.top - container.clientTop;\n }\n return rect.top - container.getBoundingClientRect().top;\n }\n\n return rect.top;\n}\n\n// function easeInOutCubic(t, b, c, d) {\n// const cc = c - b;\n// t /= d / 2;\n// if (t < 1) {\n// return (cc / 2) * t * t * t + b;\n// }\n// return (cc / 2) * ((t -= 2) * t * t + 2) + b;\n// }\n\nvar sharpMatcherRegx = /#([^#]+)$/;\n// function scrollTo(href, offsetTop = 0, getContainer, callback = () => {}) {\n// const container = getContainer();\n// const scrollTop = getScroll(container, true);\n// const sharpLinkMatch = sharpMatcherRegx.exec(href);\n// if (!sharpLinkMatch) {\n// return;\n// }\n// const targetElement = document.getElementById(sharpLinkMatch[1]);\n// if (!targetElement) {\n// return;\n// }\n// const eleOffsetTop = getOffsetTop(targetElement, container);\n// const targetScrollTop = scrollTop + eleOffsetTop - offsetTop;\n// const startTime = Date.now();\n// const frameFunc = () => {\n// const timestamp = Date.now();\n// const time = timestamp - startTime;\n// const nextScrollTop = easeInOutCubic(time, scrollTop, targetScrollTop, 450);\n// if (container === window) {\n// window.scrollTo(window.pageXOffset, nextScrollTop);\n// } else {\n// container.scrollTop = nextScrollTop;\n// }\n// if (time < 450) {\n// raf(frameFunc);\n// } else {\n// callback();\n// }\n// };\n// raf(frameFunc);\n// }\n\nexport var AnchorProps = {\n prefixCls: PropTypes.string,\n offsetTop: PropTypes.number,\n bounds: PropTypes.number,\n affix: PropTypes.bool,\n showInkInFixed: PropTypes.bool,\n getContainer: PropTypes.func,\n wrapperClass: PropTypes.string,\n wrapperStyle: PropTypes.object,\n getCurrentAnchor: PropTypes.func,\n targetOffset: PropTypes.number\n};\n\nexport default {\n name: 'AAnchor',\n mixins: [BaseMixin],\n inheritAttrs: false,\n props: initDefaultProps(AnchorProps, {\n affix: true,\n showInkInFixed: false,\n getContainer: getDefaultContainer\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n this.links = [];\n this._sPrefixCls = '';\n return {\n activeLink: null\n };\n },\n provide: function provide() {\n var _this = this;\n\n return {\n antAnchor: {\n registerLink: function registerLink(link) {\n if (!_this.links.includes(link)) {\n _this.links.push(link);\n }\n },\n unregisterLink: function unregisterLink(link) {\n var index = _this.links.indexOf(link);\n if (index !== -1) {\n _this.links.splice(index, 1);\n }\n },\n $data: this.$data,\n scrollTo: this.handleScrollTo\n },\n antAnchorContext: this\n };\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.$nextTick(function () {\n var getContainer = _this2.getContainer;\n\n _this2.scrollContainer = getContainer();\n _this2.scrollEvent = addEventListener(_this2.scrollContainer, 'scroll', _this2.handleScroll);\n _this2.handleScroll();\n });\n },\n updated: function updated() {\n var _this3 = this;\n\n this.$nextTick(function () {\n if (_this3.scrollEvent) {\n var getContainer = _this3.getContainer;\n\n var currentContainer = getContainer();\n if (_this3.scrollContainer !== currentContainer) {\n _this3.scrollContainer = currentContainer;\n _this3.scrollEvent.remove();\n _this3.scrollEvent = addEventListener(_this3.scrollContainer, 'scroll', _this3.handleScroll);\n _this3.handleScroll();\n }\n }\n _this3.updateInk();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.scrollEvent) {\n this.scrollEvent.remove();\n }\n },\n\n methods: {\n getCurrentActiveLink: function getCurrentActiveLink() {\n var offsetTop = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var bounds = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 5;\n var getCurrentAnchor = this.getCurrentAnchor;\n\n\n if (typeof getCurrentAnchor === 'function') {\n return getCurrentAnchor();\n }\n var activeLink = '';\n if (typeof document === 'undefined') {\n return activeLink;\n }\n\n var linkSections = [];\n var getContainer = this.getContainer;\n\n var container = getContainer();\n this.links.forEach(function (link) {\n var sharpLinkMatch = sharpMatcherRegx.exec(link.toString());\n if (!sharpLinkMatch) {\n return;\n }\n var target = document.getElementById(sharpLinkMatch[1]);\n if (target) {\n var top = getOffsetTop(target, container);\n if (top < offsetTop + bounds) {\n linkSections.push({\n link: link,\n top: top\n });\n }\n }\n });\n\n if (linkSections.length) {\n var maxSection = linkSections.reduce(function (prev, curr) {\n return curr.top > prev.top ? curr : prev;\n });\n return maxSection.link;\n }\n return '';\n },\n handleScrollTo: function handleScrollTo(link) {\n var _this4 = this;\n\n var offsetTop = this.offsetTop,\n getContainer = this.getContainer,\n targetOffset = this.targetOffset;\n\n\n this.setCurrentActiveLink(link);\n var container = getContainer();\n var scrollTop = getScroll(container, true);\n var sharpLinkMatch = sharpMatcherRegx.exec(link);\n if (!sharpLinkMatch) {\n return;\n }\n var targetElement = document.getElementById(sharpLinkMatch[1]);\n if (!targetElement) {\n return;\n }\n\n var eleOffsetTop = getOffsetTop(targetElement, container);\n var y = scrollTop + eleOffsetTop;\n y -= targetOffset !== undefined ? targetOffset : offsetTop || 0;\n this.animating = true;\n\n scrollTo(y, {\n callback: function callback() {\n _this4.animating = false;\n },\n getContainer: getContainer\n });\n },\n setCurrentActiveLink: function setCurrentActiveLink(link) {\n var activeLink = this.activeLink;\n\n\n if (activeLink !== link) {\n this.setState({\n activeLink: link\n });\n this.$emit('change', link);\n }\n },\n handleScroll: function handleScroll() {\n if (this.animating) {\n return;\n }\n var offsetTop = this.offsetTop,\n bounds = this.bounds,\n targetOffset = this.targetOffset;\n\n var currentActiveLink = this.getCurrentActiveLink(targetOffset !== undefined ? targetOffset : offsetTop || 0, bounds);\n this.setCurrentActiveLink(currentActiveLink);\n },\n updateInk: function updateInk() {\n if (typeof document === 'undefined') {\n return;\n }\n var _sPrefixCls = this._sPrefixCls;\n\n var linkNode = this.$el.getElementsByClassName(_sPrefixCls + '-link-title-active')[0];\n if (linkNode) {\n this.$refs.inkNode.style.top = linkNode.offsetTop + linkNode.clientHeight / 2 - 4.5 + 'px';\n }\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n offsetTop = this.offsetTop,\n affix = this.affix,\n showInkInFixed = this.showInkInFixed,\n activeLink = this.activeLink,\n $slots = this.$slots,\n getContainer = this.getContainer;\n\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('anchor', customizePrefixCls);\n this._sPrefixCls = prefixCls;\n\n var inkClass = classNames(prefixCls + '-ink-ball', {\n visible: activeLink\n });\n\n var wrapperClass = classNames(this.wrapperClass, prefixCls + '-wrapper');\n\n var anchorClass = classNames(prefixCls, {\n fixed: !affix && !showInkInFixed\n });\n\n var wrapperStyle = _extends({\n maxHeight: offsetTop ? 'calc(100vh - ' + offsetTop + 'px)' : '100vh'\n }, this.wrapperStyle);\n\n var anchorContent = h(\n 'div',\n { 'class': wrapperClass, style: wrapperStyle },\n [h(\n 'div',\n { 'class': anchorClass },\n [h(\n 'div',\n { 'class': prefixCls + '-ink' },\n [h('span', { 'class': inkClass, ref: 'inkNode' })]\n ), $slots['default']]\n )]\n );\n\n return !affix ? anchorContent : h(\n Affix,\n {\n attrs: { offsetTop: offsetTop, target: getContainer }\n },\n [anchorContent]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps, getComponentFromProp } from '../_util/props-util';\nimport classNames from 'classnames';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport var AnchorLinkProps = {\n prefixCls: PropTypes.string,\n href: PropTypes.string,\n title: PropTypes.any,\n target: PropTypes.string\n};\n\nexport default {\n name: 'AAnchorLink',\n props: initDefaultProps(AnchorLinkProps, {\n href: '#'\n }),\n inject: {\n antAnchor: { 'default': function _default() {\n return {};\n } },\n antAnchorContext: { 'default': function _default() {\n return {};\n } },\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n watch: {\n href: function href(val, oldVal) {\n var _this = this;\n\n this.$nextTick(function () {\n _this.antAnchor.unregisterLink(oldVal);\n _this.antAnchor.registerLink(val);\n });\n }\n },\n\n mounted: function mounted() {\n this.antAnchor.registerLink(this.href);\n },\n beforeDestroy: function beforeDestroy() {\n this.antAnchor.unregisterLink(this.href);\n },\n\n methods: {\n handleClick: function handleClick(e) {\n this.antAnchor.scrollTo(this.href);\n var scrollTo = this.antAnchor.scrollTo;\n var _$props = this.$props,\n href = _$props.href,\n title = _$props.title;\n\n if (this.antAnchorContext.$emit) {\n this.antAnchorContext.$emit('click', e, { title: title, href: href });\n }\n scrollTo(href);\n }\n },\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n href = this.href,\n $slots = this.$slots,\n target = this.target;\n\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('anchor', customizePrefixCls);\n\n var title = getComponentFromProp(this, 'title');\n var active = this.antAnchor.$data.activeLink === href;\n var wrapperClassName = classNames(prefixCls + '-link', _defineProperty({}, prefixCls + '-link-active', active));\n var titleClassName = classNames(prefixCls + '-link-title', _defineProperty({}, prefixCls + '-link-title-active', active));\n return h(\n 'div',\n { 'class': wrapperClassName },\n [h(\n 'a',\n {\n 'class': titleClassName,\n attrs: { href: href,\n title: typeof title === 'string' ? title : '',\n target: target\n },\n on: {\n 'click': this.handleClick\n }\n },\n [title]\n ), $slots['default']]\n );\n }\n};","import Anchor from './Anchor';\nimport AnchorLink from './AnchorLink';\nimport Base from '../base';\n\nAnchor.Link = AnchorLink;\n\n/* istanbul ignore next */\nAnchor.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Anchor.name, Anchor);\n Vue.component(Anchor.Link.name, Anchor.Link);\n};\nexport { AnchorProps } from './Anchor';\nexport { AnchorLinkProps } from './AnchorLink';\nexport default Anchor;","import PropTypes from '../_util/vue-types';\n\nexport default {\n props: {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n disabled: PropTypes.bool,\n title: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n },\n isSelectOption: true\n};","import PropTypes from '../_util/vue-types';\nexport default {\n props: {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n },\n isSelectOptGroup: true\n};","/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nvar KeyCode = {\n /**\n * MAC_ENTER\n */\n MAC_ENTER: 3,\n /**\n * BACKSPACE\n */\n BACKSPACE: 8,\n /**\n * TAB\n */\n TAB: 9,\n /**\n * NUMLOCK on FF/Safari Mac\n */\n NUM_CENTER: 12, // NUMLOCK on FF/Safari Mac\n /**\n * ENTER\n */\n ENTER: 13,\n /**\n * SHIFT\n */\n SHIFT: 16,\n /**\n * CTRL\n */\n CTRL: 17,\n /**\n * ALT\n */\n ALT: 18,\n /**\n * PAUSE\n */\n PAUSE: 19,\n /**\n * CAPS_LOCK\n */\n CAPS_LOCK: 20,\n /**\n * ESC\n */\n ESC: 27,\n /**\n * SPACE\n */\n SPACE: 32,\n /**\n * PAGE_UP\n */\n PAGE_UP: 33, // also NUM_NORTH_EAST\n /**\n * PAGE_DOWN\n */\n PAGE_DOWN: 34, // also NUM_SOUTH_EAST\n /**\n * END\n */\n END: 35, // also NUM_SOUTH_WEST\n /**\n * HOME\n */\n HOME: 36, // also NUM_NORTH_WEST\n /**\n * LEFT\n */\n LEFT: 37, // also NUM_WEST\n /**\n * UP\n */\n UP: 38, // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39, // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40, // also NUM_SOUTH\n /**\n * PRINT_SCREEN\n */\n PRINT_SCREEN: 44,\n /**\n * INSERT\n */\n INSERT: 45, // also NUM_INSERT\n /**\n * DELETE\n */\n DELETE: 46, // also NUM_DELETE\n /**\n * ZERO\n */\n ZERO: 48,\n /**\n * ONE\n */\n ONE: 49,\n /**\n * TWO\n */\n TWO: 50,\n /**\n * THREE\n */\n THREE: 51,\n /**\n * FOUR\n */\n FOUR: 52,\n /**\n * FIVE\n */\n FIVE: 53,\n /**\n * SIX\n */\n SIX: 54,\n /**\n * SEVEN\n */\n SEVEN: 55,\n /**\n * EIGHT\n */\n EIGHT: 56,\n /**\n * NINE\n */\n NINE: 57,\n /**\n * QUESTION_MARK\n */\n QUESTION_MARK: 63, // needs localization\n /**\n * A\n */\n A: 65,\n /**\n * B\n */\n B: 66,\n /**\n * C\n */\n C: 67,\n /**\n * D\n */\n D: 68,\n /**\n * E\n */\n E: 69,\n /**\n * F\n */\n F: 70,\n /**\n * G\n */\n G: 71,\n /**\n * H\n */\n H: 72,\n /**\n * I\n */\n I: 73,\n /**\n * J\n */\n J: 74,\n /**\n * K\n */\n K: 75,\n /**\n * L\n */\n L: 76,\n /**\n * M\n */\n M: 77,\n /**\n * N\n */\n N: 78,\n /**\n * O\n */\n O: 79,\n /**\n * P\n */\n P: 80,\n /**\n * Q\n */\n Q: 81,\n /**\n * R\n */\n R: 82,\n /**\n * S\n */\n S: 83,\n /**\n * T\n */\n T: 84,\n /**\n * U\n */\n U: 85,\n /**\n * V\n */\n V: 86,\n /**\n * W\n */\n W: 87,\n /**\n * X\n */\n X: 88,\n /**\n * Y\n */\n Y: 89,\n /**\n * Z\n */\n Z: 90,\n /**\n * META\n */\n META: 91, // WIN_KEY_LEFT\n /**\n * WIN_KEY_RIGHT\n */\n WIN_KEY_RIGHT: 92,\n /**\n * CONTEXT_MENU\n */\n CONTEXT_MENU: 93,\n /**\n * NUM_ZERO\n */\n NUM_ZERO: 96,\n /**\n * NUM_ONE\n */\n NUM_ONE: 97,\n /**\n * NUM_TWO\n */\n NUM_TWO: 98,\n /**\n * NUM_THREE\n */\n NUM_THREE: 99,\n /**\n * NUM_FOUR\n */\n NUM_FOUR: 100,\n /**\n * NUM_FIVE\n */\n NUM_FIVE: 101,\n /**\n * NUM_SIX\n */\n NUM_SIX: 102,\n /**\n * NUM_SEVEN\n */\n NUM_SEVEN: 103,\n /**\n * NUM_EIGHT\n */\n NUM_EIGHT: 104,\n /**\n * NUM_NINE\n */\n NUM_NINE: 105,\n /**\n * NUM_MULTIPLY\n */\n NUM_MULTIPLY: 106,\n /**\n * NUM_PLUS\n */\n NUM_PLUS: 107,\n /**\n * NUM_MINUS\n */\n NUM_MINUS: 109,\n /**\n * NUM_PERIOD\n */\n NUM_PERIOD: 110,\n /**\n * NUM_DIVISION\n */\n NUM_DIVISION: 111,\n /**\n * F1\n */\n F1: 112,\n /**\n * F2\n */\n F2: 113,\n /**\n * F3\n */\n F3: 114,\n /**\n * F4\n */\n F4: 115,\n /**\n * F5\n */\n F5: 116,\n /**\n * F6\n */\n F6: 117,\n /**\n * F7\n */\n F7: 118,\n /**\n * F8\n */\n F8: 119,\n /**\n * F9\n */\n F9: 120,\n /**\n * F10\n */\n F10: 121,\n /**\n * F11\n */\n F11: 122,\n /**\n * F12\n */\n F12: 123,\n /**\n * NUMLOCK\n */\n NUMLOCK: 144,\n /**\n * SEMICOLON\n */\n SEMICOLON: 186, // needs localization\n /**\n * DASH\n */\n DASH: 189, // needs localization\n /**\n * EQUALS\n */\n EQUALS: 187, // needs localization\n /**\n * COMMA\n */\n COMMA: 188, // needs localization\n /**\n * PERIOD\n */\n PERIOD: 190, // needs localization\n /**\n * SLASH\n */\n SLASH: 191, // needs localization\n /**\n * APOSTROPHE\n */\n APOSTROPHE: 192, // needs localization\n /**\n * SINGLE_QUOTE\n */\n SINGLE_QUOTE: 222, // needs localization\n /**\n * OPEN_SQUARE_BRACKET\n */\n OPEN_SQUARE_BRACKET: 219, // needs localization\n /**\n * BACKSLASH\n */\n BACKSLASH: 220, // needs localization\n /**\n * CLOSE_SQUARE_BRACKET\n */\n CLOSE_SQUARE_BRACKET: 221, // needs localization\n /**\n * WIN_KEY\n */\n WIN_KEY: 224,\n /**\n * MAC_FF_META\n */\n MAC_FF_META: 224, // Firefox (Gecko) fires this for the meta key instead of 91\n /**\n * WIN_IME\n */\n WIN_IME: 229\n};\n\n/*\n whether text and modified key is entered at the same time.\n */\nKeyCode.isTextModifyingKeyEvent = function isTextModifyingKeyEvent(e) {\n var keyCode = e.keyCode;\n if (e.altKey && !e.ctrlKey || e.metaKey ||\n // Function keys don't generate text\n keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12) {\n return false;\n }\n\n // The following keys are quite harmless, even in combination with\n // CTRL, ALT or SHIFT.\n switch (keyCode) {\n case KeyCode.ALT:\n case KeyCode.CAPS_LOCK:\n case KeyCode.CONTEXT_MENU:\n case KeyCode.CTRL:\n case KeyCode.DOWN:\n case KeyCode.END:\n case KeyCode.ESC:\n case KeyCode.HOME:\n case KeyCode.INSERT:\n case KeyCode.LEFT:\n case KeyCode.MAC_FF_META:\n case KeyCode.META:\n case KeyCode.NUMLOCK:\n case KeyCode.NUM_CENTER:\n case KeyCode.PAGE_DOWN:\n case KeyCode.PAGE_UP:\n case KeyCode.PAUSE:\n case KeyCode.PRINT_SCREEN:\n case KeyCode.RIGHT:\n case KeyCode.SHIFT:\n case KeyCode.UP:\n case KeyCode.WIN_KEY:\n case KeyCode.WIN_KEY_RIGHT:\n return false;\n default:\n return true;\n }\n};\n\n/*\n whether character is entered.\n */\nKeyCode.isCharacterKey = function isCharacterKey(keyCode) {\n if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE) {\n return true;\n }\n\n if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY) {\n return true;\n }\n\n if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z) {\n return true;\n }\n\n // Safari sends zero key code for non-latin characters.\n if (window.navigation.userAgent.indexOf('WebKit') !== -1 && keyCode === 0) {\n return true;\n }\n\n switch (keyCode) {\n case KeyCode.SPACE:\n case KeyCode.QUESTION_MARK:\n case KeyCode.NUM_PLUS:\n case KeyCode.NUM_MINUS:\n case KeyCode.NUM_PERIOD:\n case KeyCode.NUM_DIVISION:\n case KeyCode.SEMICOLON:\n case KeyCode.DASH:\n case KeyCode.EQUALS:\n case KeyCode.COMMA:\n case KeyCode.PERIOD:\n case KeyCode.SLASH:\n case KeyCode.APOSTROPHE:\n case KeyCode.SINGLE_QUOTE:\n case KeyCode.OPEN_SQUARE_BRACKET:\n case KeyCode.BACKSLASH:\n case KeyCode.CLOSE_SQUARE_BRACKET:\n return true;\n default:\n return false;\n }\n};\n\nexport default KeyCode;","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\n\nfunction getClientPosition(elem) {\n var box;\n var x;\n var y;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement; // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n\n box = elem.getBoundingClientRect(); // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top; // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n\n if (typeof ret !== 'number') {\n var d = w.document; // ie6,7,8 standard mode\n\n ret = d.documentElement[method];\n\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n\nfunction _getComputedStyle(elem, name, computedStyle_) {\n var val = '';\n var d = elem.ownerDocument;\n var computedStyle = computedStyle_ || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61\n\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp(\"^(\".concat(RE_NUM, \")(?!px)[a-z%]+$\"), 'i');\n\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content\n\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out\n\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX; // Revert the changed values\n\n style[LEFT] = left;\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n\n return ret === '' ? 'auto' : ret;\n}\n\nvar getComputedStyleX;\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name; // Remember the old values, and insert the new ones\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem); // Revert the old values\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop;\n var j;\n var i;\n\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = void 0;\n\n if (prop === 'border') {\n cssProp = \"\".concat(prop + which[i], \"Width\");\n } else {\n cssProp = prop + which[i];\n }\n\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n\n return value;\n}\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\n\n\nfunction isWindow(obj) {\n // must use == for ie8\n\n /* eslint eqeqeq:0 */\n return obj != null && obj == obj.window;\n}\n\nvar domUtils = {};\neach(['Width', 'Height'], function (name) {\n domUtils[\"doc\".concat(name)] = function (refWin) {\n var d = refWin.document;\n return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[\"scroll\".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[\"scroll\".concat(name)], domUtils[\"viewport\".concat(name)](d));\n };\n\n domUtils[\"viewport\".concat(name)] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = \"client\".concat(name);\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop]; // 标准模式取 documentElement\n // backcompat 取 body\n\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\n\nfunction getWH(elem, name, extra) {\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n var cssBoxValue = 0;\n\n if (borderBoxValue == null || borderBoxValue <= 0) {\n borderBoxValue = undefined; // Fall back to computed then un computed css if necessary\n\n cssBoxValue = getComputedStyleX(elem, name);\n\n if (cssBoxValue == null || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n } // Normalize '', auto, and prepare for extra\n\n\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n\n return cssBoxValue;\n }\n\n if (borderBoxValueOrIsBorderBox) {\n var padding = extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which);\n return val + (extra === BORDER_INDEX ? 0 : padding);\n }\n\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n}; // fix #119 : https://github.com/kissyteam/kissy/issues/119\n\nfunction getWHIgnoreDisplay(elem) {\n var val;\n var args = arguments; // in case elem is window\n // elem.offsetWidth === undefined\n\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n\n return val;\n}\n\nfunction css(el, name, v) {\n var value = v;\n\n if (_typeof(name) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n\n return undefined;\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value += 'px';\n }\n\n el.style[name] = value;\n return undefined;\n }\n\n return getComputedStyleX(el, name);\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n\n domUtils[\"outer\".concat(first)] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, val) {\n if (val !== undefined) {\n if (elem) {\n var computedStyle = getComputedStyleX(elem);\n var isBorderBox = isBorderBoxFn(elem);\n\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n\n return css(elem, name, val);\n }\n\n return undefined;\n }\n\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n}); // 设置 elem 相对 elem.ownerDocument 的坐标\n\nfunction setOffset(elem, offset) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var old = getOffset(elem);\n var ret = {};\n var current;\n var key;\n\n for (key in offset) {\n if (offset.hasOwnProperty(key)) {\n current = parseFloat(css(elem, key)) || 0;\n ret[key] = current + offset[key] - old[key];\n }\n }\n\n css(elem, ret);\n}\n\nvar util = _objectSpread2({\n getWindow: function getWindow(node) {\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n offset: function offset(el, value) {\n if (typeof value !== 'undefined') {\n setOffset(el, value);\n } else {\n return getOffset(el);\n }\n },\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var ret = {};\n\n for (var i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n\n var overflow = obj.overflow;\n\n if (overflow) {\n for (var _i in obj) {\n if (obj.hasOwnProperty(_i)) {\n ret.overflow[_i] = obj.overflow[_i];\n }\n }\n }\n\n return ret;\n },\n scrollLeft: function scrollLeft(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollLeft(w);\n }\n\n window.scrollTo(v, getScrollTop(w));\n } else {\n if (v === undefined) {\n return w.scrollLeft;\n }\n\n w.scrollLeft = v;\n }\n },\n scrollTop: function scrollTop(w, v) {\n if (isWindow(w)) {\n if (v === undefined) {\n return getScrollTop(w);\n }\n\n window.scrollTo(getScrollLeft(w), v);\n } else {\n if (v === undefined) {\n return w.scrollTop;\n }\n\n w.scrollTop = v;\n }\n },\n viewportWidth: 0,\n viewportHeight: 0\n}, domUtils);\n\nfunction scrollIntoView(elem, container, config) {\n config = config || {}; // document 归一化到 window\n\n if (container.nodeType === 9) {\n container = util.getWindow(container);\n }\n\n var allowHorizontalScroll = config.allowHorizontalScroll;\n var onlyScrollIfNeeded = config.onlyScrollIfNeeded;\n var alignWithTop = config.alignWithTop;\n var alignWithLeft = config.alignWithLeft;\n var offsetTop = config.offsetTop || 0;\n var offsetLeft = config.offsetLeft || 0;\n var offsetBottom = config.offsetBottom || 0;\n var offsetRight = config.offsetRight || 0;\n allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;\n var isWin = util.isWindow(container);\n var elemOffset = util.offset(elem);\n var eh = util.outerHeight(elem);\n var ew = util.outerWidth(elem);\n var containerOffset;\n var ch;\n var cw;\n var containerScroll;\n var diffTop;\n var diffBottom;\n var win;\n var winScroll;\n var ww;\n var wh;\n\n if (isWin) {\n win = container;\n wh = util.height(win);\n ww = util.width(win);\n winScroll = {\n left: util.scrollLeft(win),\n top: util.scrollTop(win)\n }; // elem 相对 container 可视视窗的距离\n\n diffTop = {\n left: elemOffset.left - winScroll.left - offsetLeft,\n top: elemOffset.top - winScroll.top - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (winScroll.left + ww) + offsetRight,\n top: elemOffset.top + eh - (winScroll.top + wh) + offsetBottom\n };\n containerScroll = winScroll;\n } else {\n containerOffset = util.offset(container);\n ch = container.clientHeight;\n cw = container.clientWidth;\n containerScroll = {\n left: container.scrollLeft,\n top: container.scrollTop\n }; // elem 相对 container 可视视窗的距离\n // 注意边框, offset 是边框到根节点\n\n diffTop = {\n left: elemOffset.left - (containerOffset.left + (parseFloat(util.css(container, 'borderLeftWidth')) || 0)) - offsetLeft,\n top: elemOffset.top - (containerOffset.top + (parseFloat(util.css(container, 'borderTopWidth')) || 0)) - offsetTop\n };\n diffBottom = {\n left: elemOffset.left + ew - (containerOffset.left + cw + (parseFloat(util.css(container, 'borderRightWidth')) || 0)) + offsetRight,\n top: elemOffset.top + eh - (containerOffset.top + ch + (parseFloat(util.css(container, 'borderBottomWidth')) || 0)) + offsetBottom\n };\n }\n\n if (diffTop.top < 0 || diffBottom.top > 0) {\n // 强制向上\n if (alignWithTop === true) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else if (alignWithTop === false) {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n } else {\n // 自动调整\n if (diffTop.top < 0) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;\n\n if (alignWithTop) {\n util.scrollTop(container, containerScroll.top + diffTop.top);\n } else {\n util.scrollTop(container, containerScroll.top + diffBottom.top);\n }\n }\n }\n\n if (allowHorizontalScroll) {\n if (diffTop.left < 0 || diffBottom.left > 0) {\n // 强制向上\n if (alignWithLeft === true) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else if (alignWithLeft === false) {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n } else {\n // 自动调整\n if (diffTop.left < 0) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n } else {\n if (!onlyScrollIfNeeded) {\n alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;\n\n if (alignWithLeft) {\n util.scrollLeft(container, containerScroll.left + diffTop.left);\n } else {\n util.scrollLeft(container, containerScroll.left + diffBottom.left);\n }\n }\n }\n }\n}\n\nexport default scrollIntoView;\n//# sourceMappingURL=index.js.map\n","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport shallowEqual from 'shallowequal';\nimport omit from 'omit.js';\nimport { getOptionProps, getListeners } from '../props-util';\nimport PropTypes from '../vue-types';\nimport proxyComponent from '../proxyComponent';\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.name || 'Component';\n}\n\nvar defaultMapStateToProps = function defaultMapStateToProps() {\n return {};\n};\nexport default function connect(mapStateToProps) {\n var shouldSubscribe = !!mapStateToProps;\n var finalMapStateToProps = mapStateToProps || defaultMapStateToProps;\n return function wrapWithConnect(WrappedComponent) {\n var tempProps = omit(WrappedComponent.props || {}, ['store']);\n var props = {\n __propsSymbol__: PropTypes.any\n };\n Object.keys(tempProps).forEach(function (k) {\n props[k] = _extends({}, tempProps[k], { required: false });\n });\n var Connect = {\n name: 'Connect_' + getDisplayName(WrappedComponent),\n props: props,\n inject: {\n storeContext: { 'default': function _default() {\n return {};\n } }\n },\n data: function data() {\n this.store = this.storeContext.store;\n this.preProps = omit(getOptionProps(this), ['__propsSymbol__']);\n return {\n subscribed: finalMapStateToProps(this.store.getState(), this.$props)\n };\n },\n\n watch: {\n __propsSymbol__: function __propsSymbol__() {\n if (mapStateToProps && mapStateToProps.length === 2) {\n this.subscribed = finalMapStateToProps(this.store.getState(), this.$props);\n }\n }\n },\n mounted: function mounted() {\n this.trySubscribe();\n },\n beforeDestroy: function beforeDestroy() {\n this.tryUnsubscribe();\n },\n\n methods: {\n handleChange: function handleChange() {\n if (!this.unsubscribe) {\n return;\n }\n var props = omit(getOptionProps(this), ['__propsSymbol__']);\n var nextSubscribed = finalMapStateToProps(this.store.getState(), props);\n if (!shallowEqual(this.preProps, props) || !shallowEqual(this.subscribed, nextSubscribed)) {\n this.subscribed = nextSubscribed;\n }\n },\n trySubscribe: function trySubscribe() {\n if (shouldSubscribe) {\n this.unsubscribe = this.store.subscribe(this.handleChange);\n this.handleChange();\n }\n },\n tryUnsubscribe: function tryUnsubscribe() {\n if (this.unsubscribe) {\n this.unsubscribe();\n this.unsubscribe = null;\n }\n },\n getWrappedInstance: function getWrappedInstance() {\n return this.$refs.wrappedInstance;\n }\n },\n render: function render() {\n var h = arguments[0];\n var _$slots = this.$slots,\n $slots = _$slots === undefined ? {} : _$slots,\n $scopedSlots = this.$scopedSlots,\n subscribed = this.subscribed,\n store = this.store;\n\n var props = getOptionProps(this);\n this.preProps = _extends({}, omit(props, ['__propsSymbol__']));\n var wrapProps = {\n props: _extends({}, props, subscribed, {\n store: store\n }),\n on: getListeners(this),\n scopedSlots: $scopedSlots\n };\n return h(\n WrappedComponent,\n _mergeJSXProps([wrapProps, { ref: 'wrappedInstance' }]),\n [Object.keys($slots).map(function (name) {\n return h(\n 'template',\n { slot: name },\n [$slots[name]]\n );\n })]\n );\n }\n };\n return proxyComponent(Connect);\n };\n}","import _extends from 'babel-runtime/helpers/extends';\nimport _slicedToArray from 'babel-runtime/helpers/slicedToArray';\n// MIT License from https://github.com/kaimallea/isMobile\n\nvar applePhone = /iPhone/i;\nvar appleIpod = /iPod/i;\nvar appleTablet = /iPad/i;\nvar androidPhone = /\\bAndroid(?:.+)Mobile\\b/i; // Match 'Android' AND 'Mobile'\nvar androidTablet = /Android/i;\nvar amazonPhone = /\\bAndroid(?:.+)SD4930UR\\b/i;\nvar amazonTablet = /\\bAndroid(?:.+)(?:KF[A-Z]{2,4})\\b/i;\nvar windowsPhone = /Windows Phone/i;\nvar windowsTablet = /\\bWindows(?:.+)ARM\\b/i; // Match 'Windows' AND 'ARM'\nvar otherBlackberry = /BlackBerry/i;\nvar otherBlackberry10 = /BB10/i;\nvar otherOpera = /Opera Mini/i;\nvar otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nvar otherFirefox = /Mobile(?:.+)Firefox\\b/i; // Match 'Mobile' AND 'Firefox'\n\nfunction match(regex, userAgent) {\n return regex.test(userAgent);\n}\n\nfunction isMobile(userAgent) {\n var ua = userAgent || (typeof navigator !== 'undefined' ? navigator.userAgent : '');\n\n // Facebook mobile app's integrated browser adds a bunch of strings that\n // match everything. Strip it out if it exists.\n var tmp = ua.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n var _tmp = tmp;\n\n var _tmp2 = _slicedToArray(_tmp, 1);\n\n ua = _tmp2[0];\n }\n\n // Twitter mobile app's integrated browser on iPad adds a \"Twitter for\n // iPhone\" string. Same probably happens on other tablet platforms.\n // This will confuse detection so strip it out if it exists.\n tmp = ua.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n var _tmp3 = tmp;\n\n var _tmp4 = _slicedToArray(_tmp3, 1);\n\n ua = _tmp4[0];\n }\n\n var result = {\n apple: {\n phone: match(applePhone, ua) && !match(windowsPhone, ua),\n ipod: match(appleIpod, ua),\n tablet: !match(applePhone, ua) && match(appleTablet, ua) && !match(windowsPhone, ua),\n device: (match(applePhone, ua) || match(appleIpod, ua) || match(appleTablet, ua)) && !match(windowsPhone, ua)\n },\n amazon: {\n phone: match(amazonPhone, ua),\n tablet: !match(amazonPhone, ua) && match(amazonTablet, ua),\n device: match(amazonPhone, ua) || match(amazonTablet, ua)\n },\n android: {\n phone: !match(windowsPhone, ua) && match(amazonPhone, ua) || !match(windowsPhone, ua) && match(androidPhone, ua),\n tablet: !match(windowsPhone, ua) && !match(amazonPhone, ua) && !match(androidPhone, ua) && (match(amazonTablet, ua) || match(androidTablet, ua)),\n device: !match(windowsPhone, ua) && (match(amazonPhone, ua) || match(amazonTablet, ua) || match(androidPhone, ua) || match(androidTablet, ua)) || match(/\\bokhttp\\b/i, ua)\n },\n windows: {\n phone: match(windowsPhone, ua),\n tablet: match(windowsTablet, ua),\n device: match(windowsPhone, ua) || match(windowsTablet, ua)\n },\n other: {\n blackberry: match(otherBlackberry, ua),\n blackberry10: match(otherBlackberry10, ua),\n opera: match(otherOpera, ua),\n firefox: match(otherFirefox, ua),\n chrome: match(otherChrome, ua),\n device: match(otherBlackberry, ua) || match(otherBlackberry10, ua) || match(otherOpera, ua) || match(otherFirefox, ua) || match(otherChrome, ua)\n },\n\n // Additional\n any: null,\n phone: null,\n tablet: null\n };\n result.any = result.apple.device || result.android.device || result.windows.device || result.other.device;\n\n // excludes 'other' devices and ipods, targeting touchscreen phones\n result.phone = result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet = result.apple.tablet || result.android.tablet || result.windows.tablet;\n\n return result;\n}\n\nvar defaultResult = _extends({}, isMobile(), {\n isMobile: isMobile\n});\n\nexport default defaultResult;","import _typeof from 'babel-runtime/helpers/typeof';\nimport isMobile from './utils/isMobile';\n\nexport function noop() {}\n\nexport function getKeyFromChildrenIndex(child, menuEventKey, index) {\n var prefix = menuEventKey || '';\n return child.key === undefined ? prefix + 'item_' + index : child.key;\n}\n\nexport function getMenuIdFromSubMenuEventKey(eventKey) {\n return eventKey + '-menu-';\n}\n\nexport function loopMenuItem(children, cb) {\n var index = -1;\n children.forEach(function (c) {\n index++;\n if (c && c.type && c.type.isMenuItemGroup) {\n c.$slots['default'].forEach(function (c2) {\n index++;\n c.componentOptions && cb(c2, index);\n });\n } else {\n c.componentOptions && cb(c, index);\n }\n });\n}\n\nexport function loopMenuItemRecursively(children, keys, ret) {\n if (!children || ret.find) {\n return;\n }\n children.forEach(function (c) {\n if (ret.find) {\n return;\n }\n if (c.data && c.data.slot && c.data.slot !== 'default') {\n return;\n }\n if (c && c.componentOptions) {\n var options = c.componentOptions.Ctor.options;\n if (!options || !(options.isSubMenu || options.isMenuItem || options.isMenuItemGroup)) {\n return;\n }\n if (keys.indexOf(c.key) !== -1) {\n ret.find = true;\n } else if (c.componentOptions.children) {\n loopMenuItemRecursively(c.componentOptions.children, keys, ret);\n }\n }\n });\n}\n\nexport var menuAllProps = {\n props: ['defaultSelectedKeys', 'selectedKeys', 'defaultOpenKeys', 'openKeys', 'mode', 'getPopupContainer', 'openTransitionName', 'openAnimation', 'subMenuOpenDelay', 'subMenuCloseDelay', 'forceSubMenuRender', 'triggerSubMenuAction', 'level', 'selectable', 'multiple', 'visible', 'focusable', 'defaultActiveFirst', 'prefixCls', 'inlineIndent', 'parentMenu', 'title', 'rootPrefixCls', 'eventKey', 'active', 'popupAlign', 'popupOffset', 'isOpen', 'renderMenuItem', 'manualRef', 'subMenuKey', 'disabled', 'index', 'isSelected', 'store', 'activeKey', 'builtinPlacements', 'overflowedIndicator',\n\n // the following keys found need to be removed from test regression\n 'attribute', 'value', 'popupClassName', 'inlineCollapsed', 'menu', 'theme', 'itemIcon', 'expandIcon'],\n on: ['select', 'deselect', 'destroy', 'openChange', 'itemHover', 'titleMouseenter', 'titleMouseleave', 'titleClick']\n};\n\n// ref: https://github.com/ant-design/ant-design/issues/14007\n// ref: https://bugs.chromium.org/p/chromium/issues/detail?id=360889\n// getBoundingClientRect return the full precision value, which is\n// not the same behavior as on chrome. Set the precision to 6 to\n// unify their behavior\nexport var getWidth = function getWidth(elem) {\n var width = elem && typeof elem.getBoundingClientRect === 'function' && elem.getBoundingClientRect().width;\n if (width) {\n width = +width.toFixed(6);\n }\n return width || 0;\n};\n\nexport var setStyle = function setStyle(elem, styleProperty, value) {\n if (elem && _typeof(elem.style) === 'object') {\n elem.style[styleProperty] = value;\n }\n};\n\nexport var isMobileDevice = function isMobileDevice() {\n return isMobile.any;\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport KeyCode from '../_util/KeyCode';\nimport BaseMixin from '../_util/BaseMixin';\nimport scrollIntoView from 'dom-scroll-into-view';\nimport { connect } from '../_util/store';\nimport { noop, menuAllProps } from './util';\nimport { getComponentFromProp, getListeners } from '../_util/props-util';\n\nvar props = {\n attribute: PropTypes.object,\n rootPrefixCls: PropTypes.string,\n eventKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n active: PropTypes.bool,\n selectedKeys: PropTypes.array,\n disabled: PropTypes.bool,\n title: PropTypes.any,\n index: PropTypes.number,\n inlineIndent: PropTypes.number.def(24),\n level: PropTypes.number.def(1),\n mode: PropTypes.oneOf(['horizontal', 'vertical', 'vertical-left', 'vertical-right', 'inline']).def('vertical'),\n parentMenu: PropTypes.object,\n multiple: PropTypes.bool,\n value: PropTypes.any,\n isSelected: PropTypes.bool,\n manualRef: PropTypes.func.def(noop),\n role: PropTypes.any,\n subMenuKey: PropTypes.string,\n itemIcon: PropTypes.any\n // clearSubMenuTimers: PropTypes.func.def(noop),\n};\nvar MenuItem = {\n name: 'MenuItem',\n props: props,\n mixins: [BaseMixin],\n isMenuItem: true,\n created: function created() {\n this.prevActive = this.active;\n // invoke customized ref to expose component to mixin\n this.callRef();\n },\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function () {\n var _$props = _this.$props,\n active = _$props.active,\n parentMenu = _$props.parentMenu,\n eventKey = _$props.eventKey;\n\n if (!_this.prevActive && active && (!parentMenu || !parentMenu['scrolled-' + eventKey])) {\n scrollIntoView(_this.$el, _this.parentMenu.$el, {\n onlyScrollIfNeeded: true\n });\n parentMenu['scrolled-' + eventKey] = true;\n } else if (parentMenu && parentMenu['scrolled-' + eventKey]) {\n delete parentMenu['scrolled-' + eventKey];\n }\n _this.prevActive = active;\n });\n this.callRef();\n },\n beforeDestroy: function beforeDestroy() {\n var props = this.$props;\n this.__emit('destroy', props.eventKey);\n },\n\n methods: {\n onKeyDown: function onKeyDown(e) {\n var keyCode = e.keyCode;\n if (keyCode === KeyCode.ENTER) {\n this.onClick(e);\n return true;\n }\n },\n onMouseLeave: function onMouseLeave(e) {\n var eventKey = this.$props.eventKey;\n\n this.__emit('itemHover', {\n key: eventKey,\n hover: false\n });\n this.__emit('mouseleave', {\n key: eventKey,\n domEvent: e\n });\n },\n onMouseEnter: function onMouseEnter(e) {\n var eventKey = this.eventKey;\n\n this.__emit('itemHover', {\n key: eventKey,\n hover: true\n });\n this.__emit('mouseenter', {\n key: eventKey,\n domEvent: e\n });\n },\n onClick: function onClick(e) {\n var _$props2 = this.$props,\n eventKey = _$props2.eventKey,\n multiple = _$props2.multiple,\n isSelected = _$props2.isSelected;\n\n var info = {\n key: eventKey,\n keyPath: [eventKey],\n item: this,\n domEvent: e\n };\n\n this.__emit('click', info);\n if (multiple) {\n if (isSelected) {\n this.__emit('deselect', info);\n } else {\n this.__emit('select', info);\n }\n } else if (!isSelected) {\n this.__emit('select', info);\n }\n },\n getPrefixCls: function getPrefixCls() {\n return this.$props.rootPrefixCls + '-item';\n },\n getActiveClassName: function getActiveClassName() {\n return this.getPrefixCls() + '-active';\n },\n getSelectedClassName: function getSelectedClassName() {\n return this.getPrefixCls() + '-selected';\n },\n getDisabledClassName: function getDisabledClassName() {\n return this.getPrefixCls() + '-disabled';\n },\n callRef: function callRef() {\n if (this.manualRef) {\n this.manualRef(this);\n }\n }\n },\n\n render: function render() {\n var _className;\n\n var h = arguments[0];\n\n var props = _extends({}, this.$props);\n var className = (_className = {}, _defineProperty(_className, this.getPrefixCls(), true), _defineProperty(_className, this.getActiveClassName(), !props.disabled && props.active), _defineProperty(_className, this.getSelectedClassName(), props.isSelected), _defineProperty(_className, this.getDisabledClassName(), props.disabled), _className);\n var attrs = _extends({}, props.attribute, {\n title: props.title,\n role: props.role || 'menuitem',\n 'aria-disabled': props.disabled\n });\n if (props.role === 'option') {\n // overwrite to option\n attrs = _extends({}, attrs, {\n role: 'option',\n 'aria-selected': props.isSelected\n });\n } else if (props.role === null || props.role === 'none') {\n // sometimes we want to specify role inside element\n // Link would be a good example\n // in this case the role on should be \"none\" to\n // remove the implied listitem role.\n // https://www.w3.org/TR/wai-aria-practices-1.1/examples/menubar/menubar-1/menubar-1.html\n attrs.role = 'none';\n }\n // In case that onClick/onMouseLeave/onMouseEnter is passed down from owner\n var mouseEvent = {\n click: props.disabled ? noop : this.onClick,\n mouseleave: props.disabled ? noop : this.onMouseLeave,\n mouseenter: props.disabled ? noop : this.onMouseEnter\n };\n\n var style = {};\n if (props.mode === 'inline') {\n style.paddingLeft = props.inlineIndent * props.level + 'px';\n }\n var listeners = _extends({}, getListeners(this));\n menuAllProps.props.forEach(function (key) {\n return delete props[key];\n });\n menuAllProps.on.forEach(function (key) {\n return delete listeners[key];\n });\n var liProps = {\n attrs: _extends({}, props, attrs),\n on: _extends({}, listeners, mouseEvent)\n };\n return h(\n 'li',\n _mergeJSXProps([liProps, { style: style, 'class': className }]),\n [this.$slots['default'], getComponentFromProp(this, 'itemIcon', props)]\n );\n }\n};\n\nvar connected = connect(function (_ref, _ref2) {\n var activeKey = _ref.activeKey,\n selectedKeys = _ref.selectedKeys;\n var eventKey = _ref2.eventKey,\n subMenuKey = _ref2.subMenuKey;\n return {\n active: activeKey[subMenuKey] === eventKey,\n isSelected: selectedKeys.indexOf(eventKey) !== -1\n };\n})(MenuItem);\n\nexport default connected;\nexport { props as menuItemProps };","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { getComponentFromProp, getListeners } from '../_util/props-util';\n\n// import { menuAllProps } from './util'\n\nvar MenuItemGroup = {\n name: 'MenuItemGroup',\n\n props: {\n renderMenuItem: PropTypes.func,\n index: PropTypes.number,\n className: PropTypes.string,\n subMenuKey: PropTypes.string,\n rootPrefixCls: PropTypes.string,\n disabled: PropTypes.bool.def(true),\n title: PropTypes.any\n },\n isMenuItemGroup: true,\n methods: {\n renderInnerMenuItem: function renderInnerMenuItem(item) {\n var _$props = this.$props,\n renderMenuItem = _$props.renderMenuItem,\n index = _$props.index,\n subMenuKey = _$props.subMenuKey;\n\n return renderMenuItem(item, index, subMenuKey);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var props = _extends({}, this.$props);\n var rootPrefixCls = props.rootPrefixCls,\n title = props.title;\n\n var titleClassName = rootPrefixCls + '-item-group-title';\n var listClassName = rootPrefixCls + '-item-group-list';\n // menuAllProps.props.forEach(key => delete props[key])\n var listeners = _extends({}, getListeners(this));\n delete listeners.click;\n\n return h(\n 'li',\n { on: listeners, 'class': rootPrefixCls + '-item-group' },\n [h(\n 'div',\n { 'class': titleClassName, attrs: { title: typeof title === 'string' ? title : undefined }\n },\n [getComponentFromProp(this, 'title')]\n ), h(\n 'ul',\n { 'class': listClassName },\n [this.$slots['default'] && this.$slots['default'].map(this.renderInnerMenuItem)]\n )]\n );\n }\n};\n\nexport default MenuItemGroup;","export default function contains(root, n) {\n var node = n;\n while (node) {\n if (node === root) {\n return true;\n }\n node = node.parentNode;\n }\n\n return false;\n}","function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nvar vendorPrefix;\nvar jsCssMap = {\n Webkit: '-webkit-',\n Moz: '-moz-',\n // IE did it wrong again ...\n ms: '-ms-',\n O: '-o-'\n};\n\nfunction getVendorPrefix() {\n if (vendorPrefix !== undefined) {\n return vendorPrefix;\n }\n\n vendorPrefix = '';\n var style = document.createElement('p').style;\n var testProp = 'Transform';\n\n for (var key in jsCssMap) {\n if (key + testProp in style) {\n vendorPrefix = key;\n }\n }\n\n return vendorPrefix;\n}\n\nfunction getTransitionName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"TransitionProperty\") : 'transitionProperty';\n}\n\nfunction getTransformName() {\n return getVendorPrefix() ? \"\".concat(getVendorPrefix(), \"Transform\") : 'transform';\n}\nfunction setTransitionProperty(node, value) {\n var name = getTransitionName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transitionProperty') {\n node.style.transitionProperty = value;\n }\n }\n}\n\nfunction setTransform(node, value) {\n var name = getTransformName();\n\n if (name) {\n node.style[name] = value;\n\n if (name !== 'transform') {\n node.style.transform = value;\n }\n }\n}\n\nfunction getTransitionProperty(node) {\n return node.style.transitionProperty || node.style[getTransitionName()];\n}\nfunction getTransformXY(node) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var matrix = transform.replace(/[^0-9\\-.,]/g, '').split(',');\n return {\n x: parseFloat(matrix[12] || matrix[4], 0),\n y: parseFloat(matrix[13] || matrix[5], 0)\n };\n }\n\n return {\n x: 0,\n y: 0\n };\n}\nvar matrix2d = /matrix\\((.*)\\)/;\nvar matrix3d = /matrix3d\\((.*)\\)/;\nfunction setTransformXY(node, xy) {\n var style = window.getComputedStyle(node, null);\n var transform = style.getPropertyValue('transform') || style.getPropertyValue(getTransformName());\n\n if (transform && transform !== 'none') {\n var arr;\n var match2d = transform.match(matrix2d);\n\n if (match2d) {\n match2d = match2d[1];\n arr = match2d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[4] = xy.x;\n arr[5] = xy.y;\n setTransform(node, \"matrix(\".concat(arr.join(','), \")\"));\n } else {\n var match3d = transform.match(matrix3d)[1];\n arr = match3d.split(',').map(function (item) {\n return parseFloat(item, 10);\n });\n arr[12] = xy.x;\n arr[13] = xy.y;\n setTransform(node, \"matrix3d(\".concat(arr.join(','), \")\"));\n }\n } else {\n setTransform(node, \"translateX(\".concat(xy.x, \"px) translateY(\").concat(xy.y, \"px) translateZ(0)\"));\n }\n}\n\nvar RE_NUM = /[\\-+]?(?:\\d*\\.|)\\d+(?:[eE][\\-+]?\\d+|)/.source;\nvar getComputedStyleX; // https://stackoverflow.com/a/3485654/3040605\n\nfunction forceRelayout(elem) {\n var originalStyle = elem.style.display;\n elem.style.display = 'none';\n elem.offsetHeight; // eslint-disable-line\n\n elem.style.display = originalStyle;\n}\n\nfunction css(el, name, v) {\n var value = v;\n\n if (_typeof(name) === 'object') {\n for (var i in name) {\n if (name.hasOwnProperty(i)) {\n css(el, i, name[i]);\n }\n }\n\n return undefined;\n }\n\n if (typeof value !== 'undefined') {\n if (typeof value === 'number') {\n value = \"\".concat(value, \"px\");\n }\n\n el.style[name] = value;\n return undefined;\n }\n\n return getComputedStyleX(el, name);\n}\n\nfunction getClientPosition(elem) {\n var box;\n var x;\n var y;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement; // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式\n\n box = elem.getBoundingClientRect(); // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop\n // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确\n // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin\n\n x = box.left;\n y = box.top; // In IE, most of the time, 2 extra pixels are added to the top and left\n // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and\n // IE6 standards mode, this border can be overridden by setting the\n // document element's border to zero -- thus, we cannot rely on the\n // offset always being 2 pixels.\n // In quirks mode, the offset can be determined by querying the body's\n // clientLeft/clientTop, but in standards mode, it is found by querying\n // the document element's clientLeft/clientTop. Since we already called\n // getClientBoundingRect we have already forced a reflow, so it is not\n // too expensive just to query them all.\n // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的\n // 窗口边框标准是设 documentElement ,quirks 时设置 body\n // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去\n // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置\n // 标准 ie 下 docElem.clientTop 就是 border-top\n // ie7 html 即窗口边框改变不了。永远为 2\n // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0\n\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n return {\n left: x,\n top: y\n };\n}\n\nfunction getScroll(w, top) {\n var ret = w[\"page\".concat(top ? 'Y' : 'X', \"Offset\")];\n var method = \"scroll\".concat(top ? 'Top' : 'Left');\n\n if (typeof ret !== 'number') {\n var d = w.document; // ie6,7,8 standard mode\n\n ret = d.documentElement[method];\n\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n\n return ret;\n}\n\nfunction getScrollLeft(w) {\n return getScroll(w);\n}\n\nfunction getScrollTop(w) {\n return getScroll(w, true);\n}\n\nfunction getOffset(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScrollLeft(w);\n pos.top += getScrollTop(w);\n return pos;\n}\n/**\n * A crude way of determining if an object is a window\n * @member util\n */\n\n\nfunction isWindow(obj) {\n // must use == for ie8\n\n /* eslint eqeqeq:0 */\n return obj !== null && obj !== undefined && obj == obj.window;\n}\n\nfunction getDocument(node) {\n if (isWindow(node)) {\n return node.document;\n }\n\n if (node.nodeType === 9) {\n return node;\n }\n\n return node.ownerDocument;\n}\n\nfunction _getComputedStyle(elem, name, cs) {\n var computedStyle = cs;\n var val = '';\n var d = getDocument(elem);\n computedStyle = computedStyle || d.defaultView.getComputedStyle(elem, null); // https://github.com/kissyteam/kissy/issues/61\n\n if (computedStyle) {\n val = computedStyle.getPropertyValue(name) || computedStyle[name];\n }\n\n return val;\n}\n\nvar _RE_NUM_NO_PX = new RegExp(\"^(\".concat(RE_NUM, \")(?!px)[a-z%]+$\"), 'i');\n\nvar RE_POS = /^(top|right|bottom|left)$/;\nvar CURRENT_STYLE = 'currentStyle';\nvar RUNTIME_STYLE = 'runtimeStyle';\nvar LEFT = 'left';\nvar PX = 'px';\n\nfunction _getComputedStyleIE(elem, name) {\n // currentStyle maybe null\n // http://msdn.microsoft.com/en-us/library/ms535231.aspx\n var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name]; // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值\n // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19\n // 在 ie 下不对,需要直接用 offset 方式\n // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了\n // From the awesome hack by Dean Edwards\n // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291\n // If we're not dealing with a regular pixel number\n // but a number that has a weird ending, we need to convert it to pixels\n // exclude left right for relativity\n\n if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {\n // Remember the original values\n var style = elem.style;\n var left = style[LEFT];\n var rsLeft = elem[RUNTIME_STYLE][LEFT]; // prevent flashing of content\n\n elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT]; // Put in the new values to get a computed value out\n\n style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;\n ret = style.pixelLeft + PX; // Revert the changed values\n\n style[LEFT] = left;\n elem[RUNTIME_STYLE][LEFT] = rsLeft;\n }\n\n return ret === '' ? 'auto' : ret;\n}\n\nif (typeof window !== 'undefined') {\n getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;\n}\n\nfunction getOffsetDirection(dir, option) {\n if (dir === 'left') {\n return option.useCssRight ? 'right' : dir;\n }\n\n return option.useCssBottom ? 'bottom' : dir;\n}\n\nfunction oppositeOffsetDirection(dir) {\n if (dir === 'left') {\n return 'right';\n } else if (dir === 'right') {\n return 'left';\n } else if (dir === 'top') {\n return 'bottom';\n } else if (dir === 'bottom') {\n return 'top';\n }\n} // 设置 elem 相对 elem.ownerDocument 的坐标\n\n\nfunction setLeftTop(elem, offset, option) {\n // set position first, in-case top/left are set even on static elem\n if (css(elem, 'position') === 'static') {\n elem.style.position = 'relative';\n }\n\n var presetH = -999;\n var presetV = -999;\n var horizontalProperty = getOffsetDirection('left', option);\n var verticalProperty = getOffsetDirection('top', option);\n var oppositeHorizontalProperty = oppositeOffsetDirection(horizontalProperty);\n var oppositeVerticalProperty = oppositeOffsetDirection(verticalProperty);\n\n if (horizontalProperty !== 'left') {\n presetH = 999;\n }\n\n if (verticalProperty !== 'top') {\n presetV = 999;\n }\n\n var originalTransition = '';\n var originalOffset = getOffset(elem);\n\n if ('left' in offset || 'top' in offset) {\n originalTransition = getTransitionProperty(elem) || '';\n setTransitionProperty(elem, 'none');\n }\n\n if ('left' in offset) {\n elem.style[oppositeHorizontalProperty] = '';\n elem.style[horizontalProperty] = \"\".concat(presetH, \"px\");\n }\n\n if ('top' in offset) {\n elem.style[oppositeVerticalProperty] = '';\n elem.style[verticalProperty] = \"\".concat(presetV, \"px\");\n } // force relayout\n\n\n forceRelayout(elem);\n var old = getOffset(elem);\n var originalStyle = {};\n\n for (var key in offset) {\n if (offset.hasOwnProperty(key)) {\n var dir = getOffsetDirection(key, option);\n var preset = key === 'left' ? presetH : presetV;\n var off = originalOffset[key] - old[key];\n\n if (dir === key) {\n originalStyle[dir] = preset + off;\n } else {\n originalStyle[dir] = preset - off;\n }\n }\n }\n\n css(elem, originalStyle); // force relayout\n\n forceRelayout(elem);\n\n if ('left' in offset || 'top' in offset) {\n setTransitionProperty(elem, originalTransition);\n }\n\n var ret = {};\n\n for (var _key in offset) {\n if (offset.hasOwnProperty(_key)) {\n var _dir = getOffsetDirection(_key, option);\n\n var _off = offset[_key] - originalOffset[_key];\n\n if (_key === _dir) {\n ret[_dir] = originalStyle[_dir] + _off;\n } else {\n ret[_dir] = originalStyle[_dir] - _off;\n }\n }\n }\n\n css(elem, ret);\n}\n\nfunction setTransform$1(elem, offset) {\n var originalOffset = getOffset(elem);\n var originalXY = getTransformXY(elem);\n var resultXY = {\n x: originalXY.x,\n y: originalXY.y\n };\n\n if ('left' in offset) {\n resultXY.x = originalXY.x + offset.left - originalOffset.left;\n }\n\n if ('top' in offset) {\n resultXY.y = originalXY.y + offset.top - originalOffset.top;\n }\n\n setTransformXY(elem, resultXY);\n}\n\nfunction setOffset(elem, offset, option) {\n if (option.ignoreShake) {\n var oriOffset = getOffset(elem);\n var oLeft = oriOffset.left.toFixed(0);\n var oTop = oriOffset.top.toFixed(0);\n var tLeft = offset.left.toFixed(0);\n var tTop = offset.top.toFixed(0);\n\n if (oLeft === tLeft && oTop === tTop) {\n return;\n }\n }\n\n if (option.useCssRight || option.useCssBottom) {\n setLeftTop(elem, offset, option);\n } else if (option.useCssTransform && getTransformName() in document.body.style) {\n setTransform$1(elem, offset);\n } else {\n setLeftTop(elem, offset, option);\n }\n}\n\nfunction each(arr, fn) {\n for (var i = 0; i < arr.length; i++) {\n fn(arr[i]);\n }\n}\n\nfunction isBorderBoxFn(elem) {\n return getComputedStyleX(elem, 'boxSizing') === 'border-box';\n}\n\nvar BOX_MODELS = ['margin', 'border', 'padding'];\nvar CONTENT_INDEX = -1;\nvar PADDING_INDEX = 2;\nvar BORDER_INDEX = 1;\nvar MARGIN_INDEX = 0;\n\nfunction swap(elem, options, callback) {\n var old = {};\n var style = elem.style;\n var name; // Remember the old values, and insert the new ones\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n old[name] = style[name];\n style[name] = options[name];\n }\n }\n\n callback.call(elem); // Revert the old values\n\n for (name in options) {\n if (options.hasOwnProperty(name)) {\n style[name] = old[name];\n }\n }\n}\n\nfunction getPBMWidth(elem, props, which) {\n var value = 0;\n var prop;\n var j;\n var i;\n\n for (j = 0; j < props.length; j++) {\n prop = props[j];\n\n if (prop) {\n for (i = 0; i < which.length; i++) {\n var cssProp = void 0;\n\n if (prop === 'border') {\n cssProp = \"\".concat(prop).concat(which[i], \"Width\");\n } else {\n cssProp = prop + which[i];\n }\n\n value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;\n }\n }\n }\n\n return value;\n}\n\nvar domUtils = {\n getParent: function getParent(element) {\n var parent = element;\n\n do {\n if (parent.nodeType === 11 && parent.host) {\n parent = parent.host;\n } else {\n parent = parent.parentNode;\n }\n } while (parent && parent.nodeType !== 1 && parent.nodeType !== 9);\n\n return parent;\n }\n};\neach(['Width', 'Height'], function (name) {\n domUtils[\"doc\".concat(name)] = function (refWin) {\n var d = refWin.document;\n return Math.max( // firefox chrome documentElement.scrollHeight< body.scrollHeight\n // ie standard mode : documentElement.scrollHeight> body.scrollHeight\n d.documentElement[\"scroll\".concat(name)], // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?\n d.body[\"scroll\".concat(name)], domUtils[\"viewport\".concat(name)](d));\n };\n\n domUtils[\"viewport\".concat(name)] = function (win) {\n // pc browser includes scrollbar in window.innerWidth\n var prop = \"client\".concat(name);\n var doc = win.document;\n var body = doc.body;\n var documentElement = doc.documentElement;\n var documentElementProp = documentElement[prop]; // 标准模式取 documentElement\n // backcompat 取 body\n\n return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;\n };\n});\n/*\n 得到元素的大小信息\n @param elem\n @param name\n @param {String} [extra] 'padding' : (css width) + padding\n 'border' : (css width) + padding + border\n 'margin' : (css width) + padding + border + margin\n */\n\nfunction getWH(elem, name, ex) {\n var extra = ex;\n\n if (isWindow(elem)) {\n return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);\n } else if (elem.nodeType === 9) {\n return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);\n }\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n var borderBoxValue = name === 'width' ? elem.getBoundingClientRect().width : elem.getBoundingClientRect().height;\n var isBorderBox = isBorderBoxFn(elem);\n var cssBoxValue = 0;\n\n if (borderBoxValue === null || borderBoxValue === undefined || borderBoxValue <= 0) {\n borderBoxValue = undefined; // Fall back to computed then un computed css if necessary\n\n cssBoxValue = getComputedStyleX(elem, name);\n\n if (cssBoxValue === null || cssBoxValue === undefined || Number(cssBoxValue) < 0) {\n cssBoxValue = elem.style[name] || 0;\n } // Normalize '', auto, and prepare for extra\n\n\n cssBoxValue = parseFloat(cssBoxValue) || 0;\n }\n\n if (extra === undefined) {\n extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;\n }\n\n var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;\n var val = borderBoxValue || cssBoxValue;\n\n if (extra === CONTENT_INDEX) {\n if (borderBoxValueOrIsBorderBox) {\n return val - getPBMWidth(elem, ['border', 'padding'], which);\n }\n\n return cssBoxValue;\n } else if (borderBoxValueOrIsBorderBox) {\n if (extra === BORDER_INDEX) {\n return val;\n }\n\n return val + (extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which) : getPBMWidth(elem, ['margin'], which));\n }\n\n return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which);\n}\n\nvar cssShow = {\n position: 'absolute',\n visibility: 'hidden',\n display: 'block'\n}; // fix #119 : https://github.com/kissyteam/kissy/issues/119\n\nfunction getWHIgnoreDisplay() {\n for (var _len = arguments.length, args = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n var val;\n var elem = args[0]; // in case elem is window\n // elem.offsetWidth === undefined\n\n if (elem.offsetWidth !== 0) {\n val = getWH.apply(undefined, args);\n } else {\n swap(elem, cssShow, function () {\n val = getWH.apply(undefined, args);\n });\n }\n\n return val;\n}\n\neach(['width', 'height'], function (name) {\n var first = name.charAt(0).toUpperCase() + name.slice(1);\n\n domUtils[\"outer\".concat(first)] = function (el, includeMargin) {\n return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);\n };\n\n var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];\n\n domUtils[name] = function (elem, v) {\n var val = v;\n\n if (val !== undefined) {\n if (elem) {\n var isBorderBox = isBorderBoxFn(elem);\n\n if (isBorderBox) {\n val += getPBMWidth(elem, ['padding', 'border'], which);\n }\n\n return css(elem, name, val);\n }\n\n return undefined;\n }\n\n return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);\n };\n});\n\nfunction mix(to, from) {\n for (var i in from) {\n if (from.hasOwnProperty(i)) {\n to[i] = from[i];\n }\n }\n\n return to;\n}\n\nvar utils = {\n getWindow: function getWindow(node) {\n if (node && node.document && node.setTimeout) {\n return node;\n }\n\n var doc = node.ownerDocument || node;\n return doc.defaultView || doc.parentWindow;\n },\n getDocument: getDocument,\n offset: function offset(el, value, option) {\n if (typeof value !== 'undefined') {\n setOffset(el, value, option || {});\n } else {\n return getOffset(el);\n }\n },\n isWindow: isWindow,\n each: each,\n css: css,\n clone: function clone(obj) {\n var i;\n var ret = {};\n\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret[i] = obj[i];\n }\n }\n\n var overflow = obj.overflow;\n\n if (overflow) {\n for (i in obj) {\n if (obj.hasOwnProperty(i)) {\n ret.overflow[i] = obj.overflow[i];\n }\n }\n }\n\n return ret;\n },\n mix: mix,\n getWindowScrollLeft: function getWindowScrollLeft(w) {\n return getScrollLeft(w);\n },\n getWindowScrollTop: function getWindowScrollTop(w) {\n return getScrollTop(w);\n },\n merge: function merge() {\n var ret = {};\n\n for (var i = 0; i < arguments.length; i++) {\n utils.mix(ret, i < 0 || arguments.length <= i ? undefined : arguments[i]);\n }\n\n return ret;\n },\n viewportWidth: 0,\n viewportHeight: 0\n};\nmix(utils, domUtils);\n\n/**\n * 得到会导致元素显示不全的祖先元素\n */\n\nvar getParent = utils.getParent;\n\nfunction getOffsetParent(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return null;\n } // ie 这个也不是完全可行\n\n /*\n \n
\n 元素 6 高 100px 宽 50px
\n
\n
\n */\n // element.offsetParent does the right thing in ie7 and below. Return parent with layout!\n // In other browsers it only includes elements with position absolute, relative or\n // fixed, not elements with overflow set to auto or scroll.\n // if (UA.ie && ieMode < 8) {\n // return element.offsetParent;\n // }\n // 统一的 offsetParent 方法\n\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent;\n var positionStyle = utils.css(element, 'position');\n var skipStatic = positionStyle === 'fixed' || positionStyle === 'absolute';\n\n if (!skipStatic) {\n return element.nodeName.toLowerCase() === 'html' ? null : getParent(element);\n }\n\n for (parent = getParent(element); parent && parent !== body && parent.nodeType !== 9; parent = getParent(parent)) {\n positionStyle = utils.css(parent, 'position');\n\n if (positionStyle !== 'static') {\n return parent;\n }\n }\n\n return null;\n}\n\nvar getParent$1 = utils.getParent;\nfunction isAncestorFixed(element) {\n if (utils.isWindow(element) || element.nodeType === 9) {\n return false;\n }\n\n var doc = utils.getDocument(element);\n var body = doc.body;\n var parent = null;\n\n for (parent = getParent$1(element); // 修复元素位于 document.documentElement 下导致崩溃问题\n parent && parent !== body && parent !== doc; parent = getParent$1(parent)) {\n var positionStyle = utils.css(parent, 'position');\n\n if (positionStyle === 'fixed') {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * 获得元素的显示部分的区域\n */\n\nfunction getVisibleRectForElement(element, alwaysByViewport) {\n var visibleRect = {\n left: 0,\n right: Infinity,\n top: 0,\n bottom: Infinity\n };\n var el = getOffsetParent(element);\n var doc = utils.getDocument(element);\n var win = doc.defaultView || doc.parentWindow;\n var body = doc.body;\n var documentElement = doc.documentElement; // Determine the size of the visible rect by climbing the dom accounting for\n // all scrollable containers.\n\n while (el) {\n // clientWidth is zero for inline block elements in ie.\n if ((navigator.userAgent.indexOf('MSIE') === -1 || el.clientWidth !== 0) && // body may have overflow set on it, yet we still get the entire\n // viewport. In some browsers, el.offsetParent may be\n // document.documentElement, so check for that too.\n el !== body && el !== documentElement && utils.css(el, 'overflow') !== 'visible') {\n var pos = utils.offset(el); // add border\n\n pos.left += el.clientLeft;\n pos.top += el.clientTop;\n visibleRect.top = Math.max(visibleRect.top, pos.top);\n visibleRect.right = Math.min(visibleRect.right, // consider area without scrollBar\n pos.left + el.clientWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, pos.top + el.clientHeight);\n visibleRect.left = Math.max(visibleRect.left, pos.left);\n } else if (el === body || el === documentElement) {\n break;\n }\n\n el = getOffsetParent(el);\n } // Set element position to fixed\n // make sure absolute element itself don't affect it's visible area\n // https://github.com/ant-design/ant-design/issues/7601\n\n\n var originalPosition = null;\n\n if (!utils.isWindow(element) && element.nodeType !== 9) {\n originalPosition = element.style.position;\n var position = utils.css(element, 'position');\n\n if (position === 'absolute') {\n element.style.position = 'fixed';\n }\n }\n\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n var documentWidth = documentElement.scrollWidth;\n var documentHeight = documentElement.scrollHeight; // scrollXXX on html is sync with body which means overflow: hidden on body gets wrong scrollXXX.\n // We should cut this ourself.\n\n var bodyStyle = window.getComputedStyle(body);\n\n if (bodyStyle.overflowX === 'hidden') {\n documentWidth = win.innerWidth;\n }\n\n if (bodyStyle.overflowY === 'hidden') {\n documentHeight = win.innerHeight;\n } // Reset element position after calculate the visible area\n\n\n if (element.style) {\n element.style.position = originalPosition;\n }\n\n if (alwaysByViewport || isAncestorFixed(element)) {\n // Clip by viewport's size.\n visibleRect.left = Math.max(visibleRect.left, scrollX);\n visibleRect.top = Math.max(visibleRect.top, scrollY);\n visibleRect.right = Math.min(visibleRect.right, scrollX + viewportWidth);\n visibleRect.bottom = Math.min(visibleRect.bottom, scrollY + viewportHeight);\n } else {\n // Clip by document's size.\n var maxVisibleWidth = Math.max(documentWidth, scrollX + viewportWidth);\n visibleRect.right = Math.min(visibleRect.right, maxVisibleWidth);\n var maxVisibleHeight = Math.max(documentHeight, scrollY + viewportHeight);\n visibleRect.bottom = Math.min(visibleRect.bottom, maxVisibleHeight);\n }\n\n return visibleRect.top >= 0 && visibleRect.left >= 0 && visibleRect.bottom > visibleRect.top && visibleRect.right > visibleRect.left ? visibleRect : null;\n}\n\nfunction adjustForViewport(elFuturePos, elRegion, visibleRect, overflow) {\n var pos = utils.clone(elFuturePos);\n var size = {\n width: elRegion.width,\n height: elRegion.height\n };\n\n if (overflow.adjustX && pos.left < visibleRect.left) {\n pos.left = visibleRect.left;\n } // Left edge inside and right edge outside viewport, try to resize it.\n\n\n if (overflow.resizeWidth && pos.left >= visibleRect.left && pos.left + size.width > visibleRect.right) {\n size.width -= pos.left + size.width - visibleRect.right;\n } // Right edge outside viewport, try to move it.\n\n\n if (overflow.adjustX && pos.left + size.width > visibleRect.right) {\n // 保证左边界和可视区域左边界对齐\n pos.left = Math.max(visibleRect.right - size.width, visibleRect.left);\n } // Top edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top < visibleRect.top) {\n pos.top = visibleRect.top;\n } // Top edge inside and bottom edge outside viewport, try to resize it.\n\n\n if (overflow.resizeHeight && pos.top >= visibleRect.top && pos.top + size.height > visibleRect.bottom) {\n size.height -= pos.top + size.height - visibleRect.bottom;\n } // Bottom edge outside viewport, try to move it.\n\n\n if (overflow.adjustY && pos.top + size.height > visibleRect.bottom) {\n // 保证上边界和可视区域上边界对齐\n pos.top = Math.max(visibleRect.bottom - size.height, visibleRect.top);\n }\n\n return utils.mix(pos, size);\n}\n\nfunction getRegion(node) {\n var offset;\n var w;\n var h;\n\n if (!utils.isWindow(node) && node.nodeType !== 9) {\n offset = utils.offset(node);\n w = utils.outerWidth(node);\n h = utils.outerHeight(node);\n } else {\n var win = utils.getWindow(node);\n offset = {\n left: utils.getWindowScrollLeft(win),\n top: utils.getWindowScrollTop(win)\n };\n w = utils.viewportWidth(win);\n h = utils.viewportHeight(win);\n }\n\n offset.width = w;\n offset.height = h;\n return offset;\n}\n\n/**\n * 获取 node 上的 align 对齐点 相对于页面的坐标\n */\nfunction getAlignOffset(region, align) {\n var V = align.charAt(0);\n var H = align.charAt(1);\n var w = region.width;\n var h = region.height;\n var x = region.left;\n var y = region.top;\n\n if (V === 'c') {\n y += h / 2;\n } else if (V === 'b') {\n y += h;\n }\n\n if (H === 'c') {\n x += w / 2;\n } else if (H === 'r') {\n x += w;\n }\n\n return {\n left: x,\n top: y\n };\n}\n\nfunction getElFuturePos(elRegion, refNodeRegion, points, offset, targetOffset) {\n var p1 = getAlignOffset(refNodeRegion, points[1]);\n var p2 = getAlignOffset(elRegion, points[0]);\n var diff = [p2.left - p1.left, p2.top - p1.top];\n return {\n left: Math.round(elRegion.left - diff[0] + offset[0] - targetOffset[0]),\n top: Math.round(elRegion.top - diff[1] + offset[1] - targetOffset[1])\n };\n}\n\n/**\n * align dom node flexibly\n * @author yiminghe@gmail.com\n */\n\nfunction isFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left < visibleRect.left || elFuturePos.left + elRegion.width > visibleRect.right;\n}\n\nfunction isFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top < visibleRect.top || elFuturePos.top + elRegion.height > visibleRect.bottom;\n}\n\nfunction isCompleteFailX(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.left > visibleRect.right || elFuturePos.left + elRegion.width < visibleRect.left;\n}\n\nfunction isCompleteFailY(elFuturePos, elRegion, visibleRect) {\n return elFuturePos.top > visibleRect.bottom || elFuturePos.top + elRegion.height < visibleRect.top;\n}\n\nfunction flip(points, reg, map) {\n var ret = [];\n utils.each(points, function (p) {\n ret.push(p.replace(reg, function (m) {\n return map[m];\n }));\n });\n return ret;\n}\n\nfunction flipOffset(offset, index) {\n offset[index] = -offset[index];\n return offset;\n}\n\nfunction convertOffset(str, offsetLen) {\n var n;\n\n if (/%$/.test(str)) {\n n = parseInt(str.substring(0, str.length - 1), 10) / 100 * offsetLen;\n } else {\n n = parseInt(str, 10);\n }\n\n return n || 0;\n}\n\nfunction normalizeOffset(offset, el) {\n offset[0] = convertOffset(offset[0], el.width);\n offset[1] = convertOffset(offset[1], el.height);\n}\n/**\n * @param el\n * @param tgtRegion 参照节点所占的区域: { left, top, width, height }\n * @param align\n */\n\n\nfunction doAlign(el, tgtRegion, align, isTgtRegionVisible) {\n var points = align.points;\n var offset = align.offset || [0, 0];\n var targetOffset = align.targetOffset || [0, 0];\n var overflow = align.overflow;\n var source = align.source || el;\n offset = [].concat(offset);\n targetOffset = [].concat(targetOffset);\n overflow = overflow || {};\n var newOverflowCfg = {};\n var fail = 0;\n var alwaysByViewport = !!(overflow && overflow.alwaysByViewport); // 当前节点可以被放置的显示区域\n\n var visibleRect = getVisibleRectForElement(source, alwaysByViewport); // 当前节点所占的区域, left/top/width/height\n\n var elRegion = getRegion(source); // 将 offset 转换成数值,支持百分比\n\n normalizeOffset(offset, elRegion);\n normalizeOffset(targetOffset, tgtRegion); // 当前节点将要被放置的位置\n\n var elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset); // 当前节点将要所处的区域\n\n var newElRegion = utils.merge(elRegion, elFuturePos); // 如果可视区域不能完全放置当前节点时允许调整\n\n if (visibleRect && (overflow.adjustX || overflow.adjustY) && isTgtRegionVisible) {\n if (overflow.adjustX) {\n // 如果横向不能放下\n if (isFailX(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var newPoints = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n }); // 偏移量也反下\n\n var newOffset = flipOffset(offset, 0);\n var newTargetOffset = flipOffset(targetOffset, 0);\n var newElFuturePos = getElFuturePos(elRegion, tgtRegion, newPoints, newOffset, newTargetOffset);\n\n if (!isCompleteFailX(newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = newPoints;\n offset = newOffset;\n targetOffset = newTargetOffset;\n }\n }\n }\n\n if (overflow.adjustY) {\n // 如果纵向不能放下\n if (isFailY(elFuturePos, elRegion, visibleRect)) {\n // 对齐位置反下\n var _newPoints = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n }); // 偏移量也反下\n\n\n var _newOffset = flipOffset(offset, 1);\n\n var _newTargetOffset = flipOffset(targetOffset, 1);\n\n var _newElFuturePos = getElFuturePos(elRegion, tgtRegion, _newPoints, _newOffset, _newTargetOffset);\n\n if (!isCompleteFailY(_newElFuturePos, elRegion, visibleRect)) {\n fail = 1;\n points = _newPoints;\n offset = _newOffset;\n targetOffset = _newTargetOffset;\n }\n }\n } // 如果失败,重新计算当前节点将要被放置的位置\n\n\n if (fail) {\n elFuturePos = getElFuturePos(elRegion, tgtRegion, points, offset, targetOffset);\n utils.mix(newElRegion, elFuturePos);\n }\n\n var isStillFailX = isFailX(elFuturePos, elRegion, visibleRect);\n var isStillFailY = isFailY(elFuturePos, elRegion, visibleRect); // 检查反下后的位置是否可以放下了,如果仍然放不下:\n // 1. 复原修改过的定位参数\n\n if (isStillFailX || isStillFailY) {\n var _newPoints2 = points; // 重置对应部分的翻转逻辑\n\n if (isStillFailX) {\n _newPoints2 = flip(points, /[lr]/gi, {\n l: 'r',\n r: 'l'\n });\n }\n\n if (isStillFailY) {\n _newPoints2 = flip(points, /[tb]/gi, {\n t: 'b',\n b: 't'\n });\n }\n\n points = _newPoints2;\n offset = align.offset || [0, 0];\n targetOffset = align.targetOffset || [0, 0];\n } // 2. 只有指定了可以调整当前方向才调整\n\n\n newOverflowCfg.adjustX = overflow.adjustX && isStillFailX;\n newOverflowCfg.adjustY = overflow.adjustY && isStillFailY; // 确实要调整,甚至可能会调整高度宽度\n\n if (newOverflowCfg.adjustX || newOverflowCfg.adjustY) {\n newElRegion = adjustForViewport(elFuturePos, elRegion, visibleRect, newOverflowCfg);\n }\n } // need judge to in case set fixed with in css on height auto element\n\n\n if (newElRegion.width !== elRegion.width) {\n utils.css(source, 'width', utils.width(source) + newElRegion.width - elRegion.width);\n }\n\n if (newElRegion.height !== elRegion.height) {\n utils.css(source, 'height', utils.height(source) + newElRegion.height - elRegion.height);\n } // https://github.com/kissyteam/kissy/issues/190\n // 相对于屏幕位置没变,而 left/top 变了\n // 例如
\n\n\n utils.offset(source, {\n left: newElRegion.left,\n top: newElRegion.top\n }, {\n useCssRight: align.useCssRight,\n useCssBottom: align.useCssBottom,\n useCssTransform: align.useCssTransform,\n ignoreShake: align.ignoreShake\n });\n return {\n points: points,\n offset: offset,\n targetOffset: targetOffset,\n overflow: newOverflowCfg\n };\n}\n/**\n * 2012-04-26 yiminghe@gmail.com\n * - 优化智能对齐算法\n * - 慎用 resizeXX\n *\n * 2011-07-13 yiminghe@gmail.com note:\n * - 增加智能对齐,以及大小调整选项\n **/\n\nfunction isOutOfVisibleRect(target, alwaysByViewport) {\n var visibleRect = getVisibleRectForElement(target, alwaysByViewport);\n var targetRegion = getRegion(target);\n return !visibleRect || targetRegion.left + targetRegion.width <= visibleRect.left || targetRegion.top + targetRegion.height <= visibleRect.top || targetRegion.left >= visibleRect.right || targetRegion.top >= visibleRect.bottom;\n}\n\nfunction alignElement(el, refNode, align) {\n var target = align.target || refNode;\n var refNodeRegion = getRegion(target);\n var isTargetNotOutOfVisible = !isOutOfVisibleRect(target, align.overflow && align.overflow.alwaysByViewport);\n return doAlign(el, refNodeRegion, align, isTargetNotOutOfVisible);\n}\n\nalignElement.__getOffsetParent = getOffsetParent;\nalignElement.__getVisibleRectForElement = getVisibleRectForElement;\n\n/**\n * `tgtPoint`: { pageX, pageY } or { clientX, clientY }.\n * If client position provided, will internal convert to page position.\n */\n\nfunction alignPoint(el, tgtPoint, align) {\n var pageX;\n var pageY;\n var doc = utils.getDocument(el);\n var win = doc.defaultView || doc.parentWindow;\n var scrollX = utils.getWindowScrollLeft(win);\n var scrollY = utils.getWindowScrollTop(win);\n var viewportWidth = utils.viewportWidth(win);\n var viewportHeight = utils.viewportHeight(win);\n\n if ('pageX' in tgtPoint) {\n pageX = tgtPoint.pageX;\n } else {\n pageX = scrollX + tgtPoint.clientX;\n }\n\n if ('pageY' in tgtPoint) {\n pageY = tgtPoint.pageY;\n } else {\n pageY = scrollY + tgtPoint.clientY;\n }\n\n var tgtRegion = {\n left: pageX,\n top: pageY,\n width: 0,\n height: 0\n };\n var pointInView = pageX >= 0 && pageX <= scrollX + viewportWidth && pageY >= 0 && pageY <= scrollY + viewportHeight; // Provide default target point\n\n var points = [align.points[0], 'cc'];\n return doAlign(el, tgtRegion, _objectSpread2(_objectSpread2({}, align), {}, {\n points: points\n }), pointInView);\n}\n\nexport default alignElement;\nexport { alignElement, alignPoint };\n//# sourceMappingURL=index.js.map\n","import _typeof from 'babel-runtime/helpers/typeof';\nimport contains from '../vc-util/Dom/contains';\nexport function buffer(fn, ms) {\n var timer = void 0;\n\n function clear() {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n }\n\n function bufferFn() {\n clear();\n timer = setTimeout(fn, ms);\n }\n\n bufferFn.clear = clear;\n\n return bufferFn;\n}\n\nexport function isSamePoint(prev, next) {\n if (prev === next) return true;\n if (!prev || !next) return false;\n\n if ('pageX' in next && 'pageY' in next) {\n return prev.pageX === next.pageX && prev.pageY === next.pageY;\n }\n\n if ('clientX' in next && 'clientY' in next) {\n return prev.clientX === next.clientX && prev.clientY === next.clientY;\n }\n\n return false;\n}\n\nexport function isWindow(obj) {\n return obj && (typeof obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj.window === obj;\n}\n\nexport function isSimilarValue(val1, val2) {\n var int1 = Math.floor(val1);\n var int2 = Math.floor(val2);\n return Math.abs(int1 - int2) <= 1;\n}\n\nexport function restoreFocus(activeElement, container) {\n // Focus back if is in the container\n if (activeElement !== document.activeElement && contains(container, activeElement)) {\n activeElement.focus();\n }\n}","import _extends from 'babel-runtime/helpers/extends';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport PropTypes from '../_util/vue-types';\nimport { alignElement, alignPoint } from 'dom-align';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport { isWindow, buffer, isSamePoint, isSimilarValue, restoreFocus } from './util';\nimport { cloneElement } from '../_util/vnode.js';\nimport clonedeep from 'lodash/cloneDeep';\nimport { getSlot, getListeners } from '../_util/props-util';\n\nfunction getElement(func) {\n if (typeof func !== 'function' || !func) return null;\n return func();\n}\n\nfunction getPoint(point) {\n if ((typeof point === 'undefined' ? 'undefined' : _typeof(point)) !== 'object' || !point) return null;\n return point;\n}\n\nexport default {\n props: {\n childrenProps: PropTypes.object,\n align: PropTypes.object.isRequired,\n target: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).def(function () {\n return window;\n }),\n monitorBufferTime: PropTypes.number.def(50),\n monitorWindowResize: PropTypes.bool.def(false),\n disabled: PropTypes.bool.def(false)\n },\n data: function data() {\n this.aligned = false;\n return {};\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.prevProps = _extends({}, _this.$props);\n var props = _this.$props;\n // if parent ref not attached .... use document.getElementById\n !_this.aligned && _this.forceAlign();\n if (!props.disabled && props.monitorWindowResize) {\n _this.startMonitorWindowResize();\n }\n });\n },\n updated: function updated() {\n var _this2 = this;\n\n this.$nextTick(function () {\n var prevProps = _this2.prevProps;\n var props = _this2.$props;\n var reAlign = false;\n if (!props.disabled) {\n var source = _this2.$el;\n var sourceRect = source ? source.getBoundingClientRect() : null;\n\n if (prevProps.disabled) {\n reAlign = true;\n } else {\n var lastElement = getElement(prevProps.target);\n var currentElement = getElement(props.target);\n var lastPoint = getPoint(prevProps.target);\n var currentPoint = getPoint(props.target);\n if (isWindow(lastElement) && isWindow(currentElement)) {\n // Skip if is window\n reAlign = false;\n } else if (lastElement !== currentElement || // Element change\n lastElement && !currentElement && currentPoint || // Change from element to point\n lastPoint && currentPoint && currentElement || // Change from point to element\n currentPoint && !isSamePoint(lastPoint, currentPoint)) {\n reAlign = true;\n }\n\n // If source element size changed\n var preRect = _this2.sourceRect || {};\n if (!reAlign && source && (!isSimilarValue(preRect.width, sourceRect.width) || !isSimilarValue(preRect.height, sourceRect.height))) {\n reAlign = true;\n }\n }\n _this2.sourceRect = sourceRect;\n }\n\n if (reAlign) {\n _this2.forceAlign();\n }\n\n if (props.monitorWindowResize && !props.disabled) {\n _this2.startMonitorWindowResize();\n } else {\n _this2.stopMonitorWindowResize();\n }\n _this2.prevProps = _extends({}, _this2.$props, { align: clonedeep(_this2.$props.align) });\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.stopMonitorWindowResize();\n },\n\n methods: {\n startMonitorWindowResize: function startMonitorWindowResize() {\n if (!this.resizeHandler) {\n this.bufferMonitor = buffer(this.forceAlign, this.$props.monitorBufferTime);\n this.resizeHandler = addEventListener(window, 'resize', this.bufferMonitor);\n }\n },\n stopMonitorWindowResize: function stopMonitorWindowResize() {\n if (this.resizeHandler) {\n this.bufferMonitor.clear();\n this.resizeHandler.remove();\n this.resizeHandler = null;\n }\n },\n forceAlign: function forceAlign() {\n var _$props = this.$props,\n disabled = _$props.disabled,\n target = _$props.target,\n align = _$props.align;\n\n if (!disabled && target) {\n var source = this.$el;\n var listeners = getListeners(this);\n var result = void 0;\n var element = getElement(target);\n var point = getPoint(target);\n\n // IE lose focus after element realign\n // We should record activeElement and restore later\n var activeElement = document.activeElement;\n\n if (element) {\n result = alignElement(source, element, align);\n } else if (point) {\n result = alignPoint(source, point, align);\n }\n restoreFocus(activeElement, source);\n this.aligned = true;\n listeners.align && listeners.align(source, result);\n }\n }\n },\n\n render: function render() {\n var childrenProps = this.$props.childrenProps;\n\n var child = getSlot(this)[0];\n if (child && childrenProps) {\n return cloneElement(child, { props: childrenProps });\n }\n return child;\n }\n};","// based on vc-align 2.4.5\nimport Align from './Align';\nexport default Align;","import PropTypes from '../_util/vue-types';\n\nexport default {\n props: {\n visible: PropTypes.bool,\n hiddenClassName: PropTypes.string\n },\n render: function render() {\n var h = arguments[0];\n var _$props = this.$props,\n hiddenClassName = _$props.hiddenClassName,\n visible = _$props.visible;\n\n var children = null;\n if (hiddenClassName || !this.$slots['default'] || this.$slots['default'].length > 1) {\n var cls = '';\n if (!visible && hiddenClassName) {\n // cls += ` ${hiddenClassName}`\n }\n children = h(\n 'div',\n { 'class': cls },\n [this.$slots['default']]\n );\n } else {\n children = this.$slots['default'][0];\n }\n return children;\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropTypes from '../_util/vue-types';\nimport LazyRenderBox from './LazyRenderBox';\nimport { getListeners } from '../_util/props-util';\n\nexport default {\n props: {\n hiddenClassName: PropTypes.string.def(''),\n prefixCls: PropTypes.string,\n visible: PropTypes.bool\n },\n render: function render() {\n var h = arguments[0];\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n visible = _$props.visible,\n hiddenClassName = _$props.hiddenClassName;\n\n var divProps = {\n on: getListeners(this)\n };\n\n return h(\n 'div',\n _mergeJSXProps([divProps, { 'class': !visible ? hiddenClassName : '' }]),\n [h(\n LazyRenderBox,\n { 'class': prefixCls + '-content', attrs: { visible: visible }\n },\n [this.$slots['default']]\n )]\n );\n }\n};","import _typeof from 'babel-runtime/helpers/typeof';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport Align from '../vc-align';\nimport PopupInner from './PopupInner';\nimport LazyRenderBox from './LazyRenderBox';\nimport animate from '../_util/css-animation';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getListeners } from '../_util/props-util';\n\nexport default {\n name: 'VCTriggerPopup',\n mixins: [BaseMixin],\n props: {\n visible: PropTypes.bool,\n getClassNameFromAlign: PropTypes.func,\n getRootDomNode: PropTypes.func,\n align: PropTypes.any,\n destroyPopupOnHide: PropTypes.bool,\n prefixCls: PropTypes.string,\n getContainer: PropTypes.func,\n transitionName: PropTypes.string,\n animation: PropTypes.any,\n maskAnimation: PropTypes.string,\n maskTransitionName: PropTypes.string,\n mask: PropTypes.bool,\n zIndex: PropTypes.number,\n popupClassName: PropTypes.any,\n popupStyle: PropTypes.object.def(function () {\n return {};\n }),\n stretch: PropTypes.string,\n point: PropTypes.shape({\n pageX: PropTypes.number,\n pageY: PropTypes.number\n })\n },\n data: function data() {\n this.domEl = null;\n return {\n // Used for stretch\n stretchChecked: false,\n targetWidth: undefined,\n targetHeight: undefined\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.rootNode = _this.getPopupDomNode();\n _this.setStretchSize();\n });\n },\n\n // 如添加会导致动画失效,如放开会导致快速输入时闪动 https://github.com/vueComponent/ant-design-vue/issues/1327,\n // 目前方案是保留动画,闪动问题(动画多次执行)进一步定位\n // beforeUpdate() {\n // if (this.domEl && this.domEl.rcEndListener) {\n // this.domEl.rcEndListener();\n // this.domEl = null;\n // }\n // },\n updated: function updated() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setStretchSize();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.$el.parentNode) {\n this.$el.parentNode.removeChild(this.$el);\n } else if (this.$el.remove) {\n this.$el.remove();\n }\n },\n\n methods: {\n onAlign: function onAlign(popupDomNode, align) {\n var props = this.$props;\n var currentAlignClassName = props.getClassNameFromAlign(align);\n // FIX: https://github.com/react-component/trigger/issues/56\n // FIX: https://github.com/react-component/tooltip/issues/79\n if (this.currentAlignClassName !== currentAlignClassName) {\n this.currentAlignClassName = currentAlignClassName;\n popupDomNode.className = this.getClassName(currentAlignClassName);\n }\n var listeners = getListeners(this);\n listeners.align && listeners.align(popupDomNode, align);\n },\n\n\n // Record size if stretch needed\n setStretchSize: function setStretchSize() {\n var _$props = this.$props,\n stretch = _$props.stretch,\n getRootDomNode = _$props.getRootDomNode,\n visible = _$props.visible;\n var _$data = this.$data,\n stretchChecked = _$data.stretchChecked,\n targetHeight = _$data.targetHeight,\n targetWidth = _$data.targetWidth;\n\n\n if (!stretch || !visible) {\n if (stretchChecked) {\n this.setState({ stretchChecked: false });\n }\n return;\n }\n\n var $ele = getRootDomNode();\n if (!$ele) return;\n\n var height = $ele.offsetHeight;\n var width = $ele.offsetWidth;\n\n if (targetHeight !== height || targetWidth !== width || !stretchChecked) {\n this.setState({\n stretchChecked: true,\n targetHeight: height,\n targetWidth: width\n });\n }\n },\n getPopupDomNode: function getPopupDomNode() {\n return this.$refs.popupInstance ? this.$refs.popupInstance.$el : null;\n },\n getTargetElement: function getTargetElement() {\n return this.$props.getRootDomNode();\n },\n\n\n // `target` on `rc-align` can accept as a function to get the bind element or a point.\n // ref: https://www.npmjs.com/package/rc-align\n getAlignTarget: function getAlignTarget() {\n var point = this.$props.point;\n\n if (point) {\n return point;\n }\n return this.getTargetElement;\n },\n getMaskTransitionName: function getMaskTransitionName() {\n var props = this.$props;\n var transitionName = props.maskTransitionName;\n var animation = props.maskAnimation;\n if (!transitionName && animation) {\n transitionName = props.prefixCls + '-' + animation;\n }\n return transitionName;\n },\n getTransitionName: function getTransitionName() {\n var props = this.$props;\n var transitionName = props.transitionName;\n var animation = props.animation;\n if (!transitionName) {\n if (typeof animation === 'string') {\n transitionName = '' + animation;\n } else if (animation && animation.props && animation.props.name) {\n transitionName = animation.props.name;\n }\n }\n return transitionName;\n },\n getClassName: function getClassName(currentAlignClassName) {\n return this.$props.prefixCls + ' ' + this.$props.popupClassName + ' ' + currentAlignClassName;\n },\n getPopupElement: function getPopupElement() {\n var _this3 = this;\n\n var h = this.$createElement;\n var props = this.$props,\n $slots = this.$slots,\n getTransitionName = this.getTransitionName;\n var _$data2 = this.$data,\n stretchChecked = _$data2.stretchChecked,\n targetHeight = _$data2.targetHeight,\n targetWidth = _$data2.targetWidth;\n var align = props.align,\n visible = props.visible,\n prefixCls = props.prefixCls,\n animation = props.animation,\n popupStyle = props.popupStyle,\n getClassNameFromAlign = props.getClassNameFromAlign,\n destroyPopupOnHide = props.destroyPopupOnHide,\n stretch = props.stretch;\n\n var className = this.getClassName(this.currentAlignClassName || getClassNameFromAlign(align));\n // const hiddenClassName = `${prefixCls}-hidden`\n if (!visible) {\n this.currentAlignClassName = null;\n }\n var sizeStyle = {};\n if (stretch) {\n // Stretch with target\n if (stretch.indexOf('height') !== -1) {\n sizeStyle.height = typeof targetHeight === 'number' ? targetHeight + 'px' : targetHeight;\n } else if (stretch.indexOf('minHeight') !== -1) {\n sizeStyle.minHeight = typeof targetHeight === 'number' ? targetHeight + 'px' : targetHeight;\n }\n if (stretch.indexOf('width') !== -1) {\n sizeStyle.width = typeof targetWidth === 'number' ? targetWidth + 'px' : targetWidth;\n } else if (stretch.indexOf('minWidth') !== -1) {\n sizeStyle.minWidth = typeof targetWidth === 'number' ? targetWidth + 'px' : targetWidth;\n }\n // Delay force align to makes ui smooth\n if (!stretchChecked) {\n // sizeStyle.visibility = 'hidden'\n setTimeout(function () {\n if (_this3.$refs.alignInstance) {\n _this3.$refs.alignInstance.forceAlign();\n }\n }, 0);\n }\n }\n var popupInnerProps = {\n props: {\n prefixCls: prefixCls,\n visible: visible\n // hiddenClassName,\n },\n 'class': className,\n on: getListeners(this),\n ref: 'popupInstance',\n style: _extends({}, sizeStyle, popupStyle, this.getZIndexStyle())\n };\n var transitionProps = {\n props: {\n appear: true,\n css: false\n }\n };\n var transitionName = getTransitionName();\n var useTransition = !!transitionName;\n var transitionEvent = {\n beforeEnter: function beforeEnter() {\n // el.style.display = el.__vOriginalDisplay\n // this.$refs.alignInstance.forceAlign();\n },\n enter: function enter(el, done) {\n // render 后 vue 会移除通过animate动态添加的 class导致动画闪动,延迟两帧添加动画class,可以进一步定位或者重写 transition 组件\n _this3.$nextTick(function () {\n if (_this3.$refs.alignInstance) {\n _this3.$refs.alignInstance.$nextTick(function () {\n _this3.domEl = el;\n animate(el, transitionName + '-enter', done);\n });\n } else {\n done();\n }\n });\n },\n beforeLeave: function beforeLeave() {\n _this3.domEl = null;\n },\n leave: function leave(el, done) {\n animate(el, transitionName + '-leave', done);\n }\n };\n\n if ((typeof animation === 'undefined' ? 'undefined' : _typeof(animation)) === 'object') {\n useTransition = true;\n\n var _animation$on = animation.on,\n on = _animation$on === undefined ? {} : _animation$on,\n _animation$props = animation.props,\n _props = _animation$props === undefined ? {} : _animation$props;\n\n transitionProps.props = _extends({}, transitionProps.props, _props);\n transitionProps.on = _extends({}, transitionEvent, on);\n } else {\n transitionProps.on = transitionEvent;\n }\n if (!useTransition) {\n transitionProps = {};\n }\n if (destroyPopupOnHide) {\n return h(\n 'transition',\n transitionProps,\n [visible ? h(\n Align,\n {\n attrs: {\n target: this.getAlignTarget(),\n\n monitorWindowResize: true,\n align: align\n },\n key: 'popup',\n ref: 'alignInstance', on: {\n 'align': this.onAlign\n }\n },\n [h(\n PopupInner,\n popupInnerProps,\n [$slots['default']]\n )]\n ) : null]\n );\n }\n return h(\n 'transition',\n transitionProps,\n [h(\n Align,\n {\n directives: [{\n name: 'show',\n value: visible\n }],\n attrs: {\n target: this.getAlignTarget(),\n\n monitorWindowResize: true,\n disabled: !visible,\n align: align\n },\n key: 'popup',\n ref: 'alignInstance', on: {\n 'align': this.onAlign\n }\n },\n [h(\n PopupInner,\n popupInnerProps,\n [$slots['default']]\n )]\n )]\n );\n },\n getZIndexStyle: function getZIndexStyle() {\n var style = {};\n var props = this.$props;\n if (props.zIndex !== undefined) {\n style.zIndex = props.zIndex;\n }\n return style;\n },\n getMaskElement: function getMaskElement() {\n var h = this.$createElement;\n\n var props = this.$props;\n var maskElement = null;\n if (props.mask) {\n var maskTransition = this.getMaskTransitionName();\n maskElement = h(LazyRenderBox, {\n directives: [{\n name: 'show',\n value: props.visible\n }],\n\n style: this.getZIndexStyle(),\n key: 'mask',\n 'class': props.prefixCls + '-mask',\n attrs: { visible: props.visible\n }\n });\n if (maskTransition) {\n maskElement = h(\n 'transition',\n {\n attrs: { appear: true, name: maskTransition }\n },\n [maskElement]\n );\n }\n }\n return maskElement;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var getMaskElement = this.getMaskElement,\n getPopupElement = this.getPopupElement;\n\n return h('div', [getMaskElement(), getPopupElement()]);\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nfunction isPointsEq(a1, a2, isAlignPoint) {\n if (isAlignPoint) {\n return a1[0] === a2[0];\n }\n return a1[0] === a2[0] && a1[1] === a2[1];\n}\n\nexport function getAlignFromPlacement(builtinPlacements, placementStr, align) {\n var baseAlign = builtinPlacements[placementStr] || {};\n return _extends({}, baseAlign, align);\n}\n\nexport function getAlignPopupClassName(builtinPlacements, prefixCls, align, isAlignPoint) {\n var points = align.points;\n for (var placement in builtinPlacements) {\n if (builtinPlacements.hasOwnProperty(placement)) {\n if (isPointsEq(builtinPlacements[placement].points, points, isAlignPoint)) {\n return prefixCls + '-placement-' + placement;\n }\n }\n }\n return '';\n}\nexport function noop() {}","import PropTypes from './vue-types';\n\nexport default {\n props: {\n autoMount: PropTypes.bool.def(true),\n autoDestroy: PropTypes.bool.def(true),\n visible: PropTypes.bool,\n forceRender: PropTypes.bool.def(false),\n parent: PropTypes.any,\n getComponent: PropTypes.func.isRequired,\n getContainer: PropTypes.func.isRequired,\n children: PropTypes.func.isRequired\n },\n\n mounted: function mounted() {\n if (this.autoMount) {\n this.renderComponent();\n }\n },\n updated: function updated() {\n if (this.autoMount) {\n this.renderComponent();\n }\n },\n beforeDestroy: function beforeDestroy() {\n if (this.autoDestroy) {\n this.removeContainer();\n }\n },\n\n methods: {\n removeContainer: function removeContainer() {\n if (this.container) {\n this._component && this._component.$destroy();\n this.container.parentNode.removeChild(this.container);\n this.container = null;\n this._component = null;\n }\n },\n renderComponent: function renderComponent() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var ready = arguments[1];\n var visible = this.visible,\n forceRender = this.forceRender,\n getContainer = this.getContainer,\n parent = this.parent;\n\n var self = this;\n if (visible || parent._component || parent.$refs._component || forceRender) {\n var el = this.componentEl;\n if (!this.container) {\n this.container = getContainer();\n el = document.createElement('div');\n this.componentEl = el;\n this.container.appendChild(el);\n }\n // self.getComponent 不要放在 render 中,会因为响应式数据问题导致,多次触发 render\n var com = { component: self.getComponent(props) };\n if (!this._component) {\n this._component = new this.$root.constructor({\n el: el,\n parent: self,\n data: {\n _com: com\n },\n mounted: function mounted() {\n this.$nextTick(function () {\n if (ready) {\n ready.call(self);\n }\n });\n },\n updated: function updated() {\n this.$nextTick(function () {\n if (ready) {\n ready.call(self);\n }\n });\n },\n\n methods: {\n setComponent: function setComponent(_com) {\n this.$data._com = _com;\n }\n },\n render: function render() {\n return this.$data._com.component;\n }\n });\n } else {\n this._component.setComponent(com);\n }\n }\n }\n },\n\n render: function render() {\n return this.children({\n renderComponent: this.renderComponent,\n removeContainer: this.removeContainer\n });\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport Vue from 'vue';\nimport ref from 'vue-ref';\nimport PropTypes from '../_util/vue-types';\nimport contains from '../vc-util/Dom/contains';\nimport { hasProp, getComponentFromProp, getDataEvents, filterEmpty, getListeners } from '../_util/props-util';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../_util/requestAnimationTimeout';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport warning from '../_util/warning';\nimport Popup from './Popup';\nimport { getAlignFromPlacement, getAlignPopupClassName, noop } from './utils';\nimport BaseMixin from '../_util/BaseMixin';\nimport { cloneElement } from '../_util/vnode';\nimport ContainerRender from '../_util/ContainerRender';\n\nVue.use(ref, { name: 'ant-ref' });\n\nfunction returnEmptyString() {\n return '';\n}\n\nfunction returnDocument() {\n return window.document;\n}\nvar ALL_HANDLERS = ['click', 'mousedown', 'touchstart', 'mouseenter', 'mouseleave', 'focus', 'blur', 'contextmenu'];\n\nexport default {\n name: 'Trigger',\n mixins: [BaseMixin],\n props: {\n action: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]).def([]),\n showAction: PropTypes.any.def([]),\n hideAction: PropTypes.any.def([]),\n getPopupClassNameFromAlign: PropTypes.any.def(returnEmptyString),\n // onPopupVisibleChange: PropTypes.func.def(noop),\n afterPopupVisibleChange: PropTypes.func.def(noop),\n popup: PropTypes.any,\n popupStyle: PropTypes.object.def(function () {\n return {};\n }),\n prefixCls: PropTypes.string.def('rc-trigger-popup'),\n popupClassName: PropTypes.string.def(''),\n popupPlacement: PropTypes.string,\n builtinPlacements: PropTypes.object,\n popupTransitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n popupAnimation: PropTypes.any,\n mouseEnterDelay: PropTypes.number.def(0),\n mouseLeaveDelay: PropTypes.number.def(0.1),\n zIndex: PropTypes.number,\n focusDelay: PropTypes.number.def(0),\n blurDelay: PropTypes.number.def(0.15),\n getPopupContainer: PropTypes.func,\n getDocument: PropTypes.func.def(returnDocument),\n forceRender: PropTypes.bool,\n destroyPopupOnHide: PropTypes.bool.def(false),\n mask: PropTypes.bool.def(false),\n maskClosable: PropTypes.bool.def(true),\n // onPopupAlign: PropTypes.func.def(noop),\n popupAlign: PropTypes.object.def(function () {\n return {};\n }),\n popupVisible: PropTypes.bool,\n defaultPopupVisible: PropTypes.bool.def(false),\n maskTransitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n maskAnimation: PropTypes.string,\n stretch: PropTypes.string,\n alignPoint: PropTypes.bool // Maybe we can support user pass position in the future\n },\n provide: function provide() {\n return {\n vcTriggerContext: this\n };\n },\n\n inject: {\n vcTriggerContext: { 'default': function _default() {\n return {};\n } },\n savePopupRef: { 'default': function _default() {\n return noop;\n } },\n dialogContext: { 'default': function _default() {\n return null;\n } }\n },\n data: function data() {\n var _this = this;\n\n var props = this.$props;\n var popupVisible = void 0;\n if (hasProp(this, 'popupVisible')) {\n popupVisible = !!props.popupVisible;\n } else {\n popupVisible = !!props.defaultPopupVisible;\n }\n ALL_HANDLERS.forEach(function (h) {\n _this['fire' + h] = function (e) {\n _this.fireEvents(h, e);\n };\n });\n return {\n prevPopupVisible: popupVisible,\n sPopupVisible: popupVisible,\n point: null\n };\n },\n\n watch: {\n popupVisible: function popupVisible(val) {\n if (val !== undefined) {\n this.prevPopupVisible = this.sPopupVisible;\n this.sPopupVisible = val;\n }\n }\n },\n deactivated: function deactivated() {\n this.setPopupVisible(false);\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.renderComponent(null);\n _this2.updatedCal();\n });\n },\n updated: function updated() {\n var _this3 = this;\n\n var triggerAfterPopupVisibleChange = function triggerAfterPopupVisibleChange() {\n if (_this3.sPopupVisible !== _this3.prevPopupVisible) {\n _this3.afterPopupVisibleChange(_this3.sPopupVisible);\n }\n _this3.prevPopupVisible = _this3.sPopupVisible;\n };\n this.renderComponent(null, triggerAfterPopupVisibleChange);\n this.$nextTick(function () {\n _this3.updatedCal();\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearDelayTimer();\n this.clearOutsideHandler();\n clearTimeout(this.mouseDownTimeout);\n },\n\n methods: {\n updatedCal: function updatedCal() {\n var props = this.$props;\n var state = this.$data;\n\n // We must listen to `mousedown` or `touchstart`, edge case:\n // https://github.com/ant-design/ant-design/issues/5804\n // https://github.com/react-component/calendar/issues/250\n // https://github.com/react-component/trigger/issues/50\n if (state.sPopupVisible) {\n var currentDocument = void 0;\n if (!this.clickOutsideHandler && (this.isClickToHide() || this.isContextmenuToShow())) {\n currentDocument = props.getDocument();\n this.clickOutsideHandler = addEventListener(currentDocument, 'mousedown', this.onDocumentClick);\n }\n // always hide on mobile\n if (!this.touchOutsideHandler) {\n currentDocument = currentDocument || props.getDocument();\n this.touchOutsideHandler = addEventListener(currentDocument, 'touchstart', this.onDocumentClick);\n }\n // close popup when trigger type contains 'onContextmenu' and document is scrolling.\n if (!this.contextmenuOutsideHandler1 && this.isContextmenuToShow()) {\n currentDocument = currentDocument || props.getDocument();\n this.contextmenuOutsideHandler1 = addEventListener(currentDocument, 'scroll', this.onContextmenuClose);\n }\n // close popup when trigger type contains 'onContextmenu' and window is blur.\n if (!this.contextmenuOutsideHandler2 && this.isContextmenuToShow()) {\n this.contextmenuOutsideHandler2 = addEventListener(window, 'blur', this.onContextmenuClose);\n }\n } else {\n this.clearOutsideHandler();\n }\n },\n onMouseenter: function onMouseenter(e) {\n var mouseEnterDelay = this.$props.mouseEnterDelay;\n\n this.fireEvents('mouseenter', e);\n this.delaySetPopupVisible(true, mouseEnterDelay, mouseEnterDelay ? null : e);\n },\n onMouseMove: function onMouseMove(e) {\n this.fireEvents('mousemove', e);\n this.setPoint(e);\n },\n onMouseleave: function onMouseleave(e) {\n this.fireEvents('mouseleave', e);\n this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay);\n },\n onPopupMouseenter: function onPopupMouseenter() {\n this.clearDelayTimer();\n },\n onPopupMouseleave: function onPopupMouseleave(e) {\n if (e && e.relatedTarget && !e.relatedTarget.setTimeout && this._component && this._component.getPopupDomNode && contains(this._component.getPopupDomNode(), e.relatedTarget)) {\n return;\n }\n this.delaySetPopupVisible(false, this.$props.mouseLeaveDelay);\n },\n onFocus: function onFocus(e) {\n this.fireEvents('focus', e);\n // incase focusin and focusout\n this.clearDelayTimer();\n if (this.isFocusToShow()) {\n this.focusTime = Date.now();\n this.delaySetPopupVisible(true, this.$props.focusDelay);\n }\n },\n onMousedown: function onMousedown(e) {\n this.fireEvents('mousedown', e);\n this.preClickTime = Date.now();\n },\n onTouchstart: function onTouchstart(e) {\n this.fireEvents('touchstart', e);\n this.preTouchTime = Date.now();\n },\n onBlur: function onBlur(e) {\n if (!contains(e.target, e.relatedTarget || document.activeElement)) {\n this.fireEvents('blur', e);\n this.clearDelayTimer();\n if (this.isBlurToHide()) {\n this.delaySetPopupVisible(false, this.$props.blurDelay);\n }\n }\n },\n onContextmenu: function onContextmenu(e) {\n e.preventDefault();\n this.fireEvents('contextmenu', e);\n this.setPopupVisible(true, e);\n },\n onContextmenuClose: function onContextmenuClose() {\n if (this.isContextmenuToShow()) {\n this.close();\n }\n },\n onClick: function onClick(event) {\n this.fireEvents('click', event);\n // focus will trigger click\n if (this.focusTime) {\n var preTime = void 0;\n if (this.preClickTime && this.preTouchTime) {\n preTime = Math.min(this.preClickTime, this.preTouchTime);\n } else if (this.preClickTime) {\n preTime = this.preClickTime;\n } else if (this.preTouchTime) {\n preTime = this.preTouchTime;\n }\n if (Math.abs(preTime - this.focusTime) < 20) {\n return;\n }\n this.focusTime = 0;\n }\n this.preClickTime = 0;\n this.preTouchTime = 0;\n // Only prevent default when all the action is click.\n // https://github.com/ant-design/ant-design/issues/17043\n // https://github.com/ant-design/ant-design/issues/17291\n if (this.isClickToShow() && (this.isClickToHide() || this.isBlurToHide()) && event && event.preventDefault) {\n event.preventDefault();\n }\n if (event && event.domEvent) {\n event.domEvent.preventDefault();\n }\n var nextVisible = !this.$data.sPopupVisible;\n if (this.isClickToHide() && !nextVisible || nextVisible && this.isClickToShow()) {\n this.setPopupVisible(!this.$data.sPopupVisible, event);\n }\n },\n onPopupMouseDown: function onPopupMouseDown() {\n var _this4 = this;\n\n var _vcTriggerContext = this.vcTriggerContext,\n vcTriggerContext = _vcTriggerContext === undefined ? {} : _vcTriggerContext;\n\n this.hasPopupMouseDown = true;\n\n clearTimeout(this.mouseDownTimeout);\n this.mouseDownTimeout = setTimeout(function () {\n _this4.hasPopupMouseDown = false;\n }, 0);\n\n if (vcTriggerContext.onPopupMouseDown) {\n vcTriggerContext.onPopupMouseDown.apply(vcTriggerContext, arguments);\n }\n },\n onDocumentClick: function onDocumentClick(event) {\n if (this.$props.mask && !this.$props.maskClosable) {\n return;\n }\n var target = event.target;\n var root = this.$el;\n if (!contains(root, target) && !this.hasPopupMouseDown) {\n this.close();\n }\n },\n getPopupDomNode: function getPopupDomNode() {\n if (this._component && this._component.getPopupDomNode) {\n return this._component.getPopupDomNode();\n }\n return null;\n },\n getRootDomNode: function getRootDomNode() {\n return this.$el;\n // return this.$el.children[0] || this.$el\n },\n handleGetPopupClassFromAlign: function handleGetPopupClassFromAlign(align) {\n var className = [];\n var props = this.$props;\n var popupPlacement = props.popupPlacement,\n builtinPlacements = props.builtinPlacements,\n prefixCls = props.prefixCls,\n alignPoint = props.alignPoint,\n getPopupClassNameFromAlign = props.getPopupClassNameFromAlign;\n\n if (popupPlacement && builtinPlacements) {\n className.push(getAlignPopupClassName(builtinPlacements, prefixCls, align, alignPoint));\n }\n if (getPopupClassNameFromAlign) {\n className.push(getPopupClassNameFromAlign(align));\n }\n return className.join(' ');\n },\n getPopupAlign: function getPopupAlign() {\n var props = this.$props;\n var popupPlacement = props.popupPlacement,\n popupAlign = props.popupAlign,\n builtinPlacements = props.builtinPlacements;\n\n if (popupPlacement && builtinPlacements) {\n return getAlignFromPlacement(builtinPlacements, popupPlacement, popupAlign);\n }\n return popupAlign;\n },\n savePopup: function savePopup(node) {\n this._component = node;\n this.savePopupRef(node);\n },\n getComponent: function getComponent() {\n var h = this.$createElement;\n\n var self = this;\n var mouseProps = {};\n if (this.isMouseEnterToShow()) {\n mouseProps.mouseenter = self.onPopupMouseenter;\n }\n if (this.isMouseLeaveToHide()) {\n mouseProps.mouseleave = self.onPopupMouseleave;\n }\n mouseProps.mousedown = this.onPopupMouseDown;\n mouseProps.touchstart = this.onPopupMouseDown;\n var handleGetPopupClassFromAlign = self.handleGetPopupClassFromAlign,\n getRootDomNode = self.getRootDomNode,\n getContainer = self.getContainer;\n var _self$$props = self.$props,\n prefixCls = _self$$props.prefixCls,\n destroyPopupOnHide = _self$$props.destroyPopupOnHide,\n popupClassName = _self$$props.popupClassName,\n action = _self$$props.action,\n popupAnimation = _self$$props.popupAnimation,\n popupTransitionName = _self$$props.popupTransitionName,\n popupStyle = _self$$props.popupStyle,\n mask = _self$$props.mask,\n maskAnimation = _self$$props.maskAnimation,\n maskTransitionName = _self$$props.maskTransitionName,\n zIndex = _self$$props.zIndex,\n stretch = _self$$props.stretch,\n alignPoint = _self$$props.alignPoint;\n var _$data = this.$data,\n sPopupVisible = _$data.sPopupVisible,\n point = _$data.point;\n\n var align = this.getPopupAlign();\n var popupProps = {\n props: {\n prefixCls: prefixCls,\n destroyPopupOnHide: destroyPopupOnHide,\n visible: sPopupVisible,\n point: alignPoint && point,\n action: action,\n align: align,\n animation: popupAnimation,\n getClassNameFromAlign: handleGetPopupClassFromAlign,\n stretch: stretch,\n getRootDomNode: getRootDomNode,\n mask: mask,\n zIndex: zIndex,\n transitionName: popupTransitionName,\n maskAnimation: maskAnimation,\n maskTransitionName: maskTransitionName,\n getContainer: getContainer,\n popupClassName: popupClassName,\n popupStyle: popupStyle\n },\n on: _extends({\n align: getListeners(this).popupAlign || noop\n }, mouseProps),\n directives: [{\n name: 'ant-ref',\n value: this.savePopup\n }]\n };\n return h(\n Popup,\n popupProps,\n [getComponentFromProp(self, 'popup')]\n );\n },\n getContainer: function getContainer() {\n var props = this.$props,\n dialogContext = this.dialogContext;\n\n var popupContainer = document.createElement('div');\n // Make sure default popup container will never cause scrollbar appearing\n // https://github.com/react-component/trigger/issues/41\n popupContainer.style.position = 'absolute';\n popupContainer.style.top = '0';\n popupContainer.style.left = '0';\n popupContainer.style.width = '100%';\n var mountNode = props.getPopupContainer ? props.getPopupContainer(this.$el, dialogContext) : props.getDocument().body;\n mountNode.appendChild(popupContainer);\n this.popupContainer = popupContainer;\n return popupContainer;\n },\n setPopupVisible: function setPopupVisible(sPopupVisible, event) {\n var alignPoint = this.alignPoint,\n prevPopupVisible = this.sPopupVisible;\n\n this.clearDelayTimer();\n if (prevPopupVisible !== sPopupVisible) {\n if (!hasProp(this, 'popupVisible')) {\n this.setState({\n sPopupVisible: sPopupVisible,\n prevPopupVisible: prevPopupVisible\n });\n }\n var listeners = getListeners(this);\n listeners.popupVisibleChange && listeners.popupVisibleChange(sPopupVisible);\n }\n // Always record the point position since mouseEnterDelay will delay the show\n if (alignPoint && event) {\n this.setPoint(event);\n }\n },\n setPoint: function setPoint(point) {\n var alignPoint = this.$props.alignPoint;\n\n if (!alignPoint || !point) return;\n\n this.setState({\n point: {\n pageX: point.pageX,\n pageY: point.pageY\n }\n });\n },\n delaySetPopupVisible: function delaySetPopupVisible(visible, delayS, event) {\n var _this5 = this;\n\n var delay = delayS * 1000;\n this.clearDelayTimer();\n if (delay) {\n var point = event ? { pageX: event.pageX, pageY: event.pageY } : null;\n this.delayTimer = requestAnimationTimeout(function () {\n _this5.setPopupVisible(visible, point);\n _this5.clearDelayTimer();\n }, delay);\n } else {\n this.setPopupVisible(visible, event);\n }\n },\n clearDelayTimer: function clearDelayTimer() {\n if (this.delayTimer) {\n cancelAnimationTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n },\n clearOutsideHandler: function clearOutsideHandler() {\n if (this.clickOutsideHandler) {\n this.clickOutsideHandler.remove();\n this.clickOutsideHandler = null;\n }\n\n if (this.contextmenuOutsideHandler1) {\n this.contextmenuOutsideHandler1.remove();\n this.contextmenuOutsideHandler1 = null;\n }\n\n if (this.contextmenuOutsideHandler2) {\n this.contextmenuOutsideHandler2.remove();\n this.contextmenuOutsideHandler2 = null;\n }\n\n if (this.touchOutsideHandler) {\n this.touchOutsideHandler.remove();\n this.touchOutsideHandler = null;\n }\n },\n createTwoChains: function createTwoChains(event) {\n var fn = function fn() {};\n var events = getListeners(this);\n if (this.childOriginEvents[event] && events[event]) {\n return this['fire' + event];\n }\n fn = this.childOriginEvents[event] || events[event] || fn;\n return fn;\n },\n isClickToShow: function isClickToShow() {\n var _$props = this.$props,\n action = _$props.action,\n showAction = _$props.showAction;\n\n return action.indexOf('click') !== -1 || showAction.indexOf('click') !== -1;\n },\n isContextmenuToShow: function isContextmenuToShow() {\n var _$props2 = this.$props,\n action = _$props2.action,\n showAction = _$props2.showAction;\n\n return action.indexOf('contextmenu') !== -1 || showAction.indexOf('contextmenu') !== -1;\n },\n isClickToHide: function isClickToHide() {\n var _$props3 = this.$props,\n action = _$props3.action,\n hideAction = _$props3.hideAction;\n\n return action.indexOf('click') !== -1 || hideAction.indexOf('click') !== -1;\n },\n isMouseEnterToShow: function isMouseEnterToShow() {\n var _$props4 = this.$props,\n action = _$props4.action,\n showAction = _$props4.showAction;\n\n return action.indexOf('hover') !== -1 || showAction.indexOf('mouseenter') !== -1;\n },\n isMouseLeaveToHide: function isMouseLeaveToHide() {\n var _$props5 = this.$props,\n action = _$props5.action,\n hideAction = _$props5.hideAction;\n\n return action.indexOf('hover') !== -1 || hideAction.indexOf('mouseleave') !== -1;\n },\n isFocusToShow: function isFocusToShow() {\n var _$props6 = this.$props,\n action = _$props6.action,\n showAction = _$props6.showAction;\n\n return action.indexOf('focus') !== -1 || showAction.indexOf('focus') !== -1;\n },\n isBlurToHide: function isBlurToHide() {\n var _$props7 = this.$props,\n action = _$props7.action,\n hideAction = _$props7.hideAction;\n\n return action.indexOf('focus') !== -1 || hideAction.indexOf('blur') !== -1;\n },\n forcePopupAlign: function forcePopupAlign() {\n if (this.$data.sPopupVisible && this._component && this._component.$refs.alignInstance) {\n this._component.$refs.alignInstance.forceAlign();\n }\n },\n fireEvents: function fireEvents(type, e) {\n if (this.childOriginEvents[type]) {\n this.childOriginEvents[type](e);\n }\n this.__emit(type, e);\n },\n close: function close() {\n this.setPopupVisible(false);\n }\n },\n render: function render() {\n var _this6 = this;\n\n var h = arguments[0];\n var sPopupVisible = this.sPopupVisible;\n\n var children = filterEmpty(this.$slots['default']);\n var _$props8 = this.$props,\n forceRender = _$props8.forceRender,\n alignPoint = _$props8.alignPoint;\n\n\n if (children.length > 1) {\n warning(false, 'Trigger $slots.default.length > 1, just support only one default', true);\n }\n var child = children[0];\n this.childOriginEvents = getDataEvents(child);\n var newChildProps = {\n props: {},\n nativeOn: {},\n key: 'trigger'\n };\n\n if (this.isContextmenuToShow()) {\n newChildProps.nativeOn.contextmenu = this.onContextmenu;\n } else {\n newChildProps.nativeOn.contextmenu = this.createTwoChains('contextmenu');\n }\n\n if (this.isClickToHide() || this.isClickToShow()) {\n newChildProps.nativeOn.click = this.onClick;\n newChildProps.nativeOn.mousedown = this.onMousedown;\n newChildProps.nativeOn.touchstart = this.onTouchstart;\n } else {\n newChildProps.nativeOn.click = this.createTwoChains('click');\n newChildProps.nativeOn.mousedown = this.createTwoChains('mousedown');\n newChildProps.nativeOn.touchstart = this.createTwoChains('onTouchstart');\n }\n if (this.isMouseEnterToShow()) {\n newChildProps.nativeOn.mouseenter = this.onMouseenter;\n if (alignPoint) {\n newChildProps.nativeOn.mousemove = this.onMouseMove;\n }\n } else {\n newChildProps.nativeOn.mouseenter = this.createTwoChains('mouseenter');\n }\n if (this.isMouseLeaveToHide()) {\n newChildProps.nativeOn.mouseleave = this.onMouseleave;\n } else {\n newChildProps.nativeOn.mouseleave = this.createTwoChains('mouseleave');\n }\n\n if (this.isFocusToShow() || this.isBlurToHide()) {\n newChildProps.nativeOn.focus = this.onFocus;\n newChildProps.nativeOn.blur = this.onBlur;\n } else {\n newChildProps.nativeOn.focus = this.createTwoChains('focus');\n newChildProps.nativeOn.blur = function (e) {\n if (e && (!e.relatedTarget || !contains(e.target, e.relatedTarget))) {\n _this6.createTwoChains('blur')(e);\n }\n };\n }\n\n this.trigger = cloneElement(child, newChildProps);\n\n return h(ContainerRender, {\n attrs: {\n parent: this,\n visible: sPopupVisible,\n autoMount: false,\n forceRender: forceRender,\n getComponent: this.getComponent,\n getContainer: this.getContainer,\n children: function children(_ref) {\n var renderComponent = _ref.renderComponent;\n\n _this6.renderComponent = renderComponent;\n return _this6.trigger;\n }\n }\n });\n }\n};","// based on rc-trigger 2.6.5\nimport Trigger from './Trigger';\nexport default Trigger;","import _extends from \"babel-runtime/helpers/extends\";\nexport default function create(initialState) {\n var state = initialState;\n var listeners = [];\n\n function setState(partial) {\n state = _extends({}, state, partial);\n for (var i = 0; i < listeners.length; i++) {\n listeners[i]();\n }\n }\n\n function getState() {\n return state;\n }\n\n function subscribe(listener) {\n listeners.push(listener);\n\n return function unsubscribe() {\n var index = listeners.indexOf(listener);\n listeners.splice(index, 1);\n };\n }\n\n return {\n setState: setState,\n getState: getState,\n subscribe: subscribe\n };\n}","import PropTypes from '../vue-types';\n\nexport var storeShape = PropTypes.shape({\n subscribe: PropTypes.func.isRequired,\n setState: PropTypes.func.isRequired,\n getState: PropTypes.func.isRequired\n});","import { storeShape } from './PropTypes';\nexport default {\n name: 'StoreProvider',\n props: {\n store: storeShape.isRequired\n },\n provide: function provide() {\n return {\n storeContext: this.$props\n };\n },\n render: function render() {\n return this.$slots['default'][0];\n }\n};","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\n\nexport var placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -7]\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 7]\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0]\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0]\n }\n};\n\nexport default placements;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport omit from 'omit.js';\nimport PropTypes from '../_util/vue-types';\nimport Trigger from '../vc-trigger';\nimport KeyCode from '../_util/KeyCode';\nimport { connect } from '../_util/store';\nimport SubPopupMenu from './SubPopupMenu';\nimport placements from './placements';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getComponentFromProp, filterEmpty, getListeners } from '../_util/props-util';\nimport { requestAnimationTimeout, cancelAnimationTimeout } from '../_util/requestAnimationTimeout';\nimport { noop, loopMenuItemRecursively, getMenuIdFromSubMenuEventKey } from './util';\nimport getTransitionProps from '../_util/getTransitionProps';\n\nvar guid = 0;\n\nvar popupPlacementMap = {\n horizontal: 'bottomLeft',\n vertical: 'rightTop',\n 'vertical-left': 'rightTop',\n 'vertical-right': 'leftTop'\n};\n\nvar updateDefaultActiveFirst = function updateDefaultActiveFirst(store, eventKey, defaultActiveFirst) {\n var menuId = getMenuIdFromSubMenuEventKey(eventKey);\n var state = store.getState();\n store.setState({\n defaultActiveFirst: _extends({}, state.defaultActiveFirst, _defineProperty({}, menuId, defaultActiveFirst))\n });\n};\n\nvar SubMenu = {\n name: 'SubMenu',\n props: {\n parentMenu: PropTypes.object,\n title: PropTypes.any,\n selectedKeys: PropTypes.array.def([]),\n openKeys: PropTypes.array.def([]),\n openChange: PropTypes.func.def(noop),\n rootPrefixCls: PropTypes.string,\n eventKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n multiple: PropTypes.bool,\n active: PropTypes.bool, // TODO: remove\n isRootMenu: PropTypes.bool.def(false),\n index: PropTypes.number,\n triggerSubMenuAction: PropTypes.string,\n popupClassName: PropTypes.string,\n getPopupContainer: PropTypes.func,\n forceSubMenuRender: PropTypes.bool,\n openAnimation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n disabled: PropTypes.bool,\n subMenuOpenDelay: PropTypes.number.def(0.1),\n subMenuCloseDelay: PropTypes.number.def(0.1),\n level: PropTypes.number.def(1),\n inlineIndent: PropTypes.number.def(24),\n openTransitionName: PropTypes.string,\n popupOffset: PropTypes.array,\n isOpen: PropTypes.bool,\n store: PropTypes.object,\n mode: PropTypes.oneOf(['horizontal', 'vertical', 'vertical-left', 'vertical-right', 'inline']).def('vertical'),\n manualRef: PropTypes.func.def(noop),\n builtinPlacements: PropTypes.object.def(function () {\n return {};\n }),\n itemIcon: PropTypes.any,\n expandIcon: PropTypes.any,\n subMenuKey: PropTypes.string\n },\n mixins: [BaseMixin],\n isSubMenu: true,\n data: function data() {\n var props = this.$props;\n var store = props.store;\n var eventKey = props.eventKey;\n var defaultActiveFirst = store.getState().defaultActiveFirst;\n var value = false;\n\n if (defaultActiveFirst) {\n value = defaultActiveFirst[eventKey];\n }\n\n updateDefaultActiveFirst(store, eventKey, value);\n return {\n // defaultActiveFirst: false,\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.handleUpdated();\n });\n },\n updated: function updated() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.handleUpdated();\n });\n },\n beforeDestroy: function beforeDestroy() {\n var eventKey = this.eventKey;\n\n this.__emit('destroy', eventKey);\n\n /* istanbul ignore if */\n if (this.minWidthTimeout) {\n cancelAnimationTimeout(this.minWidthTimeout);\n this.minWidthTimeout = null;\n }\n\n /* istanbul ignore if */\n if (this.mouseenterTimeout) {\n cancelAnimationTimeout(this.mouseenterTimeout);\n this.mouseenterTimeout = null;\n }\n },\n\n methods: {\n handleUpdated: function handleUpdated() {\n var _this3 = this;\n\n var _$props = this.$props,\n mode = _$props.mode,\n parentMenu = _$props.parentMenu,\n manualRef = _$props.manualRef;\n\n // invoke customized ref to expose component to mixin\n\n if (manualRef) {\n manualRef(this);\n }\n\n if (mode !== 'horizontal' || !parentMenu.isRootMenu || !this.isOpen) {\n return;\n }\n\n this.minWidthTimeout = requestAnimationTimeout(function () {\n return _this3.adjustWidth();\n }, 0);\n },\n onKeyDown: function onKeyDown(e) {\n var keyCode = e.keyCode;\n var menu = this.menuInstance;\n var _$props2 = this.$props,\n store = _$props2.store,\n isOpen = _$props2.isOpen;\n\n\n if (keyCode === KeyCode.ENTER) {\n this.onTitleClick(e);\n updateDefaultActiveFirst(store, this.eventKey, true);\n return true;\n }\n\n if (keyCode === KeyCode.RIGHT) {\n if (isOpen) {\n menu.onKeyDown(e);\n } else {\n this.triggerOpenChange(true);\n // need to update current menu's defaultActiveFirst value\n updateDefaultActiveFirst(store, this.eventKey, true);\n }\n return true;\n }\n if (keyCode === KeyCode.LEFT) {\n var handled = void 0;\n if (isOpen) {\n handled = menu.onKeyDown(e);\n } else {\n return undefined;\n }\n if (!handled) {\n this.triggerOpenChange(false);\n handled = true;\n }\n return handled;\n }\n\n if (isOpen && (keyCode === KeyCode.UP || keyCode === KeyCode.DOWN)) {\n return menu.onKeyDown(e);\n }\n return undefined;\n },\n onPopupVisibleChange: function onPopupVisibleChange(visible) {\n this.triggerOpenChange(visible, visible ? 'mouseenter' : 'mouseleave');\n },\n onMouseEnter: function onMouseEnter(e) {\n var _$props3 = this.$props,\n key = _$props3.eventKey,\n store = _$props3.store;\n\n updateDefaultActiveFirst(store, key, false);\n this.__emit('mouseenter', {\n key: key,\n domEvent: e\n });\n },\n onMouseLeave: function onMouseLeave(e) {\n var eventKey = this.eventKey,\n parentMenu = this.parentMenu;\n\n parentMenu.subMenuInstance = this;\n // parentMenu.subMenuLeaveFn = () => {\n // // trigger mouseleave\n // this.__emit('mouseleave', {\n // key: eventKey,\n // domEvent: e,\n // })\n // }\n this.__emit('mouseleave', {\n key: eventKey,\n domEvent: e\n });\n // prevent popup menu and submenu gap\n // parentMenu.subMenuLeaveTimer = setTimeout(parentMenu.subMenuLeaveFn, 100)\n },\n onTitleMouseEnter: function onTitleMouseEnter(domEvent) {\n var key = this.$props.eventKey;\n // this.clearSubMenuTitleLeaveTimer()\n\n this.__emit('itemHover', {\n key: key,\n hover: true\n });\n this.__emit('titleMouseenter', {\n key: key,\n domEvent: domEvent\n });\n },\n onTitleMouseLeave: function onTitleMouseLeave(e) {\n var eventKey = this.eventKey,\n parentMenu = this.parentMenu;\n\n parentMenu.subMenuInstance = this;\n this.__emit('itemHover', {\n key: eventKey,\n hover: false\n });\n this.__emit('titleMouseleave', {\n key: eventKey,\n domEvent: e\n });\n },\n onTitleClick: function onTitleClick(e) {\n var _$props4 = this.$props,\n triggerSubMenuAction = _$props4.triggerSubMenuAction,\n eventKey = _$props4.eventKey,\n isOpen = _$props4.isOpen,\n store = _$props4.store;\n\n this.__emit('titleClick', {\n key: eventKey,\n domEvent: e\n });\n if (triggerSubMenuAction === 'hover') {\n return;\n }\n this.triggerOpenChange(!isOpen, 'click');\n updateDefaultActiveFirst(store, eventKey, false);\n },\n onSubMenuClick: function onSubMenuClick(info) {\n this.__emit('click', this.addKeyPath(info));\n },\n getPrefixCls: function getPrefixCls() {\n return this.$props.rootPrefixCls + '-submenu';\n },\n getActiveClassName: function getActiveClassName() {\n return this.getPrefixCls() + '-active';\n },\n getDisabledClassName: function getDisabledClassName() {\n return this.getPrefixCls() + '-disabled';\n },\n getSelectedClassName: function getSelectedClassName() {\n return this.getPrefixCls() + '-selected';\n },\n getOpenClassName: function getOpenClassName() {\n return this.$props.rootPrefixCls + '-submenu-open';\n },\n saveMenuInstance: function saveMenuInstance(c) {\n // children menu instance\n this.menuInstance = c;\n },\n addKeyPath: function addKeyPath(info) {\n return _extends({}, info, {\n keyPath: (info.keyPath || []).concat(this.$props.eventKey)\n });\n },\n\n\n // triggerOpenChange (open, type) {\n // const key = this.$props.eventKey\n // this.__emit('openChange', {\n // key,\n // item: this,\n // trigger: type,\n // open,\n // })\n // },\n triggerOpenChange: function triggerOpenChange(open, type) {\n var _this4 = this;\n\n var key = this.$props.eventKey;\n var openChange = function openChange() {\n _this4.__emit('openChange', {\n key: key,\n item: _this4,\n trigger: type,\n open: open\n });\n };\n if (type === 'mouseenter') {\n // make sure mouseenter happen after other menu item's mouseleave\n this.mouseenterTimeout = requestAnimationTimeout(function () {\n openChange();\n }, 0);\n } else {\n openChange();\n }\n },\n isChildrenSelected: function isChildrenSelected() {\n var ret = { find: false };\n loopMenuItemRecursively(this.$slots['default'], this.$props.selectedKeys, ret);\n return ret.find;\n },\n\n // isOpen () {\n // return this.$props.openKeys.indexOf(this.$props.eventKey) !== -1\n // },\n\n adjustWidth: function adjustWidth() {\n /* istanbul ignore if */\n if (!this.$refs.subMenuTitle || !this.menuInstance) {\n return;\n }\n var popupMenu = this.menuInstance.$el;\n if (popupMenu.offsetWidth >= this.$refs.subMenuTitle.offsetWidth) {\n return;\n }\n\n /* istanbul ignore next */\n popupMenu.style.minWidth = this.$refs.subMenuTitle.offsetWidth + 'px';\n },\n renderChildren: function renderChildren(children) {\n var h = this.$createElement;\n\n var props = this.$props;\n\n var _getListeners = getListeners(this),\n select = _getListeners.select,\n deselect = _getListeners.deselect,\n openChange = _getListeners.openChange;\n\n var subPopupMenuProps = {\n props: {\n mode: props.mode === 'horizontal' ? 'vertical' : props.mode,\n visible: props.isOpen,\n level: props.level + 1,\n inlineIndent: props.inlineIndent,\n focusable: false,\n selectedKeys: props.selectedKeys,\n eventKey: props.eventKey + '-menu-',\n openKeys: props.openKeys,\n openTransitionName: props.openTransitionName,\n openAnimation: props.openAnimation,\n subMenuOpenDelay: props.subMenuOpenDelay,\n parentMenu: this,\n subMenuCloseDelay: props.subMenuCloseDelay,\n forceSubMenuRender: props.forceSubMenuRender,\n triggerSubMenuAction: props.triggerSubMenuAction,\n builtinPlacements: props.builtinPlacements,\n defaultActiveFirst: props.store.getState().defaultActiveFirst[getMenuIdFromSubMenuEventKey(props.eventKey)],\n multiple: props.multiple,\n prefixCls: props.rootPrefixCls,\n manualRef: this.saveMenuInstance,\n itemIcon: getComponentFromProp(this, 'itemIcon'),\n expandIcon: getComponentFromProp(this, 'expandIcon'),\n children: children\n },\n on: {\n click: this.onSubMenuClick,\n select: select,\n deselect: deselect,\n openChange: openChange\n },\n id: this.internalMenuId\n };\n var baseProps = subPopupMenuProps.props;\n var haveRendered = this.haveRendered;\n this.haveRendered = true;\n\n this.haveOpened = this.haveOpened || baseProps.visible || baseProps.forceSubMenuRender;\n // never rendered not planning to, don't render\n if (!this.haveOpened) {\n return h('div');\n }\n\n // don't show transition on first rendering (no animation for opened menu)\n // show appear transition if it's not visible (not sure why)\n // show appear transition if it's not inline mode\n var transitionAppear = haveRendered || !baseProps.visible || !baseProps.mode === 'inline';\n subPopupMenuProps['class'] = ' ' + baseProps.prefixCls + '-sub';\n var animProps = { appear: transitionAppear, css: false };\n var transitionProps = {\n props: animProps,\n on: {}\n };\n if (baseProps.openTransitionName) {\n transitionProps = getTransitionProps(baseProps.openTransitionName, {\n appear: transitionAppear\n });\n } else if (_typeof(baseProps.openAnimation) === 'object') {\n animProps = _extends({}, animProps, baseProps.openAnimation.props || {});\n if (!transitionAppear) {\n animProps.appear = false;\n }\n } else if (typeof baseProps.openAnimation === 'string') {\n transitionProps = getTransitionProps(baseProps.openAnimation, { appear: transitionAppear });\n }\n\n if (_typeof(baseProps.openAnimation) === 'object' && baseProps.openAnimation.on) {\n transitionProps.on = baseProps.openAnimation.on;\n }\n return h(\n 'transition',\n transitionProps,\n [h(SubPopupMenu, _mergeJSXProps([{\n directives: [{\n name: 'show',\n value: props.isOpen\n }]\n }, subPopupMenuProps]))]\n );\n }\n },\n\n render: function render() {\n var _className, _attrs;\n\n var h = arguments[0];\n\n var props = this.$props;\n var rootPrefixCls = this.rootPrefixCls,\n parentMenu = this.parentMenu;\n\n var isOpen = props.isOpen;\n var prefixCls = this.getPrefixCls();\n var isInlineMode = props.mode === 'inline';\n var className = (_className = {}, _defineProperty(_className, prefixCls, true), _defineProperty(_className, prefixCls + '-' + props.mode, true), _defineProperty(_className, this.getOpenClassName(), isOpen), _defineProperty(_className, this.getActiveClassName(), props.active || isOpen && !isInlineMode), _defineProperty(_className, this.getDisabledClassName(), props.disabled), _defineProperty(_className, this.getSelectedClassName(), this.isChildrenSelected()), _className);\n\n if (!this.internalMenuId) {\n if (props.eventKey) {\n this.internalMenuId = props.eventKey + '$Menu';\n } else {\n this.internalMenuId = '$__$' + ++guid + '$Menu';\n }\n }\n\n var mouseEvents = {};\n var titleClickEvents = {};\n var titleMouseEvents = {};\n if (!props.disabled) {\n mouseEvents = {\n mouseleave: this.onMouseLeave,\n mouseenter: this.onMouseEnter\n };\n\n // only works in title, not outer li\n titleClickEvents = {\n click: this.onTitleClick\n };\n titleMouseEvents = {\n mouseenter: this.onTitleMouseEnter,\n mouseleave: this.onTitleMouseLeave\n };\n }\n\n var style = {};\n if (isInlineMode) {\n style.paddingLeft = props.inlineIndent * props.level + 'px';\n }\n var ariaOwns = {};\n // only set aria-owns when menu is open\n // otherwise it would be an invalid aria-owns value\n // since corresponding node cannot be found\n if (isOpen) {\n ariaOwns = {\n 'aria-owns': this.internalMenuId\n };\n }\n var titleProps = {\n attrs: _extends({\n 'aria-expanded': isOpen\n }, ariaOwns, {\n 'aria-haspopup': 'true',\n title: typeof props.title === 'string' ? props.title : undefined\n }),\n on: _extends({}, titleMouseEvents, titleClickEvents),\n style: style,\n 'class': prefixCls + '-title',\n ref: 'subMenuTitle'\n };\n // expand custom icon should NOT be displayed in menu with horizontal mode.\n var icon = null;\n if (props.mode !== 'horizontal') {\n icon = getComponentFromProp(this, 'expandIcon', props);\n }\n var title = h(\n 'div',\n titleProps,\n [getComponentFromProp(this, 'title'), icon || h('i', { 'class': prefixCls + '-arrow' })]\n );\n var children = this.renderChildren(filterEmpty(this.$slots['default']));\n\n var getPopupContainer = this.parentMenu.isRootMenu ? this.parentMenu.getPopupContainer : function (triggerNode) {\n return triggerNode.parentNode;\n };\n var popupPlacement = popupPlacementMap[props.mode];\n var popupAlign = props.popupOffset ? { offset: props.popupOffset } : {};\n var popupClassName = props.mode === 'inline' ? '' : props.popupClassName;\n var liProps = {\n on: _extends({}, omit(getListeners(this), ['click']), mouseEvents),\n 'class': className\n };\n\n return h(\n 'li',\n _mergeJSXProps([liProps, {\n attrs: { role: 'menuitem' }\n }]),\n [isInlineMode && title, isInlineMode && children, !isInlineMode && h(\n Trigger,\n {\n attrs: (_attrs = {\n prefixCls: prefixCls,\n popupClassName: prefixCls + '-popup ' + rootPrefixCls + '-' + parentMenu.theme + ' ' + (popupClassName || ''),\n getPopupContainer: getPopupContainer,\n builtinPlacements: placements\n }, _defineProperty(_attrs, 'builtinPlacements', _extends({}, placements, props.builtinPlacements)), _defineProperty(_attrs, 'popupPlacement', popupPlacement), _defineProperty(_attrs, 'popupVisible', isOpen), _defineProperty(_attrs, 'popupAlign', popupAlign), _defineProperty(_attrs, 'action', props.disabled ? [] : [props.triggerSubMenuAction]), _defineProperty(_attrs, 'mouseEnterDelay', props.subMenuOpenDelay), _defineProperty(_attrs, 'mouseLeaveDelay', props.subMenuCloseDelay), _defineProperty(_attrs, 'forceRender', props.forceSubMenuRender), _attrs),\n on: {\n 'popupVisibleChange': this.onPopupVisibleChange\n }\n },\n [h(\n 'template',\n { slot: 'popup' },\n [children]\n ), title]\n )]\n );\n }\n};\n\nvar connected = connect(function (_ref, _ref2) {\n var openKeys = _ref.openKeys,\n activeKey = _ref.activeKey,\n selectedKeys = _ref.selectedKeys;\n var eventKey = _ref2.eventKey,\n subMenuKey = _ref2.subMenuKey;\n return {\n isOpen: openKeys.indexOf(eventKey) > -1,\n active: activeKey[subMenuKey] === eventKey,\n selectedKeys: selectedKeys\n };\n})(SubMenu);\n\nconnected.isSubMenu = true;\n\nexport default connected;","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport PropTypes from '../_util/vue-types';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport SubMenu from './SubMenu';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getWidth, setStyle, menuAllProps } from './util';\nimport { cloneElement } from '../_util/vnode';\nimport { getClass, getPropsData, getEvents, getListeners } from '../_util/props-util';\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nvar MENUITEM_OVERFLOWED_CLASSNAME = 'menuitem-overflowed';\nvar FLOAT_PRECISION_ADJUST = 0.5;\n\n// Fix ssr\nif (canUseDOM) {\n require('mutationobserver-shim');\n}\n\nvar DOMWrap = {\n name: 'DOMWrap',\n mixins: [BaseMixin],\n data: function data() {\n this.resizeObserver = null;\n this.mutationObserver = null;\n\n // original scroll size of the list\n this.originalTotalWidth = 0;\n\n // copy of overflowed items\n this.overflowedItems = [];\n\n // cache item of the original items (so we can track the size and order)\n this.menuItemSizes = [];\n return {\n lastVisibleIndex: undefined\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setChildrenWidthAndResize();\n if (_this.level === 1 && _this.mode === 'horizontal') {\n var menuUl = _this.$el;\n if (!menuUl) {\n return;\n }\n _this.resizeObserver = new ResizeObserver(function (entries) {\n entries.forEach(_this.setChildrenWidthAndResize);\n });\n\n [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) {\n _this.resizeObserver.observe(el);\n });\n\n if (typeof MutationObserver !== 'undefined') {\n _this.mutationObserver = new MutationObserver(function () {\n _this.resizeObserver.disconnect();\n [].slice.call(menuUl.children).concat(menuUl).forEach(function (el) {\n _this.resizeObserver.observe(el);\n });\n _this.setChildrenWidthAndResize();\n });\n _this.mutationObserver.observe(menuUl, {\n attributes: false,\n childList: true,\n subTree: false\n });\n }\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n if (this.mutationObserver) {\n this.mutationObserver.disconnect();\n }\n },\n\n methods: {\n // get all valid menuItem nodes\n getMenuItemNodes: function getMenuItemNodes() {\n var prefixCls = this.$props.prefixCls;\n\n var ul = this.$el;\n if (!ul) {\n return [];\n }\n\n // filter out all overflowed indicator placeholder\n return [].slice.call(ul.children).filter(function (node) {\n return node.className.split(' ').indexOf(prefixCls + '-overflowed-submenu') < 0;\n });\n },\n getOverflowedSubMenuItem: function getOverflowedSubMenuItem(keyPrefix, overflowedItems, renderPlaceholder) {\n var h = this.$createElement;\n var _$props = this.$props,\n overflowedIndicator = _$props.overflowedIndicator,\n level = _$props.level,\n mode = _$props.mode,\n prefixCls = _$props.prefixCls,\n theme = _$props.theme;\n\n if (level !== 1 || mode !== 'horizontal') {\n return null;\n }\n // put all the overflowed item inside a submenu\n // with a title of overflow indicator ('...')\n var copy = this.$slots['default'][0];\n\n var _getPropsData = getPropsData(copy),\n title = _getPropsData.title,\n rest = _objectWithoutProperties(_getPropsData, ['title']); // eslint-disable-line no-unused-vars\n\n\n var events = getEvents(copy);\n var style = {};\n var key = keyPrefix + '-overflowed-indicator';\n var eventKey = keyPrefix + '-overflowed-indicator';\n\n if (overflowedItems.length === 0 && renderPlaceholder !== true) {\n style = {\n display: 'none'\n };\n } else if (renderPlaceholder) {\n style = {\n visibility: 'hidden',\n // prevent from taking normal dom space\n position: 'absolute'\n };\n key = key + '-placeholder';\n eventKey = eventKey + '-placeholder';\n }\n\n var popupClassName = theme ? prefixCls + '-' + theme : '';\n var props = {};\n var on = {};\n menuAllProps.props.forEach(function (k) {\n if (rest[k] !== undefined) {\n props[k] = rest[k];\n }\n });\n menuAllProps.on.forEach(function (k) {\n if (events[k] !== undefined) {\n on[k] = events[k];\n }\n });\n var subMenuProps = {\n props: _extends({\n title: overflowedIndicator,\n popupClassName: popupClassName\n }, props, {\n eventKey: eventKey,\n disabled: false\n }),\n 'class': prefixCls + '-overflowed-submenu',\n key: key,\n style: style,\n on: on\n };\n\n return h(\n SubMenu,\n subMenuProps,\n [overflowedItems]\n );\n },\n\n\n // memorize rendered menuSize\n setChildrenWidthAndResize: function setChildrenWidthAndResize() {\n if (this.mode !== 'horizontal') {\n return;\n }\n var ul = this.$el;\n\n if (!ul) {\n return;\n }\n\n var ulChildrenNodes = ul.children;\n\n if (!ulChildrenNodes || ulChildrenNodes.length === 0) {\n return;\n }\n\n var lastOverflowedIndicatorPlaceholder = ul.children[ulChildrenNodes.length - 1];\n\n // need last overflowed indicator for calculating length;\n setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'inline-block');\n\n var menuItemNodes = this.getMenuItemNodes();\n\n // reset display attribute for all hidden elements caused by overflow to calculate updated width\n // and then reset to original state after width calculation\n\n var overflowedItems = menuItemNodes.filter(function (c) {\n return c.className.split(' ').indexOf(MENUITEM_OVERFLOWED_CLASSNAME) >= 0;\n });\n\n overflowedItems.forEach(function (c) {\n setStyle(c, 'display', 'inline-block');\n });\n\n this.menuItemSizes = menuItemNodes.map(function (c) {\n return getWidth(c);\n });\n\n overflowedItems.forEach(function (c) {\n setStyle(c, 'display', 'none');\n });\n this.overflowedIndicatorWidth = getWidth(ul.children[ul.children.length - 1]);\n this.originalTotalWidth = this.menuItemSizes.reduce(function (acc, cur) {\n return acc + cur;\n }, 0);\n this.handleResize();\n // prevent the overflowed indicator from taking space;\n setStyle(lastOverflowedIndicatorPlaceholder, 'display', 'none');\n },\n handleResize: function handleResize() {\n var _this2 = this;\n\n if (this.mode !== 'horizontal') {\n return;\n }\n\n var ul = this.$el;\n if (!ul) {\n return;\n }\n var width = getWidth(ul);\n\n this.overflowedItems = [];\n var currentSumWidth = 0;\n\n // index for last visible child in horizontal mode\n var lastVisibleIndex = void 0;\n\n // float number comparison could be problematic\n // e.g. 0.1 + 0.2 > 0.3 =====> true\n // thus using FLOAT_PRECISION_ADJUST as buffer to help the situation\n if (this.originalTotalWidth > width + FLOAT_PRECISION_ADJUST) {\n lastVisibleIndex = -1;\n\n this.menuItemSizes.forEach(function (liWidth) {\n currentSumWidth += liWidth;\n if (currentSumWidth + _this2.overflowedIndicatorWidth <= width) {\n lastVisibleIndex += 1;\n }\n });\n }\n\n this.setState({ lastVisibleIndex: lastVisibleIndex });\n },\n renderChildren: function renderChildren(children) {\n var _this3 = this;\n\n // need to take care of overflowed items in horizontal mode\n var lastVisibleIndex = this.$data.lastVisibleIndex;\n\n var className = getClass(this);\n return (children || []).reduce(function (acc, childNode, index) {\n var item = childNode;\n var eventKey = getPropsData(childNode).eventKey;\n if (_this3.mode === 'horizontal') {\n var overflowed = _this3.getOverflowedSubMenuItem(eventKey, []);\n if (lastVisibleIndex !== undefined && className[_this3.prefixCls + '-root'] !== -1) {\n if (index > lastVisibleIndex) {\n item = cloneElement(childNode,\n // 这里修改 eventKey 是为了防止隐藏状态下还会触发 openkeys 事件\n {\n style: { display: 'none' },\n props: { eventKey: eventKey + '-hidden' },\n 'class': MENUITEM_OVERFLOWED_CLASSNAME\n });\n }\n if (index === lastVisibleIndex + 1) {\n _this3.overflowedItems = children.slice(lastVisibleIndex + 1).map(function (c) {\n return cloneElement(c,\n // children[index].key will become '.$key' in clone by default,\n // we have to overwrite with the correct key explicitly\n {\n key: getPropsData(c).eventKey,\n props: { mode: 'vertical-left' }\n });\n });\n\n overflowed = _this3.getOverflowedSubMenuItem(eventKey, _this3.overflowedItems);\n }\n }\n\n var ret = [].concat(_toConsumableArray(acc), [overflowed, item]);\n\n if (index === children.length - 1) {\n // need a placeholder for calculating overflowed indicator width\n ret.push(_this3.getOverflowedSubMenuItem(eventKey, [], true));\n }\n return ret;\n }\n return [].concat(_toConsumableArray(acc), [item]);\n }, []);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var Tag = this.$props.tag;\n var tagProps = {\n on: getListeners(this)\n };\n return h(\n Tag,\n tagProps,\n [this.renderChildren(this.$slots['default'])]\n );\n }\n};\n\nDOMWrap.props = {\n mode: PropTypes.oneOf(['horizontal', 'vertical', 'vertical-left', 'vertical-right', 'inline']),\n prefixCls: PropTypes.string,\n level: PropTypes.number,\n theme: PropTypes.string,\n overflowedIndicator: PropTypes.node,\n visible: PropTypes.bool,\n hiddenClassName: PropTypes.string,\n tag: PropTypes.string.def('div')\n};\n\nexport default DOMWrap;","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport omit from 'omit.js';\nimport PropTypes from '../_util/vue-types';\nimport { connect } from '../_util/store';\nimport BaseMixin from '../_util/BaseMixin';\nimport KeyCode from '../_util/KeyCode';\nimport classNames from 'classnames';\nimport { getKeyFromChildrenIndex, loopMenuItem, noop, isMobileDevice } from './util';\nimport DOMWrap from './DOMWrap';\nimport { cloneElement } from '../_util/vnode';\nimport { initDefaultProps, getOptionProps, getPropsData, getEvents, getComponentFromProp, getListeners } from '../_util/props-util';\n\nfunction allDisabled(arr) {\n if (!arr.length) {\n return true;\n }\n return arr.every(function (c) {\n return !!c.disabled;\n });\n}\n\nfunction updateActiveKey(store, menuId, activeKey) {\n var state = store.getState();\n store.setState({\n activeKey: _extends({}, state.activeKey, _defineProperty({}, menuId, activeKey))\n });\n}\n\nfunction getEventKey(props) {\n // when eventKey not available ,it's menu and return menu id '0-menu-'\n return props.eventKey || '0-menu-';\n}\n\nexport function saveRef(key, c) {\n if (c) {\n var index = this.instanceArrayKeyIndexMap[key];\n this.instanceArray[index] = c;\n }\n}\nexport function getActiveKey(props, originalActiveKey) {\n var activeKey = originalActiveKey;\n var eventKey = props.eventKey,\n defaultActiveFirst = props.defaultActiveFirst,\n children = props.children;\n\n if (activeKey !== undefined && activeKey !== null) {\n var found = void 0;\n loopMenuItem(children, function (c, i) {\n var propsData = c.componentOptions.propsData || {};\n if (c && !propsData.disabled && activeKey === getKeyFromChildrenIndex(c, eventKey, i)) {\n found = true;\n }\n });\n if (found) {\n return activeKey;\n }\n }\n activeKey = null;\n if (defaultActiveFirst) {\n loopMenuItem(children, function (c, i) {\n var propsData = c.componentOptions.propsData || {};\n var noActiveKey = activeKey === null || activeKey === undefined;\n if (noActiveKey && c && !propsData.disabled) {\n activeKey = getKeyFromChildrenIndex(c, eventKey, i);\n }\n });\n return activeKey;\n }\n return activeKey;\n}\n\nvar SubPopupMenu = {\n name: 'SubPopupMenu',\n props: initDefaultProps({\n // onSelect: PropTypes.func,\n // onClick: PropTypes.func,\n // onDeselect: PropTypes.func,\n // onOpenChange: PropTypes.func,\n // onDestroy: PropTypes.func,\n prefixCls: PropTypes.string,\n openTransitionName: PropTypes.string,\n openAnimation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n openKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n visible: PropTypes.bool,\n parentMenu: PropTypes.object,\n eventKey: PropTypes.string,\n store: PropTypes.object,\n forceSubMenuRender: PropTypes.bool,\n\n // adding in refactor\n focusable: PropTypes.bool,\n multiple: PropTypes.bool,\n defaultActiveFirst: PropTypes.bool,\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n selectedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n defaultSelectedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n defaultOpenKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n level: PropTypes.number,\n mode: PropTypes.oneOf(['horizontal', 'vertical', 'vertical-left', 'vertical-right', 'inline']),\n triggerSubMenuAction: PropTypes.oneOf(['click', 'hover']),\n inlineIndent: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n manualRef: PropTypes.func,\n itemIcon: PropTypes.any,\n expandIcon: PropTypes.any,\n overflowedIndicator: PropTypes.any,\n children: PropTypes.any.def([]),\n __propsSymbol__: PropTypes.any // mock componentWillReceiveProps\n }, {\n prefixCls: 'rc-menu',\n mode: 'vertical',\n level: 1,\n inlineIndent: 24,\n visible: true,\n focusable: true,\n manualRef: noop\n }),\n\n mixins: [BaseMixin],\n created: function created() {\n var props = getOptionProps(this);\n this.prevProps = _extends({}, props);\n props.store.setState({\n activeKey: _extends({}, props.store.getState().activeKey, _defineProperty({}, props.eventKey, getActiveKey(props, props.activeKey)))\n });\n this.instanceArray = [];\n },\n mounted: function mounted() {\n // invoke customized ref to expose component to mixin\n if (this.manualRef) {\n this.manualRef(this);\n }\n },\n updated: function updated() {\n var props = getOptionProps(this);\n var prevProps = this.prevProps;\n var originalActiveKey = 'activeKey' in props ? props.activeKey : props.store.getState().activeKey[getEventKey(props)];\n var activeKey = getActiveKey(props, originalActiveKey);\n if (activeKey !== originalActiveKey) {\n updateActiveKey(props.store, getEventKey(props), activeKey);\n } else if ('activeKey' in prevProps) {\n // If prev activeKey is not same as current activeKey,\n // we should set it.\n var prevActiveKey = getActiveKey(prevProps, prevProps.activeKey);\n if (activeKey !== prevActiveKey) {\n updateActiveKey(props.store, getEventKey(props), activeKey);\n }\n }\n this.prevProps = _extends({}, props);\n },\n\n methods: {\n // all keyboard events callbacks run from here at first\n onKeyDown: function onKeyDown(e, callback) {\n var keyCode = e.keyCode;\n var handled = void 0;\n this.getFlatInstanceArray().forEach(function (obj) {\n if (obj && obj.active && obj.onKeyDown) {\n handled = obj.onKeyDown(e);\n }\n });\n if (handled) {\n return 1;\n }\n var activeItem = null;\n if (keyCode === KeyCode.UP || keyCode === KeyCode.DOWN) {\n activeItem = this.step(keyCode === KeyCode.UP ? -1 : 1);\n }\n if (activeItem) {\n e.preventDefault();\n updateActiveKey(this.$props.store, getEventKey(this.$props), activeItem.eventKey);\n\n if (typeof callback === 'function') {\n callback(activeItem);\n }\n\n return 1;\n }\n return undefined;\n },\n onItemHover: function onItemHover(e) {\n var key = e.key,\n hover = e.hover;\n\n updateActiveKey(this.$props.store, getEventKey(this.$props), hover ? key : null);\n },\n onDeselect: function onDeselect(selectInfo) {\n this.__emit('deselect', selectInfo);\n },\n onSelect: function onSelect(selectInfo) {\n this.__emit('select', selectInfo);\n },\n onClick: function onClick(e) {\n this.__emit('click', e);\n },\n onOpenChange: function onOpenChange(e) {\n this.__emit('openChange', e);\n },\n onDestroy: function onDestroy(key) {\n this.__emit('destroy', key);\n },\n getFlatInstanceArray: function getFlatInstanceArray() {\n return this.instanceArray;\n },\n getOpenTransitionName: function getOpenTransitionName() {\n return this.$props.openTransitionName;\n },\n step: function step(direction) {\n var children = this.getFlatInstanceArray();\n var activeKey = this.$props.store.getState().activeKey[getEventKey(this.$props)];\n var len = children.length;\n if (!len) {\n return null;\n }\n if (direction < 0) {\n children = children.concat().reverse();\n }\n // find current activeIndex\n var activeIndex = -1;\n children.every(function (c, ci) {\n if (c && c.eventKey === activeKey) {\n activeIndex = ci;\n return false;\n }\n return true;\n });\n if (!this.defaultActiveFirst && activeIndex !== -1 && allDisabled(children.slice(activeIndex, len - 1))) {\n return undefined;\n }\n var start = (activeIndex + 1) % len;\n var i = start;\n\n do {\n var child = children[i];\n if (!child || child.disabled) {\n i = (i + 1) % len;\n } else {\n return child;\n }\n } while (i !== start);\n\n return null;\n },\n getIcon: function getIcon(instance, name) {\n if (instance.$createElement) {\n var temp = instance[name];\n if (temp !== undefined) {\n return temp;\n }\n return instance.$slots[name] || instance.$scopedSlots[name];\n } else {\n var _temp = getPropsData(instance)[name];\n if (_temp !== undefined) {\n return _temp;\n }\n var slotsProp = [];\n var componentOptions = instance.componentOptions || {};\n (componentOptions.children || []).forEach(function (child) {\n if (child.data && child.data.slot === name) {\n if (child.tag === 'template') {\n slotsProp.push(child.children);\n } else {\n slotsProp.push(child);\n }\n }\n });\n return slotsProp.length ? slotsProp : undefined;\n }\n },\n renderCommonMenuItem: function renderCommonMenuItem(child, i, extraProps) {\n var _this = this;\n\n if (child.tag === undefined) {\n return child;\n }\n var state = this.$props.store.getState();\n var props = this.$props;\n var key = getKeyFromChildrenIndex(child, props.eventKey, i);\n var childProps = child.componentOptions.propsData || {};\n\n var isActive = key === state.activeKey[getEventKey(this.$props)];\n if (!childProps.disabled) {\n // manualRef的执行顺序不能保证,使用key映射ref在this.instanceArray中的位置\n this.instanceArrayKeyIndexMap[key] = Object.keys(this.instanceArrayKeyIndexMap).length;\n }\n var childListeners = getEvents(child);\n var newChildProps = {\n props: _extends({\n mode: childProps.mode || props.mode,\n level: props.level,\n inlineIndent: props.inlineIndent,\n renderMenuItem: this.renderMenuItem,\n rootPrefixCls: props.prefixCls,\n index: i,\n parentMenu: props.parentMenu,\n // customized ref function, need to be invoked manually in child's componentDidMount\n manualRef: childProps.disabled ? noop : saveRef.bind(this, key),\n eventKey: key,\n active: !childProps.disabled && isActive,\n multiple: props.multiple,\n openTransitionName: this.getOpenTransitionName(),\n openAnimation: props.openAnimation,\n subMenuOpenDelay: props.subMenuOpenDelay,\n subMenuCloseDelay: props.subMenuCloseDelay,\n forceSubMenuRender: props.forceSubMenuRender,\n builtinPlacements: props.builtinPlacements,\n itemIcon: this.getIcon(child, 'itemIcon') || this.getIcon(this, 'itemIcon'),\n expandIcon: this.getIcon(child, 'expandIcon') || this.getIcon(this, 'expandIcon')\n }, extraProps),\n on: {\n click: function click(e) {\n (childListeners.click || noop)(e);\n _this.onClick(e);\n },\n itemHover: this.onItemHover,\n openChange: this.onOpenChange,\n deselect: this.onDeselect,\n // destroy: this.onDestroy,\n select: this.onSelect\n }\n };\n // ref: https://github.com/ant-design/ant-design/issues/13943\n if (props.mode === 'inline' || isMobileDevice()) {\n newChildProps.props.triggerSubMenuAction = 'click';\n }\n return cloneElement(child, newChildProps);\n },\n renderMenuItem: function renderMenuItem(c, i, subMenuKey) {\n if (!c) {\n return null;\n }\n var state = this.$props.store.getState();\n var extraProps = {\n openKeys: state.openKeys,\n selectedKeys: state.selectedKeys,\n triggerSubMenuAction: this.triggerSubMenuAction,\n isRootMenu: false,\n subMenuKey: subMenuKey\n };\n return this.renderCommonMenuItem(c, i, extraProps);\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n\n var props = _objectWithoutProperties(this.$props, []);\n\n var eventKey = props.eventKey,\n prefixCls = props.prefixCls,\n visible = props.visible,\n level = props.level,\n mode = props.mode,\n theme = props.theme;\n\n this.instanceArray = [];\n this.instanceArrayKeyIndexMap = {};\n var className = classNames(props.prefixCls, props.prefixCls + '-' + props.mode);\n var domWrapProps = {\n props: {\n tag: 'ul',\n // hiddenClassName: `${prefixCls}-hidden`,\n visible: visible,\n prefixCls: prefixCls,\n level: level,\n mode: mode,\n theme: theme,\n overflowedIndicator: getComponentFromProp(this, 'overflowedIndicator')\n },\n attrs: {\n role: props.role || 'menu'\n },\n 'class': className,\n // Otherwise, the propagated click event will trigger another onClick\n on: omit(getListeners(this), ['click'])\n };\n // if (props.id) {\n // domProps.id = props.id\n // }\n if (props.focusable) {\n domWrapProps.attrs.tabIndex = '0';\n domWrapProps.on.keydown = this.onKeyDown;\n }\n return (\n // ESLint is not smart enough to know that the type of `children` was checked.\n /* eslint-disable */\n h(\n DOMWrap,\n domWrapProps,\n [props.children.map(function (c, i) {\n return _this2.renderMenuItem(c, i, eventKey || '0-menu-');\n })]\n )\n /*eslint -enable */\n\n );\n }\n};\n\nexport default connect()(SubPopupMenu);","import PropTypes from '../_util/vue-types';\nexport default {\n prefixCls: PropTypes.string.def('rc-menu'),\n focusable: PropTypes.bool.def(true),\n multiple: PropTypes.bool,\n defaultActiveFirst: PropTypes.bool,\n visible: PropTypes.bool.def(true),\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n selectedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n defaultSelectedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).def([]),\n defaultOpenKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])).def([]),\n openKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n openAnimation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n mode: PropTypes.oneOf(['horizontal', 'vertical', 'vertical-left', 'vertical-right', 'inline']).def('vertical'),\n triggerSubMenuAction: PropTypes.string.def('hover'),\n subMenuOpenDelay: PropTypes.number.def(0.1),\n subMenuCloseDelay: PropTypes.number.def(0.1),\n level: PropTypes.number.def(1),\n inlineIndent: PropTypes.number.def(24),\n theme: PropTypes.oneOf(['light', 'dark']).def('light'),\n getPopupContainer: PropTypes.func,\n openTransitionName: PropTypes.string,\n forceSubMenuRender: PropTypes.bool,\n selectable: PropTypes.bool,\n isRootMenu: PropTypes.bool.def(true),\n builtinPlacements: PropTypes.object.def(function () {\n return {};\n }),\n itemIcon: PropTypes.any,\n expandIcon: PropTypes.any,\n overflowedIndicator: PropTypes.any\n};","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { Provider, create } from '../_util/store';\nimport { default as SubPopupMenu, getActiveKey } from './SubPopupMenu';\nimport BaseMixin from '../_util/BaseMixin';\nimport hasProp, { getOptionProps, getComponentFromProp, filterEmpty, getListeners } from '../_util/props-util';\nimport commonPropsType from './commonPropsType';\n\nvar Menu = {\n name: 'Menu',\n props: _extends({}, commonPropsType, {\n selectable: PropTypes.bool.def(true)\n }),\n mixins: [BaseMixin],\n\n data: function data() {\n var props = getOptionProps(this);\n var selectedKeys = props.defaultSelectedKeys;\n var openKeys = props.defaultOpenKeys;\n if ('selectedKeys' in props) {\n selectedKeys = props.selectedKeys || [];\n }\n if ('openKeys' in props) {\n openKeys = props.openKeys || [];\n }\n\n this.store = create({\n selectedKeys: selectedKeys,\n openKeys: openKeys,\n activeKey: {\n '0-menu-': getActiveKey(_extends({}, props, { children: this.$slots['default'] || [] }), props.activeKey)\n }\n });\n\n // this.isRootMenu = true // 声明在props上\n return {};\n },\n mounted: function mounted() {\n this.updateMiniStore();\n },\n updated: function updated() {\n this.updateMiniStore();\n },\n\n methods: {\n onSelect: function onSelect(selectInfo) {\n var props = this.$props;\n if (props.selectable) {\n // root menu\n var selectedKeys = this.store.getState().selectedKeys;\n var selectedKey = selectInfo.key;\n if (props.multiple) {\n selectedKeys = selectedKeys.concat([selectedKey]);\n } else {\n selectedKeys = [selectedKey];\n }\n if (!hasProp(this, 'selectedKeys')) {\n this.store.setState({\n selectedKeys: selectedKeys\n });\n }\n this.__emit('select', _extends({}, selectInfo, {\n selectedKeys: selectedKeys\n }));\n }\n },\n onClick: function onClick(e) {\n this.__emit('click', e);\n },\n\n // onKeyDown needs to be exposed as a instance method\n // e.g., in rc-select, we need to navigate menu item while\n // current active item is rc-select input box rather than the menu itself\n onKeyDown: function onKeyDown(e, callback) {\n this.$refs.innerMenu.getWrappedInstance().onKeyDown(e, callback);\n },\n onOpenChange: function onOpenChange(event) {\n var openKeys = this.store.getState().openKeys.concat();\n var changed = false;\n var processSingle = function processSingle(e) {\n var oneChanged = false;\n if (e.open) {\n oneChanged = openKeys.indexOf(e.key) === -1;\n if (oneChanged) {\n openKeys.push(e.key);\n }\n } else {\n var index = openKeys.indexOf(e.key);\n oneChanged = index !== -1;\n if (oneChanged) {\n openKeys.splice(index, 1);\n }\n }\n changed = changed || oneChanged;\n };\n if (Array.isArray(event)) {\n // batch change call\n event.forEach(processSingle);\n } else {\n processSingle(event);\n }\n if (changed) {\n if (!hasProp(this, 'openKeys')) {\n this.store.setState({ openKeys: openKeys });\n }\n this.__emit('openChange', openKeys);\n }\n },\n onDeselect: function onDeselect(selectInfo) {\n var props = this.$props;\n if (props.selectable) {\n var selectedKeys = this.store.getState().selectedKeys.concat();\n var selectedKey = selectInfo.key;\n var index = selectedKeys.indexOf(selectedKey);\n if (index !== -1) {\n selectedKeys.splice(index, 1);\n }\n if (!hasProp(this, 'selectedKeys')) {\n this.store.setState({\n selectedKeys: selectedKeys\n });\n }\n this.__emit('deselect', _extends({}, selectInfo, {\n selectedKeys: selectedKeys\n }));\n }\n },\n getOpenTransitionName: function getOpenTransitionName() {\n var props = this.$props;\n var transitionName = props.openTransitionName;\n var animationName = props.openAnimation;\n if (!transitionName && typeof animationName === 'string') {\n transitionName = props.prefixCls + '-open-' + animationName;\n }\n return transitionName;\n },\n updateMiniStore: function updateMiniStore() {\n var props = getOptionProps(this);\n if ('selectedKeys' in props) {\n this.store.setState({\n selectedKeys: props.selectedKeys || []\n });\n }\n if ('openKeys' in props) {\n this.store.setState({\n openKeys: props.openKeys || []\n });\n }\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var subPopupMenuProps = {\n props: _extends({}, props, {\n itemIcon: getComponentFromProp(this, 'itemIcon', props),\n expandIcon: getComponentFromProp(this, 'expandIcon', props),\n overflowedIndicator: getComponentFromProp(this, 'overflowedIndicator', props) || h('span', ['\\xB7\\xB7\\xB7']),\n openTransitionName: this.getOpenTransitionName(),\n parentMenu: this,\n children: filterEmpty(this.$slots['default'] || [])\n }),\n 'class': props.prefixCls + '-root',\n on: _extends({}, getListeners(this), {\n click: this.onClick,\n openChange: this.onOpenChange,\n deselect: this.onDeselect,\n select: this.onSelect\n }),\n ref: 'innerMenu'\n };\n return h(\n Provider,\n {\n attrs: { store: this.store }\n },\n [h(SubPopupMenu, subPopupMenuProps)]\n );\n }\n};\nexport default Menu;","// based on rc-menu 7.5.5\nimport Menu from './Menu';\nimport SubMenu from './SubMenu';\nimport MenuItem, { menuItemProps } from './MenuItem';\nimport MenuItemGroup from './MenuItemGroup';\nimport Divider from './Divider';\n\nexport { SubMenu, MenuItem as Item, menuItemProps as itemProps, MenuItem, MenuItemGroup, MenuItemGroup as ItemGroup, Divider };\n\nexport default Menu;","import _typeof from 'babel-runtime/helpers/typeof';\nimport { getPropsData, getSlotOptions, getKey, getAttrs, getComponentFromProp } from '../_util/props-util';\nimport { cloneVNodes } from '../_util/vnode';\n\nexport function toTitle(title) {\n if (typeof title === 'string') {\n return title.trim();\n }\n return '';\n}\nexport function getValuePropValue(child) {\n if (!child) {\n return null;\n }\n var props = getPropsData(child);\n if ('value' in props) {\n return props.value;\n }\n if (getKey(child) !== undefined) {\n return getKey(child);\n }\n if (getSlotOptions(child).isSelectOptGroup) {\n var label = getComponentFromProp(child, 'label');\n if (label) {\n return label;\n }\n }\n throw new Error('Need at least a key or a value or a label (only for OptGroup) for ' + child);\n}\n\nexport function getPropValue(child, prop) {\n if (prop === 'value') {\n return getValuePropValue(child);\n }\n if (prop === 'children') {\n var newChild = child.$slots ? cloneVNodes(child.$slots['default'], true) : cloneVNodes(child.componentOptions.children, true);\n if (newChild.length === 1 && !newChild[0].tag) {\n return newChild[0].text;\n }\n return newChild;\n }\n var data = getPropsData(child);\n if (prop in data) {\n return data[prop];\n } else {\n return getAttrs(child)[prop];\n }\n}\n\nexport function isMultiple(props) {\n return props.multiple;\n}\n\nexport function isCombobox(props) {\n return props.combobox;\n}\n\nexport function isMultipleOrTags(props) {\n return props.multiple || props.tags;\n}\n\nexport function isMultipleOrTagsOrCombobox(props) {\n return isMultipleOrTags(props) || isCombobox(props);\n}\n\nexport function isSingleMode(props) {\n return !isMultipleOrTagsOrCombobox(props);\n}\n\nexport function toArray(value) {\n var ret = value;\n if (value === undefined) {\n ret = [];\n } else if (!Array.isArray(value)) {\n ret = [value];\n }\n return ret;\n}\n\nexport function getMapKey(value) {\n return (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '-' + value;\n}\n\nexport function preventDefaultEvent(e) {\n e.preventDefault();\n}\n\nexport function findIndexInValueBySingleValue(value, singleValue) {\n var index = -1;\n if (value) {\n for (var i = 0; i < value.length; i++) {\n if (value[i] === singleValue) {\n index = i;\n break;\n }\n }\n }\n return index;\n}\n\nexport function getLabelFromPropsValue(value, key) {\n var label = void 0;\n value = toArray(value);\n if (value) {\n for (var i = 0; i < value.length; i++) {\n if (value[i].key === key) {\n label = value[i].label;\n break;\n }\n }\n }\n return label;\n}\n\nexport function getSelectKeys(menuItems, value) {\n if (value === null || value === undefined) {\n return [];\n }\n var selectedKeys = [];\n menuItems.forEach(function (item) {\n if (getSlotOptions(item).isMenuItemGroup) {\n selectedKeys = selectedKeys.concat(getSelectKeys(item.componentOptions.children, value));\n } else {\n var itemValue = getValuePropValue(item);\n var itemKey = item.key;\n if (findIndexInValueBySingleValue(value, itemValue) !== -1 && itemKey !== undefined) {\n selectedKeys.push(itemKey);\n }\n }\n });\n return selectedKeys;\n}\n\nexport var UNSELECTABLE_STYLE = {\n userSelect: 'none',\n WebkitUserSelect: 'none'\n};\n\nexport var UNSELECTABLE_ATTRIBUTE = {\n unselectable: 'on'\n};\n\nexport function findFirstMenuItem(children) {\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n var props = getPropsData(child);\n if (getSlotOptions(child).isMenuItemGroup) {\n var found = findFirstMenuItem(child.componentOptions.children);\n if (found) {\n return found;\n }\n } else if (!(props.disabled || props.disabled === '')) {\n return child;\n }\n }\n return null;\n}\n\nexport function includesSeparators(str, separators) {\n for (var i = 0; i < separators.length; ++i) {\n if (str.lastIndexOf(separators[i]) > 0) {\n return true;\n }\n }\n return false;\n}\n\nexport function splitBySeparators(str, separators) {\n var reg = new RegExp('[' + separators.join() + ']');\n return str.split(reg).filter(function (token) {\n return token;\n });\n}\n\nexport function defaultFilterFn(input, child) {\n var props = getPropsData(child);\n if (props.disabled) {\n return false;\n }\n var value = getPropValue(child, this.optionFilterProp);\n if (value.length && value[0].text) {\n value = value[0].text;\n } else {\n value = String(value);\n }\n return value.toLowerCase().indexOf(input.toLowerCase()) > -1;\n}\n\nexport function validateOptionValue(value, props) {\n if (isSingleMode(props) || isMultiple(props)) {\n return;\n }\n if (typeof value !== 'string') {\n throw new Error('Invalid `value` of type `' + (typeof value === 'undefined' ? 'undefined' : _typeof(value)) + '` supplied to Option, ' + 'expected `string` when `tags/combobox` is `true`.');\n }\n}\n\nexport function saveRef(instance, name) {\n return function (node) {\n instance[name] = node;\n };\n}\n\nexport function generateUUID() {\n if (process.env.NODE_ENV === 'test') {\n return 'test-uuid';\n }\n var d = new Date().getTime();\n var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = (d + Math.random() * 16) % 16 | 0;\n d = Math.floor(d / 16);\n return (c === 'x' ? r : r & 0x7 | 0x8).toString(16);\n });\n return uuid;\n}","import _extends from 'babel-runtime/helpers/extends';\nimport raf from 'raf';\nimport PropTypes from '../_util/vue-types';\nimport Menu from '../vc-menu';\nimport scrollIntoView from 'dom-scroll-into-view';\nimport { getSelectKeys, preventDefaultEvent } from './util';\nimport { cloneElement } from '../_util/vnode';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getSlotOptions, getComponentFromProp, getListeners } from '../_util/props-util';\n\nexport default {\n name: 'DropdownMenu',\n mixins: [BaseMixin],\n props: {\n ariaId: PropTypes.string,\n defaultActiveFirstOption: PropTypes.bool,\n value: PropTypes.any,\n dropdownMenuStyle: PropTypes.object,\n multiple: PropTypes.bool,\n // onPopupFocus: PropTypes.func,\n // onPopupScroll: PropTypes.func,\n // onMenuDeSelect: PropTypes.func,\n // onMenuSelect: PropTypes.func,\n prefixCls: PropTypes.string,\n menuItems: PropTypes.any,\n inputValue: PropTypes.string,\n visible: PropTypes.bool,\n backfillValue: PropTypes.any,\n firstActiveValue: PropTypes.string,\n menuItemSelectedIcon: PropTypes.any\n },\n watch: {\n visible: function visible(val) {\n var _this = this;\n\n if (!val) {\n this.lastVisible = val;\n } else {\n this.$nextTick(function () {\n _this.scrollActiveItemToView();\n });\n }\n }\n },\n\n created: function created() {\n this.rafInstance = null;\n this.lastInputValue = this.$props.inputValue;\n this.lastVisible = false;\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.scrollActiveItemToView();\n });\n this.lastVisible = this.$props.visible;\n },\n updated: function updated() {\n var props = this.$props;\n // if (!this.prevVisible && props.visible) {\n // this.$nextTick(() => {\n // this.scrollActiveItemToView();\n // });\n // }\n this.lastVisible = props.visible;\n this.lastInputValue = props.inputValue;\n this.prevVisible = this.visible;\n },\n beforeDestroy: function beforeDestroy() {\n if (this.rafInstance) {\n raf.cancel(this.rafInstance);\n }\n },\n\n methods: {\n scrollActiveItemToView: function scrollActiveItemToView() {\n var _this3 = this;\n\n // scroll into view\n var itemComponent = this.firstActiveItem && this.firstActiveItem.$el;\n var props = this.$props;\n var value = props.value,\n visible = props.visible,\n firstActiveValue = props.firstActiveValue;\n\n if (!itemComponent || !visible) {\n return;\n }\n var scrollIntoViewOpts = {\n onlyScrollIfNeeded: true\n };\n if ((!value || value.length === 0) && firstActiveValue) {\n scrollIntoViewOpts.alignWithTop = true;\n }\n // Delay to scroll since current frame item position is not ready when pre view is by filter\n // https://github.com/ant-design/ant-design/issues/11268#issuecomment-406634462\n this.rafInstance = raf(function () {\n scrollIntoView(itemComponent, _this3.$refs.menuRef.$el, scrollIntoViewOpts);\n });\n },\n renderMenu: function renderMenu() {\n var _this4 = this;\n\n var h = this.$createElement;\n\n var props = this.$props;\n var menuItems = props.menuItems,\n defaultActiveFirstOption = props.defaultActiveFirstOption,\n value = props.value,\n prefixCls = props.prefixCls,\n multiple = props.multiple,\n inputValue = props.inputValue,\n firstActiveValue = props.firstActiveValue,\n dropdownMenuStyle = props.dropdownMenuStyle,\n backfillValue = props.backfillValue,\n visible = props.visible;\n\n var menuItemSelectedIcon = getComponentFromProp(this, 'menuItemSelectedIcon');\n\n var _getListeners = getListeners(this),\n menuDeselect = _getListeners.menuDeselect,\n menuSelect = _getListeners.menuSelect,\n popupScroll = _getListeners.popupScroll;\n\n if (menuItems && menuItems.length) {\n var selectedKeys = getSelectKeys(menuItems, value);\n var menuProps = {\n props: {\n multiple: multiple,\n itemIcon: multiple ? menuItemSelectedIcon : null,\n selectedKeys: selectedKeys,\n prefixCls: prefixCls + '-menu'\n },\n on: {},\n style: dropdownMenuStyle,\n ref: 'menuRef',\n attrs: {\n role: 'listbox'\n }\n };\n if (popupScroll) {\n menuProps.on.scroll = popupScroll;\n }\n if (multiple) {\n menuProps.on.deselect = menuDeselect;\n menuProps.on.select = menuSelect;\n } else {\n menuProps.on.click = menuSelect;\n }\n var activeKeyProps = {};\n\n var defaultActiveFirst = defaultActiveFirstOption;\n var clonedMenuItems = menuItems;\n if (selectedKeys.length || firstActiveValue) {\n if (props.visible && !this.lastVisible) {\n activeKeyProps.activeKey = selectedKeys[0] || firstActiveValue;\n } else if (!visible) {\n // Do not trigger auto active since we already have selectedKeys\n if (selectedKeys[0]) {\n defaultActiveFirst = false;\n }\n activeKeyProps.activeKey = undefined;\n }\n var foundFirst = false;\n // set firstActiveItem via cloning menus\n // for scroll into view\n var clone = function clone(item) {\n if (!foundFirst && selectedKeys.indexOf(item.key) !== -1 || !foundFirst && !selectedKeys.length && firstActiveValue.indexOf(item.key) !== -1) {\n foundFirst = true;\n return cloneElement(item, {\n directives: [{\n name: 'ant-ref',\n value: function value(ref) {\n _this4.firstActiveItem = ref;\n }\n }]\n });\n }\n return item;\n };\n\n clonedMenuItems = menuItems.map(function (item) {\n if (getSlotOptions(item).isMenuItemGroup) {\n var children = item.componentOptions.children.map(clone);\n return cloneElement(item, { children: children });\n }\n return clone(item);\n });\n } else {\n // Clear firstActiveItem when dropdown menu items was empty\n // Avoid `Unable to find node on an unmounted component`\n // https://github.com/ant-design/ant-design/issues/10774\n this.firstActiveItem = null;\n }\n\n // clear activeKey when inputValue change\n var lastValue = value && value[value.length - 1];\n if (inputValue !== this.lastInputValue && (!lastValue || lastValue !== backfillValue)) {\n activeKeyProps.activeKey = '';\n }\n menuProps.props = _extends({}, activeKeyProps, menuProps.props, { defaultActiveFirst: defaultActiveFirst });\n return h(\n Menu,\n menuProps,\n [clonedMenuItems]\n );\n }\n return null;\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var renderMenu = this.renderMenu();\n\n var _getListeners2 = getListeners(this),\n popupFocus = _getListeners2.popupFocus,\n popupScroll = _getListeners2.popupScroll;\n\n return renderMenu ? h(\n 'div',\n {\n style: {\n overflow: 'auto',\n transform: 'translateZ(0)'\n },\n attrs: { id: this.$props.ariaId,\n tabIndex: '-1'\n },\n on: {\n 'focus': popupFocus,\n 'mousedown': preventDefaultEvent,\n 'scroll': popupScroll\n },\n\n ref: 'menuContainer'\n },\n [renderMenu]\n ) : null;\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classnames from 'classnames';\nimport raf from 'raf';\nimport Trigger from '../vc-trigger';\nimport PropTypes from '../_util/vue-types';\nimport DropdownMenu from './DropdownMenu';\nimport { isSingleMode, saveRef } from './util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getListeners } from '../_util/props-util';\n\nvar BUILT_IN_PLACEMENTS = {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n }\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n }\n }\n};\n\nexport default {\n name: 'SelectTrigger',\n mixins: [BaseMixin],\n props: {\n // onPopupFocus: PropTypes.func,\n // onPopupScroll: PropTypes.func,\n dropdownMatchSelectWidth: PropTypes.bool,\n defaultActiveFirstOption: PropTypes.bool,\n dropdownAlign: PropTypes.object,\n visible: PropTypes.bool,\n disabled: PropTypes.bool,\n showSearch: PropTypes.bool,\n dropdownClassName: PropTypes.string,\n dropdownStyle: PropTypes.object,\n dropdownMenuStyle: PropTypes.object,\n multiple: PropTypes.bool,\n inputValue: PropTypes.string,\n filterOption: PropTypes.any,\n empty: PropTypes.bool,\n options: PropTypes.any,\n prefixCls: PropTypes.string,\n popupClassName: PropTypes.string,\n value: PropTypes.array,\n // children: PropTypes.any,\n showAction: PropTypes.arrayOf(PropTypes.string),\n combobox: PropTypes.bool,\n animation: PropTypes.string,\n transitionName: PropTypes.string,\n getPopupContainer: PropTypes.func,\n backfillValue: PropTypes.any,\n menuItemSelectedIcon: PropTypes.any,\n dropdownRender: PropTypes.func,\n ariaId: PropTypes.string\n },\n data: function data() {\n return {\n dropdownWidth: 0\n };\n },\n created: function created() {\n this.rafInstance = null;\n this.saveDropdownMenuRef = saveRef(this, 'dropdownMenuRef');\n this.saveTriggerRef = saveRef(this, 'triggerRef');\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.setDropdownWidth();\n });\n },\n updated: function updated() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setDropdownWidth();\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.cancelRafInstance();\n },\n\n methods: {\n setDropdownWidth: function setDropdownWidth() {\n var _this3 = this;\n\n this.cancelRafInstance();\n this.rafInstance = raf(function () {\n var width = _this3.$el.offsetWidth;\n if (width !== _this3.dropdownWidth) {\n _this3.setState({ dropdownWidth: width });\n }\n });\n },\n cancelRafInstance: function cancelRafInstance() {\n if (this.rafInstance) {\n raf.cancel(this.rafInstance);\n }\n },\n getInnerMenu: function getInnerMenu() {\n return this.dropdownMenuRef && this.dropdownMenuRef.$refs.menuRef;\n },\n getPopupDOMNode: function getPopupDOMNode() {\n return this.triggerRef.getPopupDomNode();\n },\n getDropdownElement: function getDropdownElement(newProps) {\n var h = this.$createElement;\n var value = this.value,\n firstActiveValue = this.firstActiveValue,\n defaultActiveFirstOption = this.defaultActiveFirstOption,\n dropdownMenuStyle = this.dropdownMenuStyle,\n getDropdownPrefixCls = this.getDropdownPrefixCls,\n backfillValue = this.backfillValue,\n menuItemSelectedIcon = this.menuItemSelectedIcon;\n\n var _getListeners = getListeners(this),\n menuSelect = _getListeners.menuSelect,\n menuDeselect = _getListeners.menuDeselect,\n popupScroll = _getListeners.popupScroll;\n\n var props = this.$props;\n\n var dropdownRender = props.dropdownRender,\n ariaId = props.ariaId;\n\n var dropdownMenuProps = {\n props: _extends({}, newProps.props, {\n ariaId: ariaId,\n prefixCls: getDropdownPrefixCls(),\n value: value,\n firstActiveValue: firstActiveValue,\n defaultActiveFirstOption: defaultActiveFirstOption,\n dropdownMenuStyle: dropdownMenuStyle,\n backfillValue: backfillValue,\n menuItemSelectedIcon: menuItemSelectedIcon\n }),\n on: _extends({}, newProps.on, {\n menuSelect: menuSelect,\n menuDeselect: menuDeselect,\n popupScroll: popupScroll\n }),\n directives: [{\n name: 'ant-ref',\n value: this.saveDropdownMenuRef\n }]\n };\n var menuNode = h(DropdownMenu, dropdownMenuProps);\n\n if (dropdownRender) {\n return dropdownRender(menuNode, props);\n }\n return null;\n },\n getDropdownTransitionName: function getDropdownTransitionName() {\n var props = this.$props;\n var transitionName = props.transitionName;\n if (!transitionName && props.animation) {\n transitionName = this.getDropdownPrefixCls() + '-' + props.animation;\n }\n return transitionName;\n },\n getDropdownPrefixCls: function getDropdownPrefixCls() {\n return this.prefixCls + '-dropdown';\n }\n },\n\n render: function render() {\n var _popupClassName;\n\n var h = arguments[0];\n var $props = this.$props,\n $slots = this.$slots;\n var multiple = $props.multiple,\n visible = $props.visible,\n inputValue = $props.inputValue,\n dropdownAlign = $props.dropdownAlign,\n disabled = $props.disabled,\n showSearch = $props.showSearch,\n dropdownClassName = $props.dropdownClassName,\n dropdownStyle = $props.dropdownStyle,\n dropdownMatchSelectWidth = $props.dropdownMatchSelectWidth,\n options = $props.options,\n getPopupContainer = $props.getPopupContainer,\n showAction = $props.showAction,\n empty = $props.empty;\n\n var _getListeners2 = getListeners(this),\n mouseenter = _getListeners2.mouseenter,\n mouseleave = _getListeners2.mouseleave,\n popupFocus = _getListeners2.popupFocus,\n dropdownVisibleChange = _getListeners2.dropdownVisibleChange;\n\n var dropdownPrefixCls = this.getDropdownPrefixCls();\n var popupClassName = (_popupClassName = {}, _defineProperty(_popupClassName, dropdownClassName, !!dropdownClassName), _defineProperty(_popupClassName, dropdownPrefixCls + '--' + (multiple ? 'multiple' : 'single'), 1), _defineProperty(_popupClassName, dropdownPrefixCls + '--empty', empty), _popupClassName);\n var popupElement = this.getDropdownElement({\n props: {\n menuItems: options,\n multiple: multiple,\n inputValue: inputValue,\n visible: visible\n },\n on: {\n popupFocus: popupFocus\n }\n });\n var hideAction = void 0;\n if (disabled) {\n hideAction = [];\n } else if (isSingleMode($props) && !showSearch) {\n hideAction = ['click'];\n } else {\n hideAction = ['blur'];\n }\n var popupStyle = _extends({}, dropdownStyle);\n var widthProp = dropdownMatchSelectWidth ? 'width' : 'minWidth';\n if (this.dropdownWidth) {\n popupStyle[widthProp] = this.dropdownWidth + 'px';\n }\n var triggerProps = {\n props: _extends({}, $props, {\n showAction: disabled ? [] : showAction,\n hideAction: hideAction,\n ref: 'triggerRef',\n popupPlacement: 'bottomLeft',\n builtinPlacements: BUILT_IN_PLACEMENTS,\n prefixCls: dropdownPrefixCls,\n popupTransitionName: this.getDropdownTransitionName(),\n popupAlign: dropdownAlign,\n popupVisible: visible,\n getPopupContainer: getPopupContainer,\n popupClassName: classnames(popupClassName),\n popupStyle: popupStyle\n }),\n on: {\n popupVisibleChange: dropdownVisibleChange\n },\n directives: [{\n name: 'ant-ref',\n value: this.saveTriggerRef\n }]\n };\n if (mouseenter) {\n triggerProps.on.mouseenter = mouseenter;\n }\n if (mouseleave) {\n triggerProps.on.mouseleave = mouseleave;\n }\n return h(\n Trigger,\n triggerProps,\n [$slots['default'], h(\n 'template',\n { slot: 'popup' },\n [popupElement]\n )]\n );\n }\n};","import PropTypes from '../_util/vue-types';\n\nexport var SelectPropTypes = {\n defaultActiveFirstOption: PropTypes.bool,\n multiple: PropTypes.bool,\n filterOption: PropTypes.any,\n // children: PropTypes.any,\n showSearch: PropTypes.bool,\n disabled: PropTypes.bool,\n allowClear: PropTypes.bool,\n showArrow: PropTypes.bool,\n tags: PropTypes.bool,\n prefixCls: PropTypes.string,\n // className: PropTypes.string,\n transitionName: PropTypes.string,\n optionLabelProp: PropTypes.string,\n optionFilterProp: PropTypes.string,\n animation: PropTypes.string,\n choiceTransitionName: PropTypes.string,\n open: PropTypes.bool,\n defaultOpen: PropTypes.bool,\n // onChange: PropTypes.func,\n // onBlur: PropTypes.func,\n // onFocus: PropTypes.func,\n // onSelect: PropTypes.func,\n // onSearch: PropTypes.func,\n // onPopupScroll: PropTypes.func,\n // onMouseEnter: PropTypes.func,\n // onMouseLeave: PropTypes.func,\n // onInputKeyDown: PropTypes.func,\n placeholder: PropTypes.any,\n // onDeselect: PropTypes.func,\n labelInValue: PropTypes.bool,\n loading: PropTypes.bool,\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n dropdownStyle: PropTypes.object,\n dropdownClassName: PropTypes.string,\n maxTagTextLength: PropTypes.number,\n maxTagCount: PropTypes.number,\n maxTagPlaceholder: PropTypes.any,\n tokenSeparators: PropTypes.arrayOf(PropTypes.string),\n getInputElement: PropTypes.func,\n showAction: PropTypes.arrayOf(PropTypes.string),\n autoFocus: PropTypes.bool,\n getPopupContainer: PropTypes.func,\n clearIcon: PropTypes.any,\n inputIcon: PropTypes.any,\n removeIcon: PropTypes.any,\n menuItemSelectedIcon: PropTypes.any,\n dropdownRender: PropTypes.func,\n mode: PropTypes.oneOf(['multiple', 'tags']),\n backfill: PropTypes.bool,\n dropdownAlign: PropTypes.any,\n dropdownMatchSelectWidth: PropTypes.bool,\n dropdownMenuStyle: PropTypes.object,\n notFoundContent: PropTypes.oneOfType([String, Number]),\n tabIndex: PropTypes.oneOfType([String, Number])\n};","/* eslint-disable no-undef */\n// Browser environment sniffing\nexport var inBrowser = typeof window !== 'undefined';\nexport var inWeex = typeof WXEnvironment !== 'undefined' && !!WXEnvironment.platform;\nexport var weexPlatform = inWeex && WXEnvironment.platform.toLowerCase();\nexport var UA = inBrowser && window.navigator.userAgent.toLowerCase();\nexport var isIE = UA && /msie|trident/.test(UA);\nexport var isIE9 = UA && UA.indexOf('msie 9.0') > 0;\nexport var isEdge = UA && UA.indexOf('edge/') > 0;\nexport var isAndroid = UA && UA.indexOf('android') > 0 || weexPlatform === 'android';\nexport var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA) || weexPlatform === 'ios';\nexport var isChrome = UA && /chrome\\/\\d+/.test(UA) && !isEdge;\nexport var isPhantomJS = UA && /phantomjs/.test(UA);\nexport var isFF = UA && UA.match(/firefox\\/(\\d+)/);","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport KeyCode from '../_util/KeyCode';\nimport PropTypes from '../_util/vue-types';\nimport classnames from 'classnames';\nimport classes from 'component-classes';\nimport { Item as MenuItem, ItemGroup as MenuItemGroup } from '../vc-menu';\nimport warning from 'warning';\nimport Vue from 'vue';\nimport Option from './Option';\nimport OptGroup from './OptGroup';\nimport { hasProp, getSlotOptions, getPropsData, getValueByProp as getValue, getComponentFromProp, getEvents, getClass, getStyle, getAttrs, getOptionProps, getSlots, getListeners } from '../_util/props-util';\nimport getTransitionProps from '../_util/getTransitionProps';\nimport { cloneElement } from '../_util/vnode';\nimport BaseMixin from '../_util/BaseMixin';\nimport proxyComponent from '../_util/proxyComponent';\nimport ref from 'vue-ref';\nimport SelectTrigger from './SelectTrigger';\nimport { defaultFilterFn, findFirstMenuItem, findIndexInValueBySingleValue, generateUUID, getLabelFromPropsValue, getMapKey, getPropValue, getValuePropValue, includesSeparators, isCombobox, isMultipleOrTags, isMultipleOrTagsOrCombobox, isSingleMode, preventDefaultEvent, saveRef, splitBySeparators, toArray, toTitle, UNSELECTABLE_ATTRIBUTE, UNSELECTABLE_STYLE, validateOptionValue } from './util';\nimport { SelectPropTypes } from './PropTypes';\nimport contains from '../vc-util/Dom/contains';\nimport { isIE, isEdge } from '../_util/env';\n\nVue.use(ref, { name: 'ant-ref' });\nvar SELECT_EMPTY_VALUE_KEY = 'RC_SELECT_EMPTY_VALUE_KEY';\n\nvar noop = function noop() {\n return null;\n};\n\n// Where el is the DOM element you'd like to test for visibility\nfunction isHidden(node) {\n return !node || node.offsetParent === null;\n}\n\nfunction chaining() {\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line\n // eslint-disable-line\n for (var i = 0; i < fns.length; i++) {\n if (fns[i] && typeof fns[i] === 'function') {\n fns[i].apply(chaining, args);\n }\n }\n };\n}\nvar Select = {\n inheritAttrs: false,\n Option: Option,\n OptGroup: OptGroup,\n name: 'Select',\n mixins: [BaseMixin],\n props: _extends({}, SelectPropTypes, {\n prefixCls: SelectPropTypes.prefixCls.def('rc-select'),\n defaultOpen: PropTypes.bool.def(false),\n labelInValue: SelectPropTypes.labelInValue.def(false),\n defaultActiveFirstOption: SelectPropTypes.defaultActiveFirstOption.def(true),\n showSearch: SelectPropTypes.showSearch.def(true),\n allowClear: SelectPropTypes.allowClear.def(false),\n placeholder: SelectPropTypes.placeholder.def(''),\n // showArrow: SelectPropTypes.showArrow.def(true),\n dropdownMatchSelectWidth: PropTypes.bool.def(true),\n dropdownStyle: SelectPropTypes.dropdownStyle.def(function () {\n return {};\n }),\n dropdownMenuStyle: PropTypes.object.def(function () {\n return {};\n }),\n optionFilterProp: SelectPropTypes.optionFilterProp.def('value'),\n optionLabelProp: SelectPropTypes.optionLabelProp.def('value'),\n notFoundContent: PropTypes.any.def('Not Found'),\n backfill: PropTypes.bool.def(false),\n showAction: SelectPropTypes.showAction.def(['click']),\n combobox: PropTypes.bool.def(false),\n tokenSeparators: PropTypes.arrayOf(PropTypes.string).def([]),\n autoClearSearchValue: PropTypes.bool.def(true),\n tabIndex: PropTypes.any.def(0),\n dropdownRender: PropTypes.func.def(function (menu) {\n return menu;\n })\n // onChange: noop,\n // onFocus: noop,\n // onBlur: noop,\n // onSelect: noop,\n // onSearch: noop,\n // onDeselect: noop,\n // onInputKeydown: noop,\n }),\n model: {\n prop: 'value',\n event: 'change'\n },\n created: function created() {\n this.saveInputRef = saveRef(this, 'inputRef');\n this.saveInputMirrorRef = saveRef(this, 'inputMirrorRef');\n this.saveTopCtrlRef = saveRef(this, 'topCtrlRef');\n this.saveSelectTriggerRef = saveRef(this, 'selectTriggerRef');\n this.saveRootRef = saveRef(this, 'rootRef');\n this.saveSelectionRef = saveRef(this, 'selectionRef');\n this._focused = false;\n this._mouseDown = false;\n this._options = [];\n this._empty = false;\n },\n data: function data() {\n var props = getOptionProps(this);\n var optionsInfo = this.getOptionsInfoFromProps(props);\n warning(this.__propsSymbol__, 'Replace slots.default with props.children and pass props.__propsSymbol__');\n if (props.tags && typeof props.filterOption !== 'function') {\n var isDisabledExist = Object.keys(optionsInfo).some(function (key) {\n return optionsInfo[key].disabled;\n });\n warning(!isDisabledExist, 'Please avoid setting option to disabled in tags mode since user can always type text as tag.');\n }\n var state = {\n _value: this.getValueFromProps(props, true), // true: use default value\n _inputValue: props.combobox ? this.getInputValueForCombobox(props, optionsInfo, true // use default value\n ) : '',\n _open: props.defaultOpen,\n _optionsInfo: optionsInfo,\n _backfillValue: '',\n // a flag for aviod redundant getOptionsInfoFromProps call\n _skipBuildOptionsInfo: true,\n _ariaId: generateUUID()\n };\n return _extends({}, state, {\n _mirrorInputValue: state._inputValue }, this.getDerivedState(props, state));\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n // when defaultOpen is true, we should auto focus search input\n // https://github.com/ant-design/ant-design/issues/14254\n if (_this.autoFocus || _this._open) {\n _this.focus();\n }\n // this.setState({\n // _ariaId: generateUUID(),\n // });\n });\n },\n\n watch: {\n __propsSymbol__: function __propsSymbol__() {\n _extends(this.$data, this.getDerivedState(getOptionProps(this), this.$data));\n },\n '$data._inputValue': function $data_inputValue(val) {\n this.$data._mirrorInputValue = val;\n }\n },\n updated: function updated() {\n var _this2 = this;\n\n this.$nextTick(function () {\n if (isMultipleOrTags(_this2.$props)) {\n var inputNode = _this2.getInputDOMNode();\n var mirrorNode = _this2.getInputMirrorDOMNode();\n if (inputNode && inputNode.value && mirrorNode) {\n inputNode.style.width = '';\n inputNode.style.width = mirrorNode.clientWidth + 10 + 'px';\n } else if (inputNode) {\n inputNode.style.width = '';\n }\n }\n _this2.forcePopupAlign();\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.clearFocusTime();\n this.clearBlurTime();\n this.clearComboboxTime();\n if (this.dropdownContainer) {\n document.body.removeChild(this.dropdownContainer);\n this.dropdownContainer = null;\n }\n },\n\n methods: {\n getDerivedState: function getDerivedState(nextProps, prevState) {\n var optionsInfo = prevState._skipBuildOptionsInfo ? prevState._optionsInfo : this.getOptionsInfoFromProps(nextProps, prevState);\n\n var newState = {\n _optionsInfo: optionsInfo,\n _skipBuildOptionsInfo: false\n };\n\n if ('open' in nextProps) {\n newState._open = nextProps.open;\n }\n\n if ('value' in nextProps) {\n var value = this.getValueFromProps(nextProps);\n newState._value = value;\n if (nextProps.combobox) {\n newState._inputValue = this.getInputValueForCombobox(nextProps, optionsInfo);\n }\n }\n return newState;\n },\n getOptionsFromChildren: function getOptionsFromChildren() {\n var _this3 = this;\n\n var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n children.forEach(function (child) {\n if (!child.data || child.data.slot !== undefined) {\n return;\n }\n if (getSlotOptions(child).isSelectOptGroup) {\n _this3.getOptionsFromChildren(child.componentOptions.children, options);\n } else {\n options.push(child);\n }\n });\n return options;\n },\n getInputValueForCombobox: function getInputValueForCombobox(props, optionsInfo, useDefaultValue) {\n var value = [];\n if ('value' in props && !useDefaultValue) {\n value = toArray(props.value);\n }\n if ('defaultValue' in props && useDefaultValue) {\n value = toArray(props.defaultValue);\n }\n if (value.length) {\n value = value[0];\n } else {\n return '';\n }\n var label = value;\n if (props.labelInValue) {\n label = value.label;\n } else if (optionsInfo[getMapKey(value)]) {\n label = optionsInfo[getMapKey(value)].label;\n }\n if (label === undefined) {\n label = '';\n }\n return label;\n },\n getLabelFromOption: function getLabelFromOption(props, option) {\n return getPropValue(option, props.optionLabelProp);\n },\n getOptionsInfoFromProps: function getOptionsInfoFromProps(props, preState) {\n var _this4 = this;\n\n var options = this.getOptionsFromChildren(this.$props.children);\n var optionsInfo = {};\n options.forEach(function (option) {\n var singleValue = getValuePropValue(option);\n optionsInfo[getMapKey(singleValue)] = {\n option: option,\n value: singleValue,\n label: _this4.getLabelFromOption(props, option),\n title: getValue(option, 'title'),\n disabled: getValue(option, 'disabled')\n };\n });\n if (preState) {\n // keep option info in pre state value.\n var oldOptionsInfo = preState._optionsInfo;\n var value = preState._value;\n if (value) {\n value.forEach(function (v) {\n var key = getMapKey(v);\n if (!optionsInfo[key] && oldOptionsInfo[key] !== undefined) {\n optionsInfo[key] = oldOptionsInfo[key];\n }\n });\n }\n }\n return optionsInfo;\n },\n getValueFromProps: function getValueFromProps(props, useDefaultValue) {\n var value = [];\n if ('value' in props && !useDefaultValue) {\n value = toArray(props.value);\n }\n if ('defaultValue' in props && useDefaultValue) {\n value = toArray(props.defaultValue);\n }\n if (props.labelInValue) {\n value = value.map(function (v) {\n return v.key;\n });\n }\n return value;\n },\n onInputChange: function onInputChange(e) {\n var _e$target = e.target,\n val = _e$target.value,\n composing = _e$target.composing;\n\n var _$data$_inputValue = this.$data._inputValue,\n _inputValue = _$data$_inputValue === undefined ? '' : _$data$_inputValue;\n\n if (e.isComposing || composing || _inputValue === val) {\n this.setState({\n _mirrorInputValue: val\n });\n return;\n }\n var tokenSeparators = this.$props.tokenSeparators;\n\n if (isMultipleOrTags(this.$props) && tokenSeparators.length && includesSeparators(val, tokenSeparators)) {\n var nextValue = this.getValueByInput(val);\n if (nextValue !== undefined) {\n this.fireChange(nextValue);\n }\n this.setOpenState(false, { needFocus: true });\n this.setInputValue('', false);\n return;\n }\n this.setInputValue(val);\n this.setState({\n _open: true\n });\n if (isCombobox(this.$props)) {\n this.fireChange([val]);\n }\n },\n onDropdownVisibleChange: function onDropdownVisibleChange(open) {\n if (open && !this._focused) {\n this.clearBlurTime();\n this.timeoutFocus();\n this._focused = true;\n this.updateFocusClassName();\n }\n this.setOpenState(open);\n },\n\n\n // combobox ignore\n onKeyDown: function onKeyDown(event) {\n var open = this.$data._open;\n var disabled = this.$props.disabled;\n\n if (disabled) {\n return;\n }\n var keyCode = event.keyCode;\n if (open && !this.getInputDOMNode()) {\n this.onInputKeydown(event);\n } else if (keyCode === KeyCode.ENTER || keyCode === KeyCode.DOWN) {\n // vue state是同步更新,onKeyDown在onMenuSelect后会再次调用,单选时不在调用setOpenState\n // https://github.com/vueComponent/ant-design-vue/issues/1142\n if (keyCode === KeyCode.ENTER && !isMultipleOrTags(this.$props)) {\n this.maybeFocus(true);\n } else if (!open) {\n this.setOpenState(true);\n }\n event.preventDefault();\n } else if (keyCode === KeyCode.SPACE) {\n // Not block space if popup is shown\n if (!open) {\n this.setOpenState(true);\n event.preventDefault();\n }\n }\n },\n onInputKeydown: function onInputKeydown(event) {\n var _this5 = this;\n\n var _$props = this.$props,\n disabled = _$props.disabled,\n combobox = _$props.combobox,\n defaultActiveFirstOption = _$props.defaultActiveFirstOption;\n\n if (disabled) {\n return;\n }\n var state = this.$data;\n var isRealOpen = this.getRealOpenState(state);\n var keyCode = event.keyCode;\n if (isMultipleOrTags(this.$props) && !event.target.value && keyCode === KeyCode.BACKSPACE) {\n event.preventDefault();\n var value = state._value;\n\n if (value.length) {\n this.removeSelected(value[value.length - 1]);\n }\n return;\n }\n if (keyCode === KeyCode.DOWN) {\n if (!state._open) {\n this.openIfHasChildren();\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n } else if (keyCode === KeyCode.ENTER && state._open) {\n // Aviod trigger form submit when select item\n // https://github.com/ant-design/ant-design/issues/10861\n // https://github.com/ant-design/ant-design/issues/14544\n if (isRealOpen || !combobox) {\n event.preventDefault();\n }\n // Hard close popup to avoid lock of non option in combobox mode\n if (isRealOpen && combobox && defaultActiveFirstOption === false) {\n this.comboboxTimer = setTimeout(function () {\n _this5.setOpenState(false);\n });\n }\n } else if (keyCode === KeyCode.ESC) {\n if (state._open) {\n this.setOpenState(false);\n event.preventDefault();\n event.stopPropagation();\n }\n return;\n }\n\n if (isRealOpen && this.selectTriggerRef) {\n var menu = this.selectTriggerRef.getInnerMenu();\n if (menu && menu.onKeyDown(event, this.handleBackfill)) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n },\n onMenuSelect: function onMenuSelect(_ref) {\n var item = _ref.item;\n\n if (!item) {\n return;\n }\n var value = this.$data._value;\n var props = this.$props;\n var selectedValue = getValuePropValue(item);\n var lastValue = value[value.length - 1];\n var skipTrigger = false;\n\n if (isMultipleOrTags(props)) {\n if (findIndexInValueBySingleValue(value, selectedValue) !== -1) {\n skipTrigger = true;\n } else {\n value = value.concat([selectedValue]);\n }\n } else {\n if (!isCombobox(props) && lastValue !== undefined && lastValue === selectedValue && selectedValue !== this.$data._backfillValue) {\n this.setOpenState(false, { needFocus: true, fireSearch: false });\n skipTrigger = true;\n } else {\n value = [selectedValue];\n this.setOpenState(false, { needFocus: true, fireSearch: false });\n }\n }\n if (!skipTrigger) {\n this.fireChange(value);\n }\n if (!skipTrigger) {\n this.fireSelect(selectedValue);\n var inputValue = isCombobox(props) ? getPropValue(item, props.optionLabelProp) : '';\n\n if (props.autoClearSearchValue) {\n this.setInputValue(inputValue, false);\n }\n }\n },\n onMenuDeselect: function onMenuDeselect(_ref2) {\n var item = _ref2.item,\n domEvent = _ref2.domEvent;\n\n if (domEvent.type === 'keydown' && domEvent.keyCode === KeyCode.ENTER) {\n var menuItemDomNode = item.$el;\n // https://github.com/ant-design/ant-design/issues/20465#issuecomment-569033796\n if (!isHidden(menuItemDomNode)) {\n this.removeSelected(getValuePropValue(item));\n }\n return;\n }\n if (domEvent.type === 'click') {\n this.removeSelected(getValuePropValue(item));\n }\n if (this.autoClearSearchValue) {\n this.setInputValue('');\n }\n },\n onArrowClick: function onArrowClick(e) {\n e.stopPropagation();\n e.preventDefault();\n this.clearBlurTime();\n if (!this.disabled) {\n this.setOpenState(!this.$data._open, { needFocus: !this.$data._open });\n }\n },\n onPlaceholderClick: function onPlaceholderClick() {\n if (this.getInputDOMNode() && this.getInputDOMNode()) {\n this.getInputDOMNode().focus();\n }\n },\n onPopupFocus: function onPopupFocus() {\n // fix ie scrollbar, focus element again\n this.maybeFocus(true, true);\n },\n onClearSelection: function onClearSelection(event) {\n var props = this.$props;\n var state = this.$data;\n if (props.disabled) {\n return;\n }\n var inputValue = state._inputValue,\n value = state._value;\n\n event.stopPropagation();\n if (inputValue || value.length) {\n if (value.length) {\n this.fireChange([]);\n }\n this.setOpenState(false, { needFocus: true });\n if (inputValue) {\n this.setInputValue('');\n }\n }\n },\n onChoiceAnimationLeave: function onChoiceAnimationLeave() {\n this.forcePopupAlign();\n },\n getOptionInfoBySingleValue: function getOptionInfoBySingleValue(value, optionsInfo) {\n var h = this.$createElement;\n\n var info = void 0;\n optionsInfo = optionsInfo || this.$data._optionsInfo;\n if (optionsInfo[getMapKey(value)]) {\n info = optionsInfo[getMapKey(value)];\n }\n if (info) {\n return info;\n }\n var defaultLabel = value;\n if (this.$props.labelInValue) {\n var valueLabel = getLabelFromPropsValue(this.$props.value, value);\n var defaultValueLabel = getLabelFromPropsValue(this.$props.defaultValue, value);\n if (valueLabel !== undefined) {\n defaultLabel = valueLabel;\n } else if (defaultValueLabel !== undefined) {\n defaultLabel = defaultValueLabel;\n }\n }\n var defaultInfo = {\n option: h(\n Option,\n {\n attrs: { value: value },\n key: value },\n [value]\n ),\n value: value,\n label: defaultLabel\n };\n return defaultInfo;\n },\n getOptionBySingleValue: function getOptionBySingleValue(value) {\n var _getOptionInfoBySingl = this.getOptionInfoBySingleValue(value),\n option = _getOptionInfoBySingl.option;\n\n return option;\n },\n getOptionsBySingleValue: function getOptionsBySingleValue(values) {\n var _this6 = this;\n\n return values.map(function (value) {\n return _this6.getOptionBySingleValue(value);\n });\n },\n getValueByLabel: function getValueByLabel(label) {\n var _this7 = this;\n\n if (label === undefined) {\n return null;\n }\n var value = null;\n Object.keys(this.$data._optionsInfo).forEach(function (key) {\n var info = _this7.$data._optionsInfo[key];\n var disabled = info.disabled;\n\n if (disabled) {\n return;\n }\n var oldLable = toArray(info.label);\n if (oldLable && oldLable.join('') === label) {\n value = info.value;\n }\n });\n return value;\n },\n getVLBySingleValue: function getVLBySingleValue(value) {\n if (this.$props.labelInValue) {\n return {\n key: value,\n label: this.getLabelBySingleValue(value)\n };\n }\n return value;\n },\n getVLForOnChange: function getVLForOnChange(vlsS) {\n var _this8 = this;\n\n var vls = vlsS;\n if (vls !== undefined) {\n if (!this.labelInValue) {\n vls = vls.map(function (v) {\n return v;\n });\n } else {\n vls = vls.map(function (vl) {\n return {\n key: vl,\n label: _this8.getLabelBySingleValue(vl)\n };\n });\n }\n return isMultipleOrTags(this.$props) ? vls : vls[0];\n }\n return vls;\n },\n getLabelBySingleValue: function getLabelBySingleValue(value, optionsInfo) {\n var _getOptionInfoBySingl2 = this.getOptionInfoBySingleValue(value, optionsInfo),\n label = _getOptionInfoBySingl2.label;\n\n return label;\n },\n getDropdownContainer: function getDropdownContainer() {\n if (!this.dropdownContainer) {\n this.dropdownContainer = document.createElement('div');\n document.body.appendChild(this.dropdownContainer);\n }\n return this.dropdownContainer;\n },\n getPlaceholderElement: function getPlaceholderElement() {\n var h = this.$createElement;\n var props = this.$props,\n state = this.$data;\n\n var hidden = false;\n if (state._mirrorInputValue) {\n hidden = true;\n }\n var value = state._value;\n if (value.length) {\n hidden = true;\n }\n if (!state._mirrorInputValue && isCombobox(props) && value.length === 1 && state._value && !state._value[0]) {\n hidden = false;\n }\n var placeholder = props.placeholder;\n if (placeholder) {\n var p = {\n on: {\n mousedown: preventDefaultEvent,\n click: this.onPlaceholderClick\n },\n attrs: UNSELECTABLE_ATTRIBUTE,\n style: _extends({\n display: hidden ? 'none' : 'block'\n }, UNSELECTABLE_STYLE),\n 'class': props.prefixCls + '-selection__placeholder'\n };\n return h(\n 'div',\n p,\n [placeholder]\n );\n }\n return null;\n },\n inputClick: function inputClick(e) {\n if (this.$data._open) {\n this.clearBlurTime();\n e.stopPropagation();\n } else {\n this._focused = false;\n }\n },\n inputBlur: function inputBlur(e) {\n var _this9 = this;\n\n var target = e.relatedTarget || document.activeElement;\n\n // https://github.com/vueComponent/ant-design-vue/issues/999\n // https://github.com/vueComponent/ant-design-vue/issues/1223\n if ((isIE || isEdge) && (e.relatedTarget === this.$refs.arrow || target && this.selectTriggerRef && this.selectTriggerRef.getInnerMenu() && this.selectTriggerRef.getInnerMenu().$el === target || contains(e.target, target))) {\n e.target.focus();\n e.preventDefault();\n return;\n }\n this.clearBlurTime();\n if (this.disabled) {\n e.preventDefault();\n return;\n }\n this.blurTimer = setTimeout(function () {\n _this9._focused = false;\n _this9.updateFocusClassName();\n var props = _this9.$props;\n var value = _this9.$data._value;\n var inputValue = _this9.$data._inputValue;\n\n if (isSingleMode(props) && props.showSearch && inputValue && props.defaultActiveFirstOption) {\n var options = _this9._options || [];\n if (options.length) {\n var firstOption = findFirstMenuItem(options);\n if (firstOption) {\n value = [getValuePropValue(firstOption)];\n _this9.fireChange(value);\n }\n }\n } else if (isMultipleOrTags(props) && inputValue) {\n if (_this9._mouseDown) {\n // need update dropmenu when not blur\n _this9.setInputValue('');\n } else {\n // why not use setState?\n _this9.$data._inputValue = '';\n if (_this9.getInputDOMNode && _this9.getInputDOMNode()) {\n _this9.getInputDOMNode().value = '';\n }\n }\n var tmpValue = _this9.getValueByInput(inputValue);\n if (tmpValue !== undefined) {\n value = tmpValue;\n _this9.fireChange(value);\n }\n }\n // if click the rest space of Select in multiple mode\n if (isMultipleOrTags(props) && _this9._mouseDown) {\n _this9.maybeFocus(true, true);\n _this9._mouseDown = false;\n return;\n }\n _this9.setOpenState(false);\n _this9.$emit('blur', _this9.getVLForOnChange(value));\n }, 200);\n },\n inputFocus: function inputFocus(e) {\n if (this.$props.disabled) {\n e.preventDefault();\n return;\n }\n this.clearBlurTime();\n\n // In IE11, onOuterFocus will be trigger twice when focus input\n // First one: e.target is div\n // Second one: e.target is input\n // other browser only trigger second one\n // https://github.com/ant-design/ant-design/issues/15942\n // Here we ignore the first one when e.target is div\n var inputNode = this.getInputDOMNode();\n if (inputNode && e.target === this.rootRef) {\n return;\n }\n if (!isMultipleOrTagsOrCombobox(this.$props) && e.target === inputNode) {\n return;\n }\n if (this._focused) {\n return;\n }\n this._focused = true;\n this.updateFocusClassName();\n // only effect multiple or tag mode\n if (!isMultipleOrTags(this.$props) || !this._mouseDown) {\n this.timeoutFocus();\n }\n },\n _getInputElement: function _getInputElement() {\n var h = this.$createElement;\n\n var props = this.$props;\n var _$data = this.$data,\n inputValue = _$data._inputValue,\n _mirrorInputValue = _$data._mirrorInputValue;\n\n var attrs = getAttrs(this);\n var defaultInput = h('input', {\n attrs: { id: attrs.id, autoComplete: 'off' }\n });\n\n var inputElement = props.getInputElement ? props.getInputElement() : defaultInput;\n var inputCls = classnames(getClass(inputElement), _defineProperty({}, props.prefixCls + '-search__field', true));\n var inputEvents = getEvents(inputElement);\n // https://github.com/ant-design/ant-design/issues/4992#issuecomment-281542159\n // Add space to the end of the inputValue as the width measurement tolerance\n inputElement.data = inputElement.data || {};\n return h(\n 'div',\n { 'class': props.prefixCls + '-search__field__wrap', on: {\n 'click': this.inputClick\n }\n },\n [cloneElement(inputElement, {\n props: {\n disabled: props.disabled,\n value: inputValue\n },\n attrs: _extends({}, inputElement.data.attrs || {}, {\n disabled: props.disabled,\n value: inputValue\n }),\n domProps: {\n value: inputValue\n },\n 'class': inputCls,\n directives: [{\n name: 'ant-ref',\n value: this.saveInputRef\n }, {\n name: 'ant-input'\n }],\n on: {\n input: this.onInputChange,\n keydown: chaining(this.onInputKeydown, inputEvents.keydown, getListeners(this).inputKeydown),\n focus: chaining(this.inputFocus, inputEvents.focus),\n blur: chaining(this.inputBlur, inputEvents.blur)\n }\n }), h(\n 'span',\n _mergeJSXProps([{\n directives: [{\n name: 'ant-ref',\n value: this.saveInputMirrorRef\n }]\n }, {\n // ref='inputMirrorRef'\n 'class': props.prefixCls + '-search__field__mirror'\n }]),\n [_mirrorInputValue, '\\xA0']\n )]\n );\n },\n getInputDOMNode: function getInputDOMNode() {\n return this.topCtrlRef ? this.topCtrlRef.querySelector('input,textarea,div[contentEditable]') : this.inputRef;\n },\n getInputMirrorDOMNode: function getInputMirrorDOMNode() {\n return this.inputMirrorRef;\n },\n getPopupDOMNode: function getPopupDOMNode() {\n if (this.selectTriggerRef) {\n return this.selectTriggerRef.getPopupDOMNode();\n }\n },\n getPopupMenuComponent: function getPopupMenuComponent() {\n if (this.selectTriggerRef) {\n return this.selectTriggerRef.getInnerMenu();\n }\n },\n setOpenState: function setOpenState(open) {\n var _this10 = this;\n\n var config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var props = this.$props,\n state = this.$data;\n var needFocus = config.needFocus,\n fireSearch = config.fireSearch;\n\n if (state._open === open) {\n this.maybeFocus(open, !!needFocus);\n return;\n }\n this.__emit('dropdownVisibleChange', open);\n var nextState = {\n _open: open,\n _backfillValue: ''\n };\n // clear search input value when open is false in singleMode.\n if (!open && isSingleMode(props) && props.showSearch) {\n this.setInputValue('', fireSearch);\n }\n if (!open) {\n this.maybeFocus(open, !!needFocus);\n }\n this.setState(nextState, function () {\n if (open) {\n _this10.maybeFocus(open, !!needFocus);\n }\n });\n },\n setInputValue: function setInputValue(inputValue) {\n var fireSearch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (inputValue !== this.$data._inputValue) {\n this.setState({\n _inputValue: inputValue\n }, this.forcePopupAlign);\n if (fireSearch) {\n this.$emit('search', inputValue);\n }\n }\n },\n getValueByInput: function getValueByInput(str) {\n var _this11 = this;\n\n var _$props2 = this.$props,\n multiple = _$props2.multiple,\n tokenSeparators = _$props2.tokenSeparators;\n\n var nextValue = this.$data._value;\n var hasNewValue = false;\n splitBySeparators(str, tokenSeparators).forEach(function (label) {\n var selectedValue = [label];\n if (multiple) {\n var value = _this11.getValueByLabel(label);\n if (value && findIndexInValueBySingleValue(nextValue, value) === -1) {\n nextValue = nextValue.concat(value);\n hasNewValue = true;\n _this11.fireSelect(value);\n }\n } else if (findIndexInValueBySingleValue(nextValue, label) === -1) {\n nextValue = nextValue.concat(selectedValue);\n hasNewValue = true;\n _this11.fireSelect(label);\n }\n });\n return hasNewValue ? nextValue : undefined;\n },\n getRealOpenState: function getRealOpenState(state) {\n var _open = this.$props.open;\n\n if (typeof _open === 'boolean') {\n return _open;\n }\n\n var open = (state || this.$data)._open;\n var options = this._options || [];\n if (isMultipleOrTagsOrCombobox(this.$props) || !this.$props.showSearch) {\n if (open && !options.length) {\n open = false;\n }\n }\n return open;\n },\n focus: function focus() {\n if (isSingleMode(this.$props) && this.selectionRef) {\n this.selectionRef.focus();\n } else if (this.getInputDOMNode()) {\n this.getInputDOMNode().focus();\n }\n },\n blur: function blur() {\n if (isSingleMode(this.$props) && this.selectionRef) {\n this.selectionRef.blur();\n } else if (this.getInputDOMNode()) {\n this.getInputDOMNode().blur();\n }\n },\n markMouseDown: function markMouseDown() {\n this._mouseDown = true;\n },\n markMouseLeave: function markMouseLeave() {\n this._mouseDown = false;\n },\n handleBackfill: function handleBackfill(item) {\n if (!this.backfill || !(isSingleMode(this.$props) || isCombobox(this.$props))) {\n return;\n }\n\n var key = getValuePropValue(item);\n\n if (isCombobox(this.$props)) {\n this.setInputValue(key, false);\n }\n\n this.setState({\n _value: [key],\n _backfillValue: key\n });\n },\n _filterOption: function _filterOption(input, child) {\n var defaultFilter = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultFilterFn;\n var _$data2 = this.$data,\n value = _$data2._value,\n backfillValue = _$data2._backfillValue;\n\n var lastValue = value[value.length - 1];\n if (!input || lastValue && lastValue === backfillValue) {\n return true;\n }\n var filterFn = this.$props.filterOption;\n if (hasProp(this, 'filterOption')) {\n if (filterFn === true) {\n filterFn = defaultFilter.bind(this);\n }\n } else {\n filterFn = defaultFilter.bind(this);\n }\n if (!filterFn) {\n return true;\n } else if (typeof filterFn === 'function') {\n return filterFn.call(this, input, child);\n } else if (getValue(child, 'disabled')) {\n return false;\n }\n return true;\n },\n timeoutFocus: function timeoutFocus() {\n var _this12 = this;\n\n if (this.focusTimer) {\n this.clearFocusTime();\n }\n this.focusTimer = window.setTimeout(function () {\n // this._focused = true\n // this.updateFocusClassName()\n _this12.$emit('focus');\n }, 10);\n },\n clearFocusTime: function clearFocusTime() {\n if (this.focusTimer) {\n clearTimeout(this.focusTimer);\n this.focusTimer = null;\n }\n },\n clearBlurTime: function clearBlurTime() {\n if (this.blurTimer) {\n clearTimeout(this.blurTimer);\n this.blurTimer = null;\n }\n },\n clearComboboxTime: function clearComboboxTime() {\n if (this.comboboxTimer) {\n clearTimeout(this.comboboxTimer);\n this.comboboxTimer = null;\n }\n },\n updateFocusClassName: function updateFocusClassName() {\n var rootRef = this.rootRef,\n prefixCls = this.prefixCls;\n // avoid setState and its side effect\n\n if (this._focused) {\n classes(rootRef).add(prefixCls + '-focused');\n } else {\n classes(rootRef).remove(prefixCls + '-focused');\n }\n },\n maybeFocus: function maybeFocus(open, needFocus) {\n if (needFocus || open) {\n var input = this.getInputDOMNode();\n var _document = document,\n activeElement = _document.activeElement;\n\n if (input && (open || isMultipleOrTagsOrCombobox(this.$props))) {\n if (activeElement !== input) {\n input.focus();\n this._focused = true;\n }\n } else if (activeElement !== this.selectionRef && this.selectionRef) {\n this.selectionRef.focus();\n this._focused = true;\n }\n }\n },\n removeSelected: function removeSelected(selectedKey, e) {\n var props = this.$props;\n if (props.disabled || this.isChildDisabled(selectedKey)) {\n return;\n }\n // Do not trigger Trigger popup\n if (e && e.stopPropagation) {\n e.stopPropagation();\n }\n var oldValue = this.$data._value;\n var value = oldValue.filter(function (singleValue) {\n return singleValue !== selectedKey;\n });\n var canMultiple = isMultipleOrTags(props);\n\n if (canMultiple) {\n var event = selectedKey;\n if (props.labelInValue) {\n event = {\n key: selectedKey,\n label: this.getLabelBySingleValue(selectedKey)\n };\n }\n this.$emit('deselect', event, this.getOptionBySingleValue(selectedKey));\n }\n this.fireChange(value);\n },\n openIfHasChildren: function openIfHasChildren() {\n var $props = this.$props;\n\n if ($props.children && $props.children.length || isSingleMode($props)) {\n this.setOpenState(true);\n }\n },\n fireSelect: function fireSelect(value) {\n this.$emit('select', this.getVLBySingleValue(value), this.getOptionBySingleValue(value));\n },\n fireChange: function fireChange(value) {\n if (!hasProp(this, 'value')) {\n this.setState({\n _value: value\n }, this.forcePopupAlign);\n }\n var vls = this.getVLForOnChange(value);\n var options = this.getOptionsBySingleValue(value);\n this._valueOptions = options;\n this.$emit('change', vls, isMultipleOrTags(this.$props) ? options : options[0]);\n },\n isChildDisabled: function isChildDisabled(key) {\n return (this.$props.children || []).some(function (child) {\n var childValue = getValuePropValue(child);\n return childValue === key && getValue(child, 'disabled');\n });\n },\n forcePopupAlign: function forcePopupAlign() {\n if (!this.$data._open) {\n return;\n }\n if (this.selectTriggerRef && this.selectTriggerRef.triggerRef) {\n this.selectTriggerRef.triggerRef.forcePopupAlign();\n }\n },\n renderFilterOptions: function renderFilterOptions() {\n var h = this.$createElement;\n var inputValue = this.$data._inputValue;\n var _$props3 = this.$props,\n children = _$props3.children,\n tags = _$props3.tags,\n notFoundContent = _$props3.notFoundContent;\n\n var menuItems = [];\n var childrenKeys = [];\n var empty = false;\n var options = this.renderFilterOptionsFromChildren(children, childrenKeys, menuItems);\n if (tags) {\n // tags value must be string\n var value = this.$data._value;\n value = value.filter(function (singleValue) {\n return childrenKeys.indexOf(singleValue) === -1 && (!inputValue || String(singleValue).indexOf(String(inputValue)) > -1);\n });\n\n // sort by length\n value.sort(function (val1, val2) {\n return val1.length - val2.length;\n });\n\n value.forEach(function (singleValue) {\n var key = singleValue;\n var attrs = _extends({}, UNSELECTABLE_ATTRIBUTE, {\n role: 'option'\n });\n var menuItem = h(\n MenuItem,\n _mergeJSXProps([{ style: UNSELECTABLE_STYLE }, { attrs: attrs }, {\n attrs: { value: key },\n key: key }]),\n [key]\n );\n options.push(menuItem);\n menuItems.push(menuItem);\n });\n // ref: https://github.com/ant-design/ant-design/issues/14090\n if (inputValue && menuItems.every(function (option) {\n return getValuePropValue(option) !== inputValue;\n })) {\n var p = {\n attrs: UNSELECTABLE_ATTRIBUTE,\n key: inputValue,\n props: {\n value: inputValue,\n role: 'option'\n },\n style: UNSELECTABLE_STYLE\n };\n options.unshift(h(\n MenuItem,\n p,\n [inputValue]\n ));\n }\n }\n\n if (!options.length && notFoundContent) {\n empty = true;\n var _p = {\n attrs: UNSELECTABLE_ATTRIBUTE,\n key: 'NOT_FOUND',\n props: {\n value: 'NOT_FOUND',\n disabled: true,\n role: 'option'\n },\n style: UNSELECTABLE_STYLE\n };\n options = [h(\n MenuItem,\n _p,\n [notFoundContent]\n )];\n }\n return { empty: empty, options: options };\n },\n renderFilterOptionsFromChildren: function renderFilterOptionsFromChildren() {\n var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var _this13 = this;\n\n var childrenKeys = arguments[1];\n var menuItems = arguments[2];\n var h = this.$createElement;\n\n var sel = [];\n var props = this.$props;\n var inputValue = this.$data._inputValue;\n\n var tags = props.tags;\n children.forEach(function (child) {\n if (!child.data || child.data.slot !== undefined) {\n return;\n }\n if (getSlotOptions(child).isSelectOptGroup) {\n var label = getComponentFromProp(child, 'label');\n var key = child.key;\n if (!key && typeof label === 'string') {\n key = label;\n } else if (!label && key) {\n label = key;\n }\n var childChildren = getSlots(child)['default'];\n childChildren = typeof childChildren === 'function' ? childChildren() : childChildren;\n // Match option group label\n if (inputValue && _this13._filterOption(inputValue, child)) {\n var innerItems = childChildren.map(function (subChild) {\n var childValueSub = getValuePropValue(subChild) || subChild.key;\n return h(\n MenuItem,\n _mergeJSXProps([{ key: childValueSub, attrs: { value: childValueSub }\n }, subChild.data]),\n [subChild.componentOptions.children]\n );\n });\n\n sel.push(h(\n MenuItemGroup,\n { key: key, attrs: { title: label },\n 'class': getClass(child) },\n [innerItems]\n ));\n\n // Not match\n } else {\n var _innerItems = _this13.renderFilterOptionsFromChildren(childChildren, childrenKeys, menuItems);\n if (_innerItems.length) {\n sel.push(h(\n MenuItemGroup,\n _mergeJSXProps([{ key: key, attrs: { title: label }\n }, child.data]),\n [_innerItems]\n ));\n }\n }\n\n return;\n }\n warning(getSlotOptions(child).isSelectOption, 'the children of `Select` should be `Select.Option` or `Select.OptGroup`, ' + ('instead of `' + (getSlotOptions(child).name || getSlotOptions(child)) + '`.'));\n\n var childValue = getValuePropValue(child);\n\n validateOptionValue(childValue, _this13.$props);\n if (_this13._filterOption(inputValue, child)) {\n var p = {\n attrs: _extends({}, UNSELECTABLE_ATTRIBUTE, getAttrs(child)),\n key: childValue,\n props: _extends({\n value: childValue\n }, getPropsData(child), {\n role: 'option'\n }),\n style: UNSELECTABLE_STYLE,\n on: getEvents(child),\n 'class': getClass(child)\n };\n var menuItem = h(\n MenuItem,\n p,\n [child.componentOptions.children]\n );\n sel.push(menuItem);\n menuItems.push(menuItem);\n }\n if (tags) {\n childrenKeys.push(childValue);\n }\n });\n\n return sel;\n },\n renderTopControlNode: function renderTopControlNode() {\n var _this14 = this;\n\n var h = this.$createElement;\n var props = this.$props;\n var _$data3 = this.$data,\n value = _$data3._value,\n inputValue = _$data3._inputValue,\n open = _$data3._open;\n var choiceTransitionName = props.choiceTransitionName,\n prefixCls = props.prefixCls,\n maxTagTextLength = props.maxTagTextLength,\n maxTagCount = props.maxTagCount,\n maxTagPlaceholder = props.maxTagPlaceholder,\n showSearch = props.showSearch;\n\n var removeIcon = getComponentFromProp(this, 'removeIcon');\n var className = prefixCls + '-selection__rendered';\n // search input is inside topControlNode in single, multiple & combobox. 2016/04/13\n var innerNode = null;\n if (isSingleMode(props)) {\n var selectedValue = null;\n if (value.length) {\n var showSelectedValue = false;\n var opacity = 1;\n if (!showSearch) {\n showSelectedValue = true;\n } else if (open) {\n showSelectedValue = !inputValue;\n if (showSelectedValue) {\n opacity = 0.4;\n }\n } else {\n showSelectedValue = true;\n }\n var singleValue = value[0];\n\n var _getOptionInfoBySingl3 = this.getOptionInfoBySingleValue(singleValue),\n label = _getOptionInfoBySingl3.label,\n title = _getOptionInfoBySingl3.title;\n\n selectedValue = h(\n 'div',\n {\n key: 'value',\n 'class': prefixCls + '-selection-selected-value',\n attrs: { title: toTitle(title || label)\n },\n style: {\n display: showSelectedValue ? 'block' : 'none',\n opacity: opacity\n }\n },\n [label]\n );\n }\n if (!showSearch) {\n innerNode = [selectedValue];\n } else {\n innerNode = [selectedValue, h(\n 'div',\n {\n 'class': prefixCls + '-search ' + prefixCls + '-search--inline',\n key: 'input',\n style: {\n display: open ? 'block' : 'none'\n }\n },\n [this._getInputElement()]\n )];\n }\n } else {\n var selectedValueNodes = [];\n var limitedCountValue = value;\n var maxTagPlaceholderEl = void 0;\n if (maxTagCount !== undefined && value.length > maxTagCount) {\n limitedCountValue = limitedCountValue.slice(0, maxTagCount);\n var omittedValues = this.getVLForOnChange(value.slice(maxTagCount, value.length));\n var content = '+ ' + (value.length - maxTagCount) + ' ...';\n if (maxTagPlaceholder) {\n content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;\n }\n var attrs = _extends({}, UNSELECTABLE_ATTRIBUTE, {\n role: 'presentation',\n title: toTitle(content)\n });\n maxTagPlaceholderEl = h(\n 'li',\n _mergeJSXProps([{\n style: UNSELECTABLE_STYLE\n }, { attrs: attrs }, {\n on: {\n 'mousedown': preventDefaultEvent\n },\n\n 'class': prefixCls + '-selection__choice ' + prefixCls + '-selection__choice__disabled',\n key: 'maxTagPlaceholder'\n }]),\n [h(\n 'div',\n { 'class': prefixCls + '-selection__choice__content' },\n [content]\n )]\n );\n }\n if (isMultipleOrTags(props)) {\n selectedValueNodes = limitedCountValue.map(function (singleValue) {\n var info = _this14.getOptionInfoBySingleValue(singleValue);\n var content = info.label;\n var title = info.title || content;\n if (maxTagTextLength && typeof content === 'string' && content.length > maxTagTextLength) {\n content = content.slice(0, maxTagTextLength) + '...';\n }\n var disabled = _this14.isChildDisabled(singleValue);\n var choiceClassName = disabled ? prefixCls + '-selection__choice ' + prefixCls + '-selection__choice__disabled' : prefixCls + '-selection__choice';\n // attrs 放在一起,避免动态title混乱问题,很奇怪的问题 https://github.com/vueComponent/ant-design-vue/issues/588\n var attrs = _extends({}, UNSELECTABLE_ATTRIBUTE, {\n role: 'presentation',\n title: toTitle(title)\n });\n return h(\n 'li',\n _mergeJSXProps([{\n style: UNSELECTABLE_STYLE\n }, { attrs: attrs }, {\n on: {\n 'mousedown': preventDefaultEvent\n },\n\n 'class': choiceClassName,\n key: singleValue || SELECT_EMPTY_VALUE_KEY\n }]),\n [h(\n 'div',\n { 'class': prefixCls + '-selection__choice__content' },\n [content]\n ), disabled ? null : h(\n 'span',\n {\n on: {\n 'click': function click(event) {\n _this14.removeSelected(singleValue, event);\n }\n },\n\n 'class': prefixCls + '-selection__choice__remove'\n },\n [removeIcon || h(\n 'i',\n { 'class': prefixCls + '-selection__choice__remove-icon' },\n ['\\xD7']\n )]\n )]\n );\n });\n }\n if (maxTagPlaceholderEl) {\n selectedValueNodes.push(maxTagPlaceholderEl);\n }\n selectedValueNodes.push(h(\n 'li',\n { 'class': prefixCls + '-search ' + prefixCls + '-search--inline', key: '__input' },\n [this._getInputElement()]\n ));\n\n if (isMultipleOrTags(props) && choiceTransitionName) {\n var transitionProps = getTransitionProps(choiceTransitionName, {\n tag: 'ul',\n afterLeave: this.onChoiceAnimationLeave\n });\n innerNode = h(\n 'transition-group',\n transitionProps,\n [selectedValueNodes]\n );\n } else {\n innerNode = h('ul', [selectedValueNodes]);\n }\n }\n return h(\n 'div',\n _mergeJSXProps([{\n 'class': className\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.saveTopCtrlRef\n }]\n }, {\n on: {\n 'click': this.topCtrlContainerClick\n }\n }]),\n [this.getPlaceholderElement(), innerNode]\n );\n },\n renderArrow: function renderArrow(multiple) {\n var h = this.$createElement;\n\n // showArrow : Set to true if not multiple by default but keep set value.\n var _$props4 = this.$props,\n _$props4$showArrow = _$props4.showArrow,\n showArrow = _$props4$showArrow === undefined ? !multiple : _$props4$showArrow,\n loading = _$props4.loading,\n prefixCls = _$props4.prefixCls;\n\n var inputIcon = getComponentFromProp(this, 'inputIcon');\n if (!showArrow && !loading) {\n return null;\n }\n // if loading have loading icon\n var defaultIcon = loading ? h('i', { 'class': prefixCls + '-arrow-loading' }) : h('i', { 'class': prefixCls + '-arrow-icon' });\n return h(\n 'span',\n _mergeJSXProps([{\n key: 'arrow',\n 'class': prefixCls + '-arrow',\n style: UNSELECTABLE_STYLE\n }, { attrs: UNSELECTABLE_ATTRIBUTE }, {\n on: {\n 'click': this.onArrowClick\n },\n\n ref: 'arrow'\n }]),\n [inputIcon || defaultIcon]\n );\n },\n topCtrlContainerClick: function topCtrlContainerClick(e) {\n if (this.$data._open && !isSingleMode(this.$props)) {\n e.stopPropagation();\n }\n },\n renderClear: function renderClear() {\n var h = this.$createElement;\n var _$props5 = this.$props,\n prefixCls = _$props5.prefixCls,\n allowClear = _$props5.allowClear;\n var _$data4 = this.$data,\n value = _$data4._value,\n inputValue = _$data4._inputValue;\n\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n var clear = h(\n 'span',\n _mergeJSXProps([{\n key: 'clear',\n 'class': prefixCls + '-selection__clear',\n on: {\n 'mousedown': preventDefaultEvent\n },\n\n style: UNSELECTABLE_STYLE\n }, { attrs: UNSELECTABLE_ATTRIBUTE }, {\n on: {\n 'click': this.onClearSelection\n }\n }]),\n [clearIcon || h(\n 'i',\n { 'class': prefixCls + '-selection__clear-icon' },\n ['\\xD7']\n )]\n );\n if (!allowClear) {\n return null;\n }\n if (isCombobox(this.$props)) {\n if (inputValue) {\n return clear;\n }\n return null;\n }\n if (inputValue || value.length) {\n return clear;\n }\n return null;\n },\n selectionRefClick: function selectionRefClick() {\n //e.stopPropagation();\n if (!this.disabled) {\n var input = this.getInputDOMNode();\n if (this._focused && this.$data._open) {\n // this._focused = false;\n this.setOpenState(false, false);\n input && input.blur();\n } else {\n this.clearBlurTime();\n //this._focused = true;\n this.setOpenState(true, true);\n input && input.focus();\n }\n }\n },\n selectionRefFocus: function selectionRefFocus(e) {\n if (this._focused || this.disabled || isMultipleOrTagsOrCombobox(this.$props)) {\n e.preventDefault();\n return;\n }\n this._focused = true;\n this.updateFocusClassName();\n this.$emit('focus');\n },\n selectionRefBlur: function selectionRefBlur(e) {\n if (isMultipleOrTagsOrCombobox(this.$props)) {\n e.preventDefault();\n return;\n }\n this.inputBlur(e);\n }\n },\n\n render: function render() {\n var _rootCls;\n\n var h = arguments[0];\n\n var props = this.$props;\n var multiple = isMultipleOrTags(props);\n // Default set showArrow to true if not set (not set directly in defaultProps to handle multiple case)\n var _props$showArrow = props.showArrow,\n showArrow = _props$showArrow === undefined ? true : _props$showArrow;\n\n var state = this.$data;\n var disabled = props.disabled,\n prefixCls = props.prefixCls,\n loading = props.loading;\n\n var ctrlNode = this.renderTopControlNode();\n var _$data5 = this.$data,\n open = _$data5._open,\n inputValue = _$data5._inputValue,\n value = _$data5._value;\n\n if (open) {\n var filterOptions = this.renderFilterOptions();\n this._empty = filterOptions.empty;\n this._options = filterOptions.options;\n }\n var realOpen = this.getRealOpenState();\n var empty = this._empty;\n var options = this._options || [];\n\n var _getListeners = getListeners(this),\n _getListeners$mouseen = _getListeners.mouseenter,\n mouseenter = _getListeners$mouseen === undefined ? noop : _getListeners$mouseen,\n _getListeners$mousele = _getListeners.mouseleave,\n mouseleave = _getListeners$mousele === undefined ? noop : _getListeners$mousele,\n _getListeners$popupSc = _getListeners.popupScroll,\n popupScroll = _getListeners$popupSc === undefined ? noop : _getListeners$popupSc;\n\n var selectionProps = {\n props: {},\n attrs: {\n role: 'combobox',\n 'aria-autocomplete': 'list',\n 'aria-haspopup': 'true',\n 'aria-expanded': realOpen,\n 'aria-controls': this.$data._ariaId\n },\n on: {\n // click: this.selectionRefClick,\n },\n 'class': prefixCls + '-selection ' + prefixCls + '-selection--' + (multiple ? 'multiple' : 'single'),\n // directives: [\n // {\n // name: 'ant-ref',\n // value: this.saveSelectionRef,\n // },\n // ],\n key: 'selection'\n };\n //if (!isMultipleOrTagsOrCombobox(props)) {\n // selectionProps.on.keydown = this.onKeyDown;\n // selectionProps.on.focus = this.selectionRefFocus;\n // selectionProps.on.blur = this.selectionRefBlur;\n // selectionProps.attrs.tabIndex = props.disabled ? -1 : props.tabIndex;\n //}\n var extraSelectionProps = { attrs: { tabIndex: -1 } };\n if (!isMultipleOrTagsOrCombobox(props)) {\n extraSelectionProps.attrs.tabIndex = props.disabled ? -1 : props.tabIndex;\n }\n var rootCls = (_rootCls = {}, _defineProperty(_rootCls, prefixCls, true), _defineProperty(_rootCls, prefixCls + '-open', open), _defineProperty(_rootCls, prefixCls + '-focused', open || !!this._focused), _defineProperty(_rootCls, prefixCls + '-combobox', isCombobox(props)), _defineProperty(_rootCls, prefixCls + '-disabled', disabled), _defineProperty(_rootCls, prefixCls + '-enabled', !disabled), _defineProperty(_rootCls, prefixCls + '-allow-clear', !!props.allowClear), _defineProperty(_rootCls, prefixCls + '-no-arrow', !showArrow), _defineProperty(_rootCls, prefixCls + '-loading', !!loading), _rootCls);\n return h(\n SelectTrigger,\n _mergeJSXProps([{\n attrs: {\n dropdownAlign: props.dropdownAlign,\n dropdownClassName: props.dropdownClassName,\n dropdownMatchSelectWidth: props.dropdownMatchSelectWidth,\n defaultActiveFirstOption: props.defaultActiveFirstOption,\n dropdownMenuStyle: props.dropdownMenuStyle,\n transitionName: props.transitionName,\n animation: props.animation,\n prefixCls: props.prefixCls,\n dropdownStyle: props.dropdownStyle,\n combobox: props.combobox,\n showSearch: props.showSearch,\n options: options,\n empty: empty,\n multiple: multiple,\n disabled: disabled,\n visible: realOpen,\n inputValue: inputValue,\n value: value,\n backfillValue: state._backfillValue,\n firstActiveValue: props.firstActiveValue,\n\n getPopupContainer: props.getPopupContainer,\n\n showAction: props.showAction,\n menuItemSelectedIcon: getComponentFromProp(this, 'menuItemSelectedIcon')\n },\n on: {\n 'dropdownVisibleChange': this.onDropdownVisibleChange,\n 'menuSelect': this.onMenuSelect,\n 'menuDeselect': this.onMenuDeselect,\n 'popupScroll': popupScroll,\n 'popupFocus': this.onPopupFocus,\n 'mouseenter': mouseenter,\n 'mouseleave': mouseleave\n }\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.saveSelectTriggerRef\n }]\n }, {\n attrs: {\n dropdownRender: props.dropdownRender,\n ariaId: this.$data._ariaId\n }\n }]),\n [h(\n 'div',\n _mergeJSXProps([{\n directives: [{\n name: 'ant-ref',\n value: chaining(this.saveRootRef, this.saveSelectionRef)\n }]\n }, {\n style: getStyle(this),\n 'class': classnames(rootCls),\n on: {\n 'mousedown': this.markMouseDown,\n 'mouseup': this.markMouseLeave,\n 'mouseout': this.markMouseLeave\n }\n }, extraSelectionProps, {\n on: {\n 'blur': this.selectionRefBlur,\n 'focus': this.selectionRefFocus,\n 'click': this.selectionRefClick,\n 'keydown': isMultipleOrTagsOrCombobox(props) ? noop : this.onKeyDown\n }\n }]),\n [h(\n 'div',\n selectionProps,\n [ctrlNode, this.renderClear(), this.renderArrow(!!multiple)]\n )]\n )]\n );\n }\n};\nexport { Select };\nexport default proxyComponent(Select);","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport warning from '../_util/warning';\nimport omit from 'omit.js';\nimport PropTypes from '../_util/vue-types';\nimport { Select as VcSelect, Option, OptGroup } from '../vc-select';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { getComponentFromProp, getOptionProps, filterEmpty, isValidElement, getListeners } from '../_util/props-util';\nimport Icon from '../icon';\nimport { cloneElement } from '../_util/vnode';\nimport Base from '../base';\n\nvar AbstractSelectProps = function AbstractSelectProps() {\n return {\n prefixCls: PropTypes.string,\n size: PropTypes.oneOf(['small', 'large', 'default']),\n showAction: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(String)]),\n notFoundContent: PropTypes.any,\n transitionName: PropTypes.string,\n choiceTransitionName: PropTypes.string,\n showSearch: PropTypes.bool,\n allowClear: PropTypes.bool,\n disabled: PropTypes.bool,\n tabIndex: PropTypes.number,\n placeholder: PropTypes.any,\n defaultActiveFirstOption: PropTypes.bool,\n dropdownClassName: PropTypes.string,\n dropdownStyle: PropTypes.any,\n dropdownMenuStyle: PropTypes.any,\n dropdownMatchSelectWidth: PropTypes.bool,\n // onSearch: (value: string) => any,\n filterOption: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n autoFocus: PropTypes.bool,\n backfill: PropTypes.bool,\n showArrow: PropTypes.bool,\n getPopupContainer: PropTypes.func,\n open: PropTypes.bool,\n defaultOpen: PropTypes.bool,\n autoClearSearchValue: PropTypes.bool,\n dropdownRender: PropTypes.func,\n loading: PropTypes.bool\n };\n};\nvar Value = PropTypes.shape({\n key: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n}).loose;\n\nvar SelectValue = PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([Value, PropTypes.string, PropTypes.number])), Value]);\n\nvar SelectProps = _extends({}, AbstractSelectProps(), {\n value: SelectValue,\n defaultValue: SelectValue,\n // mode: PropTypes.oneOf(['default', 'multiple', 'tags', 'combobox']),\n mode: PropTypes.string,\n optionLabelProp: PropTypes.string,\n firstActiveValue: PropTypes.oneOfType([String, PropTypes.arrayOf(String)]),\n maxTagCount: PropTypes.number,\n maxTagPlaceholder: PropTypes.any,\n maxTagTextLength: PropTypes.number,\n dropdownMatchSelectWidth: PropTypes.bool,\n optionFilterProp: PropTypes.string,\n labelInValue: PropTypes.boolean,\n getPopupContainer: PropTypes.func,\n tokenSeparators: PropTypes.arrayOf(PropTypes.string),\n getInputElement: PropTypes.func,\n options: PropTypes.array,\n suffixIcon: PropTypes.any,\n removeIcon: PropTypes.any,\n clearIcon: PropTypes.any,\n menuItemSelectedIcon: PropTypes.any\n});\n\nvar SelectPropTypes = {\n prefixCls: PropTypes.string,\n size: PropTypes.oneOf(['default', 'large', 'small']),\n // combobox: PropTypes.bool,\n notFoundContent: PropTypes.any,\n showSearch: PropTypes.bool,\n optionLabelProp: PropTypes.string,\n transitionName: PropTypes.string,\n choiceTransitionName: PropTypes.string\n};\n\nexport { AbstractSelectProps, SelectValue, SelectProps };\nvar SECRET_COMBOBOX_MODE_DO_NOT_USE = 'SECRET_COMBOBOX_MODE_DO_NOT_USE';\nvar Select = {\n SECRET_COMBOBOX_MODE_DO_NOT_USE: SECRET_COMBOBOX_MODE_DO_NOT_USE,\n Option: _extends({}, Option, { name: 'ASelectOption' }),\n OptGroup: _extends({}, OptGroup, { name: 'ASelectOptGroup' }),\n name: 'ASelect',\n props: _extends({}, SelectProps, {\n showSearch: PropTypes.bool.def(false),\n transitionName: PropTypes.string.def('slide-up'),\n choiceTransitionName: PropTypes.string.def('zoom')\n }),\n propTypes: SelectPropTypes,\n model: {\n prop: 'value',\n event: 'change'\n },\n provide: function provide() {\n return {\n savePopupRef: this.savePopupRef\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n created: function created() {\n warning(this.$props.mode !== 'combobox', 'Select', 'The combobox mode of Select is deprecated,' + 'it will be removed in next major version,' + 'please use AutoComplete instead');\n },\n\n methods: {\n getNotFoundContent: function getNotFoundContent(renderEmpty) {\n var h = this.$createElement;\n var notFoundContent = getComponentFromProp(this, 'notFoundContent');\n if (notFoundContent !== undefined) {\n return notFoundContent;\n }\n if (this.isCombobox()) {\n return null;\n }\n return renderEmpty(h, 'Select');\n },\n savePopupRef: function savePopupRef(ref) {\n this.popupRef = ref;\n },\n focus: function focus() {\n this.$refs.vcSelect.focus();\n },\n blur: function blur() {\n this.$refs.vcSelect.blur();\n },\n isCombobox: function isCombobox() {\n var mode = this.mode;\n\n return mode === 'combobox' || mode === SECRET_COMBOBOX_MODE_DO_NOT_USE;\n },\n renderSuffixIcon: function renderSuffixIcon(prefixCls) {\n var h = this.$createElement;\n var loading = this.$props.loading;\n\n var suffixIcon = getComponentFromProp(this, 'suffixIcon');\n suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;\n if (suffixIcon) {\n return isValidElement(suffixIcon) ? cloneElement(suffixIcon, { 'class': prefixCls + '-arrow-icon' }) : suffixIcon;\n }\n if (loading) {\n return h(Icon, {\n attrs: { type: 'loading' }\n });\n }\n return h(Icon, {\n attrs: { type: 'down' },\n 'class': prefixCls + '-arrow-icon' });\n }\n },\n render: function render() {\n var _cls;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n size = _getOptionProps.size,\n mode = _getOptionProps.mode,\n options = _getOptionProps.options,\n getPopupContainer = _getOptionProps.getPopupContainer,\n showArrow = _getOptionProps.showArrow,\n restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'size', 'mode', 'options', 'getPopupContainer', 'showArrow']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var renderEmpty = this.configProvider.renderEmpty;\n var prefixCls = getPrefixCls('select', customizePrefixCls);\n\n var getContextPopupContainer = this.configProvider.getPopupContainer;\n\n var removeIcon = getComponentFromProp(this, 'removeIcon');\n removeIcon = Array.isArray(removeIcon) ? removeIcon[0] : removeIcon;\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n clearIcon = Array.isArray(clearIcon) ? clearIcon[0] : clearIcon;\n var menuItemSelectedIcon = getComponentFromProp(this, 'menuItemSelectedIcon');\n menuItemSelectedIcon = Array.isArray(menuItemSelectedIcon) ? menuItemSelectedIcon[0] : menuItemSelectedIcon;\n var rest = omit(restProps, ['inputIcon', 'removeIcon', 'clearIcon', 'suffixIcon', 'menuItemSelectedIcon']);\n\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls + '-lg', size === 'large'), _defineProperty(_cls, prefixCls + '-sm', size === 'small'), _defineProperty(_cls, prefixCls + '-show-arrow', showArrow), _cls);\n\n var optionLabelProp = this.$props.optionLabelProp;\n\n if (this.isCombobox()) {\n // children 带 dom 结构时,无法填入输入框\n optionLabelProp = optionLabelProp || 'value';\n }\n\n var modeConfig = {\n multiple: mode === 'multiple',\n tags: mode === 'tags',\n combobox: this.isCombobox()\n };\n var finalRemoveIcon = removeIcon && (isValidElement(removeIcon) ? cloneElement(removeIcon, { 'class': prefixCls + '-remove-icon' }) : removeIcon) || h(Icon, {\n attrs: { type: 'close' },\n 'class': prefixCls + '-remove-icon' });\n\n var finalClearIcon = clearIcon && (isValidElement(clearIcon) ? cloneElement(clearIcon, { 'class': prefixCls + '-clear-icon' }) : clearIcon) || h(Icon, {\n attrs: { type: 'close-circle', theme: 'filled' },\n 'class': prefixCls + '-clear-icon' });\n\n var finalMenuItemSelectedIcon = menuItemSelectedIcon && (isValidElement(menuItemSelectedIcon) ? cloneElement(menuItemSelectedIcon, { 'class': prefixCls + '-selected-icon' }) : menuItemSelectedIcon) || h(Icon, {\n attrs: { type: 'check' },\n 'class': prefixCls + '-selected-icon' });\n\n var selectProps = {\n props: _extends({\n inputIcon: this.renderSuffixIcon(prefixCls),\n removeIcon: finalRemoveIcon,\n clearIcon: finalClearIcon,\n menuItemSelectedIcon: finalMenuItemSelectedIcon,\n showArrow: showArrow\n }, rest, modeConfig, {\n prefixCls: prefixCls,\n optionLabelProp: optionLabelProp || 'children',\n notFoundContent: this.getNotFoundContent(renderEmpty),\n maxTagPlaceholder: getComponentFromProp(this, 'maxTagPlaceholder'),\n placeholder: getComponentFromProp(this, 'placeholder'),\n children: options ? options.map(function (option) {\n var key = option.key,\n _option$label = option.label,\n label = _option$label === undefined ? option.title : _option$label,\n on = option.on,\n cls = option['class'],\n style = option.style,\n restOption = _objectWithoutProperties(option, ['key', 'label', 'on', 'class', 'style']);\n\n return h(\n Option,\n _mergeJSXProps([{ key: key }, { props: restOption, on: on, 'class': cls, style: style }]),\n [label]\n );\n }) : filterEmpty(this.$slots['default']),\n __propsSymbol__: Symbol(),\n dropdownRender: getComponentFromProp(this, 'dropdownRender', {}, false),\n getPopupContainer: getPopupContainer || getContextPopupContainer\n }),\n on: getListeners(this),\n 'class': cls,\n ref: 'vcSelect'\n };\n return h(VcSelect, selectProps);\n }\n};\n\n/* istanbul ignore next */\nSelect.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Select.name, Select);\n Vue.component(Select.Option.name, Select.Option);\n Vue.component(Select.OptGroup.name, Select.OptGroup);\n};\n\nexport default Select;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport { getInputClassName } from './Input';\nimport PropTypes from '../_util/vue-types';\nimport { cloneElement } from '../_util/vnode';\nimport { getComponentFromProp } from '../_util/props-util';\n\nexport function hasPrefixSuffix(instance) {\n return !!(getComponentFromProp(instance, 'prefix') || getComponentFromProp(instance, 'suffix') || instance.$props.allowClear);\n}\n\nvar ClearableInputType = ['text', 'input'];\n\nvar ClearableLabeledInput = {\n props: {\n prefixCls: PropTypes.string,\n inputType: PropTypes.oneOf(ClearableInputType),\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n allowClear: PropTypes.bool,\n element: PropTypes.any,\n handleReset: PropTypes.func,\n disabled: PropTypes.bool,\n size: PropTypes.oneOf(['small', 'large', 'default']),\n suffix: PropTypes.any,\n prefix: PropTypes.any,\n addonBefore: PropTypes.any,\n addonAfter: PropTypes.any,\n className: PropTypes.string,\n readOnly: PropTypes.bool\n },\n methods: {\n renderClearIcon: function renderClearIcon(prefixCls) {\n var h = this.$createElement;\n var _$props = this.$props,\n allowClear = _$props.allowClear,\n value = _$props.value,\n disabled = _$props.disabled,\n readOnly = _$props.readOnly,\n inputType = _$props.inputType,\n handleReset = _$props.handleReset;\n\n if (!allowClear || disabled || readOnly || value === undefined || value === null || value === '') {\n return null;\n }\n var className = inputType === ClearableInputType[0] ? prefixCls + '-textarea-clear-icon' : prefixCls + '-clear-icon';\n return h(Icon, {\n attrs: {\n type: 'close-circle',\n theme: 'filled',\n\n role: 'button'\n },\n on: {\n 'click': handleReset\n },\n\n 'class': className });\n },\n renderSuffix: function renderSuffix(prefixCls) {\n var h = this.$createElement;\n var _$props2 = this.$props,\n suffix = _$props2.suffix,\n allowClear = _$props2.allowClear;\n\n if (suffix || allowClear) {\n return h(\n 'span',\n { 'class': prefixCls + '-suffix' },\n [this.renderClearIcon(prefixCls), suffix]\n );\n }\n return null;\n },\n renderLabeledIcon: function renderLabeledIcon(prefixCls, element) {\n var _classNames;\n\n var h = this.$createElement;\n\n var props = this.$props;\n var suffix = this.renderSuffix(prefixCls);\n if (!hasPrefixSuffix(this)) {\n return cloneElement(element, {\n props: { value: props.value }\n });\n }\n\n var prefix = props.prefix ? h(\n 'span',\n { 'class': prefixCls + '-prefix' },\n [props.prefix]\n ) : null;\n\n var affixWrapperCls = classNames(props.className, prefixCls + '-affix-wrapper', (_classNames = {}, _defineProperty(_classNames, prefixCls + '-affix-wrapper-sm', props.size === 'small'), _defineProperty(_classNames, prefixCls + '-affix-wrapper-lg', props.size === 'large'), _defineProperty(_classNames, prefixCls + '-affix-wrapper-input-with-clear-btn', props.suffix && props.allowClear && this.$props.value), _classNames));\n\n return h(\n 'span',\n { 'class': affixWrapperCls, style: props.style },\n [prefix, cloneElement(element, {\n style: null,\n props: { value: props.value },\n 'class': getInputClassName(prefixCls, props.size, props.disabled)\n }), suffix]\n );\n },\n renderInputWithLabel: function renderInputWithLabel(prefixCls, labeledElement) {\n var _classNames3;\n\n var h = this.$createElement;\n var _$props3 = this.$props,\n addonBefore = _$props3.addonBefore,\n addonAfter = _$props3.addonAfter,\n style = _$props3.style,\n size = _$props3.size,\n className = _$props3.className;\n // Not wrap when there is not addons\n\n if (!addonBefore && !addonAfter) {\n return labeledElement;\n }\n\n var wrapperClassName = prefixCls + '-group';\n var addonClassName = wrapperClassName + '-addon';\n var addonBeforeNode = addonBefore ? h(\n 'span',\n { 'class': addonClassName },\n [addonBefore]\n ) : null;\n var addonAfterNode = addonAfter ? h(\n 'span',\n { 'class': addonClassName },\n [addonAfter]\n ) : null;\n\n var mergedWrapperClassName = classNames(prefixCls + '-wrapper', _defineProperty({}, wrapperClassName, addonBefore || addonAfter));\n\n var mergedGroupClassName = classNames(className, prefixCls + '-group-wrapper', (_classNames3 = {}, _defineProperty(_classNames3, prefixCls + '-group-wrapper-sm', size === 'small'), _defineProperty(_classNames3, prefixCls + '-group-wrapper-lg', size === 'large'), _classNames3));\n\n // Need another wrapper for changing display:table to display:inline-block\n // and put style prop in wrapper\n return h(\n 'span',\n { 'class': mergedGroupClassName, style: style },\n [h(\n 'span',\n { 'class': mergedWrapperClassName },\n [addonBeforeNode, cloneElement(labeledElement, { style: null }), addonAfterNode]\n )]\n );\n },\n renderTextAreaWithClearIcon: function renderTextAreaWithClearIcon(prefixCls, element) {\n var h = this.$createElement;\n var _$props4 = this.$props,\n value = _$props4.value,\n allowClear = _$props4.allowClear,\n className = _$props4.className,\n style = _$props4.style;\n\n if (!allowClear) {\n return cloneElement(element, {\n props: { value: value }\n });\n }\n var affixWrapperCls = classNames(className, prefixCls + '-affix-wrapper', prefixCls + '-affix-wrapper-textarea-with-clear-btn');\n return h(\n 'span',\n { 'class': affixWrapperCls, style: style },\n [cloneElement(element, {\n style: null,\n props: { value: value }\n }), this.renderClearIcon(prefixCls)]\n );\n },\n renderClearableLabeledInput: function renderClearableLabeledInput() {\n var _$props5 = this.$props,\n prefixCls = _$props5.prefixCls,\n inputType = _$props5.inputType,\n element = _$props5.element;\n\n if (inputType === ClearableInputType[0]) {\n return this.renderTextAreaWithClearIcon(prefixCls, element);\n }\n return this.renderInputWithLabel(prefixCls, this.renderLabeledIcon(prefixCls, element));\n }\n },\n render: function render() {\n return this.renderClearableLabeledInput();\n }\n};\n\nexport default ClearableLabeledInput;","// Thanks to https://github.com/andreypopp/react-textarea-autosize/\n\n/**\n * calculateNodeHeight(uiTextNode, useCache = false)\n */\n\nvar 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';\n\nvar SIZING_STYLE = ['letter-spacing', 'line-height', 'padding-top', 'padding-bottom', 'font-family', 'font-weight', 'font-size', 'font-variant', 'text-rendering', 'text-transform', 'width', 'text-indent', 'padding-left', 'padding-right', 'border-width', 'box-sizing'];\n\nvar computedStyleCache = {};\nvar hiddenTextarea = void 0;\n\nexport function calculateNodeStyling(node) {\n var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var nodeRef = node.getAttribute('id') || node.getAttribute('data-reactid') || node.getAttribute('name');\n\n if (useCache && computedStyleCache[nodeRef]) {\n return computedStyleCache[nodeRef];\n }\n\n var style = window.getComputedStyle(node);\n\n var boxSizing = style.getPropertyValue('box-sizing') || style.getPropertyValue('-moz-box-sizing') || style.getPropertyValue('-webkit-box-sizing');\n\n var paddingSize = parseFloat(style.getPropertyValue('padding-bottom')) + parseFloat(style.getPropertyValue('padding-top'));\n\n var borderSize = parseFloat(style.getPropertyValue('border-bottom-width')) + parseFloat(style.getPropertyValue('border-top-width'));\n\n var sizingStyle = SIZING_STYLE.map(function (name) {\n return name + ':' + style.getPropertyValue(name);\n }).join(';');\n\n var nodeInfo = {\n sizingStyle: sizingStyle,\n paddingSize: paddingSize,\n borderSize: borderSize,\n boxSizing: boxSizing\n };\n\n if (useCache && nodeRef) {\n computedStyleCache[nodeRef] = nodeInfo;\n }\n\n return nodeInfo;\n}\n\nexport default function calculateNodeHeight(uiTextNode) {\n var useCache = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var minRows = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var maxRows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n if (!hiddenTextarea) {\n hiddenTextarea = document.createElement('textarea');\n document.body.appendChild(hiddenTextarea);\n }\n\n // Fix wrap=\"off\" issue\n // https://github.com/ant-design/ant-design/issues/6577\n if (uiTextNode.getAttribute('wrap')) {\n hiddenTextarea.setAttribute('wrap', uiTextNode.getAttribute('wrap'));\n } else {\n hiddenTextarea.removeAttribute('wrap');\n }\n\n // Copy all CSS properties that have an impact on the height of the content in\n // the textbox\n\n var _calculateNodeStyling = calculateNodeStyling(uiTextNode, useCache),\n paddingSize = _calculateNodeStyling.paddingSize,\n borderSize = _calculateNodeStyling.borderSize,\n boxSizing = _calculateNodeStyling.boxSizing,\n sizingStyle = _calculateNodeStyling.sizingStyle;\n\n // Need to have the overflow attribute to hide the scrollbar otherwise\n // text-lines will not calculated properly as the shadow will technically be\n // narrower for content\n\n\n hiddenTextarea.setAttribute('style', sizingStyle + ';' + HIDDEN_TEXTAREA_STYLE);\n hiddenTextarea.value = uiTextNode.value || uiTextNode.placeholder || '';\n\n var minHeight = Number.MIN_SAFE_INTEGER;\n var maxHeight = Number.MAX_SAFE_INTEGER;\n var height = hiddenTextarea.scrollHeight;\n var overflowY = void 0;\n\n if (boxSizing === 'border-box') {\n // border-box: add border, since height = content + padding + border\n height += borderSize;\n } else if (boxSizing === 'content-box') {\n // remove padding, since height = content\n height -= paddingSize;\n }\n\n if (minRows !== null || maxRows !== null) {\n // measure height of a textarea with a single row\n hiddenTextarea.value = ' ';\n var singleRowHeight = hiddenTextarea.scrollHeight - paddingSize;\n if (minRows !== null) {\n minHeight = singleRowHeight * minRows;\n if (boxSizing === 'border-box') {\n minHeight = minHeight + paddingSize + borderSize;\n }\n height = Math.max(minHeight, height);\n }\n if (maxRows !== null) {\n maxHeight = singleRowHeight * maxRows;\n if (boxSizing === 'border-box') {\n maxHeight = maxHeight + paddingSize + borderSize;\n }\n overflowY = height > maxHeight ? '' : 'hidden';\n height = Math.min(maxHeight, height);\n }\n }\n return {\n height: height + 'px',\n minHeight: minHeight + 'px',\n maxHeight: maxHeight + 'px',\n overflowY: overflowY\n };\n}","import raf from 'raf';\n\nvar id = 0;\nvar ids = {};\n\n// Support call raf with delay specified frame\nexport default function wrapperRaf(callback) {\n var delayFrames = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var myId = id++;\n var restFrames = delayFrames;\n\n function internalCallback() {\n restFrames -= 1;\n\n if (restFrames <= 0) {\n callback();\n delete ids[myId];\n } else {\n ids[myId] = raf(internalCallback);\n }\n }\n\n ids[myId] = raf(internalCallback);\n\n return myId;\n}\n\nwrapperRaf.cancel = function (pid) {\n if (pid === undefined) return;\n raf.cancel(ids[pid]);\n delete ids[pid];\n};\nwrapperRaf.ids = ids; // export this for test usage","import PropTypes from '../_util/vue-types';\nexport default {\n prefixCls: PropTypes.string,\n inputPrefixCls: PropTypes.string,\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n placeholder: [String, Number],\n type: {\n 'default': 'text',\n type: String\n },\n name: String,\n size: PropTypes.oneOf(['small', 'large', 'default']),\n disabled: PropTypes.bool,\n readOnly: PropTypes.bool,\n addonBefore: PropTypes.any,\n addonAfter: PropTypes.any,\n // onPressEnter?: React.FormEventHandler;\n // onKeyDown?: React.FormEventHandler;\n // onChange?: React.ChangeEventHandler;\n // onClick?: React.FormEventHandler;\n // onFocus?: React.FormEventHandler;\n // onBlur?: React.FormEventHandler;\n prefix: PropTypes.any,\n suffix: PropTypes.any,\n // spellCheck: Boolean,\n autoFocus: Boolean,\n allowClear: Boolean,\n lazy: {\n 'default': true,\n type: Boolean\n },\n maxLength: PropTypes.number,\n loading: PropTypes.bool,\n className: PropTypes.string\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport ResizeObserver from '../vc-resize-observer';\nimport omit from 'omit.js';\nimport classNames from 'classnames';\nimport calculateNodeHeight from './calculateNodeHeight';\nimport raf from '../_util/raf';\nimport warning from '../_util/warning';\nimport BaseMixin from '../_util/BaseMixin';\nimport inputProps from './inputProps';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, getListeners } from '../_util/props-util';\n\nvar RESIZE_STATUS_NONE = 0;\nvar RESIZE_STATUS_RESIZING = 1;\nvar RESIZE_STATUS_RESIZED = 2;\n\nvar TextAreaProps = _extends({}, inputProps, {\n autosize: PropTypes.oneOfType([Object, Boolean]),\n autoSize: PropTypes.oneOfType([Object, Boolean])\n});\nvar ResizableTextArea = {\n name: 'ResizableTextArea',\n props: TextAreaProps,\n data: function data() {\n return {\n textareaStyles: {},\n resizeStatus: RESIZE_STATUS_NONE\n };\n },\n\n mixins: [BaseMixin],\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.resizeTextarea();\n });\n },\n beforeDestroy: function beforeDestroy() {\n raf.cancel(this.nextFrameActionId);\n raf.cancel(this.resizeFrameId);\n },\n\n watch: {\n value: function value() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.resizeTextarea();\n });\n }\n },\n methods: {\n handleResize: function handleResize(size) {\n var resizeStatus = this.$data.resizeStatus;\n var autoSize = this.$props.autoSize;\n\n\n if (resizeStatus !== RESIZE_STATUS_NONE) {\n return;\n }\n this.$emit('resize', size);\n if (autoSize) {\n this.resizeOnNextFrame();\n }\n },\n resizeOnNextFrame: function resizeOnNextFrame() {\n raf.cancel(this.nextFrameActionId);\n this.nextFrameActionId = raf(this.resizeTextarea);\n },\n resizeTextarea: function resizeTextarea() {\n var _this3 = this;\n\n var autoSize = this.$props.autoSize || this.$props.autosize;\n if (!autoSize || !this.$refs.textArea) {\n return;\n }\n var minRows = autoSize.minRows,\n maxRows = autoSize.maxRows;\n\n var textareaStyles = calculateNodeHeight(this.$refs.textArea, false, minRows, maxRows);\n this.setState({ textareaStyles: textareaStyles, resizeStatus: RESIZE_STATUS_RESIZING }, function () {\n raf.cancel(_this3.resizeFrameId);\n _this3.resizeFrameId = raf(function () {\n _this3.setState({ resizeStatus: RESIZE_STATUS_RESIZED }, function () {\n _this3.resizeFrameId = raf(function () {\n _this3.setState({ resizeStatus: RESIZE_STATUS_NONE });\n _this3.fixFirefoxAutoScroll();\n });\n });\n });\n });\n },\n\n // https://github.com/ant-design/ant-design/issues/21870\n fixFirefoxAutoScroll: function fixFirefoxAutoScroll() {\n try {\n if (document.activeElement === this.$refs.textArea) {\n var currentStart = this.$refs.textArea.selectionStart;\n var currentEnd = this.$refs.textArea.selectionEnd;\n this.$refs.textArea.setSelectionRange(currentStart, currentEnd);\n }\n } catch (e) {\n // Fix error in Chrome:\n // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n // http://stackoverflow.com/q/21177489/3040605\n }\n },\n renderTextArea: function renderTextArea() {\n var h = this.$createElement;\n\n var props = getOptionProps(this);\n var prefixCls = props.prefixCls,\n autoSize = props.autoSize,\n autosize = props.autosize,\n disabled = props.disabled;\n var _$data = this.$data,\n textareaStyles = _$data.textareaStyles,\n resizeStatus = _$data.resizeStatus;\n\n warning(autosize === undefined, 'Input.TextArea', 'autosize is deprecated, please use autoSize instead.');\n var otherProps = omit(props, ['prefixCls', 'autoSize', 'autosize', 'defaultValue', 'allowClear', 'type', 'lazy', 'value']);\n var cls = classNames(prefixCls, _defineProperty({}, prefixCls + '-disabled', disabled));\n var domProps = {};\n // Fix https://github.com/ant-design/ant-design/issues/6776\n // Make sure it could be reset when using form.getFieldDecorator\n if ('value' in props) {\n domProps.value = props.value || '';\n }\n var style = _extends({}, textareaStyles, resizeStatus === RESIZE_STATUS_RESIZING ? { overflowX: 'hidden', overflowY: 'hidden' } : null);\n var textareaProps = {\n attrs: otherProps,\n domProps: domProps,\n style: style,\n 'class': cls,\n on: omit(getListeners(this), 'pressEnter'),\n directives: [{\n name: 'ant-input'\n }]\n };\n return h(\n ResizeObserver,\n {\n on: {\n 'resize': this.handleResize\n },\n attrs: { disabled: !(autoSize || autosize) }\n },\n [h('textarea', _mergeJSXProps([textareaProps, { ref: 'textArea' }]))]\n );\n }\n },\n\n render: function render() {\n return this.renderTextArea();\n }\n};\n\nexport default ResizableTextArea;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport ClearableLabeledInput from './ClearableLabeledInput';\nimport ResizableTextArea from './ResizableTextArea';\nimport inputProps from './inputProps';\nimport hasProp, { getListeners, getOptionProps } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { fixControlledValue, resolveOnChange } from './Input';\nimport PropTypes from '../_util/vue-types';\n\nvar TextAreaProps = _extends({}, inputProps, {\n autosize: PropTypes.oneOfType([Object, Boolean]),\n autoSize: PropTypes.oneOfType([Object, Boolean])\n});\n\nexport default {\n name: 'ATextarea',\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'change.value'\n },\n props: _extends({}, TextAreaProps),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var value = typeof this.value === 'undefined' ? this.defaultValue : this.value;\n return {\n stateValue: typeof value === 'undefined' ? '' : value\n };\n },\n\n computed: {},\n watch: {\n value: function value(val) {\n this.stateValue = val;\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.autoFocus) {\n _this.focus();\n }\n });\n },\n\n methods: {\n setValue: function setValue(value, callback) {\n if (!hasProp(this, 'value')) {\n this.stateValue = value;\n this.$nextTick(function () {\n callback && callback();\n });\n } else {\n // 不在严格受控\n // https://github.com/vueComponent/ant-design-vue/issues/2207,modal 是 新 new 实例,更新队列和当前不在同一个更新队列中\n // this.$forceUpdate();\n }\n },\n handleKeyDown: function handleKeyDown(e) {\n if (e.keyCode === 13) {\n this.$emit('pressEnter', e);\n }\n this.$emit('keydown', e);\n },\n onChange: function onChange(e) {\n this.$emit('change.value', e.target.value);\n this.$emit('change', e);\n this.$emit('input', e);\n },\n handleChange: function handleChange(e) {\n var _this2 = this;\n\n var _e$target = e.target,\n value = _e$target.value,\n composing = _e$target.composing;\n\n if ((e.isComposing || composing) && this.lazy || this.stateValue === value) return;\n\n this.setValue(e.target.value, function () {\n _this2.$refs.resizableTextArea.resizeTextarea();\n });\n resolveOnChange(this.$refs.resizableTextArea.$refs.textArea, e, this.onChange);\n },\n focus: function focus() {\n this.$refs.resizableTextArea.$refs.textArea.focus();\n },\n blur: function blur() {\n this.$refs.resizableTextArea.$refs.textArea.blur();\n },\n handleReset: function handleReset(e) {\n var _this3 = this;\n\n this.setValue('', function () {\n _this3.$refs.resizableTextArea.renderTextArea();\n _this3.focus();\n });\n resolveOnChange(this.$refs.resizableTextArea.$refs.textArea, e, this.onChange);\n },\n renderTextArea: function renderTextArea(prefixCls) {\n var h = this.$createElement;\n\n var props = getOptionProps(this);\n var resizeProps = {\n props: _extends({}, props, {\n prefixCls: prefixCls\n }),\n on: _extends({}, getListeners(this), {\n input: this.handleChange,\n keydown: this.handleKeyDown\n }),\n attrs: this.$attrs\n };\n return h(ResizableTextArea, _mergeJSXProps([resizeProps, { ref: 'resizableTextArea' }]));\n }\n },\n render: function render() {\n var h = arguments[0];\n var stateValue = this.stateValue,\n customizePrefixCls = this.prefixCls;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('input', customizePrefixCls);\n\n var props = {\n props: _extends({}, getOptionProps(this), {\n prefixCls: prefixCls,\n inputType: 'text',\n value: fixControlledValue(stateValue),\n element: this.renderTextArea(prefixCls),\n handleReset: this.handleReset\n }),\n on: getListeners(this)\n };\n return h(ClearableLabeledInput, props);\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport classNames from 'classnames';\nimport TextArea from './TextArea';\nimport omit from 'omit.js';\nimport inputProps from './inputProps';\nimport { hasProp, getComponentFromProp, getListeners, getOptionProps } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport ClearableLabeledInput from './ClearableLabeledInput';\n\nfunction noop() {}\n\nexport function fixControlledValue(value) {\n if (typeof value === 'undefined' || value === null) {\n return '';\n }\n return value;\n}\n\nexport function resolveOnChange(target, e, onChange) {\n if (onChange) {\n var event = e;\n if (e.type === 'click') {\n // click clear icon\n //event = Object.create(e);\n Object.defineProperty(event, 'target', {\n writable: true\n });\n Object.defineProperty(event, 'currentTarget', {\n writable: true\n });\n event.target = target;\n event.currentTarget = target;\n var originalInputValue = target.value;\n // change target ref value cause e.target.value should be '' when clear input\n target.value = '';\n onChange(event);\n // reset target ref value\n target.value = originalInputValue;\n return;\n }\n onChange(event);\n }\n}\n\nexport function getInputClassName(prefixCls, size, disabled) {\n var _classNames;\n\n return classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-sm', size === 'small'), _defineProperty(_classNames, prefixCls + '-lg', size === 'large'), _defineProperty(_classNames, prefixCls + '-disabled', disabled), _classNames));\n}\n\nexport default {\n name: 'AInput',\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'change.value'\n },\n props: _extends({}, inputProps),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var props = this.$props;\n var value = typeof props.value === 'undefined' ? props.defaultValue : props.value;\n return {\n stateValue: typeof value === 'undefined' ? '' : value\n };\n },\n\n watch: {\n value: function value(val) {\n this.stateValue = val;\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.autoFocus) {\n _this.focus();\n }\n _this.clearPasswordValueAttribute();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.removePasswordTimeout) {\n clearTimeout(this.removePasswordTimeout);\n }\n },\n\n methods: {\n onBlur: function onBlur(e) {\n // fix this isssue: https://github.com/vueComponent/ant-design-vue/issues/3816\n // reference: https://github.com/vuejs/vue/issues/5847 and https://github.com/vuejs/vue/issues/8431\n this.$forceUpdate();\n\n var _getListeners = getListeners(this),\n blur = _getListeners.blur;\n\n blur && blur(e);\n },\n focus: function focus() {\n this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input.blur();\n },\n select: function select() {\n this.$refs.input.select();\n },\n setValue: function setValue(value, callback) {\n if (this.stateValue === value) {\n return;\n }\n if (!hasProp(this, 'value')) {\n this.stateValue = value;\n this.$nextTick(function () {\n callback && callback();\n });\n } else {\n // 不在严格受控\n // https://github.com/vueComponent/ant-design-vue/issues/2207,modal 是 新 new 实例,更新队列和当前不在同一个更新队列中\n // this.$forceUpdate();\n }\n },\n onChange: function onChange(e) {\n this.$emit('change.value', e.target.value);\n this.$emit('change', e);\n this.$emit('input', e);\n },\n handleReset: function handleReset(e) {\n var _this2 = this;\n\n this.setValue('', function () {\n _this2.focus();\n });\n resolveOnChange(this.$refs.input, e, this.onChange);\n },\n renderInput: function renderInput(prefixCls) {\n var h = this.$createElement;\n\n var otherProps = omit(this.$props, ['prefixCls', 'addonBefore', 'addonAfter', 'prefix', 'suffix', 'allowClear', 'value', 'defaultValue', 'lazy', 'size', 'inputType', 'className']);\n var stateValue = this.stateValue,\n handleKeyDown = this.handleKeyDown,\n handleChange = this.handleChange,\n size = this.size,\n disabled = this.disabled;\n\n var inputProps = {\n directives: [{ name: 'ant-input' }],\n domProps: {\n value: fixControlledValue(stateValue)\n },\n attrs: _extends({}, otherProps, this.$attrs),\n on: _extends({}, getListeners(this), {\n keydown: handleKeyDown,\n input: handleChange,\n change: noop,\n blur: this.onBlur\n }),\n 'class': getInputClassName(prefixCls, size, disabled),\n ref: 'input',\n key: 'ant-input'\n };\n return h('input', inputProps);\n },\n clearPasswordValueAttribute: function clearPasswordValueAttribute() {\n var _this3 = this;\n\n // https://github.com/ant-design/ant-design/issues/20541\n this.removePasswordTimeout = setTimeout(function () {\n if (_this3.$refs.input && _this3.$refs.input.getAttribute && _this3.$refs.input.getAttribute('type') === 'password' && _this3.$refs.input.hasAttribute('value')) {\n _this3.$refs.input.removeAttribute('value');\n }\n });\n },\n handleChange: function handleChange(e) {\n var _e$target = e.target,\n value = _e$target.value,\n composing = _e$target.composing;\n // https://github.com/vueComponent/ant-design-vue/issues/2203\n\n if ((e.isComposing || composing) && this.lazy || this.stateValue === value) return;\n this.setValue(value, this.clearPasswordValueAttribute);\n resolveOnChange(this.$refs.input, e, this.onChange);\n },\n handleKeyDown: function handleKeyDown(e) {\n if (e.keyCode === 13) {\n this.$emit('pressEnter', e);\n }\n this.$emit('keydown', e);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n if (this.$props.type === 'textarea') {\n var textareaProps = {\n props: this.$props,\n attrs: this.$attrs,\n on: _extends({}, getListeners(this), {\n input: this.handleChange,\n keydown: this.handleKeyDown,\n change: noop,\n blur: this.onBlur\n })\n };\n return h(TextArea, _mergeJSXProps([textareaProps, { ref: 'input' }]));\n }\n var customizePrefixCls = this.$props.prefixCls;\n var stateValue = this.$data.stateValue;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('input', customizePrefixCls);\n var addonAfter = getComponentFromProp(this, 'addonAfter');\n var addonBefore = getComponentFromProp(this, 'addonBefore');\n var suffix = getComponentFromProp(this, 'suffix');\n var prefix = getComponentFromProp(this, 'prefix');\n var props = {\n props: _extends({}, getOptionProps(this), {\n prefixCls: prefixCls,\n inputType: 'input',\n value: fixControlledValue(stateValue),\n element: this.renderInput(prefixCls),\n handleReset: this.handleReset,\n addonAfter: addonAfter,\n addonBefore: addonBefore,\n suffix: suffix,\n prefix: prefix\n }),\n on: getListeners(this)\n };\n return h(ClearableLabeledInput, props);\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { filterEmpty, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport default {\n name: 'AInputGroup',\n props: {\n prefixCls: PropTypes.string,\n size: {\n validator: function validator(value) {\n return ['small', 'large', 'default'].includes(value);\n }\n },\n compact: Boolean\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n computed: {\n classes: function classes() {\n var _ref;\n\n var customizePrefixCls = this.prefixCls,\n size = this.size,\n _compact = this.compact,\n compact = _compact === undefined ? false : _compact;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('input-group', customizePrefixCls);\n\n return _ref = {}, _defineProperty(_ref, '' + prefixCls, true), _defineProperty(_ref, prefixCls + '-lg', size === 'large'), _defineProperty(_ref, prefixCls + '-sm', size === 'small'), _defineProperty(_ref, prefixCls + '-compact', compact), _ref;\n }\n },\n methods: {},\n render: function render() {\n var h = arguments[0];\n\n return h(\n 'span',\n _mergeJSXProps([{ 'class': this.classes }, { on: getListeners(this) }]),\n [filterEmpty(this.$slots['default'])]\n );\n }\n};","import TransitionEvents from './css-animation/Event';\nimport raf from './raf';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nvar styleForPesudo = void 0;\n\n// Where el is the DOM element you'd like to test for visibility\nfunction isHidden(element) {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n return !element || element.offsetParent === null;\n}\nfunction isNotGrey(color) {\n // eslint-disable-next-line no-useless-escape\n var match = (color || '').match(/rgba?\\((\\d*), (\\d*), (\\d*)(, [\\.\\d]*)?\\)/);\n if (match && match[1] && match[2] && match[3]) {\n return !(match[1] === match[2] && match[2] === match[3]);\n }\n return true;\n}\nexport default {\n name: 'Wave',\n props: ['insertExtraNode'],\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n var node = _this.$el;\n if (node.nodeType !== 1) {\n return;\n }\n _this.instance = _this.bindAnimationEvent(node);\n });\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n beforeDestroy: function beforeDestroy() {\n if (this.instance) {\n this.instance.cancel();\n }\n if (this.clickWaveTimeoutId) {\n clearTimeout(this.clickWaveTimeoutId);\n }\n this.destroy = true;\n },\n\n methods: {\n onClick: function onClick(node, waveColor) {\n if (!node || isHidden(node) || node.className.indexOf('-leave') >= 0) {\n return;\n }\n var insertExtraNode = this.$props.insertExtraNode;\n\n this.extraNode = document.createElement('div');\n var extraNode = this.extraNode;\n extraNode.className = 'ant-click-animating-node';\n var attributeName = this.getAttributeName();\n node.removeAttribute(attributeName);\n node.setAttribute(attributeName, 'true');\n // Not white or transparent or grey\n styleForPesudo = styleForPesudo || document.createElement('style');\n if (waveColor && waveColor !== '#ffffff' && waveColor !== 'rgb(255, 255, 255)' && isNotGrey(waveColor) && !/rgba\\(\\d*, \\d*, \\d*, 0\\)/.test(waveColor) && // any transparent rgba color\n waveColor !== 'transparent') {\n // Add nonce if CSP exist\n if (this.csp && this.csp.nonce) {\n styleForPesudo.nonce = this.csp.nonce;\n }\n extraNode.style.borderColor = waveColor;\n styleForPesudo.innerHTML = '\\n [ant-click-animating-without-extra-node=\\'true\\']::after, .ant-click-animating-node {\\n --antd-wave-shadow-color: ' + waveColor + ';\\n }';\n if (!document.body.contains(styleForPesudo)) {\n document.body.appendChild(styleForPesudo);\n }\n }\n if (insertExtraNode) {\n node.appendChild(extraNode);\n }\n TransitionEvents.addStartEventListener(node, this.onTransitionStart);\n TransitionEvents.addEndEventListener(node, this.onTransitionEnd);\n },\n onTransitionStart: function onTransitionStart(e) {\n if (this.destroy) return;\n\n var node = this.$el;\n if (!e || e.target !== node) {\n return;\n }\n\n if (!this.animationStart) {\n this.resetEffect(node);\n }\n },\n onTransitionEnd: function onTransitionEnd(e) {\n if (!e || e.animationName !== 'fadeEffect') {\n return;\n }\n this.resetEffect(e.target);\n },\n getAttributeName: function getAttributeName() {\n var insertExtraNode = this.$props.insertExtraNode;\n\n return insertExtraNode ? 'ant-click-animating' : 'ant-click-animating-without-extra-node';\n },\n bindAnimationEvent: function bindAnimationEvent(node) {\n var _this2 = this;\n\n if (!node || !node.getAttribute || node.getAttribute('disabled') || node.className.indexOf('disabled') >= 0) {\n return;\n }\n var onClick = function onClick(e) {\n // Fix radio button click twice\n if (e.target.tagName === 'INPUT' || isHidden(e.target)) {\n return;\n }\n _this2.resetEffect(node);\n // Get wave color from target\n var waveColor = getComputedStyle(node).getPropertyValue('border-top-color') || // Firefox Compatible\n getComputedStyle(node).getPropertyValue('border-color') || getComputedStyle(node).getPropertyValue('background-color');\n _this2.clickWaveTimeoutId = window.setTimeout(function () {\n return _this2.onClick(node, waveColor);\n }, 0);\n raf.cancel(_this2.animationStartId);\n _this2.animationStart = true;\n\n // Render to trigger transition event cost 3 frames. Let's delay 10 frames to reset this.\n _this2.animationStartId = raf(function () {\n _this2.animationStart = false;\n }, 10);\n };\n node.addEventListener('click', onClick, true);\n return {\n cancel: function cancel() {\n node.removeEventListener('click', onClick, true);\n }\n };\n },\n resetEffect: function resetEffect(node) {\n if (!node || node === this.extraNode || !(node instanceof Element)) {\n return;\n }\n var insertExtraNode = this.$props.insertExtraNode;\n\n var attributeName = this.getAttributeName();\n node.setAttribute(attributeName, 'false'); // edge has bug on `removeAttribute` #14466\n if (styleForPesudo) {\n styleForPesudo.innerHTML = '';\n }\n if (insertExtraNode && this.extraNode && node.contains(this.extraNode)) {\n node.removeChild(this.extraNode);\n }\n TransitionEvents.removeStartEventListener(node, this.onTransitionStart);\n TransitionEvents.removeEndEventListener(node, this.onTransitionEnd);\n }\n },\n\n render: function render() {\n if (this.configProvider.csp) {\n this.csp = this.configProvider.csp;\n }\n return this.$slots['default'] && this.$slots['default'][0];\n }\n};","import PropTypes from '../_util/vue-types';\nexport default (function () {\n return {\n prefixCls: PropTypes.string,\n type: PropTypes.string,\n htmlType: PropTypes.oneOf(['button', 'submit', 'reset']).def('button'),\n icon: PropTypes.any,\n shape: PropTypes.oneOf(['circle', 'circle-outline', 'round']),\n size: PropTypes.oneOf(['small', 'large', 'default']).def('default'),\n loading: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n disabled: PropTypes.bool,\n ghost: PropTypes.bool,\n block: PropTypes.bool\n };\n});","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport Wave from '../_util/wave';\nimport Icon from '../icon';\nimport buttonTypes from './buttonTypes';\nimport { filterEmpty, getListeners, getComponentFromProp } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nvar rxTwoCNChar = /^[\\u4e00-\\u9fa5]{2}$/;\nvar isTwoCNChar = rxTwoCNChar.test.bind(rxTwoCNChar);\nvar props = buttonTypes();\nexport default {\n name: 'AButton',\n inheritAttrs: false,\n __ANT_BUTTON: true,\n props: props,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n sizeMap: {\n large: 'lg',\n small: 'sm'\n },\n sLoading: !!this.loading,\n hasTwoCNChar: false\n };\n },\n\n computed: {\n classes: function classes() {\n var _ref;\n\n var customizePrefixCls = this.prefixCls,\n type = this.type,\n shape = this.shape,\n size = this.size,\n hasTwoCNChar = this.hasTwoCNChar,\n sLoading = this.sLoading,\n ghost = this.ghost,\n block = this.block,\n icon = this.icon,\n $slots = this.$slots;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('btn', customizePrefixCls);\n var autoInsertSpace = this.configProvider.autoInsertSpaceInButton !== false;\n\n // large => lg\n // small => sm\n var sizeCls = '';\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n case 'small':\n sizeCls = 'sm';\n break;\n default:\n break;\n }\n var iconType = sLoading ? 'loading' : icon;\n var children = filterEmpty($slots['default']);\n return _ref = {}, _defineProperty(_ref, '' + prefixCls, true), _defineProperty(_ref, prefixCls + '-' + type, type), _defineProperty(_ref, prefixCls + '-' + shape, shape), _defineProperty(_ref, prefixCls + '-' + sizeCls, sizeCls), _defineProperty(_ref, prefixCls + '-icon-only', children.length === 0 && iconType), _defineProperty(_ref, prefixCls + '-loading', sLoading), _defineProperty(_ref, prefixCls + '-background-ghost', ghost || type === 'ghost'), _defineProperty(_ref, prefixCls + '-two-chinese-chars', hasTwoCNChar && autoInsertSpace), _defineProperty(_ref, prefixCls + '-block', block), _ref;\n }\n },\n watch: {\n loading: function loading(val, preVal) {\n var _this = this;\n\n if (preVal && typeof preVal !== 'boolean') {\n clearTimeout(this.delayTimeout);\n }\n if (val && typeof val !== 'boolean' && val.delay) {\n this.delayTimeout = setTimeout(function () {\n _this.sLoading = !!val;\n }, val.delay);\n } else {\n this.sLoading = !!val;\n }\n }\n },\n mounted: function mounted() {\n this.fixTwoCNChar();\n },\n updated: function updated() {\n this.fixTwoCNChar();\n },\n beforeDestroy: function beforeDestroy() {\n // if (this.timeout) {\n // clearTimeout(this.timeout)\n // }\n if (this.delayTimeout) {\n clearTimeout(this.delayTimeout);\n }\n },\n\n methods: {\n fixTwoCNChar: function fixTwoCNChar() {\n // Fix for HOC usage like \n var node = this.$refs.buttonNode;\n if (!node) {\n return;\n }\n var buttonText = node.textContent;\n if (this.isNeedInserted() && isTwoCNChar(buttonText)) {\n if (!this.hasTwoCNChar) {\n this.hasTwoCNChar = true;\n }\n } else if (this.hasTwoCNChar) {\n this.hasTwoCNChar = false;\n }\n },\n handleClick: function handleClick(event) {\n var sLoading = this.$data.sLoading;\n\n if (sLoading) {\n return;\n }\n this.$emit('click', event);\n },\n insertSpace: function insertSpace(child, needInserted) {\n var h = this.$createElement;\n\n var SPACE = needInserted ? ' ' : '';\n if (typeof child.text === 'string') {\n var text = child.text.trim();\n if (isTwoCNChar(text)) {\n text = text.split('').join(SPACE);\n }\n return h('span', [text]);\n }\n return child;\n },\n isNeedInserted: function isNeedInserted() {\n var $slots = this.$slots,\n type = this.type;\n\n var icon = getComponentFromProp(this, 'icon');\n return $slots['default'] && $slots['default'].length === 1 && !icon && type !== 'link';\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n var type = this.type,\n htmlType = this.htmlType,\n classes = this.classes,\n disabled = this.disabled,\n handleClick = this.handleClick,\n sLoading = this.sLoading,\n $slots = this.$slots,\n $attrs = this.$attrs;\n\n var icon = getComponentFromProp(this, 'icon');\n var buttonProps = {\n attrs: _extends({}, $attrs, {\n disabled: disabled\n }),\n 'class': classes,\n on: _extends({}, getListeners(this), {\n click: handleClick\n })\n };\n var iconType = sLoading ? 'loading' : icon;\n var iconNode = iconType ? h(Icon, {\n attrs: { type: iconType }\n }) : null;\n var children = filterEmpty($slots['default']);\n var autoInsertSpace = this.configProvider.autoInsertSpaceInButton !== false;\n var kids = children.map(function (child) {\n return _this2.insertSpace(child, _this2.isNeedInserted() && autoInsertSpace);\n });\n\n if ($attrs.href !== undefined) {\n return h(\n 'a',\n _mergeJSXProps([buttonProps, { ref: 'buttonNode' }]),\n [iconNode, kids]\n );\n }\n\n var buttonNode = h(\n 'button',\n _mergeJSXProps([buttonProps, { ref: 'buttonNode', attrs: { type: htmlType || 'button' }\n }]),\n [iconNode, kids]\n );\n\n if (type === 'link') {\n return buttonNode;\n }\n\n return h(Wave, [buttonNode]);\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport { filterEmpty } from '../_util/props-util';\nimport PropTypes from '../_util/vue-types';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nvar ButtonGroupProps = {\n prefixCls: PropTypes.string,\n size: {\n validator: function validator(value) {\n return ['small', 'large', 'default'].includes(value);\n }\n }\n};\nexport { ButtonGroupProps };\nexport default {\n name: 'AButtonGroup',\n props: ButtonGroupProps,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n sizeMap: {\n large: 'lg',\n small: 'sm'\n }\n };\n },\n render: function render() {\n var _classes;\n\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n size = this.size,\n $slots = this.$slots;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('btn-group', customizePrefixCls);\n\n // large => lg\n // small => sm\n var sizeCls = '';\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n case 'small':\n sizeCls = 'sm';\n break;\n default:\n break;\n }\n var classes = (_classes = {}, _defineProperty(_classes, '' + prefixCls, true), _defineProperty(_classes, prefixCls + '-' + sizeCls, sizeCls), _classes);\n return h(\n 'div',\n { 'class': classes },\n [filterEmpty($slots['default'])]\n );\n }\n};","import Button from './button';\nimport ButtonGroup from './button-group';\nimport Base from '../base';\n\nButton.Group = ButtonGroup;\n\n/* istanbul ignore next */\nButton.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Button.name, Button);\n Vue.component(ButtonGroup.name, ButtonGroup);\n};\n\nexport default Button;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport { isMobile } from 'is-mobile';\nimport Input from './Input';\nimport Icon from '../icon';\nimport inputProps from './inputProps';\nimport Button from '../button';\nimport { cloneElement } from '../_util/vnode';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport default {\n name: 'AInputSearch',\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'change.value'\n },\n props: _extends({}, inputProps, {\n // 不能设置默认值 https://github.com/vueComponent/ant-design-vue/issues/1916\n enterButton: PropTypes.any\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n onChange: function onChange(e) {\n if (e && e.target && e.type === 'click') {\n this.$emit('search', e.target.value, e);\n }\n this.$emit('change', e);\n },\n onSearch: function onSearch(e) {\n if (this.loading || this.disabled) {\n return;\n }\n this.$emit('search', this.$refs.input.stateValue, e);\n if (!isMobile({ tablet: true })) {\n this.$refs.input.focus();\n }\n },\n focus: function focus() {\n this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input.blur();\n },\n renderLoading: function renderLoading(prefixCls) {\n var h = this.$createElement;\n var size = this.$props.size;\n\n var enterButton = getComponentFromProp(this, 'enterButton');\n // 兼容 , 因enterButton类型为 any,此类写法 enterButton 为空字符串\n enterButton = enterButton || enterButton === '';\n if (enterButton) {\n return h(\n Button,\n { 'class': prefixCls + '-button', attrs: { type: 'primary', size: size },\n key: 'enterButton' },\n [h(Icon, {\n attrs: { type: 'loading' }\n })]\n );\n }\n return h(Icon, { 'class': prefixCls + '-icon', attrs: { type: 'loading' },\n key: 'loadingIcon' });\n },\n renderSuffix: function renderSuffix(prefixCls) {\n var h = this.$createElement;\n var loading = this.loading;\n\n var suffix = getComponentFromProp(this, 'suffix');\n var enterButton = getComponentFromProp(this, 'enterButton');\n // 兼容 , 因enterButton类型为 any,此类写法 enterButton 为空字符串\n enterButton = enterButton || enterButton === '';\n if (loading && !enterButton) {\n return [suffix, this.renderLoading(prefixCls)];\n }\n\n if (enterButton) return suffix;\n\n var icon = h(Icon, { 'class': prefixCls + '-icon', attrs: { type: 'search' },\n key: 'searchIcon', on: {\n 'click': this.onSearch\n }\n });\n\n if (suffix) {\n // let cloneSuffix = suffix;\n // if (isValidElement(cloneSuffix) && !cloneSuffix.key) {\n // cloneSuffix = cloneElement(cloneSuffix, {\n // key: 'originSuffix',\n // });\n // }\n return [suffix, icon];\n }\n\n return icon;\n },\n renderAddonAfter: function renderAddonAfter(prefixCls) {\n var h = this.$createElement;\n var size = this.size,\n disabled = this.disabled,\n loading = this.loading;\n\n var btnClassName = prefixCls + '-button';\n var enterButton = getComponentFromProp(this, 'enterButton');\n enterButton = enterButton || enterButton === '';\n var addonAfter = getComponentFromProp(this, 'addonAfter');\n if (loading && enterButton) {\n return [this.renderLoading(prefixCls), addonAfter];\n }\n if (!enterButton) return addonAfter;\n var enterButtonAsElement = Array.isArray(enterButton) ? enterButton[0] : enterButton;\n var button = void 0;\n var isAntdButton = enterButtonAsElement.componentOptions && enterButtonAsElement.componentOptions.Ctor.extendOptions.__ANT_BUTTON;\n if (enterButtonAsElement.tag === 'button' || isAntdButton) {\n button = cloneElement(enterButtonAsElement, {\n key: 'enterButton',\n 'class': isAntdButton ? btnClassName : '',\n props: isAntdButton ? { size: size } : {},\n on: {\n click: this.onSearch\n }\n });\n } else {\n button = h(\n Button,\n {\n 'class': btnClassName,\n attrs: { type: 'primary',\n size: size,\n disabled: disabled\n },\n key: 'enterButton',\n on: {\n 'click': this.onSearch\n }\n },\n [enterButton === true || enterButton === '' ? h(Icon, {\n attrs: { type: 'search' }\n }) : enterButton]\n );\n }\n if (addonAfter) {\n return [button, addonAfter];\n }\n\n return button;\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n customizeInputPrefixCls = _getOptionProps.inputPrefixCls,\n size = _getOptionProps.size,\n loading = _getOptionProps.loading,\n others = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'inputPrefixCls', 'size', 'loading']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('input-search', customizePrefixCls);\n var inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);\n\n var enterButton = getComponentFromProp(this, 'enterButton');\n var addonBefore = getComponentFromProp(this, 'addonBefore');\n enterButton = enterButton || enterButton === '';\n var inputClassName = void 0;\n if (enterButton) {\n var _classNames;\n\n inputClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-enter-button', !!enterButton), _defineProperty(_classNames, prefixCls + '-' + size, !!size), _classNames));\n } else {\n inputClassName = prefixCls;\n }\n\n var on = _extends({}, getListeners(this));\n delete on.search;\n var inputProps = {\n props: _extends({}, others, {\n prefixCls: inputPrefixCls,\n size: size,\n suffix: this.renderSuffix(prefixCls),\n prefix: getComponentFromProp(this, 'prefix'),\n addonAfter: this.renderAddonAfter(prefixCls),\n addonBefore: addonBefore,\n className: inputClassName\n }),\n attrs: this.$attrs,\n ref: 'input',\n on: _extends({\n pressEnter: this.onSearch\n }, on, {\n change: this.onChange\n })\n };\n return h(Input, inputProps);\n }\n};","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport { getComponentFromProp, getOptionProps, getListeners } from '../_util/props-util';\nimport Input from './Input';\nimport Icon from '../icon';\nimport inputProps from './inputProps';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nvar ActionMap = {\n click: 'click',\n hover: 'mouseover'\n};\n\nexport default {\n name: 'AInputPassword',\n mixins: [BaseMixin],\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'change.value'\n },\n props: _extends({}, inputProps, {\n prefixCls: PropTypes.string,\n inputPrefixCls: PropTypes.string,\n action: PropTypes.string.def('click'),\n visibilityToggle: PropTypes.bool.def(true)\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n visible: false\n };\n },\n\n methods: {\n focus: function focus() {\n this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input.blur();\n },\n onVisibleChange: function onVisibleChange() {\n if (this.disabled) {\n return;\n }\n this.setState({\n visible: !this.visible\n });\n },\n getIcon: function getIcon(prefixCls) {\n var _on;\n\n var h = this.$createElement;\n var action = this.$props.action;\n\n var iconTrigger = ActionMap[action] || '';\n var iconProps = {\n props: {\n type: this.visible ? 'eye' : 'eye-invisible'\n },\n on: (_on = {}, _defineProperty(_on, iconTrigger, this.onVisibleChange), _defineProperty(_on, 'mousedown', function mousedown(e) {\n // Prevent focused state lost\n // https://github.com/ant-design/ant-design/issues/15173\n e.preventDefault();\n }), _defineProperty(_on, 'mouseup', function mouseup(e) {\n // Prevent focused state lost\n // https://github.com/ant-design/ant-design/pull/23633/files\n e.preventDefault();\n }), _on),\n 'class': prefixCls + '-icon',\n key: 'passwordIcon'\n };\n return h(Icon, iconProps);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n customizeInputPrefixCls = _getOptionProps.inputPrefixCls,\n size = _getOptionProps.size,\n suffix = _getOptionProps.suffix,\n visibilityToggle = _getOptionProps.visibilityToggle,\n restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'inputPrefixCls', 'size', 'suffix', 'visibilityToggle']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);\n var prefixCls = getPrefixCls('input-password', customizePrefixCls);\n\n var suffixIcon = visibilityToggle && this.getIcon(prefixCls);\n var inputClassName = classNames(prefixCls, _defineProperty({}, prefixCls + '-' + size, !!size));\n var inputProps = {\n props: _extends({}, restProps, {\n prefixCls: inputPrefixCls,\n size: size,\n suffix: suffixIcon,\n prefix: getComponentFromProp(this, 'prefix'),\n addonAfter: getComponentFromProp(this, 'addonAfter'),\n addonBefore: getComponentFromProp(this, 'addonBefore')\n }),\n attrs: _extends({}, this.$attrs, {\n type: this.visible ? 'text' : 'password'\n }),\n 'class': inputClassName,\n ref: 'input',\n on: getListeners(this)\n };\n return h(Input, inputProps);\n }\n};","import Vue from 'vue';\nimport Input from './Input';\nimport Group from './Group';\nimport Search from './Search';\nimport TextArea from './TextArea';\nimport Password from './Password';\nimport antInputDirective from '../_util/antInputDirective';\nimport Base from '../base';\n\nVue.use(antInputDirective);\n\nInput.Group = Group;\nInput.Search = Search;\nInput.TextArea = TextArea;\nInput.Password = Password;\n\n/* istanbul ignore next */\nInput.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Input.name, Input);\n Vue.component(Input.Group.name, Input.Group);\n Vue.component(Input.Search.name, Input.Search);\n Vue.component(Input.TextArea.name, Input.TextArea);\n Vue.component(Input.Password.name, Input.Password);\n};\n\nexport default Input;","import _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { cloneElement } from '../_util/vnode';\nimport { getOptionProps, getListeners } from '../_util/props-util';\nfunction chaining() {\n for (var _len = arguments.length, fns = Array(_len), _key = 0; _key < _len; _key++) {\n fns[_key] = arguments[_key];\n }\n\n return function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // eslint-disable-line\n // eslint-disable-line\n for (var i = 0; i < fns.length; i++) {\n if (fns[i] && typeof fns[i] === 'function') {\n fns[i].apply(this, args);\n }\n }\n };\n}\nexport default {\n name: 'InputElement',\n inheritAttrs: false,\n props: {\n value: PropTypes.any,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string\n },\n render: function render() {\n var _$slots = this.$slots,\n $slots = _$slots === undefined ? {} : _$slots,\n _$attrs = this.$attrs,\n $attrs = _$attrs === undefined ? {} : _$attrs,\n placeholder = this.placeholder;\n\n var listeners = getListeners(this);\n var props = getOptionProps(this);\n var value = props.value === undefined ? '' : props.value;\n var children = $slots['default'][0];\n var _$slots$default$0$com = $slots['default'][0].componentOptions,\n componentOptions = _$slots$default$0$com === undefined ? {} : _$slots$default$0$com;\n var _componentOptions$lis = componentOptions.listeners,\n events = _componentOptions$lis === undefined ? {} : _componentOptions$lis;\n\n var newEvent = _extends({}, events);\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Object.entries(listeners)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var eventName = _ref2[0];\n var event = _ref2[1];\n\n newEvent[eventName] = chaining(event, events[eventName]);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n var attrs = _extends({}, $attrs, { value: value });\n // https://github.com/vueComponent/ant-design-vue/issues/1761\n delete props.placeholder;\n if (placeholder) {\n props.placeholder = placeholder;\n attrs.placeholder = placeholder;\n }\n return cloneElement(children, {\n domProps: {\n value: value\n },\n props: props,\n on: newEvent,\n attrs: attrs,\n ref: 'ele'\n });\n }\n};","import _typeof from 'babel-runtime/helpers/typeof';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport { Option, OptGroup } from '../vc-select';\nimport Select, { AbstractSelectProps, SelectValue } from '../select';\nimport Input from '../input';\nimport InputElement from './InputElement';\nimport PropTypes from '../_util/vue-types';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { getComponentFromProp, getOptionProps, filterEmpty, isValidElement, getListeners } from '../_util/props-util';\nimport Base from '../base';\n\n// const DataSourceItemObject = PropTypes.shape({\n// value: String,\n// text: String,\n// }).loose\n// const DataSourceItemType = PropTypes.oneOfType([\n// PropTypes.string,\n// DataSourceItemObject,\n// ]).isRequired\n\n// export interface AutoCompleteInputProps {\n// onChange?: React.FormEventHandler;\n// value: any;\n// }\n\nvar AutoCompleteProps = _extends({}, AbstractSelectProps(), {\n value: SelectValue,\n defaultValue: SelectValue,\n dataSource: PropTypes.array,\n dropdownMenuStyle: PropTypes.object,\n optionLabelProp: String,\n dropdownMatchSelectWidth: PropTypes.bool\n // onChange?: (value: SelectValue) => void;\n // onSelect?: (value: SelectValue, option: Object) => any;\n});\n\nvar AutoComplete = {\n name: 'AAutoComplete',\n props: _extends({}, AutoCompleteProps, {\n prefixCls: PropTypes.string,\n showSearch: PropTypes.bool.def(false),\n transitionName: PropTypes.string.def('slide-up'),\n choiceTransitionName: PropTypes.string.def('zoom'),\n autoFocus: PropTypes.bool,\n backfill: PropTypes.bool,\n optionLabelProp: PropTypes.string.def('children'),\n filterOption: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]).def(false),\n defaultActiveFirstOption: PropTypes.bool.def(true)\n }),\n Option: _extends({}, Option, { name: 'AAutoCompleteOption' }),\n OptGroup: _extends({}, OptGroup, { name: 'AAutoCompleteOptGroup' }),\n model: {\n prop: 'value',\n event: 'change'\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n provide: function provide() {\n return {\n savePopupRef: this.savePopupRef\n };\n },\n\n methods: {\n savePopupRef: function savePopupRef(ref) {\n this.popupRef = ref;\n },\n getInputElement: function getInputElement() {\n var h = this.$createElement;\n var $slots = this.$slots,\n placeholder = this.placeholder;\n\n var children = filterEmpty($slots['default']);\n var element = children.length ? children[0] : h(Input, {\n attrs: { lazy: false }\n });\n return h(\n InputElement,\n {\n attrs: { placeholder: placeholder }\n },\n [element]\n );\n },\n focus: function focus() {\n if (this.$refs.select) {\n this.$refs.select.focus();\n }\n },\n blur: function blur() {\n if (this.$refs.select) {\n this.$refs.select.blur();\n }\n }\n },\n\n render: function render() {\n var _cls;\n\n var h = arguments[0];\n var size = this.size,\n customizePrefixCls = this.prefixCls,\n optionLabelProp = this.optionLabelProp,\n dataSource = this.dataSource,\n $slots = this.$slots;\n\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('select', customizePrefixCls);\n\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls + '-lg', size === 'large'), _defineProperty(_cls, prefixCls + '-sm', size === 'small'), _defineProperty(_cls, prefixCls + '-show-search', true), _defineProperty(_cls, prefixCls + '-auto-complete', true), _cls);\n\n var options = void 0;\n var childArray = filterEmpty($slots.dataSource);\n if (childArray.length) {\n options = childArray;\n } else {\n options = dataSource ? dataSource.map(function (item) {\n if (isValidElement(item)) {\n return item;\n }\n switch (typeof item === 'undefined' ? 'undefined' : _typeof(item)) {\n case 'string':\n return h(\n Option,\n { key: item },\n [item]\n );\n case 'object':\n return h(\n Option,\n { key: item.value },\n [item.text]\n );\n default:\n throw new Error('AutoComplete[dataSource] only supports type `string[] | Object[]`.');\n }\n }) : [];\n }\n var selectProps = {\n props: _extends({}, getOptionProps(this), {\n mode: Select.SECRET_COMBOBOX_MODE_DO_NOT_USE,\n optionLabelProp: optionLabelProp,\n getInputElement: this.getInputElement,\n notFoundContent: getComponentFromProp(this, 'notFoundContent'),\n placeholder: ''\n }),\n 'class': cls,\n ref: 'select',\n on: getListeners(this)\n };\n return h(\n Select,\n selectProps,\n [options]\n );\n }\n};\n\n/* istanbul ignore next */\nAutoComplete.install = function (Vue) {\n Vue.use(Base);\n Vue.component(AutoComplete.name, AutoComplete);\n Vue.component(AutoComplete.Option.name, AutoComplete.Option);\n Vue.component(AutoComplete.OptGroup.name, AutoComplete.OptGroup);\n};\n\nexport default AutoComplete;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport Icon from '../icon';\nimport classNames from 'classnames';\nimport BaseMixin from '../_util/BaseMixin';\nimport PropTypes from '../_util/vue-types';\nimport getTransitionProps from '../_util/getTransitionProps';\nimport { getComponentFromProp, isValidElement } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nfunction noop() {}\nexport var AlertProps = {\n /**\n * Type of Alert styles, options:`success`, `info`, `warning`, `error`\n */\n type: PropTypes.oneOf(['success', 'info', 'warning', 'error']),\n /** Whether Alert can be closed */\n closable: PropTypes.bool,\n /** Close text to show */\n closeText: PropTypes.any,\n /** Content of Alert */\n message: PropTypes.any,\n /** Additional content of Alert */\n description: PropTypes.any,\n /** Callback when close Alert */\n // onClose?: React.MouseEventHandler;\n /** Trigger when animation ending of Alert */\n afterClose: PropTypes.func.def(noop),\n /** Whether to show icon */\n showIcon: PropTypes.bool,\n iconType: PropTypes.string,\n prefixCls: PropTypes.string,\n banner: PropTypes.bool,\n icon: PropTypes.any\n};\n\nvar Alert = {\n name: 'AAlert',\n props: AlertProps,\n mixins: [BaseMixin],\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n closing: false,\n closed: false\n };\n },\n\n methods: {\n handleClose: function handleClose(e) {\n e.preventDefault();\n var dom = this.$el;\n dom.style.height = dom.offsetHeight + 'px';\n // Magic code\n // 重复一次后才能正确设置 height\n dom.style.height = dom.offsetHeight + 'px';\n\n this.setState({\n closing: true\n });\n this.$emit('close', e);\n },\n animationEnd: function animationEnd() {\n this.setState({\n closing: false,\n closed: true\n });\n this.afterClose();\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n banner = this.banner,\n closing = this.closing,\n closed = this.closed;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('alert', customizePrefixCls);\n\n var closable = this.closable,\n type = this.type,\n showIcon = this.showIcon,\n iconType = this.iconType;\n\n var closeText = getComponentFromProp(this, 'closeText');\n var description = getComponentFromProp(this, 'description');\n var message = getComponentFromProp(this, 'message');\n var icon = getComponentFromProp(this, 'icon');\n // banner模式默认有 Icon\n showIcon = banner && showIcon === undefined ? true : showIcon;\n // banner模式默认为警告\n type = banner && type === undefined ? 'warning' : type || 'info';\n var iconTheme = 'filled';\n\n if (!iconType) {\n switch (type) {\n case 'success':\n iconType = 'check-circle';\n break;\n case 'info':\n iconType = 'info-circle';\n break;\n case 'error':\n iconType = 'close-circle';\n break;\n case 'warning':\n iconType = 'exclamation-circle';\n break;\n default:\n iconType = 'default';\n }\n\n // use outline icon in alert with description\n if (description) {\n iconTheme = 'outlined';\n }\n }\n\n // closeable when closeText is assigned\n if (closeText) {\n closable = true;\n }\n\n var alertCls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-' + type, true), _defineProperty(_classNames, prefixCls + '-closing', closing), _defineProperty(_classNames, prefixCls + '-with-description', !!description), _defineProperty(_classNames, prefixCls + '-no-icon', !showIcon), _defineProperty(_classNames, prefixCls + '-banner', !!banner), _defineProperty(_classNames, prefixCls + '-closable', closable), _classNames));\n\n var closeIcon = closable ? h(\n 'button',\n {\n attrs: {\n type: 'button',\n\n tabIndex: 0\n },\n on: {\n 'click': this.handleClose\n },\n\n 'class': prefixCls + '-close-icon' },\n [closeText ? h(\n 'span',\n { 'class': prefixCls + '-close-text' },\n [closeText]\n ) : h(Icon, {\n attrs: { type: 'close' }\n })]\n ) : null;\n\n var iconNode = icon && (isValidElement(icon) ? cloneElement(icon, {\n 'class': prefixCls + '-icon'\n }) : h(\n 'span',\n { 'class': prefixCls + '-icon' },\n [icon]\n )) || h(Icon, { 'class': prefixCls + '-icon', attrs: { type: iconType, theme: iconTheme }\n });\n\n var transitionProps = getTransitionProps(prefixCls + '-slide-up', {\n appear: false,\n afterLeave: this.animationEnd\n });\n return closed ? null : h(\n 'transition',\n transitionProps,\n [h(\n 'div',\n {\n directives: [{\n name: 'show',\n value: !closing\n }],\n 'class': alertCls, attrs: { 'data-show': !closing }\n },\n [showIcon ? iconNode : null, h(\n 'span',\n { 'class': prefixCls + '-message' },\n [message]\n ), h(\n 'span',\n { 'class': prefixCls + '-description' },\n [description]\n ), closeIcon]\n )]\n );\n }\n};\n\n/* istanbul ignore next */\nAlert.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Alert.name, Alert);\n};\n\nexport default Alert;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Icon from '../icon';\nimport { getListeners, getComponentFromProp } from '../_util/props-util';\nimport PropTypes from '../_util/vue-types';\n\nexport default {\n name: 'AAvatar',\n props: {\n prefixCls: {\n type: String,\n 'default': undefined\n },\n shape: {\n validator: function validator(val) {\n return ['circle', 'square'].includes(val);\n },\n 'default': 'circle'\n },\n size: {\n validator: function validator(val) {\n return typeof val === 'number' || ['small', 'large', 'default'].includes(val);\n },\n 'default': 'default'\n },\n src: String,\n /** Srcset of image avatar */\n srcSet: String,\n icon: PropTypes.any,\n alt: String,\n loadError: Function\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n isImgExist: true,\n isMounted: false,\n scale: 1\n };\n },\n\n watch: {\n src: function src() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.isImgExist = true;\n _this.scale = 1;\n // force uodate for position\n _this.$forceUpdate();\n });\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setScale();\n _this2.isMounted = true;\n });\n },\n updated: function updated() {\n var _this3 = this;\n\n this.$nextTick(function () {\n _this3.setScale();\n });\n },\n\n methods: {\n setScale: function setScale() {\n if (!this.$refs.avatarChildren || !this.$refs.avatarNode) {\n return;\n }\n var childrenWidth = this.$refs.avatarChildren.offsetWidth; // offsetWidth avoid affecting be transform scale\n var nodeWidth = this.$refs.avatarNode.offsetWidth;\n // denominator is 0 is no meaning\n if (childrenWidth === 0 || nodeWidth === 0 || this.lastChildrenWidth === childrenWidth && this.lastNodeWidth === nodeWidth) {\n return;\n }\n this.lastChildrenWidth = childrenWidth;\n this.lastNodeWidth = nodeWidth;\n // add 4px gap for each side to get better performance\n this.scale = nodeWidth - 8 < childrenWidth ? (nodeWidth - 8) / childrenWidth : 1;\n },\n handleImgLoadError: function handleImgLoadError() {\n var loadError = this.$props.loadError;\n\n var errorFlag = loadError ? loadError() : undefined;\n if (errorFlag !== false) {\n this.isImgExist = false;\n }\n }\n },\n render: function render() {\n var _sizeCls, _extends3;\n\n var h = arguments[0];\n var _$props = this.$props,\n customizePrefixCls = _$props.prefixCls,\n shape = _$props.shape,\n size = _$props.size,\n src = _$props.src,\n alt = _$props.alt,\n srcSet = _$props.srcSet;\n\n var icon = getComponentFromProp(this, 'icon');\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('avatar', customizePrefixCls);\n\n var _$data = this.$data,\n isImgExist = _$data.isImgExist,\n scale = _$data.scale,\n isMounted = _$data.isMounted;\n\n\n var sizeCls = (_sizeCls = {}, _defineProperty(_sizeCls, prefixCls + '-lg', size === 'large'), _defineProperty(_sizeCls, prefixCls + '-sm', size === 'small'), _sizeCls);\n\n var classString = _extends(_defineProperty({}, prefixCls, true), sizeCls, (_extends3 = {}, _defineProperty(_extends3, prefixCls + '-' + shape, shape), _defineProperty(_extends3, prefixCls + '-image', src && isImgExist), _defineProperty(_extends3, prefixCls + '-icon', icon), _extends3));\n\n var sizeStyle = typeof size === 'number' ? {\n width: size + 'px',\n height: size + 'px',\n lineHeight: size + 'px',\n fontSize: icon ? size / 2 + 'px' : '18px'\n } : {};\n\n var children = this.$slots['default'];\n if (src && isImgExist) {\n children = h('img', {\n attrs: { src: src, srcSet: srcSet, alt: alt },\n on: {\n 'error': this.handleImgLoadError\n }\n });\n } else if (icon) {\n if (typeof icon === 'string') {\n children = h(Icon, {\n attrs: { type: icon }\n });\n } else {\n children = icon;\n }\n } else {\n var childrenNode = this.$refs.avatarChildren;\n if (childrenNode || scale !== 1) {\n var transformString = 'scale(' + scale + ') translateX(-50%)';\n var childrenStyle = {\n msTransform: transformString,\n WebkitTransform: transformString,\n transform: transformString\n };\n var sizeChildrenStyle = typeof size === 'number' ? {\n lineHeight: size + 'px'\n } : {};\n children = h(\n 'span',\n {\n 'class': prefixCls + '-string',\n ref: 'avatarChildren',\n style: _extends({}, sizeChildrenStyle, childrenStyle)\n },\n [children]\n );\n } else {\n var _childrenStyle = {};\n if (!isMounted) {\n _childrenStyle.opacity = 0;\n }\n children = h(\n 'span',\n { 'class': prefixCls + '-string', ref: 'avatarChildren', style: { opacity: 0 } },\n [children]\n );\n }\n }\n return h(\n 'span',\n _mergeJSXProps([{ ref: 'avatarNode' }, { on: getListeners(this), 'class': classString, style: sizeStyle }]),\n [children]\n );\n }\n};","import Avatar from './Avatar';\nimport Base from '../base';\n\n/* istanbul ignore next */\nAvatar.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Avatar.name, Avatar);\n};\n\nexport default Avatar;","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport getScroll from '../_util/getScroll';\nimport BaseMixin from '../_util/BaseMixin';\nimport getTransitionProps from '../_util/getTransitionProps';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\nimport { getListeners } from '../_util/props-util';\nimport scrollTo from '../_util/scrollTo';\n\nfunction getDefaultTarget() {\n return window;\n}\n\nvar BackTopProps = {\n visibilityHeight: PropTypes.number,\n // onClick?: React.MouseEventHandler;\n target: PropTypes.func,\n prefixCls: PropTypes.string\n // visible: PropTypes.bool, // Only for test. Don't use it.\n};\n\nvar BackTop = {\n name: 'ABackTop',\n mixins: [BaseMixin],\n props: _extends({}, BackTopProps, {\n visibilityHeight: PropTypes.number.def(400)\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n this.scrollEvent = null;\n return {\n visible: false\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n var getTarget = _this.target || getDefaultTarget;\n _this.scrollEvent = addEventListener(getTarget(), 'scroll', _this.handleScroll);\n _this.handleScroll();\n });\n },\n activated: function activated() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.handleScroll();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.scrollEvent) {\n this.scrollEvent.remove();\n }\n },\n\n methods: {\n getCurrentScrollTop: function getCurrentScrollTop() {\n var getTarget = this.target || getDefaultTarget;\n var targetNode = getTarget();\n if (targetNode === window) {\n return window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n }\n return targetNode.scrollTop;\n },\n scrollToTop: function scrollToTop(e) {\n var _target = this.target,\n target = _target === undefined ? getDefaultTarget : _target;\n\n scrollTo(0, {\n getContainer: target\n });\n this.$emit('click', e);\n },\n handleScroll: function handleScroll() {\n var visibilityHeight = this.visibilityHeight,\n _target2 = this.target,\n target = _target2 === undefined ? getDefaultTarget : _target2;\n\n var scrollTop = getScroll(target(), true);\n this.setState({\n visible: scrollTop > visibilityHeight\n });\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n $slots = this.$slots;\n\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('back-top', customizePrefixCls);\n\n var defaultElement = h(\n 'div',\n { 'class': prefixCls + '-content' },\n [h('div', { 'class': prefixCls + '-icon' })]\n );\n var divProps = {\n on: _extends({}, getListeners(this), {\n click: this.scrollToTop\n }),\n 'class': prefixCls\n };\n\n var backTopBtn = this.visible ? h(\n 'div',\n divProps,\n [$slots['default'] || defaultElement]\n ) : null;\n var transitionProps = getTransitionProps('fade');\n return h(\n 'transition',\n transitionProps,\n [backTopBtn]\n );\n }\n};\n\n/* istanbul ignore next */\nBackTop.install = function (Vue) {\n Vue.use(Base);\n Vue.component(BackTop.name, BackTop);\n};\n\nexport default BackTop;","import _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getStyle } from '../_util/props-util';\nimport omit from 'omit.js';\nimport { cloneElement } from '../_util/vnode';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nfunction getNumberArray(num) {\n return num ? num.toString().split('').reverse().map(function (i) {\n var current = Number(i);\n return isNaN(current) ? i : current;\n }) : [];\n}\n\nvar ScrollNumberProps = {\n prefixCls: PropTypes.string,\n count: PropTypes.any,\n component: PropTypes.string,\n title: PropTypes.oneOfType([PropTypes.number, PropTypes.string, null]),\n displayComponent: PropTypes.any,\n className: PropTypes.object\n};\n\nexport default {\n mixins: [BaseMixin],\n props: ScrollNumberProps,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n animateStarted: true,\n sCount: this.count\n };\n },\n\n watch: {\n count: function count() {\n this.lastCount = this.sCount;\n this.setState({\n animateStarted: true\n });\n }\n },\n updated: function updated() {\n var _this = this;\n\n var animateStarted = this.animateStarted,\n count = this.count;\n\n if (animateStarted) {\n this.clearTimeout();\n // Let browser has time to reset the scroller before actually\n // performing the transition.\n this.timeout = setTimeout(function () {\n _this.setState({\n animateStarted: false,\n sCount: count\n }, _this.onAnimated);\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.clearTimeout();\n },\n\n methods: {\n clearTimeout: function (_clearTimeout) {\n function clearTimeout() {\n return _clearTimeout.apply(this, arguments);\n }\n\n clearTimeout.toString = function () {\n return _clearTimeout.toString();\n };\n\n return clearTimeout;\n }(function () {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n }),\n getPositionByNum: function getPositionByNum(num, i) {\n var sCount = this.sCount;\n\n var currentCount = Math.abs(Number(sCount));\n var lastCount = Math.abs(Number(this.lastCount));\n var currentDigit = Math.abs(getNumberArray(sCount)[i]);\n var lastDigit = Math.abs(getNumberArray(this.lastCount)[i]);\n\n if (this.animateStarted) {\n return 10 + num;\n }\n // 同方向则在同一侧切换数字\n if (currentCount > lastCount) {\n if (currentDigit >= lastDigit) {\n return 10 + num;\n }\n return 20 + num;\n }\n if (currentDigit <= lastDigit) {\n return 10 + num;\n }\n return num;\n },\n onAnimated: function onAnimated() {\n this.$emit('animated');\n },\n renderNumberList: function renderNumberList(position, className) {\n var h = this.$createElement;\n\n var childrenToReturn = [];\n for (var i = 0; i < 30; i++) {\n childrenToReturn.push(h(\n 'p',\n {\n key: i.toString(),\n 'class': classNames(className, {\n current: position === i\n })\n },\n [i % 10]\n ));\n }\n\n return childrenToReturn;\n },\n renderCurrentNumber: function renderCurrentNumber(prefixCls, num, i) {\n var h = this.$createElement;\n\n if (typeof num === 'number') {\n var position = this.getPositionByNum(num, i);\n var removeTransition = this.animateStarted || getNumberArray(this.lastCount)[i] === undefined;\n var style = {\n transition: removeTransition ? 'none' : undefined,\n msTransform: 'translateY(' + -position * 100 + '%)',\n WebkitTransform: 'translateY(' + -position * 100 + '%)',\n transform: 'translateY(' + -position * 100 + '%)'\n };\n return h(\n 'span',\n { 'class': prefixCls + '-only', style: style, key: i },\n [this.renderNumberList(position, prefixCls + '-only-unit')]\n );\n }\n return h(\n 'span',\n { key: 'symbol', 'class': prefixCls + '-symbol' },\n [num]\n );\n },\n renderNumberElement: function renderNumberElement(prefixCls) {\n var _this2 = this;\n\n var sCount = this.sCount;\n\n if (sCount && Number(sCount) % 1 === 0) {\n return getNumberArray(sCount).map(function (num, i) {\n return _this2.renderCurrentNumber(prefixCls, num, i);\n }).reverse();\n }\n return sCount;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n title = this.title,\n _component = this.component,\n Tag = _component === undefined ? 'sup' : _component,\n displayComponent = this.displayComponent,\n className = this.className;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('scroll-number', customizePrefixCls);\n if (displayComponent) {\n return cloneElement(displayComponent, {\n 'class': prefixCls + '-custom-component'\n });\n }\n var style = getStyle(this, true);\n // fix https://fb.me/react-unknown-prop\n var restProps = omit(this.$props, ['count', 'component', 'prefixCls', 'displayComponent']);\n var newProps = {\n props: _extends({}, restProps),\n attrs: {\n title: title\n },\n style: style,\n 'class': classNames(prefixCls, className)\n };\n // allow specify the border\n // mock border-color by box-shadow for compatible with old usage:\n // \n if (style && style.borderColor) {\n newProps.style.boxShadow = '0 0 0 1px ' + style.borderColor + ' inset';\n }\n\n return h(\n Tag,\n newProps,\n [this.renderNumberElement(prefixCls)]\n );\n }\n};","// https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead\nexport var tuple = function tuple() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return args;\n};\n\nexport var tupleNum = function tupleNum() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return args;\n};","import { tuple } from './type';\n\nexport var PresetColorTypes = tuple('pink', 'red', 'yellow', 'orange', 'cyan', 'green', 'blue', 'purple', 'geekblue', 'magenta', 'volcano', 'gold', 'lime');","var isNumeric = function isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value);\n};\nexport default isNumeric;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport ScrollNumber from './ScrollNumber';\nimport { PresetColorTypes } from '../_util/colors';\nimport classNames from 'classnames';\nimport { initDefaultProps, filterEmpty, getComponentFromProp, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport getTransitionProps from '../_util/getTransitionProps';\nimport isNumeric from '../_util/isNumeric';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nvar BadgeProps = {\n /** Number to show in badge */\n count: PropTypes.any,\n showZero: PropTypes.bool,\n /** Max count to show */\n overflowCount: PropTypes.number,\n /** whether to show red dot without number */\n dot: PropTypes.bool,\n prefixCls: PropTypes.string,\n scrollNumberPrefixCls: PropTypes.string,\n status: PropTypes.oneOf(['success', 'processing', 'default', 'error', 'warning']),\n color: PropTypes.string,\n text: PropTypes.string,\n offset: PropTypes.array,\n numberStyle: PropTypes.object.def(function () {\n return {};\n }),\n title: PropTypes.string\n};\nfunction isPresetColor(color) {\n return PresetColorTypes.indexOf(color) !== -1;\n}\nexport default {\n name: 'ABadge',\n props: initDefaultProps(BadgeProps, {\n showZero: false,\n dot: false,\n overflowCount: 99\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n getNumberedDispayCount: function getNumberedDispayCount() {\n var overflowCount = this.$props.overflowCount;\n\n var count = this.badgeCount;\n var displayCount = count > overflowCount ? overflowCount + '+' : count;\n return displayCount;\n },\n getDispayCount: function getDispayCount() {\n var isDot = this.isDot();\n // dot mode don't need count\n if (isDot) {\n return '';\n }\n return this.getNumberedDispayCount();\n },\n getScrollNumberTitle: function getScrollNumberTitle() {\n var title = this.$props.title;\n\n var count = this.badgeCount;\n if (title) {\n return title;\n }\n return typeof count === 'string' || typeof count === 'number' ? count : undefined;\n },\n getStyleWithOffset: function getStyleWithOffset() {\n var _$props = this.$props,\n offset = _$props.offset,\n numberStyle = _$props.numberStyle;\n\n return offset ? _extends({\n right: -parseInt(offset[0], 10) + 'px',\n marginTop: isNumeric(offset[1]) ? offset[1] + 'px' : offset[1]\n }, numberStyle) : _extends({}, numberStyle);\n },\n getBadgeClassName: function getBadgeClassName(prefixCls) {\n var _classNames;\n\n var children = filterEmpty(this.$slots['default']);\n var hasStatus = this.hasStatus();\n return classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-status', hasStatus), _defineProperty(_classNames, prefixCls + '-dot-status', hasStatus && this.dot && !this.isZero()), _defineProperty(_classNames, prefixCls + '-not-a-wrapper', !children.length), _classNames));\n },\n hasStatus: function hasStatus() {\n var _$props2 = this.$props,\n status = _$props2.status,\n color = _$props2.color;\n\n return !!status || !!color;\n },\n isZero: function isZero() {\n var numberedDispayCount = this.getNumberedDispayCount();\n return numberedDispayCount === '0' || numberedDispayCount === 0;\n },\n isDot: function isDot() {\n var dot = this.$props.dot;\n\n var isZero = this.isZero();\n return dot && !isZero || this.hasStatus();\n },\n isHidden: function isHidden() {\n var showZero = this.$props.showZero;\n\n var displayCount = this.getDispayCount();\n var isZero = this.isZero();\n var isDot = this.isDot();\n var isEmpty = displayCount === null || displayCount === undefined || displayCount === '';\n return (isEmpty || isZero && !showZero) && !isDot;\n },\n renderStatusText: function renderStatusText(prefixCls) {\n var h = this.$createElement;\n var text = this.$props.text;\n\n var hidden = this.isHidden();\n return hidden || !text ? null : h(\n 'span',\n { 'class': prefixCls + '-status-text' },\n [text]\n );\n },\n renderDispayComponent: function renderDispayComponent() {\n var count = this.badgeCount;\n var customNode = count;\n if (!customNode || (typeof customNode === 'undefined' ? 'undefined' : _typeof(customNode)) !== 'object') {\n return undefined;\n }\n return cloneElement(customNode, {\n style: this.getStyleWithOffset()\n });\n },\n renderBadgeNumber: function renderBadgeNumber(prefixCls, scrollNumberPrefixCls) {\n var _scrollNumberCls;\n\n var h = this.$createElement;\n var _$props3 = this.$props,\n status = _$props3.status,\n color = _$props3.color;\n\n var count = this.badgeCount;\n var displayCount = this.getDispayCount();\n var isDot = this.isDot();\n var hidden = this.isHidden();\n\n var scrollNumberCls = (_scrollNumberCls = {}, _defineProperty(_scrollNumberCls, prefixCls + '-dot', isDot), _defineProperty(_scrollNumberCls, prefixCls + '-count', !isDot), _defineProperty(_scrollNumberCls, prefixCls + '-multiple-words', !isDot && count && count.toString && count.toString().length > 1), _defineProperty(_scrollNumberCls, prefixCls + '-status-' + status, !!status), _defineProperty(_scrollNumberCls, prefixCls + '-status-' + color, isPresetColor(color)), _scrollNumberCls);\n\n var statusStyle = this.getStyleWithOffset();\n if (color && !isPresetColor(color)) {\n statusStyle = statusStyle || {};\n statusStyle.background = color;\n }\n\n return hidden ? null : h(ScrollNumber, {\n attrs: {\n prefixCls: scrollNumberPrefixCls,\n 'data-show': !hidden,\n\n className: scrollNumberCls,\n count: displayCount,\n displayComponent: this.renderDispayComponent() // }>\n , title: this.getScrollNumberTitle()\n },\n directives: [{\n name: 'show',\n value: !hidden\n }],\n style: statusStyle,\n key: 'scrollNumber'\n });\n }\n },\n\n render: function render() {\n var _classNames2;\n\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n customizeScrollNumberPrefixCls = this.scrollNumberPrefixCls,\n status = this.status,\n text = this.text,\n color = this.color,\n $slots = this.$slots;\n\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('badge', customizePrefixCls);\n var scrollNumberPrefixCls = getPrefixCls('scroll-number', customizeScrollNumberPrefixCls);\n\n var children = filterEmpty($slots['default']);\n var count = getComponentFromProp(this, 'count');\n if (Array.isArray(count)) {\n count = count[0];\n }\n this.badgeCount = count;\n var scrollNumber = this.renderBadgeNumber(prefixCls, scrollNumberPrefixCls);\n var statusText = this.renderStatusText(prefixCls);\n var statusCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, prefixCls + '-status-dot', this.hasStatus()), _defineProperty(_classNames2, prefixCls + '-status-' + status, !!status), _defineProperty(_classNames2, prefixCls + '-status-' + color, isPresetColor(color)), _classNames2));\n var statusStyle = {};\n if (color && !isPresetColor(color)) {\n statusStyle.background = color;\n }\n // \n if (!children.length && this.hasStatus()) {\n var styleWithOffset = this.getStyleWithOffset();\n var statusTextColor = styleWithOffset && styleWithOffset.color;\n return h(\n 'span',\n _mergeJSXProps([{ on: getListeners(this) }, {\n 'class': this.getBadgeClassName(prefixCls),\n style: styleWithOffset\n }]),\n [h('span', { 'class': statusCls, style: statusStyle }), h(\n 'span',\n { style: { color: statusTextColor }, 'class': prefixCls + '-status-text' },\n [text]\n )]\n );\n }\n\n var transitionProps = getTransitionProps(children.length ? prefixCls + '-zoom' : '');\n\n return h(\n 'span',\n _mergeJSXProps([{ on: getListeners(this) }, { 'class': this.getBadgeClassName(prefixCls) }]),\n [children, h(\n 'transition',\n transitionProps,\n [scrollNumber]\n ), statusText]\n );\n }\n};","import Badge from './Badge';\nimport Base from '../base';\n\n/* istanbul ignore next */\nBadge.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Badge.name, Badge);\n};\n\nexport default Badge;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\n\nvar targetOffset = [0, 0];\n\nexport var placements = {\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topCenter: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomCenter: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n }\n};\n\nexport default placements;","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport PropTypes from '../../_util/vue-types';\nimport Trigger from '../../vc-trigger';\nimport placements from './placements';\nimport { hasProp, getEvents, getOptionProps } from '../../_util/props-util';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { cloneElement } from '../../_util/vnode';\n\nexport default {\n mixins: [BaseMixin],\n props: {\n minOverlayWidthMatchTrigger: PropTypes.bool,\n prefixCls: PropTypes.string.def('rc-dropdown'),\n transitionName: PropTypes.string,\n overlayClassName: PropTypes.string.def(''),\n openClassName: PropTypes.string,\n animation: PropTypes.any,\n align: PropTypes.object,\n overlayStyle: PropTypes.object.def(function () {\n return {};\n }),\n placement: PropTypes.string.def('bottomLeft'),\n overlay: PropTypes.any,\n trigger: PropTypes.array.def(['hover']),\n alignPoint: PropTypes.bool,\n showAction: PropTypes.array.def([]),\n hideAction: PropTypes.array.def([]),\n getPopupContainer: PropTypes.func,\n visible: PropTypes.bool,\n defaultVisible: PropTypes.bool.def(false),\n mouseEnterDelay: PropTypes.number.def(0.15),\n mouseLeaveDelay: PropTypes.number.def(0.1)\n },\n data: function data() {\n var sVisible = this.defaultVisible;\n if (hasProp(this, 'visible')) {\n sVisible = this.visible;\n }\n return {\n sVisible: sVisible\n };\n },\n\n watch: {\n visible: function visible(val) {\n if (val !== undefined) {\n this.setState({\n sVisible: val\n });\n }\n }\n },\n methods: {\n onClick: function onClick(e) {\n // do no call onVisibleChange, if you need click to hide, use onClick and control visible\n if (!hasProp(this, 'visible')) {\n this.setState({\n sVisible: false\n });\n }\n this.$emit('overlayClick', e);\n if (this.childOriginEvents.click) {\n this.childOriginEvents.click(e);\n }\n },\n onVisibleChange: function onVisibleChange(visible) {\n if (!hasProp(this, 'visible')) {\n this.setState({\n sVisible: visible\n });\n }\n this.__emit('visibleChange', visible);\n },\n getMinOverlayWidthMatchTrigger: function getMinOverlayWidthMatchTrigger() {\n var props = getOptionProps(this);\n var minOverlayWidthMatchTrigger = props.minOverlayWidthMatchTrigger,\n alignPoint = props.alignPoint;\n\n if ('minOverlayWidthMatchTrigger' in props) {\n return minOverlayWidthMatchTrigger;\n }\n\n return !alignPoint;\n },\n getOverlayElement: function getOverlayElement() {\n var overlay = this.overlay || this.$slots.overlay || this.$scopedSlots.overlay;\n var overlayElement = void 0;\n if (typeof overlay === 'function') {\n overlayElement = overlay();\n } else {\n overlayElement = overlay;\n }\n return overlayElement;\n },\n getMenuElement: function getMenuElement() {\n var _this = this;\n\n var onClick = this.onClick,\n prefixCls = this.prefixCls,\n $slots = this.$slots;\n\n this.childOriginEvents = getEvents($slots.overlay[0]);\n var overlayElement = this.getOverlayElement();\n var extraOverlayProps = {\n props: {\n prefixCls: prefixCls + '-menu',\n getPopupContainer: function getPopupContainer() {\n return _this.getPopupDomNode();\n }\n },\n on: {\n click: onClick\n }\n };\n if (typeof overlayElement.type === 'string') {\n delete extraOverlayProps.props.prefixCls;\n }\n return cloneElement($slots.overlay[0], extraOverlayProps);\n },\n getMenuElementOrLambda: function getMenuElementOrLambda() {\n var overlay = this.overlay || this.$slots.overlay || this.$scopedSlots.overlay;\n if (typeof overlay === 'function') {\n return this.getMenuElement;\n }\n return this.getMenuElement();\n },\n getPopupDomNode: function getPopupDomNode() {\n return this.$refs.trigger.getPopupDomNode();\n },\n getOpenClassName: function getOpenClassName() {\n var _$props = this.$props,\n openClassName = _$props.openClassName,\n prefixCls = _$props.prefixCls;\n\n if (openClassName !== undefined) {\n return openClassName;\n }\n return prefixCls + '-open';\n },\n afterVisibleChange: function afterVisibleChange(visible) {\n if (visible && this.getMinOverlayWidthMatchTrigger()) {\n var overlayNode = this.getPopupDomNode();\n var rootNode = this.$el;\n if (rootNode && overlayNode && rootNode.offsetWidth > overlayNode.offsetWidth) {\n overlayNode.style.minWidth = rootNode.offsetWidth + 'px';\n if (this.$refs.trigger && this.$refs.trigger._component && this.$refs.trigger._component.$refs && this.$refs.trigger._component.$refs.alignInstance) {\n this.$refs.trigger._component.$refs.alignInstance.forceAlign();\n }\n }\n }\n },\n renderChildren: function renderChildren() {\n var children = this.$slots['default'] && this.$slots['default'][0];\n var sVisible = this.sVisible;\n\n return sVisible && children ? cloneElement(children, { 'class': this.getOpenClassName() }) : children;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var _$props2 = this.$props,\n prefixCls = _$props2.prefixCls,\n transitionName = _$props2.transitionName,\n animation = _$props2.animation,\n align = _$props2.align,\n placement = _$props2.placement,\n getPopupContainer = _$props2.getPopupContainer,\n showAction = _$props2.showAction,\n hideAction = _$props2.hideAction,\n overlayClassName = _$props2.overlayClassName,\n overlayStyle = _$props2.overlayStyle,\n trigger = _$props2.trigger,\n otherProps = _objectWithoutProperties(_$props2, ['prefixCls', 'transitionName', 'animation', 'align', 'placement', 'getPopupContainer', 'showAction', 'hideAction', 'overlayClassName', 'overlayStyle', 'trigger']);\n\n var triggerHideAction = hideAction;\n if (!triggerHideAction && trigger.indexOf('contextmenu') !== -1) {\n triggerHideAction = ['click'];\n }\n\n var triggerProps = {\n props: _extends({}, otherProps, {\n prefixCls: prefixCls,\n popupClassName: overlayClassName,\n popupStyle: overlayStyle,\n builtinPlacements: placements,\n action: trigger,\n showAction: showAction,\n hideAction: triggerHideAction || [],\n popupPlacement: placement,\n popupAlign: align,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n popupVisible: this.sVisible,\n afterPopupVisibleChange: this.afterVisibleChange,\n getPopupContainer: getPopupContainer\n }),\n on: {\n popupVisibleChange: this.onVisibleChange\n },\n ref: 'trigger'\n };\n return h(\n Trigger,\n triggerProps,\n [this.renderChildren(), h(\n 'template',\n { slot: 'popup' },\n [this.$slots.overlay && this.getMenuElement()]\n )]\n );\n }\n};","// base in 2.4.1\nimport Dropdown from './Dropdown';\nexport default Dropdown;","import PropTypes from '../_util/vue-types';\nexport default (function () {\n return {\n trigger: PropTypes.array.def(['hover']),\n overlay: PropTypes.any,\n visible: PropTypes.bool,\n disabled: PropTypes.bool,\n align: PropTypes.object,\n getPopupContainer: PropTypes.func,\n prefixCls: PropTypes.string,\n transitionName: PropTypes.string,\n placement: PropTypes.oneOf(['topLeft', 'topCenter', 'topRight', 'bottomLeft', 'bottomCenter', 'bottomRight']),\n overlayClassName: PropTypes.string,\n overlayStyle: PropTypes.object,\n forceRender: PropTypes.bool,\n mouseEnterDelay: PropTypes.number,\n mouseLeaveDelay: PropTypes.number,\n openClassName: PropTypes.string,\n minOverlayWidthMatchTrigger: PropTypes.bool\n };\n});","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport Button from '../button';\nimport buttonTypes from '../button/buttonTypes';\nimport { ButtonGroupProps } from '../button/button-group';\nimport Dropdown from './dropdown';\nimport PropTypes from '../_util/vue-types';\nimport { hasProp, getComponentFromProp } from '../_util/props-util';\nimport getDropdownProps from './getDropdownProps';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Icon from '../icon';\n\nvar ButtonTypesProps = buttonTypes();\nvar DropdownProps = getDropdownProps();\nvar ButtonGroup = Button.Group;\nvar DropdownButtonProps = _extends({}, ButtonGroupProps, DropdownProps, {\n type: PropTypes.oneOf(['primary', 'ghost', 'dashed', 'danger', 'default']).def('default'),\n size: PropTypes.oneOf(['small', 'large', 'default']).def('default'),\n htmlType: ButtonTypesProps.htmlType,\n href: PropTypes.string,\n disabled: PropTypes.bool,\n prefixCls: PropTypes.string,\n placement: DropdownProps.placement.def('bottomRight'),\n icon: PropTypes.any,\n title: PropTypes.string\n});\nexport { DropdownButtonProps };\nexport default {\n name: 'ADropdownButton',\n model: {\n prop: 'visible',\n event: 'visibleChange'\n },\n props: DropdownButtonProps,\n provide: function provide() {\n return {\n savePopupRef: this.savePopupRef\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n savePopupRef: function savePopupRef(ref) {\n this.popupRef = ref;\n },\n onClick: function onClick(e) {\n this.$emit('click', e);\n },\n onVisibleChange: function onVisibleChange(val) {\n this.$emit('visibleChange', val);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var _$props = this.$props,\n type = _$props.type,\n disabled = _$props.disabled,\n htmlType = _$props.htmlType,\n customizePrefixCls = _$props.prefixCls,\n trigger = _$props.trigger,\n align = _$props.align,\n visible = _$props.visible,\n placement = _$props.placement,\n getPopupContainer = _$props.getPopupContainer,\n href = _$props.href,\n title = _$props.title,\n restProps = _objectWithoutProperties(_$props, ['type', 'disabled', 'htmlType', 'prefixCls', 'trigger', 'align', 'visible', 'placement', 'getPopupContainer', 'href', 'title']);\n\n var icon = getComponentFromProp(this, 'icon') || h(Icon, {\n attrs: { type: 'ellipsis' }\n });\n var getContextPopupContainer = this.configProvider.getPopupContainer;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('dropdown-button', customizePrefixCls);\n var dropdownProps = {\n props: {\n align: align,\n disabled: disabled,\n trigger: disabled ? [] : trigger,\n placement: placement,\n getPopupContainer: getPopupContainer || getContextPopupContainer\n },\n on: {\n visibleChange: this.onVisibleChange\n }\n };\n if (hasProp(this, 'visible')) {\n dropdownProps.props.visible = visible;\n }\n\n var buttonGroupProps = {\n props: _extends({}, restProps),\n 'class': prefixCls\n };\n\n return h(\n ButtonGroup,\n buttonGroupProps,\n [h(\n Button,\n {\n attrs: {\n type: type,\n disabled: disabled,\n\n htmlType: htmlType,\n href: href,\n title: title\n },\n on: {\n 'click': this.onClick\n }\n },\n [this.$slots['default']]\n ), h(\n Dropdown,\n dropdownProps,\n [h(\n 'template',\n { slot: 'overlay' },\n [getComponentFromProp(this, 'overlay')]\n ), h(\n Button,\n {\n attrs: { type: type }\n },\n [icon]\n )]\n )]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport RcDropdown from '../vc-dropdown/src/index';\nimport DropdownButton from './dropdown-button';\nimport PropTypes from '../_util/vue-types';\nimport { cloneElement } from '../_util/vnode';\nimport { getOptionProps, getPropsData, getComponentFromProp, getListeners } from '../_util/props-util';\nimport getDropdownProps from './getDropdownProps';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Icon from '../icon';\n\nvar DropdownProps = getDropdownProps();\nvar Dropdown = {\n name: 'ADropdown',\n props: _extends({}, DropdownProps, {\n prefixCls: PropTypes.string,\n mouseEnterDelay: PropTypes.number.def(0.15),\n mouseLeaveDelay: PropTypes.number.def(0.1),\n placement: DropdownProps.placement.def('bottomLeft')\n }),\n model: {\n prop: 'visible',\n event: 'visibleChange'\n },\n provide: function provide() {\n return {\n savePopupRef: this.savePopupRef\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n savePopupRef: function savePopupRef(ref) {\n this.popupRef = ref;\n },\n getTransitionName: function getTransitionName() {\n var _$props = this.$props,\n _$props$placement = _$props.placement,\n placement = _$props$placement === undefined ? '' : _$props$placement,\n transitionName = _$props.transitionName;\n\n if (transitionName !== undefined) {\n return transitionName;\n }\n if (placement.indexOf('top') >= 0) {\n return 'slide-down';\n }\n return 'slide-up';\n },\n renderOverlay: function renderOverlay(prefixCls) {\n var h = this.$createElement;\n\n var overlay = getComponentFromProp(this, 'overlay');\n var overlayNode = Array.isArray(overlay) ? overlay[0] : overlay;\n // menu cannot be selectable in dropdown defaultly\n // menu should be focusable in dropdown defaultly\n var overlayProps = overlayNode && getPropsData(overlayNode);\n\n var _ref = overlayProps || {},\n _ref$selectable = _ref.selectable,\n selectable = _ref$selectable === undefined ? false : _ref$selectable,\n _ref$focusable = _ref.focusable,\n focusable = _ref$focusable === undefined ? true : _ref$focusable;\n\n var expandIcon = h(\n 'span',\n { 'class': prefixCls + '-menu-submenu-arrow' },\n [h(Icon, {\n attrs: { type: 'right' },\n 'class': prefixCls + '-menu-submenu-arrow-icon' })]\n );\n\n var fixedModeOverlay = overlayNode && overlayNode.componentOptions ? cloneElement(overlayNode, {\n props: {\n mode: 'vertical',\n selectable: selectable,\n focusable: focusable,\n expandIcon: expandIcon\n }\n }) : overlay;\n return fixedModeOverlay;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var $slots = this.$slots;\n\n var props = getOptionProps(this);\n var customizePrefixCls = props.prefixCls,\n trigger = props.trigger,\n disabled = props.disabled,\n getPopupContainer = props.getPopupContainer;\n var getContextPopupContainer = this.configProvider.getPopupContainer;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('dropdown', customizePrefixCls);\n\n var dropdownTrigger = cloneElement($slots['default'], {\n 'class': prefixCls + '-trigger',\n props: {\n disabled: disabled\n }\n });\n var triggerActions = disabled ? [] : trigger;\n var alignPoint = void 0;\n if (triggerActions && triggerActions.indexOf('contextmenu') !== -1) {\n alignPoint = true;\n }\n var dropdownProps = {\n props: _extends({\n alignPoint: alignPoint\n }, props, {\n prefixCls: prefixCls,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n transitionName: this.getTransitionName(),\n trigger: triggerActions\n }),\n on: getListeners(this)\n };\n return h(\n RcDropdown,\n dropdownProps,\n [dropdownTrigger, h(\n 'template',\n { slot: 'overlay' },\n [this.renderOverlay(prefixCls)]\n )]\n );\n }\n};\n\nDropdown.Button = DropdownButton;\nexport default Dropdown;\nexport { DropdownProps };","import PropTypes from '../_util/vue-types';\nimport { hasProp, getComponentFromProp } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport DropDown from '../dropdown/dropdown';\nimport Icon from '../icon';\n\nexport default {\n name: 'ABreadcrumbItem',\n __ANT_BREADCRUMB_ITEM: true,\n props: {\n prefixCls: PropTypes.string,\n href: PropTypes.string,\n separator: PropTypes.any.def('/'),\n overlay: PropTypes.any\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n /**\n * if overlay is have\n * Wrap a DropDown\n */\n renderBreadcrumbNode: function renderBreadcrumbNode(breadcrumbItem, prefixCls) {\n var h = this.$createElement;\n\n var overlay = getComponentFromProp(this, 'overlay');\n if (overlay) {\n return h(\n DropDown,\n {\n attrs: { overlay: overlay, placement: 'bottomCenter' }\n },\n [h(\n 'span',\n { 'class': prefixCls + '-overlay-link' },\n [breadcrumbItem, h(Icon, {\n attrs: { type: 'down' }\n })]\n )]\n );\n }\n return breadcrumbItem;\n }\n },\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n $slots = this.$slots;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);\n var separator = getComponentFromProp(this, 'separator');\n var children = $slots['default'];\n var link = void 0;\n if (hasProp(this, 'href')) {\n link = h(\n 'a',\n { 'class': prefixCls + '-link' },\n [children]\n );\n } else {\n link = h(\n 'span',\n { 'class': prefixCls + '-link' },\n [children]\n );\n }\n // wrap to dropDown\n link = this.renderBreadcrumbNode(link, prefixCls);\n if (children) {\n return h('span', [link, separator && separator !== '' && h(\n 'span',\n { 'class': prefixCls + '-separator' },\n [separator]\n )]);\n }\n return null;\n }\n};","export default {\n name: 'MenuDivider',\n props: {\n disabled: {\n type: Boolean,\n 'default': true\n },\n rootPrefixCls: String\n },\n render: function render() {\n var h = arguments[0];\n var rootPrefixCls = this.$props.rootPrefixCls;\n\n return h('li', { 'class': rootPrefixCls + '-item-divider' });\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport { SubMenu as VcSubMenu } from '../vc-menu';\nimport { getListeners } from '../_util/props-util';\nimport classNames from 'classnames';\n\nexport default {\n name: 'ASubMenu',\n isSubMenu: true,\n props: _extends({}, VcSubMenu.props),\n inject: {\n menuPropsContext: { 'default': function _default() {\n return {};\n } }\n },\n methods: {\n onKeyDown: function onKeyDown(e) {\n this.$refs.subMenu.onKeyDown(e);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var $slots = this.$slots,\n $scopedSlots = this.$scopedSlots;\n var _$props = this.$props,\n rootPrefixCls = _$props.rootPrefixCls,\n popupClassName = _$props.popupClassName;\n var antdMenuTheme = this.menuPropsContext.theme;\n\n var props = {\n props: _extends({}, this.$props, {\n popupClassName: classNames(rootPrefixCls + '-' + antdMenuTheme, popupClassName)\n }),\n ref: 'subMenu',\n on: getListeners(this),\n scopedSlots: $scopedSlots\n };\n var slotsKey = Object.keys($slots);\n return h(\n VcSubMenu,\n props,\n [slotsKey.length ? slotsKey.map(function (name) {\n return h(\n 'template',\n { slot: name },\n [$slots[name]]\n );\n }) : null]\n );\n }\n};","import cssAnimation from './css-animation';\nimport raf from 'raf';\nimport Vue from 'vue';\n\nfunction animate(node, show, done) {\n var height = void 0;\n var requestAnimationFrameId = void 0;\n var appearRequestAnimationFrameId = void 0;\n return cssAnimation(node, 'ant-motion-collapse-legacy', {\n start: function start() {\n if (appearRequestAnimationFrameId) {\n raf.cancel(appearRequestAnimationFrameId);\n }\n if (!show) {\n node.style.height = node.offsetHeight + 'px';\n node.style.opacity = '1';\n } else {\n height = node.offsetHeight;\n // not get offsetHeight when appear\n // set it into raf get correct offsetHeight\n if (height === 0) {\n appearRequestAnimationFrameId = raf(function () {\n height = node.offsetHeight;\n node.style.height = '0px';\n node.style.opacity = '0';\n });\n } else {\n node.style.height = '0px';\n node.style.opacity = '0';\n }\n }\n },\n active: function active() {\n if (requestAnimationFrameId) {\n raf.cancel(requestAnimationFrameId);\n }\n requestAnimationFrameId = raf(function () {\n node.style.height = (show ? height : 0) + 'px';\n node.style.opacity = show ? '1' : '0';\n });\n },\n end: function end() {\n if (appearRequestAnimationFrameId) {\n raf.cancel(appearRequestAnimationFrameId);\n }\n if (requestAnimationFrameId) {\n raf.cancel(requestAnimationFrameId);\n }\n node.style.height = '';\n node.style.opacity = '';\n done && done();\n }\n });\n}\n\nvar animation = {\n enter: function enter(node, done) {\n Vue.nextTick(function () {\n animate(node, true, done);\n });\n },\n leave: function leave(node, done) {\n return animate(node, false, done);\n }\n};\n\nexport default animation;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\n\nvar targetOffset = [0, 0];\n\nexport var placements = {\n left: {\n points: ['cr', 'cl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n right: {\n points: ['cl', 'cr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n top: {\n points: ['bc', 'tc'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n bottom: {\n points: ['tc', 'bc'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n topLeft: {\n points: ['bl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n leftTop: {\n points: ['tr', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -4],\n targetOffset: targetOffset\n },\n rightTop: {\n points: ['tl', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n rightBottom: {\n points: ['bl', 'br'],\n overflow: autoAdjustOverflow,\n offset: [4, 0],\n targetOffset: targetOffset\n },\n bottomLeft: {\n points: ['tl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 4],\n targetOffset: targetOffset\n },\n leftBottom: {\n points: ['br', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [-4, 0],\n targetOffset: targetOffset\n }\n};\n\nexport default placements;","import PropTypes from '../_util/vue-types';\n\nexport default {\n props: {\n prefixCls: PropTypes.string,\n overlay: PropTypes.any,\n trigger: PropTypes.any\n },\n updated: function updated() {\n var trigger = this.trigger;\n\n if (trigger) {\n trigger.forcePopupAlign();\n }\n },\n render: function render() {\n var h = arguments[0];\n var overlay = this.overlay,\n prefixCls = this.prefixCls;\n\n return h(\n 'div',\n { 'class': prefixCls + '-inner', attrs: { role: 'tooltip' }\n },\n [typeof overlay === 'function' ? overlay() : overlay]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport PropTypes from '../_util/vue-types';\nimport Trigger from '../vc-trigger';\nimport { placements } from './placements';\nimport Content from './Content';\nimport { hasProp, getComponentFromProp, getOptionProps, getListeners } from '../_util/props-util';\nfunction noop() {}\nexport default {\n props: {\n trigger: PropTypes.any.def(['hover']),\n defaultVisible: PropTypes.bool,\n visible: PropTypes.bool,\n placement: PropTypes.string.def('right'),\n transitionName: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n animation: PropTypes.any,\n afterVisibleChange: PropTypes.func.def(function () {}),\n overlay: PropTypes.any,\n overlayStyle: PropTypes.object,\n overlayClassName: PropTypes.string,\n prefixCls: PropTypes.string.def('rc-tooltip'),\n mouseEnterDelay: PropTypes.number.def(0),\n mouseLeaveDelay: PropTypes.number.def(0.1),\n getTooltipContainer: PropTypes.func,\n destroyTooltipOnHide: PropTypes.bool.def(false),\n align: PropTypes.object.def(function () {\n return {};\n }),\n arrowContent: PropTypes.any.def(null),\n tipId: PropTypes.string,\n builtinPlacements: PropTypes.object\n },\n methods: {\n getPopupElement: function getPopupElement() {\n var h = this.$createElement;\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n tipId = _$props.tipId;\n\n return [h(\n 'div',\n { 'class': prefixCls + '-arrow', key: 'arrow' },\n [getComponentFromProp(this, 'arrowContent')]\n ), h(Content, {\n key: 'content',\n attrs: { trigger: this.$refs.trigger,\n prefixCls: prefixCls,\n id: tipId,\n overlay: getComponentFromProp(this, 'overlay')\n }\n })];\n },\n getPopupDomNode: function getPopupDomNode() {\n return this.$refs.trigger.getPopupDomNode();\n }\n },\n render: function render(h) {\n var _getOptionProps = getOptionProps(this),\n overlayClassName = _getOptionProps.overlayClassName,\n trigger = _getOptionProps.trigger,\n mouseEnterDelay = _getOptionProps.mouseEnterDelay,\n mouseLeaveDelay = _getOptionProps.mouseLeaveDelay,\n overlayStyle = _getOptionProps.overlayStyle,\n prefixCls = _getOptionProps.prefixCls,\n afterVisibleChange = _getOptionProps.afterVisibleChange,\n transitionName = _getOptionProps.transitionName,\n animation = _getOptionProps.animation,\n placement = _getOptionProps.placement,\n align = _getOptionProps.align,\n destroyTooltipOnHide = _getOptionProps.destroyTooltipOnHide,\n defaultVisible = _getOptionProps.defaultVisible,\n getTooltipContainer = _getOptionProps.getTooltipContainer,\n restProps = _objectWithoutProperties(_getOptionProps, ['overlayClassName', 'trigger', 'mouseEnterDelay', 'mouseLeaveDelay', 'overlayStyle', 'prefixCls', 'afterVisibleChange', 'transitionName', 'animation', 'placement', 'align', 'destroyTooltipOnHide', 'defaultVisible', 'getTooltipContainer']);\n\n var extraProps = _extends({}, restProps);\n if (hasProp(this, 'visible')) {\n extraProps.popupVisible = this.$props.visible;\n }\n var listeners = getListeners(this);\n var triggerProps = {\n props: _extends({\n popupClassName: overlayClassName,\n prefixCls: prefixCls,\n action: trigger,\n builtinPlacements: placements,\n popupPlacement: placement,\n popupAlign: align,\n getPopupContainer: getTooltipContainer,\n afterPopupVisibleChange: afterVisibleChange,\n popupTransitionName: transitionName,\n popupAnimation: animation,\n defaultPopupVisible: defaultVisible,\n destroyPopupOnHide: destroyTooltipOnHide,\n mouseLeaveDelay: mouseLeaveDelay,\n popupStyle: overlayStyle,\n mouseEnterDelay: mouseEnterDelay\n }, extraProps),\n on: _extends({}, listeners, {\n popupVisibleChange: listeners.visibleChange || noop,\n popupAlign: listeners.popupAlign || noop\n }),\n ref: 'trigger'\n };\n return h(\n Trigger,\n triggerProps,\n [h(\n 'template',\n { slot: 'popup' },\n [this.getPopupElement(h)]\n ), this.$slots['default']]\n );\n }\n};","// based on rc-tooltip 3.7.3\nimport Tooltip from './Tooltip';\n\nexport default Tooltip;","import _extends from 'babel-runtime/helpers/extends';\nimport { placements as rcPlacements } from '../vc-tooltip/placements';\n\nvar autoAdjustOverflowEnabled = {\n adjustX: 1,\n adjustY: 1\n};\n\nvar autoAdjustOverflowDisabled = {\n adjustX: 0,\n adjustY: 0\n};\n\nvar targetOffset = [0, 0];\n\nexport function getOverflowOptions(autoAdjustOverflow) {\n if (typeof autoAdjustOverflow === 'boolean') {\n return autoAdjustOverflow ? autoAdjustOverflowEnabled : autoAdjustOverflowDisabled;\n }\n return _extends({}, autoAdjustOverflowDisabled, autoAdjustOverflow);\n}\n\nexport default function getPlacements(config) {\n var _config$arrowWidth = config.arrowWidth,\n arrowWidth = _config$arrowWidth === undefined ? 5 : _config$arrowWidth,\n _config$horizontalArr = config.horizontalArrowShift,\n horizontalArrowShift = _config$horizontalArr === undefined ? 16 : _config$horizontalArr,\n _config$verticalArrow = config.verticalArrowShift,\n verticalArrowShift = _config$verticalArrow === undefined ? 12 : _config$verticalArrow,\n _config$autoAdjustOve = config.autoAdjustOverflow,\n autoAdjustOverflow = _config$autoAdjustOve === undefined ? true : _config$autoAdjustOve;\n\n var placementMap = {\n left: {\n points: ['cr', 'cl'],\n offset: [-4, 0]\n },\n right: {\n points: ['cl', 'cr'],\n offset: [4, 0]\n },\n top: {\n points: ['bc', 'tc'],\n offset: [0, -4]\n },\n bottom: {\n points: ['tc', 'bc'],\n offset: [0, 4]\n },\n topLeft: {\n points: ['bl', 'tc'],\n offset: [-(horizontalArrowShift + arrowWidth), -4]\n },\n leftTop: {\n points: ['tr', 'cl'],\n offset: [-4, -(verticalArrowShift + arrowWidth)]\n },\n topRight: {\n points: ['br', 'tc'],\n offset: [horizontalArrowShift + arrowWidth, -4]\n },\n rightTop: {\n points: ['tl', 'cr'],\n offset: [4, -(verticalArrowShift + arrowWidth)]\n },\n bottomRight: {\n points: ['tr', 'bc'],\n offset: [horizontalArrowShift + arrowWidth, 4]\n },\n rightBottom: {\n points: ['bl', 'cr'],\n offset: [4, verticalArrowShift + arrowWidth]\n },\n bottomLeft: {\n points: ['tl', 'bc'],\n offset: [-(horizontalArrowShift + arrowWidth), 4]\n },\n leftBottom: {\n points: ['br', 'cl'],\n offset: [-4, verticalArrowShift + arrowWidth]\n }\n };\n Object.keys(placementMap).forEach(function (key) {\n placementMap[key] = config.arrowPointAtCenter ? _extends({}, placementMap[key], {\n overflow: getOverflowOptions(autoAdjustOverflow),\n targetOffset: targetOffset\n }) : _extends({}, rcPlacements[key], {\n overflow: getOverflowOptions(autoAdjustOverflow)\n });\n placementMap[key].ignoreShake = true;\n });\n return placementMap;\n}","import PropTypes from '../_util/vue-types';\nvar triggerType = PropTypes.oneOf(['hover', 'focus', 'click', 'contextmenu']);\nexport default (function () {\n return {\n trigger: PropTypes.oneOfType([triggerType, PropTypes.arrayOf(triggerType)]).def('hover'),\n visible: PropTypes.bool,\n defaultVisible: PropTypes.bool,\n placement: PropTypes.oneOf(['top', 'left', 'right', 'bottom', 'topLeft', 'topRight', 'bottomLeft', 'bottomRight', 'leftTop', 'leftBottom', 'rightTop', 'rightBottom']).def('top'),\n transitionName: PropTypes.string.def('zoom-big-fast'),\n // onVisibleChange: PropTypes.func,\n overlayStyle: PropTypes.object.def(function () {\n return {};\n }),\n overlayClassName: PropTypes.string,\n prefixCls: PropTypes.string,\n mouseEnterDelay: PropTypes.number.def(0.1),\n mouseLeaveDelay: PropTypes.number.def(0.1),\n getPopupContainer: PropTypes.func,\n arrowPointAtCenter: PropTypes.bool.def(false),\n autoAdjustOverflow: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]).def(true),\n destroyTooltipOnHide: PropTypes.bool.def(false),\n align: PropTypes.object.def(function () {\n return {};\n }),\n builtinPlacements: PropTypes.object\n };\n});","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport { cloneElement } from '../_util/vnode';\nimport VcTooltip from '../vc-tooltip';\nimport _getPlacements from './placements';\nimport PropTypes from '../_util/vue-types';\nimport { hasProp, getComponentFromProp, getClass, getStyle, isValidElement, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport abstractTooltipProps from './abstractTooltipProps';\n\nvar splitObject = function splitObject(obj, keys) {\n var picked = {};\n var omitted = _extends({}, obj);\n keys.forEach(function (key) {\n if (obj && key in obj) {\n picked[key] = obj[key];\n delete omitted[key];\n }\n });\n return { picked: picked, omitted: omitted };\n};\nvar props = abstractTooltipProps();\nexport default {\n name: 'ATooltip',\n model: {\n prop: 'visible',\n event: 'visibleChange'\n },\n props: _extends({}, props, {\n title: PropTypes.any\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n sVisible: !!this.$props.visible || !!this.$props.defaultVisible\n };\n },\n\n watch: {\n visible: function visible(val) {\n this.sVisible = val;\n }\n },\n methods: {\n onVisibleChange: function onVisibleChange(visible) {\n if (!hasProp(this, 'visible')) {\n this.sVisible = this.isNoTitle() ? false : visible;\n }\n if (!this.isNoTitle()) {\n this.$emit('visibleChange', visible);\n }\n },\n getPopupDomNode: function getPopupDomNode() {\n return this.$refs.tooltip.getPopupDomNode();\n },\n getPlacements: function getPlacements() {\n var _$props = this.$props,\n builtinPlacements = _$props.builtinPlacements,\n arrowPointAtCenter = _$props.arrowPointAtCenter,\n autoAdjustOverflow = _$props.autoAdjustOverflow;\n\n return builtinPlacements || _getPlacements({\n arrowPointAtCenter: arrowPointAtCenter,\n verticalArrowShift: 8,\n autoAdjustOverflow: autoAdjustOverflow\n });\n },\n\n\n // Fix Tooltip won't hide at disabled button\n // mouse events don't trigger at disabled button in Chrome\n // https://github.com/react-component/tooltip/issues/18\n getDisabledCompatibleChildren: function getDisabledCompatibleChildren(ele) {\n var h = this.$createElement;\n\n var options = ele.componentOptions && ele.componentOptions.Ctor.options || {};\n\n if ((options.__ANT_BUTTON === true || options.__ANT_SWITCH === true || options.__ANT_CHECKBOX === true) && (ele.componentOptions.propsData.disabled || ele.componentOptions.propsData.disabled === '') || ele.tag === 'button' && ele.data && ele.data.attrs && ele.data.attrs.disabled !== undefined) {\n // Pick some layout related style properties up to span\n // Prevent layout bugs like https://github.com/ant-design/ant-design/issues/5254\n var _splitObject = splitObject(getStyle(ele), ['position', 'left', 'right', 'top', 'bottom', 'float', 'display', 'zIndex']),\n picked = _splitObject.picked,\n omitted = _splitObject.omitted;\n\n var spanStyle = _extends({\n display: 'inline-block' }, picked, {\n cursor: 'not-allowed',\n width: ele.componentOptions.propsData.block ? '100%' : null\n });\n var buttonStyle = _extends({}, omitted, {\n pointerEvents: 'none'\n });\n var spanCls = getClass(ele);\n var child = cloneElement(ele, {\n style: buttonStyle,\n 'class': null\n });\n return h(\n 'span',\n { style: spanStyle, 'class': spanCls },\n [child]\n );\n }\n return ele;\n },\n isNoTitle: function isNoTitle() {\n var title = getComponentFromProp(this, 'title');\n return !title && title !== 0;\n },\n getOverlay: function getOverlay() {\n var title = getComponentFromProp(this, 'title');\n if (title === 0) {\n return title;\n }\n return title || '';\n },\n\n\n // 动态设置动画点\n onPopupAlign: function onPopupAlign(domNode, align) {\n var placements = this.getPlacements();\n // 当前返回的位置\n var placement = Object.keys(placements).filter(function (key) {\n return placements[key].points[0] === align.points[0] && placements[key].points[1] === align.points[1];\n })[0];\n if (!placement) {\n return;\n }\n // 根据当前坐标设置动画点\n var rect = domNode.getBoundingClientRect();\n var transformOrigin = {\n top: '50%',\n left: '50%'\n };\n if (placement.indexOf('top') >= 0 || placement.indexOf('Bottom') >= 0) {\n transformOrigin.top = rect.height - align.offset[1] + 'px';\n } else if (placement.indexOf('Top') >= 0 || placement.indexOf('bottom') >= 0) {\n transformOrigin.top = -align.offset[1] + 'px';\n }\n if (placement.indexOf('left') >= 0 || placement.indexOf('Right') >= 0) {\n transformOrigin.left = rect.width - align.offset[0] + 'px';\n } else if (placement.indexOf('right') >= 0 || placement.indexOf('Left') >= 0) {\n transformOrigin.left = -align.offset[0] + 'px';\n }\n domNode.style.transformOrigin = transformOrigin.left + ' ' + transformOrigin.top;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var $props = this.$props,\n $data = this.$data,\n $slots = this.$slots;\n var customizePrefixCls = $props.prefixCls,\n openClassName = $props.openClassName,\n getPopupContainer = $props.getPopupContainer;\n var getContextPopupContainer = this.configProvider.getPopupContainer;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('tooltip', customizePrefixCls);\n var children = ($slots['default'] || []).filter(function (c) {\n return c.tag || c.text.trim() !== '';\n });\n children = children.length === 1 ? children[0] : children;\n var sVisible = $data.sVisible;\n // Hide tooltip when there is no title\n if (!hasProp(this, 'visible') && this.isNoTitle()) {\n sVisible = false;\n }\n if (!children) {\n return null;\n }\n var child = this.getDisabledCompatibleChildren(isValidElement(children) ? children : h('span', [children]));\n var childCls = _defineProperty({}, openClassName || prefixCls + '-open', true);\n var tooltipProps = {\n props: _extends({}, $props, {\n prefixCls: prefixCls,\n getTooltipContainer: getPopupContainer || getContextPopupContainer,\n builtinPlacements: this.getPlacements(),\n overlay: this.getOverlay(),\n visible: sVisible\n }),\n ref: 'tooltip',\n on: _extends({}, getListeners(this), {\n visibleChange: this.onVisibleChange,\n popupAlign: this.onPopupAlign\n })\n };\n return h(\n VcTooltip,\n tooltipProps,\n [sVisible ? cloneElement(child, { 'class': childCls }) : child]\n );\n }\n};","import ToolTip from './Tooltip';\nimport Base from '../base';\n\n/* istanbul ignore next */\nToolTip.install = function (Vue) {\n Vue.use(Base);\n Vue.component(ToolTip.name, ToolTip);\n};\n\nexport default ToolTip;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport { Item, itemProps } from '../vc-menu';\nimport { getOptionProps, getListeners } from '../_util/props-util';\nimport Tooltip from '../tooltip';\nfunction noop() {}\nexport default {\n name: 'MenuItem',\n inheritAttrs: false,\n props: itemProps,\n inject: {\n getInlineCollapsed: { 'default': function _default() {\n return noop;\n } },\n layoutSiderContext: { 'default': function _default() {\n return {};\n } }\n },\n isMenuItem: true,\n methods: {\n onKeyDown: function onKeyDown(e) {\n this.$refs.menuItem.onKeyDown(e);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var level = props.level,\n title = props.title,\n rootPrefixCls = props.rootPrefixCls;\n var getInlineCollapsed = this.getInlineCollapsed,\n $slots = this.$slots,\n attrs = this.$attrs;\n\n var inlineCollapsed = getInlineCollapsed();\n var tooltipTitle = title;\n if (typeof title === 'undefined') {\n tooltipTitle = level === 1 ? $slots['default'] : '';\n } else if (title === false) {\n tooltipTitle = '';\n }\n var tooltipProps = {\n title: tooltipTitle\n };\n var siderCollapsed = this.layoutSiderContext.sCollapsed;\n if (!siderCollapsed && !inlineCollapsed) {\n tooltipProps.title = null;\n // Reset `visible` to fix control mode tooltip display not correct\n // ref: https://github.com/ant-design/ant-design/issues/16742\n tooltipProps.visible = false;\n }\n\n var itemProps = {\n props: _extends({}, props, {\n title: title\n }),\n attrs: attrs,\n on: getListeners(this)\n };\n var toolTipProps = {\n props: _extends({}, tooltipProps, {\n placement: 'right',\n overlayClassName: rootPrefixCls + '-inline-collapsed-tooltip'\n })\n };\n return h(\n Tooltip,\n toolTipProps,\n [h(\n Item,\n _mergeJSXProps([itemProps, { ref: 'menuItem' }]),\n [$slots['default']]\n )]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport omit from 'omit.js';\nimport VcMenu, { Divider, ItemGroup } from '../vc-menu';\nimport SubMenu from './SubMenu';\nimport PropTypes from '../_util/vue-types';\nimport animation from '../_util/openAnimation';\nimport warning from '../_util/warning';\nimport Item from './MenuItem';\nimport { hasProp, getListeners, getOptionProps } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport commonPropsType from '../vc-menu/commonPropsType';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n// import raf from '../_util/raf';\n\nexport var MenuMode = PropTypes.oneOf(['vertical', 'vertical-left', 'vertical-right', 'horizontal', 'inline']);\n\nexport var menuProps = _extends({}, commonPropsType, {\n theme: PropTypes.oneOf(['light', 'dark']).def('light'),\n mode: MenuMode.def('vertical'),\n selectable: PropTypes.bool,\n selectedKeys: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number])),\n defaultSelectedKeys: PropTypes.array,\n openKeys: PropTypes.array,\n defaultOpenKeys: PropTypes.array,\n openAnimation: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n openTransitionName: PropTypes.string,\n prefixCls: PropTypes.string,\n multiple: PropTypes.bool,\n inlineIndent: PropTypes.number.def(24),\n inlineCollapsed: PropTypes.bool,\n isRootMenu: PropTypes.bool.def(true),\n focusable: PropTypes.bool.def(false)\n});\n\nvar Menu = {\n name: 'AMenu',\n props: menuProps,\n Divider: _extends({}, Divider, { name: 'AMenuDivider' }),\n Item: _extends({}, Item, { name: 'AMenuItem' }),\n SubMenu: _extends({}, SubMenu, { name: 'ASubMenu' }),\n ItemGroup: _extends({}, ItemGroup, { name: 'AMenuItemGroup' }),\n provide: function provide() {\n return {\n getInlineCollapsed: this.getInlineCollapsed,\n menuPropsContext: this.$props\n };\n },\n\n mixins: [BaseMixin],\n inject: {\n layoutSiderContext: { 'default': function _default() {\n return {};\n } },\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n model: {\n prop: 'selectedKeys',\n event: 'selectChange'\n },\n updated: function updated() {\n this.propsUpdating = false;\n },\n\n // beforeDestroy() {\n // raf.cancel(this.mountRafId);\n // },\n watch: {\n mode: function mode(val, oldVal) {\n if (oldVal === 'inline' && val !== 'inline') {\n this.switchingModeFromInline = true;\n }\n },\n openKeys: function openKeys(val) {\n this.setState({ sOpenKeys: val });\n },\n inlineCollapsed: function inlineCollapsed(val) {\n this.collapsedChange(val);\n },\n 'layoutSiderContext.sCollapsed': function layoutSiderContextSCollapsed(val) {\n this.collapsedChange(val);\n }\n },\n data: function data() {\n var props = getOptionProps(this);\n warning(!('inlineCollapsed' in props && props.mode !== 'inline'), 'Menu', \"`inlineCollapsed` should only be used when Menu's `mode` is inline.\");\n this.switchingModeFromInline = false;\n this.leaveAnimationExecutedWhenInlineCollapsed = false;\n this.inlineOpenKeys = [];\n var sOpenKeys = void 0;\n\n if ('openKeys' in props) {\n sOpenKeys = props.openKeys;\n } else if ('defaultOpenKeys' in props) {\n sOpenKeys = props.defaultOpenKeys;\n }\n return {\n sOpenKeys: sOpenKeys\n };\n },\n\n methods: {\n collapsedChange: function collapsedChange(val) {\n if (this.propsUpdating) {\n return;\n }\n this.propsUpdating = true;\n if (!hasProp(this, 'openKeys')) {\n if (val) {\n this.switchingModeFromInline = true;\n this.inlineOpenKeys = this.sOpenKeys;\n this.setState({ sOpenKeys: [] });\n } else {\n this.setState({ sOpenKeys: this.inlineOpenKeys });\n this.inlineOpenKeys = [];\n }\n } else if (val) {\n // 缩起时,openKeys置为空的动画会闪动,react可以通过是否传递openKeys避免闪动,vue不是很方便动态传递openKeys\n this.switchingModeFromInline = true;\n }\n },\n restoreModeVerticalFromInline: function restoreModeVerticalFromInline() {\n if (this.switchingModeFromInline) {\n this.switchingModeFromInline = false;\n this.$forceUpdate();\n }\n },\n\n // Restore vertical mode when menu is collapsed responsively when mounted\n // https://github.com/ant-design/ant-design/issues/13104\n // TODO: not a perfect solution, looking a new way to avoid setting switchingModeFromInline in this situation\n handleMouseEnter: function handleMouseEnter(e) {\n this.restoreModeVerticalFromInline();\n this.$emit('mouseenter', e);\n },\n handleTransitionEnd: function handleTransitionEnd(e) {\n // when inlineCollapsed menu width animation finished\n // https://github.com/ant-design/ant-design/issues/12864\n var widthCollapsed = e.propertyName === 'width' && e.target === e.currentTarget;\n\n // Fix SVGElement e.target.className.indexOf is not a function\n // https://github.com/ant-design/ant-design/issues/15699\n var className = e.target.className;\n // SVGAnimatedString.animVal should be identical to SVGAnimatedString.baseVal, unless during an animation.\n\n var classNameValue = Object.prototype.toString.call(className) === '[object SVGAnimatedString]' ? className.animVal : className;\n\n // Fix for , the width transition won't trigger when menu is collapsed\n // https://github.com/ant-design/ant-design-pro/issues/2783\n var iconScaled = e.propertyName === 'font-size' && classNameValue.indexOf('anticon') >= 0;\n\n if (widthCollapsed || iconScaled) {\n this.restoreModeVerticalFromInline();\n }\n },\n handleClick: function handleClick(e) {\n this.handleOpenChange([]);\n this.$emit('click', e);\n },\n handleSelect: function handleSelect(info) {\n this.$emit('select', info);\n this.$emit('selectChange', info.selectedKeys);\n },\n handleDeselect: function handleDeselect(info) {\n this.$emit('deselect', info);\n this.$emit('selectChange', info.selectedKeys);\n },\n handleOpenChange: function handleOpenChange(openKeys) {\n this.setOpenKeys(openKeys);\n this.$emit('openChange', openKeys);\n this.$emit('update:openKeys', openKeys);\n },\n setOpenKeys: function setOpenKeys(openKeys) {\n if (!hasProp(this, 'openKeys')) {\n this.setState({ sOpenKeys: openKeys });\n }\n },\n getRealMenuMode: function getRealMenuMode() {\n var inlineCollapsed = this.getInlineCollapsed();\n if (this.switchingModeFromInline && inlineCollapsed) {\n return 'inline';\n }\n var mode = this.$props.mode;\n\n return inlineCollapsed ? 'vertical' : mode;\n },\n getInlineCollapsed: function getInlineCollapsed() {\n var inlineCollapsed = this.$props.inlineCollapsed;\n\n if (this.layoutSiderContext.sCollapsed !== undefined) {\n return this.layoutSiderContext.sCollapsed;\n }\n return inlineCollapsed;\n },\n getMenuOpenAnimation: function getMenuOpenAnimation(menuMode) {\n var _$props = this.$props,\n openAnimation = _$props.openAnimation,\n openTransitionName = _$props.openTransitionName;\n\n var menuOpenAnimation = openAnimation || openTransitionName;\n if (openAnimation === undefined && openTransitionName === undefined) {\n if (menuMode === 'horizontal') {\n menuOpenAnimation = 'slide-up';\n } else if (menuMode === 'inline') {\n menuOpenAnimation = { on: animation };\n } else {\n // When mode switch from inline\n // submenu should hide without animation\n if (this.switchingModeFromInline) {\n menuOpenAnimation = '';\n this.switchingModeFromInline = false;\n } else {\n menuOpenAnimation = 'zoom-big';\n }\n }\n }\n return menuOpenAnimation;\n }\n },\n render: function render() {\n var _menuClassName,\n _this = this;\n\n var h = arguments[0];\n var layoutSiderContext = this.layoutSiderContext,\n $slots = this.$slots;\n var collapsedWidth = layoutSiderContext.collapsedWidth;\n var getContextPopupContainer = this.configProvider.getPopupContainer;\n\n var props = getOptionProps(this);\n var customizePrefixCls = props.prefixCls,\n theme = props.theme,\n getPopupContainer = props.getPopupContainer;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('menu', customizePrefixCls);\n var menuMode = this.getRealMenuMode();\n var menuOpenAnimation = this.getMenuOpenAnimation(menuMode);\n\n var menuClassName = (_menuClassName = {}, _defineProperty(_menuClassName, prefixCls + '-' + theme, true), _defineProperty(_menuClassName, prefixCls + '-inline-collapsed', this.getInlineCollapsed()), _menuClassName);\n\n var menuProps = {\n props: _extends({}, omit(props, ['inlineCollapsed']), {\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n openKeys: this.sOpenKeys,\n mode: menuMode,\n prefixCls: prefixCls\n }),\n on: _extends({}, getListeners(this), {\n select: this.handleSelect,\n deselect: this.handleDeselect,\n openChange: this.handleOpenChange,\n mouseenter: this.handleMouseEnter\n }),\n nativeOn: {\n transitionend: this.handleTransitionEnd\n }\n };\n if (!hasProp(this, 'selectedKeys')) {\n delete menuProps.props.selectedKeys;\n }\n\n if (menuMode !== 'inline') {\n // closing vertical popup submenu after click it\n menuProps.on.click = this.handleClick;\n menuProps.props.openTransitionName = menuOpenAnimation;\n } else {\n menuProps.on.click = function (e) {\n _this.$emit('click', e);\n };\n menuProps.props.openAnimation = menuOpenAnimation;\n }\n\n // https://github.com/ant-design/ant-design/issues/8587\n var hideMenu = this.getInlineCollapsed() && (collapsedWidth === 0 || collapsedWidth === '0' || collapsedWidth === '0px');\n if (hideMenu) {\n menuProps.props.openKeys = [];\n }\n\n return h(\n VcMenu,\n _mergeJSXProps([menuProps, { 'class': menuClassName }]),\n [$slots['default']]\n );\n }\n};\n\n/* istanbul ignore next */\nMenu.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Menu.name, Menu);\n Vue.component(Menu.Item.name, Menu.Item);\n Vue.component(Menu.SubMenu.name, Menu.SubMenu);\n Vue.component(Menu.Divider.name, Menu.Divider);\n Vue.component(Menu.ItemGroup.name, Menu.ItemGroup);\n};\nexport default Menu;","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport PropTypes from '../_util/vue-types';\nimport { cloneElement } from '../_util/vnode';\nimport { filterEmpty, getComponentFromProp, getSlotOptions } from '../_util/props-util';\nimport warning from '../_util/warning';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport BreadcrumbItem from './BreadcrumbItem';\nimport Menu from '../menu';\n\nvar Route = PropTypes.shape({\n path: PropTypes.string,\n breadcrumbName: PropTypes.string,\n children: PropTypes.array\n}).loose;\n\nvar BreadcrumbProps = {\n prefixCls: PropTypes.string,\n routes: PropTypes.arrayOf(Route),\n params: PropTypes.any,\n separator: PropTypes.any,\n itemRender: PropTypes.func\n};\n\nfunction getBreadcrumbName(route, params) {\n if (!route.breadcrumbName) {\n return null;\n }\n var paramsKeys = Object.keys(params).join('|');\n var name = route.breadcrumbName.replace(new RegExp(':(' + paramsKeys + ')', 'g'), function (replacement, key) {\n return params[key] || replacement;\n });\n return name;\n}\n\nexport default {\n name: 'ABreadcrumb',\n props: BreadcrumbProps,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n defaultItemRender: function defaultItemRender(_ref) {\n var route = _ref.route,\n params = _ref.params,\n routes = _ref.routes,\n paths = _ref.paths;\n var h = this.$createElement;\n\n var isLastItem = routes.indexOf(route) === routes.length - 1;\n var name = getBreadcrumbName(route, params);\n return isLastItem ? h('span', [name]) : h(\n 'a',\n {\n attrs: { href: '#/' + paths.join('/') }\n },\n [name]\n );\n },\n getPath: function getPath(path, params) {\n path = (path || '').replace(/^\\//, '');\n Object.keys(params).forEach(function (key) {\n path = path.replace(':' + key, params[key]);\n });\n return path;\n },\n addChildPath: function addChildPath(paths, childPath, params) {\n var originalPaths = [].concat(_toConsumableArray(paths));\n var path = this.getPath(childPath, params);\n if (path) {\n originalPaths.push(path);\n }\n return originalPaths;\n },\n genForRoutes: function genForRoutes(_ref2) {\n var _this = this;\n\n var _ref2$routes = _ref2.routes,\n routes = _ref2$routes === undefined ? [] : _ref2$routes,\n _ref2$params = _ref2.params,\n params = _ref2$params === undefined ? {} : _ref2$params,\n separator = _ref2.separator,\n _ref2$itemRender = _ref2.itemRender,\n itemRender = _ref2$itemRender === undefined ? this.defaultItemRender : _ref2$itemRender;\n var h = this.$createElement;\n\n var paths = [];\n return routes.map(function (route) {\n var path = _this.getPath(route.path, params);\n\n if (path) {\n paths.push(path);\n }\n // generated overlay by route.children\n var overlay = null;\n if (route.children && route.children.length) {\n overlay = h(Menu, [route.children.map(function (child) {\n return h(\n Menu.Item,\n { key: child.path || child.breadcrumbName },\n [itemRender({\n route: child,\n params: params,\n routes: routes,\n paths: _this.addChildPath(paths, child.path, params),\n h: _this.$createElement\n })]\n );\n })]);\n }\n\n return h(\n BreadcrumbItem,\n {\n attrs: {\n overlay: overlay,\n separator: separator\n },\n key: path || route.breadcrumbName\n },\n [itemRender({ route: route, params: params, routes: routes, paths: paths, h: _this.$createElement })]\n );\n });\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var crumbs = void 0;\n var customizePrefixCls = this.prefixCls,\n routes = this.routes,\n _params = this.params,\n params = _params === undefined ? {} : _params,\n $slots = this.$slots,\n $scopedSlots = this.$scopedSlots;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);\n\n var children = filterEmpty($slots['default']);\n var separator = getComponentFromProp(this, 'separator');\n var itemRender = this.itemRender || $scopedSlots.itemRender || this.defaultItemRender;\n if (routes && routes.length > 0) {\n // generated by route\n crumbs = this.genForRoutes({\n routes: routes,\n params: params,\n separator: separator,\n itemRender: itemRender\n });\n } else if (children.length) {\n crumbs = children.map(function (element, index) {\n warning(getSlotOptions(element).__ANT_BREADCRUMB_ITEM || getSlotOptions(element).__ANT_BREADCRUMB_SEPARATOR, 'Breadcrumb', \"Only accepts Breadcrumb.Item and Breadcrumb.Separator as it's children\");\n return cloneElement(element, {\n props: { separator: separator },\n key: index\n });\n });\n }\n return h(\n 'div',\n { 'class': prefixCls },\n [crumbs]\n );\n }\n};","import { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport PropTypes from '../_util/vue-types';\n\nexport default {\n name: 'ABreadcrumbSeparator',\n __ANT_BREADCRUMB_SEPARATOR: true,\n props: {\n prefixCls: PropTypes.string\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n $slots = this.$slots;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);\n\n var children = $slots['default'];\n return h(\n 'span',\n { 'class': prefixCls + '-separator' },\n [children || '/']\n );\n }\n};","import Breadcrumb from './Breadcrumb';\nimport BreadcrumbItem from './BreadcrumbItem';\nimport BreadcrumbSeparator from './BreadcrumbSeparator';\nimport Base from '../base';\n\nBreadcrumb.Item = BreadcrumbItem;\nBreadcrumb.Separator = BreadcrumbSeparator;\n\n/* istanbul ignore next */\nBreadcrumb.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Breadcrumb.name, Breadcrumb);\n Vue.component(BreadcrumbItem.name, BreadcrumbItem);\n Vue.component(BreadcrumbSeparator.name, BreadcrumbSeparator);\n};\n\nexport default Breadcrumb;","export default {\n DATE_ROW_COUNT: 6,\n DATE_COL_COUNT: 7\n};","import DateConstants from './DateConstants';\nimport moment from 'moment';\n\nexport default {\n functional: true,\n render: function render(createElement, context) {\n var h = arguments[0];\n var props = context.props;\n\n var value = props.value;\n var localeData = value.localeData();\n var prefixCls = props.prefixCls;\n var veryShortWeekdays = [];\n var weekDays = [];\n var firstDayOfWeek = localeData.firstDayOfWeek();\n var showWeekNumberEl = void 0;\n var now = moment();\n for (var dateColIndex = 0; dateColIndex < DateConstants.DATE_COL_COUNT; dateColIndex++) {\n var index = (firstDayOfWeek + dateColIndex) % DateConstants.DATE_COL_COUNT;\n now.day(index);\n veryShortWeekdays[dateColIndex] = localeData.weekdaysMin(now);\n weekDays[dateColIndex] = localeData.weekdaysShort(now);\n }\n\n if (props.showWeekNumber) {\n showWeekNumberEl = h(\n 'th',\n {\n attrs: {\n role: 'columnheader'\n },\n 'class': prefixCls + '-column-header ' + prefixCls + '-week-number-header'\n },\n [h(\n 'span',\n { 'class': prefixCls + '-column-header-inner' },\n ['x']\n )]\n );\n }\n var weekDaysEls = weekDays.map(function (day, xindex) {\n return h(\n 'th',\n { key: xindex, attrs: { role: 'columnheader', title: day },\n 'class': prefixCls + '-column-header' },\n [h(\n 'span',\n { 'class': prefixCls + '-column-header-inner' },\n [veryShortWeekdays[xindex]]\n )]\n );\n });\n return h('thead', [h(\n 'tr',\n {\n attrs: { role: 'row' }\n },\n [showWeekNumberEl, weekDaysEls]\n )]);\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport moment from 'moment';\n\nvar defaultDisabledTime = {\n disabledHours: function disabledHours() {\n return [];\n },\n disabledMinutes: function disabledMinutes() {\n return [];\n },\n disabledSeconds: function disabledSeconds() {\n return [];\n }\n};\n\nexport function getTodayTime(value) {\n var today = moment();\n today.locale(value.locale()).utcOffset(value.utcOffset());\n return today;\n}\n\nexport function getTitleString(value) {\n return value.format('LL');\n}\n\nexport function getTodayTimeStr(value) {\n var today = getTodayTime(value);\n return getTitleString(today);\n}\n\nexport function getMonthName(month) {\n var locale = month.locale();\n var localeData = month.localeData();\n return localeData[locale === 'zh-cn' ? 'months' : 'monthsShort'](month);\n}\n\nexport function syncTime(from, to) {\n if (!moment.isMoment(from) || !moment.isMoment(to)) return;\n to.hour(from.hour());\n to.minute(from.minute());\n to.second(from.second());\n to.millisecond(from.millisecond());\n}\n\nexport function getTimeConfig(value, disabledTime) {\n var disabledTimeConfig = disabledTime ? disabledTime(value) : {};\n disabledTimeConfig = _extends({}, defaultDisabledTime, disabledTimeConfig);\n return disabledTimeConfig;\n}\n\nexport function isTimeValidByConfig(value, disabledTimeConfig) {\n var invalidTime = false;\n if (value) {\n var hour = value.hour();\n var minutes = value.minute();\n var seconds = value.second();\n var disabledHours = disabledTimeConfig.disabledHours();\n if (disabledHours.indexOf(hour) === -1) {\n var disabledMinutes = disabledTimeConfig.disabledMinutes(hour);\n if (disabledMinutes.indexOf(minutes) === -1) {\n var disabledSeconds = disabledTimeConfig.disabledSeconds(hour, minutes);\n invalidTime = disabledSeconds.indexOf(seconds) !== -1;\n } else {\n invalidTime = true;\n }\n } else {\n invalidTime = true;\n }\n }\n return !invalidTime;\n}\n\nexport function isTimeValid(value, disabledTime) {\n var disabledTimeConfig = getTimeConfig(value, disabledTime);\n return isTimeValidByConfig(value, disabledTimeConfig);\n}\n\nexport function isAllowedDate(value, disabledDate, disabledTime) {\n if (disabledDate) {\n if (disabledDate(value)) {\n return false;\n }\n }\n if (disabledTime) {\n if (!isTimeValid(value, disabledTime)) {\n return false;\n }\n }\n return true;\n}\n\nexport function formatDate(value, format) {\n if (!value) {\n return '';\n }\n\n if (Array.isArray(format)) {\n format = format[0];\n }\n\n if (typeof format === 'function') {\n var result = format(value);\n if (typeof result === 'string') {\n return result;\n } else {\n throw new Error('The function of format does not return a string');\n }\n }\n\n return value.format(format);\n}","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../../_util/vue-types';\nimport { getOptionProps, getListeners } from '../../../_util/props-util';\nimport cx from 'classnames';\nimport DateConstants from './DateConstants';\nimport { getTitleString, getTodayTime } from '../util/';\nfunction noop() {}\nfunction isSameDay(one, two) {\n return one && two && one.isSame(two, 'day');\n}\n\nfunction beforeCurrentMonthYear(current, today) {\n if (current.year() < today.year()) {\n return 1;\n }\n return current.year() === today.year() && current.month() < today.month();\n}\n\nfunction afterCurrentMonthYear(current, today) {\n if (current.year() > today.year()) {\n return 1;\n }\n return current.year() === today.year() && current.month() > today.month();\n}\n\nfunction getIdFromDate(date) {\n return 'rc-calendar-' + date.year() + '-' + date.month() + '-' + date.date();\n}\n\nvar DateTBody = {\n props: {\n contentRender: PropTypes.func,\n dateRender: PropTypes.func,\n disabledDate: PropTypes.func,\n prefixCls: PropTypes.string,\n selectedValue: PropTypes.oneOfType([PropTypes.any, PropTypes.arrayOf(PropTypes.any)]),\n value: PropTypes.object,\n hoverValue: PropTypes.any.def([]),\n showWeekNumber: PropTypes.bool\n },\n\n render: function render() {\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var contentRender = props.contentRender,\n prefixCls = props.prefixCls,\n selectedValue = props.selectedValue,\n value = props.value,\n showWeekNumber = props.showWeekNumber,\n dateRender = props.dateRender,\n disabledDate = props.disabledDate,\n hoverValue = props.hoverValue;\n\n var _getListeners = getListeners(this),\n _getListeners$select = _getListeners.select,\n select = _getListeners$select === undefined ? noop : _getListeners$select,\n _getListeners$dayHove = _getListeners.dayHover,\n dayHover = _getListeners$dayHove === undefined ? noop : _getListeners$dayHove;\n\n var iIndex = void 0;\n var jIndex = void 0;\n var current = void 0;\n var dateTable = [];\n var today = getTodayTime(value);\n var cellClass = prefixCls + '-cell';\n var weekNumberCellClass = prefixCls + '-week-number-cell';\n var dateClass = prefixCls + '-date';\n var todayClass = prefixCls + '-today';\n var selectedClass = prefixCls + '-selected-day';\n var selectedDateClass = prefixCls + '-selected-date'; // do not move with mouse operation\n var selectedStartDateClass = prefixCls + '-selected-start-date';\n var selectedEndDateClass = prefixCls + '-selected-end-date';\n var inRangeClass = prefixCls + '-in-range-cell';\n var lastMonthDayClass = prefixCls + '-last-month-cell';\n var nextMonthDayClass = prefixCls + '-next-month-btn-day';\n var disabledClass = prefixCls + '-disabled-cell';\n var firstDisableClass = prefixCls + '-disabled-cell-first-of-row';\n var lastDisableClass = prefixCls + '-disabled-cell-last-of-row';\n var lastDayOfMonthClass = prefixCls + '-last-day-of-month';\n var month1 = value.clone();\n month1.date(1);\n var day = month1.day();\n var lastMonthDiffDay = (day + 7 - value.localeData().firstDayOfWeek()) % 7;\n // calculate last month\n var lastMonth1 = month1.clone();\n lastMonth1.add(0 - lastMonthDiffDay, 'days');\n var passed = 0;\n for (iIndex = 0; iIndex < DateConstants.DATE_ROW_COUNT; iIndex++) {\n for (jIndex = 0; jIndex < DateConstants.DATE_COL_COUNT; jIndex++) {\n current = lastMonth1;\n if (passed) {\n current = current.clone();\n current.add(passed, 'days');\n }\n dateTable.push(current);\n passed++;\n }\n }\n var tableHtml = [];\n passed = 0;\n\n for (iIndex = 0; iIndex < DateConstants.DATE_ROW_COUNT; iIndex++) {\n var _cx;\n\n var isCurrentWeek = void 0;\n var weekNumberCell = void 0;\n var isActiveWeek = false;\n var dateCells = [];\n if (showWeekNumber) {\n weekNumberCell = h(\n 'td',\n { key: 'week-' + dateTable[passed].week(), attrs: { role: 'gridcell' },\n 'class': weekNumberCellClass },\n [dateTable[passed].week()]\n );\n }\n for (jIndex = 0; jIndex < DateConstants.DATE_COL_COUNT; jIndex++) {\n var next = null;\n var last = null;\n current = dateTable[passed];\n if (jIndex < DateConstants.DATE_COL_COUNT - 1) {\n next = dateTable[passed + 1];\n }\n if (jIndex > 0) {\n last = dateTable[passed - 1];\n }\n var cls = cellClass;\n var disabled = false;\n var selected = false;\n\n if (isSameDay(current, today)) {\n cls += ' ' + todayClass;\n isCurrentWeek = true;\n }\n\n var isBeforeCurrentMonthYear = beforeCurrentMonthYear(current, value);\n var isAfterCurrentMonthYear = afterCurrentMonthYear(current, value);\n\n if (selectedValue && Array.isArray(selectedValue)) {\n var rangeValue = hoverValue.length ? hoverValue : selectedValue;\n if (!isBeforeCurrentMonthYear && !isAfterCurrentMonthYear) {\n var startValue = rangeValue[0];\n var endValue = rangeValue[1];\n if (startValue) {\n if (isSameDay(current, startValue)) {\n selected = true;\n isActiveWeek = true;\n cls += ' ' + selectedStartDateClass;\n }\n }\n if (startValue || endValue) {\n if (isSameDay(current, endValue)) {\n selected = true;\n isActiveWeek = true;\n cls += ' ' + selectedEndDateClass;\n } else if ((startValue === null || startValue === undefined) && current.isBefore(endValue, 'day')) {\n cls += ' ' + inRangeClass;\n } else if ((endValue === null || endValue === undefined) && current.isAfter(startValue, 'day')) {\n cls += ' ' + inRangeClass;\n } else if (current.isAfter(startValue, 'day') && current.isBefore(endValue, 'day')) {\n cls += ' ' + inRangeClass;\n }\n }\n }\n } else if (isSameDay(current, value)) {\n // keyboard change value, highlight works\n selected = true;\n isActiveWeek = true;\n }\n\n if (isSameDay(current, selectedValue)) {\n cls += ' ' + selectedDateClass;\n }\n\n if (isBeforeCurrentMonthYear) {\n cls += ' ' + lastMonthDayClass;\n }\n if (isAfterCurrentMonthYear) {\n cls += ' ' + nextMonthDayClass;\n }\n\n if (current.clone().endOf('month').date() === current.date()) {\n cls += ' ' + lastDayOfMonthClass;\n }\n\n if (disabledDate) {\n if (disabledDate(current, value)) {\n disabled = true;\n\n if (!last || !disabledDate(last, value)) {\n cls += ' ' + firstDisableClass;\n }\n\n if (!next || !disabledDate(next, value)) {\n cls += ' ' + lastDisableClass;\n }\n }\n }\n\n if (selected) {\n cls += ' ' + selectedClass;\n }\n\n if (disabled) {\n cls += ' ' + disabledClass;\n }\n\n var dateHtml = void 0;\n if (dateRender) {\n dateHtml = dateRender(current, value);\n } else {\n var content = contentRender ? contentRender(current, value) : current.date();\n dateHtml = h(\n 'div',\n {\n key: getIdFromDate(current),\n 'class': dateClass,\n attrs: { 'aria-selected': selected,\n 'aria-disabled': disabled\n }\n },\n [content]\n );\n }\n\n dateCells.push(h(\n 'td',\n {\n key: passed,\n on: {\n 'click': disabled ? noop : select.bind(null, current),\n 'mouseenter': disabled ? noop : dayHover.bind(null, current)\n },\n attrs: {\n role: 'gridcell',\n title: getTitleString(current)\n },\n 'class': cls\n },\n [dateHtml]\n ));\n\n passed++;\n }\n\n tableHtml.push(h(\n 'tr',\n {\n key: iIndex,\n attrs: { role: 'row'\n },\n 'class': cx((_cx = {}, _defineProperty(_cx, prefixCls + '-current-week', isCurrentWeek), _defineProperty(_cx, prefixCls + '-active-week', isActiveWeek), _cx))\n },\n [weekNumberCell, dateCells]\n ));\n }\n return h(\n 'tbody',\n { 'class': prefixCls + '-tbody' },\n [tableHtml]\n );\n }\n};\n\nexport default DateTBody;","import DateTHead from './DateTHead';\nimport DateTBody from './DateTBody';\n\nexport default {\n functional: true,\n render: function render(createElement, context) {\n var h = arguments[0];\n var props = context.props,\n _context$listeners = context.listeners,\n listeners = _context$listeners === undefined ? {} : _context$listeners;\n\n var prefixCls = props.prefixCls;\n var bodyProps = {\n props: props,\n on: listeners\n };\n return h(\n 'table',\n { 'class': prefixCls + '-table', attrs: { cellSpacing: '0', role: 'grid' }\n },\n [h(DateTHead, bodyProps), h(DateTBody, bodyProps)]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { getTodayTime, getMonthName } from '../util/index';\n\nvar ROW = 4;\nvar COL = 3;\n\nfunction noop() {}\n\nvar MonthTable = {\n name: 'MonthTable',\n mixins: [BaseMixin],\n props: {\n cellRender: PropTypes.func,\n prefixCls: PropTypes.string,\n value: PropTypes.object,\n locale: PropTypes.any,\n contentRender: PropTypes.any,\n disabledDate: PropTypes.func\n },\n data: function data() {\n return {\n sValue: this.value\n };\n },\n\n watch: {\n value: function value(val) {\n this.setState({\n sValue: val\n });\n }\n },\n methods: {\n setAndSelectValue: function setAndSelectValue(value) {\n this.setState({\n sValue: value\n });\n this.__emit('select', value);\n },\n chooseMonth: function chooseMonth(month) {\n var next = this.sValue.clone();\n next.month(month);\n this.setAndSelectValue(next);\n },\n months: function months() {\n var value = this.sValue;\n var current = value.clone();\n var months = [];\n var index = 0;\n for (var rowIndex = 0; rowIndex < ROW; rowIndex++) {\n months[rowIndex] = [];\n for (var colIndex = 0; colIndex < COL; colIndex++) {\n current.month(index);\n var content = getMonthName(current);\n months[rowIndex][colIndex] = {\n value: index,\n content: content,\n title: content\n };\n index++;\n }\n }\n return months;\n }\n },\n\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n\n var props = this.$props;\n var value = this.sValue;\n var today = getTodayTime(value);\n var months = this.months();\n var currentMonth = value.month();\n var prefixCls = props.prefixCls,\n locale = props.locale,\n contentRender = props.contentRender,\n cellRender = props.cellRender,\n disabledDate = props.disabledDate;\n\n var monthsEls = months.map(function (month, index) {\n var tds = month.map(function (monthData) {\n var _classNameMap;\n\n var disabled = false;\n if (disabledDate) {\n var testValue = value.clone();\n testValue.month(monthData.value);\n disabled = disabledDate(testValue);\n }\n var classNameMap = (_classNameMap = {}, _defineProperty(_classNameMap, prefixCls + '-cell', 1), _defineProperty(_classNameMap, prefixCls + '-cell-disabled', disabled), _defineProperty(_classNameMap, prefixCls + '-selected-cell', monthData.value === currentMonth), _defineProperty(_classNameMap, prefixCls + '-current-cell', today.year() === value.year() && monthData.value === today.month()), _classNameMap);\n var cellEl = void 0;\n if (cellRender) {\n var currentValue = value.clone();\n currentValue.month(monthData.value);\n cellEl = cellRender(currentValue, locale);\n } else {\n var content = void 0;\n if (contentRender) {\n var _currentValue = value.clone();\n _currentValue.month(monthData.value);\n content = contentRender(_currentValue, locale);\n } else {\n content = monthData.content;\n }\n cellEl = h(\n 'a',\n { 'class': prefixCls + '-month' },\n [content]\n );\n }\n return h(\n 'td',\n {\n attrs: {\n role: 'gridcell',\n\n title: monthData.title\n },\n key: monthData.value,\n on: {\n 'click': disabled ? noop : function () {\n return _this.chooseMonth(monthData.value);\n }\n },\n 'class': classNameMap\n },\n [cellEl]\n );\n });\n return h(\n 'tr',\n { key: index, attrs: { role: 'row' }\n },\n [tds]\n );\n });\n\n return h(\n 'table',\n { 'class': prefixCls + '-table', attrs: { cellSpacing: '0', role: 'grid' }\n },\n [h(\n 'tbody',\n { 'class': prefixCls + '-tbody' },\n [monthsEls]\n )]\n );\n }\n};\n\nexport default MonthTable;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { hasProp } from '../../../_util/props-util';\nimport moment from 'moment';\nimport { isAllowedDate as _isAllowedDate, getTodayTime } from '../util/index';\nfunction noop() {}\n\nexport function getNowByCurrentStateValue(value) {\n var ret = void 0;\n if (value) {\n ret = getTodayTime(value);\n } else {\n ret = moment();\n }\n return ret;\n}\nfunction isMoment(value) {\n if (Array.isArray(value)) {\n return value.length === 0 || value.findIndex(function (val) {\n return val === undefined || moment.isMoment(val);\n }) !== -1;\n } else {\n return value === undefined || moment.isMoment(value);\n }\n}\nvar MomentType = PropTypes.custom(isMoment);\nvar CalendarMixin = {\n mixins: [BaseMixin],\n name: 'CalendarMixinWrapper',\n props: {\n value: MomentType,\n defaultValue: MomentType\n },\n\n data: function data() {\n var props = this.$props;\n var sValue = props.value || props.defaultValue || getNowByCurrentStateValue();\n return {\n sValue: sValue,\n sSelectedValue: props.selectedValue || props.defaultSelectedValue\n };\n },\n\n watch: {\n value: function value(val) {\n var sValue = val || this.defaultValue || getNowByCurrentStateValue(this.sValue);\n this.setState({\n sValue: sValue\n });\n },\n selectedValue: function selectedValue(val) {\n this.setState({\n sSelectedValue: val\n });\n }\n },\n methods: {\n onSelect: function onSelect(value, cause) {\n if (value) {\n this.setValue(value);\n }\n this.setSelectedValue(value, cause);\n },\n renderRoot: function renderRoot(newProps) {\n var _className;\n\n var h = this.$createElement;\n\n var props = this.$props;\n var prefixCls = props.prefixCls;\n\n var className = (_className = {}, _defineProperty(_className, prefixCls, 1), _defineProperty(_className, prefixCls + '-hidden', !props.visible), _defineProperty(_className, newProps['class'], !!newProps['class']), _className);\n return h(\n 'div',\n {\n ref: 'rootInstance',\n 'class': className,\n attrs: { tabIndex: '0'\n },\n on: {\n 'keydown': this.onKeyDown || noop,\n 'blur': this.onBlur || noop\n }\n },\n [newProps.children]\n );\n },\n setSelectedValue: function setSelectedValue(selectedValue, cause) {\n // if (this.isAllowedDate(selectedValue)) {\n if (!hasProp(this, 'selectedValue')) {\n this.setState({\n sSelectedValue: selectedValue\n });\n }\n this.__emit('select', selectedValue, cause);\n // }\n },\n setValue: function setValue(value) {\n var originalValue = this.sValue;\n if (!hasProp(this, 'value')) {\n this.setState({\n sValue: value\n });\n }\n if (originalValue && value && !originalValue.isSame(value) || !originalValue && value || originalValue && !value) {\n this.__emit('change', value);\n }\n },\n isAllowedDate: function isAllowedDate(value) {\n var disabledDate = this.disabledDate;\n var disabledTime = this.disabledTime;\n return _isAllowedDate(value, disabledDate, disabledTime);\n }\n }\n};\n\nexport default CalendarMixin;","export default {\n methods: {\n getFormat: function getFormat() {\n var format = this.format;\n var locale = this.locale,\n timePicker = this.timePicker;\n\n if (!format) {\n if (timePicker) {\n format = locale.dateTimeFormat;\n } else {\n format = locale.dateFormat;\n }\n }\n return format;\n },\n focus: function focus() {\n if (this.focusElement) {\n this.focusElement.focus();\n } else if (this.$refs.rootInstance) {\n this.$refs.rootInstance.focus();\n }\n },\n saveFocusElement: function saveFocusElement(focusElement) {\n this.focusElement = focusElement;\n }\n }\n};","import PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { getMonthName } from '../util';\n\nvar CalendarHeader = {\n name: 'CalendarHeader',\n mixins: [BaseMixin],\n props: {\n value: PropTypes.object,\n locale: PropTypes.object,\n yearSelectOffset: PropTypes.number.def(10),\n yearSelectTotal: PropTypes.number.def(20),\n // onValueChange: PropTypes.func,\n // onTypeChange: PropTypes.func,\n Select: PropTypes.object,\n prefixCls: PropTypes.string,\n type: PropTypes.string,\n showTypeSwitch: PropTypes.bool,\n headerComponents: PropTypes.array\n },\n methods: {\n onYearChange: function onYearChange(year) {\n var newValue = this.value.clone();\n newValue.year(parseInt(year, 10));\n this.__emit('valueChange', newValue);\n },\n onMonthChange: function onMonthChange(month) {\n var newValue = this.value.clone();\n newValue.month(parseInt(month, 10));\n this.__emit('valueChange', newValue);\n },\n yearSelectElement: function yearSelectElement(year) {\n var h = this.$createElement;\n var yearSelectOffset = this.yearSelectOffset,\n yearSelectTotal = this.yearSelectTotal,\n prefixCls = this.prefixCls,\n Select = this.Select;\n\n var start = year - yearSelectOffset;\n var end = start + yearSelectTotal;\n\n var options = [];\n for (var index = start; index < end; index++) {\n options.push(h(\n Select.Option,\n { key: '' + index },\n [index]\n ));\n }\n return h(\n Select,\n {\n 'class': prefixCls + '-header-year-select',\n on: {\n 'change': this.onYearChange\n },\n attrs: {\n dropdownStyle: { zIndex: 2000 },\n dropdownMenuStyle: { maxHeight: '250px', overflow: 'auto', fontSize: '12px' },\n optionLabelProp: 'children',\n value: String(year),\n showSearch: false\n }\n },\n [options]\n );\n },\n monthSelectElement: function monthSelectElement(month) {\n var h = this.$createElement;\n var value = this.value,\n Select = this.Select,\n prefixCls = this.prefixCls;\n\n var t = value.clone();\n var options = [];\n\n for (var index = 0; index < 12; index++) {\n t.month(index);\n options.push(h(\n Select.Option,\n { key: '' + index },\n [getMonthName(t)]\n ));\n }\n\n return h(\n Select,\n {\n 'class': prefixCls + '-header-month-select',\n attrs: { dropdownStyle: { zIndex: 2000 },\n dropdownMenuStyle: {\n maxHeight: '250px',\n overflow: 'auto',\n overflowX: 'hidden',\n fontSize: '12px'\n },\n optionLabelProp: 'children',\n value: String(month),\n showSearch: false\n },\n on: {\n 'change': this.onMonthChange\n }\n },\n [options]\n );\n },\n changeTypeToDate: function changeTypeToDate() {\n this.__emit('typeChange', 'date');\n },\n changeTypeToMonth: function changeTypeToMonth() {\n this.__emit('typeChange', 'month');\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var value = this.value,\n locale = this.locale,\n prefixCls = this.prefixCls,\n type = this.type,\n showTypeSwitch = this.showTypeSwitch,\n headerComponents = this.headerComponents;\n\n var year = value.year();\n var month = value.month();\n var yearSelect = this.yearSelectElement(year);\n var monthSelect = type === 'month' ? null : this.monthSelectElement(month);\n var switchCls = prefixCls + '-header-switcher';\n var typeSwitcher = showTypeSwitch ? h(\n 'span',\n { 'class': switchCls },\n [type === 'date' ? h(\n 'span',\n { 'class': switchCls + '-focus' },\n [locale.month]\n ) : h(\n 'span',\n {\n on: {\n 'click': this.changeTypeToDate\n },\n 'class': switchCls + '-normal' },\n [locale.month]\n ), type === 'month' ? h(\n 'span',\n { 'class': switchCls + '-focus' },\n [locale.year]\n ) : h(\n 'span',\n {\n on: {\n 'click': this.changeTypeToMonth\n },\n 'class': switchCls + '-normal' },\n [locale.year]\n )]\n ) : null;\n\n return h(\n 'div',\n { 'class': prefixCls + '-header' },\n [typeSwitcher, monthSelect, yearSelect, headerComponents]\n );\n }\n};\n\nexport default CalendarHeader;","import _extends from 'babel-runtime/helpers/extends';\nimport moment from 'moment';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getOptionProps, hasProp, getListeners } from '../../_util/props-util';\nimport DateTable from './date/DateTable';\nimport MonthTable from './month/MonthTable';\nimport CalendarMixin, { getNowByCurrentStateValue } from './mixin/CalendarMixin';\nimport CommonMixin from './mixin/CommonMixin';\nimport CalendarHeader from './full-calendar/CalendarHeader';\nimport enUs from './locale/en_US';\nvar FullCalendar = {\n name: 'FullCalendar',\n props: {\n locale: PropTypes.object.def(enUs),\n format: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.func]),\n visible: PropTypes.bool.def(true),\n prefixCls: PropTypes.string.def('rc-calendar'),\n defaultType: PropTypes.string.def('date'),\n type: PropTypes.string,\n fullscreen: PropTypes.bool.def(false),\n monthCellRender: PropTypes.func,\n dateCellRender: PropTypes.func,\n showTypeSwitch: PropTypes.bool.def(true),\n Select: PropTypes.object.isRequired,\n headerComponents: PropTypes.array,\n headerComponent: PropTypes.object, // The whole header component\n headerRender: PropTypes.func,\n showHeader: PropTypes.bool.def(true),\n disabledDate: PropTypes.func,\n value: PropTypes.object,\n defaultValue: PropTypes.object,\n selectedValue: PropTypes.object,\n defaultSelectedValue: PropTypes.object,\n renderFooter: PropTypes.func.def(function () {\n return null;\n }),\n renderSidebar: PropTypes.func.def(function () {\n return null;\n })\n },\n mixins: [BaseMixin, CommonMixin, CalendarMixin],\n data: function data() {\n var type = void 0;\n if (hasProp(this, 'type')) {\n type = this.type;\n } else {\n type = this.defaultType;\n }\n var props = this.$props;\n return {\n sType: type,\n sValue: props.value || props.defaultValue || moment(),\n sSelectedValue: props.selectedValue || props.defaultSelectedValue\n };\n },\n\n watch: {\n type: function type(val) {\n this.setState({\n sType: val\n });\n },\n value: function value(val) {\n var sValue = val || this.defaultValue || getNowByCurrentStateValue(this.sValue);\n this.setState({\n sValue: sValue\n });\n },\n selectedValue: function selectedValue(val) {\n this.setState({\n sSelectedValue: val\n });\n }\n },\n methods: {\n onMonthSelect: function onMonthSelect(value) {\n this.onSelect(value, {\n target: 'month'\n });\n },\n setType: function setType(type) {\n if (!hasProp(this, 'type')) {\n this.setState({\n sType: type\n });\n }\n this.__emit('typeChange', type);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var locale = props.locale,\n prefixCls = props.prefixCls,\n fullscreen = props.fullscreen,\n showHeader = props.showHeader,\n headerComponent = props.headerComponent,\n headerRender = props.headerRender,\n disabledDate = props.disabledDate;\n var value = this.sValue,\n type = this.sType;\n\n\n var header = null;\n if (showHeader) {\n if (headerRender) {\n header = headerRender(value, type, locale);\n } else {\n var TheHeader = headerComponent || CalendarHeader;\n var headerProps = {\n props: _extends({}, props, {\n prefixCls: prefixCls + '-full',\n type: type,\n value: value\n }),\n on: _extends({}, getListeners(this), {\n typeChange: this.setType,\n valueChange: this.setValue\n }),\n key: 'calendar-header'\n };\n header = h(TheHeader, headerProps);\n }\n }\n\n var table = type === 'date' ? h(DateTable, {\n attrs: {\n dateRender: props.dateCellRender,\n contentRender: props.dateCellContentRender,\n locale: locale,\n prefixCls: prefixCls,\n\n value: value,\n disabledDate: disabledDate\n },\n on: {\n 'select': this.onSelect\n }\n }) : h(MonthTable, {\n attrs: {\n cellRender: props.monthCellRender,\n contentRender: props.monthCellContentRender,\n locale: locale,\n\n prefixCls: prefixCls + '-month-panel',\n value: value,\n disabledDate: disabledDate\n },\n on: {\n 'select': this.onMonthSelect\n }\n });\n\n var children = [header, h(\n 'div',\n { key: 'calendar-body', 'class': prefixCls + '-calendar-body' },\n [table]\n )];\n\n var className = [prefixCls + '-full'];\n\n if (fullscreen) {\n className.push(prefixCls + '-fullscreen');\n }\n\n return this.renderRoot({\n children: children,\n 'class': className.join(' ')\n });\n }\n};\n\nexport default FullCalendar;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport classNames from 'classnames';\nimport { getOptionProps, hasProp, initDefaultProps, getAttrs, getListeners } from '../../_util/props-util';\nimport BaseMixin from '../../_util/BaseMixin';\n\nexport default {\n name: 'Checkbox',\n mixins: [BaseMixin],\n inheritAttrs: false,\n model: {\n prop: 'checked',\n event: 'change'\n },\n props: initDefaultProps({\n prefixCls: PropTypes.string,\n name: PropTypes.string,\n id: PropTypes.string,\n type: PropTypes.string,\n defaultChecked: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n checked: PropTypes.oneOfType([PropTypes.number, PropTypes.bool]),\n disabled: PropTypes.bool,\n // onFocus: PropTypes.func,\n // onBlur: PropTypes.func,\n // onChange: PropTypes.func,\n // onClick: PropTypes.func,\n tabIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n readOnly: PropTypes.bool,\n autoFocus: PropTypes.bool,\n value: PropTypes.any\n }, {\n prefixCls: 'rc-checkbox',\n type: 'checkbox',\n defaultChecked: false\n }),\n data: function data() {\n var checked = hasProp(this, 'checked') ? this.checked : this.defaultChecked;\n return {\n sChecked: checked\n };\n },\n\n watch: {\n checked: function checked(val) {\n this.sChecked = val;\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.autoFocus) {\n _this.$refs.input && _this.$refs.input.focus();\n }\n });\n },\n\n methods: {\n focus: function focus() {\n this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input.blur();\n },\n handleChange: function handleChange(e) {\n var props = getOptionProps(this);\n if (props.disabled) {\n return;\n }\n if (!('checked' in props)) {\n this.sChecked = e.target.checked;\n }\n this.$forceUpdate(); // change前,维持现有状态\n e.shiftKey = this.eventShiftKey;\n this.__emit('change', {\n target: _extends({}, props, {\n checked: e.target.checked\n }),\n stopPropagation: function stopPropagation() {\n e.stopPropagation();\n },\n preventDefault: function preventDefault() {\n e.preventDefault();\n },\n\n nativeEvent: e\n });\n this.eventShiftKey = false;\n // fix https://github.com/vueComponent/ant-design-vue/issues/3047\n if ('checked' in props) {\n this.$refs.input.checked = props.checked;\n }\n },\n onClick: function onClick(e) {\n this.__emit('click', e);\n // onChange没能获取到shiftKey,使用onClick hack\n this.eventShiftKey = e.shiftKey;\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n prefixCls = _getOptionProps.prefixCls,\n name = _getOptionProps.name,\n id = _getOptionProps.id,\n type = _getOptionProps.type,\n disabled = _getOptionProps.disabled,\n readOnly = _getOptionProps.readOnly,\n tabIndex = _getOptionProps.tabIndex,\n autoFocus = _getOptionProps.autoFocus,\n value = _getOptionProps.value,\n others = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'name', 'id', 'type', 'disabled', 'readOnly', 'tabIndex', 'autoFocus', 'value']);\n\n var attrs = getAttrs(this);\n var globalProps = Object.keys(_extends({}, others, attrs)).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {\n prev[key] = others[key];\n }\n return prev;\n }, {});\n\n var sChecked = this.sChecked;\n\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-checked', sChecked), _defineProperty(_classNames, prefixCls + '-disabled', disabled), _classNames));\n\n return h(\n 'span',\n { 'class': classString },\n [h('input', _mergeJSXProps([{\n attrs: {\n name: name,\n id: id,\n type: type,\n readOnly: readOnly,\n disabled: disabled,\n tabIndex: tabIndex,\n\n autoFocus: autoFocus\n },\n 'class': prefixCls + '-input',\n domProps: {\n 'checked': !!sChecked,\n 'value': value\n },\n ref: 'input'\n }, {\n attrs: globalProps,\n on: _extends({}, getListeners(this), {\n change: this.handleChange,\n click: this.onClick\n })\n }])), h('span', { 'class': prefixCls + '-inner' })]\n );\n }\n};","import Checkbox from './Checkbox';\n\nexport default Checkbox;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport PropTypes from '../_util/vue-types';\nimport VcCheckbox from '../vc-checkbox';\nimport classNames from 'classnames';\nimport { getOptionProps, getAttrs, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nfunction noop() {}\n\nexport default {\n name: 'ARadio',\n model: {\n prop: 'checked'\n },\n props: {\n prefixCls: PropTypes.string,\n defaultChecked: Boolean,\n checked: { type: Boolean, 'default': undefined },\n disabled: Boolean,\n isGroup: Boolean,\n value: PropTypes.any,\n name: String,\n id: String,\n autoFocus: Boolean,\n type: PropTypes.string.def('radio')\n },\n inject: {\n radioGroupContext: { 'default': undefined },\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n focus: function focus() {\n this.$refs.vcCheckbox.focus();\n },\n blur: function blur() {\n this.$refs.vcCheckbox.blur();\n },\n handleChange: function handleChange(event) {\n var targetChecked = event.target.checked;\n this.$emit('input', targetChecked);\n this.$emit('change', event);\n },\n onChange: function onChange(e) {\n this.$emit('change', e);\n if (this.radioGroupContext && this.radioGroupContext.onRadioChange) {\n this.radioGroupContext.onRadioChange(e);\n }\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var $slots = this.$slots,\n radioGroup = this.radioGroupContext;\n\n var props = getOptionProps(this);\n var children = $slots['default'];\n\n var _getListeners = getListeners(this),\n _getListeners$mouseen = _getListeners.mouseenter,\n mouseenter = _getListeners$mouseen === undefined ? noop : _getListeners$mouseen,\n _getListeners$mousele = _getListeners.mouseleave,\n mouseleave = _getListeners$mousele === undefined ? noop : _getListeners$mousele,\n restListeners = _objectWithoutProperties(_getListeners, ['mouseenter', 'mouseleave']);\n\n var customizePrefixCls = props.prefixCls,\n restProps = _objectWithoutProperties(props, ['prefixCls']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('radio', customizePrefixCls);\n\n var radioProps = {\n props: _extends({}, restProps, { prefixCls: prefixCls }),\n on: restListeners,\n attrs: getAttrs(this)\n };\n\n if (radioGroup) {\n radioProps.props.name = radioGroup.name;\n radioProps.on.change = this.onChange;\n radioProps.props.checked = props.value === radioGroup.stateValue;\n radioProps.props.disabled = props.disabled || radioGroup.disabled;\n } else {\n radioProps.on.change = this.handleChange;\n }\n var wrapperClassString = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-wrapper', true), _defineProperty(_classNames, prefixCls + '-wrapper-checked', radioProps.props.checked), _defineProperty(_classNames, prefixCls + '-wrapper-disabled', radioProps.props.disabled), _classNames));\n\n return h(\n 'label',\n { 'class': wrapperClassString, on: {\n 'mouseenter': mouseenter,\n 'mouseleave': mouseleave\n }\n },\n [h(VcCheckbox, _mergeJSXProps([radioProps, { ref: 'vcCheckbox' }])), children !== undefined ? h('span', [children]) : null]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport Radio from './Radio';\nimport { getOptionProps, filterEmpty, hasProp, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nfunction noop() {}\n\nexport default {\n name: 'ARadioGroup',\n model: {\n prop: 'value'\n },\n props: {\n prefixCls: PropTypes.string,\n defaultValue: PropTypes.any,\n value: PropTypes.any,\n size: {\n 'default': 'default',\n validator: function validator(value) {\n return ['large', 'default', 'small'].includes(value);\n }\n },\n options: {\n 'default': function _default() {\n return [];\n },\n type: Array\n },\n disabled: Boolean,\n name: String,\n buttonStyle: PropTypes.string.def('outline')\n },\n data: function data() {\n var value = this.value,\n defaultValue = this.defaultValue;\n\n this.updatingValue = false;\n return {\n stateValue: value === undefined ? defaultValue : value\n };\n },\n provide: function provide() {\n return {\n radioGroupContext: this\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n computed: {\n radioOptions: function radioOptions() {\n var disabled = this.disabled;\n\n return this.options.map(function (option) {\n return typeof option === 'string' ? { label: option, value: option } : _extends({}, option, { disabled: option.disabled === undefined ? disabled : option.disabled });\n });\n },\n classes: function classes() {\n var _ref;\n\n var prefixCls = this.prefixCls,\n size = this.size;\n\n return _ref = {}, _defineProperty(_ref, '' + prefixCls, true), _defineProperty(_ref, prefixCls + '-' + size, size), _ref;\n }\n },\n watch: {\n value: function value(val) {\n this.updatingValue = false;\n this.stateValue = val;\n }\n },\n methods: {\n onRadioChange: function onRadioChange(ev) {\n var _this = this;\n\n var lastValue = this.stateValue;\n var value = ev.target.value;\n\n if (!hasProp(this, 'value')) {\n this.stateValue = value;\n }\n // nextTick for https://github.com/vueComponent/ant-design-vue/issues/1280\n if (!this.updatingValue && value !== lastValue) {\n this.updatingValue = true;\n this.$emit('input', value);\n this.$emit('change', ev);\n }\n this.$nextTick(function () {\n _this.updatingValue = false;\n });\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n\n var _getListeners = getListeners(this),\n _getListeners$mouseen = _getListeners.mouseenter,\n mouseenter = _getListeners$mouseen === undefined ? noop : _getListeners$mouseen,\n _getListeners$mousele = _getListeners.mouseleave,\n mouseleave = _getListeners$mousele === undefined ? noop : _getListeners$mousele;\n\n var props = getOptionProps(this);\n var customizePrefixCls = props.prefixCls,\n options = props.options,\n buttonStyle = props.buttonStyle;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('radio', customizePrefixCls);\n\n var groupPrefixCls = prefixCls + '-group';\n var classString = classNames(groupPrefixCls, groupPrefixCls + '-' + buttonStyle, _defineProperty({}, groupPrefixCls + '-' + props.size, props.size));\n\n var children = filterEmpty(this.$slots['default']);\n\n // 如果存在 options, 优先使用\n if (options && options.length > 0) {\n children = options.map(function (option) {\n if (typeof option === 'string') {\n return h(\n Radio,\n {\n key: option,\n attrs: { prefixCls: prefixCls,\n disabled: props.disabled,\n value: option,\n checked: _this2.stateValue === option\n }\n },\n [option]\n );\n } else {\n return h(\n Radio,\n {\n key: 'radio-group-value-options-' + option.value,\n attrs: { prefixCls: prefixCls,\n disabled: option.disabled || props.disabled,\n value: option.value,\n checked: _this2.stateValue === option.value\n }\n },\n [option.label]\n );\n }\n });\n }\n\n return h(\n 'div',\n { 'class': classString, on: {\n 'mouseenter': mouseenter,\n 'mouseleave': mouseleave\n }\n },\n [children]\n );\n }\n};","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport Radio from './Radio';\nimport { getOptionProps, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport default {\n name: 'ARadioButton',\n props: _extends({}, Radio.props),\n inject: {\n radioGroupContext: { 'default': undefined },\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n otherProps = _objectWithoutProperties(_getOptionProps, ['prefixCls']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('radio-button', customizePrefixCls);\n\n var radioProps = {\n props: _extends({}, otherProps, {\n prefixCls: prefixCls\n }),\n on: getListeners(this)\n };\n if (this.radioGroupContext) {\n radioProps.on.change = this.radioGroupContext.onRadioChange;\n radioProps.props.checked = this.$props.value === this.radioGroupContext.stateValue;\n radioProps.props.disabled = this.$props.disabled || this.radioGroupContext.disabled;\n }\n return h(\n Radio,\n radioProps,\n [this.$slots['default']]\n );\n }\n};","import _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport Select from '../select';\nimport { Group, Button } from '../radio';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nvar Option = Select.Option;\n\n\nfunction getMonthsLocale(value) {\n var current = value.clone();\n var localeData = value.localeData();\n var months = [];\n for (var i = 0; i < 12; i++) {\n current.month(i);\n months.push(localeData.monthsShort(current));\n }\n return months;\n}\n\nexport var HeaderProps = {\n prefixCls: PropTypes.string,\n locale: PropTypes.any,\n fullscreen: PropTypes.boolean,\n yearSelectOffset: PropTypes.number,\n yearSelectTotal: PropTypes.number,\n type: PropTypes.string,\n // onValueChange: PropTypes.(value: moment.Moment) => void,\n // onTypeChange: PropTypes.(type: string) => void,\n value: PropTypes.any,\n validRange: PropTypes.array,\n headerRender: PropTypes.func\n};\n\nexport default {\n props: initDefaultProps(HeaderProps, {\n yearSelectOffset: 10,\n yearSelectTotal: 20\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n // private calenderHeaderNode: HTMLDivElement;\n methods: {\n getYearSelectElement: function getYearSelectElement(prefixCls, year) {\n var _this = this;\n\n var h = this.$createElement;\n var yearSelectOffset = this.yearSelectOffset,\n yearSelectTotal = this.yearSelectTotal,\n _locale = this.locale,\n locale = _locale === undefined ? {} : _locale,\n fullscreen = this.fullscreen,\n validRange = this.validRange;\n\n var start = year - yearSelectOffset;\n var end = start + yearSelectTotal;\n if (validRange) {\n start = validRange[0].get('year');\n end = validRange[1].get('year') + 1;\n }\n var suffix = locale.year === '年' ? '年' : '';\n\n var options = [];\n for (var index = start; index < end; index++) {\n options.push(h(\n Option,\n { key: '' + index },\n [index + suffix]\n ));\n }\n return h(\n Select,\n {\n attrs: {\n size: fullscreen ? 'default' : 'small',\n dropdownMatchSelectWidth: false,\n\n value: String(year),\n getPopupContainer: function getPopupContainer() {\n return _this.getCalenderHeaderNode();\n }\n },\n 'class': prefixCls + '-year-select',\n on: {\n 'change': this.onYearChange\n }\n },\n [options]\n );\n },\n getMonthSelectElement: function getMonthSelectElement(prefixCls, month, months) {\n var _this2 = this;\n\n var h = this.$createElement;\n var fullscreen = this.fullscreen,\n validRange = this.validRange,\n value = this.value;\n\n var options = [];\n var start = 0;\n var end = 12;\n if (validRange) {\n var _validRange = _slicedToArray(validRange, 2),\n rangeStart = _validRange[0],\n rangeEnd = _validRange[1];\n\n var currentYear = value.get('year');\n if (rangeEnd.get('year') === currentYear) {\n end = rangeEnd.get('month') + 1;\n }\n if (rangeStart.get('year') === currentYear) {\n start = rangeStart.get('month');\n }\n }\n for (var index = start; index < end; index++) {\n options.push(h(\n Option,\n { key: '' + index },\n [months[index]]\n ));\n }\n\n return h(\n Select,\n {\n attrs: {\n size: fullscreen ? 'default' : 'small',\n dropdownMatchSelectWidth: false,\n\n value: String(month),\n\n getPopupContainer: function getPopupContainer() {\n return _this2.getCalenderHeaderNode();\n }\n },\n 'class': prefixCls + '-month-select', on: {\n 'change': this.onMonthChange\n }\n },\n [options]\n );\n },\n onYearChange: function onYearChange(year) {\n var value = this.value,\n validRange = this.validRange;\n\n var newValue = value.clone();\n newValue.year(parseInt(year, 10));\n // switch the month so that it remains within range when year changes\n if (validRange) {\n var _validRange2 = _slicedToArray(validRange, 2),\n start = _validRange2[0],\n end = _validRange2[1];\n\n var newYear = newValue.get('year');\n var newMonth = newValue.get('month');\n if (newYear === end.get('year') && newMonth > end.get('month')) {\n newValue.month(end.get('month'));\n }\n if (newYear === start.get('year') && newMonth < start.get('month')) {\n newValue.month(start.get('month'));\n }\n }\n this.$emit('valueChange', newValue);\n },\n onMonthChange: function onMonthChange(month) {\n var newValue = this.value.clone();\n newValue.month(parseInt(month, 10));\n this.$emit('valueChange', newValue);\n },\n onInternalTypeChange: function onInternalTypeChange(e) {\n this.onTypeChange(e.target.value);\n },\n onTypeChange: function onTypeChange(val) {\n this.$emit('typeChange', val);\n },\n getCalenderHeaderNode: function getCalenderHeaderNode() {\n return this.$refs.calenderHeaderNode;\n },\n getMonthYearSelections: function getMonthYearSelections(getPrefixCls) {\n var _$props = this.$props,\n customizePrefixCls = _$props.prefixCls,\n type = _$props.type,\n value = _$props.value;\n\n\n var prefixCls = getPrefixCls('fullcalendar', customizePrefixCls);\n var yearReactNode = this.getYearSelectElement(prefixCls, value.year());\n var monthReactNode = type === 'month' ? this.getMonthSelectElement(prefixCls, value.month(), getMonthsLocale(value)) : null;\n return {\n yearReactNode: yearReactNode,\n monthReactNode: monthReactNode\n };\n },\n getTypeSwitch: function getTypeSwitch() {\n var h = this.$createElement;\n var _$props2 = this.$props,\n _$props2$locale = _$props2.locale,\n locale = _$props2$locale === undefined ? {} : _$props2$locale,\n type = _$props2.type,\n fullscreen = _$props2.fullscreen;\n\n var size = fullscreen ? 'default' : 'small';\n return h(\n Group,\n {\n on: {\n 'change': this.onInternalTypeChange\n },\n attrs: { value: type, size: size }\n },\n [h(\n Button,\n {\n attrs: { value: 'month' }\n },\n [locale.month]\n ), h(\n Button,\n {\n attrs: { value: 'year' }\n },\n [locale.year]\n )]\n );\n },\n onValueChange: function onValueChange() {\n this.$emit.apply(this, ['valueChange'].concat(Array.prototype.slice.call(arguments)));\n },\n headerRenderCustom: function headerRenderCustom(headerRender) {\n var _$props3 = this.$props,\n type = _$props3.type,\n value = _$props3.value;\n\n return headerRender({\n value: value,\n type: type || 'month',\n onChange: this.onValueChange,\n onTypeChange: this.onTypeChange\n });\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n headerRender = this.headerRender;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('fullcalendar', customizePrefixCls);\n var typeSwitch = this.getTypeSwitch();\n\n var _getMonthYearSelectio = this.getMonthYearSelections(getPrefixCls),\n yearReactNode = _getMonthYearSelectio.yearReactNode,\n monthReactNode = _getMonthYearSelectio.monthReactNode;\n\n return headerRender ? this.headerRenderCustom(headerRender) : h(\n 'div',\n { 'class': prefixCls + '-header', ref: 'calenderHeaderNode' },\n [yearReactNode, monthReactNode, typeSwitch]\n );\n }\n};","// https://github.com/moment/moment/issues/3650\nexport default function interopDefault(m) {\n return m[\"default\"] || m;\n}","import interopDefault from './interopDefault';\nimport * as moment from 'moment';\nimport warning from './warning';\nimport isNil from 'lodash/isNil';\n\nexport var TimeType = {\n validator: function validator(value) {\n return typeof value === 'string' || isNil(value) || moment.isMoment(value);\n }\n};\n\nexport var TimesType = {\n validator: function validator(value) {\n if (Array.isArray(value)) {\n return value.length === 0 || value.findIndex(function (val) {\n return typeof val !== 'string';\n }) === -1 || value.findIndex(function (val) {\n return !isNil(val) && !moment.isMoment(val);\n }) === -1;\n }\n return false;\n }\n};\n\nexport var TimeOrTimesType = {\n validator: function validator(value) {\n if (Array.isArray(value)) {\n return value.length === 0 || value.findIndex(function (val) {\n return typeof val !== 'string';\n }) === -1 || value.findIndex(function (val) {\n return !isNil(val) && !moment.isMoment(val);\n }) === -1;\n } else {\n return typeof value === 'string' || isNil(value) || moment.isMoment(value);\n }\n }\n};\n\nexport function checkValidate(componentName, value, propName, valueFormat) {\n var values = Array.isArray(value) ? value : [value];\n values.forEach(function (val) {\n if (!val) return;\n valueFormat && warning(interopDefault(moment)(val, valueFormat).isValid(), componentName, 'When set `valueFormat`, `' + propName + '` should provides invalidate string time. ');\n !valueFormat && warning(interopDefault(moment).isMoment(val) && val.isValid(), componentName, '`' + propName + '` provides invalidate moment time. If you want to set empty value, use `null` instead.');\n });\n}\nexport var stringToMoment = function stringToMoment(value, valueFormat) {\n if (Array.isArray(value)) {\n return value.map(function (val) {\n return typeof val === 'string' && val ? interopDefault(moment)(val, valueFormat) : val || null;\n });\n } else {\n return typeof value === 'string' && value ? interopDefault(moment)(value, valueFormat) : value || null;\n }\n};\n\nexport var momentToString = function momentToString(value, valueFormat) {\n if (Array.isArray(value)) {\n return value.map(function (val) {\n return interopDefault(moment).isMoment(val) ? val.format(valueFormat) : val;\n });\n } else {\n return interopDefault(moment).isMoment(value) ? value.format(valueFormat) : value;\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getOptionProps, hasProp, initDefaultProps, getListeners } from '../_util/props-util';\nimport * as moment from 'moment';\nimport FullCalendar from '../vc-calendar/src/FullCalendar';\nimport Header from './Header';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport interopDefault from '../_util/interopDefault';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport enUS from './locale/en_US';\nimport Base from '../base';\nimport { checkValidate, stringToMoment, momentToString, TimeType } from '../_util/moment-util';\n\nfunction noop() {\n return null;\n}\n\nfunction zerofixed(v) {\n if (v < 10) {\n return '0' + v;\n }\n return '' + v;\n}\nfunction isMomentArray(value) {\n return Array.isArray(value) && !!value.find(function (val) {\n return moment.isMoment(val);\n });\n}\nexport var CalendarMode = PropTypes.oneOf(['month', 'year']);\n\nexport var CalendarProps = function CalendarProps() {\n return {\n prefixCls: PropTypes.string,\n value: TimeType,\n defaultValue: TimeType,\n mode: CalendarMode,\n fullscreen: PropTypes.bool,\n // dateCellRender: PropTypes.func,\n // monthCellRender: PropTypes.func,\n // dateFullCellRender: PropTypes.func,\n // monthFullCellRender: PropTypes.func,\n locale: PropTypes.object,\n // onPanelChange?: (date?: moment.Moment, mode?: CalendarMode) => void;\n // onSelect?: (date?: moment.Moment) => void;\n disabledDate: PropTypes.func,\n validRange: PropTypes.custom(isMomentArray),\n headerRender: PropTypes.func,\n valueFormat: PropTypes.string\n };\n};\n\nvar Calendar = {\n name: 'ACalendar',\n mixins: [BaseMixin],\n props: initDefaultProps(CalendarProps(), {\n locale: {},\n fullscreen: true\n }),\n model: {\n prop: 'value',\n event: 'change'\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var value = this.value,\n defaultValue = this.defaultValue,\n valueFormat = this.valueFormat;\n\n var sValue = value || defaultValue || interopDefault(moment)();\n checkValidate('Calendar', defaultValue, 'defaultValue', valueFormat);\n checkValidate('Calendar', value, 'value', valueFormat);\n this._sPrefixCls = undefined;\n return {\n sValue: stringToMoment(sValue, valueFormat),\n sMode: this.mode || 'month'\n };\n },\n\n watch: {\n value: function value(val) {\n checkValidate('Calendar', val, 'value', this.valueFormat);\n this.setState({\n sValue: stringToMoment(val, this.valueFormat)\n });\n },\n mode: function mode(val) {\n this.setState({\n sMode: val\n });\n }\n },\n methods: {\n onHeaderValueChange: function onHeaderValueChange(value) {\n this.setValue(value, 'changePanel');\n },\n onHeaderTypeChange: function onHeaderTypeChange(mode) {\n this.sMode = mode;\n this.onPanelChange(this.sValue, mode);\n },\n onPanelChange: function onPanelChange(value, mode) {\n var val = this.valueFormat ? momentToString(value, this.valueFormat) : value;\n this.$emit('panelChange', val, mode);\n if (value !== this.sValue) {\n this.$emit('change', val);\n }\n },\n onSelect: function onSelect(value) {\n this.setValue(value, 'select');\n },\n setValue: function setValue(value, way) {\n var prevValue = this.value ? stringToMoment(this.value, this.valueFormat) : this.sValue;\n var mode = this.sMode,\n valueFormat = this.valueFormat;\n\n if (!hasProp(this, 'value')) {\n this.setState({ sValue: value });\n }\n if (way === 'select') {\n if (prevValue && prevValue.month() !== value.month()) {\n this.onPanelChange(value, mode);\n }\n this.$emit('select', valueFormat ? momentToString(value, valueFormat) : value);\n } else if (way === 'changePanel') {\n this.onPanelChange(value, mode);\n }\n },\n getDateRange: function getDateRange(validRange, disabledDate) {\n return function (current) {\n if (!current) {\n return false;\n }\n\n var _validRange = _slicedToArray(validRange, 2),\n startDate = _validRange[0],\n endDate = _validRange[1];\n\n var inRange = !current.isBetween(startDate, endDate, 'days', '[]');\n if (disabledDate) {\n return disabledDate(current) || inRange;\n }\n return inRange;\n };\n },\n getDefaultLocale: function getDefaultLocale() {\n var result = _extends({}, enUS, this.$props.locale);\n result.lang = _extends({}, result.lang, (this.$props.locale || {}).lang);\n return result;\n },\n monthCellRender2: function monthCellRender2(value) {\n var h = this.$createElement;\n var _sPrefixCls = this._sPrefixCls,\n $scopedSlots = this.$scopedSlots;\n\n var monthCellRender = this.monthCellRender || $scopedSlots.monthCellRender || noop;\n return h(\n 'div',\n { 'class': _sPrefixCls + '-month' },\n [h(\n 'div',\n { 'class': _sPrefixCls + '-value' },\n [value.localeData().monthsShort(value)]\n ), h(\n 'div',\n { 'class': _sPrefixCls + '-content' },\n [monthCellRender(value)]\n )]\n );\n },\n dateCellRender2: function dateCellRender2(value) {\n var h = this.$createElement;\n var _sPrefixCls = this._sPrefixCls,\n $scopedSlots = this.$scopedSlots;\n\n var dateCellRender = this.dateCellRender || $scopedSlots.dateCellRender || noop;\n return h(\n 'div',\n { 'class': _sPrefixCls + '-date' },\n [h(\n 'div',\n { 'class': _sPrefixCls + '-value' },\n [zerofixed(value.date())]\n ), h(\n 'div',\n { 'class': _sPrefixCls + '-content' },\n [dateCellRender(value)]\n )]\n );\n },\n renderCalendar: function renderCalendar(locale, localeCode) {\n var h = this.$createElement;\n\n var props = getOptionProps(this);\n var value = this.sValue,\n mode = this.sMode,\n $scopedSlots = this.$scopedSlots;\n\n if (value && localeCode) {\n value.locale(localeCode);\n }\n var customizePrefixCls = props.prefixCls,\n fullscreen = props.fullscreen,\n dateFullCellRender = props.dateFullCellRender,\n monthFullCellRender = props.monthFullCellRender;\n\n var headerRender = this.headerRender || $scopedSlots.headerRender;\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('fullcalendar', customizePrefixCls);\n\n // To support old version react.\n // Have to add prefixCls on the instance.\n // https://github.com/facebook/react/issues/12397\n this._sPrefixCls = prefixCls;\n\n var cls = '';\n if (fullscreen) {\n cls += ' ' + prefixCls + '-fullscreen';\n }\n\n var monthCellRender = monthFullCellRender || $scopedSlots.monthFullCellRender || this.monthCellRender2;\n var dateCellRender = dateFullCellRender || $scopedSlots.dateFullCellRender || this.dateCellRender2;\n\n var disabledDate = props.disabledDate;\n\n if (props.validRange) {\n disabledDate = this.getDateRange(props.validRange, disabledDate);\n }\n var fullCalendarProps = {\n props: _extends({}, props, {\n Select: {},\n locale: locale.lang,\n type: mode === 'year' ? 'month' : 'date',\n prefixCls: prefixCls,\n showHeader: false,\n value: value,\n monthCellRender: monthCellRender,\n dateCellRender: dateCellRender,\n disabledDate: disabledDate\n }),\n on: _extends({}, getListeners(this), {\n select: this.onSelect\n })\n };\n return h(\n 'div',\n { 'class': cls },\n [h(Header, {\n attrs: {\n fullscreen: fullscreen,\n type: mode,\n headerRender: headerRender,\n value: value,\n locale: locale.lang,\n prefixCls: prefixCls,\n\n validRange: props.validRange\n },\n on: {\n 'typeChange': this.onHeaderTypeChange,\n 'valueChange': this.onHeaderValueChange\n }\n }), h(FullCalendar, fullCalendarProps)]\n );\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n return h(LocaleReceiver, {\n attrs: {\n componentName: 'Calendar',\n defaultLocale: this.getDefaultLocale\n },\n scopedSlots: { 'default': this.renderCalendar }\n });\n }\n};\n\n/* istanbul ignore next */\nCalendar.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Calendar.name, Calendar);\n};\nexport { HeaderProps } from './Header';\nexport default Calendar;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropTypes from '../../_util/vue-types';\nimport KeyCode from '../../_util/KeyCode';\n\nvar sentinelStyle = { width: 0, height: 0, overflow: 'hidden', position: 'absolute' };\nexport default {\n name: 'Sentinel',\n props: {\n setRef: PropTypes.func,\n prevElement: PropTypes.any,\n nextElement: PropTypes.any\n },\n methods: {\n onKeyDown: function onKeyDown(_ref) {\n var target = _ref.target,\n which = _ref.which,\n shiftKey = _ref.shiftKey;\n var _$props = this.$props,\n nextElement = _$props.nextElement,\n prevElement = _$props.prevElement;\n\n if (which !== KeyCode.TAB || document.activeElement !== target) return;\n\n // Tab next\n if (!shiftKey && nextElement) {\n nextElement.focus();\n }\n\n // Tab prev\n if (shiftKey && prevElement) {\n prevElement.focus();\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n var setRef = this.$props.setRef;\n\n\n return h(\n 'div',\n _mergeJSXProps([{\n attrs: {\n tabIndex: 0\n }\n }, {\n directives: [{\n name: 'ant-ref',\n value: setRef\n }]\n }, {\n style: sentinelStyle,\n on: {\n 'keydown': this.onKeyDown\n },\n attrs: {\n role: 'presentation'\n }\n }]),\n [this.$slots['default']]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../_util/vue-types';\nimport { getComponentFromProp } from '../../_util/props-util';\nimport Sentinel from './Sentinel';\n\nexport default {\n name: 'TabPane',\n props: {\n active: PropTypes.bool,\n destroyInactiveTabPane: PropTypes.bool,\n forceRender: PropTypes.bool,\n placeholder: PropTypes.any,\n rootPrefixCls: PropTypes.string,\n tab: PropTypes.any,\n closable: PropTypes.bool,\n disabled: PropTypes.bool\n },\n inject: {\n sentinelContext: { 'default': function _default() {\n return {};\n } }\n },\n render: function render() {\n var _cls;\n\n var h = arguments[0];\n var _$props = this.$props,\n destroyInactiveTabPane = _$props.destroyInactiveTabPane,\n active = _$props.active,\n forceRender = _$props.forceRender,\n rootPrefixCls = _$props.rootPrefixCls;\n\n var children = this.$slots['default'];\n var placeholder = getComponentFromProp(this, 'placeholder');\n this._isActived = this._isActived || active;\n var prefixCls = rootPrefixCls + '-tabpane';\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls, 1), _defineProperty(_cls, prefixCls + '-inactive', !active), _defineProperty(_cls, prefixCls + '-active', active), _cls);\n var isRender = destroyInactiveTabPane ? active : this._isActived;\n var shouldRender = isRender || forceRender;\n var _sentinelContext = this.sentinelContext,\n sentinelStart = _sentinelContext.sentinelStart,\n sentinelEnd = _sentinelContext.sentinelEnd,\n setPanelSentinelStart = _sentinelContext.setPanelSentinelStart,\n setPanelSentinelEnd = _sentinelContext.setPanelSentinelEnd;\n\n var panelSentinelStart = void 0;\n var panelSentinelEnd = void 0;\n if (active && shouldRender) {\n panelSentinelStart = h(Sentinel, {\n attrs: { setRef: setPanelSentinelStart, prevElement: sentinelStart }\n });\n panelSentinelEnd = h(Sentinel, {\n attrs: { setRef: setPanelSentinelEnd, nextElement: sentinelEnd }\n });\n }\n return h(\n 'div',\n { 'class': cls, attrs: { role: 'tabpanel', 'aria-hidden': active ? 'false' : 'true' }\n },\n [panelSentinelStart, shouldRender ? children : placeholder, panelSentinelEnd]\n );\n }\n};","export default {\n /**\n * LEFT\n */\n LEFT: 37, // also NUM_WEST\n /**\n * UP\n */\n UP: 38, // also NUM_NORTH\n /**\n * RIGHT\n */\n RIGHT: 39, // also NUM_EAST\n /**\n * DOWN\n */\n DOWN: 40 // also NUM_SOUTH\n};","var isValid = function isValid(value) {\n return value !== undefined && value !== null && value !== '';\n};\nexport default isValid;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport omit from 'omit.js';\nimport BaseMixin from '../../_util/BaseMixin';\nimport PropTypes from '../../_util/vue-types';\nimport raf from 'raf';\nimport KeyCode from './KeyCode';\nimport { getOptionProps, getListeners, getValueByProp } from '../../_util/props-util';\nimport { cloneElement } from '../../_util/vnode';\nimport Sentinel from './Sentinel';\nimport isValid from '../../_util/isValid';\n\nfunction getDefaultActiveKey(props) {\n var activeKey = void 0;\n var children = props.children;\n children.forEach(function (child) {\n if (child && !isValid(activeKey) && !child.disabled) {\n activeKey = child.key;\n }\n });\n return activeKey;\n}\n\nfunction activeKeyIsValid(props, key) {\n var children = props.children;\n var keys = children.map(function (child) {\n return child && child.key;\n });\n return keys.indexOf(key) >= 0;\n}\n\nexport default {\n name: 'Tabs',\n mixins: [BaseMixin],\n model: {\n prop: 'activeKey',\n event: 'change'\n },\n props: {\n destroyInactiveTabPane: PropTypes.bool,\n renderTabBar: PropTypes.func.isRequired,\n renderTabContent: PropTypes.func.isRequired,\n navWrapper: PropTypes.func.def(function (arg) {\n return arg;\n }),\n children: PropTypes.any.def([]),\n prefixCls: PropTypes.string.def('ant-tabs'),\n tabBarPosition: PropTypes.string.def('top'),\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n defaultActiveKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n __propsSymbol__: PropTypes.any,\n direction: PropTypes.string.def('ltr'),\n tabBarGutter: PropTypes.number\n },\n data: function data() {\n var props = getOptionProps(this);\n var activeKey = void 0;\n if ('activeKey' in props) {\n activeKey = props.activeKey;\n } else if ('defaultActiveKey' in props) {\n activeKey = props.defaultActiveKey;\n } else {\n activeKey = getDefaultActiveKey(props);\n }\n return {\n _activeKey: activeKey\n };\n },\n provide: function provide() {\n return {\n sentinelContext: this\n };\n },\n\n watch: {\n __propsSymbol__: function __propsSymbol__() {\n var nextProps = getOptionProps(this);\n if ('activeKey' in nextProps) {\n this.setState({\n _activeKey: nextProps.activeKey\n });\n } else if (!activeKeyIsValid(nextProps, this.$data._activeKey)) {\n // https://github.com/ant-design/ant-design/issues/7093\n this.setState({\n _activeKey: getDefaultActiveKey(nextProps)\n });\n }\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.destroy = true;\n raf.cancel(this.sentinelId);\n },\n\n methods: {\n onTabClick: function onTabClick(activeKey, e) {\n if (this.tabBar.componentOptions && this.tabBar.componentOptions.listeners && this.tabBar.componentOptions.listeners.tabClick) {\n this.tabBar.componentOptions.listeners.tabClick(activeKey, e);\n }\n this.setActiveKey(activeKey);\n },\n onNavKeyDown: function onNavKeyDown(e) {\n var eventKeyCode = e.keyCode;\n if (eventKeyCode === KeyCode.RIGHT || eventKeyCode === KeyCode.DOWN) {\n e.preventDefault();\n var nextKey = this.getNextActiveKey(true);\n this.onTabClick(nextKey);\n } else if (eventKeyCode === KeyCode.LEFT || eventKeyCode === KeyCode.UP) {\n e.preventDefault();\n var previousKey = this.getNextActiveKey(false);\n this.onTabClick(previousKey);\n }\n },\n onScroll: function onScroll(_ref) {\n var target = _ref.target,\n currentTarget = _ref.currentTarget;\n\n if (target === currentTarget && target.scrollLeft > 0) {\n target.scrollLeft = 0;\n }\n },\n\n\n // Sentinel for tab index\n setSentinelStart: function setSentinelStart(node) {\n this.sentinelStart = node;\n },\n setSentinelEnd: function setSentinelEnd(node) {\n this.sentinelEnd = node;\n },\n setPanelSentinelStart: function setPanelSentinelStart(node) {\n if (node !== this.panelSentinelStart) {\n this.updateSentinelContext();\n }\n this.panelSentinelStart = node;\n },\n setPanelSentinelEnd: function setPanelSentinelEnd(node) {\n if (node !== this.panelSentinelEnd) {\n this.updateSentinelContext();\n }\n this.panelSentinelEnd = node;\n },\n setActiveKey: function setActiveKey(activeKey) {\n if (this.$data._activeKey !== activeKey) {\n var props = getOptionProps(this);\n if (!('activeKey' in props)) {\n this.setState({\n _activeKey: activeKey\n });\n }\n this.__emit('change', activeKey);\n }\n },\n getNextActiveKey: function getNextActiveKey(next) {\n var activeKey = this.$data._activeKey;\n var children = [];\n this.$props.children.forEach(function (c) {\n var disabled = getValueByProp(c, 'disabled');\n if (c && !disabled && disabled !== '') {\n if (next) {\n children.push(c);\n } else {\n children.unshift(c);\n }\n }\n });\n var length = children.length;\n var ret = length && children[0].key;\n children.forEach(function (child, i) {\n if (child.key === activeKey) {\n if (i === length - 1) {\n ret = children[0].key;\n } else {\n ret = children[i + 1].key;\n }\n }\n });\n return ret;\n },\n updateSentinelContext: function updateSentinelContext() {\n var _this = this;\n\n if (this.destroy) return;\n\n raf.cancel(this.sentinelId);\n this.sentinelId = raf(function () {\n if (_this.destroy) return;\n _this.$forceUpdate();\n });\n }\n },\n render: function render() {\n var _cls;\n\n var h = arguments[0];\n\n var props = this.$props;\n var prefixCls = props.prefixCls,\n navWrapper = props.navWrapper,\n tabBarPosition = props.tabBarPosition,\n renderTabContent = props.renderTabContent,\n renderTabBar = props.renderTabBar,\n destroyInactiveTabPane = props.destroyInactiveTabPane,\n direction = props.direction,\n tabBarGutter = props.tabBarGutter;\n\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls, 1), _defineProperty(_cls, prefixCls + '-' + tabBarPosition, 1), _defineProperty(_cls, prefixCls + '-rtl', direction === 'rtl'), _cls);\n\n this.tabBar = renderTabBar();\n var tabBar = cloneElement(this.tabBar, {\n props: {\n prefixCls: prefixCls,\n navWrapper: navWrapper,\n tabBarPosition: tabBarPosition,\n panels: props.children,\n activeKey: this.$data._activeKey,\n direction: direction,\n tabBarGutter: tabBarGutter\n },\n on: {\n keydown: this.onNavKeyDown,\n tabClick: this.onTabClick\n },\n key: 'tabBar'\n });\n var tabContent = cloneElement(renderTabContent(), {\n props: {\n prefixCls: prefixCls,\n tabBarPosition: tabBarPosition,\n activeKey: this.$data._activeKey,\n destroyInactiveTabPane: destroyInactiveTabPane,\n direction: direction\n },\n on: {\n change: this.setActiveKey\n },\n children: props.children,\n key: 'tabContent'\n });\n\n var sentinelStart = h(Sentinel, {\n key: 'sentinelStart',\n attrs: { setRef: this.setSentinelStart,\n nextElement: this.panelSentinelStart\n }\n });\n var sentinelEnd = h(Sentinel, {\n key: 'sentinelEnd',\n attrs: { setRef: this.setSentinelEnd,\n prevElement: this.panelSentinelEnd\n }\n });\n\n var contents = [];\n\n if (tabBarPosition === 'bottom') {\n contents.push(sentinelStart, tabContent, sentinelEnd, tabBar);\n } else {\n contents.push(tabBar, sentinelStart, tabContent, sentinelEnd);\n }\n var listeners = _extends({}, omit(getListeners(this), ['change']), {\n scroll: this.onScroll\n });\n return h(\n 'div',\n { on: listeners, 'class': cls },\n [contents]\n );\n }\n};","// based on rc-tabs 9.7.0\nimport ref from 'vue-ref';\nimport Vue from 'vue';\nimport Tabs from './Tabs';\nimport TabPane from './TabPane';\nimport TabContent from './TabContent';\n\nVue.use(ref, { name: 'ant-ref' });\n\nexport default Tabs;\nexport { TabPane, TabContent };","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nexport function toArray(children) {\n var c = [];\n children.forEach(function (child) {\n if (child.data) {\n c.push(child);\n }\n });\n return c;\n}\n\nexport function getActiveIndex(children, activeKey) {\n var c = toArray(children);\n for (var i = 0; i < c.length; i++) {\n if (c[i].key === activeKey) {\n return i;\n }\n }\n return -1;\n}\n\nexport function getActiveKey(children, index) {\n var c = toArray(children);\n return c[index].key;\n}\n\nexport function setTransform(style, v) {\n style.transform = v;\n style.webkitTransform = v;\n style.mozTransform = v;\n}\n\nexport function isTransform3dSupported(style) {\n return ('transform' in style || 'webkitTransform' in style || 'MozTransform' in style) && window.atob;\n}\n\nexport function setTransition(style, v) {\n style.transition = v;\n style.webkitTransition = v;\n style.MozTransition = v;\n}\nexport function getTransformPropValue(v) {\n return {\n transform: v,\n WebkitTransform: v,\n MozTransform: v\n };\n}\n\nexport function isVertical(tabBarPosition) {\n return tabBarPosition === 'left' || tabBarPosition === 'right';\n}\n\nexport function getTransformByIndex(index, tabBarPosition) {\n var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'ltr';\n\n var translate = isVertical(tabBarPosition) ? 'translateY' : 'translateX';\n if (!isVertical(tabBarPosition) && direction === 'rtl') {\n return translate + '(' + index * 100 + '%) translateZ(0)';\n }\n return translate + '(' + -index * 100 + '%) translateZ(0)';\n}\n\nexport function getMarginStyle(index, tabBarPosition) {\n var marginDirection = isVertical(tabBarPosition) ? 'marginTop' : 'marginLeft';\n return _defineProperty({}, marginDirection, -index * 100 + '%');\n}\n\nexport function getStyle(el, property) {\n return +window.getComputedStyle(el).getPropertyValue(property).replace('px', '');\n}\n\nexport function setPxStyle(el, value, vertical) {\n value = vertical ? '0px, ' + value + 'px, 0px' : value + 'px, 0px, 0px';\n setTransform(el.style, 'translate3d(' + value + ')');\n}\n\nexport function getDataAttr(props) {\n return Object.keys(props).reduce(function (prev, key) {\n if (key.substr(0, 5) === 'aria-' || key.substr(0, 5) === 'data-' || key === 'role') {\n prev[key] = props[key];\n }\n return prev;\n }, {});\n}\n\nfunction toNum(style, property) {\n return +style.getPropertyValue(property).replace('px', '');\n}\n\nfunction getTypeValue(start, current, end, tabNode, wrapperNode) {\n var total = getStyle(wrapperNode, 'padding-' + start);\n if (!tabNode || !tabNode.parentNode) {\n return total;\n }\n\n var childNodes = tabNode.parentNode.childNodes;\n\n Array.prototype.some.call(childNodes, function (node) {\n var style = window.getComputedStyle(node);\n if (node !== tabNode) {\n total += toNum(style, 'margin-' + start);\n total += node[current];\n total += toNum(style, 'margin-' + end);\n\n if (style.boxSizing === 'content-box') {\n total += toNum(style, 'border-' + start + '-width') + toNum(style, 'border-' + end + '-width');\n }\n return false;\n }\n\n // We need count current node margin\n // ref: https://github.com/react-component/tabs/pull/139#issuecomment-431005262\n total += toNum(style, 'margin-' + start);\n\n return true;\n });\n\n return total;\n}\n\nexport function getLeft(tabNode, wrapperNode) {\n return getTypeValue('left', 'offsetWidth', 'right', tabNode, wrapperNode);\n}\n\nexport function getTop(tabNode, wrapperNode) {\n return getTypeValue('top', 'offsetHeight', 'bottom', tabNode, wrapperNode);\n}","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../_util/vue-types';\nimport { cloneElement } from '../../_util/vnode';\nimport { getTransformByIndex, getActiveIndex, getTransformPropValue, getMarginStyle } from './utils';\nexport default {\n name: 'TabContent',\n props: {\n animated: { type: Boolean, 'default': true },\n animatedWithMargin: { type: Boolean, 'default': true },\n prefixCls: {\n 'default': 'ant-tabs',\n type: String\n },\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tabBarPosition: String,\n direction: PropTypes.string,\n destroyInactiveTabPane: PropTypes.bool\n },\n computed: {\n classes: function classes() {\n var _ref;\n\n var animated = this.animated,\n prefixCls = this.prefixCls;\n\n return _ref = {}, _defineProperty(_ref, prefixCls + '-content', true), _defineProperty(_ref, animated ? prefixCls + '-content-animated' : prefixCls + '-content-no-animated', true), _ref;\n }\n },\n methods: {\n getTabPanes: function getTabPanes() {\n var props = this.$props;\n var activeKey = props.activeKey;\n var children = this.$slots['default'] || [];\n var newChildren = [];\n\n children.forEach(function (child) {\n if (!child) {\n return;\n }\n var key = child.key;\n var active = activeKey === key;\n newChildren.push(cloneElement(child, {\n props: {\n active: active,\n destroyInactiveTabPane: props.destroyInactiveTabPane,\n rootPrefixCls: props.prefixCls\n }\n }));\n });\n\n return newChildren;\n }\n },\n render: function render() {\n var h = arguments[0];\n var activeKey = this.activeKey,\n tabBarPosition = this.tabBarPosition,\n animated = this.animated,\n animatedWithMargin = this.animatedWithMargin,\n direction = this.direction,\n classes = this.classes;\n\n var style = {};\n if (animated && this.$slots['default']) {\n var activeIndex = getActiveIndex(this.$slots['default'], activeKey);\n if (activeIndex !== -1) {\n var animatedStyle = animatedWithMargin ? getMarginStyle(activeIndex, tabBarPosition) : getTransformPropValue(getTransformByIndex(activeIndex, tabBarPosition, direction));\n style = animatedStyle;\n } else {\n style = {\n display: 'none'\n };\n }\n }\n return h(\n 'div',\n { 'class': classes, style: style },\n [this.getTabPanes()]\n );\n }\n};","var isStyleSupport = function isStyleSupport(styleName) {\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n var styleNameList = Array.isArray(styleName) ? styleName : [styleName];\n var documentElement = window.document.documentElement;\n\n\n return styleNameList.some(function (name) {\n return name in documentElement.style;\n });\n }\n return false;\n};\n\nexport var isFlexSupported = isStyleSupport(['flex', 'webkitFlex', 'Flex', 'msFlex']);\n\nexport default isStyleSupport;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../_util/vue-types';\nimport { setTransform, isTransform3dSupported, getLeft, getStyle, getTop, getActiveIndex } from './utils';\nimport BaseMixin from '../../_util/BaseMixin';\n\nfunction componentDidUpdate(component, init) {\n var _component$$props = component.$props,\n _component$$props$sty = _component$$props.styles,\n styles = _component$$props$sty === undefined ? {} : _component$$props$sty,\n panels = _component$$props.panels,\n activeKey = _component$$props.activeKey,\n direction = _component$$props.direction;\n\n var rootNode = component.getRef('root');\n var wrapNode = component.getRef('nav') || rootNode;\n var inkBarNode = component.getRef('inkBar');\n var activeTab = component.getRef('activeTab');\n var inkBarNodeStyle = inkBarNode.style;\n var tabBarPosition = component.$props.tabBarPosition;\n var activeIndex = getActiveIndex(panels, activeKey);\n if (init) {\n // prevent mount animation\n inkBarNodeStyle.display = 'none';\n }\n if (activeTab) {\n var tabNode = activeTab;\n var transformSupported = isTransform3dSupported(inkBarNodeStyle);\n\n // Reset current style\n setTransform(inkBarNodeStyle, '');\n inkBarNodeStyle.width = '';\n inkBarNodeStyle.height = '';\n inkBarNodeStyle.left = '';\n inkBarNodeStyle.top = '';\n inkBarNodeStyle.bottom = '';\n inkBarNodeStyle.right = '';\n\n if (tabBarPosition === 'top' || tabBarPosition === 'bottom') {\n var left = getLeft(tabNode, wrapNode);\n var width = tabNode.offsetWidth;\n // If tabNode'width width equal to wrapNode'width when tabBarPosition is top or bottom\n // It means no css working, then ink bar should not have width until css is loaded\n // Fix https://github.com/ant-design/ant-design/issues/7564\n if (width === rootNode.offsetWidth) {\n width = 0;\n } else if (styles.inkBar && styles.inkBar.width !== undefined) {\n width = parseFloat(styles.inkBar.width, 10);\n if (width) {\n left += (tabNode.offsetWidth - width) / 2;\n }\n }\n if (direction === 'rtl') {\n left = getStyle(tabNode, 'margin-left') - left;\n }\n // use 3d gpu to optimize render\n if (transformSupported) {\n setTransform(inkBarNodeStyle, 'translate3d(' + left + 'px,0,0)');\n } else {\n inkBarNodeStyle.left = left + 'px';\n }\n inkBarNodeStyle.width = width + 'px';\n } else {\n var top = getTop(tabNode, wrapNode, true);\n var height = tabNode.offsetHeight;\n if (styles.inkBar && styles.inkBar.height !== undefined) {\n height = parseFloat(styles.inkBar.height, 10);\n if (height) {\n top += (tabNode.offsetHeight - height) / 2;\n }\n }\n if (transformSupported) {\n setTransform(inkBarNodeStyle, 'translate3d(0,' + top + 'px,0)');\n inkBarNodeStyle.top = '0';\n } else {\n inkBarNodeStyle.top = top + 'px';\n }\n inkBarNodeStyle.height = height + 'px';\n }\n }\n inkBarNodeStyle.display = activeIndex !== -1 ? 'block' : 'none';\n}\n\nexport default {\n name: 'InkTabBarNode',\n mixins: [BaseMixin],\n props: {\n inkBarAnimated: {\n type: Boolean,\n 'default': true\n },\n direction: PropTypes.string,\n prefixCls: String,\n styles: Object,\n tabBarPosition: String,\n saveRef: PropTypes.func.def(function () {}),\n getRef: PropTypes.func.def(function () {}),\n panels: PropTypes.array,\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n },\n updated: function updated() {\n this.$nextTick(function () {\n componentDidUpdate(this);\n });\n },\n mounted: function mounted() {\n this.$nextTick(function () {\n componentDidUpdate(this, true);\n });\n },\n render: function render() {\n var _classes;\n\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n _styles = this.styles,\n styles = _styles === undefined ? {} : _styles,\n inkBarAnimated = this.inkBarAnimated;\n\n var className = prefixCls + '-ink-bar';\n var classes = (_classes = {}, _defineProperty(_classes, className, true), _defineProperty(_classes, inkBarAnimated ? className + '-animated' : className + '-no-animated', true), _classes);\n return h('div', _mergeJSXProps([{\n style: styles.inkBar,\n 'class': classes,\n key: 'inkBar'\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.saveRef('inkBar')\n }]\n }]));\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport warning from 'warning';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getOptionProps, getComponentFromProp } from '../../_util/props-util';\nimport { isVertical } from './utils';\nfunction noop() {}\nexport default {\n name: 'TabBarTabsNode',\n mixins: [BaseMixin],\n props: {\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n panels: PropTypes.any.def([]),\n prefixCls: PropTypes.string.def(''),\n tabBarGutter: PropTypes.any.def(null),\n onTabClick: PropTypes.func,\n saveRef: PropTypes.func.def(noop),\n getRef: PropTypes.func.def(noop),\n renderTabBarNode: PropTypes.func,\n tabBarPosition: PropTypes.string,\n direction: PropTypes.string\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n var _$props = this.$props,\n children = _$props.panels,\n activeKey = _$props.activeKey,\n prefixCls = _$props.prefixCls,\n tabBarGutter = _$props.tabBarGutter,\n saveRef = _$props.saveRef,\n tabBarPosition = _$props.tabBarPosition,\n direction = _$props.direction;\n\n var rst = [];\n var renderTabBarNode = this.renderTabBarNode || this.$scopedSlots.renderTabBarNode;\n children.forEach(function (child, index) {\n if (!child) {\n return;\n }\n var props = getOptionProps(child);\n var key = child.key;\n var cls = activeKey === key ? prefixCls + '-tab-active' : '';\n cls += ' ' + prefixCls + '-tab';\n var events = { on: {} };\n var disabled = props.disabled || props.disabled === '';\n if (disabled) {\n cls += ' ' + prefixCls + '-tab-disabled';\n } else {\n events.on.click = function () {\n _this.__emit('tabClick', key);\n };\n }\n var directives = [];\n if (activeKey === key) {\n directives.push({\n name: 'ant-ref',\n value: saveRef('activeTab')\n });\n }\n var tab = getComponentFromProp(child, 'tab');\n var gutter = tabBarGutter && index === children.length - 1 ? 0 : tabBarGutter;\n gutter = typeof gutter === 'number' ? gutter + 'px' : gutter;\n var marginProperty = direction === 'rtl' ? 'marginLeft' : 'marginRight';\n var style = _defineProperty({}, isVertical(tabBarPosition) ? 'marginBottom' : marginProperty, gutter);\n warning(tab !== undefined, 'There must be `tab` property or slot on children of Tabs.');\n var node = h(\n 'div',\n _mergeJSXProps([{\n attrs: {\n role: 'tab',\n 'aria-disabled': disabled ? 'true' : 'false',\n 'aria-selected': activeKey === key ? 'true' : 'false'\n }\n }, events, {\n 'class': cls,\n key: key,\n style: style\n }, { directives: directives }]),\n [tab]\n );\n if (renderTabBarNode) {\n node = renderTabBarNode(node);\n }\n\n rst.push(node);\n });\n\n return h(\n 'div',\n {\n directives: [{\n name: 'ant-ref',\n value: this.saveRef('navTabsContainer')\n }]\n },\n [rst]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport { cloneElement } from '../../_util/vnode';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nfunction noop() {}\nexport default {\n name: 'TabBarRootNode',\n mixins: [BaseMixin],\n props: {\n saveRef: PropTypes.func.def(noop),\n getRef: PropTypes.func.def(noop),\n prefixCls: PropTypes.string.def(''),\n tabBarPosition: PropTypes.string.def('top'),\n extraContent: PropTypes.any\n },\n methods: {\n onKeyDown: function onKeyDown(e) {\n this.__emit('keydown', e);\n }\n },\n render: function render() {\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n onKeyDown = this.onKeyDown,\n tabBarPosition = this.tabBarPosition,\n extraContent = this.extraContent;\n\n var cls = _defineProperty({}, prefixCls + '-bar', true);\n var topOrBottom = tabBarPosition === 'top' || tabBarPosition === 'bottom';\n var tabBarExtraContentStyle = topOrBottom ? { float: 'right' } : {};\n var children = this.$slots['default'];\n var newChildren = children;\n if (extraContent) {\n newChildren = [cloneElement(extraContent, {\n key: 'extra',\n style: _extends({}, tabBarExtraContentStyle)\n }), cloneElement(children, { key: 'content' })];\n newChildren = topOrBottom ? newChildren : newChildren.reverse();\n }\n\n return h(\n 'div',\n _mergeJSXProps([{\n attrs: {\n role: 'tablist',\n\n tabIndex: '0'\n },\n 'class': cls, on: {\n 'keydown': onKeyDown\n }\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.saveRef('root')\n }]\n }]),\n [newChildren]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport debounce from 'lodash/debounce';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getComponentFromProp } from '../../_util/props-util';\nimport { setTransform, isTransform3dSupported } from './utils';\n\nfunction noop() {}\nexport default {\n name: 'ScrollableTabBarNode',\n mixins: [BaseMixin],\n props: {\n activeKey: PropTypes.any,\n getRef: PropTypes.func.def(function () {}),\n saveRef: PropTypes.func.def(function () {}),\n tabBarPosition: PropTypes.oneOf(['left', 'right', 'top', 'bottom']).def('left'),\n prefixCls: PropTypes.string.def(''),\n scrollAnimated: PropTypes.bool.def(true),\n navWrapper: PropTypes.func.def(function (arg) {\n return arg;\n }),\n prevIcon: PropTypes.any,\n nextIcon: PropTypes.any,\n direction: PropTypes.string\n },\n\n data: function data() {\n this.offset = 0;\n this.prevProps = _extends({}, this.$props);\n return {\n next: false,\n prev: false\n };\n },\n\n watch: {\n tabBarPosition: function tabBarPosition() {\n var _this = this;\n\n this.tabBarPositionChange = true;\n this.$nextTick(function () {\n _this.setOffset(0);\n });\n }\n },\n\n mounted: function mounted() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.updatedCal();\n _this2.debouncedResize = debounce(function () {\n _this2.setNextPrev();\n _this2.scrollToActiveTab();\n }, 200);\n _this2.resizeObserver = new ResizeObserver(_this2.debouncedResize);\n _this2.resizeObserver.observe(_this2.$props.getRef('container'));\n });\n },\n updated: function updated() {\n var _this3 = this;\n\n this.$nextTick(function () {\n _this3.updatedCal(_this3.prevProps);\n _this3.prevProps = _extends({}, _this3.$props);\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n if (this.debouncedResize && this.debouncedResize.cancel) {\n this.debouncedResize.cancel();\n }\n },\n\n methods: {\n updatedCal: function updatedCal(prevProps) {\n var _this4 = this;\n\n var props = this.$props;\n if (prevProps && prevProps.tabBarPosition !== props.tabBarPosition) {\n this.setOffset(0);\n return;\n }\n // wait next, prev show hide\n if (this.isNextPrevShown(this.$data) !== this.isNextPrevShown(this.setNextPrev())) {\n this.$forceUpdate();\n this.$nextTick(function () {\n _this4.scrollToActiveTab();\n });\n } else if (!prevProps || props.activeKey !== prevProps.activeKey) {\n // can not use props.activeKey\n this.scrollToActiveTab();\n }\n },\n setNextPrev: function setNextPrev() {\n var navNode = this.$props.getRef('nav');\n var navTabsContainer = this.$props.getRef('navTabsContainer');\n var navNodeWH = this.getScrollWH(navTabsContainer || navNode);\n // Add 1px to fix `offsetWidth` with decimal in Chrome not correct handle\n // https://github.com/ant-design/ant-design/issues/13423\n var containerWH = this.getOffsetWH(this.$props.getRef('container')) + 1;\n var navWrapNodeWH = this.getOffsetWH(this.$props.getRef('navWrap'));\n var offset = this.offset;\n\n var minOffset = containerWH - navNodeWH;\n var next = this.next,\n prev = this.prev;\n\n if (minOffset >= 0) {\n next = false;\n this.setOffset(0, false);\n offset = 0;\n } else if (minOffset < offset) {\n next = true;\n } else {\n next = false;\n // Fix https://github.com/ant-design/ant-design/issues/8861\n // Test with container offset which is stable\n // and set the offset of the nav wrap node\n var realOffset = navWrapNodeWH - navNodeWH;\n this.setOffset(realOffset, false);\n offset = realOffset;\n }\n\n if (offset < 0) {\n prev = true;\n } else {\n prev = false;\n }\n\n this.setNext(next);\n this.setPrev(prev);\n return {\n next: next,\n prev: prev\n };\n },\n getOffsetWH: function getOffsetWH(node) {\n var tabBarPosition = this.$props.tabBarPosition;\n var prop = 'offsetWidth';\n if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n prop = 'offsetHeight';\n }\n return node[prop];\n },\n getScrollWH: function getScrollWH(node) {\n var tabBarPosition = this.tabBarPosition;\n var prop = 'scrollWidth';\n if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n prop = 'scrollHeight';\n }\n return node[prop];\n },\n getOffsetLT: function getOffsetLT(node) {\n var tabBarPosition = this.$props.tabBarPosition;\n var prop = 'left';\n if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n prop = 'top';\n }\n return node.getBoundingClientRect()[prop];\n },\n setOffset: function setOffset(offset) {\n var checkNextPrev = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var target = Math.min(0, offset);\n if (this.offset !== target) {\n this.offset = target;\n var navOffset = {};\n var tabBarPosition = this.$props.tabBarPosition;\n var navStyle = this.$props.getRef('nav').style;\n var transformSupported = isTransform3dSupported(navStyle);\n if (tabBarPosition === 'left' || tabBarPosition === 'right') {\n if (transformSupported) {\n navOffset = {\n value: 'translate3d(0,' + target + 'px,0)'\n };\n } else {\n navOffset = {\n name: 'top',\n value: target + 'px'\n };\n }\n } else if (transformSupported) {\n if (this.$props.direction === 'rtl') {\n target = -target;\n }\n navOffset = {\n value: 'translate3d(' + target + 'px,0,0)'\n };\n } else {\n navOffset = {\n name: 'left',\n value: target + 'px'\n };\n }\n if (transformSupported) {\n setTransform(navStyle, navOffset.value);\n } else {\n navStyle[navOffset.name] = navOffset.value;\n }\n if (checkNextPrev) {\n this.setNextPrev();\n }\n }\n },\n setPrev: function setPrev(v) {\n if (this.prev !== v) {\n this.prev = v;\n }\n },\n setNext: function setNext(v) {\n if (!v) {\n // debugger\n }\n if (this.next !== v) {\n this.next = v;\n }\n },\n isNextPrevShown: function isNextPrevShown(state) {\n if (state) {\n return state.next || state.prev;\n }\n return this.next || this.prev;\n },\n prevTransitionEnd: function prevTransitionEnd(e) {\n if (e.propertyName !== 'opacity') {\n return;\n }\n var container = this.$props.getRef('container');\n this.scrollToActiveTab({\n target: container,\n currentTarget: container\n });\n },\n scrollToActiveTab: function scrollToActiveTab(e) {\n var activeTab = this.$props.getRef('activeTab');\n var navWrap = this.$props.getRef('navWrap');\n if (e && e.target !== e.currentTarget || !activeTab) {\n return;\n }\n\n // when not scrollable or enter scrollable first time, don't emit scrolling\n var needToSroll = this.isNextPrevShown() && this.lastNextPrevShown;\n this.lastNextPrevShown = this.isNextPrevShown();\n if (!needToSroll) {\n return;\n }\n\n var activeTabWH = this.getScrollWH(activeTab);\n var navWrapNodeWH = this.getOffsetWH(navWrap);\n var offset = this.offset;\n\n var wrapOffset = this.getOffsetLT(navWrap);\n var activeTabOffset = this.getOffsetLT(activeTab);\n if (wrapOffset > activeTabOffset) {\n offset += wrapOffset - activeTabOffset;\n this.setOffset(offset);\n } else if (wrapOffset + navWrapNodeWH < activeTabOffset + activeTabWH) {\n offset -= activeTabOffset + activeTabWH - (wrapOffset + navWrapNodeWH);\n this.setOffset(offset);\n }\n },\n prevClick: function prevClick(e) {\n this.__emit('prevClick', e);\n var navWrapNode = this.$props.getRef('navWrap');\n var navWrapNodeWH = this.getOffsetWH(navWrapNode);\n var offset = this.offset;\n\n this.setOffset(offset + navWrapNodeWH);\n },\n nextClick: function nextClick(e) {\n this.__emit('nextClick', e);\n var navWrapNode = this.$props.getRef('navWrap');\n var navWrapNodeWH = this.getOffsetWH(navWrapNode);\n var offset = this.offset;\n\n this.setOffset(offset - navWrapNodeWH);\n }\n },\n render: function render() {\n var _ref, _ref2, _navClasses, _ref3;\n\n var h = arguments[0];\n var next = this.next,\n prev = this.prev;\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n scrollAnimated = _$props.scrollAnimated,\n navWrapper = _$props.navWrapper;\n\n var prevIcon = getComponentFromProp(this, 'prevIcon');\n var nextIcon = getComponentFromProp(this, 'nextIcon');\n var showNextPrev = prev || next;\n\n var prevButton = h(\n 'span',\n {\n on: {\n 'click': prev ? this.prevClick : noop,\n 'transitionend': this.prevTransitionEnd\n },\n attrs: {\n unselectable: 'unselectable'\n },\n 'class': (_ref = {}, _defineProperty(_ref, prefixCls + '-tab-prev', 1), _defineProperty(_ref, prefixCls + '-tab-btn-disabled', !prev), _defineProperty(_ref, prefixCls + '-tab-arrow-show', showNextPrev), _ref)\n },\n [prevIcon || h('span', { 'class': prefixCls + '-tab-prev-icon' })]\n );\n\n var nextButton = h(\n 'span',\n {\n on: {\n 'click': next ? this.nextClick : noop\n },\n attrs: {\n unselectable: 'unselectable'\n },\n 'class': (_ref2 = {}, _defineProperty(_ref2, prefixCls + '-tab-next', 1), _defineProperty(_ref2, prefixCls + '-tab-btn-disabled', !next), _defineProperty(_ref2, prefixCls + '-tab-arrow-show', showNextPrev), _ref2)\n },\n [nextIcon || h('span', { 'class': prefixCls + '-tab-next-icon' })]\n );\n\n var navClassName = prefixCls + '-nav';\n var navClasses = (_navClasses = {}, _defineProperty(_navClasses, navClassName, true), _defineProperty(_navClasses, scrollAnimated ? navClassName + '-animated' : navClassName + '-no-animated', true), _navClasses);\n\n return h(\n 'div',\n _mergeJSXProps([{\n 'class': (_ref3 = {}, _defineProperty(_ref3, prefixCls + '-nav-container', 1), _defineProperty(_ref3, prefixCls + '-nav-container-scrolling', showNextPrev), _ref3),\n key: 'container'\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.saveRef('container')\n }]\n }]),\n [prevButton, nextButton, h(\n 'div',\n _mergeJSXProps([{\n 'class': prefixCls + '-nav-wrap'\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.saveRef('navWrap')\n }]\n }]),\n [h(\n 'div',\n { 'class': prefixCls + '-nav-scroll' },\n [h(\n 'div',\n _mergeJSXProps([{\n 'class': navClasses\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.saveRef('nav')\n }]\n }]),\n [navWrapper(this.$slots['default'])]\n )]\n )]\n )]\n );\n }\n};","import PropTypes from '../../_util/vue-types';\n\nexport default {\n props: {\n children: PropTypes.func.def(function () {\n return null;\n })\n },\n methods: {\n getRef: function getRef(name) {\n return this[name];\n },\n saveRef: function saveRef(name) {\n var _this = this;\n\n return function (node) {\n if (node) {\n _this[name] = node;\n }\n };\n }\n },\n\n render: function render() {\n var _this2 = this;\n\n // 每次都new一个新的function,避免子节点不能重新渲染\n var saveRef = function saveRef(name) {\n return _this2.saveRef(name);\n };\n var getRef = function getRef(name) {\n return _this2.getRef(name);\n };\n return this.children(saveRef, getRef);\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport InkTabBarNode from './InkTabBarNode';\nimport TabBarTabsNode from './TabBarTabsNode';\nimport TabBarRootNode from './TabBarRootNode';\nimport ScrollableTabBarNode from './ScrollableTabBarNode';\nimport SaveRef from './SaveRef';\nimport { getListeners } from '../../_util/props-util';\n\nexport default {\n name: 'ScrollableInkTabBar',\n inheritAttrs: false,\n props: ['extraContent', 'inkBarAnimated', 'tabBarGutter', 'prefixCls', 'navWrapper', 'tabBarPosition', 'panels', 'activeKey', 'prevIcon', 'nextIcon'],\n render: function render() {\n var h = arguments[0];\n\n var props = _extends({}, this.$props);\n var listeners = getListeners(this);\n var renderTabBarNode = this.$scopedSlots['default'];\n\n return h(SaveRef, {\n attrs: {\n children: function children(saveRef, getRef) {\n return h(\n TabBarRootNode,\n _mergeJSXProps([{\n attrs: { saveRef: saveRef }\n }, { props: props, on: listeners }]),\n [h(\n ScrollableTabBarNode,\n _mergeJSXProps([{\n attrs: { saveRef: saveRef, getRef: getRef }\n }, { props: props, on: listeners }]),\n [h(TabBarTabsNode, _mergeJSXProps([{\n attrs: {\n saveRef: saveRef\n }\n }, { props: _extends({}, props, { renderTabBarNode: renderTabBarNode }), on: listeners }])), h(InkTabBarNode, _mergeJSXProps([{\n attrs: { saveRef: saveRef, getRef: getRef }\n }, { props: props, on: listeners }]))]\n )]\n );\n }\n }\n });\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport Icon from '../icon';\nimport ScrollableInkTabBar from '../vc-tabs/src/ScrollableInkTabBar';\nimport { cloneElement } from '../_util/vnode';\nimport PropTypes from '../_util/vue-types';\nimport { getListeners } from '../_util/props-util';\nvar TabBar = {\n name: 'TabBar',\n inheritAttrs: false,\n props: {\n prefixCls: PropTypes.string,\n tabBarStyle: PropTypes.object,\n tabBarExtraContent: PropTypes.any,\n type: PropTypes.oneOf(['line', 'card', 'editable-card']),\n tabPosition: PropTypes.oneOf(['top', 'right', 'bottom', 'left']).def('top'),\n tabBarPosition: PropTypes.oneOf(['top', 'right', 'bottom', 'left']),\n size: PropTypes.oneOf(['default', 'small', 'large']),\n animated: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n renderTabBar: PropTypes.func,\n panels: PropTypes.array.def([]),\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n tabBarGutter: PropTypes.number\n },\n render: function render() {\n var _cls;\n\n var h = arguments[0];\n var _$props = this.$props,\n tabBarStyle = _$props.tabBarStyle,\n _$props$animated = _$props.animated,\n animated = _$props$animated === undefined ? true : _$props$animated,\n renderTabBar = _$props.renderTabBar,\n tabBarExtraContent = _$props.tabBarExtraContent,\n tabPosition = _$props.tabPosition,\n prefixCls = _$props.prefixCls,\n _$props$type = _$props.type,\n type = _$props$type === undefined ? 'line' : _$props$type,\n size = _$props.size;\n\n var inkBarAnimated = (typeof animated === 'undefined' ? 'undefined' : _typeof(animated)) === 'object' ? animated.inkBar : animated;\n\n var isVertical = tabPosition === 'left' || tabPosition === 'right';\n var prevIconType = isVertical ? 'up' : 'left';\n var nextIconType = isVertical ? 'down' : 'right';\n var prevIcon = h(\n 'span',\n { 'class': prefixCls + '-tab-prev-icon' },\n [h(Icon, {\n attrs: { type: prevIconType },\n 'class': prefixCls + '-tab-prev-icon-target' })]\n );\n var nextIcon = h(\n 'span',\n { 'class': prefixCls + '-tab-next-icon' },\n [h(Icon, {\n attrs: { type: nextIconType },\n 'class': prefixCls + '-tab-next-icon-target' })]\n );\n\n // Additional className for style usage\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls + '-' + tabPosition + '-bar', true), _defineProperty(_cls, prefixCls + '-' + size + '-bar', !!size), _defineProperty(_cls, prefixCls + '-card-bar', type && type.indexOf('card') >= 0), _cls);\n\n var renderProps = {\n props: _extends({}, this.$props, this.$attrs, {\n inkBarAnimated: inkBarAnimated,\n extraContent: tabBarExtraContent,\n prevIcon: prevIcon,\n nextIcon: nextIcon\n }),\n style: tabBarStyle,\n on: getListeners(this),\n 'class': cls\n };\n\n var RenderTabBar = void 0;\n\n if (renderTabBar) {\n RenderTabBar = renderTabBar(renderProps, ScrollableInkTabBar);\n // https://github.com/vueComponent/ant-design-vue/issues/2157\n return cloneElement(RenderTabBar, renderProps);\n } else {\n return h(ScrollableInkTabBar, renderProps);\n }\n }\n};\n\nexport default TabBar;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport Icon from '../icon';\nimport VcTabs, { TabPane } from '../vc-tabs/src';\nimport TabContent from '../vc-tabs/src/TabContent';\nimport { isFlexSupported } from '../_util/styleChecker';\nimport PropTypes from '../_util/vue-types';\nimport { getComponentFromProp, getOptionProps, filterEmpty, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport isValid from '../_util/isValid';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport TabBar from './TabBar';\n\nexport default {\n TabPane: TabPane,\n name: 'ATabs',\n model: {\n prop: 'activeKey',\n event: 'change'\n },\n props: {\n prefixCls: PropTypes.string,\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n defaultActiveKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n hideAdd: PropTypes.bool.def(false),\n tabBarStyle: PropTypes.object,\n tabBarExtraContent: PropTypes.any,\n destroyInactiveTabPane: PropTypes.bool.def(false),\n type: PropTypes.oneOf(['line', 'card', 'editable-card']),\n tabPosition: PropTypes.oneOf(['top', 'right', 'bottom', 'left']).def('top'),\n size: PropTypes.oneOf(['default', 'small', 'large']),\n animated: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n tabBarGutter: PropTypes.number,\n renderTabBar: PropTypes.func\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n mounted: function mounted() {\n var NO_FLEX = ' no-flex';\n var tabNode = this.$el;\n if (tabNode && !isFlexSupported && tabNode.className.indexOf(NO_FLEX) === -1) {\n tabNode.className += NO_FLEX;\n }\n },\n\n methods: {\n removeTab: function removeTab(targetKey, e) {\n e.stopPropagation();\n if (isValid(targetKey)) {\n this.$emit('edit', targetKey, 'remove');\n }\n },\n handleChange: function handleChange(activeKey) {\n this.$emit('change', activeKey);\n },\n createNewTab: function createNewTab(targetKey) {\n this.$emit('edit', targetKey, 'add');\n },\n onTabClick: function onTabClick(val) {\n this.$emit('tabClick', val);\n },\n onPrevClick: function onPrevClick(val) {\n this.$emit('prevClick', val);\n },\n onNextClick: function onNextClick(val) {\n this.$emit('nextClick', val);\n }\n },\n\n render: function render() {\n var _cls,\n _this = this,\n _contentCls;\n\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var customizePrefixCls = props.prefixCls,\n size = props.size,\n _props$type = props.type,\n type = _props$type === undefined ? 'line' : _props$type,\n tabPosition = props.tabPosition,\n _props$animated = props.animated,\n animated = _props$animated === undefined ? true : _props$animated,\n hideAdd = props.hideAdd,\n renderTabBar = props.renderTabBar;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('tabs', customizePrefixCls);\n var children = filterEmpty(this.$slots['default']);\n\n var tabBarExtraContent = getComponentFromProp(this, 'tabBarExtraContent');\n var tabPaneAnimated = (typeof animated === 'undefined' ? 'undefined' : _typeof(animated)) === 'object' ? animated.tabPane : animated;\n\n // card tabs should not have animation\n if (type !== 'line') {\n tabPaneAnimated = 'animated' in props ? tabPaneAnimated : false;\n }\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls + '-vertical', tabPosition === 'left' || tabPosition === 'right'), _defineProperty(_cls, prefixCls + '-' + size, !!size), _defineProperty(_cls, prefixCls + '-card', type.indexOf('card') >= 0), _defineProperty(_cls, prefixCls + '-' + type, true), _defineProperty(_cls, prefixCls + '-no-animation', !tabPaneAnimated), _cls);\n // only card type tabs can be added and closed\n var childrenWithClose = [];\n if (type === 'editable-card') {\n childrenWithClose = [];\n children.forEach(function (child, index) {\n var props = getOptionProps(child);\n var closable = props.closable;\n closable = typeof closable === 'undefined' ? true : closable;\n var closeIcon = closable ? h(Icon, {\n attrs: {\n type: 'close'\n },\n 'class': prefixCls + '-close-x',\n on: {\n 'click': function click(e) {\n return _this.removeTab(child.key, e);\n }\n }\n }) : null;\n childrenWithClose.push(cloneElement(child, {\n props: {\n tab: h(\n 'div',\n { 'class': closable ? undefined : prefixCls + '-tab-unclosable' },\n [getComponentFromProp(child, 'tab'), closeIcon]\n )\n },\n key: child.key || index\n }));\n });\n // Add new tab handler\n if (!hideAdd) {\n tabBarExtraContent = h('span', [h(Icon, {\n attrs: { type: 'plus' },\n 'class': prefixCls + '-new-tab', on: {\n 'click': this.createNewTab\n }\n }), tabBarExtraContent]);\n }\n }\n\n tabBarExtraContent = tabBarExtraContent ? h(\n 'div',\n { 'class': prefixCls + '-extra-content' },\n [tabBarExtraContent]\n ) : null;\n\n var renderTabBarSlot = renderTabBar || this.$scopedSlots.renderTabBar;\n var listeners = getListeners(this);\n var tabBarProps = {\n props: _extends({}, this.$props, {\n prefixCls: prefixCls,\n tabBarExtraContent: tabBarExtraContent,\n renderTabBar: renderTabBarSlot\n }),\n on: listeners\n };\n var contentCls = (_contentCls = {}, _defineProperty(_contentCls, prefixCls + '-' + tabPosition + '-content', true), _defineProperty(_contentCls, prefixCls + '-card-content', type.indexOf('card') >= 0), _contentCls);\n var tabsProps = {\n props: _extends({}, getOptionProps(this), {\n prefixCls: prefixCls,\n tabBarPosition: tabPosition,\n // https://github.com/vueComponent/ant-design-vue/issues/2030\n // 如仅传递 tabBarProps 会导致,第二次执行 renderTabBar 时,丢失 on 属性,\n // 添加key之后,会在babel jsx 插件中做一次merge,最终TabBar接收的是一个新的对象,而不是 tabBarProps\n renderTabBar: function renderTabBar() {\n return h(TabBar, _mergeJSXProps([{ key: 'tabBar' }, tabBarProps]));\n },\n renderTabContent: function renderTabContent() {\n return h(TabContent, { 'class': contentCls, attrs: { animated: tabPaneAnimated, animatedWithMargin: true }\n });\n },\n children: childrenWithClose.length > 0 ? childrenWithClose : children,\n __propsSymbol__: Symbol()\n }),\n on: _extends({}, listeners, {\n change: this.handleChange\n }),\n 'class': cls\n };\n return h(VcTabs, tabsProps);\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport ref from 'vue-ref';\nimport Vue from 'vue';\nimport Tabs from './tabs';\nimport TabPane from '../vc-tabs/src/TabPane';\nimport TabContent from '../vc-tabs/src/TabContent';\nimport Base from '../base';\n\nTabs.TabPane = _extends({}, TabPane, { name: 'ATabPane', __ANT_TAB_PANE: true });\nTabs.TabContent = _extends({}, TabContent, { name: 'ATabContent' });\nVue.use(ref, { name: 'ant-ref' });\n\n/* istanbul ignore next */\nTabs.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Tabs.name, Tabs);\n Vue.component(Tabs.TabPane.name, Tabs.TabPane);\n Vue.component(Tabs.TabContent.name, Tabs.TabContent);\n};\n\nexport default Tabs;\nexport { TabPane, TabContent };","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\n// matchMedia polyfill for\n// https://github.com/WickyNilliams/enquire.js/issues/82\nvar enquire = void 0;\n\n// TODO: Will be removed in antd 4.0 because we will no longer support ie9\nif (typeof window !== 'undefined') {\n var matchMediaPolyfill = function matchMediaPolyfill(mediaQuery) {\n return {\n media: mediaQuery,\n matches: false,\n addListener: function addListener() {},\n removeListener: function removeListener() {}\n };\n };\n // ref: https://github.com/ant-design/ant-design/issues/18774\n if (!window.matchMedia) window.matchMedia = matchMediaPolyfill;\n // eslint-disable-next-line global-require\n enquire = require('enquire.js');\n}\n\nexport var responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\n\nexport var responsiveMap = {\n xs: '(max-width: 575px)',\n sm: '(min-width: 576px)',\n md: '(min-width: 768px)',\n lg: '(min-width: 992px)',\n xl: '(min-width: 1200px)',\n xxl: '(min-width: 1600px)'\n};\n\nvar subscribers = [];\nvar subUid = -1;\nvar screens = {};\n\nvar responsiveObserve = {\n dispatch: function dispatch(pointMap) {\n screens = pointMap;\n if (subscribers.length < 1) {\n return false;\n }\n\n subscribers.forEach(function (item) {\n item.func(screens);\n });\n\n return true;\n },\n subscribe: function subscribe(func) {\n if (subscribers.length === 0) {\n this.register();\n }\n var token = (++subUid).toString();\n subscribers.push({\n token: token,\n func: func\n });\n func(screens);\n return token;\n },\n unsubscribe: function unsubscribe(token) {\n subscribers = subscribers.filter(function (item) {\n return item.token !== token;\n });\n if (subscribers.length === 0) {\n this.unregister();\n }\n },\n unregister: function unregister() {\n Object.keys(responsiveMap).map(function (screen) {\n return enquire.unregister(responsiveMap[screen]);\n });\n },\n register: function register() {\n var _this = this;\n\n Object.keys(responsiveMap).map(function (screen) {\n return enquire.register(responsiveMap[screen], {\n match: function match() {\n var pointMap = _extends({}, screens, _defineProperty({}, screen, true));\n _this.dispatch(pointMap);\n },\n unmatch: function unmatch() {\n var pointMap = _extends({}, screens, _defineProperty({}, screen, false));\n _this.dispatch(pointMap);\n },\n // Keep a empty destroy to avoid triggering unmatch when unregister\n destroy: function destroy() {}\n });\n });\n }\n};\n\nexport default responsiveObserve;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport ResponsiveObserve from '../_util/responsiveObserve';\n\nvar RowProps = {\n gutter: PropTypes.oneOfType([PropTypes.object, PropTypes.number, PropTypes.array]),\n type: PropTypes.oneOf(['flex']),\n align: PropTypes.oneOf(['top', 'middle', 'bottom', 'stretch']),\n justify: PropTypes.oneOf(['start', 'end', 'center', 'space-around', 'space-between']),\n prefixCls: PropTypes.string\n};\n\nvar responsiveArray = ['xxl', 'xl', 'lg', 'md', 'sm', 'xs'];\n\nexport default {\n name: 'ARow',\n mixins: [BaseMixin],\n props: _extends({}, RowProps, {\n gutter: PropTypes.oneOfType([PropTypes.object, PropTypes.number, PropTypes.array]).def(0)\n }),\n provide: function provide() {\n return {\n rowContext: this\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n screens: {}\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.token = ResponsiveObserve.subscribe(function (screens) {\n var gutter = _this.gutter;\n\n if ((typeof gutter === 'undefined' ? 'undefined' : _typeof(gutter)) === 'object' || Array.isArray(gutter) && (_typeof(gutter[0]) === 'object' || _typeof(gutter[1]) === 'object')) {\n _this.screens = screens;\n }\n });\n });\n },\n beforeDestroy: function beforeDestroy() {\n ResponsiveObserve.unsubscribe(this.token);\n },\n\n methods: {\n getGutter: function getGutter() {\n var results = [0, 0];\n var gutter = this.gutter,\n screens = this.screens;\n\n var normalizedGutter = Array.isArray(gutter) ? gutter : [gutter, 0];\n normalizedGutter.forEach(function (g, index) {\n if ((typeof g === 'undefined' ? 'undefined' : _typeof(g)) === 'object') {\n for (var i = 0; i < responsiveArray.length; i++) {\n var breakpoint = responsiveArray[i];\n if (screens[breakpoint] && g[breakpoint] !== undefined) {\n results[index] = g[breakpoint];\n break;\n }\n }\n } else {\n results[index] = g || 0;\n }\n });\n return results;\n }\n },\n\n render: function render() {\n var _classes;\n\n var h = arguments[0];\n var type = this.type,\n justify = this.justify,\n align = this.align,\n customizePrefixCls = this.prefixCls,\n $slots = this.$slots;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('row', customizePrefixCls);\n\n var gutter = this.getGutter();\n var classes = (_classes = {}, _defineProperty(_classes, prefixCls, !type), _defineProperty(_classes, prefixCls + '-' + type, type), _defineProperty(_classes, prefixCls + '-' + type + '-' + justify, type && justify), _defineProperty(_classes, prefixCls + '-' + type + '-' + align, type && align), _classes);\n var rowStyle = _extends({}, gutter[0] > 0 ? {\n marginLeft: gutter[0] / -2 + 'px',\n marginRight: gutter[0] / -2 + 'px'\n } : {}, gutter[1] > 0 ? {\n marginTop: gutter[1] / -2 + 'px',\n marginBottom: gutter[1] / -2 + 'px'\n } : {});\n return h(\n 'div',\n { 'class': classes, style: rowStyle },\n [$slots['default']]\n );\n }\n};","import { Row } from '../grid';\nimport Base from '../base';\n\n/* istanbul ignore next */\nRow.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Row.name, Row);\n};\n\nexport default Row;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport PropTypes from '../_util/vue-types';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { getListeners } from '../_util/props-util';\n\nvar stringOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number]);\n\nexport var ColSize = PropTypes.shape({\n span: stringOrNumber,\n order: stringOrNumber,\n offset: stringOrNumber,\n push: stringOrNumber,\n pull: stringOrNumber\n}).loose;\n\nvar objectOrNumber = PropTypes.oneOfType([PropTypes.string, PropTypes.number, ColSize]);\n\nexport var ColProps = {\n span: stringOrNumber,\n order: stringOrNumber,\n offset: stringOrNumber,\n push: stringOrNumber,\n pull: stringOrNumber,\n xs: objectOrNumber,\n sm: objectOrNumber,\n md: objectOrNumber,\n lg: objectOrNumber,\n xl: objectOrNumber,\n xxl: objectOrNumber,\n prefixCls: PropTypes.string,\n flex: stringOrNumber\n};\n\nexport default {\n name: 'ACol',\n props: ColProps,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } },\n rowContext: {\n 'default': function _default() {\n return null;\n }\n }\n },\n methods: {\n parseFlex: function parseFlex(flex) {\n if (typeof flex === 'number') {\n return flex + ' ' + flex + ' auto';\n }\n if (/^\\d+(\\.\\d+)?(px|em|rem|%)$/.test(flex)) {\n return '0 0 ' + flex;\n }\n return flex;\n }\n },\n render: function render() {\n var _this = this,\n _extends3;\n\n var h = arguments[0];\n var span = this.span,\n order = this.order,\n offset = this.offset,\n push = this.push,\n pull = this.pull,\n flex = this.flex,\n customizePrefixCls = this.prefixCls,\n $slots = this.$slots,\n rowContext = this.rowContext;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('col', customizePrefixCls);\n\n var sizeClassObj = {};\n ['xs', 'sm', 'md', 'lg', 'xl', 'xxl'].forEach(function (size) {\n var _extends2;\n\n var sizeProps = {};\n var propSize = _this[size];\n if (typeof propSize === 'number') {\n sizeProps.span = propSize;\n } else if ((typeof propSize === 'undefined' ? 'undefined' : _typeof(propSize)) === 'object') {\n sizeProps = propSize || {};\n }\n\n sizeClassObj = _extends({}, sizeClassObj, (_extends2 = {}, _defineProperty(_extends2, prefixCls + '-' + size + '-' + sizeProps.span, sizeProps.span !== undefined), _defineProperty(_extends2, prefixCls + '-' + size + '-order-' + sizeProps.order, sizeProps.order || sizeProps.order === 0), _defineProperty(_extends2, prefixCls + '-' + size + '-offset-' + sizeProps.offset, sizeProps.offset || sizeProps.offset === 0), _defineProperty(_extends2, prefixCls + '-' + size + '-push-' + sizeProps.push, sizeProps.push || sizeProps.push === 0), _defineProperty(_extends2, prefixCls + '-' + size + '-pull-' + sizeProps.pull, sizeProps.pull || sizeProps.pull === 0), _extends2));\n });\n var classes = _extends((_extends3 = {}, _defineProperty(_extends3, '' + prefixCls, true), _defineProperty(_extends3, prefixCls + '-' + span, span !== undefined), _defineProperty(_extends3, prefixCls + '-order-' + order, order), _defineProperty(_extends3, prefixCls + '-offset-' + offset, offset), _defineProperty(_extends3, prefixCls + '-push-' + push, push), _defineProperty(_extends3, prefixCls + '-pull-' + pull, pull), _extends3), sizeClassObj);\n var divProps = {\n on: getListeners(this),\n 'class': classes,\n style: {}\n };\n if (rowContext) {\n var gutter = rowContext.getGutter();\n if (gutter) {\n divProps.style = _extends({}, gutter[0] > 0 ? {\n paddingLeft: gutter[0] / 2 + 'px',\n paddingRight: gutter[0] / 2 + 'px'\n } : {}, gutter[1] > 0 ? {\n paddingTop: gutter[1] / 2 + 'px',\n paddingBottom: gutter[1] / 2 + 'px'\n } : {});\n }\n }\n\n if (flex) {\n divProps.style.flex = this.parseFlex(flex);\n }\n\n return h(\n 'div',\n divProps,\n [$slots['default']]\n );\n }\n};","import { Col } from '../grid';\nimport Base from '../base';\n/* istanbul ignore next */\nCol.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Col.name, Col);\n};\n\nexport default Col;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport omit from 'omit.js';\nimport Tabs from '../tabs';\nimport Row from '../row';\nimport Col from '../col';\nimport PropTypes from '../_util/vue-types';\nimport { getComponentFromProp, getSlotOptions, filterEmpty, getListeners } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nvar TabPane = Tabs.TabPane;\n\nexport default {\n name: 'ACard',\n mixins: [BaseMixin],\n props: {\n prefixCls: PropTypes.string,\n title: PropTypes.any,\n extra: PropTypes.any,\n bordered: PropTypes.bool.def(true),\n bodyStyle: PropTypes.object,\n headStyle: PropTypes.object,\n loading: PropTypes.bool.def(false),\n hoverable: PropTypes.bool.def(false),\n type: PropTypes.string,\n size: PropTypes.oneOf(['default', 'small']),\n actions: PropTypes.any,\n tabList: PropTypes.array,\n tabProps: PropTypes.object,\n tabBarExtraContent: PropTypes.any,\n activeTabKey: PropTypes.string,\n defaultActiveTabKey: PropTypes.string\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n widerPadding: false\n };\n },\n\n methods: {\n getAction: function getAction(actions) {\n var h = this.$createElement;\n\n var actionList = actions.map(function (action, index) {\n return h(\n 'li',\n { style: { width: 100 / actions.length + '%' }, key: 'action-' + index },\n [h('span', [action])]\n );\n });\n return actionList;\n },\n onTabChange: function onTabChange(key) {\n this.$emit('tabChange', key);\n },\n isContainGrid: function isContainGrid() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var containGrid = void 0;\n obj.forEach(function (element) {\n if (element && getSlotOptions(element).__ANT_CARD_GRID) {\n containGrid = true;\n }\n });\n return containGrid;\n }\n },\n render: function render() {\n var _classString, _extends2;\n\n var h = arguments[0];\n var _$props = this.$props,\n customizePrefixCls = _$props.prefixCls,\n _$props$headStyle = _$props.headStyle,\n headStyle = _$props$headStyle === undefined ? {} : _$props$headStyle,\n _$props$bodyStyle = _$props.bodyStyle,\n bodyStyle = _$props$bodyStyle === undefined ? {} : _$props$bodyStyle,\n loading = _$props.loading,\n _$props$bordered = _$props.bordered,\n bordered = _$props$bordered === undefined ? true : _$props$bordered,\n _$props$size = _$props.size,\n size = _$props$size === undefined ? 'default' : _$props$size,\n type = _$props.type,\n tabList = _$props.tabList,\n _$props$tabProps = _$props.tabProps,\n tabProps = _$props$tabProps === undefined ? {} : _$props$tabProps,\n hoverable = _$props.hoverable,\n activeTabKey = _$props.activeTabKey,\n defaultActiveTabKey = _$props.defaultActiveTabKey;\n\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('card', customizePrefixCls);\n\n var $slots = this.$slots,\n $scopedSlots = this.$scopedSlots;\n\n var tabBarExtraContent = getComponentFromProp(this, 'tabBarExtraContent');\n var classString = (_classString = {}, _defineProperty(_classString, '' + prefixCls, true), _defineProperty(_classString, prefixCls + '-loading', loading), _defineProperty(_classString, prefixCls + '-bordered', bordered), _defineProperty(_classString, prefixCls + '-hoverable', !!hoverable), _defineProperty(_classString, prefixCls + '-contain-grid', this.isContainGrid($slots['default'])), _defineProperty(_classString, prefixCls + '-contain-tabs', tabList && tabList.length), _defineProperty(_classString, prefixCls + '-' + size, size !== 'default'), _defineProperty(_classString, prefixCls + '-type-' + type, !!type), _classString);\n\n var loadingBlockStyle = bodyStyle.padding === 0 || bodyStyle.padding === '0px' ? { padding: 24 } : undefined;\n\n var loadingBlock = h(\n 'div',\n { 'class': prefixCls + '-loading-content', style: loadingBlockStyle },\n [h(\n Row,\n {\n attrs: { gutter: 8 }\n },\n [h(\n Col,\n {\n attrs: { span: 22 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n )]\n ), h(\n Row,\n {\n attrs: { gutter: 8 }\n },\n [h(\n Col,\n {\n attrs: { span: 8 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n ), h(\n Col,\n {\n attrs: { span: 15 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n )]\n ), h(\n Row,\n {\n attrs: { gutter: 8 }\n },\n [h(\n Col,\n {\n attrs: { span: 6 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n ), h(\n Col,\n {\n attrs: { span: 18 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n )]\n ), h(\n Row,\n {\n attrs: { gutter: 8 }\n },\n [h(\n Col,\n {\n attrs: { span: 13 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n ), h(\n Col,\n {\n attrs: { span: 9 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n )]\n ), h(\n Row,\n {\n attrs: { gutter: 8 }\n },\n [h(\n Col,\n {\n attrs: { span: 4 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n ), h(\n Col,\n {\n attrs: { span: 3 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n ), h(\n Col,\n {\n attrs: { span: 16 }\n },\n [h('div', { 'class': prefixCls + '-loading-block' })]\n )]\n )]\n );\n\n var hasActiveTabKey = activeTabKey !== undefined;\n var tabsProps = {\n props: _extends({\n size: 'large'\n }, tabProps, (_extends2 = {}, _defineProperty(_extends2, hasActiveTabKey ? 'activeKey' : 'defaultActiveKey', hasActiveTabKey ? activeTabKey : defaultActiveTabKey), _defineProperty(_extends2, 'tabBarExtraContent', tabBarExtraContent), _extends2)),\n on: {\n change: this.onTabChange\n },\n 'class': prefixCls + '-head-tabs'\n };\n\n var head = void 0;\n var tabs = tabList && tabList.length ? h(\n Tabs,\n tabsProps,\n [tabList.map(function (item) {\n var temp = item.tab,\n _item$scopedSlots = item.scopedSlots,\n scopedSlots = _item$scopedSlots === undefined ? {} : _item$scopedSlots;\n\n var name = scopedSlots.tab;\n var tab = temp !== undefined ? temp : $scopedSlots[name] ? $scopedSlots[name](item) : null;\n return h(TabPane, {\n attrs: { tab: tab, disabled: item.disabled },\n key: item.key });\n })]\n ) : null;\n var titleDom = getComponentFromProp(this, 'title');\n var extraDom = getComponentFromProp(this, 'extra');\n if (titleDom || extraDom || tabs) {\n head = h(\n 'div',\n { 'class': prefixCls + '-head', style: headStyle },\n [h(\n 'div',\n { 'class': prefixCls + '-head-wrapper' },\n [titleDom && h(\n 'div',\n { 'class': prefixCls + '-head-title' },\n [titleDom]\n ), extraDom && h(\n 'div',\n { 'class': prefixCls + '-extra' },\n [extraDom]\n )]\n ), tabs]\n );\n }\n\n var children = $slots['default'];\n var cover = getComponentFromProp(this, 'cover');\n var coverDom = cover ? h(\n 'div',\n { 'class': prefixCls + '-cover' },\n [cover]\n ) : null;\n var body = h(\n 'div',\n { 'class': prefixCls + '-body', style: bodyStyle },\n [loading ? loadingBlock : children]\n );\n var actions = filterEmpty(this.$slots.actions);\n var actionDom = actions && actions.length ? h(\n 'ul',\n { 'class': prefixCls + '-actions' },\n [this.getAction(actions)]\n ) : null;\n\n return h(\n 'div',\n _mergeJSXProps([{\n 'class': classString,\n ref: 'cardContainerRef'\n }, { on: omit(getListeners(this), ['tabChange', 'tab-change']) }]),\n [head, coverDom, children ? body : null, actionDom]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { getComponentFromProp, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport default {\n name: 'ACardMeta',\n props: {\n prefixCls: PropTypes.string,\n title: PropTypes.any,\n description: PropTypes.any\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.$props.prefixCls;\n\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('card', customizePrefixCls);\n\n var classString = _defineProperty({}, prefixCls + '-meta', true);\n\n var avatar = getComponentFromProp(this, 'avatar');\n var title = getComponentFromProp(this, 'title');\n var description = getComponentFromProp(this, 'description');\n\n var avatarDom = avatar ? h(\n 'div',\n { 'class': prefixCls + '-meta-avatar' },\n [avatar]\n ) : null;\n var titleDom = title ? h(\n 'div',\n { 'class': prefixCls + '-meta-title' },\n [title]\n ) : null;\n var descriptionDom = description ? h(\n 'div',\n { 'class': prefixCls + '-meta-description' },\n [description]\n ) : null;\n var MetaDetail = titleDom || descriptionDom ? h(\n 'div',\n { 'class': prefixCls + '-meta-detail' },\n [titleDom, descriptionDom]\n ) : null;\n return h(\n 'div',\n _mergeJSXProps([{ on: getListeners(this) }, { 'class': classString }]),\n [avatarDom, MetaDetail]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { getListeners } from '../_util/props-util';\n\nexport default {\n name: 'ACardGrid',\n __ANT_CARD_GRID: true,\n props: {\n prefixCls: PropTypes.string,\n hoverable: PropTypes.bool\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var _classString;\n\n var h = arguments[0];\n var _$props = this.$props,\n customizePrefixCls = _$props.prefixCls,\n _$props$hoverable = _$props.hoverable,\n hoverable = _$props$hoverable === undefined ? true : _$props$hoverable;\n\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('card', customizePrefixCls);\n\n var classString = (_classString = {}, _defineProperty(_classString, prefixCls + '-grid', true), _defineProperty(_classString, prefixCls + '-grid-hoverable', hoverable), _classString);\n return h(\n 'div',\n _mergeJSXProps([{ on: getListeners(this) }, { 'class': classString }]),\n [this.$slots['default']]\n );\n }\n};","import Card from './Card';\nimport Meta from './Meta';\nimport Grid from './Grid';\nimport Base from '../base';\nCard.Meta = Meta;\nCard.Grid = Grid;\n\n/* istanbul ignore next */\nCard.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Card.name, Card);\n Vue.component(Meta.name, Meta);\n Vue.component(Grid.name, Grid);\n};\n\nexport default Card;","import PropTypes from '../../_util/vue-types';\n\nvar collapseProps = function collapseProps() {\n return {\n prefixCls: PropTypes.string,\n activeKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))]),\n defaultActiveKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.number]))]),\n accordion: PropTypes.bool,\n destroyInactivePanel: PropTypes.bool,\n bordered: PropTypes.bool,\n expandIcon: PropTypes.func,\n openAnimation: PropTypes.object,\n expandIconPosition: PropTypes.oneOf(['left', 'right'])\n };\n};\n\nvar panelProps = function panelProps() {\n return {\n openAnimation: PropTypes.object,\n prefixCls: PropTypes.string,\n header: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.node]),\n headerClass: PropTypes.string,\n showArrow: PropTypes.bool,\n isActive: PropTypes.bool,\n destroyInactivePanel: PropTypes.bool,\n disabled: PropTypes.bool,\n accordion: PropTypes.bool,\n forceRender: PropTypes.bool,\n expandIcon: PropTypes.func,\n extra: PropTypes.any,\n panelKey: PropTypes.any\n };\n};\n\nexport { collapseProps, panelProps };","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../_util/vue-types';\n\nexport default {\n name: 'PanelContent',\n props: {\n prefixCls: PropTypes.string,\n isActive: PropTypes.bool,\n destroyInactivePanel: PropTypes.bool,\n forceRender: PropTypes.bool,\n role: PropTypes.any\n },\n data: function data() {\n return {\n _isActive: undefined\n };\n },\n render: function render() {\n var _contentCls;\n\n var h = arguments[0];\n\n this._isActive = this.forceRender || this._isActive || this.isActive;\n if (!this._isActive) {\n return null;\n }\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n isActive = _$props.isActive,\n destroyInactivePanel = _$props.destroyInactivePanel,\n forceRender = _$props.forceRender,\n role = _$props.role;\n var $slots = this.$slots;\n\n var contentCls = (_contentCls = {}, _defineProperty(_contentCls, prefixCls + '-content', true), _defineProperty(_contentCls, prefixCls + '-content-active', isActive), _contentCls);\n var child = !forceRender && !isActive && destroyInactivePanel ? null : h(\n 'div',\n { 'class': prefixCls + '-content-box' },\n [$slots['default']]\n );\n return h(\n 'div',\n { 'class': contentCls, attrs: { role: role }\n },\n [child]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PanelContent from './PanelContent';\nimport { initDefaultProps, getComponentFromProp } from '../../_util/props-util';\nimport { panelProps } from './commonProps';\n\nexport default {\n name: 'Panel',\n props: initDefaultProps(panelProps(), {\n showArrow: true,\n isActive: false,\n destroyInactivePanel: false,\n headerClass: '',\n forceRender: false\n }),\n methods: {\n handleItemClick: function handleItemClick() {\n this.$emit('itemClick', this.panelKey);\n },\n handleKeyPress: function handleKeyPress(e) {\n if (e.key === 'Enter' || e.keyCode === 13 || e.which === 13) {\n this.handleItemClick();\n }\n }\n },\n render: function render() {\n var _headerCls, _itemCls;\n\n var h = arguments[0];\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n headerClass = _$props.headerClass,\n isActive = _$props.isActive,\n showArrow = _$props.showArrow,\n destroyInactivePanel = _$props.destroyInactivePanel,\n disabled = _$props.disabled,\n openAnimation = _$props.openAnimation,\n accordion = _$props.accordion,\n forceRender = _$props.forceRender,\n expandIcon = _$props.expandIcon,\n extra = _$props.extra;\n var $slots = this.$slots;\n\n\n var transitionProps = {\n props: _extends({\n appear: true,\n css: false\n }),\n on: _extends({}, openAnimation)\n };\n var headerCls = (_headerCls = {}, _defineProperty(_headerCls, prefixCls + '-header', true), _defineProperty(_headerCls, headerClass, headerClass), _headerCls);\n var header = getComponentFromProp(this, 'header');\n var itemCls = (_itemCls = {}, _defineProperty(_itemCls, prefixCls + '-item', true), _defineProperty(_itemCls, prefixCls + '-item-active', isActive), _defineProperty(_itemCls, prefixCls + '-item-disabled', disabled), _itemCls);\n var icon = h('i', { 'class': 'arrow' });\n if (showArrow && typeof expandIcon === 'function') {\n icon = expandIcon(this.$props);\n }\n return h(\n 'div',\n { 'class': itemCls, attrs: { role: 'tablist' }\n },\n [h(\n 'div',\n {\n 'class': headerCls,\n on: {\n 'click': this.handleItemClick.bind(this),\n 'keypress': this.handleKeyPress\n },\n attrs: {\n role: accordion ? 'tab' : 'button',\n tabIndex: disabled ? -1 : 0,\n 'aria-expanded': isActive\n }\n },\n [showArrow && icon, header, extra && h(\n 'div',\n { 'class': prefixCls + '-extra' },\n [extra]\n )]\n ), h(\n 'transition',\n transitionProps,\n [h(\n PanelContent,\n {\n directives: [{\n name: 'show',\n value: isActive\n }],\n attrs: {\n prefixCls: prefixCls,\n isActive: isActive,\n destroyInactivePanel: destroyInactivePanel,\n forceRender: forceRender,\n role: accordion ? 'tabpanel' : null\n }\n },\n [$slots['default']]\n )]\n )]\n );\n }\n};","import cssAnimation from '../../_util/css-animation';\n\nfunction animate(node, show, transitionName, done) {\n var height = void 0;\n return cssAnimation(node, transitionName, {\n start: function start() {\n if (!show) {\n node.style.height = node.offsetHeight + 'px';\n } else {\n height = node.offsetHeight;\n node.style.height = 0;\n }\n },\n active: function active() {\n node.style.height = (show ? height : 0) + 'px';\n },\n end: function end() {\n node.style.height = '';\n done();\n }\n });\n}\n\nfunction animation(prefixCls) {\n return {\n enter: function enter(node, done) {\n return animate(node, true, prefixCls + '-anim', done);\n },\n leave: function leave(node, done) {\n return animate(node, false, prefixCls + '-anim', done);\n }\n };\n}\n\nexport default animation;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { hasProp, getPropsData, isEmptyElement, initDefaultProps } from '../../_util/props-util';\nimport { cloneElement } from '../../_util/vnode';\nimport openAnimationFactory from './openAnimationFactory';\nimport { collapseProps } from './commonProps';\n\nfunction _toArray(activeKey) {\n var currentActiveKey = activeKey;\n if (!Array.isArray(currentActiveKey)) {\n currentActiveKey = currentActiveKey ? [currentActiveKey] : [];\n }\n return currentActiveKey.map(function (key) {\n return String(key);\n });\n}\nexport default {\n name: 'Collapse',\n mixins: [BaseMixin],\n model: {\n prop: 'activeKey',\n event: 'change'\n },\n props: initDefaultProps(collapseProps(), {\n prefixCls: 'rc-collapse',\n accordion: false,\n destroyInactivePanel: false\n }),\n data: function data() {\n var _$props = this.$props,\n activeKey = _$props.activeKey,\n defaultActiveKey = _$props.defaultActiveKey,\n openAnimation = _$props.openAnimation,\n prefixCls = _$props.prefixCls;\n\n var currentActiveKey = defaultActiveKey;\n if (hasProp(this, 'activeKey')) {\n currentActiveKey = activeKey;\n }\n var currentOpenAnimations = openAnimation || openAnimationFactory(prefixCls);\n return {\n currentOpenAnimations: currentOpenAnimations,\n stateActiveKey: _toArray(currentActiveKey)\n };\n },\n\n watch: {\n activeKey: function activeKey(val) {\n this.setState({\n stateActiveKey: _toArray(val)\n });\n },\n openAnimation: function openAnimation(val) {\n this.setState({\n currentOpenAnimations: val\n });\n }\n },\n methods: {\n onClickItem: function onClickItem(key) {\n var activeKey = this.stateActiveKey;\n if (this.accordion) {\n activeKey = activeKey[0] === key ? [] : [key];\n } else {\n activeKey = [].concat(_toConsumableArray(activeKey));\n var index = activeKey.indexOf(key);\n var isActive = index > -1;\n if (isActive) {\n // remove active state\n activeKey.splice(index, 1);\n } else {\n activeKey.push(key);\n }\n }\n this.setActiveKey(activeKey);\n },\n getNewChild: function getNewChild(child, index) {\n if (isEmptyElement(child)) return;\n var activeKey = this.stateActiveKey;\n var _$props2 = this.$props,\n prefixCls = _$props2.prefixCls,\n accordion = _$props2.accordion,\n destroyInactivePanel = _$props2.destroyInactivePanel,\n expandIcon = _$props2.expandIcon;\n\n // If there is no key provide, use the panel order as default key\n\n var key = child.key || String(index);\n\n var _getPropsData = getPropsData(child),\n header = _getPropsData.header,\n headerClass = _getPropsData.headerClass,\n disabled = _getPropsData.disabled;\n\n var isActive = false;\n\n if (accordion) {\n isActive = activeKey[0] === key;\n } else {\n isActive = activeKey.indexOf(key) > -1;\n }\n\n var panelEvents = {};\n if (!disabled && disabled !== '') {\n panelEvents = {\n itemClick: this.onClickItem\n };\n }\n\n var props = {\n key: key,\n props: {\n panelKey: key,\n header: header,\n headerClass: headerClass,\n isActive: isActive,\n prefixCls: prefixCls,\n destroyInactivePanel: destroyInactivePanel,\n openAnimation: this.currentOpenAnimations,\n accordion: accordion,\n expandIcon: expandIcon\n },\n on: panelEvents\n };\n\n return cloneElement(child, props);\n },\n getItems: function getItems() {\n var _this = this;\n\n var newChildren = [];\n this.$slots['default'] && this.$slots['default'].forEach(function (child, index) {\n newChildren.push(_this.getNewChild(child, index));\n });\n return newChildren;\n },\n setActiveKey: function setActiveKey(activeKey) {\n this.setState({ stateActiveKey: activeKey });\n this.$emit('change', this.accordion ? activeKey[0] : activeKey);\n }\n },\n render: function render() {\n var h = arguments[0];\n var _$props3 = this.$props,\n prefixCls = _$props3.prefixCls,\n accordion = _$props3.accordion;\n\n var collapseClassName = _defineProperty({}, prefixCls, true);\n return h(\n 'div',\n { 'class': collapseClassName, attrs: { role: accordion ? 'tablist' : null }\n },\n [this.getItems()]\n );\n }\n};","// based on rc-collapse 1.11.8\nimport CollapsePanel from './src/Panel';\nimport Collapse from './src/Collapse';\nimport { collapseProps, panelProps } from './src/commonProps';\n\nCollapse.Panel = CollapsePanel;\n\nexport { collapseProps, panelProps };\nexport default Collapse;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport animation from '../_util/openAnimation';\nimport { getOptionProps, initDefaultProps, getComponentFromProp, isValidElement, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport VcCollapse, { collapseProps } from '../vc-collapse';\nimport Icon from '../icon';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport default {\n name: 'ACollapse',\n model: {\n prop: 'activeKey',\n event: 'change'\n },\n props: initDefaultProps(collapseProps(), {\n bordered: true,\n openAnimation: animation,\n expandIconPosition: 'left'\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n renderExpandIcon: function renderExpandIcon(panelProps, prefixCls) {\n var h = this.$createElement;\n\n var expandIcon = getComponentFromProp(this, 'expandIcon', panelProps);\n var icon = expandIcon || h(Icon, {\n attrs: { type: 'right', rotate: panelProps.isActive ? 90 : undefined }\n });\n return isValidElement(Array.isArray(expandIcon) ? icon[0] : icon) ? cloneElement(icon, {\n 'class': prefixCls + '-arrow'\n }) : icon;\n }\n },\n render: function render() {\n var _collapseClassName,\n _this = this;\n\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n bordered = this.bordered,\n expandIconPosition = this.expandIconPosition;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('collapse', customizePrefixCls);\n\n var collapseClassName = (_collapseClassName = {}, _defineProperty(_collapseClassName, prefixCls + '-borderless', !bordered), _defineProperty(_collapseClassName, prefixCls + '-icon-position-' + expandIconPosition, true), _collapseClassName);\n var rcCollapeProps = {\n props: _extends({}, getOptionProps(this), {\n prefixCls: prefixCls,\n expandIcon: function expandIcon(panelProps) {\n return _this.renderExpandIcon(panelProps, prefixCls);\n }\n }),\n 'class': collapseClassName,\n on: getListeners(this)\n };\n return h(\n VcCollapse,\n rcCollapeProps,\n [this.$slots['default']]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport { getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';\nimport VcCollapse, { panelProps } from '../vc-collapse';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport default {\n name: 'ACollapsePanel',\n props: _extends({}, panelProps()),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n _showArrow = this.showArrow,\n showArrow = _showArrow === undefined ? true : _showArrow;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('collapse', customizePrefixCls);\n\n var collapsePanelClassName = _defineProperty({}, prefixCls + '-no-arrow', !showArrow);\n var rcCollapePanelProps = {\n props: _extends({}, getOptionProps(this), {\n prefixCls: prefixCls,\n extra: getComponentFromProp(this, 'extra')\n }),\n 'class': collapsePanelClassName,\n on: getListeners(this)\n };\n var header = getComponentFromProp(this, 'header');\n return h(\n VcCollapse.Panel,\n rcCollapePanelProps,\n [this.$slots['default'], header ? h(\n 'template',\n { slot: 'header' },\n [header]\n ) : null]\n );\n }\n};","import Collapse from './Collapse';\nimport CollapsePanel from './CollapsePanel';\nimport Base from '../base';\n\nCollapse.Panel = CollapsePanel;\n\n/* istanbul ignore next */\nCollapse.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Collapse.name, Collapse);\n Vue.component(CollapsePanel.name, CollapsePanel);\n};\n\nexport default Collapse;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport debounce from 'lodash/debounce';\nimport hasProp, { initDefaultProps, getComponentFromProp, filterEmpty, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\nimport warning from '../_util/warning';\nimport classNames from 'classnames';\n\n// matchMedia polyfill for\n// https://github.com/WickyNilliams/enquire.js/issues/82\nif (typeof window !== 'undefined') {\n var matchMediaPolyfill = function matchMediaPolyfill(mediaQuery) {\n return {\n media: mediaQuery,\n matches: false,\n addListener: function addListener() {},\n removeListener: function removeListener() {}\n };\n };\n // ref: https://github.com/ant-design/ant-design/issues/18774\n if (!window.matchMedia) window.matchMedia = matchMediaPolyfill;\n}\n// Use require over import (will be lifted up)\n// make sure matchMedia polyfill run before require('vc-slick')\n// Fix https://github.com/ant-design/ant-design/issues/6560\n// Fix https://github.com/ant-design/ant-design/issues/3308\nvar SlickCarousel = require('../vc-slick/src')['default'];\n\nexport var CarouselEffect = PropTypes.oneOf(['scrollx', 'fade']);\n// Carousel\nexport var CarouselProps = {\n effect: CarouselEffect,\n dots: PropTypes.bool,\n vertical: PropTypes.bool,\n autoplay: PropTypes.bool,\n easing: PropTypes.string,\n beforeChange: PropTypes.func,\n afterChange: PropTypes.func,\n // style: PropTypes.React.CSSProperties,\n prefixCls: PropTypes.string,\n accessibility: PropTypes.bool,\n nextArrow: PropTypes.any,\n prevArrow: PropTypes.any,\n pauseOnHover: PropTypes.bool,\n // className: PropTypes.string,\n adaptiveHeight: PropTypes.bool,\n arrows: PropTypes.bool,\n autoplaySpeed: PropTypes.number,\n centerMode: PropTypes.bool,\n centerPadding: PropTypes.string,\n cssEase: PropTypes.string,\n dotsClass: PropTypes.string,\n draggable: PropTypes.bool,\n fade: PropTypes.bool,\n focusOnSelect: PropTypes.bool,\n infinite: PropTypes.bool,\n initialSlide: PropTypes.number,\n lazyLoad: PropTypes.bool,\n rtl: PropTypes.bool,\n slide: PropTypes.string,\n slidesToShow: PropTypes.number,\n slidesToScroll: PropTypes.number,\n speed: PropTypes.number,\n swipe: PropTypes.bool,\n swipeToSlide: PropTypes.bool,\n touchMove: PropTypes.bool,\n touchThreshold: PropTypes.number,\n variableWidth: PropTypes.bool,\n useCSS: PropTypes.bool,\n slickGoTo: PropTypes.number,\n responsive: PropTypes.array,\n dotPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right'])\n};\n\nvar Carousel = {\n name: 'ACarousel',\n props: initDefaultProps(CarouselProps, {\n dots: true,\n arrows: false,\n draggable: false\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n\n beforeMount: function beforeMount() {\n this.onWindowResized = debounce(this.onWindowResized, 500, {\n leading: false\n });\n },\n mounted: function mounted() {\n if (hasProp(this, 'vertical')) {\n warning(!this.vertical, 'Carousel', '`vertical` is deprecated, please use `dotPosition` instead.');\n }\n var autoplay = this.autoplay;\n\n if (autoplay) {\n window.addEventListener('resize', this.onWindowResized);\n }\n // https://github.com/ant-design/ant-design/issues/7191\n this.innerSlider = this.$refs.slick && this.$refs.slick.innerSlider;\n },\n beforeDestroy: function beforeDestroy() {\n var autoplay = this.autoplay;\n\n if (autoplay) {\n window.removeEventListener('resize', this.onWindowResized);\n this.onWindowResized.cancel();\n }\n },\n\n methods: {\n getDotPosition: function getDotPosition() {\n if (this.dotPosition) {\n return this.dotPosition;\n }\n if (hasProp(this, 'vertical')) {\n return this.vertical ? 'right' : 'bottom';\n }\n return 'bottom';\n },\n onWindowResized: function onWindowResized() {\n // Fix https://github.com/ant-design/ant-design/issues/2550\n var autoplay = this.autoplay;\n\n if (autoplay && this.$refs.slick && this.$refs.slick.innerSlider && this.$refs.slick.innerSlider.autoPlay) {\n this.$refs.slick.innerSlider.autoPlay();\n }\n },\n next: function next() {\n this.$refs.slick.slickNext();\n },\n prev: function prev() {\n this.$refs.slick.slickPrev();\n },\n goTo: function goTo(slide) {\n var dontAnimate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n this.$refs.slick.slickGoTo(slide, dontAnimate);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var props = _extends({}, this.$props);\n var $slots = this.$slots;\n\n\n if (props.effect === 'fade') {\n props.fade = true;\n }\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var className = getPrefixCls('carousel', props.prefixCls);\n var dotsClass = 'slick-dots';\n var dotPosition = this.getDotPosition();\n props.vertical = dotPosition === 'left' || dotPosition === 'right';\n props.dotsClass = classNames('' + dotsClass, dotsClass + '-' + (dotPosition || 'bottom'), _defineProperty({}, '' + props.dotsClass, !!props.dotsClass));\n if (props.vertical) {\n className = className + ' ' + className + '-vertical';\n }\n var SlickCarouselProps = {\n props: _extends({}, props, {\n nextArrow: getComponentFromProp(this, 'nextArrow'),\n prevArrow: getComponentFromProp(this, 'prevArrow')\n }),\n on: getListeners(this),\n scopedSlots: this.$scopedSlots\n };\n var children = filterEmpty($slots['default']);\n return h(\n 'div',\n { 'class': className },\n [h(\n SlickCarousel,\n _mergeJSXProps([{ ref: 'slick' }, SlickCarouselProps]),\n [children]\n )]\n );\n }\n};\n\n/* istanbul ignore next */\nCarousel.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Carousel.name, Carousel);\n};\n\nexport default Carousel;","import { getComponentFromProp } from '../_util/props-util';\nimport PropTypes from '../_util/vue-types';\nimport arrayTreeFilter from 'array-tree-filter';\nimport BaseMixin from '../_util/BaseMixin';\n\nexport default {\n name: 'CascaderMenus',\n mixins: [BaseMixin],\n props: {\n value: PropTypes.array.def([]),\n activeValue: PropTypes.array.def([]),\n options: PropTypes.array,\n prefixCls: PropTypes.string.def('rc-cascader-menus'),\n expandTrigger: PropTypes.string.def('click'),\n // onSelect: PropTypes.func,\n visible: PropTypes.bool.def(false),\n dropdownMenuColumnStyle: PropTypes.object,\n defaultFieldNames: PropTypes.object,\n fieldNames: PropTypes.object,\n expandIcon: PropTypes.any,\n loadingIcon: PropTypes.any\n },\n data: function data() {\n this.menuItems = {};\n return {};\n },\n\n watch: {\n visible: function visible(val) {\n var _this = this;\n\n if (val) {\n this.$nextTick(function () {\n _this.scrollActiveItemToView();\n });\n }\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.scrollActiveItemToView();\n });\n },\n\n methods: {\n getFieldName: function getFieldName(name) {\n var _$props = this.$props,\n fieldNames = _$props.fieldNames,\n defaultFieldNames = _$props.defaultFieldNames;\n // 防止只设置单个属性的名字\n\n return fieldNames[name] || defaultFieldNames[name];\n },\n getOption: function getOption(option, menuIndex) {\n var _this3 = this;\n\n var h = this.$createElement;\n var prefixCls = this.prefixCls,\n expandTrigger = this.expandTrigger;\n\n var loadingIcon = getComponentFromProp(this, 'loadingIcon');\n var expandIcon = getComponentFromProp(this, 'expandIcon');\n var onSelect = function onSelect(e) {\n _this3.__emit('select', option, menuIndex, e);\n };\n var onItemDoubleClick = function onItemDoubleClick(e) {\n _this3.__emit('itemDoubleClick', option, menuIndex, e);\n };\n var key = option[this.getFieldName('value')];\n var expandProps = {\n attrs: {\n role: 'menuitem'\n },\n on: {\n click: onSelect,\n dblclick: onItemDoubleClick,\n mousedown: function mousedown(e) {\n return e.preventDefault();\n }\n },\n key: Array.isArray(key) ? key.join('__ant__') : key\n };\n var menuItemCls = prefixCls + '-menu-item';\n var expandIconNode = null;\n var hasChildren = option[this.getFieldName('children')] && option[this.getFieldName('children')].length > 0;\n if (hasChildren || option.isLeaf === false) {\n menuItemCls += ' ' + prefixCls + '-menu-item-expand';\n if (!option.loading) {\n expandIconNode = h(\n 'span',\n { 'class': prefixCls + '-menu-item-expand-icon' },\n [expandIcon]\n );\n }\n }\n if (expandTrigger === 'hover' && (hasChildren || option.isLeaf === false)) {\n expandProps.on = {\n mouseenter: this.delayOnSelect.bind(this, onSelect),\n mouseleave: this.delayOnSelect.bind(this),\n click: onSelect\n };\n }\n if (this.isActiveOption(option, menuIndex)) {\n menuItemCls += ' ' + prefixCls + '-menu-item-active';\n expandProps.ref = this.getMenuItemRef(menuIndex);\n }\n if (option.disabled) {\n menuItemCls += ' ' + prefixCls + '-menu-item-disabled';\n }\n var loadingIconNode = null;\n if (option.loading) {\n menuItemCls += ' ' + prefixCls + '-menu-item-loading';\n loadingIconNode = loadingIcon || null;\n }\n var title = '';\n if (option.title) {\n title = option.title;\n } else if (typeof option[this.getFieldName('label')] === 'string') {\n title = option[this.getFieldName('label')];\n }\n expandProps.attrs.title = title;\n expandProps['class'] = menuItemCls;\n return h(\n 'li',\n expandProps,\n [option[this.getFieldName('label')], expandIconNode, loadingIconNode]\n );\n },\n getActiveOptions: function getActiveOptions(values) {\n var _this4 = this;\n\n var activeValue = values || this.activeValue;\n var options = this.options;\n return arrayTreeFilter(options, function (o, level) {\n return o[_this4.getFieldName('value')] === activeValue[level];\n }, { childrenKeyName: this.getFieldName('children') });\n },\n getShowOptions: function getShowOptions() {\n var _this5 = this;\n\n var options = this.options;\n\n var result = this.getActiveOptions().map(function (activeOption) {\n return activeOption[_this5.getFieldName('children')];\n }).filter(function (activeOption) {\n return !!activeOption;\n });\n result.unshift(options);\n return result;\n },\n delayOnSelect: function delayOnSelect(onSelect) {\n var _this6 = this;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.delayTimer) {\n clearTimeout(this.delayTimer);\n this.delayTimer = null;\n }\n if (typeof onSelect === 'function') {\n this.delayTimer = setTimeout(function () {\n onSelect(args);\n _this6.delayTimer = null;\n }, 150);\n }\n },\n scrollActiveItemToView: function scrollActiveItemToView() {\n // scroll into view\n var optionsLength = this.getShowOptions().length;\n for (var i = 0; i < optionsLength; i++) {\n var itemComponent = this.$refs['menuItems_' + i];\n if (itemComponent) {\n var target = itemComponent;\n target.parentNode.scrollTop = target.offsetTop;\n }\n }\n },\n isActiveOption: function isActiveOption(option, menuIndex) {\n var _activeValue = this.activeValue,\n activeValue = _activeValue === undefined ? [] : _activeValue;\n\n return activeValue[menuIndex] === option[this.getFieldName('value')];\n },\n getMenuItemRef: function getMenuItemRef(index) {\n return 'menuItems_' + index;\n }\n },\n\n render: function render() {\n var _this7 = this;\n\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n dropdownMenuColumnStyle = this.dropdownMenuColumnStyle;\n\n return h('div', [this.getShowOptions().map(function (options, menuIndex) {\n return h(\n 'ul',\n { 'class': prefixCls + '-menu', key: menuIndex, style: dropdownMenuColumnStyle },\n [options.map(function (option) {\n return _this7.getOption(option, menuIndex);\n })]\n );\n })]);\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport { getComponentFromProp, getListeners } from '../_util/props-util';\nimport PropTypes from '../_util/vue-types';\nimport Trigger from '../vc-trigger';\nimport Menus from './Menus';\nimport KeyCode from '../_util/KeyCode';\nimport arrayTreeFilter from 'array-tree-filter';\nimport shallowEqualArrays from 'shallow-equal/arrays';\nimport { hasProp, getEvents, getSlot } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { cloneElement } from '../_util/vnode';\n\nvar BUILT_IN_PLACEMENTS = {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX: 1,\n adjustY: 1\n }\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX: 1,\n adjustY: 1\n }\n },\n bottomRight: {\n points: ['tr', 'br'],\n offset: [0, 4],\n overflow: {\n adjustX: 1,\n adjustY: 1\n }\n },\n topRight: {\n points: ['br', 'tr'],\n offset: [0, -4],\n overflow: {\n adjustX: 1,\n adjustY: 1\n }\n }\n};\n\nexport default {\n mixins: [BaseMixin],\n model: {\n prop: 'value',\n event: 'change'\n },\n props: {\n value: PropTypes.array,\n defaultValue: PropTypes.array,\n options: PropTypes.array,\n // onChange: PropTypes.func,\n // onPopupVisibleChange: PropTypes.func,\n popupVisible: PropTypes.bool,\n disabled: PropTypes.bool.def(false),\n transitionName: PropTypes.string.def(''),\n popupClassName: PropTypes.string.def(''),\n popupStyle: PropTypes.object.def(function () {\n return {};\n }),\n popupPlacement: PropTypes.string.def('bottomLeft'),\n prefixCls: PropTypes.string.def('rc-cascader'),\n dropdownMenuColumnStyle: PropTypes.object,\n builtinPlacements: PropTypes.object.def(BUILT_IN_PLACEMENTS),\n loadData: PropTypes.func,\n changeOnSelect: PropTypes.bool,\n // onKeyDown: PropTypes.func,\n expandTrigger: PropTypes.string.def('click'),\n fieldNames: PropTypes.object.def(function () {\n return {\n label: 'label',\n value: 'value',\n children: 'children'\n };\n }),\n expandIcon: PropTypes.any,\n loadingIcon: PropTypes.any,\n getPopupContainer: PropTypes.func\n },\n data: function data() {\n var initialValue = [];\n var value = this.value,\n defaultValue = this.defaultValue,\n popupVisible = this.popupVisible;\n\n if (hasProp(this, 'value')) {\n initialValue = value || [];\n } else if (hasProp(this, 'defaultValue')) {\n initialValue = defaultValue || [];\n }\n // warning(!('filedNames' in props),\n // '`filedNames` of Cascader is a typo usage and deprecated, please use `fieldNames` instead.');\n\n return {\n sPopupVisible: popupVisible,\n sActiveValue: initialValue,\n sValue: initialValue\n };\n },\n\n watch: {\n value: function value(val, oldValue) {\n if (!shallowEqualArrays(val, oldValue)) {\n var newValues = {\n sValue: val || []\n };\n // allow activeValue diff from value\n // https://github.com/ant-design/ant-design/issues/2767\n if (!hasProp(this, 'loadData')) {\n newValues.sActiveValue = val || [];\n }\n this.setState(newValues);\n }\n },\n popupVisible: function popupVisible(val) {\n this.setState({\n sPopupVisible: val\n });\n }\n },\n methods: {\n getPopupDOMNode: function getPopupDOMNode() {\n return this.$refs.trigger.getPopupDomNode();\n },\n getFieldName: function getFieldName(name) {\n var defaultFieldNames = this.defaultFieldNames,\n fieldNames = this.fieldNames;\n\n return fieldNames[name] || defaultFieldNames[name];\n },\n getFieldNames: function getFieldNames() {\n return this.fieldNames;\n },\n getCurrentLevelOptions: function getCurrentLevelOptions() {\n var _this = this;\n\n var _options = this.options,\n options = _options === undefined ? [] : _options,\n _sActiveValue = this.sActiveValue,\n sActiveValue = _sActiveValue === undefined ? [] : _sActiveValue;\n\n var result = arrayTreeFilter(options, function (o, level) {\n return o[_this.getFieldName('value')] === sActiveValue[level];\n }, { childrenKeyName: this.getFieldName('children') });\n if (result[result.length - 2]) {\n return result[result.length - 2][this.getFieldName('children')];\n }\n return [].concat(_toConsumableArray(options)).filter(function (o) {\n return !o.disabled;\n });\n },\n getActiveOptions: function getActiveOptions(activeValue) {\n var _this2 = this;\n\n return arrayTreeFilter(this.options || [], function (o, level) {\n return o[_this2.getFieldName('value')] === activeValue[level];\n }, { childrenKeyName: this.getFieldName('children') });\n },\n setPopupVisible: function setPopupVisible(popupVisible) {\n if (!hasProp(this, 'popupVisible')) {\n this.setState({ sPopupVisible: popupVisible });\n }\n // sync activeValue with value when panel open\n if (popupVisible && !this.sPopupVisible) {\n this.setState({\n sActiveValue: this.sValue\n });\n }\n this.__emit('popupVisibleChange', popupVisible);\n },\n handleChange: function handleChange(options, setProps, e) {\n var _this3 = this;\n\n if (e.type !== 'keydown' || e.keyCode === KeyCode.ENTER) {\n this.__emit('change', options.map(function (o) {\n return o[_this3.getFieldName('value')];\n }), options);\n this.setPopupVisible(setProps.visible);\n }\n },\n handlePopupVisibleChange: function handlePopupVisibleChange(popupVisible) {\n this.setPopupVisible(popupVisible);\n },\n handleMenuSelect: function handleMenuSelect(targetOption, menuIndex, e) {\n // Keep focused state for keyboard support\n var triggerNode = this.$refs.trigger.getRootDomNode();\n if (triggerNode && triggerNode.focus) {\n triggerNode.focus();\n }\n var changeOnSelect = this.changeOnSelect,\n loadData = this.loadData,\n expandTrigger = this.expandTrigger;\n\n if (!targetOption || targetOption.disabled) {\n return;\n }\n var sActiveValue = this.sActiveValue;\n\n sActiveValue = sActiveValue.slice(0, menuIndex + 1);\n sActiveValue[menuIndex] = targetOption[this.getFieldName('value')];\n var activeOptions = this.getActiveOptions(sActiveValue);\n if (targetOption.isLeaf === false && !targetOption[this.getFieldName('children')] && loadData) {\n if (changeOnSelect) {\n this.handleChange(activeOptions, { visible: true }, e);\n }\n this.setState({ sActiveValue: sActiveValue });\n loadData(activeOptions);\n return;\n }\n var newState = {};\n if (!targetOption[this.getFieldName('children')] || !targetOption[this.getFieldName('children')].length) {\n this.handleChange(activeOptions, { visible: false }, e);\n // set value to activeValue when select leaf option\n newState.sValue = sActiveValue;\n // add e.type judgement to prevent `onChange` being triggered by mouseEnter\n } else if (changeOnSelect && (e.type === 'click' || e.type === 'keydown')) {\n if (expandTrigger === 'hover') {\n this.handleChange(activeOptions, { visible: false }, e);\n } else {\n this.handleChange(activeOptions, { visible: true }, e);\n }\n // set value to activeValue on every select\n newState.sValue = sActiveValue;\n }\n newState.sActiveValue = sActiveValue;\n // not change the value by keyboard\n if (hasProp(this, 'value') || e.type === 'keydown' && e.keyCode !== KeyCode.ENTER) {\n delete newState.sValue;\n }\n this.setState(newState);\n },\n handleItemDoubleClick: function handleItemDoubleClick() {\n var changeOnSelect = this.$props.changeOnSelect;\n\n if (changeOnSelect) {\n this.setPopupVisible(false);\n }\n },\n handleKeyDown: function handleKeyDown(e) {\n var _this4 = this;\n\n var $slots = this.$slots;\n\n var children = $slots['default'] && $slots['default'][0];\n // https://github.com/ant-design/ant-design/issues/6717\n // Don't bind keyboard support when children specify the onKeyDown\n if (children) {\n var keydown = getEvents(children).keydown;\n if (keydown) {\n keydown(e);\n return;\n }\n }\n var activeValue = [].concat(_toConsumableArray(this.sActiveValue));\n var currentLevel = activeValue.length - 1 < 0 ? 0 : activeValue.length - 1;\n var currentOptions = this.getCurrentLevelOptions();\n var currentIndex = currentOptions.map(function (o) {\n return o[_this4.getFieldName('value')];\n }).indexOf(activeValue[currentLevel]);\n if (e.keyCode !== KeyCode.DOWN && e.keyCode !== KeyCode.UP && e.keyCode !== KeyCode.LEFT && e.keyCode !== KeyCode.RIGHT && e.keyCode !== KeyCode.ENTER && e.keyCode !== KeyCode.SPACE && e.keyCode !== KeyCode.BACKSPACE && e.keyCode !== KeyCode.ESC && e.keyCode !== KeyCode.TAB) {\n return;\n }\n // Press any keys above to reopen menu\n if (!this.sPopupVisible && e.keyCode !== KeyCode.BACKSPACE && e.keyCode !== KeyCode.LEFT && e.keyCode !== KeyCode.RIGHT && e.keyCode !== KeyCode.ESC && e.keyCode !== KeyCode.TAB) {\n this.setPopupVisible(true);\n return;\n }\n if (e.keyCode === KeyCode.DOWN || e.keyCode === KeyCode.UP) {\n e.preventDefault();\n var nextIndex = currentIndex;\n if (nextIndex !== -1) {\n if (e.keyCode === KeyCode.DOWN) {\n nextIndex += 1;\n nextIndex = nextIndex >= currentOptions.length ? 0 : nextIndex;\n } else {\n nextIndex -= 1;\n nextIndex = nextIndex < 0 ? currentOptions.length - 1 : nextIndex;\n }\n } else {\n nextIndex = 0;\n }\n activeValue[currentLevel] = currentOptions[nextIndex][this.getFieldName('value')];\n } else if (e.keyCode === KeyCode.LEFT || e.keyCode === KeyCode.BACKSPACE) {\n e.preventDefault();\n activeValue.splice(activeValue.length - 1, 1);\n } else if (e.keyCode === KeyCode.RIGHT) {\n e.preventDefault();\n if (currentOptions[currentIndex] && currentOptions[currentIndex][this.getFieldName('children')]) {\n activeValue.push(currentOptions[currentIndex][this.getFieldName('children')][0][this.getFieldName('value')]);\n }\n } else if (e.keyCode === KeyCode.ESC || e.keyCode === KeyCode.TAB) {\n this.setPopupVisible(false);\n return;\n }\n if (!activeValue || activeValue.length === 0) {\n this.setPopupVisible(false);\n }\n var activeOptions = this.getActiveOptions(activeValue);\n var targetOption = activeOptions[activeOptions.length - 1];\n this.handleMenuSelect(targetOption, activeOptions.length - 1, e);\n this.__emit('keydown', e);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var $props = this.$props,\n sActiveValue = this.sActiveValue,\n handleMenuSelect = this.handleMenuSelect,\n sPopupVisible = this.sPopupVisible,\n handlePopupVisibleChange = this.handlePopupVisibleChange,\n handleKeyDown = this.handleKeyDown;\n\n var listeners = getListeners(this);\n\n var prefixCls = $props.prefixCls,\n transitionName = $props.transitionName,\n popupClassName = $props.popupClassName,\n _$props$options = $props.options,\n options = _$props$options === undefined ? [] : _$props$options,\n disabled = $props.disabled,\n builtinPlacements = $props.builtinPlacements,\n popupPlacement = $props.popupPlacement,\n restProps = _objectWithoutProperties($props, ['prefixCls', 'transitionName', 'popupClassName', 'options', 'disabled', 'builtinPlacements', 'popupPlacement']);\n // Did not show popup when there is no options\n\n\n var menus = h('div');\n var emptyMenuClassName = '';\n if (options && options.length > 0) {\n var loadingIcon = getComponentFromProp(this, 'loadingIcon');\n var expandIcon = getComponentFromProp(this, 'expandIcon') || '>';\n var menusProps = {\n props: _extends({}, $props, {\n fieldNames: this.getFieldNames(),\n defaultFieldNames: this.defaultFieldNames,\n activeValue: sActiveValue,\n visible: sPopupVisible,\n loadingIcon: loadingIcon,\n expandIcon: expandIcon\n }),\n on: _extends({}, listeners, {\n select: handleMenuSelect,\n itemDoubleClick: this.handleItemDoubleClick\n })\n };\n menus = h(Menus, menusProps);\n } else {\n emptyMenuClassName = ' ' + prefixCls + '-menus-empty';\n }\n var triggerProps = {\n props: _extends({}, restProps, {\n disabled: disabled,\n popupPlacement: popupPlacement,\n builtinPlacements: builtinPlacements,\n popupTransitionName: transitionName,\n action: disabled ? [] : ['click'],\n popupVisible: disabled ? false : sPopupVisible,\n prefixCls: prefixCls + '-menus',\n popupClassName: popupClassName + emptyMenuClassName\n }),\n on: _extends({}, listeners, {\n popupVisibleChange: handlePopupVisibleChange\n }),\n ref: 'trigger'\n };\n var children = getSlot(this, 'default')[0];\n return h(\n Trigger,\n triggerProps,\n [children && cloneElement(children, {\n on: {\n keydown: handleKeyDown\n },\n attrs: {\n tabIndex: disabled ? undefined : 0\n }\n }), h(\n 'template',\n { slot: 'popup' },\n [menus]\n )]\n );\n }\n};","// based on rc-cascader 0.17.4\nimport Cascader from './Cascader';\nexport default Cascader;","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport VcCascader from '../vc-cascader';\nimport arrayTreeFilter from 'array-tree-filter';\nimport classNames from 'classnames';\nimport omit from 'omit.js';\nimport KeyCode from '../_util/KeyCode';\nimport Input from '../input';\nimport Icon from '../icon';\nimport { hasProp, filterEmpty, getOptionProps, getStyle, getClass, getAttrs, getComponentFromProp, isValidElement, getListeners } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { cloneElement } from '../_util/vnode';\nimport warning from '../_util/warning';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nvar CascaderOptionType = PropTypes.shape({\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n label: PropTypes.any,\n disabled: PropTypes.bool,\n children: PropTypes.array,\n key: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n}).loose;\n\nvar FieldNamesType = PropTypes.shape({\n value: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired,\n children: PropTypes.string\n}).loose;\n\nvar CascaderExpandTrigger = PropTypes.oneOf(['click', 'hover']);\n\nvar ShowSearchType = PropTypes.shape({\n filter: PropTypes.func,\n render: PropTypes.func,\n sort: PropTypes.func,\n matchInputWidth: PropTypes.bool,\n limit: PropTypes.oneOfType([Boolean, Number])\n}).loose;\nfunction noop() {}\n\nvar CascaderProps = {\n /** 可选项数据源 */\n options: PropTypes.arrayOf(CascaderOptionType).def([]),\n /** 默认的选中项 */\n defaultValue: PropTypes.array,\n /** 指定选中项 */\n value: PropTypes.array,\n /** 选择完成后的回调 */\n // onChange?: (value: string[], selectedOptions?: CascaderOptionType[]) => void;\n /** 选择后展示的渲染函数 */\n displayRender: PropTypes.func,\n transitionName: PropTypes.string.def('slide-up'),\n popupStyle: PropTypes.object.def(function () {\n return {};\n }),\n /** 自定义浮层类名 */\n popupClassName: PropTypes.string,\n /** 浮层预设位置:`bottomLeft` `bottomRight` `topLeft` `topRight` */\n popupPlacement: PropTypes.oneOf(['bottomLeft', 'bottomRight', 'topLeft', 'topRight']).def('bottomLeft'),\n /** 输入框占位文本*/\n placeholder: PropTypes.string.def('Please select'),\n /** 输入框大小,可选 `large` `default` `small` */\n size: PropTypes.oneOf(['large', 'default', 'small']),\n /** 禁用*/\n disabled: PropTypes.bool.def(false),\n /** 是否支持清除*/\n allowClear: PropTypes.bool.def(true),\n showSearch: PropTypes.oneOfType([Boolean, ShowSearchType]),\n notFoundContent: PropTypes.any,\n loadData: PropTypes.func,\n /** 次级菜单的展开方式,可选 'click' 和 'hover' */\n expandTrigger: CascaderExpandTrigger,\n /** 当此项为 true 时,点选每级菜单选项值都会发生变化 */\n changeOnSelect: PropTypes.bool,\n /** 浮层可见变化时回调 */\n // onPopupVisibleChange?: (popupVisible: boolean) => void;\n prefixCls: PropTypes.string,\n inputPrefixCls: PropTypes.string,\n getPopupContainer: PropTypes.func,\n popupVisible: PropTypes.bool,\n fieldNames: FieldNamesType,\n autoFocus: PropTypes.bool,\n suffixIcon: PropTypes.any\n};\n\n// We limit the filtered item count by default\nvar defaultLimit = 50;\n\nfunction defaultFilterOption(inputValue, path, names) {\n return path.some(function (option) {\n return option[names.label].indexOf(inputValue) > -1;\n });\n}\n\nfunction defaultSortFilteredOption(a, b, inputValue, names) {\n function callback(elem) {\n return elem[names.label].indexOf(inputValue) > -1;\n }\n\n return a.findIndex(callback) - b.findIndex(callback);\n}\n\nfunction getFilledFieldNames(_ref) {\n var _ref$fieldNames = _ref.fieldNames,\n fieldNames = _ref$fieldNames === undefined ? {} : _ref$fieldNames;\n\n var names = {\n children: fieldNames.children || 'children',\n label: fieldNames.label || 'label',\n value: fieldNames.value || 'value'\n };\n return names;\n}\n\nfunction flattenTree() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var props = arguments[1];\n var ancestor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n\n var names = getFilledFieldNames(props);\n var flattenOptions = [];\n var childrenName = names.children;\n options.forEach(function (option) {\n var path = ancestor.concat(option);\n if (props.changeOnSelect || !option[childrenName] || !option[childrenName].length) {\n flattenOptions.push(path);\n }\n if (option[childrenName]) {\n flattenOptions = flattenOptions.concat(flattenTree(option[childrenName], props, path));\n }\n });\n return flattenOptions;\n}\n\nvar defaultDisplayRender = function defaultDisplayRender(_ref2) {\n var labels = _ref2.labels;\n return labels.join(' / ');\n};\n\nvar Cascader = {\n inheritAttrs: false,\n name: 'ACascader',\n mixins: [BaseMixin],\n props: CascaderProps,\n model: {\n prop: 'value',\n event: 'change'\n },\n provide: function provide() {\n return {\n savePopupRef: this.savePopupRef\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } },\n localeData: { 'default': function _default() {\n return {};\n } }\n },\n data: function data() {\n this.cachedOptions = [];\n var value = this.value,\n defaultValue = this.defaultValue,\n popupVisible = this.popupVisible,\n showSearch = this.showSearch,\n options = this.options;\n\n return {\n sValue: value || defaultValue || [],\n inputValue: '',\n inputFocused: false,\n sPopupVisible: popupVisible,\n flattenOptions: showSearch ? flattenTree(options, this.$props) : undefined\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.autoFocus && !_this.showSearch && !_this.disabled) {\n _this.$refs.picker.focus();\n }\n });\n },\n\n watch: {\n value: function value(val) {\n this.setState({ sValue: val || [] });\n },\n popupVisible: function popupVisible(val) {\n this.setState({ sPopupVisible: val });\n },\n options: function options(val) {\n if (this.showSearch) {\n this.setState({ flattenOptions: flattenTree(val, this.$props) });\n }\n }\n },\n methods: {\n savePopupRef: function savePopupRef(ref) {\n this.popupRef = ref;\n },\n highlightKeyword: function highlightKeyword(str, keyword, prefixCls) {\n var h = this.$createElement;\n\n return str.split(keyword).map(function (node, index) {\n return index === 0 ? node : [h(\n 'span',\n { 'class': prefixCls + '-menu-item-keyword' },\n [keyword]\n ), node];\n });\n },\n defaultRenderFilteredOption: function defaultRenderFilteredOption(_ref3) {\n var _this2 = this;\n\n var inputValue = _ref3.inputValue,\n path = _ref3.path,\n prefixCls = _ref3.prefixCls,\n names = _ref3.names;\n\n return path.map(function (option, index) {\n var label = option[names.label];\n var node = label.indexOf(inputValue) > -1 ? _this2.highlightKeyword(label, inputValue, prefixCls) : label;\n return index === 0 ? node : [' / ', node];\n });\n },\n handleChange: function handleChange(value, selectedOptions) {\n this.setState({ inputValue: '' });\n if (selectedOptions[0].__IS_FILTERED_OPTION) {\n var unwrappedValue = value[0];\n var unwrappedSelectedOptions = selectedOptions[0].path;\n this.setValue(unwrappedValue, unwrappedSelectedOptions);\n return;\n }\n this.setValue(value, selectedOptions);\n },\n handlePopupVisibleChange: function handlePopupVisibleChange(popupVisible) {\n if (!hasProp(this, 'popupVisible')) {\n this.setState(function (state) {\n return {\n sPopupVisible: popupVisible,\n inputFocused: popupVisible,\n inputValue: popupVisible ? state.inputValue : ''\n };\n });\n }\n this.$emit('popupVisibleChange', popupVisible);\n },\n handleInputFocus: function handleInputFocus(e) {\n this.$emit('focus', e);\n },\n handleInputBlur: function handleInputBlur(e) {\n this.setState({\n inputFocused: false\n });\n this.$emit('blur', e);\n },\n handleInputClick: function handleInputClick(e) {\n var inputFocused = this.inputFocused,\n sPopupVisible = this.sPopupVisible;\n // Prevent `Trigger` behaviour.\n\n if (inputFocused || sPopupVisible) {\n e.stopPropagation();\n if (e.nativeEvent && e.nativeEvent.stopImmediatePropagation) {\n e.nativeEvent.stopImmediatePropagation();\n }\n }\n },\n handleKeyDown: function handleKeyDown(e) {\n if (e.keyCode === KeyCode.BACKSPACE || e.keyCode === KeyCode.SPACE) {\n e.stopPropagation();\n }\n },\n handleInputChange: function handleInputChange(e) {\n var inputValue = e.target.value;\n this.setState({ inputValue: inputValue });\n this.$emit('search', inputValue);\n },\n setValue: function setValue(value, selectedOptions) {\n if (!hasProp(this, 'value')) {\n this.setState({ sValue: value });\n }\n this.$emit('change', value, selectedOptions);\n },\n getLabel: function getLabel() {\n var options = this.options,\n $scopedSlots = this.$scopedSlots;\n\n var names = getFilledFieldNames(this.$props);\n var displayRender = this.displayRender || $scopedSlots.displayRender || defaultDisplayRender;\n var value = this.sValue;\n var unwrappedValue = Array.isArray(value[0]) ? value[0] : value;\n var selectedOptions = arrayTreeFilter(options, function (o, level) {\n return o[names.value] === unwrappedValue[level];\n }, { childrenKeyName: names.children });\n var labels = selectedOptions.map(function (o) {\n return o[names.label];\n });\n return displayRender({ labels: labels, selectedOptions: selectedOptions });\n },\n clearSelection: function clearSelection(e) {\n e.preventDefault();\n e.stopPropagation();\n if (!this.inputValue) {\n this.setValue([]);\n this.handlePopupVisibleChange(false);\n } else {\n this.setState({ inputValue: '' });\n }\n },\n generateFilteredOptions: function generateFilteredOptions(prefixCls, renderEmpty) {\n var _ref5;\n\n var h = this.$createElement;\n var showSearch = this.showSearch,\n notFoundContent = this.notFoundContent,\n $scopedSlots = this.$scopedSlots;\n\n var names = getFilledFieldNames(this.$props);\n var _showSearch$filter = showSearch.filter,\n filter = _showSearch$filter === undefined ? defaultFilterOption : _showSearch$filter,\n _showSearch$sort = showSearch.sort,\n sort = _showSearch$sort === undefined ? defaultSortFilteredOption : _showSearch$sort,\n _showSearch$limit = showSearch.limit,\n limit = _showSearch$limit === undefined ? defaultLimit : _showSearch$limit;\n\n var render = showSearch.render || $scopedSlots.showSearchRender || this.defaultRenderFilteredOption;\n var _$data = this.$data,\n _$data$flattenOptions = _$data.flattenOptions,\n flattenOptions = _$data$flattenOptions === undefined ? [] : _$data$flattenOptions,\n inputValue = _$data.inputValue;\n\n // Limit the filter if needed\n\n var filtered = void 0;\n if (limit > 0) {\n filtered = [];\n var matchCount = 0;\n\n // Perf optimization to filter items only below the limit\n flattenOptions.some(function (path) {\n var match = filter(inputValue, path, names);\n if (match) {\n filtered.push(path);\n matchCount += 1;\n }\n return matchCount >= limit;\n });\n } else {\n warning(typeof limit !== 'number', 'Cascader', \"'limit' of showSearch in Cascader should be positive number or false.\");\n filtered = flattenOptions.filter(function (path) {\n return filter(inputValue, path, names);\n });\n }\n\n filtered.sort(function (a, b) {\n return sort(a, b, inputValue, names);\n });\n\n if (filtered.length > 0) {\n return filtered.map(function (path) {\n var _ref4;\n\n return _ref4 = {\n __IS_FILTERED_OPTION: true,\n path: path\n }, _defineProperty(_ref4, names.label, render({ inputValue: inputValue, path: path, prefixCls: prefixCls, names: names })), _defineProperty(_ref4, names.value, path.map(function (o) {\n return o[names.value];\n })), _defineProperty(_ref4, 'disabled', path.some(function (o) {\n return !!o.disabled;\n })), _ref4;\n });\n }\n return [(_ref5 = {}, _defineProperty(_ref5, names.label, notFoundContent || renderEmpty(h, 'Cascader')), _defineProperty(_ref5, names.value, 'ANT_CASCADER_NOT_FOUND'), _defineProperty(_ref5, 'disabled', true), _ref5)];\n },\n focus: function focus() {\n if (this.showSearch) {\n this.$refs.input.focus();\n } else {\n this.$refs.picker.focus();\n }\n },\n blur: function blur() {\n if (this.showSearch) {\n this.$refs.input.blur();\n } else {\n this.$refs.picker.blur();\n }\n }\n },\n\n render: function render() {\n var _classNames, _classNames2, _classNames3;\n\n var h = arguments[0];\n var $slots = this.$slots,\n sPopupVisible = this.sPopupVisible,\n inputValue = this.inputValue,\n configProvider = this.configProvider,\n localeData = this.localeData;\n var _$data2 = this.$data,\n value = _$data2.sValue,\n inputFocused = _$data2.inputFocused;\n\n var props = getOptionProps(this);\n var suffixIcon = getComponentFromProp(this, 'suffixIcon');\n suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;\n var getContextPopupContainer = configProvider.getPopupContainer;\n\n var customizePrefixCls = props.prefixCls,\n customizeInputPrefixCls = props.inputPrefixCls,\n _props$placeholder = props.placeholder,\n placeholder = _props$placeholder === undefined ? localeData.placeholder : _props$placeholder,\n size = props.size,\n disabled = props.disabled,\n allowClear = props.allowClear,\n _props$showSearch = props.showSearch,\n showSearch = _props$showSearch === undefined ? false : _props$showSearch,\n notFoundContent = props.notFoundContent,\n otherProps = _objectWithoutProperties(props, ['prefixCls', 'inputPrefixCls', 'placeholder', 'size', 'disabled', 'allowClear', 'showSearch', 'notFoundContent']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var renderEmpty = this.configProvider.renderEmpty;\n var prefixCls = getPrefixCls('cascader', customizePrefixCls);\n var inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);\n\n var sizeCls = classNames((_classNames = {}, _defineProperty(_classNames, inputPrefixCls + '-lg', size === 'large'), _defineProperty(_classNames, inputPrefixCls + '-sm', size === 'small'), _classNames));\n var clearIcon = allowClear && !disabled && value.length > 0 || inputValue ? h(Icon, {\n attrs: {\n type: 'close-circle',\n theme: 'filled'\n },\n 'class': prefixCls + '-picker-clear',\n on: {\n 'click': this.clearSelection\n },\n\n key: 'clear-icon'\n }) : null;\n var arrowCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, prefixCls + '-picker-arrow', true), _defineProperty(_classNames2, prefixCls + '-picker-arrow-expand', sPopupVisible), _classNames2));\n var pickerCls = classNames(getClass(this), prefixCls + '-picker', (_classNames3 = {}, _defineProperty(_classNames3, prefixCls + '-picker-with-value', inputValue), _defineProperty(_classNames3, prefixCls + '-picker-disabled', disabled), _defineProperty(_classNames3, prefixCls + '-picker-' + size, !!size), _defineProperty(_classNames3, prefixCls + '-picker-show-search', !!showSearch), _defineProperty(_classNames3, prefixCls + '-picker-focused', inputFocused), _classNames3));\n\n // Fix bug of https://github.com/facebook/react/pull/5004\n // and https://fb.me/react-unknown-prop\n var tempInputProps = omit(otherProps, ['options', 'popupPlacement', 'transitionName', 'displayRender', 'changeOnSelect', 'expandTrigger', 'popupVisible', 'getPopupContainer', 'loadData', 'popupClassName', 'filterOption', 'renderFilteredOption', 'sortFilteredOption', 'notFoundContent', 'defaultValue', 'fieldNames']);\n\n var options = props.options;\n var names = getFilledFieldNames(this.$props);\n if (options && options.length > 0) {\n if (inputValue) {\n options = this.generateFilteredOptions(prefixCls, renderEmpty);\n }\n } else {\n var _ref6;\n\n options = [(_ref6 = {}, _defineProperty(_ref6, names.label, notFoundContent || renderEmpty(h, 'Cascader')), _defineProperty(_ref6, names.value, 'ANT_CASCADER_NOT_FOUND'), _defineProperty(_ref6, 'disabled', true), _ref6)];\n }\n\n // Dropdown menu should keep previous status until it is fully closed.\n if (!sPopupVisible) {\n options = this.cachedOptions;\n } else {\n this.cachedOptions = options;\n }\n\n var dropdownMenuColumnStyle = {};\n var isNotFound = (options || []).length === 1 && options[0].value === 'ANT_CASCADER_NOT_FOUND';\n if (isNotFound) {\n dropdownMenuColumnStyle.height = 'auto'; // Height of one row.\n }\n // The default value of `matchInputWidth` is `true`\n var resultListMatchInputWidth = showSearch.matchInputWidth !== false;\n if (resultListMatchInputWidth && (inputValue || isNotFound) && this.$refs.input) {\n dropdownMenuColumnStyle.width = this.$refs.input.$el.offsetWidth + 'px';\n }\n // showSearch时,focus、blur在input上触发,反之在ref='picker'上触发\n var inputProps = {\n props: _extends({}, tempInputProps, {\n prefixCls: inputPrefixCls,\n placeholder: value && value.length > 0 ? undefined : placeholder,\n value: inputValue,\n disabled: disabled,\n readOnly: !showSearch,\n autoComplete: 'off'\n }),\n 'class': prefixCls + '-input ' + sizeCls,\n ref: 'input',\n on: {\n focus: showSearch ? this.handleInputFocus : noop,\n click: showSearch ? this.handleInputClick : noop,\n blur: showSearch ? this.handleInputBlur : noop,\n keydown: this.handleKeyDown,\n change: showSearch ? this.handleInputChange : noop\n },\n attrs: getAttrs(this)\n };\n var children = filterEmpty($slots['default']);\n var inputIcon = suffixIcon && (isValidElement(suffixIcon) ? cloneElement(suffixIcon, {\n 'class': _defineProperty({}, prefixCls + '-picker-arrow', true)\n }) : h(\n 'span',\n { 'class': prefixCls + '-picker-arrow' },\n [suffixIcon]\n )) || h(Icon, {\n attrs: { type: 'down' },\n 'class': arrowCls });\n\n var input = children.length ? children : h(\n 'span',\n { 'class': pickerCls, style: getStyle(this), ref: 'picker' },\n [showSearch ? h(\n 'span',\n { 'class': prefixCls + '-picker-label' },\n [this.getLabel()]\n ) : null, h(Input, inputProps), !showSearch ? h(\n 'span',\n { 'class': prefixCls + '-picker-label' },\n [this.getLabel()]\n ) : null, clearIcon, inputIcon]\n );\n\n var expandIcon = h(Icon, {\n attrs: { type: 'right' }\n });\n\n var loadingIcon = h(\n 'span',\n { 'class': prefixCls + '-menu-item-loading-icon' },\n [h(Icon, {\n attrs: { type: 'redo', spin: true }\n })]\n );\n var getPopupContainer = props.getPopupContainer || getContextPopupContainer;\n var cascaderProps = {\n props: _extends({}, props, {\n getPopupContainer: getPopupContainer,\n options: options,\n prefixCls: prefixCls,\n value: value,\n popupVisible: sPopupVisible,\n dropdownMenuColumnStyle: dropdownMenuColumnStyle,\n expandIcon: expandIcon,\n loadingIcon: loadingIcon\n }),\n on: _extends({}, getListeners(this), {\n popupVisibleChange: this.handlePopupVisibleChange,\n change: this.handleChange\n })\n };\n return h(\n VcCascader,\n cascaderProps,\n [input]\n );\n }\n};\n\n/* istanbul ignore next */\nCascader.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Cascader.name, Cascader);\n};\n\nexport default Cascader;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport VcCheckbox from '../vc-checkbox';\nimport hasProp, { getOptionProps, getAttrs, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport warning from '../_util/warning';\nfunction noop() {}\n\nexport default {\n name: 'ACheckbox',\n inheritAttrs: false,\n __ANT_CHECKBOX: true,\n model: {\n prop: 'checked'\n },\n props: {\n prefixCls: PropTypes.string,\n defaultChecked: PropTypes.bool,\n checked: PropTypes.bool,\n disabled: PropTypes.bool,\n isGroup: PropTypes.bool,\n value: PropTypes.any,\n name: PropTypes.string,\n id: PropTypes.string,\n indeterminate: PropTypes.bool,\n type: PropTypes.string.def('checkbox'),\n autoFocus: PropTypes.bool\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } },\n checkboxGroupContext: { 'default': function _default() {\n return undefined;\n } }\n },\n watch: {\n value: function value(_value, prevValue) {\n var _this = this;\n\n this.$nextTick(function () {\n var _checkboxGroupContext = _this.checkboxGroupContext,\n checkboxGroup = _checkboxGroupContext === undefined ? {} : _checkboxGroupContext;\n\n if (checkboxGroup.registerValue && checkboxGroup.cancelValue) {\n checkboxGroup.cancelValue(prevValue);\n checkboxGroup.registerValue(_value);\n }\n });\n }\n },\n mounted: function mounted() {\n var value = this.value,\n _checkboxGroupContext2 = this.checkboxGroupContext,\n checkboxGroup = _checkboxGroupContext2 === undefined ? {} : _checkboxGroupContext2;\n\n if (checkboxGroup.registerValue) {\n checkboxGroup.registerValue(value);\n }\n\n warning(hasProp(this, 'checked') || this.checkboxGroupContext || !hasProp(this, 'value'), 'Checkbox', '`value` is not validate prop, do you mean `checked`?');\n },\n beforeDestroy: function beforeDestroy() {\n var value = this.value,\n _checkboxGroupContext3 = this.checkboxGroupContext,\n checkboxGroup = _checkboxGroupContext3 === undefined ? {} : _checkboxGroupContext3;\n\n if (checkboxGroup.cancelValue) {\n checkboxGroup.cancelValue(value);\n }\n },\n\n methods: {\n handleChange: function handleChange(event) {\n var targetChecked = event.target.checked;\n this.$emit('input', targetChecked);\n this.$emit('change', event);\n },\n focus: function focus() {\n this.$refs.vcCheckbox.focus();\n },\n blur: function blur() {\n this.$refs.vcCheckbox.blur();\n }\n },\n\n render: function render() {\n var _this2 = this,\n _classNames;\n\n var h = arguments[0];\n var checkboxGroup = this.checkboxGroupContext,\n $slots = this.$slots;\n\n var props = getOptionProps(this);\n var children = $slots['default'];\n\n var _getListeners = getListeners(this),\n _getListeners$mouseen = _getListeners.mouseenter,\n mouseenter = _getListeners$mouseen === undefined ? noop : _getListeners$mouseen,\n _getListeners$mousele = _getListeners.mouseleave,\n mouseleave = _getListeners$mousele === undefined ? noop : _getListeners$mousele,\n input = _getListeners.input,\n restListeners = _objectWithoutProperties(_getListeners, ['mouseenter', 'mouseleave', 'input']);\n\n var customizePrefixCls = props.prefixCls,\n indeterminate = props.indeterminate,\n restProps = _objectWithoutProperties(props, ['prefixCls', 'indeterminate']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('checkbox', customizePrefixCls);\n\n var checkboxProps = {\n props: _extends({}, restProps, { prefixCls: prefixCls }),\n on: restListeners,\n attrs: getAttrs(this)\n };\n if (checkboxGroup) {\n checkboxProps.on.change = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this2.$emit.apply(_this2, ['change'].concat(args));\n checkboxGroup.toggleOption({ label: children, value: props.value });\n };\n checkboxProps.props.name = checkboxGroup.name;\n checkboxProps.props.checked = checkboxGroup.sValue.indexOf(props.value) !== -1;\n checkboxProps.props.disabled = props.disabled || checkboxGroup.disabled;\n checkboxProps.props.indeterminate = indeterminate;\n } else {\n checkboxProps.on.change = this.handleChange;\n }\n var classString = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-wrapper', true), _defineProperty(_classNames, prefixCls + '-wrapper-checked', checkboxProps.props.checked), _defineProperty(_classNames, prefixCls + '-wrapper-disabled', checkboxProps.props.disabled), _classNames));\n var checkboxClass = classNames(_defineProperty({}, prefixCls + '-indeterminate', indeterminate));\n return h(\n 'label',\n { 'class': classString, on: {\n 'mouseenter': mouseenter,\n 'mouseleave': mouseleave\n }\n },\n [h(VcCheckbox, _mergeJSXProps([checkboxProps, { 'class': checkboxClass, ref: 'vcCheckbox' }])), children !== undefined && h('span', [children])]\n );\n }\n};","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport Checkbox from './Checkbox';\nimport hasProp from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nfunction noop() {}\nexport default {\n name: 'ACheckboxGroup',\n model: {\n prop: 'value'\n },\n props: {\n name: PropTypes.string,\n prefixCls: PropTypes.string,\n defaultValue: PropTypes.array,\n value: PropTypes.array,\n options: PropTypes.array.def([]),\n disabled: PropTypes.bool\n },\n provide: function provide() {\n return {\n checkboxGroupContext: this\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var value = this.value,\n defaultValue = this.defaultValue;\n\n return {\n sValue: value || defaultValue || [],\n registeredValues: []\n };\n },\n\n watch: {\n value: function value(val) {\n this.sValue = val || [];\n }\n },\n methods: {\n getOptions: function getOptions() {\n var options = this.options,\n $scopedSlots = this.$scopedSlots;\n\n return options.map(function (option) {\n if (typeof option === 'string') {\n return {\n label: option,\n value: option\n };\n }\n var label = option.label;\n if (label === undefined && $scopedSlots.label) {\n label = $scopedSlots.label(option);\n }\n return _extends({}, option, { label: label });\n });\n },\n cancelValue: function cancelValue(value) {\n this.registeredValues = this.registeredValues.filter(function (val) {\n return val !== value;\n });\n },\n registerValue: function registerValue(value) {\n this.registeredValues = [].concat(_toConsumableArray(this.registeredValues), [value]);\n },\n toggleOption: function toggleOption(option) {\n var registeredValues = this.registeredValues;\n\n var optionIndex = this.sValue.indexOf(option.value);\n var value = [].concat(_toConsumableArray(this.sValue));\n if (optionIndex === -1) {\n value.push(option.value);\n } else {\n value.splice(optionIndex, 1);\n }\n if (!hasProp(this, 'value')) {\n this.sValue = value;\n }\n var options = this.getOptions();\n var val = value.filter(function (val) {\n return registeredValues.indexOf(val) !== -1;\n }).sort(function (a, b) {\n var indexA = options.findIndex(function (opt) {\n return opt.value === a;\n });\n var indexB = options.findIndex(function (opt) {\n return opt.value === b;\n });\n return indexA - indexB;\n });\n this.$emit('input', val);\n this.$emit('change', val);\n }\n },\n render: function render() {\n var h = arguments[0];\n var props = this.$props,\n state = this.$data,\n $slots = this.$slots;\n var customizePrefixCls = props.prefixCls,\n options = props.options;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('checkbox', customizePrefixCls);\n\n var children = $slots['default'];\n var groupPrefixCls = prefixCls + '-group';\n if (options && options.length > 0) {\n children = this.getOptions().map(function (option) {\n return h(\n Checkbox,\n {\n attrs: {\n prefixCls: prefixCls,\n\n disabled: 'disabled' in option ? option.disabled : props.disabled,\n indeterminate: option.indeterminate,\n value: option.value,\n checked: state.sValue.indexOf(option.value) !== -1\n },\n key: option.value.toString(), on: {\n 'change': option.onChange || noop\n },\n\n 'class': groupPrefixCls + '-item'\n },\n [option.label]\n );\n });\n }\n return h(\n 'div',\n { 'class': groupPrefixCls },\n [children]\n );\n }\n};","import Checkbox from './Checkbox';\nimport CheckboxGroup from './Group';\nimport Base from '../base';\n\nCheckbox.Group = CheckboxGroup;\n\n/* istanbul ignore next */\nCheckbox.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Checkbox.name, Checkbox);\n Vue.component(CheckboxGroup.name, CheckboxGroup);\n};\n\nexport default Checkbox;","import PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { hasProp, getListeners } from '../../../_util/props-util';\nimport MonthTable from './MonthTable';\n\nfunction goYear(direction) {\n this.changeYear(direction);\n}\n\nfunction noop() {}\n\nvar MonthPanel = {\n name: 'MonthPanel',\n mixins: [BaseMixin],\n props: {\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n cellRender: PropTypes.any,\n contentRender: PropTypes.any,\n locale: PropTypes.any,\n rootPrefixCls: PropTypes.string,\n // onChange: PropTypes.func,\n disabledDate: PropTypes.func,\n // onSelect: PropTypes.func,\n renderFooter: PropTypes.func,\n changeYear: PropTypes.func.def(noop)\n },\n\n data: function data() {\n var value = this.value,\n defaultValue = this.defaultValue;\n // bind methods\n\n this.nextYear = goYear.bind(this, 1);\n this.previousYear = goYear.bind(this, -1);\n return {\n sValue: value || defaultValue\n };\n },\n\n watch: {\n value: function value(val) {\n this.setState({\n sValue: val\n });\n }\n },\n methods: {\n setAndSelectValue: function setAndSelectValue(value) {\n this.setValue(value);\n this.__emit('select', value);\n },\n setValue: function setValue(value) {\n if (hasProp(this, 'value')) {\n this.setState({\n sValue: value\n });\n }\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var sValue = this.sValue,\n cellRender = this.cellRender,\n contentRender = this.contentRender,\n locale = this.locale,\n rootPrefixCls = this.rootPrefixCls,\n disabledDate = this.disabledDate,\n renderFooter = this.renderFooter;\n\n var year = sValue.year();\n var prefixCls = rootPrefixCls + '-month-panel';\n\n var footer = renderFooter && renderFooter('month');\n return h(\n 'div',\n { 'class': prefixCls },\n [h('div', [h(\n 'div',\n { 'class': prefixCls + '-header' },\n [h('a', {\n 'class': prefixCls + '-prev-year-btn',\n attrs: { role: 'button',\n\n title: locale.previousYear\n },\n on: {\n 'click': this.previousYear\n }\n }), h(\n 'a',\n {\n 'class': prefixCls + '-year-select',\n attrs: { role: 'button',\n\n title: locale.yearSelect\n },\n on: {\n 'click': getListeners(this).yearPanelShow || noop\n }\n },\n [h(\n 'span',\n { 'class': prefixCls + '-year-select-content' },\n [year]\n ), h(\n 'span',\n { 'class': prefixCls + '-year-select-arrow' },\n ['x']\n )]\n ), h('a', {\n 'class': prefixCls + '-next-year-btn',\n attrs: { role: 'button',\n\n title: locale.nextYear\n },\n on: {\n 'click': this.nextYear\n }\n })]\n ), h(\n 'div',\n { 'class': prefixCls + '-body' },\n [h(MonthTable, {\n attrs: {\n disabledDate: disabledDate,\n\n locale: locale,\n value: sValue,\n cellRender: cellRender,\n contentRender: contentRender,\n prefixCls: prefixCls\n },\n on: {\n 'select': this.setAndSelectValue\n }\n })]\n ), footer && h(\n 'div',\n { 'class': prefixCls + '-footer' },\n [footer]\n )])]\n );\n }\n};\n\nexport default MonthPanel;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { getListeners } from '../../../_util/props-util';\nvar ROW = 4;\nvar COL = 3;\nfunction noop() {}\nfunction goYear(direction) {\n var value = this.sValue.clone();\n value.add(direction, 'year');\n this.setState({\n sValue: value\n });\n}\n\nfunction chooseYear(year) {\n var value = this.sValue.clone();\n value.year(year);\n value.month(this.sValue.month());\n this.sValue = value;\n this.__emit('select', value);\n}\n\nexport default {\n mixins: [BaseMixin],\n props: {\n rootPrefixCls: PropTypes.string,\n value: PropTypes.object,\n defaultValue: PropTypes.object,\n locale: PropTypes.object,\n renderFooter: PropTypes.func,\n disabledDate: PropTypes.func\n },\n data: function data() {\n this.nextDecade = goYear.bind(this, 10);\n this.previousDecade = goYear.bind(this, -10);\n return {\n sValue: this.value || this.defaultValue\n };\n },\n\n watch: {\n value: function value(val) {\n this.sValue = val;\n }\n },\n methods: {\n years: function years() {\n var value = this.sValue;\n var currentYear = value.year();\n var startYear = parseInt(currentYear / 10, 10) * 10;\n var previousYear = startYear - 1;\n var years = [];\n var index = 0;\n for (var rowIndex = 0; rowIndex < ROW; rowIndex++) {\n years[rowIndex] = [];\n for (var colIndex = 0; colIndex < COL; colIndex++) {\n var year = previousYear + index;\n var content = String(year);\n years[rowIndex][colIndex] = {\n content: content,\n year: year,\n title: content\n };\n index++;\n }\n }\n return years;\n }\n },\n\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n var value = this.sValue,\n locale = this.locale,\n renderFooter = this.renderFooter,\n $props = this.$props;\n\n var decadePanelShow = getListeners(this).decadePanelShow || noop;\n var years = this.years();\n var currentYear = value.year();\n var startYear = parseInt(currentYear / 10, 10) * 10;\n var endYear = startYear + 9;\n var prefixCls = this.rootPrefixCls + '-year-panel';\n var disabledDate = $props.disabledDate;\n\n\n var yeasEls = years.map(function (row, index) {\n var tds = row.map(function (yearData) {\n var _classNameMap;\n\n var disabled = false;\n if (disabledDate) {\n var testValue = value.clone();\n testValue.year(yearData.year);\n disabled = disabledDate(testValue);\n }\n var classNameMap = (_classNameMap = {}, _defineProperty(_classNameMap, prefixCls + '-cell', 1), _defineProperty(_classNameMap, prefixCls + '-cell-disabled', disabled), _defineProperty(_classNameMap, prefixCls + '-selected-cell', yearData.year === currentYear), _defineProperty(_classNameMap, prefixCls + '-last-decade-cell', yearData.year < startYear), _defineProperty(_classNameMap, prefixCls + '-next-decade-cell', yearData.year > endYear), _classNameMap);\n var clickHandler = noop;\n if (yearData.year < startYear) {\n clickHandler = _this.previousDecade;\n } else if (yearData.year > endYear) {\n clickHandler = _this.nextDecade;\n } else {\n clickHandler = chooseYear.bind(_this, yearData.year);\n }\n return h(\n 'td',\n {\n attrs: {\n role: 'gridcell',\n title: yearData.title\n },\n key: yearData.content,\n on: {\n 'click': disabled ? noop : clickHandler\n },\n\n 'class': classNameMap\n },\n [h(\n 'a',\n { 'class': prefixCls + '-year' },\n [yearData.content]\n )]\n );\n });\n return h(\n 'tr',\n { key: index, attrs: { role: 'row' }\n },\n [tds]\n );\n });\n var footer = renderFooter && renderFooter('year');\n return h(\n 'div',\n { 'class': prefixCls },\n [h('div', [h(\n 'div',\n { 'class': prefixCls + '-header' },\n [h('a', {\n 'class': prefixCls + '-prev-decade-btn',\n attrs: { role: 'button',\n\n title: locale.previousDecade\n },\n on: {\n 'click': this.previousDecade\n }\n }), h(\n 'a',\n {\n 'class': prefixCls + '-decade-select',\n attrs: { role: 'button',\n\n title: locale.decadeSelect\n },\n on: {\n 'click': decadePanelShow\n }\n },\n [h(\n 'span',\n { 'class': prefixCls + '-decade-select-content' },\n [startYear, '-', endYear]\n ), h(\n 'span',\n { 'class': prefixCls + '-decade-select-arrow' },\n ['x']\n )]\n ), h('a', {\n 'class': prefixCls + '-next-decade-btn',\n attrs: { role: 'button',\n\n title: locale.nextDecade\n },\n on: {\n 'click': this.nextDecade\n }\n })]\n ), h(\n 'div',\n { 'class': prefixCls + '-body' },\n [h(\n 'table',\n { 'class': prefixCls + '-table', attrs: { cellSpacing: '0', role: 'grid' }\n },\n [h(\n 'tbody',\n { 'class': prefixCls + '-tbody' },\n [yeasEls]\n )]\n )]\n ), footer && h(\n 'div',\n { 'class': prefixCls + '-footer' },\n [footer]\n )])]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nvar ROW = 4;\nvar COL = 3;\nfunction noop() {}\nfunction goYear(direction) {\n var next = this.sValue.clone();\n next.add(direction, 'years');\n this.setState({\n sValue: next\n });\n}\n\nfunction chooseDecade(year, event) {\n var next = this.sValue.clone();\n next.year(year);\n next.month(this.sValue.month());\n this.__emit('select', next);\n event.preventDefault();\n}\n\nexport default {\n mixins: [BaseMixin],\n props: {\n locale: PropTypes.object,\n value: PropTypes.object,\n defaultValue: PropTypes.object,\n rootPrefixCls: PropTypes.string,\n renderFooter: PropTypes.func\n },\n data: function data() {\n this.nextCentury = goYear.bind(this, 100);\n this.previousCentury = goYear.bind(this, -100);\n return {\n sValue: this.value || this.defaultValue\n };\n },\n\n watch: {\n value: function value(val) {\n this.sValue = val;\n }\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n\n var value = this.sValue;\n var _$props = this.$props,\n locale = _$props.locale,\n renderFooter = _$props.renderFooter;\n\n var currentYear = value.year();\n var startYear = parseInt(currentYear / 100, 10) * 100;\n var preYear = startYear - 10;\n var endYear = startYear + 99;\n var decades = [];\n var index = 0;\n var prefixCls = this.rootPrefixCls + '-decade-panel';\n\n for (var rowIndex = 0; rowIndex < ROW; rowIndex++) {\n decades[rowIndex] = [];\n for (var colIndex = 0; colIndex < COL; colIndex++) {\n var startDecade = preYear + index * 10;\n var endDecade = preYear + index * 10 + 9;\n decades[rowIndex][colIndex] = {\n startDecade: startDecade,\n endDecade: endDecade\n };\n index++;\n }\n }\n\n var footer = renderFooter && renderFooter('decade');\n var decadesEls = decades.map(function (row, decadeIndex) {\n var tds = row.map(function (decadeData) {\n var _classNameMap;\n\n var dStartDecade = decadeData.startDecade;\n var dEndDecade = decadeData.endDecade;\n var isLast = dStartDecade < startYear;\n var isNext = dEndDecade > endYear;\n var classNameMap = (_classNameMap = {}, _defineProperty(_classNameMap, prefixCls + '-cell', 1), _defineProperty(_classNameMap, prefixCls + '-selected-cell', dStartDecade <= currentYear && currentYear <= dEndDecade), _defineProperty(_classNameMap, prefixCls + '-last-century-cell', isLast), _defineProperty(_classNameMap, prefixCls + '-next-century-cell', isNext), _classNameMap);\n var content = dStartDecade + '-' + dEndDecade;\n var clickHandler = noop;\n if (isLast) {\n clickHandler = _this.previousCentury;\n } else if (isNext) {\n clickHandler = _this.nextCentury;\n } else {\n clickHandler = chooseDecade.bind(_this, dStartDecade);\n }\n return h(\n 'td',\n { key: dStartDecade, on: {\n 'click': clickHandler\n },\n attrs: { role: 'gridcell' },\n 'class': classNameMap },\n [h(\n 'a',\n { 'class': prefixCls + '-decade' },\n [content]\n )]\n );\n });\n return h(\n 'tr',\n { key: decadeIndex, attrs: { role: 'row' }\n },\n [tds]\n );\n });\n\n return h(\n 'div',\n { 'class': prefixCls },\n [h(\n 'div',\n { 'class': prefixCls + '-header' },\n [h('a', {\n 'class': prefixCls + '-prev-century-btn',\n attrs: { role: 'button',\n\n title: locale.previousCentury\n },\n on: {\n 'click': this.previousCentury\n }\n }), h(\n 'div',\n { 'class': prefixCls + '-century' },\n [startYear, '-', endYear]\n ), h('a', {\n 'class': prefixCls + '-next-century-btn',\n attrs: { role: 'button',\n\n title: locale.nextCentury\n },\n on: {\n 'click': this.nextCentury\n }\n })]\n ), h(\n 'div',\n { 'class': prefixCls + '-body' },\n [h(\n 'table',\n { 'class': prefixCls + '-table', attrs: { cellSpacing: '0', role: 'grid' }\n },\n [h(\n 'tbody',\n { 'class': prefixCls + '-tbody' },\n [decadesEls]\n )]\n )]\n ), footer && h(\n 'div',\n { 'class': prefixCls + '-footer' },\n [footer]\n )]\n );\n }\n};","import PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { getOptionProps, getListeners } from '../../../_util/props-util';\nimport MonthPanel from '../month/MonthPanel';\nimport YearPanel from '../year/YearPanel';\nimport DecadePanel from '../decade/DecadePanel';\nfunction noop() {}\nfunction goMonth(direction) {\n var next = this.value.clone();\n next.add(direction, 'months');\n this.__emit('valueChange', next);\n}\n\nfunction goYear(direction) {\n var next = this.value.clone();\n next.add(direction, 'years');\n this.__emit('valueChange', next);\n}\n\nfunction showIf(condition, el) {\n return condition ? el : null;\n}\n\nvar CalendarHeader = {\n name: 'CalendarHeader',\n mixins: [BaseMixin],\n props: {\n prefixCls: PropTypes.string,\n value: PropTypes.object,\n // onValueChange: PropTypes.func,\n showTimePicker: PropTypes.bool,\n // onPanelChange: PropTypes.func,\n locale: PropTypes.object,\n enablePrev: PropTypes.any.def(1),\n enableNext: PropTypes.any.def(1),\n disabledMonth: PropTypes.func,\n mode: PropTypes.any,\n monthCellRender: PropTypes.func,\n monthCellContentRender: PropTypes.func,\n renderFooter: PropTypes.func\n },\n data: function data() {\n this.nextMonth = goMonth.bind(this, 1);\n this.previousMonth = goMonth.bind(this, -1);\n this.nextYear = goYear.bind(this, 1);\n this.previousYear = goYear.bind(this, -1);\n return {\n yearPanelReferer: null\n };\n },\n\n methods: {\n onMonthSelect: function onMonthSelect(value) {\n this.__emit('panelChange', value, 'date');\n if (getListeners(this).monthSelect) {\n this.__emit('monthSelect', value);\n } else {\n this.__emit('valueChange', value);\n }\n },\n onYearSelect: function onYearSelect(value) {\n var referer = this.yearPanelReferer;\n this.setState({ yearPanelReferer: null });\n this.__emit('panelChange', value, referer);\n this.__emit('valueChange', value);\n },\n onDecadeSelect: function onDecadeSelect(value) {\n this.__emit('panelChange', value, 'year');\n this.__emit('valueChange', value);\n },\n changeYear: function changeYear(direction) {\n if (direction > 0) {\n this.nextYear();\n } else {\n this.previousYear();\n }\n },\n monthYearElement: function monthYearElement(showTimePicker) {\n var _this = this;\n\n var h = this.$createElement;\n\n var props = this.$props;\n var prefixCls = props.prefixCls;\n var locale = props.locale;\n var value = props.value;\n var localeData = value.localeData();\n var monthBeforeYear = locale.monthBeforeYear;\n var selectClassName = prefixCls + '-' + (monthBeforeYear ? 'my-select' : 'ym-select');\n var timeClassName = showTimePicker ? ' ' + prefixCls + '-time-status' : '';\n var year = h(\n 'a',\n {\n 'class': prefixCls + '-year-select' + timeClassName,\n attrs: { role: 'button',\n\n title: showTimePicker ? null : locale.yearSelect\n },\n on: {\n 'click': showTimePicker ? noop : function () {\n return _this.showYearPanel('date');\n }\n }\n },\n [value.format(locale.yearFormat)]\n );\n var month = h(\n 'a',\n {\n 'class': prefixCls + '-month-select' + timeClassName,\n attrs: { role: 'button',\n\n title: showTimePicker ? null : locale.monthSelect\n },\n on: {\n 'click': showTimePicker ? noop : this.showMonthPanel\n }\n },\n [locale.monthFormat ? value.format(locale.monthFormat) : localeData.monthsShort(value)]\n );\n var day = void 0;\n if (showTimePicker) {\n day = h(\n 'a',\n { 'class': prefixCls + '-day-select' + timeClassName, attrs: { role: 'button' }\n },\n [value.format(locale.dayFormat)]\n );\n }\n var my = [];\n if (monthBeforeYear) {\n my = [month, day, year];\n } else {\n my = [year, month, day];\n }\n return h(\n 'span',\n { 'class': selectClassName },\n [my]\n );\n },\n showMonthPanel: function showMonthPanel() {\n // null means that users' interaction doesn't change value\n this.__emit('panelChange', null, 'month');\n },\n showYearPanel: function showYearPanel(referer) {\n this.setState({ yearPanelReferer: referer });\n this.__emit('panelChange', null, 'year');\n },\n showDecadePanel: function showDecadePanel() {\n this.__emit('panelChange', null, 'decade');\n }\n },\n\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var prefixCls = props.prefixCls,\n locale = props.locale,\n mode = props.mode,\n value = props.value,\n showTimePicker = props.showTimePicker,\n enableNext = props.enableNext,\n enablePrev = props.enablePrev,\n disabledMonth = props.disabledMonth,\n renderFooter = props.renderFooter;\n\n\n var panel = null;\n if (mode === 'month') {\n panel = h(MonthPanel, {\n attrs: {\n locale: locale,\n value: value,\n rootPrefixCls: prefixCls,\n\n disabledDate: disabledMonth,\n cellRender: props.monthCellRender,\n contentRender: props.monthCellContentRender,\n renderFooter: renderFooter,\n changeYear: this.changeYear\n },\n on: {\n 'select': this.onMonthSelect,\n 'yearPanelShow': function yearPanelShow() {\n return _this2.showYearPanel('month');\n }\n }\n });\n }\n if (mode === 'year') {\n panel = h(YearPanel, {\n attrs: {\n locale: locale,\n value: value,\n rootPrefixCls: prefixCls,\n\n renderFooter: renderFooter,\n disabledDate: disabledMonth\n },\n on: {\n 'select': this.onYearSelect,\n 'decadePanelShow': this.showDecadePanel\n }\n });\n }\n if (mode === 'decade') {\n panel = h(DecadePanel, {\n attrs: {\n locale: locale,\n value: value,\n rootPrefixCls: prefixCls,\n\n renderFooter: renderFooter\n },\n on: {\n 'select': this.onDecadeSelect\n }\n });\n }\n\n return h(\n 'div',\n { 'class': prefixCls + '-header' },\n [h(\n 'div',\n { style: { position: 'relative' } },\n [showIf(enablePrev && !showTimePicker, h('a', {\n 'class': prefixCls + '-prev-year-btn',\n attrs: { role: 'button',\n\n title: locale.previousYear\n },\n on: {\n 'click': this.previousYear\n }\n })), showIf(enablePrev && !showTimePicker, h('a', {\n 'class': prefixCls + '-prev-month-btn',\n attrs: { role: 'button',\n\n title: locale.previousMonth\n },\n on: {\n 'click': this.previousMonth\n }\n })), this.monthYearElement(showTimePicker), showIf(enableNext && !showTimePicker, h('a', {\n 'class': prefixCls + '-next-month-btn',\n on: {\n 'click': this.nextMonth\n },\n attrs: {\n title: locale.nextMonth\n }\n })), showIf(enableNext && !showTimePicker, h('a', {\n 'class': prefixCls + '-next-year-btn',\n on: {\n 'click': this.nextYear\n },\n attrs: {\n title: locale.nextYear\n }\n }))]\n ), panel]\n );\n }\n};\n\nexport default CalendarHeader;","import { getTodayTimeStr, getTodayTime, isAllowedDate } from '../util/';\nfunction noop() {}\nexport default {\n functional: true,\n render: function render(createElement, context) {\n var h = arguments[0];\n var props = context.props,\n _context$listeners = context.listeners,\n listeners = _context$listeners === undefined ? {} : _context$listeners;\n var prefixCls = props.prefixCls,\n locale = props.locale,\n value = props.value,\n timePicker = props.timePicker,\n disabled = props.disabled,\n disabledDate = props.disabledDate,\n text = props.text;\n var _listeners$today = listeners.today,\n today = _listeners$today === undefined ? noop : _listeners$today;\n\n var localeNow = (!text && timePicker ? locale.now : text) || locale.today;\n var disabledToday = disabledDate && !isAllowedDate(getTodayTime(value), disabledDate);\n var isDisabled = disabledToday || disabled;\n var disabledTodayClass = isDisabled ? prefixCls + '-today-btn-disabled' : '';\n return h(\n 'a',\n {\n 'class': prefixCls + '-today-btn ' + disabledTodayClass,\n attrs: { role: 'button',\n\n title: getTodayTimeStr(value)\n },\n on: {\n 'click': isDisabled ? noop : today\n }\n },\n [localeNow]\n );\n }\n};","function noop() {}\nexport default {\n functional: true,\n render: function render(createElement, context) {\n var h = arguments[0];\n var props = context.props,\n _context$listeners = context.listeners,\n listeners = _context$listeners === undefined ? {} : _context$listeners;\n var prefixCls = props.prefixCls,\n locale = props.locale,\n okDisabled = props.okDisabled;\n var _listeners$ok = listeners.ok,\n ok = _listeners$ok === undefined ? noop : _listeners$ok;\n\n var className = prefixCls + \"-ok-btn\";\n if (okDisabled) {\n className += \" \" + prefixCls + \"-ok-btn-disabled\";\n }\n return h(\n \"a\",\n { \"class\": className, attrs: { role: \"button\" },\n on: {\n \"click\": okDisabled ? noop : ok\n }\n },\n [locale.ok]\n );\n }\n};","import _defineProperty from \"babel-runtime/helpers/defineProperty\";\nfunction noop() {}\nexport default {\n functional: true,\n render: function render(h, context) {\n var _className;\n\n var props = context.props,\n _context$listeners = context.listeners,\n listeners = _context$listeners === undefined ? {} : _context$listeners;\n var prefixCls = props.prefixCls,\n locale = props.locale,\n showTimePicker = props.showTimePicker,\n timePickerDisabled = props.timePickerDisabled;\n var _listeners$closeTimeP = listeners.closeTimePicker,\n closeTimePicker = _listeners$closeTimeP === undefined ? noop : _listeners$closeTimeP,\n _listeners$openTimePi = listeners.openTimePicker,\n openTimePicker = _listeners$openTimePi === undefined ? noop : _listeners$openTimePi;\n\n var className = (_className = {}, _defineProperty(_className, prefixCls + \"-time-picker-btn\", true), _defineProperty(_className, prefixCls + \"-time-picker-btn-disabled\", timePickerDisabled), _className);\n var onClick = noop;\n if (!timePickerDisabled) {\n onClick = showTimePicker ? closeTimePicker : openTimePicker;\n }\n return h(\n \"a\",\n { \"class\": className, attrs: { role: \"button\" },\n on: {\n \"click\": onClick\n }\n },\n [showTimePicker ? locale.dateSelect : locale.timeSelect]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { getOptionProps, getListeners } from '../../../_util/props-util';\nimport TodayButton from './TodayButton';\nimport OkButton from './OkButton';\nimport TimePickerButton from './TimePickerButton';\n\nvar CalendarFooter = {\n mixins: [BaseMixin],\n props: {\n prefixCls: PropTypes.string,\n showDateInput: PropTypes.bool,\n disabledTime: PropTypes.any,\n timePicker: PropTypes.any,\n selectedValue: PropTypes.any,\n showOk: PropTypes.bool,\n // onSelect: PropTypes.func,\n value: PropTypes.object,\n renderFooter: PropTypes.func,\n defaultValue: PropTypes.object,\n locale: PropTypes.object,\n showToday: PropTypes.bool,\n disabledDate: PropTypes.func,\n showTimePicker: PropTypes.bool,\n okDisabled: PropTypes.bool,\n mode: PropTypes.string\n },\n methods: {\n onSelect: function onSelect(value) {\n this.__emit('select', value);\n },\n getRootDOMNode: function getRootDOMNode() {\n return this.$el;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var value = props.value,\n prefixCls = props.prefixCls,\n showOk = props.showOk,\n timePicker = props.timePicker,\n renderFooter = props.renderFooter,\n showToday = props.showToday,\n mode = props.mode;\n\n var footerEl = null;\n var extraFooter = renderFooter && renderFooter(mode);\n if (showToday || timePicker || extraFooter) {\n var _cls;\n\n var btnProps = {\n props: _extends({}, props, {\n value: value\n }),\n on: getListeners(this)\n };\n var nowEl = null;\n if (showToday) {\n nowEl = h(TodayButton, _mergeJSXProps([{ key: 'todayButton' }, btnProps]));\n }\n delete btnProps.props.value;\n var okBtn = null;\n if (showOk === true || showOk !== false && !!timePicker) {\n okBtn = h(OkButton, _mergeJSXProps([{ key: 'okButton' }, btnProps]));\n }\n var timePickerBtn = null;\n if (timePicker) {\n timePickerBtn = h(TimePickerButton, _mergeJSXProps([{ key: 'timePickerButton' }, btnProps]));\n }\n\n var footerBtn = void 0;\n if (nowEl || timePickerBtn || okBtn || extraFooter) {\n footerBtn = h(\n 'span',\n { 'class': prefixCls + '-footer-btn' },\n [extraFooter, nowEl, timePickerBtn, okBtn]\n );\n }\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls + '-footer', true), _defineProperty(_cls, prefixCls + '-footer-show-ok', !!okBtn), _cls);\n footerEl = h(\n 'div',\n { 'class': cls },\n [footerBtn]\n );\n }\n return footerEl;\n }\n};\n\nexport default CalendarFooter;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { getComponentFromProp } from '../../../_util/props-util';\nimport moment from 'moment';\nimport { formatDate } from '../util';\nimport KeyCode from '../../../_util/KeyCode';\n\nvar cachedSelectionStart = void 0;\nvar cachedSelectionEnd = void 0;\nvar dateInputInstance = void 0;\n\nvar DateInput = {\n mixins: [BaseMixin],\n props: {\n prefixCls: PropTypes.string,\n timePicker: PropTypes.object,\n value: PropTypes.object,\n disabledTime: PropTypes.any,\n format: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string), PropTypes.func]),\n locale: PropTypes.object,\n disabledDate: PropTypes.func,\n // onChange: PropTypes.func,\n // onClear: PropTypes.func,\n placeholder: PropTypes.string,\n // onSelect: PropTypes.func,\n selectedValue: PropTypes.object,\n clearIcon: PropTypes.any,\n inputMode: PropTypes.string,\n inputReadOnly: PropTypes.bool\n },\n\n data: function data() {\n var selectedValue = this.selectedValue;\n return {\n str: formatDate(selectedValue, this.format),\n invalid: false,\n hasFocus: false\n };\n },\n\n watch: {\n selectedValue: function selectedValue() {\n this.setState();\n },\n format: function format() {\n this.setState();\n }\n },\n\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function () {\n if (dateInputInstance && _this.$data.hasFocus && !_this.invalid && !(cachedSelectionStart === 0 && cachedSelectionEnd === 0)) {\n dateInputInstance.setSelectionRange(cachedSelectionStart, cachedSelectionEnd);\n }\n });\n },\n getInstance: function getInstance() {\n return dateInputInstance;\n },\n\n methods: {\n getDerivedStateFromProps: function getDerivedStateFromProps(nextProps, state) {\n var newState = {};\n if (dateInputInstance) {\n cachedSelectionStart = dateInputInstance.selectionStart;\n cachedSelectionEnd = dateInputInstance.selectionEnd;\n }\n // when popup show, click body will call this, bug!\n var selectedValue = nextProps.selectedValue;\n if (!state.hasFocus) {\n newState = {\n str: formatDate(selectedValue, this.format),\n invalid: false\n };\n }\n return newState;\n },\n onClear: function onClear() {\n this.setState({\n str: ''\n });\n this.__emit('clear', null);\n },\n onInputChange: function onInputChange(e) {\n var _e$target = e.target,\n str = _e$target.value,\n composing = _e$target.composing;\n var _str = this.str,\n oldStr = _str === undefined ? '' : _str;\n\n if (e.isComposing || composing || oldStr === str) return;\n\n var _$props = this.$props,\n disabledDate = _$props.disabledDate,\n format = _$props.format,\n selectedValue = _$props.selectedValue;\n\n // 没有内容,合法并直接退出\n\n if (!str) {\n this.__emit('change', null);\n this.setState({\n invalid: false,\n str: str\n });\n return;\n }\n\n // 不合法直接退出\n var parsed = moment(str, format, true);\n if (!parsed.isValid()) {\n this.setState({\n invalid: true,\n str: str\n });\n return;\n }\n var value = this.value.clone();\n value.year(parsed.year()).month(parsed.month()).date(parsed.date()).hour(parsed.hour()).minute(parsed.minute()).second(parsed.second());\n\n if (!value || disabledDate && disabledDate(value)) {\n this.setState({\n invalid: true,\n str: str\n });\n return;\n }\n\n if (selectedValue !== value || selectedValue && value && !selectedValue.isSame(value)) {\n this.setState({\n invalid: false,\n str: str\n });\n this.__emit('change', value);\n }\n },\n onFocus: function onFocus() {\n this.setState({ hasFocus: true });\n },\n onBlur: function onBlur() {\n this.setState(function (prevState, prevProps) {\n return {\n hasFocus: false,\n str: formatDate(prevProps.value, prevProps.format)\n };\n });\n },\n onKeyDown: function onKeyDown(event) {\n var keyCode = event.keyCode;\n var _$props2 = this.$props,\n value = _$props2.value,\n disabledDate = _$props2.disabledDate;\n\n if (keyCode === KeyCode.ENTER) {\n var validateDate = !disabledDate || !disabledDate(value);\n if (validateDate) {\n this.__emit('select', value.clone());\n }\n event.preventDefault();\n }\n },\n getRootDOMNode: function getRootDOMNode() {\n return this.$el;\n },\n focus: function focus() {\n if (dateInputInstance) {\n dateInputInstance.focus();\n }\n },\n saveDateInput: function saveDateInput(dateInput) {\n dateInputInstance = dateInput;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var invalid = this.invalid,\n str = this.str,\n locale = this.locale,\n prefixCls = this.prefixCls,\n placeholder = this.placeholder,\n disabled = this.disabled,\n showClear = this.showClear,\n inputMode = this.inputMode,\n inputReadOnly = this.inputReadOnly;\n\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n var invalidClass = invalid ? prefixCls + '-input-invalid' : '';\n return h(\n 'div',\n { 'class': prefixCls + '-input-wrap' },\n [h(\n 'div',\n { 'class': prefixCls + '-date-input-wrap' },\n [h('input', _mergeJSXProps([{\n directives: [{\n name: 'ant-ref',\n value: this.saveDateInput\n }, {\n name: 'ant-input'\n }]\n }, {\n 'class': prefixCls + '-input ' + invalidClass,\n domProps: {\n 'value': str\n },\n attrs: {\n disabled: disabled,\n placeholder: placeholder,\n\n inputMode: inputMode,\n readOnly: inputReadOnly\n },\n on: {\n 'input': this.onInputChange,\n 'keydown': this.onKeyDown,\n 'focus': this.onFocus,\n 'blur': this.onBlur\n }\n }]))]\n ), showClear ? h(\n 'a',\n {\n attrs: { role: 'button', title: locale.clear },\n on: {\n 'click': this.onClear\n }\n },\n [clearIcon || h('span', { 'class': prefixCls + '-clear-btn' })]\n ) : null]\n );\n }\n};\n\nexport default DateInput;","export function goStartMonth(time) {\n return time.clone().startOf('month');\n}\n\nexport function goEndMonth(time) {\n return time.clone().endOf('month');\n}\n\nexport function goTime(time, direction, unit) {\n return time.clone().add(direction, unit);\n}\n\nexport function includesTime() {\n var timeList = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var time = arguments[1];\n var unit = arguments[2];\n\n return timeList.some(function (t) {\n return t.isSame(time, unit);\n });\n}","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getOptionProps, hasProp, getComponentFromProp } from '../../_util/props-util';\nimport { cloneElement } from '../../_util/vnode';\nimport KeyCode from '../../_util/KeyCode';\nimport moment from 'moment';\nimport DateTable from './date/DateTable';\nimport CalendarHeader from './calendar/CalendarHeader';\nimport CalendarFooter from './calendar/CalendarFooter';\nimport CalendarMixin, { getNowByCurrentStateValue } from './mixin/CalendarMixin';\nimport CommonMixin from './mixin/CommonMixin';\nimport DateInput from './date/DateInput';\nimport enUs from './locale/en_US';\nimport { getTimeConfig, getTodayTime, syncTime } from './util';\nimport { goStartMonth, goEndMonth, goTime as _goTime } from './util/toTime';\n\nvar getMomentObjectIfValid = function getMomentObjectIfValid(date) {\n if (moment.isMoment(date) && date.isValid()) {\n return date;\n }\n return false;\n};\n\nvar Calendar = {\n name: 'Calendar',\n props: {\n locale: PropTypes.object.def(enUs),\n format: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string), PropTypes.func]),\n visible: PropTypes.bool.def(true),\n prefixCls: PropTypes.string.def('rc-calendar'),\n // prefixCls: PropTypes.string,\n defaultValue: PropTypes.object,\n value: PropTypes.object,\n selectedValue: PropTypes.object,\n defaultSelectedValue: PropTypes.object,\n mode: PropTypes.oneOf(['time', 'date', 'month', 'year', 'decade']),\n // locale: PropTypes.object,\n showDateInput: PropTypes.bool.def(true),\n showWeekNumber: PropTypes.bool,\n showToday: PropTypes.bool.def(true),\n showOk: PropTypes.bool,\n // onSelect: PropTypes.func,\n // onOk: PropTypes.func,\n // onKeyDown: PropTypes.func,\n timePicker: PropTypes.any,\n dateInputPlaceholder: PropTypes.any,\n // onClear: PropTypes.func,\n // onChange: PropTypes.func,\n // onPanelChange: PropTypes.func,\n disabledDate: PropTypes.func,\n disabledTime: PropTypes.any,\n dateRender: PropTypes.func,\n renderFooter: PropTypes.func.def(function () {\n return null;\n }),\n renderSidebar: PropTypes.func.def(function () {\n return null;\n }),\n clearIcon: PropTypes.any,\n focusablePanel: PropTypes.bool.def(true),\n inputMode: PropTypes.string,\n inputReadOnly: PropTypes.bool\n },\n\n mixins: [BaseMixin, CommonMixin, CalendarMixin],\n\n data: function data() {\n var props = this.$props;\n return {\n sMode: this.mode || 'date',\n sValue: getMomentObjectIfValid(props.value) || getMomentObjectIfValid(props.defaultValue) || moment(),\n sSelectedValue: props.selectedValue || props.defaultSelectedValue\n };\n },\n\n watch: {\n mode: function mode(val) {\n this.setState({ sMode: val });\n },\n value: function value(val) {\n this.setState({\n sValue: getMomentObjectIfValid(val) || getMomentObjectIfValid(this.defaultValue) || getNowByCurrentStateValue(this.sValue)\n });\n },\n selectedValue: function selectedValue(val) {\n this.setState({\n sSelectedValue: val\n });\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.saveFocusElement(DateInput.getInstance());\n });\n },\n\n methods: {\n onPanelChange: function onPanelChange(value, mode) {\n var sValue = this.sValue;\n\n if (!hasProp(this, 'mode')) {\n this.setState({ sMode: mode });\n }\n this.__emit('panelChange', value || sValue, mode);\n },\n onKeyDown: function onKeyDown(event) {\n if (event.target.nodeName.toLowerCase() === 'input') {\n return undefined;\n }\n var keyCode = event.keyCode;\n // mac\n var ctrlKey = event.ctrlKey || event.metaKey;\n var disabledDate = this.disabledDate,\n value = this.sValue;\n\n switch (keyCode) {\n case KeyCode.DOWN:\n this.goTime(1, 'weeks');\n event.preventDefault();\n return 1;\n case KeyCode.UP:\n this.goTime(-1, 'weeks');\n event.preventDefault();\n return 1;\n case KeyCode.LEFT:\n if (ctrlKey) {\n this.goTime(-1, 'years');\n } else {\n this.goTime(-1, 'days');\n }\n event.preventDefault();\n return 1;\n case KeyCode.RIGHT:\n if (ctrlKey) {\n this.goTime(1, 'years');\n } else {\n this.goTime(1, 'days');\n }\n event.preventDefault();\n return 1;\n case KeyCode.HOME:\n this.setValue(goStartMonth(value));\n event.preventDefault();\n return 1;\n case KeyCode.END:\n this.setValue(goEndMonth(value));\n event.preventDefault();\n return 1;\n case KeyCode.PAGE_DOWN:\n this.goTime(1, 'month');\n event.preventDefault();\n return 1;\n case KeyCode.PAGE_UP:\n this.goTime(-1, 'month');\n event.preventDefault();\n return 1;\n case KeyCode.ENTER:\n if (!disabledDate || !disabledDate(value)) {\n this.onSelect(value, {\n source: 'keyboard'\n });\n }\n event.preventDefault();\n return 1;\n default:\n this.__emit('keydown', event);\n return 1;\n }\n },\n onClear: function onClear() {\n this.onSelect(null);\n this.__emit('clear');\n },\n onOk: function onOk() {\n var sSelectedValue = this.sSelectedValue;\n\n if (this.isAllowedDate(sSelectedValue)) {\n this.__emit('ok', sSelectedValue);\n }\n },\n onDateInputChange: function onDateInputChange(value) {\n this.onSelect(value, {\n source: 'dateInput'\n });\n },\n onDateInputSelect: function onDateInputSelect(value) {\n this.onSelect(value, {\n source: 'dateInputSelect'\n });\n },\n onDateTableSelect: function onDateTableSelect(value) {\n var timePicker = this.timePicker,\n sSelectedValue = this.sSelectedValue;\n\n if (!sSelectedValue && timePicker) {\n var timePickerProps = getOptionProps(timePicker);\n var timePickerDefaultValue = timePickerProps.defaultValue;\n if (timePickerDefaultValue) {\n syncTime(timePickerDefaultValue, value);\n }\n }\n this.onSelect(value);\n },\n onToday: function onToday() {\n var sValue = this.sValue;\n\n var now = getTodayTime(sValue);\n this.onSelect(now, {\n source: 'todayButton'\n });\n },\n onBlur: function onBlur(event) {\n var _this2 = this;\n\n setTimeout(function () {\n var dateInput = DateInput.getInstance();\n var rootInstance = _this2.rootInstance;\n\n if (!rootInstance || rootInstance.contains(document.activeElement) || dateInput && dateInput.contains(document.activeElement)) {\n // focused element is still part of Calendar\n return;\n }\n\n _this2.$emit('blur', event);\n }, 0);\n },\n getRootDOMNode: function getRootDOMNode() {\n return this.$el;\n },\n openTimePicker: function openTimePicker() {\n this.onPanelChange(null, 'time');\n },\n closeTimePicker: function closeTimePicker() {\n this.onPanelChange(null, 'date');\n },\n goTime: function goTime(direction, unit) {\n this.setValue(_goTime(this.sValue, direction, unit));\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var locale = this.locale,\n prefixCls = this.prefixCls,\n disabledDate = this.disabledDate,\n dateInputPlaceholder = this.dateInputPlaceholder,\n timePicker = this.timePicker,\n disabledTime = this.disabledTime,\n showDateInput = this.showDateInput,\n sValue = this.sValue,\n sSelectedValue = this.sSelectedValue,\n sMode = this.sMode,\n renderFooter = this.renderFooter,\n inputMode = this.inputMode,\n inputReadOnly = this.inputReadOnly,\n monthCellRender = this.monthCellRender,\n monthCellContentRender = this.monthCellContentRender,\n props = this.$props;\n\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n var showTimePicker = sMode === 'time';\n var disabledTimeConfig = showTimePicker && disabledTime && timePicker ? getTimeConfig(sSelectedValue, disabledTime) : null;\n\n var timePickerEle = null;\n\n if (timePicker && showTimePicker) {\n var timePickerOriginProps = getOptionProps(timePicker);\n var timePickerProps = {\n props: _extends({\n showHour: true,\n showSecond: true,\n showMinute: true\n }, timePickerOriginProps, disabledTimeConfig, {\n value: sSelectedValue,\n disabledTime: disabledTime\n }),\n on: {\n change: this.onDateInputChange\n }\n };\n\n if (timePickerOriginProps.defaultValue !== undefined) {\n timePickerProps.props.defaultOpenValue = timePickerOriginProps.defaultValue;\n }\n timePickerEle = cloneElement(timePicker, timePickerProps);\n }\n\n var dateInputElement = showDateInput ? h(DateInput, {\n attrs: {\n format: this.getFormat(),\n\n value: sValue,\n locale: locale,\n placeholder: dateInputPlaceholder,\n showClear: true,\n disabledTime: disabledTime,\n disabledDate: disabledDate,\n\n prefixCls: prefixCls,\n selectedValue: sSelectedValue,\n\n clearIcon: clearIcon,\n\n inputMode: inputMode,\n inputReadOnly: inputReadOnly\n },\n key: 'date-input', on: {\n 'clear': this.onClear,\n 'change': this.onDateInputChange,\n 'select': this.onDateInputSelect\n }\n }) : null;\n var children = [];\n if (props.renderSidebar) {\n children.push(props.renderSidebar());\n }\n children.push(h(\n 'div',\n { 'class': prefixCls + '-panel', key: 'panel' },\n [dateInputElement, h(\n 'div',\n {\n attrs: { tabIndex: props.focusablePanel ? 0 : undefined },\n 'class': prefixCls + '-date-panel' },\n [h(CalendarHeader, {\n attrs: {\n locale: locale,\n mode: sMode,\n value: sValue,\n disabledMonth: disabledDate,\n\n renderFooter: renderFooter,\n showTimePicker: showTimePicker,\n prefixCls: prefixCls,\n monthCellRender: monthCellRender,\n monthCellContentRender: monthCellContentRender\n },\n on: {\n 'valueChange': this.setValue,\n 'panelChange': this.onPanelChange\n }\n }), timePicker && showTimePicker ? h(\n 'div',\n { 'class': prefixCls + '-time-picker' },\n [h(\n 'div',\n { 'class': prefixCls + '-time-picker-panel' },\n [timePickerEle]\n )]\n ) : null, h(\n 'div',\n { 'class': prefixCls + '-body' },\n [h(DateTable, {\n attrs: {\n locale: locale,\n value: sValue,\n selectedValue: sSelectedValue,\n prefixCls: prefixCls,\n dateRender: props.dateRender,\n\n disabledDate: disabledDate,\n showWeekNumber: props.showWeekNumber\n },\n on: {\n 'select': this.onDateTableSelect\n }\n })]\n ), h(CalendarFooter, {\n attrs: {\n showOk: props.showOk,\n mode: sMode,\n renderFooter: props.renderFooter,\n locale: locale,\n prefixCls: prefixCls,\n showToday: props.showToday,\n disabledTime: disabledTime,\n showTimePicker: showTimePicker,\n showDateInput: props.showDateInput,\n timePicker: timePicker,\n selectedValue: sSelectedValue,\n timePickerDisabled: !sSelectedValue,\n value: sValue,\n disabledDate: disabledDate,\n okDisabled: props.showOk !== false && (!sSelectedValue || !this.isAllowedDate(sSelectedValue))\n },\n on: {\n 'ok': this.onOk,\n 'select': this.onSelect,\n 'today': this.onToday,\n 'openTimePicker': this.openTimePicker,\n 'closeTimePicker': this.closeTimePicker\n }\n })]\n )]\n ));\n\n return this.renderRoot({\n children: children,\n 'class': props.showWeekNumber ? prefixCls + '-week-number' : ''\n });\n }\n};\n\nexport default Calendar;","import Calendar from './Calendar';\n\nexport default Calendar;","// based on rc-calendar 9.15.10\nimport Vue from 'vue';\nimport ref from 'vue-ref';\nimport Calendar from './src/';\n\nVue.use(ref, { name: 'ant-ref' });\n\nexport default Calendar;","import moment from 'moment';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport KeyCode from '../../_util/KeyCode';\nimport CalendarHeader from './calendar/CalendarHeader';\nimport CalendarFooter from './calendar/CalendarFooter';\nimport CalendarMixin from './mixin/CalendarMixin';\nimport CommonMixin from './mixin/CommonMixin';\nimport enUs from './locale/en_US';\nvar MonthCalendar = {\n name: 'MonthCalendar',\n props: {\n locale: PropTypes.object.def(enUs),\n format: PropTypes.string,\n visible: PropTypes.bool.def(true),\n prefixCls: PropTypes.string.def('rc-calendar'),\n monthCellRender: PropTypes.func,\n value: PropTypes.object,\n defaultValue: PropTypes.object,\n selectedValue: PropTypes.object,\n defaultSelectedValue: PropTypes.object,\n disabledDate: PropTypes.func,\n monthCellContentRender: PropTypes.func,\n renderFooter: PropTypes.func.def(function () {\n return null;\n }),\n renderSidebar: PropTypes.func.def(function () {\n return null;\n })\n },\n mixins: [BaseMixin, CommonMixin, CalendarMixin],\n\n data: function data() {\n var props = this.$props;\n return {\n mode: 'month',\n sValue: props.value || props.defaultValue || moment(),\n sSelectedValue: props.selectedValue || props.defaultSelectedValue\n };\n },\n\n methods: {\n onKeyDown: function onKeyDown(event) {\n var keyCode = event.keyCode;\n var ctrlKey = event.ctrlKey || event.metaKey;\n var stateValue = this.sValue;\n var disabledDate = this.disabledDate;\n\n var value = stateValue;\n switch (keyCode) {\n case KeyCode.DOWN:\n value = stateValue.clone();\n value.add(3, 'months');\n break;\n case KeyCode.UP:\n value = stateValue.clone();\n value.add(-3, 'months');\n break;\n case KeyCode.LEFT:\n value = stateValue.clone();\n if (ctrlKey) {\n value.add(-1, 'years');\n } else {\n value.add(-1, 'months');\n }\n break;\n case KeyCode.RIGHT:\n value = stateValue.clone();\n if (ctrlKey) {\n value.add(1, 'years');\n } else {\n value.add(1, 'months');\n }\n break;\n case KeyCode.ENTER:\n if (!disabledDate || !disabledDate(stateValue)) {\n this.onSelect(stateValue);\n }\n event.preventDefault();\n return 1;\n default:\n return undefined;\n }\n if (value !== stateValue) {\n this.setValue(value);\n event.preventDefault();\n return 1;\n }\n },\n handlePanelChange: function handlePanelChange(_, mode) {\n if (mode !== 'date') {\n this.setState({ mode: mode });\n }\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var mode = this.mode,\n value = this.sValue,\n props = this.$props,\n $scopedSlots = this.$scopedSlots;\n var prefixCls = props.prefixCls,\n locale = props.locale,\n disabledDate = props.disabledDate;\n\n var monthCellRender = this.monthCellRender || $scopedSlots.monthCellRender;\n var monthCellContentRender = this.monthCellContentRender || $scopedSlots.monthCellContentRender;\n var renderFooter = this.renderFooter || $scopedSlots.renderFooter;\n var children = h(\n 'div',\n { 'class': prefixCls + '-month-calendar-content' },\n [h(\n 'div',\n { 'class': prefixCls + '-month-header-wrap' },\n [h(CalendarHeader, {\n attrs: {\n prefixCls: prefixCls,\n mode: mode,\n value: value,\n locale: locale,\n disabledMonth: disabledDate,\n monthCellRender: monthCellRender,\n monthCellContentRender: monthCellContentRender\n },\n on: {\n 'monthSelect': this.onSelect,\n 'valueChange': this.setValue,\n 'panelChange': this.handlePanelChange\n }\n })]\n ), h(CalendarFooter, {\n attrs: { prefixCls: prefixCls, renderFooter: renderFooter }\n })]\n );\n return this.renderRoot({\n 'class': props.prefixCls + '-month-calendar',\n children: children\n });\n }\n};\n\nexport default MonthCalendar;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\n\nvar targetOffset = [0, 0];\n\nvar placements = {\n bottomLeft: {\n points: ['tl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -3],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -3],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 3],\n targetOffset: targetOffset\n },\n topLeft: {\n points: ['bl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 3],\n targetOffset: targetOffset\n }\n};\n\nexport default placements;","import PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getOptionProps, hasProp, getEvents, getStyle } from '../../_util/props-util';\nimport { cloneElement } from '../../_util/vnode';\nimport createChainedFunction from '../../_util/createChainedFunction';\nimport KeyCode from '../../_util/KeyCode';\nimport placements from './picker/placements';\nimport Trigger from '../../vc-trigger';\nimport moment from 'moment';\nimport isNil from 'lodash/isNil';\nvar TimeType = {\n validator: function validator(value) {\n if (Array.isArray(value)) {\n return value.length === 0 || value.findIndex(function (val) {\n return !isNil(val) && !moment.isMoment(val);\n }) === -1;\n } else {\n return isNil(value) || moment.isMoment(value);\n }\n }\n};\nvar Picker = {\n name: 'Picker',\n props: {\n animation: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n disabled: PropTypes.bool,\n transitionName: PropTypes.string,\n format: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.func]),\n // onChange: PropTypes.func,\n // onOpenChange: PropTypes.func,\n children: PropTypes.func,\n getCalendarContainer: PropTypes.func,\n calendar: PropTypes.any,\n open: PropTypes.bool,\n defaultOpen: PropTypes.bool.def(false),\n prefixCls: PropTypes.string.def('rc-calendar-picker'),\n placement: PropTypes.any.def('bottomLeft'),\n value: TimeType,\n defaultValue: TimeType,\n align: PropTypes.object.def(function () {\n return {};\n }),\n dropdownClassName: PropTypes.string,\n dateRender: PropTypes.func\n },\n mixins: [BaseMixin],\n\n data: function data() {\n var props = this.$props;\n var open = void 0;\n if (hasProp(this, 'open')) {\n open = props.open;\n } else {\n open = props.defaultOpen;\n }\n var value = props.value || props.defaultValue;\n return {\n sOpen: open,\n sValue: value\n };\n },\n\n watch: {\n value: function value(val) {\n this.setState({\n sValue: val\n });\n },\n open: function open(val) {\n this.setState({\n sOpen: val\n });\n }\n },\n mounted: function mounted() {\n this.preSOpen = this.sOpen;\n },\n updated: function updated() {\n if (!this.preSOpen && this.sOpen) {\n // setTimeout is for making sure saveCalendarRef happen before focusCalendar\n this.focusTimeout = setTimeout(this.focusCalendar, 0);\n }\n this.preSOpen = this.sOpen;\n },\n beforeDestroy: function beforeDestroy() {\n clearTimeout(this.focusTimeout);\n },\n\n methods: {\n onCalendarKeyDown: function onCalendarKeyDown(event) {\n if (event.keyCode === KeyCode.ESC) {\n event.stopPropagation();\n this.closeCalendar(this.focus);\n }\n },\n onCalendarSelect: function onCalendarSelect(value) {\n var cause = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var props = this.$props;\n if (!hasProp(this, 'value')) {\n this.setState({\n sValue: value\n });\n }\n var calendarProps = getOptionProps(props.calendar);\n if (cause.source === 'keyboard' || cause.source === 'dateInputSelect' || !calendarProps.timePicker && cause.source !== 'dateInput' || cause.source === 'todayButton') {\n this.closeCalendar(this.focus);\n }\n this.__emit('change', value);\n },\n onKeyDown: function onKeyDown(event) {\n if (!this.sOpen && (event.keyCode === KeyCode.DOWN || event.keyCode === KeyCode.ENTER)) {\n this.openCalendar();\n event.preventDefault();\n }\n },\n onCalendarOk: function onCalendarOk() {\n this.closeCalendar(this.focus);\n },\n onCalendarClear: function onCalendarClear() {\n this.closeCalendar(this.focus);\n },\n onCalendarBlur: function onCalendarBlur() {\n this.setOpen(false);\n },\n onVisibleChange: function onVisibleChange(open) {\n this.setOpen(open);\n },\n getCalendarElement: function getCalendarElement() {\n var props = this.$props;\n var calendarProps = getOptionProps(props.calendar);\n var calendarEvents = getEvents(props.calendar);\n var value = this.sValue;\n\n var defaultValue = value;\n var extraProps = {\n ref: 'calendarInstance',\n props: {\n defaultValue: defaultValue || calendarProps.defaultValue,\n selectedValue: value\n },\n on: {\n keydown: this.onCalendarKeyDown,\n ok: createChainedFunction(calendarEvents.ok, this.onCalendarOk),\n select: createChainedFunction(calendarEvents.select, this.onCalendarSelect),\n clear: createChainedFunction(calendarEvents.clear, this.onCalendarClear),\n blur: createChainedFunction(calendarEvents.blur, this.onCalendarBlur)\n }\n };\n\n return cloneElement(props.calendar, extraProps);\n },\n setOpen: function setOpen(open, callback) {\n if (this.sOpen !== open) {\n if (!hasProp(this, 'open')) {\n this.setState({\n sOpen: open\n }, callback);\n }\n this.__emit('openChange', open);\n }\n },\n openCalendar: function openCalendar(callback) {\n this.setOpen(true, callback);\n },\n closeCalendar: function closeCalendar(callback) {\n this.setOpen(false, callback);\n },\n focus: function focus() {\n if (!this.sOpen) {\n this.$el.focus();\n }\n },\n focusCalendar: function focusCalendar() {\n if (this.sOpen && this.calendarInstance && this.calendarInstance.componentInstance) {\n this.calendarInstance.componentInstance.focus();\n }\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var style = getStyle(this);\n var prefixCls = props.prefixCls,\n placement = props.placement,\n getCalendarContainer = props.getCalendarContainer,\n align = props.align,\n animation = props.animation,\n disabled = props.disabled,\n dropdownClassName = props.dropdownClassName,\n transitionName = props.transitionName;\n var sValue = this.sValue,\n sOpen = this.sOpen;\n\n var children = this.$scopedSlots['default'];\n var childrenState = {\n value: sValue,\n open: sOpen\n };\n if (this.sOpen || !this.calendarInstance) {\n this.calendarInstance = this.getCalendarElement();\n }\n\n return h(\n Trigger,\n {\n attrs: {\n popupAlign: align,\n builtinPlacements: placements,\n popupPlacement: placement,\n action: disabled && !sOpen ? [] : ['click'],\n destroyPopupOnHide: true,\n getPopupContainer: getCalendarContainer,\n popupStyle: style,\n popupAnimation: animation,\n popupTransitionName: transitionName,\n popupVisible: sOpen,\n\n prefixCls: prefixCls,\n popupClassName: dropdownClassName\n },\n on: {\n 'popupVisibleChange': this.onVisibleChange\n }\n },\n [h(\n 'template',\n { slot: 'popup' },\n [this.calendarInstance]\n ), cloneElement(children(childrenState, props), { on: { keydown: this.onKeyDown } })]\n );\n }\n};\n\nexport default Picker;","export function formatDate(value, format) {\n if (!value) {\n return '';\n }\n if (Array.isArray(format)) {\n format = format[0];\n }\n if (typeof format === 'function') {\n var result = format(value);\n if (typeof result === 'string') {\n return result;\n } else {\n throw new Error('The function of format does not return a string');\n }\n }\n return value.format(format);\n}","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport * as moment from 'moment';\nimport omit from 'lodash/omit';\nimport MonthCalendar from '../vc-calendar/src/MonthCalendar';\nimport VcDatePicker from '../vc-calendar/src/Picker';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport interopDefault from '../_util/interopDefault';\nimport BaseMixin from '../_util/BaseMixin';\nimport { hasProp, getOptionProps, initDefaultProps, mergeProps, getComponentFromProp, isValidElement, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport { formatDate } from './utils';\n\n// export const PickerProps = {\n// value?: moment.Moment;\n// prefixCls: string;\n// }\nfunction noop() {}\nexport default function createPicker(TheCalendar, props) {\n return {\n props: initDefaultProps(props, {\n allowClear: true,\n showToday: true\n }),\n mixins: [BaseMixin],\n model: {\n prop: 'value',\n event: 'change'\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var value = this.value || this.defaultValue;\n if (value && !interopDefault(moment).isMoment(value)) {\n throw new Error('The value/defaultValue of DatePicker or MonthPicker must be ' + 'a moment object');\n }\n return {\n sValue: value,\n showDate: value,\n _open: !!this.open\n };\n },\n\n watch: {\n open: function open(val) {\n var props = getOptionProps(this);\n var state = {};\n state._open = val;\n if ('value' in props && !val && props.value !== this.showDate) {\n state.showDate = props.value;\n }\n this.setState(state);\n },\n value: function value(val) {\n var state = {};\n state.sValue = val;\n if (val !== this.sValue) {\n state.showDate = val;\n }\n this.setState(state);\n },\n _open: function _open(val, oldVal) {\n var _this = this;\n\n this.$nextTick(function () {\n if (!hasProp(_this, 'open') && oldVal && !val) {\n _this.focus();\n }\n });\n }\n },\n methods: {\n clearSelection: function clearSelection(e) {\n e.preventDefault();\n e.stopPropagation();\n this.handleChange(null);\n },\n handleChange: function handleChange(value) {\n if (!hasProp(this, 'value')) {\n this.setState({\n sValue: value,\n showDate: value\n });\n }\n this.$emit('change', value, formatDate(value, this.format));\n },\n handleCalendarChange: function handleCalendarChange(value) {\n this.setState({ showDate: value });\n },\n handleOpenChange: function handleOpenChange(open) {\n var props = getOptionProps(this);\n if (!('open' in props)) {\n this.setState({ _open: open });\n }\n this.$emit('openChange', open);\n },\n focus: function focus() {\n this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input.blur();\n },\n renderFooter: function renderFooter() {\n var h = this.$createElement;\n var $scopedSlots = this.$scopedSlots,\n $slots = this.$slots,\n prefixCls = this._prefixCls;\n\n var renderExtraFooter = this.renderExtraFooter || $scopedSlots.renderExtraFooter || $slots.renderExtraFooter;\n return renderExtraFooter ? h(\n 'div',\n { 'class': prefixCls + '-footer-extra' },\n [typeof renderExtraFooter === 'function' ? renderExtraFooter.apply(undefined, arguments) : renderExtraFooter]\n ) : null;\n },\n onMouseEnter: function onMouseEnter(e) {\n this.$emit('mouseenter', e);\n },\n onMouseLeave: function onMouseLeave(e) {\n this.$emit('mouseleave', e);\n }\n },\n\n render: function render() {\n var _classNames,\n _this2 = this;\n\n var h = arguments[0];\n var $scopedSlots = this.$scopedSlots;\n var _$data = this.$data,\n value = _$data.sValue,\n showDate = _$data.showDate,\n open = _$data._open;\n\n var suffixIcon = getComponentFromProp(this, 'suffixIcon');\n suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;\n var listeners = getListeners(this);\n var _listeners$panelChang = listeners.panelChange,\n panelChange = _listeners$panelChang === undefined ? noop : _listeners$panelChang,\n _listeners$focus = listeners.focus,\n focus = _listeners$focus === undefined ? noop : _listeners$focus,\n _listeners$blur = listeners.blur,\n blur = _listeners$blur === undefined ? noop : _listeners$blur,\n _listeners$ok = listeners.ok,\n ok = _listeners$ok === undefined ? noop : _listeners$ok;\n\n var props = getOptionProps(this);\n\n var customizePrefixCls = props.prefixCls,\n locale = props.locale,\n localeCode = props.localeCode,\n inputReadOnly = props.inputReadOnly;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('calendar', customizePrefixCls);\n this._prefixCls = prefixCls;\n\n var dateRender = props.dateRender || $scopedSlots.dateRender;\n var monthCellContentRender = props.monthCellContentRender || $scopedSlots.monthCellContentRender;\n var placeholder = 'placeholder' in props ? props.placeholder : locale.lang.placeholder;\n\n var disabledTime = props.showTime ? props.disabledTime : null;\n\n var calendarClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-time', props.showTime), _defineProperty(_classNames, prefixCls + '-month', MonthCalendar === TheCalendar), _classNames));\n\n if (value && localeCode) {\n value.locale(localeCode);\n }\n\n var pickerProps = { props: {}, on: {} };\n var calendarProps = { props: {}, on: {} };\n var pickerStyle = {};\n if (props.showTime) {\n // fix https://github.com/ant-design/ant-design/issues/1902\n calendarProps.on.select = this.handleChange;\n pickerStyle.minWidth = '195px';\n } else {\n pickerProps.on.change = this.handleChange;\n }\n if ('mode' in props) {\n calendarProps.props.mode = props.mode;\n }\n var theCalendarProps = mergeProps(calendarProps, {\n props: {\n disabledDate: props.disabledDate,\n disabledTime: disabledTime,\n locale: locale.lang,\n timePicker: props.timePicker,\n defaultValue: props.defaultPickerValue || interopDefault(moment)(),\n dateInputPlaceholder: placeholder,\n prefixCls: prefixCls,\n dateRender: dateRender,\n format: props.format,\n showToday: props.showToday,\n monthCellContentRender: monthCellContentRender,\n renderFooter: this.renderFooter,\n value: showDate,\n inputReadOnly: inputReadOnly\n },\n on: {\n ok: ok,\n panelChange: panelChange,\n change: this.handleCalendarChange\n },\n 'class': calendarClassName,\n scopedSlots: $scopedSlots\n });\n var calendar = h(TheCalendar, theCalendarProps);\n\n var clearIcon = !props.disabled && props.allowClear && value ? h(Icon, {\n attrs: {\n type: 'close-circle',\n\n theme: 'filled'\n },\n 'class': prefixCls + '-picker-clear',\n on: {\n 'click': this.clearSelection\n }\n }) : null;\n\n var inputIcon = suffixIcon && (isValidElement(suffixIcon) ? cloneElement(suffixIcon, {\n 'class': prefixCls + '-picker-icon'\n }) : h(\n 'span',\n { 'class': prefixCls + '-picker-icon' },\n [suffixIcon]\n )) || h(Icon, {\n attrs: { type: 'calendar' },\n 'class': prefixCls + '-picker-icon' });\n\n var input = function input(_ref) {\n var inputValue = _ref.value;\n return h('div', [h('input', {\n ref: 'input',\n attrs: { disabled: props.disabled,\n\n readOnly: true,\n\n placeholder: placeholder,\n\n tabIndex: props.tabIndex,\n name: _this2.name\n },\n on: {\n 'focus': focus,\n 'blur': blur\n },\n domProps: {\n 'value': formatDate(inputValue, _this2.format)\n },\n 'class': props.pickerInputClass }), clearIcon, inputIcon]);\n };\n var vcDatePickerProps = {\n props: _extends({}, props, pickerProps.props, {\n calendar: calendar,\n value: value,\n prefixCls: prefixCls + '-picker-container'\n }),\n on: _extends({}, omit(listeners, 'change'), pickerProps.on, {\n open: open,\n onOpenChange: this.handleOpenChange\n }),\n style: props.popupStyle,\n scopedSlots: _extends({ 'default': input }, $scopedSlots)\n };\n return h(\n 'span',\n {\n 'class': props.pickerClass,\n style: pickerStyle\n // tabIndex={props.disabled ? -1 : 0}\n // onFocus={focus}\n // onBlur={blur}\n , on: {\n 'mouseenter': this.onMouseEnter,\n 'mouseleave': this.onMouseLeave\n }\n },\n [h(VcDatePicker, vcDatePickerProps)]\n );\n }\n };\n}","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport moment from 'moment';\n\nvar Header = {\n mixins: [BaseMixin],\n props: {\n format: PropTypes.string,\n prefixCls: PropTypes.string,\n disabledDate: PropTypes.func,\n placeholder: PropTypes.string,\n clearText: PropTypes.string,\n value: PropTypes.object,\n inputReadOnly: PropTypes.bool.def(false),\n hourOptions: PropTypes.array,\n minuteOptions: PropTypes.array,\n secondOptions: PropTypes.array,\n disabledHours: PropTypes.func,\n disabledMinutes: PropTypes.func,\n disabledSeconds: PropTypes.func,\n // onChange: PropTypes.func,\n // onClear: PropTypes.func,\n // onEsc: PropTypes.func,\n allowEmpty: PropTypes.bool,\n defaultOpenValue: PropTypes.object,\n currentSelectPanel: PropTypes.string,\n focusOnOpen: PropTypes.bool,\n // onKeyDown: PropTypes.func,\n clearIcon: PropTypes.any\n },\n data: function data() {\n var value = this.value,\n format = this.format;\n\n return {\n str: value && value.format(format) || '',\n invalid: false\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n if (this.focusOnOpen) {\n // Wait one frame for the panel to be positioned before focusing\n var requestAnimationFrame = window.requestAnimationFrame || window.setTimeout;\n requestAnimationFrame(function () {\n _this.$refs.input.focus();\n _this.$refs.input.select();\n });\n }\n },\n\n watch: {\n value: function value(val) {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.setState({\n str: val && val.format(_this2.format) || '',\n invalid: false\n });\n });\n }\n },\n\n methods: {\n onInputChange: function onInputChange(e) {\n var _e$target = e.target,\n str = _e$target.value,\n composing = _e$target.composing;\n var _str = this.str,\n oldStr = _str === undefined ? '' : _str;\n\n if (e.isComposing || composing || oldStr === str) return;\n\n this.setState({\n str: str\n });\n var format = this.format,\n hourOptions = this.hourOptions,\n minuteOptions = this.minuteOptions,\n secondOptions = this.secondOptions,\n disabledHours = this.disabledHours,\n disabledMinutes = this.disabledMinutes,\n disabledSeconds = this.disabledSeconds,\n originalValue = this.value;\n\n\n if (str) {\n var value = this.getProtoValue().clone();\n var parsed = moment(str, format, true);\n if (!parsed.isValid()) {\n this.setState({\n invalid: true\n });\n return;\n }\n value.hour(parsed.hour()).minute(parsed.minute()).second(parsed.second());\n\n // if time value not allowed, response warning.\n if (hourOptions.indexOf(value.hour()) < 0 || minuteOptions.indexOf(value.minute()) < 0 || secondOptions.indexOf(value.second()) < 0) {\n this.setState({\n invalid: true\n });\n return;\n }\n\n // if time value is disabled, response warning.\n var disabledHourOptions = disabledHours();\n var disabledMinuteOptions = disabledMinutes(value.hour());\n var disabledSecondOptions = disabledSeconds(value.hour(), value.minute());\n if (disabledHourOptions && disabledHourOptions.indexOf(value.hour()) >= 0 || disabledMinuteOptions && disabledMinuteOptions.indexOf(value.minute()) >= 0 || disabledSecondOptions && disabledSecondOptions.indexOf(value.second()) >= 0) {\n this.setState({\n invalid: true\n });\n return;\n }\n\n if (originalValue) {\n if (originalValue.hour() !== value.hour() || originalValue.minute() !== value.minute() || originalValue.second() !== value.second()) {\n // keep other fields for rc-calendar\n var changedValue = originalValue.clone();\n changedValue.hour(value.hour());\n changedValue.minute(value.minute());\n changedValue.second(value.second());\n this.__emit('change', changedValue);\n }\n } else if (originalValue !== value) {\n this.__emit('change', value);\n }\n } else {\n this.__emit('change', null);\n }\n\n this.setState({\n invalid: false\n });\n },\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === 27) {\n this.__emit('esc');\n }\n this.__emit('keydown', e);\n },\n getProtoValue: function getProtoValue() {\n return this.value || this.defaultOpenValue;\n },\n getInput: function getInput() {\n var h = this.$createElement;\n var prefixCls = this.prefixCls,\n placeholder = this.placeholder,\n inputReadOnly = this.inputReadOnly,\n invalid = this.invalid,\n str = this.str;\n\n var invalidClass = invalid ? prefixCls + '-input-invalid' : '';\n return h('input', _mergeJSXProps([{\n 'class': prefixCls + '-input ' + invalidClass,\n ref: 'input',\n on: {\n 'keydown': this.onKeyDown,\n 'input': this.onInputChange\n },\n domProps: {\n 'value': str\n },\n attrs: {\n placeholder: placeholder,\n\n readOnly: !!inputReadOnly\n }\n }, {\n directives: [{\n name: 'ant-input'\n }]\n }]));\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var prefixCls = this.prefixCls;\n\n return h(\n 'div',\n { 'class': prefixCls + '-input-wrap' },\n [this.getInput()]\n );\n }\n};\n\nexport default Header;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport classnames from 'classnames';\nimport raf from 'raf';\n\nfunction noop() {}\nvar scrollTo = function scrollTo(element, to, duration) {\n // jump to target if duration zero\n if (duration <= 0) {\n raf(function () {\n element.scrollTop = to;\n });\n return;\n }\n var difference = to - element.scrollTop;\n var perTick = difference / duration * 10;\n\n raf(function () {\n element.scrollTop += perTick;\n if (element.scrollTop === to) return;\n scrollTo(element, to, duration - 10);\n });\n};\n\nvar Select = {\n mixins: [BaseMixin],\n props: {\n prefixCls: PropTypes.string,\n options: PropTypes.array,\n selectedIndex: PropTypes.number,\n type: PropTypes.string\n // onSelect: PropTypes.func,\n // onMouseEnter: PropTypes.func,\n },\n data: function data() {\n return {\n active: false\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n // jump to selected option\n _this.scrollToSelected(0);\n });\n },\n\n watch: {\n selectedIndex: function selectedIndex() {\n var _this2 = this;\n\n this.$nextTick(function () {\n // smooth scroll to selected option\n _this2.scrollToSelected(120);\n });\n }\n },\n methods: {\n onSelect: function onSelect(value) {\n var type = this.type;\n\n this.__emit('select', type, value);\n },\n onEsc: function onEsc(e) {\n this.__emit('esc', e);\n },\n getOptions: function getOptions() {\n var _this3 = this;\n\n var h = this.$createElement;\n var options = this.options,\n selectedIndex = this.selectedIndex,\n prefixCls = this.prefixCls;\n\n return options.map(function (item, index) {\n var _classnames;\n\n var cls = classnames((_classnames = {}, _defineProperty(_classnames, prefixCls + '-select-option-selected', selectedIndex === index), _defineProperty(_classnames, prefixCls + '-select-option-disabled', item.disabled), _classnames));\n var onClick = item.disabled ? noop : function () {\n _this3.onSelect(item.value);\n };\n var onKeyDown = function onKeyDown(e) {\n if (e.keyCode === 13) onClick();else if (e.keyCode === 27) _this3.onEsc();\n };\n return h(\n 'li',\n {\n attrs: {\n role: 'button',\n\n disabled: item.disabled,\n tabIndex: '0'\n },\n on: {\n 'click': onClick,\n 'keydown': onKeyDown\n },\n\n 'class': cls,\n key: index },\n [item.value]\n );\n });\n },\n handleMouseEnter: function handleMouseEnter(e) {\n this.setState({ active: true });\n this.__emit('mouseenter', e);\n },\n handleMouseLeave: function handleMouseLeave() {\n this.setState({ active: false });\n },\n scrollToSelected: function scrollToSelected(duration) {\n // move to selected item\n var select = this.$el;\n var list = this.$refs.list;\n if (!list) {\n return;\n }\n var index = this.selectedIndex;\n if (index < 0) {\n index = 0;\n }\n var topOption = list.children[index];\n var to = topOption.offsetTop;\n scrollTo(select, to, duration);\n }\n },\n\n render: function render() {\n var _cls;\n\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n options = this.options,\n active = this.active;\n\n if (options.length === 0) {\n return null;\n }\n\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls + '-select', 1), _defineProperty(_cls, prefixCls + '-select-active', active), _cls);\n\n return h(\n 'div',\n { 'class': cls, on: {\n 'mouseenter': this.handleMouseEnter,\n 'mouseleave': this.handleMouseLeave\n }\n },\n [h(\n 'ul',\n { ref: 'list' },\n [this.getOptions()]\n )]\n );\n }\n};\n\nexport default Select;","import PropTypes from '../_util/vue-types';\nimport Select from './Select';\nimport BaseMixin from '../_util/BaseMixin';\n\nvar formatOption = function formatOption(option, disabledOptions) {\n var value = '' + option;\n if (option < 10) {\n value = '0' + option;\n }\n\n var disabled = false;\n if (disabledOptions && disabledOptions.indexOf(option) >= 0) {\n disabled = true;\n }\n\n return {\n value: value,\n disabled: disabled\n };\n};\n\nvar Combobox = {\n mixins: [BaseMixin],\n name: 'Combobox',\n props: {\n format: PropTypes.string,\n defaultOpenValue: PropTypes.object,\n prefixCls: PropTypes.string,\n value: PropTypes.object,\n // onChange: PropTypes.func,\n // onAmPmChange: PropTypes.func,\n showHour: PropTypes.bool,\n showMinute: PropTypes.bool,\n showSecond: PropTypes.bool,\n hourOptions: PropTypes.array,\n minuteOptions: PropTypes.array,\n secondOptions: PropTypes.array,\n disabledHours: PropTypes.func,\n disabledMinutes: PropTypes.func,\n disabledSeconds: PropTypes.func,\n // onCurrentSelectPanelChange: PropTypes.func,\n use12Hours: PropTypes.bool,\n isAM: PropTypes.bool\n },\n methods: {\n onItemChange: function onItemChange(type, itemValue) {\n var defaultOpenValue = this.defaultOpenValue,\n use12Hours = this.use12Hours,\n propValue = this.value,\n isAM = this.isAM;\n\n var value = (propValue || defaultOpenValue).clone();\n\n if (type === 'hour') {\n if (use12Hours) {\n if (isAM) {\n value.hour(+itemValue % 12);\n } else {\n value.hour(+itemValue % 12 + 12);\n }\n } else {\n value.hour(+itemValue);\n }\n } else if (type === 'minute') {\n value.minute(+itemValue);\n } else if (type === 'ampm') {\n var ampm = itemValue.toUpperCase();\n if (use12Hours) {\n if (ampm === 'PM' && value.hour() < 12) {\n value.hour(value.hour() % 12 + 12);\n }\n\n if (ampm === 'AM') {\n if (value.hour() >= 12) {\n value.hour(value.hour() - 12);\n }\n }\n }\n this.__emit('amPmChange', ampm);\n } else {\n value.second(+itemValue);\n }\n this.__emit('change', value);\n },\n onEnterSelectPanel: function onEnterSelectPanel(range) {\n this.__emit('currentSelectPanelChange', range);\n },\n onEsc: function onEsc(e) {\n this.__emit('esc', e);\n },\n getHourSelect: function getHourSelect(hour) {\n var _this = this;\n\n var h = this.$createElement;\n var prefixCls = this.prefixCls,\n hourOptions = this.hourOptions,\n disabledHours = this.disabledHours,\n showHour = this.showHour,\n use12Hours = this.use12Hours;\n\n if (!showHour) {\n return null;\n }\n var disabledOptions = disabledHours();\n var hourOptionsAdj = void 0;\n var hourAdj = void 0;\n if (use12Hours) {\n hourOptionsAdj = [12].concat(hourOptions.filter(function (h) {\n return h < 12 && h > 0;\n }));\n hourAdj = hour % 12 || 12;\n } else {\n hourOptionsAdj = hourOptions;\n hourAdj = hour;\n }\n\n return h(Select, {\n attrs: {\n prefixCls: prefixCls,\n options: hourOptionsAdj.map(function (option) {\n return formatOption(option, disabledOptions);\n }),\n selectedIndex: hourOptionsAdj.indexOf(hourAdj),\n type: 'hour'\n },\n on: {\n 'select': this.onItemChange,\n 'mouseenter': function mouseenter() {\n return _this.onEnterSelectPanel('hour');\n },\n 'esc': this.onEsc\n }\n });\n },\n getMinuteSelect: function getMinuteSelect(minute) {\n var _this2 = this;\n\n var h = this.$createElement;\n var prefixCls = this.prefixCls,\n minuteOptions = this.minuteOptions,\n disabledMinutes = this.disabledMinutes,\n defaultOpenValue = this.defaultOpenValue,\n showMinute = this.showMinute,\n propValue = this.value;\n\n if (!showMinute) {\n return null;\n }\n var value = propValue || defaultOpenValue;\n var disabledOptions = disabledMinutes(value.hour());\n\n return h(Select, {\n attrs: {\n prefixCls: prefixCls,\n options: minuteOptions.map(function (option) {\n return formatOption(option, disabledOptions);\n }),\n selectedIndex: minuteOptions.indexOf(minute),\n type: 'minute'\n },\n on: {\n 'select': this.onItemChange,\n 'mouseenter': function mouseenter() {\n return _this2.onEnterSelectPanel('minute');\n },\n 'esc': this.onEsc\n }\n });\n },\n getSecondSelect: function getSecondSelect(second) {\n var _this3 = this;\n\n var h = this.$createElement;\n var prefixCls = this.prefixCls,\n secondOptions = this.secondOptions,\n disabledSeconds = this.disabledSeconds,\n showSecond = this.showSecond,\n defaultOpenValue = this.defaultOpenValue,\n propValue = this.value;\n\n if (!showSecond) {\n return null;\n }\n var value = propValue || defaultOpenValue;\n var disabledOptions = disabledSeconds(value.hour(), value.minute());\n\n return h(Select, {\n attrs: {\n prefixCls: prefixCls,\n options: secondOptions.map(function (option) {\n return formatOption(option, disabledOptions);\n }),\n selectedIndex: secondOptions.indexOf(second),\n type: 'second'\n },\n on: {\n 'select': this.onItemChange,\n 'mouseenter': function mouseenter() {\n return _this3.onEnterSelectPanel('second');\n },\n 'esc': this.onEsc\n }\n });\n },\n getAMPMSelect: function getAMPMSelect() {\n var _this4 = this;\n\n var h = this.$createElement;\n var prefixCls = this.prefixCls,\n use12Hours = this.use12Hours,\n format = this.format,\n isAM = this.isAM;\n\n if (!use12Hours) {\n return null;\n }\n\n var AMPMOptions = ['am', 'pm'] // If format has A char, then we should uppercase AM/PM\n .map(function (c) {\n return format.match(/\\sA/) ? c.toUpperCase() : c;\n }).map(function (c) {\n return { value: c };\n });\n\n var selected = isAM ? 0 : 1;\n\n return h(Select, {\n attrs: {\n prefixCls: prefixCls,\n options: AMPMOptions,\n selectedIndex: selected,\n type: 'ampm'\n },\n on: {\n 'select': this.onItemChange,\n 'mouseenter': function mouseenter() {\n return _this4.onEnterSelectPanel('ampm');\n },\n 'esc': this.onEsc\n }\n });\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n defaultOpenValue = this.defaultOpenValue,\n propValue = this.value;\n\n var value = propValue || defaultOpenValue;\n return h(\n 'div',\n { 'class': prefixCls + '-combobox' },\n [this.getHourSelect(value.hour()), this.getMinuteSelect(value.minute()), this.getSecondSelect(value.second()), this.getAMPMSelect(value.hour())]\n );\n }\n};\n\nexport default Combobox;","import moment from 'moment';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport Header from './Header';\nimport Combobox from './Combobox';\nimport { getComponentFromProp, getListeners } from '../_util/props-util';\n\nfunction noop() {}\n\nfunction generateOptions(length, disabledOptions, hideDisabledOptions) {\n var step = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n\n var arr = [];\n for (var value = 0; value < length; value += step) {\n if (!disabledOptions || disabledOptions.indexOf(value) < 0 || !hideDisabledOptions) {\n arr.push(value);\n }\n }\n return arr;\n}\n\nfunction toNearestValidTime(time, hourOptions, minuteOptions, secondOptions) {\n var hour = hourOptions.slice().sort(function (a, b) {\n return Math.abs(time.hour() - a) - Math.abs(time.hour() - b);\n })[0];\n var minute = minuteOptions.slice().sort(function (a, b) {\n return Math.abs(time.minute() - a) - Math.abs(time.minute() - b);\n })[0];\n var second = secondOptions.slice().sort(function (a, b) {\n return Math.abs(time.second() - a) - Math.abs(time.second() - b);\n })[0];\n return moment(hour + ':' + minute + ':' + second, 'HH:mm:ss');\n}\n\nvar Panel = {\n mixins: [BaseMixin],\n props: {\n clearText: PropTypes.string,\n prefixCls: PropTypes.string.def('rc-time-picker-panel'),\n defaultOpenValue: {\n type: Object,\n 'default': function _default() {\n return moment();\n }\n },\n value: PropTypes.any,\n defaultValue: PropTypes.any,\n placeholder: PropTypes.string,\n format: PropTypes.string,\n inputReadOnly: PropTypes.bool.def(false),\n disabledHours: PropTypes.func.def(noop),\n disabledMinutes: PropTypes.func.def(noop),\n disabledSeconds: PropTypes.func.def(noop),\n hideDisabledOptions: PropTypes.bool,\n // onChange: PropTypes.func,\n // onEsc: PropTypes.func,\n allowEmpty: PropTypes.bool,\n showHour: PropTypes.bool,\n showMinute: PropTypes.bool,\n showSecond: PropTypes.bool,\n // onClear: PropTypes.func,\n use12Hours: PropTypes.bool.def(false),\n hourStep: PropTypes.number,\n minuteStep: PropTypes.number,\n secondStep: PropTypes.number,\n addon: PropTypes.func.def(noop),\n focusOnOpen: PropTypes.bool,\n // onKeydown: PropTypes.func,\n clearIcon: PropTypes.any\n },\n data: function data() {\n return {\n sValue: this.value,\n selectionRange: [],\n currentSelectPanel: ''\n };\n },\n\n watch: {\n value: function value(val) {\n this.setState({\n sValue: val\n });\n }\n },\n\n methods: {\n onChange: function onChange(newValue) {\n this.setState({ sValue: newValue });\n this.__emit('change', newValue);\n },\n onAmPmChange: function onAmPmChange(ampm) {\n this.__emit('amPmChange', ampm);\n },\n onCurrentSelectPanelChange: function onCurrentSelectPanelChange(currentSelectPanel) {\n this.setState({ currentSelectPanel: currentSelectPanel });\n },\n\n\n // https://github.com/ant-design/ant-design/issues/5829\n close: function close() {\n this.__emit('esc');\n },\n onEsc: function onEsc(e) {\n this.__emit('esc', e);\n },\n disabledHours2: function disabledHours2() {\n var use12Hours = this.use12Hours,\n disabledHours = this.disabledHours;\n\n var disabledOptions = disabledHours();\n if (use12Hours && Array.isArray(disabledOptions)) {\n if (this.isAM()) {\n disabledOptions = disabledOptions.filter(function (h) {\n return h < 12;\n }).map(function (h) {\n return h === 0 ? 12 : h;\n });\n } else {\n disabledOptions = disabledOptions.map(function (h) {\n return h === 12 ? 12 : h - 12;\n });\n }\n }\n return disabledOptions;\n },\n isAM: function isAM() {\n var value = this.sValue || this.defaultOpenValue;\n return value.hour() >= 0 && value.hour() < 12;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n placeholder = this.placeholder,\n disabledMinutes = this.disabledMinutes,\n addon = this.addon,\n disabledSeconds = this.disabledSeconds,\n hideDisabledOptions = this.hideDisabledOptions,\n showHour = this.showHour,\n showMinute = this.showMinute,\n showSecond = this.showSecond,\n format = this.format,\n defaultOpenValue = this.defaultOpenValue,\n clearText = this.clearText,\n use12Hours = this.use12Hours,\n focusOnOpen = this.focusOnOpen,\n hourStep = this.hourStep,\n minuteStep = this.minuteStep,\n secondStep = this.secondStep,\n inputReadOnly = this.inputReadOnly,\n sValue = this.sValue,\n currentSelectPanel = this.currentSelectPanel;\n\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n\n var _getListeners = getListeners(this),\n _getListeners$esc = _getListeners.esc,\n esc = _getListeners$esc === undefined ? noop : _getListeners$esc,\n _getListeners$keydown = _getListeners.keydown,\n keydown = _getListeners$keydown === undefined ? noop : _getListeners$keydown;\n\n var disabledHourOptions = this.disabledHours2();\n var disabledMinuteOptions = disabledMinutes(sValue ? sValue.hour() : null);\n var disabledSecondOptions = disabledSeconds(sValue ? sValue.hour() : null, sValue ? sValue.minute() : null);\n var hourOptions = generateOptions(24, disabledHourOptions, hideDisabledOptions, hourStep);\n var minuteOptions = generateOptions(60, disabledMinuteOptions, hideDisabledOptions, minuteStep);\n var secondOptions = generateOptions(60, disabledSecondOptions, hideDisabledOptions, secondStep);\n var validDefaultOpenValue = toNearestValidTime(defaultOpenValue, hourOptions, minuteOptions, secondOptions);\n return h(\n 'div',\n { 'class': prefixCls + '-inner' },\n [h(Header, {\n attrs: {\n clearText: clearText,\n prefixCls: prefixCls,\n defaultOpenValue: validDefaultOpenValue,\n value: sValue,\n currentSelectPanel: currentSelectPanel,\n\n format: format,\n placeholder: placeholder,\n hourOptions: hourOptions,\n minuteOptions: minuteOptions,\n secondOptions: secondOptions,\n disabledHours: this.disabledHours2,\n disabledMinutes: disabledMinutes,\n disabledSeconds: disabledSeconds,\n\n focusOnOpen: focusOnOpen,\n\n inputReadOnly: inputReadOnly,\n clearIcon: clearIcon\n },\n on: {\n 'esc': esc,\n 'change': this.onChange,\n 'keydown': keydown\n }\n }), h(Combobox, {\n attrs: {\n prefixCls: prefixCls,\n value: sValue,\n defaultOpenValue: validDefaultOpenValue,\n format: format,\n\n showHour: showHour,\n showMinute: showMinute,\n showSecond: showSecond,\n hourOptions: hourOptions,\n minuteOptions: minuteOptions,\n secondOptions: secondOptions,\n disabledHours: this.disabledHours2,\n disabledMinutes: disabledMinutes,\n disabledSeconds: disabledSeconds,\n\n use12Hours: use12Hours,\n\n isAM: this.isAM()\n },\n on: {\n 'change': this.onChange,\n 'amPmChange': this.onAmPmChange,\n 'currentSelectPanelChange': this.onCurrentSelectPanelChange,\n 'esc': this.onEsc\n }\n }), addon(this)]\n );\n }\n};\n\nexport default Panel;","var autoAdjustOverflow = {\n adjustX: 1,\n adjustY: 1\n};\n\nvar targetOffset = [0, 0];\n\nvar placements = {\n bottomLeft: {\n points: ['tl', 'tl'],\n overflow: autoAdjustOverflow,\n offset: [0, -3],\n targetOffset: targetOffset\n },\n bottomRight: {\n points: ['tr', 'tr'],\n overflow: autoAdjustOverflow,\n offset: [0, -3],\n targetOffset: targetOffset\n },\n topRight: {\n points: ['br', 'br'],\n overflow: autoAdjustOverflow,\n offset: [0, 3],\n targetOffset: targetOffset\n },\n topLeft: {\n points: ['bl', 'bl'],\n overflow: autoAdjustOverflow,\n offset: [0, 3],\n targetOffset: targetOffset\n }\n};\n\nexport default placements;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport moment from 'moment';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport { initDefaultProps, hasProp, getComponentFromProp, isValidElement, getEvents } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport Trigger from '../vc-trigger';\nimport Panel from './Panel';\nimport placements from './placements';\n\nfunction noop() {}\n\nexport default {\n name: 'VcTimePicker',\n mixins: [BaseMixin],\n props: initDefaultProps({\n prefixCls: PropTypes.string,\n clearText: PropTypes.string,\n value: PropTypes.any,\n defaultOpenValue: {\n type: Object,\n 'default': function _default() {\n return moment();\n }\n },\n inputReadOnly: PropTypes.bool,\n disabled: PropTypes.bool,\n allowEmpty: PropTypes.bool,\n defaultValue: PropTypes.any,\n open: PropTypes.bool,\n defaultOpen: PropTypes.bool,\n align: PropTypes.object,\n placement: PropTypes.any,\n transitionName: PropTypes.string,\n getPopupContainer: PropTypes.func,\n placeholder: PropTypes.string,\n format: PropTypes.string,\n showHour: PropTypes.bool,\n showMinute: PropTypes.bool,\n showSecond: PropTypes.bool,\n popupClassName: PropTypes.string,\n popupStyle: PropTypes.object,\n disabledHours: PropTypes.func,\n disabledMinutes: PropTypes.func,\n disabledSeconds: PropTypes.func,\n hideDisabledOptions: PropTypes.bool,\n // onChange: PropTypes.func,\n // onAmPmChange: PropTypes.func,\n // onOpen: PropTypes.func,\n // onClose: PropTypes.func,\n // onFocus: PropTypes.func,\n // onBlur: PropTypes.func,\n name: PropTypes.string,\n autoComplete: PropTypes.string,\n use12Hours: PropTypes.bool,\n hourStep: PropTypes.number,\n minuteStep: PropTypes.number,\n secondStep: PropTypes.number,\n focusOnOpen: PropTypes.bool,\n // onKeyDown: PropTypes.func,\n autoFocus: PropTypes.bool,\n id: PropTypes.string,\n inputIcon: PropTypes.any,\n clearIcon: PropTypes.any,\n addon: PropTypes.func\n }, {\n clearText: 'clear',\n prefixCls: 'rc-time-picker',\n defaultOpen: false,\n inputReadOnly: false,\n popupClassName: '',\n popupStyle: {},\n align: {},\n allowEmpty: true,\n showHour: true,\n showMinute: true,\n showSecond: true,\n disabledHours: noop,\n disabledMinutes: noop,\n disabledSeconds: noop,\n hideDisabledOptions: false,\n placement: 'bottomLeft',\n use12Hours: false,\n focusOnOpen: false\n }),\n data: function data() {\n var defaultOpen = this.defaultOpen,\n defaultValue = this.defaultValue,\n _open = this.open,\n open = _open === undefined ? defaultOpen : _open,\n _value = this.value,\n value = _value === undefined ? defaultValue : _value;\n\n return {\n sOpen: open,\n sValue: value\n };\n },\n\n\n watch: {\n value: function value(val) {\n this.setState({\n sValue: val\n });\n },\n open: function open(val) {\n if (val !== undefined) {\n this.setState({\n sOpen: val\n });\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.autoFocus) {\n _this.focus();\n }\n });\n },\n\n methods: {\n onPanelChange: function onPanelChange(value) {\n this.setValue(value);\n },\n onAmPmChange: function onAmPmChange(ampm) {\n this.__emit('amPmChange', ampm);\n },\n onClear: function onClear(event) {\n event.stopPropagation();\n this.setValue(null);\n this.setOpen(false);\n },\n onVisibleChange: function onVisibleChange(open) {\n this.setOpen(open);\n },\n onEsc: function onEsc() {\n this.setOpen(false);\n this.focus();\n },\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === 40) {\n this.setOpen(true);\n }\n },\n onKeyDown2: function onKeyDown2(e) {\n this.__emit('keydown', e);\n },\n setValue: function setValue(value) {\n if (!hasProp(this, 'value')) {\n this.setState({\n sValue: value\n });\n }\n this.__emit('change', value);\n },\n getFormat: function getFormat() {\n var format = this.format,\n showHour = this.showHour,\n showMinute = this.showMinute,\n showSecond = this.showSecond,\n use12Hours = this.use12Hours;\n\n if (format) {\n return format;\n }\n\n if (use12Hours) {\n var fmtString = [showHour ? 'h' : '', showMinute ? 'mm' : '', showSecond ? 'ss' : ''].filter(function (item) {\n return !!item;\n }).join(':');\n\n return fmtString.concat(' a');\n }\n\n return [showHour ? 'HH' : '', showMinute ? 'mm' : '', showSecond ? 'ss' : ''].filter(function (item) {\n return !!item;\n }).join(':');\n },\n getPanelElement: function getPanelElement() {\n var h = this.$createElement;\n var prefixCls = this.prefixCls,\n placeholder = this.placeholder,\n disabledHours = this.disabledHours,\n addon = this.addon,\n disabledMinutes = this.disabledMinutes,\n disabledSeconds = this.disabledSeconds,\n hideDisabledOptions = this.hideDisabledOptions,\n inputReadOnly = this.inputReadOnly,\n showHour = this.showHour,\n showMinute = this.showMinute,\n showSecond = this.showSecond,\n defaultOpenValue = this.defaultOpenValue,\n clearText = this.clearText,\n use12Hours = this.use12Hours,\n focusOnOpen = this.focusOnOpen,\n onKeyDown2 = this.onKeyDown2,\n hourStep = this.hourStep,\n minuteStep = this.minuteStep,\n secondStep = this.secondStep,\n sValue = this.sValue;\n\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n return h(Panel, {\n attrs: {\n clearText: clearText,\n prefixCls: prefixCls + '-panel',\n\n value: sValue,\n inputReadOnly: inputReadOnly,\n\n defaultOpenValue: defaultOpenValue,\n showHour: showHour,\n showMinute: showMinute,\n showSecond: showSecond,\n\n format: this.getFormat(),\n placeholder: placeholder,\n disabledHours: disabledHours,\n disabledMinutes: disabledMinutes,\n disabledSeconds: disabledSeconds,\n hideDisabledOptions: hideDisabledOptions,\n use12Hours: use12Hours,\n hourStep: hourStep,\n minuteStep: minuteStep,\n secondStep: secondStep,\n focusOnOpen: focusOnOpen,\n\n clearIcon: clearIcon,\n addon: addon\n },\n ref: 'panel', on: {\n 'change': this.onPanelChange,\n 'amPmChange': this.onAmPmChange,\n 'esc': this.onEsc,\n 'keydown': onKeyDown2\n }\n });\n },\n getPopupClassName: function getPopupClassName() {\n var showHour = this.showHour,\n showMinute = this.showMinute,\n showSecond = this.showSecond,\n use12Hours = this.use12Hours,\n prefixCls = this.prefixCls,\n popupClassName = this.popupClassName;\n\n\n var selectColumnCount = 0;\n if (showHour) {\n selectColumnCount += 1;\n }\n if (showMinute) {\n selectColumnCount += 1;\n }\n if (showSecond) {\n selectColumnCount += 1;\n }\n if (use12Hours) {\n selectColumnCount += 1;\n }\n // Keep it for old compatibility\n return classNames(popupClassName, _defineProperty({}, prefixCls + '-panel-narrow', (!showHour || !showMinute || !showSecond) && !use12Hours), prefixCls + '-panel-column-' + selectColumnCount);\n },\n setOpen: function setOpen(open) {\n if (this.sOpen !== open) {\n if (!hasProp(this, 'open')) {\n this.setState({ sOpen: open });\n }\n if (open) {\n this.__emit('open', { open: open });\n } else {\n this.__emit('close', { open: open });\n }\n }\n },\n focus: function focus() {\n this.$refs.picker.focus();\n },\n blur: function blur() {\n this.$refs.picker.blur();\n },\n onFocus: function onFocus(e) {\n this.__emit('focus', e);\n },\n onBlur: function onBlur(e) {\n this.__emit('blur', e);\n },\n renderClearButton: function renderClearButton() {\n var _this2 = this;\n\n var h = this.$createElement;\n var sValue = this.sValue;\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n allowEmpty = _$props.allowEmpty,\n clearText = _$props.clearText,\n disabled = _$props.disabled;\n\n if (!allowEmpty || !sValue || disabled) {\n return null;\n }\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n if (isValidElement(clearIcon)) {\n var _ref = getEvents(clearIcon) || {},\n _click = _ref.click;\n\n return cloneElement(clearIcon, {\n on: {\n click: function click() {\n if (_click) _click.apply(undefined, arguments);\n _this2.onClear.apply(_this2, arguments);\n }\n }\n });\n }\n\n return h(\n 'a',\n {\n attrs: {\n role: 'button',\n\n title: clearText,\n\n tabIndex: 0\n },\n 'class': prefixCls + '-clear', on: {\n 'click': this.onClear\n }\n },\n [clearIcon || h('i', { 'class': prefixCls + '-clear-icon' })]\n );\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n placeholder = this.placeholder,\n placement = this.placement,\n align = this.align,\n id = this.id,\n disabled = this.disabled,\n transitionName = this.transitionName,\n getPopupContainer = this.getPopupContainer,\n name = this.name,\n autoComplete = this.autoComplete,\n autoFocus = this.autoFocus,\n sOpen = this.sOpen,\n sValue = this.sValue,\n onFocus = this.onFocus,\n onBlur = this.onBlur,\n popupStyle = this.popupStyle;\n\n var popupClassName = this.getPopupClassName();\n var inputIcon = getComponentFromProp(this, 'inputIcon');\n return h(\n Trigger,\n {\n attrs: {\n prefixCls: prefixCls + '-panel',\n popupClassName: popupClassName,\n popupStyle: popupStyle,\n popupAlign: align,\n builtinPlacements: placements,\n popupPlacement: placement,\n action: disabled ? [] : ['click'],\n destroyPopupOnHide: true,\n getPopupContainer: getPopupContainer,\n popupTransitionName: transitionName,\n popupVisible: sOpen\n },\n on: {\n 'popupVisibleChange': this.onVisibleChange\n }\n },\n [h(\n 'template',\n { slot: 'popup' },\n [this.getPanelElement()]\n ), h(\n 'span',\n { 'class': '' + prefixCls },\n [h('input', {\n 'class': prefixCls + '-input',\n ref: 'picker',\n attrs: { type: 'text',\n placeholder: placeholder,\n name: name,\n\n disabled: disabled,\n\n autoComplete: autoComplete,\n\n autoFocus: autoFocus,\n readOnly: true,\n id: id\n },\n on: {\n 'keydown': this.onKeyDown,\n 'focus': onFocus,\n 'blur': onBlur\n },\n domProps: {\n 'value': sValue && sValue.format(this.getFormat()) || ''\n }\n }), inputIcon || h('span', { 'class': prefixCls + '-icon' }), this.renderClearButton()]\n )]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport omit from 'omit.js';\nimport VcTimePicker from '../vc-time-picker';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport BaseMixin from '../_util/BaseMixin';\nimport PropTypes from '../_util/vue-types';\nimport warning from '../_util/warning';\nimport Icon from '../icon';\nimport enUS from './locale/en_US';\nimport { initDefaultProps, hasProp, getOptionProps, getComponentFromProp, isValidElement, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\nimport { checkValidate, stringToMoment, momentToString, TimeOrTimesType } from '../_util/moment-util';\n\nexport function generateShowHourMinuteSecond(format) {\n // Ref: http://momentjs.com/docs/#/parsing/string-format/\n return {\n showHour: format.indexOf('H') > -1 || format.indexOf('h') > -1 || format.indexOf('k') > -1,\n showMinute: format.indexOf('m') > -1,\n showSecond: format.indexOf('s') > -1\n };\n}\n\nexport var TimePickerProps = function TimePickerProps() {\n return {\n size: PropTypes.oneOf(['large', 'default', 'small']),\n value: TimeOrTimesType,\n defaultValue: TimeOrTimesType,\n open: PropTypes.bool,\n format: PropTypes.string,\n disabled: PropTypes.bool,\n placeholder: PropTypes.string,\n prefixCls: PropTypes.string,\n hideDisabledOptions: PropTypes.bool,\n disabledHours: PropTypes.func,\n disabledMinutes: PropTypes.func,\n disabledSeconds: PropTypes.func,\n getPopupContainer: PropTypes.func,\n use12Hours: PropTypes.bool,\n focusOnOpen: PropTypes.bool,\n hourStep: PropTypes.number,\n minuteStep: PropTypes.number,\n secondStep: PropTypes.number,\n allowEmpty: PropTypes.bool,\n allowClear: PropTypes.bool,\n inputReadOnly: PropTypes.bool,\n clearText: PropTypes.string,\n defaultOpenValue: PropTypes.object,\n popupClassName: PropTypes.string,\n popupStyle: PropTypes.object,\n suffixIcon: PropTypes.any,\n align: PropTypes.object,\n placement: PropTypes.any,\n transitionName: PropTypes.string,\n autoFocus: PropTypes.bool,\n addon: PropTypes.any,\n clearIcon: PropTypes.any,\n locale: PropTypes.object,\n valueFormat: PropTypes.string\n };\n};\n\nvar TimePicker = {\n name: 'ATimePicker',\n mixins: [BaseMixin],\n props: initDefaultProps(TimePickerProps(), {\n align: {\n offset: [0, -2]\n },\n disabled: false,\n disabledHours: undefined,\n disabledMinutes: undefined,\n disabledSeconds: undefined,\n hideDisabledOptions: false,\n placement: 'bottomLeft',\n transitionName: 'slide-up',\n focusOnOpen: true,\n allowClear: true\n }),\n model: {\n prop: 'value',\n event: 'change'\n },\n provide: function provide() {\n return {\n savePopupRef: this.savePopupRef\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var value = this.value,\n defaultValue = this.defaultValue,\n valueFormat = this.valueFormat;\n\n\n checkValidate('TimePicker', defaultValue, 'defaultValue', valueFormat);\n checkValidate('TimePicker', value, 'value', valueFormat);\n warning(!hasProp(this, 'allowEmpty'), 'TimePicker', '`allowEmpty` is deprecated. Please use `allowClear` instead.');\n return {\n sValue: stringToMoment(value || defaultValue, valueFormat)\n };\n },\n\n watch: {\n value: function value(val) {\n checkValidate('TimePicker', val, 'value', this.valueFormat);\n this.setState({ sValue: stringToMoment(val, this.valueFormat) });\n }\n },\n methods: {\n getDefaultFormat: function getDefaultFormat() {\n var format = this.format,\n use12Hours = this.use12Hours;\n\n if (format) {\n return format;\n } else if (use12Hours) {\n return 'h:mm:ss a';\n }\n return 'HH:mm:ss';\n },\n getAllowClear: function getAllowClear() {\n var _$props = this.$props,\n allowClear = _$props.allowClear,\n allowEmpty = _$props.allowEmpty;\n\n if (hasProp(this, 'allowClear')) {\n return allowClear;\n }\n return allowEmpty;\n },\n getDefaultLocale: function getDefaultLocale() {\n var defaultLocale = _extends({}, enUS, this.$props.locale);\n return defaultLocale;\n },\n savePopupRef: function savePopupRef(ref) {\n this.popupRef = ref;\n },\n handleChange: function handleChange(value) {\n if (!hasProp(this, 'value')) {\n this.setState({ sValue: value });\n }\n var _format = this.format,\n format = _format === undefined ? 'HH:mm:ss' : _format;\n\n this.$emit('change', this.valueFormat ? momentToString(value, this.valueFormat) : value, value && value.format(format) || '');\n },\n handleOpenClose: function handleOpenClose(_ref) {\n var open = _ref.open;\n\n this.$emit('openChange', open);\n this.$emit('update:open', open);\n },\n focus: function focus() {\n this.$refs.timePicker.focus();\n },\n blur: function blur() {\n this.$refs.timePicker.blur();\n },\n renderInputIcon: function renderInputIcon(prefixCls) {\n var h = this.$createElement;\n\n var suffixIcon = getComponentFromProp(this, 'suffixIcon');\n suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;\n var clockIcon = suffixIcon && isValidElement(suffixIcon) && cloneElement(suffixIcon, {\n 'class': prefixCls + '-clock-icon'\n }) || h(Icon, {\n attrs: { type: 'clock-circle' },\n 'class': prefixCls + '-clock-icon' });\n\n return h(\n 'span',\n { 'class': prefixCls + '-icon' },\n [clockIcon]\n );\n },\n renderClearIcon: function renderClearIcon(prefixCls) {\n var h = this.$createElement;\n\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n var clearIconPrefixCls = prefixCls + '-clear';\n\n if (clearIcon && isValidElement(clearIcon)) {\n return cloneElement(clearIcon, {\n 'class': clearIconPrefixCls\n });\n }\n\n return h(Icon, {\n attrs: { type: 'close-circle', theme: 'filled' },\n 'class': clearIconPrefixCls });\n },\n renderTimePicker: function renderTimePicker(locale) {\n var h = this.$createElement;\n\n var props = getOptionProps(this);\n props = omit(props, ['defaultValue', 'suffixIcon', 'allowEmpty', 'allowClear']);\n\n var _props = props,\n customizePrefixCls = _props.prefixCls,\n getPopupContainer = _props.getPopupContainer,\n placeholder = _props.placeholder,\n size = _props.size;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('time-picker', customizePrefixCls);\n\n var format = this.getDefaultFormat();\n var pickerClassName = _defineProperty({}, prefixCls + '-' + size, !!size);\n var tempAddon = getComponentFromProp(this, 'addon', {}, false);\n var pickerAddon = function pickerAddon(panel) {\n return tempAddon ? h(\n 'div',\n { 'class': prefixCls + '-panel-addon' },\n [typeof tempAddon === 'function' ? tempAddon(panel) : tempAddon]\n ) : null;\n };\n var inputIcon = this.renderInputIcon(prefixCls);\n var clearIcon = this.renderClearIcon(prefixCls);\n var getContextPopupContainer = this.configProvider.getPopupContainer;\n\n var timeProps = {\n props: _extends({}, generateShowHourMinuteSecond(format), props, {\n allowEmpty: this.getAllowClear(),\n prefixCls: prefixCls,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n format: format,\n value: this.sValue,\n placeholder: placeholder === undefined ? locale.placeholder : placeholder,\n addon: pickerAddon,\n inputIcon: inputIcon,\n clearIcon: clearIcon\n }),\n 'class': pickerClassName,\n ref: 'timePicker',\n on: _extends({}, getListeners(this), {\n change: this.handleChange,\n open: this.handleOpenClose,\n close: this.handleOpenClose\n })\n };\n return h(VcTimePicker, timeProps);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n return h(LocaleReceiver, {\n attrs: {\n componentName: 'TimePicker',\n defaultLocale: this.getDefaultLocale()\n },\n scopedSlots: { 'default': this.renderTimePicker }\n });\n }\n};\n\n/* istanbul ignore next */\nTimePicker.install = function (Vue) {\n Vue.use(Base);\n Vue.component(TimePicker.name, TimePicker);\n};\n\nexport default TimePicker;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport TimePickerPanel from '../vc-time-picker/Panel';\nimport classNames from 'classnames';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport { generateShowHourMinuteSecond } from '../time-picker';\nimport enUS from './locale/en_US';\nimport { getOptionProps, initDefaultProps, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { checkValidate, stringToMoment, momentToString } from '../_util/moment-util';\n\nvar DEFAULT_FORMAT = {\n date: 'YYYY-MM-DD',\n dateTime: 'YYYY-MM-DD HH:mm:ss',\n week: 'gggg-wo',\n month: 'YYYY-MM'\n};\n\nvar LOCALE_FORMAT_MAPPING = {\n date: 'dateFormat',\n dateTime: 'dateTimeFormat',\n week: 'weekFormat',\n month: 'monthFormat'\n};\n\nfunction getColumns(_ref) {\n var showHour = _ref.showHour,\n showMinute = _ref.showMinute,\n showSecond = _ref.showSecond,\n use12Hours = _ref.use12Hours;\n\n var column = 0;\n if (showHour) {\n column += 1;\n }\n if (showMinute) {\n column += 1;\n }\n if (showSecond) {\n column += 1;\n }\n if (use12Hours) {\n column += 1;\n }\n return column;\n}\n\nexport default function wrapPicker(Picker, props, pickerType) {\n return {\n name: Picker.name,\n props: initDefaultProps(props, {\n transitionName: 'slide-up',\n popupStyle: {},\n locale: {}\n }),\n model: {\n prop: 'value',\n event: 'change'\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n provide: function provide() {\n return {\n savePopupRef: this.savePopupRef\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n var autoFocus = this.autoFocus,\n disabled = this.disabled,\n value = this.value,\n defaultValue = this.defaultValue,\n valueFormat = this.valueFormat;\n\n checkValidate('DatePicker', defaultValue, 'defaultValue', valueFormat);\n checkValidate('DatePicker', value, 'value', valueFormat);\n if (autoFocus && !disabled) {\n this.$nextTick(function () {\n _this.focus();\n });\n }\n },\n\n watch: {\n value: function value(val) {\n checkValidate('DatePicker', val, 'value', this.valueFormat);\n }\n },\n methods: {\n getDefaultLocale: function getDefaultLocale() {\n var result = _extends({}, enUS, this.locale);\n result.lang = _extends({}, result.lang, (this.locale || {}).lang);\n return result;\n },\n savePopupRef: function savePopupRef(ref) {\n this.popupRef = ref;\n },\n handleOpenChange: function handleOpenChange(open) {\n this.$emit('openChange', open);\n },\n handleFocus: function handleFocus(e) {\n this.$emit('focus', e);\n },\n handleBlur: function handleBlur(e) {\n this.$emit('blur', e);\n },\n handleMouseEnter: function handleMouseEnter(e) {\n this.$emit('mouseenter', e);\n },\n handleMouseLeave: function handleMouseLeave(e) {\n this.$emit('mouseleave', e);\n },\n handleChange: function handleChange(date, dateString) {\n this.$emit('change', this.valueFormat ? momentToString(date, this.valueFormat) : date, dateString);\n },\n handleOk: function handleOk(val) {\n this.$emit('ok', this.valueFormat ? momentToString(val, this.valueFormat) : val);\n },\n handleCalendarChange: function handleCalendarChange(date, dateString) {\n this.$emit('calendarChange', this.valueFormat ? momentToString(date, this.valueFormat) : date, dateString);\n },\n focus: function focus() {\n this.$refs.picker.focus();\n },\n blur: function blur() {\n this.$refs.picker.blur();\n },\n transformValue: function transformValue(props) {\n if ('value' in props) {\n props.value = stringToMoment(props.value, this.valueFormat);\n }\n if ('defaultValue' in props) {\n props.defaultValue = stringToMoment(props.defaultValue, this.valueFormat);\n }\n if ('defaultPickerValue' in props) {\n props.defaultPickerValue = stringToMoment(props.defaultPickerValue, this.valueFormat);\n }\n },\n renderPicker: function renderPicker(locale, localeCode) {\n var _classNames2,\n _this2 = this;\n\n var h = this.$createElement;\n\n var props = getOptionProps(this);\n this.transformValue(props);\n var customizePrefixCls = props.prefixCls,\n customizeInputPrefixCls = props.inputPrefixCls,\n getCalendarContainer = props.getCalendarContainer,\n size = props.size,\n showTime = props.showTime,\n disabled = props.disabled,\n format = props.format;\n\n var mergedPickerType = showTime ? pickerType + 'Time' : pickerType;\n var mergedFormat = format || locale[LOCALE_FORMAT_MAPPING[mergedPickerType]] || DEFAULT_FORMAT[mergedPickerType];\n\n var _configProvider = this.configProvider,\n getPrefixCls = _configProvider.getPrefixCls,\n getContextPopupContainer = _configProvider.getPopupContainer;\n\n var getPopupContainer = getCalendarContainer || getContextPopupContainer;\n var prefixCls = getPrefixCls('calendar', customizePrefixCls);\n var inputPrefixCls = getPrefixCls('input', customizeInputPrefixCls);\n\n var pickerClass = classNames(prefixCls + '-picker', _defineProperty({}, prefixCls + '-picker-' + size, !!size));\n var pickerInputClass = classNames(prefixCls + '-picker-input', inputPrefixCls, (_classNames2 = {}, _defineProperty(_classNames2, inputPrefixCls + '-lg', size === 'large'), _defineProperty(_classNames2, inputPrefixCls + '-sm', size === 'small'), _defineProperty(_classNames2, inputPrefixCls + '-disabled', disabled), _classNames2));\n\n var timeFormat = showTime && showTime.format || 'HH:mm:ss';\n var vcTimePickerProps = _extends({}, generateShowHourMinuteSecond(timeFormat), {\n format: timeFormat,\n use12Hours: showTime && showTime.use12Hours\n });\n var columns = getColumns(vcTimePickerProps);\n var timePickerCls = prefixCls + '-time-picker-column-' + columns;\n var timePickerPanelProps = {\n props: _extends({}, vcTimePickerProps, showTime, {\n prefixCls: prefixCls + '-time-picker',\n placeholder: locale.timePickerLocale.placeholder,\n transitionName: 'slide-up'\n }),\n 'class': timePickerCls,\n on: {\n esc: function esc() {}\n }\n };\n var timePicker = showTime ? h(TimePickerPanel, timePickerPanelProps) : null;\n var pickerProps = {\n props: _extends({}, props, {\n getCalendarContainer: getPopupContainer,\n format: mergedFormat,\n pickerClass: pickerClass,\n pickerInputClass: pickerInputClass,\n locale: locale,\n localeCode: localeCode,\n timePicker: timePicker\n }),\n on: _extends({}, getListeners(this), {\n openChange: this.handleOpenChange,\n focus: this.handleFocus,\n blur: this.handleBlur,\n mouseenter: this.handleMouseEnter,\n mouseleave: this.handleMouseLeave,\n change: this.handleChange,\n ok: this.handleOk,\n calendarChange: this.handleCalendarChange\n }),\n ref: 'picker',\n scopedSlots: this.$scopedSlots || {}\n };\n return h(\n Picker,\n pickerProps,\n [this.$slots && Object.keys(this.$slots).map(function (key) {\n return h(\n 'template',\n { slot: key, key: key },\n [_this2.$slots[key]]\n );\n })]\n );\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n return h(LocaleReceiver, {\n attrs: {\n componentName: 'DatePicker',\n defaultLocale: this.getDefaultLocale\n },\n scopedSlots: { 'default': this.renderPicker }\n });\n }\n };\n}","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../../_util/vue-types';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { getOptionProps, getComponentFromProp, getListeners } from '../../../_util/props-util';\nimport { cloneElement } from '../../../_util/vnode';\nimport CalendarHeader from '../calendar/CalendarHeader';\nimport DateTable from '../date/DateTable';\nimport DateInput from '../date/DateInput';\nimport { getTimeConfig } from '../util/index';\nfunction noop() {}\nvar CalendarPart = {\n mixins: [BaseMixin],\n props: {\n prefixCls: PropTypes.string,\n value: PropTypes.any,\n hoverValue: PropTypes.any,\n selectedValue: PropTypes.any,\n direction: PropTypes.any,\n locale: PropTypes.any,\n showDateInput: PropTypes.bool,\n showTimePicker: PropTypes.bool,\n showWeekNumber: PropTypes.bool,\n format: PropTypes.any,\n placeholder: PropTypes.any,\n disabledDate: PropTypes.any,\n timePicker: PropTypes.any,\n disabledTime: PropTypes.any,\n disabledMonth: PropTypes.any,\n mode: PropTypes.any,\n // onInputSelect: PropTypes.func,\n timePickerDisabledTime: PropTypes.object,\n enableNext: PropTypes.any,\n enablePrev: PropTypes.any,\n clearIcon: PropTypes.any,\n dateRender: PropTypes.func,\n inputMode: PropTypes.string,\n inputReadOnly: PropTypes.bool\n },\n render: function render() {\n var h = arguments[0];\n var props = this.$props;\n var prefixCls = props.prefixCls,\n value = props.value,\n hoverValue = props.hoverValue,\n selectedValue = props.selectedValue,\n mode = props.mode,\n direction = props.direction,\n locale = props.locale,\n format = props.format,\n placeholder = props.placeholder,\n disabledDate = props.disabledDate,\n timePicker = props.timePicker,\n disabledTime = props.disabledTime,\n timePickerDisabledTime = props.timePickerDisabledTime,\n showTimePicker = props.showTimePicker,\n enablePrev = props.enablePrev,\n enableNext = props.enableNext,\n disabledMonth = props.disabledMonth,\n showDateInput = props.showDateInput,\n dateRender = props.dateRender,\n showWeekNumber = props.showWeekNumber,\n showClear = props.showClear,\n inputMode = props.inputMode,\n inputReadOnly = props.inputReadOnly;\n\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n\n var _getListeners = getListeners(this),\n _getListeners$inputCh = _getListeners.inputChange,\n inputChange = _getListeners$inputCh === undefined ? noop : _getListeners$inputCh,\n _getListeners$inputSe = _getListeners.inputSelect,\n inputSelect = _getListeners$inputSe === undefined ? noop : _getListeners$inputSe,\n _getListeners$valueCh = _getListeners.valueChange,\n valueChange = _getListeners$valueCh === undefined ? noop : _getListeners$valueCh,\n _getListeners$panelCh = _getListeners.panelChange,\n panelChange = _getListeners$panelCh === undefined ? noop : _getListeners$panelCh,\n _getListeners$select = _getListeners.select,\n select = _getListeners$select === undefined ? noop : _getListeners$select,\n _getListeners$dayHove = _getListeners.dayHover,\n dayHover = _getListeners$dayHove === undefined ? noop : _getListeners$dayHove;\n\n var shouldShowTimePicker = showTimePicker && timePicker;\n var disabledTimeConfig = shouldShowTimePicker && disabledTime ? getTimeConfig(selectedValue, disabledTime) : null;\n var rangeClassName = prefixCls + '-range';\n var newProps = {\n locale: locale,\n value: value,\n prefixCls: prefixCls,\n showTimePicker: showTimePicker\n };\n var index = direction === 'left' ? 0 : 1;\n var timePickerEle = null;\n if (shouldShowTimePicker) {\n var timePickerProps = getOptionProps(timePicker);\n timePickerEle = cloneElement(timePicker, {\n props: _extends({\n showHour: true,\n showMinute: true,\n showSecond: true\n }, timePickerProps, disabledTimeConfig, timePickerDisabledTime, {\n defaultOpenValue: value,\n value: selectedValue[index]\n }),\n on: {\n change: inputChange\n }\n });\n }\n\n var dateInputElement = showDateInput && h(DateInput, {\n attrs: {\n format: format,\n locale: locale,\n prefixCls: prefixCls,\n timePicker: timePicker,\n disabledDate: disabledDate,\n placeholder: placeholder,\n disabledTime: disabledTime,\n value: value,\n showClear: showClear || false,\n selectedValue: selectedValue[index],\n\n clearIcon: clearIcon,\n inputMode: inputMode,\n inputReadOnly: inputReadOnly\n },\n on: {\n 'change': inputChange,\n 'select': inputSelect\n }\n });\n var headerProps = {\n props: _extends({}, newProps, {\n mode: mode,\n enableNext: enableNext,\n enablePrev: enablePrev,\n disabledMonth: disabledMonth\n }),\n on: {\n valueChange: valueChange,\n panelChange: panelChange\n }\n };\n var tableProps = {\n props: _extends({}, newProps, {\n hoverValue: hoverValue,\n selectedValue: selectedValue,\n dateRender: dateRender,\n disabledDate: disabledDate,\n showWeekNumber: showWeekNumber\n }),\n on: {\n select: select,\n dayHover: dayHover\n }\n };\n return h(\n 'div',\n { 'class': rangeClassName + '-part ' + rangeClassName + '-' + direction },\n [dateInputElement, h(\n 'div',\n { style: { outline: 'none' } },\n [h(CalendarHeader, headerProps), showTimePicker ? h(\n 'div',\n { 'class': prefixCls + '-time-picker' },\n [h(\n 'div',\n { 'class': prefixCls + '-time-picker-panel' },\n [timePickerEle]\n )]\n ) : null, h(\n 'div',\n { 'class': prefixCls + '-body' },\n [h(DateTable, tableProps)]\n )]\n )]\n );\n }\n};\n\nexport default CalendarPart;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getOptionProps, hasProp, mergeProps, getComponentFromProp, getListeners } from '../../_util/props-util';\nimport moment from 'moment';\nimport KeyCode from '../../_util/KeyCode';\nimport CalendarPart from './range-calendar/CalendarPart';\nimport TodayButton from './calendar/TodayButton';\nimport OkButton from './calendar/OkButton';\nimport TimePickerButton from './calendar/TimePickerButton';\nimport CommonMixin from './mixin/CommonMixin';\nimport enUs from './locale/en_US';\nimport { syncTime, getTodayTime, isAllowedDate } from './util/';\nimport { goTime, goStartMonth, goEndMonth, includesTime } from './util/toTime';\n\nfunction noop() {}\n\nfunction isEmptyArray(arr) {\n return Array.isArray(arr) && (arr.length === 0 || arr.every(function (i) {\n return !i;\n }));\n}\n\nfunction isArraysEqual(a, b) {\n if (a === b) return true;\n if (a === null || typeof a === 'undefined' || b === null || typeof b === 'undefined') {\n return false;\n }\n if (a.length !== b.length) return false;\n\n for (var i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n}\n\nfunction getValueFromSelectedValue(selectedValue) {\n var _selectedValue = _slicedToArray(selectedValue, 2),\n start = _selectedValue[0],\n end = _selectedValue[1];\n\n if (end && (start === undefined || start === null)) {\n start = end.clone().subtract(1, 'month');\n }\n\n if (start && (end === undefined || end === null)) {\n end = start.clone().add(1, 'month');\n }\n return [start, end];\n}\n\nfunction normalizeAnchor(props, init) {\n var selectedValue = props.selectedValue || init && props.defaultSelectedValue;\n var value = props.value || init && props.defaultValue;\n var normalizedValue = value ? getValueFromSelectedValue(value) : getValueFromSelectedValue(selectedValue);\n return !isEmptyArray(normalizedValue) ? normalizedValue : init && [moment(), moment().add(1, 'months')];\n}\n\nfunction generateOptions(length, extraOptionGen) {\n var arr = extraOptionGen ? extraOptionGen().concat() : [];\n for (var value = 0; value < length; value++) {\n if (arr.indexOf(value) === -1) {\n arr.push(value);\n }\n }\n return arr;\n}\n\nfunction onInputSelect(direction, value, cause) {\n if (!value) {\n return;\n }\n var originalValue = this.sSelectedValue;\n var selectedValue = originalValue.concat();\n var index = direction === 'left' ? 0 : 1;\n selectedValue[index] = value;\n if (selectedValue[0] && this.compare(selectedValue[0], selectedValue[1]) > 0) {\n selectedValue[1 - index] = this.sShowTimePicker ? selectedValue[index] : undefined;\n }\n this.__emit('inputSelect', selectedValue);\n this.fireSelectValueChange(selectedValue, null, cause || { source: 'dateInput' });\n}\n\nvar RangeCalendar = {\n props: {\n locale: PropTypes.object.def(enUs),\n visible: PropTypes.bool.def(true),\n prefixCls: PropTypes.string.def('rc-calendar'),\n dateInputPlaceholder: PropTypes.any,\n seperator: PropTypes.string.def('~'),\n defaultValue: PropTypes.any,\n value: PropTypes.any,\n hoverValue: PropTypes.any,\n mode: PropTypes.arrayOf(PropTypes.oneOf(['time', 'date', 'month', 'year', 'decade'])),\n showDateInput: PropTypes.bool.def(true),\n timePicker: PropTypes.any,\n showOk: PropTypes.bool,\n showToday: PropTypes.bool.def(true),\n defaultSelectedValue: PropTypes.array.def([]),\n selectedValue: PropTypes.array,\n showClear: PropTypes.bool,\n showWeekNumber: PropTypes.bool,\n // locale: PropTypes.object,\n // onChange: PropTypes.func,\n // onSelect: PropTypes.func,\n // onValueChange: PropTypes.func,\n // onHoverChange: PropTypes.func,\n // onPanelChange: PropTypes.func,\n format: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string), PropTypes.func]),\n // onClear: PropTypes.func,\n type: PropTypes.any.def('both'),\n disabledDate: PropTypes.func,\n disabledTime: PropTypes.func.def(noop),\n renderFooter: PropTypes.func.def(function () {\n return null;\n }),\n renderSidebar: PropTypes.func.def(function () {\n return null;\n }),\n dateRender: PropTypes.func,\n clearIcon: PropTypes.any,\n inputReadOnly: PropTypes.bool\n },\n\n mixins: [BaseMixin, CommonMixin],\n\n data: function data() {\n var props = this.$props;\n var selectedValue = props.selectedValue || props.defaultSelectedValue;\n var value = normalizeAnchor(props, 1);\n return {\n sSelectedValue: selectedValue,\n prevSelectedValue: selectedValue,\n firstSelectedValue: null,\n sHoverValue: props.hoverValue || [],\n sValue: value,\n sShowTimePicker: false,\n sMode: props.mode || ['date', 'date'],\n sPanelTriggerSource: '' // Trigger by which picker panel: 'start' & 'end'\n };\n },\n\n watch: {\n value: function value() {\n var newState = {};\n newState.sValue = normalizeAnchor(this.$props, 0);\n this.setState(newState);\n },\n hoverValue: function hoverValue(val) {\n if (!isArraysEqual(this.sHoverValue, val)) {\n this.setState({ sHoverValue: val });\n }\n },\n selectedValue: function selectedValue(val) {\n var newState = {};\n newState.sSelectedValue = val;\n newState.prevSelectedValue = val;\n this.setState(newState);\n },\n mode: function mode(val) {\n if (!isArraysEqual(this.sMode, val)) {\n this.setState({ sMode: val });\n }\n }\n },\n\n methods: {\n onDatePanelEnter: function onDatePanelEnter() {\n if (this.hasSelectedValue()) {\n this.fireHoverValueChange(this.sSelectedValue.concat());\n }\n },\n onDatePanelLeave: function onDatePanelLeave() {\n if (this.hasSelectedValue()) {\n this.fireHoverValueChange([]);\n }\n },\n onSelect: function onSelect(value) {\n var type = this.type,\n sSelectedValue = this.sSelectedValue,\n prevSelectedValue = this.prevSelectedValue,\n firstSelectedValue = this.firstSelectedValue;\n\n var nextSelectedValue = void 0;\n if (type === 'both') {\n if (!firstSelectedValue) {\n syncTime(prevSelectedValue[0], value);\n nextSelectedValue = [value];\n } else if (this.compare(firstSelectedValue, value) < 0) {\n syncTime(prevSelectedValue[1], value);\n nextSelectedValue = [firstSelectedValue, value];\n } else {\n syncTime(prevSelectedValue[0], value);\n syncTime(prevSelectedValue[1], firstSelectedValue);\n nextSelectedValue = [value, firstSelectedValue];\n }\n } else if (type === 'start') {\n syncTime(prevSelectedValue[0], value);\n var endValue = sSelectedValue[1];\n nextSelectedValue = endValue && this.compare(endValue, value) > 0 ? [value, endValue] : [value];\n } else {\n // type === 'end'\n var startValue = sSelectedValue[0];\n if (startValue && this.compare(startValue, value) <= 0) {\n syncTime(prevSelectedValue[1], value);\n nextSelectedValue = [startValue, value];\n } else {\n syncTime(prevSelectedValue[0], value);\n nextSelectedValue = [value];\n }\n }\n\n this.fireSelectValueChange(nextSelectedValue);\n },\n onKeyDown: function onKeyDown(event) {\n var _this = this;\n\n if (event.target.nodeName.toLowerCase() === 'input') {\n return;\n }\n\n var keyCode = event.keyCode;\n\n var ctrlKey = event.ctrlKey || event.metaKey;\n\n var _$data = this.$data,\n selectedValue = _$data.sSelectedValue,\n hoverValue = _$data.sHoverValue,\n firstSelectedValue = _$data.firstSelectedValue,\n value = _$data.sValue;\n var disabledDate = this.$props.disabledDate;\n\n // Update last time of the picker\n\n var updateHoverPoint = function updateHoverPoint(func) {\n // Change hover to make focus in UI\n var currentHoverTime = void 0;\n var nextHoverTime = void 0;\n var nextHoverValue = void 0;\n\n if (!firstSelectedValue) {\n currentHoverTime = hoverValue[0] || selectedValue[0] || value[0] || moment();\n nextHoverTime = func(currentHoverTime);\n nextHoverValue = [nextHoverTime];\n _this.fireHoverValueChange(nextHoverValue);\n } else {\n if (hoverValue.length === 1) {\n currentHoverTime = hoverValue[0].clone();\n nextHoverTime = func(currentHoverTime);\n nextHoverValue = _this.onDayHover(nextHoverTime);\n } else {\n currentHoverTime = hoverValue[0].isSame(firstSelectedValue, 'day') ? hoverValue[1] : hoverValue[0];\n nextHoverTime = func(currentHoverTime);\n nextHoverValue = _this.onDayHover(nextHoverTime);\n }\n }\n\n // Find origin hover time on value index\n if (nextHoverValue.length >= 2) {\n var miss = nextHoverValue.some(function (ht) {\n return !includesTime(value, ht, 'month');\n });\n if (miss) {\n var newValue = nextHoverValue.slice().sort(function (t1, t2) {\n return t1.valueOf() - t2.valueOf();\n });\n if (newValue[0].isSame(newValue[1], 'month')) {\n newValue[1] = newValue[0].clone().add(1, 'month');\n }\n _this.fireValueChange(newValue);\n }\n } else if (nextHoverValue.length === 1) {\n // If only one value, let's keep the origin panel\n var oriValueIndex = value.findIndex(function (time) {\n return time.isSame(currentHoverTime, 'month');\n });\n if (oriValueIndex === -1) oriValueIndex = 0;\n\n if (value.every(function (time) {\n return !time.isSame(nextHoverTime, 'month');\n })) {\n var _newValue = value.slice();\n _newValue[oriValueIndex] = nextHoverTime.clone();\n _this.fireValueChange(_newValue);\n }\n }\n\n event.preventDefault();\n\n return nextHoverTime;\n };\n\n switch (keyCode) {\n case KeyCode.DOWN:\n updateHoverPoint(function (time) {\n return goTime(time, 1, 'weeks');\n });\n return;\n case KeyCode.UP:\n updateHoverPoint(function (time) {\n return goTime(time, -1, 'weeks');\n });\n return;\n case KeyCode.LEFT:\n if (ctrlKey) {\n updateHoverPoint(function (time) {\n return goTime(time, -1, 'years');\n });\n } else {\n updateHoverPoint(function (time) {\n return goTime(time, -1, 'days');\n });\n }\n return;\n case KeyCode.RIGHT:\n if (ctrlKey) {\n updateHoverPoint(function (time) {\n return goTime(time, 1, 'years');\n });\n } else {\n updateHoverPoint(function (time) {\n return goTime(time, 1, 'days');\n });\n }\n return;\n case KeyCode.HOME:\n updateHoverPoint(function (time) {\n return goStartMonth(time);\n });\n return;\n case KeyCode.END:\n updateHoverPoint(function (time) {\n return goEndMonth(time);\n });\n return;\n case KeyCode.PAGE_DOWN:\n updateHoverPoint(function (time) {\n return goTime(time, 1, 'month');\n });\n return;\n case KeyCode.PAGE_UP:\n updateHoverPoint(function (time) {\n return goTime(time, -1, 'month');\n });\n return;\n case KeyCode.ENTER:\n {\n var lastValue = void 0;\n if (hoverValue.length === 0) {\n lastValue = updateHoverPoint(function (time) {\n return time;\n });\n } else if (hoverValue.length === 1) {\n lastValue = hoverValue[0];\n } else {\n lastValue = hoverValue[0].isSame(firstSelectedValue, 'day') ? hoverValue[1] : hoverValue[0];\n }\n if (lastValue && (!disabledDate || !disabledDate(lastValue))) {\n this.onSelect(lastValue);\n }\n event.preventDefault();\n return;\n }\n default:\n this.__emit('keydown', event);\n }\n },\n onDayHover: function onDayHover(value) {\n var hoverValue = [];\n var sSelectedValue = this.sSelectedValue,\n firstSelectedValue = this.firstSelectedValue,\n type = this.type;\n\n if (type === 'start' && sSelectedValue[1]) {\n hoverValue = this.compare(value, sSelectedValue[1]) < 0 ? [value, sSelectedValue[1]] : [value];\n } else if (type === 'end' && sSelectedValue[0]) {\n hoverValue = this.compare(value, sSelectedValue[0]) > 0 ? [sSelectedValue[0], value] : [];\n } else {\n if (!firstSelectedValue) {\n if (this.sHoverValue.length) {\n this.setState({ sHoverValue: [] });\n }\n return hoverValue;\n }\n hoverValue = this.compare(value, firstSelectedValue) < 0 ? [value, firstSelectedValue] : [firstSelectedValue, value];\n }\n this.fireHoverValueChange(hoverValue);\n return hoverValue;\n },\n onToday: function onToday() {\n var startValue = getTodayTime(this.sValue[0]);\n var endValue = startValue.clone().add(1, 'months');\n this.setState({ sValue: [startValue, endValue] });\n },\n onOpenTimePicker: function onOpenTimePicker() {\n this.setState({\n sShowTimePicker: true\n });\n },\n onCloseTimePicker: function onCloseTimePicker() {\n this.setState({\n sShowTimePicker: false\n });\n },\n onOk: function onOk() {\n var sSelectedValue = this.sSelectedValue;\n\n if (this.isAllowedDateAndTime(sSelectedValue)) {\n this.__emit('ok', sSelectedValue);\n }\n },\n onStartInputChange: function onStartInputChange() {\n for (var _len = arguments.length, oargs = Array(_len), _key = 0; _key < _len; _key++) {\n oargs[_key] = arguments[_key];\n }\n\n var args = ['left'].concat(oargs);\n return onInputSelect.apply(this, args);\n },\n onEndInputChange: function onEndInputChange() {\n for (var _len2 = arguments.length, oargs = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n oargs[_key2] = arguments[_key2];\n }\n\n var args = ['right'].concat(oargs);\n return onInputSelect.apply(this, args);\n },\n onStartInputSelect: function onStartInputSelect(value) {\n var args = ['left', value, { source: 'dateInputSelect' }];\n return onInputSelect.apply(this, args);\n },\n onEndInputSelect: function onEndInputSelect(value) {\n var args = ['right', value, { source: 'dateInputSelect' }];\n return onInputSelect.apply(this, args);\n },\n onStartValueChange: function onStartValueChange(leftValue) {\n var value = [].concat(_toConsumableArray(this.sValue));\n value[0] = leftValue;\n return this.fireValueChange(value);\n },\n onEndValueChange: function onEndValueChange(rightValue) {\n var value = [].concat(_toConsumableArray(this.sValue));\n value[1] = rightValue;\n return this.fireValueChange(value);\n },\n onStartPanelChange: function onStartPanelChange(value, mode) {\n var sMode = this.sMode,\n sValue = this.sValue;\n\n var newMode = [mode, sMode[1]];\n var newValue = [value || sValue[0], sValue[1]];\n this.__emit('panelChange', newValue, newMode);\n var newState = {\n sPanelTriggerSource: 'start'\n };\n if (!hasProp(this, 'mode')) {\n newState.sMode = newMode;\n }\n this.setState(newState);\n },\n onEndPanelChange: function onEndPanelChange(value, mode) {\n var sMode = this.sMode,\n sValue = this.sValue;\n\n var newMode = [sMode[0], mode];\n var newValue = [sValue[0], value || sValue[1]];\n this.__emit('panelChange', newValue, newMode);\n var newState = {\n sPanelTriggerSource: 'end'\n };\n if (!hasProp(this, 'mode')) {\n newState.sMode = newMode;\n }\n this.setState(newState);\n },\n getStartValue: function getStartValue() {\n var _$data2 = this.$data,\n selectedValue = _$data2.sSelectedValue,\n showTimePicker = _$data2.sShowTimePicker,\n value = _$data2.sValue,\n mode = _$data2.sMode,\n panelTriggerSource = _$data2.sPanelTriggerSource;\n\n var startValue = value[0];\n // keep selectedTime when select date\n if (selectedValue[0] && this.$props.timePicker) {\n startValue = startValue.clone();\n syncTime(selectedValue[0], startValue);\n }\n if (showTimePicker && selectedValue[0]) {\n startValue = selectedValue[0];\n }\n\n // Adjust month if date not align\n if (panelTriggerSource === 'end' && mode[0] === 'date' && mode[1] === 'date' && startValue.isSame(value[1], 'month')) {\n startValue = startValue.clone().subtract(1, 'month');\n }\n\n return startValue;\n },\n getEndValue: function getEndValue() {\n var _$data3 = this.$data,\n selectedValue = _$data3.sSelectedValue,\n showTimePicker = _$data3.sShowTimePicker,\n value = _$data3.sValue,\n mode = _$data3.sMode,\n panelTriggerSource = _$data3.sPanelTriggerSource;\n\n var endValue = value[1] ? value[1].clone() : value[0].clone().add(1, 'month');\n // keep selectedTime when select date\n if (selectedValue[1] && this.$props.timePicker) {\n syncTime(selectedValue[1], endValue);\n }\n if (showTimePicker) {\n endValue = selectedValue[1] ? selectedValue[1] : this.getStartValue();\n }\n\n // Adjust month if date not align\n if (!showTimePicker && panelTriggerSource !== 'end' && mode[0] === 'date' && mode[1] === 'date' && endValue.isSame(value[0], 'month')) {\n endValue = endValue.clone().add(1, 'month');\n }\n\n return endValue;\n },\n\n // get disabled hours for second picker\n getEndDisableTime: function getEndDisableTime() {\n var sSelectedValue = this.sSelectedValue,\n sValue = this.sValue,\n disabledTime = this.disabledTime;\n\n var userSettingDisabledTime = disabledTime(sSelectedValue, 'end') || {};\n var startValue = sSelectedValue && sSelectedValue[0] || sValue[0].clone();\n // if startTime and endTime is same day..\n // the second time picker will not able to pick time before first time picker\n if (!sSelectedValue[1] || startValue.isSame(sSelectedValue[1], 'day')) {\n var hours = startValue.hour();\n var minutes = startValue.minute();\n var second = startValue.second();\n var _disabledHours = userSettingDisabledTime.disabledHours,\n _disabledMinutes = userSettingDisabledTime.disabledMinutes,\n _disabledSeconds = userSettingDisabledTime.disabledSeconds;\n\n var oldDisabledMinutes = _disabledMinutes ? _disabledMinutes() : [];\n var olddisabledSeconds = _disabledSeconds ? _disabledSeconds() : [];\n _disabledHours = generateOptions(hours, _disabledHours);\n _disabledMinutes = generateOptions(minutes, _disabledMinutes);\n _disabledSeconds = generateOptions(second, _disabledSeconds);\n return {\n disabledHours: function disabledHours() {\n return _disabledHours;\n },\n disabledMinutes: function disabledMinutes(hour) {\n if (hour === hours) {\n return _disabledMinutes;\n }\n return oldDisabledMinutes;\n },\n disabledSeconds: function disabledSeconds(hour, minute) {\n if (hour === hours && minute === minutes) {\n return _disabledSeconds;\n }\n return olddisabledSeconds;\n }\n };\n }\n return userSettingDisabledTime;\n },\n isAllowedDateAndTime: function isAllowedDateAndTime(selectedValue) {\n return isAllowedDate(selectedValue[0], this.disabledDate, this.disabledStartTime) && isAllowedDate(selectedValue[1], this.disabledDate, this.disabledEndTime);\n },\n isMonthYearPanelShow: function isMonthYearPanelShow(mode) {\n return ['month', 'year', 'decade'].indexOf(mode) > -1;\n },\n hasSelectedValue: function hasSelectedValue() {\n var sSelectedValue = this.sSelectedValue;\n\n return !!sSelectedValue[1] && !!sSelectedValue[0];\n },\n compare: function compare(v1, v2) {\n if (this.timePicker) {\n return v1.diff(v2);\n }\n return v1.diff(v2, 'days');\n },\n fireSelectValueChange: function fireSelectValueChange(selectedValue, direct, cause) {\n var timePicker = this.timePicker,\n prevSelectedValue = this.prevSelectedValue;\n\n if (timePicker) {\n var timePickerProps = getOptionProps(timePicker);\n if (timePickerProps.defaultValue) {\n var timePickerDefaultValue = timePickerProps.defaultValue;\n if (!prevSelectedValue[0] && selectedValue[0]) {\n syncTime(timePickerDefaultValue[0], selectedValue[0]);\n }\n if (!prevSelectedValue[1] && selectedValue[1]) {\n syncTime(timePickerDefaultValue[1], selectedValue[1]);\n }\n }\n }\n // 尚未选择过时间,直接输入的话\n if (!this.sSelectedValue[0] || !this.sSelectedValue[1]) {\n var startValue = selectedValue[0] || moment();\n var endValue = selectedValue[1] || startValue.clone().add(1, 'months');\n this.setState({\n sSelectedValue: selectedValue,\n sValue: selectedValue && selectedValue.length === 2 ? getValueFromSelectedValue([startValue, endValue]) : this.sValue\n });\n }\n\n if (selectedValue[0] && !selectedValue[1]) {\n this.setState({ firstSelectedValue: selectedValue[0] });\n this.fireHoverValueChange(selectedValue.concat());\n }\n this.__emit('change', selectedValue);\n if (direct || selectedValue[0] && selectedValue[1]) {\n this.setState({\n prevSelectedValue: selectedValue,\n firstSelectedValue: null\n });\n this.fireHoverValueChange([]);\n this.__emit('select', selectedValue, cause);\n }\n if (!hasProp(this, 'selectedValue')) {\n this.setState({\n sSelectedValue: selectedValue\n });\n }\n },\n fireValueChange: function fireValueChange(value) {\n if (!hasProp(this, 'value')) {\n this.setState({\n sValue: value\n });\n }\n this.__emit('valueChange', value);\n },\n fireHoverValueChange: function fireHoverValueChange(hoverValue) {\n if (!hasProp(this, 'hoverValue')) {\n this.setState({ sHoverValue: hoverValue });\n }\n this.__emit('hoverChange', hoverValue);\n },\n clear: function clear() {\n this.fireSelectValueChange([], true);\n this.__emit('clear');\n },\n disabledStartTime: function disabledStartTime(time) {\n return this.disabledTime(time, 'start');\n },\n disabledEndTime: function disabledEndTime(time) {\n return this.disabledTime(time, 'end');\n },\n disabledStartMonth: function disabledStartMonth(month) {\n var sValue = this.sValue;\n\n return month.isAfter(sValue[1], 'month');\n },\n disabledEndMonth: function disabledEndMonth(month) {\n var sValue = this.sValue;\n\n return month.isBefore(sValue[0], 'month');\n }\n },\n\n render: function render() {\n var _className, _cls;\n\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var prefixCls = props.prefixCls,\n dateInputPlaceholder = props.dateInputPlaceholder,\n timePicker = props.timePicker,\n showOk = props.showOk,\n locale = props.locale,\n showClear = props.showClear,\n showToday = props.showToday,\n type = props.type,\n seperator = props.seperator;\n\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n var sHoverValue = this.sHoverValue,\n sSelectedValue = this.sSelectedValue,\n mode = this.sMode,\n sShowTimePicker = this.sShowTimePicker,\n sValue = this.sValue;\n\n var className = (_className = {}, _defineProperty(_className, prefixCls, 1), _defineProperty(_className, prefixCls + '-hidden', !props.visible), _defineProperty(_className, prefixCls + '-range', 1), _defineProperty(_className, prefixCls + '-show-time-picker', sShowTimePicker), _defineProperty(_className, prefixCls + '-week-number', props.showWeekNumber), _className);\n var baseProps = {\n props: props,\n on: getListeners(this)\n };\n var newProps = {\n props: {\n selectedValue: sSelectedValue\n },\n on: {\n select: this.onSelect,\n dayHover: type === 'start' && sSelectedValue[1] || type === 'end' && sSelectedValue[0] || !!sHoverValue.length ? this.onDayHover : noop\n }\n };\n\n var placeholder1 = void 0;\n var placeholder2 = void 0;\n\n if (dateInputPlaceholder) {\n if (Array.isArray(dateInputPlaceholder)) {\n var _dateInputPlaceholder = _slicedToArray(dateInputPlaceholder, 2);\n\n placeholder1 = _dateInputPlaceholder[0];\n placeholder2 = _dateInputPlaceholder[1];\n } else {\n placeholder1 = placeholder2 = dateInputPlaceholder;\n }\n }\n var showOkButton = showOk === true || showOk !== false && !!timePicker;\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls + '-footer', true), _defineProperty(_cls, prefixCls + '-range-bottom', true), _defineProperty(_cls, prefixCls + '-footer-show-ok', showOkButton), _cls);\n\n var startValue = this.getStartValue();\n var endValue = this.getEndValue();\n var todayTime = getTodayTime(startValue);\n var thisMonth = todayTime.month();\n var thisYear = todayTime.year();\n var isTodayInView = startValue.year() === thisYear && startValue.month() === thisMonth || endValue.year() === thisYear && endValue.month() === thisMonth;\n var nextMonthOfStart = startValue.clone().add(1, 'months');\n var isClosestMonths = nextMonthOfStart.year() === endValue.year() && nextMonthOfStart.month() === endValue.month();\n var leftPartProps = mergeProps(baseProps, newProps, {\n props: {\n hoverValue: sHoverValue,\n direction: 'left',\n disabledTime: this.disabledStartTime,\n disabledMonth: this.disabledStartMonth,\n format: this.getFormat(),\n value: startValue,\n mode: mode[0],\n placeholder: placeholder1,\n showDateInput: this.showDateInput,\n timePicker: timePicker,\n showTimePicker: sShowTimePicker || mode[0] === 'time',\n enablePrev: true,\n enableNext: !isClosestMonths || this.isMonthYearPanelShow(mode[1]),\n clearIcon: clearIcon\n },\n on: {\n inputChange: this.onStartInputChange,\n inputSelect: this.onStartInputSelect,\n valueChange: this.onStartValueChange,\n panelChange: this.onStartPanelChange\n }\n });\n var rightPartProps = mergeProps(baseProps, newProps, {\n props: {\n hoverValue: sHoverValue,\n direction: 'right',\n format: this.getFormat(),\n timePickerDisabledTime: this.getEndDisableTime(),\n placeholder: placeholder2,\n value: endValue,\n mode: mode[1],\n showDateInput: this.showDateInput,\n timePicker: timePicker,\n showTimePicker: sShowTimePicker || mode[1] === 'time',\n disabledTime: this.disabledEndTime,\n disabledMonth: this.disabledEndMonth,\n enablePrev: !isClosestMonths || this.isMonthYearPanelShow(mode[0]),\n enableNext: true,\n clearIcon: clearIcon\n },\n on: {\n inputChange: this.onEndInputChange,\n inputSelect: this.onEndInputSelect,\n valueChange: this.onEndValueChange,\n panelChange: this.onEndPanelChange\n }\n });\n var TodayButtonNode = null;\n if (showToday) {\n var todayButtonProps = mergeProps(baseProps, {\n props: {\n disabled: isTodayInView,\n value: sValue[0],\n text: locale.backToToday\n },\n on: {\n today: this.onToday\n }\n });\n TodayButtonNode = h(TodayButton, _mergeJSXProps([{ key: 'todayButton' }, todayButtonProps]));\n }\n\n var TimePickerButtonNode = null;\n if (props.timePicker) {\n var timePickerButtonProps = mergeProps(baseProps, {\n props: {\n showTimePicker: sShowTimePicker || mode[0] === 'time' && mode[1] === 'time',\n timePickerDisabled: !this.hasSelectedValue() || sHoverValue.length\n },\n on: {\n openTimePicker: this.onOpenTimePicker,\n closeTimePicker: this.onCloseTimePicker\n }\n });\n TimePickerButtonNode = h(TimePickerButton, _mergeJSXProps([{ key: 'timePickerButton' }, timePickerButtonProps]));\n }\n\n var OkButtonNode = null;\n if (showOkButton) {\n var okButtonProps = mergeProps(baseProps, {\n props: {\n okDisabled: !this.isAllowedDateAndTime(sSelectedValue) || !this.hasSelectedValue() || sHoverValue.length\n },\n on: {\n ok: this.onOk\n }\n });\n OkButtonNode = h(OkButton, _mergeJSXProps([{ key: 'okButtonNode' }, okButtonProps]));\n }\n var extraFooter = this.renderFooter(mode);\n return h(\n 'div',\n { ref: 'rootInstance', 'class': className, attrs: { tabIndex: '0' },\n on: {\n 'keydown': this.onKeyDown\n }\n },\n [props.renderSidebar(), h(\n 'div',\n { 'class': prefixCls + '-panel' },\n [showClear && sSelectedValue[0] && sSelectedValue[1] ? h(\n 'a',\n {\n attrs: { role: 'button', title: locale.clear },\n on: {\n 'click': this.clear\n }\n },\n [clearIcon || h('span', { 'class': prefixCls + '-clear-btn' })]\n ) : null, h(\n 'div',\n {\n 'class': prefixCls + '-date-panel',\n on: {\n 'mouseleave': type !== 'both' ? this.onDatePanelLeave : noop,\n 'mouseenter': type !== 'both' ? this.onDatePanelEnter : noop\n }\n },\n [h(CalendarPart, leftPartProps), h(\n 'span',\n { 'class': prefixCls + '-range-middle' },\n [seperator]\n ), h(CalendarPart, rightPartProps)]\n ), h(\n 'div',\n { 'class': cls },\n [showToday || props.timePicker || showOkButton || extraFooter ? h(\n 'div',\n { 'class': prefixCls + '-footer-btn' },\n [extraFooter, TodayButtonNode, TimePickerButtonNode, OkButtonNode]\n ) : null]\n )]\n )]\n );\n }\n};\n\nexport default RangeCalendar;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport Icon from '../icon';\nimport getTransitionProps from '../_util/getTransitionProps';\nimport omit from 'omit.js';\nimport Wave from '../_util/wave';\nimport { hasProp, getListeners, getOptionProps } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport warning from '../_util/warning';\n\nvar PresetColorTypes = ['pink', 'red', 'yellow', 'orange', 'cyan', 'green', 'blue', 'purple', 'geekblue', 'magenta', 'volcano', 'gold', 'lime'];\nvar PresetColorRegex = new RegExp('^(' + PresetColorTypes.join('|') + ')(-inverse)?$');\n\nexport default {\n name: 'ATag',\n mixins: [BaseMixin],\n model: {\n prop: 'visible',\n event: 'close.visible'\n },\n props: {\n prefixCls: PropTypes.string,\n color: PropTypes.string,\n closable: PropTypes.bool.def(false),\n visible: PropTypes.bool,\n afterClose: PropTypes.func\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var _visible = true;\n var props = getOptionProps(this);\n if ('visible' in props) {\n _visible = this.visible;\n }\n warning(!('afterClose' in props), 'Tag', \"'afterClose' will be deprecated, please use 'close' event, we will remove this in the next version.\");\n return {\n _visible: _visible\n };\n },\n\n watch: {\n visible: function visible(val) {\n this.setState({\n _visible: val\n });\n }\n },\n methods: {\n setVisible: function setVisible(visible, e) {\n this.$emit('close', e);\n this.$emit('close.visible', false);\n var afterClose = this.afterClose;\n if (afterClose) {\n // next version remove.\n afterClose();\n }\n if (e.defaultPrevented) {\n return;\n }\n if (!hasProp(this, 'visible')) {\n this.setState({ _visible: visible });\n }\n },\n handleIconClick: function handleIconClick(e) {\n e.stopPropagation();\n this.setVisible(false, e);\n },\n isPresetColor: function isPresetColor() {\n var color = this.$props.color;\n\n if (!color) {\n return false;\n }\n return PresetColorRegex.test(color);\n },\n getTagStyle: function getTagStyle() {\n var color = this.$props.color;\n\n var isPresetColor = this.isPresetColor();\n return {\n backgroundColor: color && !isPresetColor ? color : undefined\n };\n },\n getTagClassName: function getTagClassName(prefixCls) {\n var _ref;\n\n var color = this.$props.color;\n\n var isPresetColor = this.isPresetColor();\n return _ref = {}, _defineProperty(_ref, prefixCls, true), _defineProperty(_ref, prefixCls + '-' + color, isPresetColor), _defineProperty(_ref, prefixCls + '-has-color', color && !isPresetColor), _ref;\n },\n renderCloseIcon: function renderCloseIcon() {\n var h = this.$createElement;\n var closable = this.$props.closable;\n\n return closable ? h(Icon, {\n attrs: { type: 'close' },\n on: {\n 'click': this.handleIconClick\n }\n }) : null;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.$props.prefixCls;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('tag', customizePrefixCls);\n var visible = this.$data._visible;\n\n var tag = h(\n 'span',\n _mergeJSXProps([{\n directives: [{\n name: 'show',\n value: visible\n }]\n }, { on: omit(getListeners(this), ['close']) }, {\n 'class': this.getTagClassName(prefixCls),\n style: this.getTagStyle()\n }]),\n [this.$slots['default'], this.renderCloseIcon()]\n );\n var transitionProps = getTransitionProps(prefixCls + '-zoom', {\n appear: false\n });\n return h(Wave, [h(\n 'transition',\n transitionProps,\n [tag]\n )]);\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport default {\n name: 'ACheckableTag',\n model: {\n prop: 'checked'\n },\n props: {\n prefixCls: PropTypes.string,\n checked: Boolean\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n computed: {\n classes: function classes() {\n var _ref;\n\n var checked = this.checked,\n customizePrefixCls = this.prefixCls;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('tag', customizePrefixCls);\n return _ref = {}, _defineProperty(_ref, '' + prefixCls, true), _defineProperty(_ref, prefixCls + '-checkable', true), _defineProperty(_ref, prefixCls + '-checkable-checked', checked), _ref;\n }\n },\n methods: {\n handleClick: function handleClick() {\n var checked = this.checked;\n\n this.$emit('input', !checked);\n this.$emit('change', !checked);\n }\n },\n render: function render() {\n var h = arguments[0];\n var classes = this.classes,\n handleClick = this.handleClick,\n $slots = this.$slots;\n\n return h(\n 'div',\n { 'class': classes, on: {\n 'click': handleClick\n }\n },\n [$slots['default']]\n );\n }\n};","import Tag from './Tag';\nimport CheckableTag from './CheckableTag';\nimport Base from '../base';\n\nTag.CheckableTag = CheckableTag;\n\n/* istanbul ignore next */\nTag.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Tag.name, Tag);\n Vue.component(Tag.CheckableTag.name, Tag.CheckableTag);\n};\n\nexport default Tag;","import _extends from 'babel-runtime/helpers/extends';\n// import { TimePickerProps } from '../time-picker'\nimport PropTypes from '../_util/vue-types';\nimport { TimesType, TimeType } from '../_util/moment-util';\n\nexport var PickerProps = function PickerProps() {\n return {\n name: PropTypes.string,\n transitionName: PropTypes.string,\n prefixCls: PropTypes.string,\n inputPrefixCls: PropTypes.string,\n format: PropTypes.oneOfType([PropTypes.string, PropTypes.array, PropTypes.func]),\n disabled: PropTypes.bool,\n allowClear: PropTypes.bool,\n suffixIcon: PropTypes.any,\n popupStyle: PropTypes.object,\n dropdownClassName: PropTypes.string,\n locale: PropTypes.any,\n localeCode: PropTypes.string,\n size: PropTypes.oneOf(['large', 'small', 'default']),\n getCalendarContainer: PropTypes.func,\n open: PropTypes.bool,\n // onOpenChange: PropTypes.(status: bool) => void,\n disabledDate: PropTypes.func,\n showToday: PropTypes.bool,\n dateRender: PropTypes.any, // (current: moment.Moment, today: moment.Moment) => React.ReactNode,\n pickerClass: PropTypes.string,\n pickerInputClass: PropTypes.string,\n timePicker: PropTypes.any,\n autoFocus: PropTypes.bool,\n tagPrefixCls: PropTypes.string,\n tabIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n align: PropTypes.object.def(function () {\n return {};\n }),\n inputReadOnly: PropTypes.bool,\n valueFormat: PropTypes.string\n };\n};\n\nexport var SinglePickerProps = function SinglePickerProps() {\n return {\n value: TimeType,\n defaultValue: TimeType,\n defaultPickerValue: TimeType,\n renderExtraFooter: PropTypes.any,\n placeholder: PropTypes.string\n // onChange?: (date: moment.Moment, dateString: string) => void;\n };\n};\n\nexport var DatePickerProps = function DatePickerProps() {\n return _extends({}, PickerProps(), SinglePickerProps(), {\n showTime: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n open: PropTypes.bool,\n disabledTime: PropTypes.func,\n // onOpenChange?: (status: bool) => void;\n // onOk?: (selectedTime: moment.Moment) => void;\n mode: PropTypes.oneOf(['time', 'date', 'month', 'year', 'decade'])\n });\n};\n\nexport var MonthPickerProps = function MonthPickerProps() {\n return _extends({}, PickerProps(), SinglePickerProps(), {\n placeholder: PropTypes.string,\n monthCellContentRender: PropTypes.func\n });\n};\n// export const RangePickerPresetRange = PropTypes.oneOfType([TimesType, PropTypes.func])\n\nexport var RangePickerProps = function RangePickerProps() {\n return _extends({}, PickerProps(), {\n tagPrefixCls: PropTypes.string,\n value: TimesType,\n defaultValue: TimesType,\n defaultPickerValue: TimesType,\n timePicker: PropTypes.any,\n // onChange?: (dates: TimesType, dateStrings: [string, string]) => void;\n // onCalendarChange?: (dates: TimesType, dateStrings: [string, string]) => void;\n // onOk?: (selectedTime: moment.Moment) => void;\n showTime: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n ranges: PropTypes.object,\n placeholder: PropTypes.arrayOf(String),\n mode: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(String)]),\n separator: PropTypes.any,\n disabledTime: PropTypes.func,\n showToday: PropTypes.bool,\n renderExtraFooter: PropTypes.any\n // onPanelChange?: (value?: TimesType, mode?: string | string[]) => void;\n });\n};\n\nexport var WeekPickerProps = function WeekPickerProps() {\n return _extends({}, PickerProps(), SinglePickerProps(), {\n placeholder: PropTypes.string\n });\n};\n\n// export interface DatePickerDecorator extends React.ClassicComponentClass {\n// RangePicker: React.ClassicComponentClass;\n// MonthPicker: React.ClassicComponentClass;\n// WeekPicker: React.ClassicComponentClass;\n// }","import Icon from '../icon';\nimport { isValidElement } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\n\nexport default {\n functional: true,\n render: function render(h, context) {\n var props = context.props;\n var suffixIcon = props.suffixIcon,\n prefixCls = props.prefixCls;\n\n return (suffixIcon && isValidElement(suffixIcon) ? cloneElement(suffixIcon, {\n 'class': prefixCls + '-picker-icon'\n }) : h(\n 'span',\n { 'class': prefixCls + '-picker-icon' },\n [suffixIcon]\n )) || h(Icon, {\n attrs: { type: 'calendar' },\n 'class': prefixCls + '-picker-icon' });\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport * as moment from 'moment';\nimport RangeCalendar from '../vc-calendar/src/RangeCalendar';\nimport VcDatePicker from '../vc-calendar/src/Picker';\nimport classNames from 'classnames';\nimport shallowequal from 'shallowequal';\nimport Icon from '../icon';\nimport Tag from '../tag';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport interopDefault from '../_util/interopDefault';\nimport { RangePickerProps } from './interface';\nimport { hasProp, getOptionProps, initDefaultProps, mergeProps, getComponentFromProp, getListeners } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { formatDate } from './utils';\nimport InputIcon from './InputIcon';\n\nfunction noop() {}\nfunction getShowDateFromValue(value, mode) {\n var _value = _slicedToArray(value, 2),\n start = _value[0],\n end = _value[1];\n // value could be an empty array, then we should not reset showDate\n\n\n if (!start && !end) {\n return;\n }\n if (mode && mode[0] === 'month') {\n return [start, end];\n }\n var newEnd = end && end.isSame(start, 'month') ? end.clone().add(1, 'month') : end;\n return [start, newEnd];\n}\n\nfunction pickerValueAdapter(value) {\n if (!value) {\n return;\n }\n if (Array.isArray(value)) {\n return value;\n }\n return [value, value.clone().add(1, 'month')];\n}\n\nfunction isEmptyArray(arr) {\n if (Array.isArray(arr)) {\n return arr.length === 0 || arr.every(function (i) {\n return !i;\n });\n }\n return false;\n}\n\nfunction fixLocale(value, localeCode) {\n if (!localeCode) {\n return;\n }\n if (!value || value.length === 0) {\n return;\n }\n\n var _value2 = _slicedToArray(value, 2),\n start = _value2[0],\n end = _value2[1];\n\n if (start) {\n start.locale(localeCode);\n }\n if (end) {\n end.locale(localeCode);\n }\n}\n\nexport default {\n name: 'ARangePicker',\n mixins: [BaseMixin],\n model: {\n prop: 'value',\n event: 'change'\n },\n props: initDefaultProps(RangePickerProps(), {\n allowClear: true,\n showToday: false,\n separator: '~'\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var value = this.value || this.defaultValue || [];\n\n var _value3 = _slicedToArray(value, 2),\n start = _value3[0],\n end = _value3[1];\n\n if (start && !interopDefault(moment).isMoment(start) || end && !interopDefault(moment).isMoment(end)) {\n throw new Error('The value/defaultValue of RangePicker must be a moment object array after `antd@2.0`, ' + 'see: https://u.ant.design/date-picker-value');\n }\n var pickerValue = !value || isEmptyArray(value) ? this.defaultPickerValue : value;\n return {\n sValue: value,\n sShowDate: pickerValueAdapter(pickerValue || interopDefault(moment)()),\n sOpen: this.open,\n sHoverValue: []\n };\n },\n\n watch: {\n value: function value(val) {\n var value = val || [];\n var state = { sValue: value };\n if (!shallowequal(val, this.sValue)) {\n state = _extends({}, state, {\n sShowDate: getShowDateFromValue(value, this.mode) || this.sShowDate\n });\n }\n this.setState(state);\n },\n open: function open(val) {\n var state = { sOpen: val };\n this.setState(state);\n },\n sOpen: function sOpen(val, oldVal) {\n var _this = this;\n\n this.$nextTick(function () {\n if (!hasProp(_this, 'open') && oldVal && !val) {\n _this.focus();\n }\n });\n }\n },\n methods: {\n setValue: function setValue(value, hidePanel) {\n this.handleChange(value);\n if ((hidePanel || !this.showTime) && !hasProp(this, 'open')) {\n this.setState({ sOpen: false });\n }\n },\n clearSelection: function clearSelection(e) {\n e.preventDefault();\n e.stopPropagation();\n this.setState({ sValue: [] });\n this.handleChange([]);\n },\n clearHoverValue: function clearHoverValue() {\n this.setState({ sHoverValue: [] });\n },\n handleChange: function handleChange(value) {\n if (!hasProp(this, 'value')) {\n this.setState(function (_ref) {\n var sShowDate = _ref.sShowDate;\n return {\n sValue: value,\n sShowDate: getShowDateFromValue(value) || sShowDate\n };\n });\n }\n if (value[0] && value[1] && value[0].diff(value[1]) > 0) {\n value[1] = undefined;\n }\n\n var _value4 = _slicedToArray(value, 2),\n start = _value4[0],\n end = _value4[1];\n\n this.$emit('change', value, [formatDate(start, this.format), formatDate(end, this.format)]);\n },\n handleOpenChange: function handleOpenChange(open) {\n if (!hasProp(this, 'open')) {\n this.setState({ sOpen: open });\n }\n\n if (open === false) {\n this.clearHoverValue();\n }\n this.$emit('openChange', open);\n },\n handleShowDateChange: function handleShowDateChange(showDate) {\n this.setState({ sShowDate: showDate });\n },\n handleHoverChange: function handleHoverChange(hoverValue) {\n this.setState({ sHoverValue: hoverValue });\n },\n handleRangeMouseLeave: function handleRangeMouseLeave() {\n if (this.sOpen) {\n this.clearHoverValue();\n }\n },\n handleCalendarInputSelect: function handleCalendarInputSelect(value) {\n var _value5 = _slicedToArray(value, 1),\n start = _value5[0];\n\n if (!start) {\n return;\n }\n this.setState(function (_ref2) {\n var sShowDate = _ref2.sShowDate;\n return {\n sValue: value,\n sShowDate: getShowDateFromValue(value) || sShowDate\n };\n });\n },\n handleRangeClick: function handleRangeClick(value) {\n if (typeof value === 'function') {\n value = value();\n }\n\n this.setValue(value, true);\n this.$emit('ok', value);\n this.$emit('openChange', false);\n },\n onMouseEnter: function onMouseEnter(e) {\n this.$emit('mouseenter', e);\n },\n onMouseLeave: function onMouseLeave(e) {\n this.$emit('mouseleave', e);\n },\n focus: function focus() {\n this.$refs.picker.focus();\n },\n blur: function blur() {\n this.$refs.picker.blur();\n },\n renderFooter: function renderFooter() {\n var _this2 = this;\n\n var h = this.$createElement;\n var ranges = this.ranges,\n $scopedSlots = this.$scopedSlots,\n $slots = this.$slots;\n var prefixCls = this._prefixCls,\n tagPrefixCls = this._tagPrefixCls;\n\n var renderExtraFooter = this.renderExtraFooter || $scopedSlots.renderExtraFooter || $slots.renderExtraFooter;\n if (!ranges && !renderExtraFooter) {\n return null;\n }\n var customFooter = renderExtraFooter ? h(\n 'div',\n { 'class': prefixCls + '-footer-extra', key: 'extra' },\n [typeof renderExtraFooter === 'function' ? renderExtraFooter() : renderExtraFooter]\n ) : null;\n var operations = ranges && Object.keys(ranges).map(function (range) {\n var value = ranges[range];\n var hoverValue = typeof value === 'function' ? value.call(_this2) : value;\n return h(\n Tag,\n {\n key: range,\n attrs: { prefixCls: tagPrefixCls,\n color: 'blue'\n },\n on: {\n 'click': function click() {\n return _this2.handleRangeClick(value);\n },\n 'mouseenter': function mouseenter() {\n return _this2.setState({ sHoverValue: hoverValue });\n },\n 'mouseleave': _this2.handleRangeMouseLeave\n }\n },\n [range]\n );\n });\n var rangeNode = operations && operations.length > 0 ? h(\n 'div',\n { 'class': prefixCls + '-footer-extra ' + prefixCls + '-range-quick-selector', key: 'range' },\n [operations]\n ) : null;\n return [rangeNode, customFooter];\n }\n },\n\n render: function render() {\n var _classNames,\n _this3 = this;\n\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var suffixIcon = getComponentFromProp(this, 'suffixIcon');\n suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;\n var value = this.sValue,\n showDate = this.sShowDate,\n hoverValue = this.sHoverValue,\n open = this.sOpen,\n $scopedSlots = this.$scopedSlots;\n\n var listeners = getListeners(this);\n var _listeners$calendarCh = listeners.calendarChange,\n calendarChange = _listeners$calendarCh === undefined ? noop : _listeners$calendarCh,\n _listeners$ok = listeners.ok,\n ok = _listeners$ok === undefined ? noop : _listeners$ok,\n _listeners$focus = listeners.focus,\n focus = _listeners$focus === undefined ? noop : _listeners$focus,\n _listeners$blur = listeners.blur,\n blur = _listeners$blur === undefined ? noop : _listeners$blur,\n _listeners$panelChang = listeners.panelChange,\n panelChange = _listeners$panelChang === undefined ? noop : _listeners$panelChang;\n var customizePrefixCls = props.prefixCls,\n customizeTagPrefixCls = props.tagPrefixCls,\n popupStyle = props.popupStyle,\n disabledDate = props.disabledDate,\n disabledTime = props.disabledTime,\n showTime = props.showTime,\n showToday = props.showToday,\n ranges = props.ranges,\n locale = props.locale,\n localeCode = props.localeCode,\n format = props.format,\n separator = props.separator,\n inputReadOnly = props.inputReadOnly;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('calendar', customizePrefixCls);\n var tagPrefixCls = getPrefixCls('tag', customizeTagPrefixCls);\n this._prefixCls = prefixCls;\n this._tagPrefixCls = tagPrefixCls;\n\n var dateRender = props.dateRender || $scopedSlots.dateRender;\n fixLocale(value, localeCode);\n fixLocale(showDate, localeCode);\n\n var calendarClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-time', showTime), _defineProperty(_classNames, prefixCls + '-range-with-ranges', ranges), _classNames));\n\n // 需要选择时间时,点击 ok 时才触发 onChange\n var pickerChangeHandler = {\n on: {\n change: this.handleChange\n }\n };\n var calendarProps = {\n on: {\n ok: this.handleChange\n },\n props: {}\n };\n if (props.timePicker) {\n pickerChangeHandler.on.change = function (changedValue) {\n return _this3.handleChange(changedValue);\n };\n } else {\n calendarProps = { on: {}, props: {} };\n }\n if ('mode' in props) {\n calendarProps.props.mode = props.mode;\n }\n\n var startPlaceholder = Array.isArray(props.placeholder) ? props.placeholder[0] : locale.lang.rangePlaceholder[0];\n var endPlaceholder = Array.isArray(props.placeholder) ? props.placeholder[1] : locale.lang.rangePlaceholder[1];\n\n var rangeCalendarProps = mergeProps(calendarProps, {\n props: {\n separator: separator,\n format: format,\n prefixCls: prefixCls,\n renderFooter: this.renderFooter,\n timePicker: props.timePicker,\n disabledDate: disabledDate,\n disabledTime: disabledTime,\n dateInputPlaceholder: [startPlaceholder, endPlaceholder],\n locale: locale.lang,\n dateRender: dateRender,\n value: showDate,\n hoverValue: hoverValue,\n showToday: showToday,\n inputReadOnly: inputReadOnly\n },\n on: {\n change: calendarChange,\n ok: ok,\n valueChange: this.handleShowDateChange,\n hoverChange: this.handleHoverChange,\n panelChange: panelChange,\n inputSelect: this.handleCalendarInputSelect\n },\n 'class': calendarClassName,\n scopedSlots: $scopedSlots\n });\n var calendar = h(RangeCalendar, rangeCalendarProps);\n\n // default width for showTime\n var pickerStyle = {};\n if (props.showTime) {\n pickerStyle.width = '350px';\n }\n\n var _value6 = _slicedToArray(value, 2),\n startValue = _value6[0],\n endValue = _value6[1];\n\n var clearIcon = !props.disabled && props.allowClear && value && (startValue || endValue) ? h(Icon, {\n attrs: {\n type: 'close-circle',\n\n theme: 'filled'\n },\n 'class': prefixCls + '-picker-clear',\n on: {\n 'click': this.clearSelection\n }\n }) : null;\n\n var inputIcon = h(InputIcon, {\n attrs: { suffixIcon: suffixIcon, prefixCls: prefixCls }\n });\n\n var input = function input(_ref3) {\n var inputValue = _ref3.value;\n\n var _inputValue = _slicedToArray(inputValue, 2),\n start = _inputValue[0],\n end = _inputValue[1];\n\n return h(\n 'span',\n { 'class': props.pickerInputClass },\n [h('input', {\n attrs: {\n disabled: props.disabled,\n readOnly: true,\n\n placeholder: startPlaceholder,\n\n tabIndex: -1\n },\n domProps: {\n 'value': formatDate(start, props.format)\n },\n 'class': prefixCls + '-range-picker-input' }), h(\n 'span',\n { 'class': prefixCls + '-range-picker-separator' },\n [' ', separator, ' ']\n ), h('input', {\n attrs: {\n disabled: props.disabled,\n readOnly: true,\n\n placeholder: endPlaceholder,\n\n tabIndex: -1\n },\n domProps: {\n 'value': formatDate(end, props.format)\n },\n 'class': prefixCls + '-range-picker-input' }), clearIcon, inputIcon]\n );\n };\n var vcDatePickerProps = mergeProps({\n props: props,\n on: listeners\n }, pickerChangeHandler, {\n props: {\n calendar: calendar,\n value: value,\n open: open,\n prefixCls: prefixCls + '-picker-container'\n },\n on: {\n openChange: this.handleOpenChange\n },\n style: popupStyle,\n scopedSlots: _extends({ 'default': input }, $scopedSlots)\n });\n return h(\n 'span',\n {\n ref: 'picker',\n 'class': props.pickerClass,\n style: pickerStyle,\n attrs: { tabIndex: props.disabled ? -1 : 0\n },\n on: {\n 'focus': focus,\n 'blur': blur,\n 'mouseenter': this.onMouseEnter,\n 'mouseleave': this.onMouseLeave\n }\n },\n [h(VcDatePicker, vcDatePickerProps)]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport * as moment from 'moment';\nimport Calendar from '../vc-calendar';\nimport VcDatePicker from '../vc-calendar/src/Picker';\nimport Icon from '../icon';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { hasProp, getOptionProps, initDefaultProps, getComponentFromProp, getListeners } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { WeekPickerProps } from './interface';\nimport interopDefault from '../_util/interopDefault';\nimport InputIcon from './InputIcon';\n\nfunction formatValue(value, format) {\n return value && value.format(format) || '';\n}\nfunction noop() {}\n\nexport default {\n // static defaultProps = {\n // format: 'YYYY-wo',\n // allowClear: true,\n // };\n\n // private input: any;\n name: 'AWeekPicker',\n mixins: [BaseMixin],\n model: {\n prop: 'value',\n event: 'change'\n },\n props: initDefaultProps(WeekPickerProps(), {\n format: 'gggg-wo',\n allowClear: true\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var value = this.value || this.defaultValue;\n if (value && !interopDefault(moment).isMoment(value)) {\n throw new Error('The value/defaultValue of WeekPicker or MonthPicker must be ' + 'a moment object');\n }\n return {\n _value: value,\n _open: this.open\n };\n },\n\n watch: {\n value: function value(val) {\n var state = { _value: val };\n this.setState(state);\n this.prevState = _extends({}, this.$data, state);\n },\n open: function open(val) {\n var state = { _open: val };\n this.setState(state);\n this.prevState = _extends({}, this.$data, state);\n },\n _open: function _open(val, oldVal) {\n var _this = this;\n\n this.$nextTick(function () {\n if (!hasProp(_this, 'open') && oldVal && !val) {\n _this.focus();\n }\n });\n }\n },\n mounted: function mounted() {\n this.prevState = _extends({}, this.$data);\n },\n updated: function updated() {\n var _this2 = this;\n\n this.$nextTick(function () {\n if (!hasProp(_this2, 'open') && _this2.prevState._open && !_this2._open) {\n _this2.focus();\n }\n });\n },\n\n methods: {\n weekDateRender: function weekDateRender(current) {\n var h = this.$createElement;\n\n var selectedValue = this.$data._value;\n var prefixCls = this._prefixCls,\n $scopedSlots = this.$scopedSlots;\n\n var dateRender = this.dateRender || $scopedSlots.dateRender;\n var dateNode = dateRender ? dateRender(current) : current.date();\n if (selectedValue && current.year() === selectedValue.year() && current.week() === selectedValue.week()) {\n return h(\n 'div',\n { 'class': prefixCls + '-selected-day' },\n [h(\n 'div',\n { 'class': prefixCls + '-date' },\n [dateNode]\n )]\n );\n }\n return h(\n 'div',\n { 'class': prefixCls + '-date' },\n [dateNode]\n );\n },\n handleChange: function handleChange(value) {\n if (!hasProp(this, 'value')) {\n this.setState({ _value: value });\n }\n this.$emit('change', value, formatValue(value, this.format));\n },\n handleOpenChange: function handleOpenChange(open) {\n if (!hasProp(this, 'open')) {\n this.setState({ _open: open });\n }\n this.$emit('openChange', open);\n },\n clearSelection: function clearSelection(e) {\n e.preventDefault();\n e.stopPropagation();\n this.handleChange(null);\n },\n focus: function focus() {\n this.$refs.input.focus();\n },\n blur: function blur() {\n this.$refs.input.blur();\n },\n renderFooter: function renderFooter() {\n var h = this.$createElement;\n var prefixCls = this._prefixCls,\n $scopedSlots = this.$scopedSlots;\n\n var renderExtraFooter = this.renderExtraFooter || $scopedSlots.renderExtraFooter;\n return renderExtraFooter ? h(\n 'div',\n { 'class': prefixCls + '-footer-extra' },\n [renderExtraFooter.apply(undefined, arguments)]\n ) : null;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var suffixIcon = getComponentFromProp(this, 'suffixIcon');\n suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;\n var customizePrefixCls = this.prefixCls,\n disabled = this.disabled,\n pickerClass = this.pickerClass,\n popupStyle = this.popupStyle,\n pickerInputClass = this.pickerInputClass,\n format = this.format,\n allowClear = this.allowClear,\n locale = this.locale,\n localeCode = this.localeCode,\n disabledDate = this.disabledDate,\n defaultPickerValue = this.defaultPickerValue,\n $data = this.$data,\n $scopedSlots = this.$scopedSlots;\n\n var listeners = getListeners(this);\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('calendar', customizePrefixCls);\n this._prefixCls = prefixCls;\n\n var pickerValue = $data._value,\n open = $data._open;\n var _listeners$focus = listeners.focus,\n focus = _listeners$focus === undefined ? noop : _listeners$focus,\n _listeners$blur = listeners.blur,\n blur = _listeners$blur === undefined ? noop : _listeners$blur;\n\n\n if (pickerValue && localeCode) {\n pickerValue.locale(localeCode);\n }\n\n var placeholder = hasProp(this, 'placeholder') ? this.placeholder : locale.lang.placeholder;\n var weekDateRender = this.dateRender || $scopedSlots.dateRender || this.weekDateRender;\n var calendar = h(Calendar, {\n attrs: {\n showWeekNumber: true,\n dateRender: weekDateRender,\n prefixCls: prefixCls,\n format: format,\n locale: locale.lang,\n showDateInput: false,\n showToday: false,\n disabledDate: disabledDate,\n renderFooter: this.renderFooter,\n defaultValue: defaultPickerValue\n }\n });\n var clearIcon = !disabled && allowClear && $data._value ? h(Icon, {\n attrs: {\n type: 'close-circle',\n\n theme: 'filled'\n },\n 'class': prefixCls + '-picker-clear',\n on: {\n 'click': this.clearSelection\n }\n }) : null;\n\n var inputIcon = h(InputIcon, {\n attrs: { suffixIcon: suffixIcon, prefixCls: prefixCls }\n });\n\n var input = function input(_ref) {\n var value = _ref.value;\n\n return h(\n 'span',\n { style: { display: 'inline-block', width: '100%' } },\n [h('input', {\n ref: 'input',\n attrs: { disabled: disabled,\n readOnly: true,\n\n placeholder: placeholder\n },\n domProps: {\n 'value': value && value.format(format) || ''\n },\n 'class': pickerInputClass,\n on: {\n 'focus': focus,\n 'blur': blur\n }\n }), clearIcon, inputIcon]\n );\n };\n var vcDatePickerProps = {\n props: _extends({}, props, {\n calendar: calendar,\n prefixCls: prefixCls + '-picker-container',\n value: pickerValue,\n open: open\n }),\n on: _extends({}, listeners, {\n change: this.handleChange,\n openChange: this.handleOpenChange\n }),\n style: popupStyle,\n scopedSlots: _extends({ 'default': input }, $scopedSlots)\n };\n return h(\n 'span',\n { 'class': pickerClass },\n [h(VcDatePicker, vcDatePickerProps)]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport VcCalendar from '../vc-calendar';\nimport MonthCalendar from '../vc-calendar/src/MonthCalendar';\nimport createPicker from './createPicker';\nimport wrapPicker from './wrapPicker';\nimport RangePicker from './RangePicker';\nimport WeekPicker from './WeekPicker';\nimport { DatePickerProps, MonthPickerProps, WeekPickerProps, RangePickerProps } from './interface';\nimport Base from '../base';\n\nvar DatePicker = wrapPicker(_extends({}, createPicker(VcCalendar, DatePickerProps()), { name: 'ADatePicker' }), DatePickerProps(), 'date');\n\nvar MonthPicker = wrapPicker(_extends({}, createPicker(MonthCalendar, MonthPickerProps()), { name: 'AMonthPicker' }), MonthPickerProps(), 'month');\n\n_extends(DatePicker, {\n RangePicker: wrapPicker(RangePicker, RangePickerProps(), 'date'),\n MonthPicker: MonthPicker,\n WeekPicker: wrapPicker(WeekPicker, WeekPickerProps(), 'week')\n});\n\n/* istanbul ignore next */\nDatePicker.install = function (Vue) {\n Vue.use(Base);\n Vue.component(DatePicker.name, DatePicker);\n Vue.component(DatePicker.RangePicker.name, DatePicker.RangePicker);\n Vue.component(DatePicker.MonthPicker.name, DatePicker.MonthPicker);\n Vue.component(DatePicker.WeekPicker.name, DatePicker.WeekPicker);\n};\n\nexport default DatePicker;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nvar Divider = {\n name: 'ADivider',\n props: {\n prefixCls: PropTypes.string,\n type: PropTypes.oneOf(['horizontal', 'vertical', '']).def('horizontal'),\n dashed: PropTypes.bool,\n orientation: PropTypes.oneOf(['left', 'right', 'center'])\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var _classString;\n\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n type = this.type,\n $slots = this.$slots,\n dashed = this.dashed,\n _orientation = this.orientation,\n orientation = _orientation === undefined ? 'center' : _orientation;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('divider', customizePrefixCls);\n var orientationPrefix = orientation.length > 0 ? '-' + orientation : orientation;\n\n var classString = (_classString = {}, _defineProperty(_classString, prefixCls, true), _defineProperty(_classString, prefixCls + '-' + type, true), _defineProperty(_classString, prefixCls + '-with-text' + orientationPrefix, $slots['default']), _defineProperty(_classString, prefixCls + '-dashed', !!dashed), _classString);\n\n return h(\n 'div',\n { 'class': classString, attrs: { role: 'separator' }\n },\n [$slots['default'] && h(\n 'span',\n { 'class': prefixCls + '-inner-text' },\n [$slots['default']]\n )]\n );\n }\n};\n\n/* istanbul ignore next */\nDivider.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Divider.name, Divider);\n};\n\nexport default Divider;","import Dropdown from './dropdown';\nimport DropdownButton from './dropdown-button';\n\nexport { DropdownProps } from './dropdown';\nexport { DropdownButtonProps } from './dropdown-button';\nimport Base from '../base';\n\nDropdown.Button = DropdownButton;\n\n/* istanbul ignore next */\nDropdown.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Dropdown.name, Dropdown);\n Vue.component(DropdownButton.name, DropdownButton);\n};\n\nexport default Dropdown;","import _extends from \"babel-runtime/helpers/extends\";\nimport _classCallCheck from \"babel-runtime/helpers/classCallCheck\";\n\nvar Field = function Field(fields) {\n _classCallCheck(this, Field);\n\n _extends(this, fields);\n};\n\nexport function isFormField(obj) {\n return obj instanceof Field;\n}\n\nexport default function createFormField(field) {\n if (isFormField(field)) {\n return field;\n }\n return new Field(field);\n}","import _typeof from 'babel-runtime/helpers/typeof';\nimport _extends from 'babel-runtime/helpers/extends';\nimport warning from 'warning';\n\nfunction getDisplayName(WrappedComponent) {\n return WrappedComponent.name || 'WrappedComponent';\n}\n\nexport function argumentContainer(Container, WrappedComponent) {\n /* eslint no-param-reassign:0 */\n Container.name = 'Form_' + getDisplayName(WrappedComponent);\n Container.WrappedComponent = WrappedComponent;\n Container.props = _extends({}, Container.props, WrappedComponent.props);\n return Container;\n}\n\nexport function identity(obj) {\n return obj;\n}\n\nexport function flattenArray(arr) {\n return Array.prototype.concat.apply([], arr);\n}\n\nexport function treeTraverse() {\n var path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var tree = arguments[1];\n var isLeafNode = arguments[2];\n var errorMessage = arguments[3];\n var callback = arguments[4];\n\n if (isLeafNode(path, tree)) {\n callback(path, tree);\n } else if (tree === undefined || tree === null) {\n // Do nothing\n } else if (Array.isArray(tree)) {\n tree.forEach(function (subTree, index) {\n return treeTraverse(path + '[' + index + ']', subTree, isLeafNode, errorMessage, callback);\n });\n } else {\n // It's object and not a leaf node\n if ((typeof tree === 'undefined' ? 'undefined' : _typeof(tree)) !== 'object') {\n warning(false, errorMessage);\n return;\n }\n Object.keys(tree).forEach(function (subTreeKey) {\n var subTree = tree[subTreeKey];\n treeTraverse('' + path + (path ? '.' : '') + subTreeKey, subTree, isLeafNode, errorMessage, callback);\n });\n }\n}\n\nexport function flattenFields(maybeNestedFields, isLeafNode, errorMessage) {\n var fields = {};\n treeTraverse(undefined, maybeNestedFields, isLeafNode, errorMessage, function (path, node) {\n fields[path] = node;\n });\n return fields;\n}\n\nexport function normalizeValidateRules(validate, rules, validateTrigger) {\n var validateRules = validate.map(function (item) {\n var newItem = _extends({}, item, {\n trigger: item.trigger || []\n });\n if (typeof newItem.trigger === 'string') {\n newItem.trigger = [newItem.trigger];\n }\n return newItem;\n });\n if (rules) {\n validateRules.push({\n trigger: validateTrigger ? [].concat(validateTrigger) : [],\n rules: rules\n });\n }\n return validateRules;\n}\n\nexport function getValidateTriggers(validateRules) {\n return validateRules.filter(function (item) {\n return !!item.rules && item.rules.length;\n }).map(function (item) {\n return item.trigger;\n }).reduce(function (pre, curr) {\n return pre.concat(curr);\n }, []);\n}\n\nexport function getValueFromEvent(e) {\n // To support custom element\n if (!e || !e.target) {\n return e;\n }\n var target = e.target;\n\n return target.type === 'checkbox' ? target.checked : target.value;\n}\n\nexport function getErrorStrs(errors) {\n if (errors) {\n return errors.map(function (e) {\n if (e && e.message) {\n return e.message;\n }\n return e;\n });\n }\n return errors;\n}\n\nexport function getParams(ns, opt, cb) {\n var names = ns;\n var options = opt;\n var callback = cb;\n if (cb === undefined) {\n if (typeof names === 'function') {\n callback = names;\n options = {};\n names = undefined;\n } else if (Array.isArray(names)) {\n if (typeof options === 'function') {\n callback = options;\n options = {};\n } else {\n options = options || {};\n }\n } else {\n callback = options;\n options = names || {};\n names = undefined;\n }\n }\n return {\n names: names,\n options: options,\n callback: callback\n };\n}\n\nexport function isEmptyObject(obj) {\n return Object.keys(obj).length === 0;\n}\n\nexport function hasRules(validate) {\n if (validate) {\n return validate.some(function (item) {\n return item.rules && item.rules.length;\n });\n }\n return false;\n}\n\nexport function startsWith(str, prefix) {\n return str.lastIndexOf(prefix, 0) === 0;\n}","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\nimport set from 'lodash/set';\nimport createFormField, { isFormField } from './createFormField';\nimport { hasRules, flattenFields, getErrorStrs, startsWith } from './utils';\n\nfunction partOf(a, b) {\n return b.indexOf(a) === 0 && ['.', '['].indexOf(b[a.length]) !== -1;\n}\n\nfunction internalFlattenFields(fields) {\n return flattenFields(fields, function (_, node) {\n return isFormField(node);\n }, 'You must wrap field data with `createFormField`.');\n}\n\nvar FieldsStore = function () {\n function FieldsStore(fields) {\n _classCallCheck(this, FieldsStore);\n\n _initialiseProps.call(this);\n\n this.fields = internalFlattenFields(fields);\n this.fieldsMeta = {};\n }\n\n _createClass(FieldsStore, [{\n key: 'updateFields',\n value: function updateFields(fields) {\n this.fields = internalFlattenFields(fields);\n }\n }, {\n key: 'flattenRegisteredFields',\n value: function flattenRegisteredFields(fields) {\n var validFieldsName = this.getAllFieldsName();\n return flattenFields(fields, function (path) {\n return validFieldsName.indexOf(path) >= 0;\n }, 'You cannot set a form field before rendering a field associated with the value. You can use `getFieldDecorator(id, options)` instead `v-decorator=\"[id, options]\"` to register it before render.');\n }\n }, {\n key: 'setFields',\n value: function setFields(fields) {\n var _this = this;\n\n var fieldsMeta = this.fieldsMeta;\n var nowFields = _extends({}, this.fields, fields);\n var nowValues = {};\n Object.keys(fieldsMeta).forEach(function (f) {\n nowValues[f] = _this.getValueFromFields(f, nowFields);\n });\n Object.keys(nowValues).forEach(function (f) {\n var value = nowValues[f];\n var fieldMeta = _this.getFieldMeta(f);\n if (fieldMeta && fieldMeta.normalize) {\n var nowValue = fieldMeta.normalize(value, _this.getValueFromFields(f, _this.fields), nowValues);\n if (nowValue !== value) {\n nowFields[f] = _extends({}, nowFields[f], {\n value: nowValue\n });\n }\n }\n });\n this.fields = nowFields;\n }\n }, {\n key: 'resetFields',\n value: function resetFields(ns) {\n var fields = this.fields;\n\n var names = ns ? this.getValidFieldsFullName(ns) : this.getAllFieldsName();\n return names.reduce(function (acc, name) {\n var field = fields[name];\n if (field && 'value' in field) {\n acc[name] = {};\n }\n return acc;\n }, {});\n }\n }, {\n key: 'setFieldMeta',\n value: function setFieldMeta(name, meta) {\n this.fieldsMeta[name] = meta;\n }\n }, {\n key: 'setFieldsAsDirty',\n value: function setFieldsAsDirty() {\n var _this2 = this;\n\n Object.keys(this.fields).forEach(function (name) {\n var field = _this2.fields[name];\n var fieldMeta = _this2.fieldsMeta[name];\n if (field && fieldMeta && hasRules(fieldMeta.validate)) {\n _this2.fields[name] = _extends({}, field, {\n dirty: true\n });\n }\n });\n }\n }, {\n key: 'getFieldMeta',\n value: function getFieldMeta(name) {\n this.fieldsMeta[name] = this.fieldsMeta[name] || {};\n return this.fieldsMeta[name];\n }\n }, {\n key: 'getValueFromFields',\n value: function getValueFromFields(name, fields) {\n var field = fields[name];\n if (field && 'value' in field) {\n return field.value;\n }\n var fieldMeta = this.getFieldMeta(name);\n return fieldMeta && fieldMeta.initialValue;\n }\n }, {\n key: 'getValidFieldsName',\n value: function getValidFieldsName() {\n var _this3 = this;\n\n var fieldsMeta = this.fieldsMeta;\n\n return fieldsMeta ? Object.keys(fieldsMeta).filter(function (name) {\n return !_this3.getFieldMeta(name).hidden;\n }) : [];\n }\n }, {\n key: 'getAllFieldsName',\n value: function getAllFieldsName() {\n var fieldsMeta = this.fieldsMeta;\n\n return fieldsMeta ? Object.keys(fieldsMeta) : [];\n }\n }, {\n key: 'getValidFieldsFullName',\n value: function getValidFieldsFullName(maybePartialName) {\n var maybePartialNames = Array.isArray(maybePartialName) ? maybePartialName : [maybePartialName];\n return this.getValidFieldsName().filter(function (fullName) {\n return maybePartialNames.some(function (partialName) {\n return fullName === partialName || startsWith(fullName, partialName) && ['.', '['].indexOf(fullName[partialName.length]) >= 0;\n });\n });\n }\n }, {\n key: 'getFieldValuePropValue',\n value: function getFieldValuePropValue(fieldMeta) {\n var name = fieldMeta.name,\n getValueProps = fieldMeta.getValueProps,\n valuePropName = fieldMeta.valuePropName;\n\n var field = this.getField(name);\n var fieldValue = 'value' in field ? field.value : fieldMeta.initialValue;\n if (getValueProps) {\n return getValueProps(fieldValue);\n }\n return _defineProperty({}, valuePropName, fieldValue);\n }\n }, {\n key: 'getField',\n value: function getField(name) {\n return _extends({}, this.fields[name], {\n name: name\n });\n }\n }, {\n key: 'getNotCollectedFields',\n value: function getNotCollectedFields() {\n var _this4 = this;\n\n var fieldsName = this.getValidFieldsName();\n return fieldsName.filter(function (name) {\n return !_this4.fields[name];\n }).map(function (name) {\n return {\n name: name,\n dirty: false,\n value: _this4.getFieldMeta(name).initialValue\n };\n }).reduce(function (acc, field) {\n return set(acc, field.name, createFormField(field));\n }, {});\n }\n }, {\n key: 'getNestedAllFields',\n value: function getNestedAllFields() {\n var _this5 = this;\n\n return Object.keys(this.fields).reduce(function (acc, name) {\n return set(acc, name, createFormField(_this5.fields[name]));\n }, this.getNotCollectedFields());\n }\n }, {\n key: 'getFieldMember',\n value: function getFieldMember(name, member) {\n return this.getField(name)[member];\n }\n }, {\n key: 'getNestedFields',\n value: function getNestedFields(names, getter) {\n var fields = names || this.getValidFieldsName();\n return fields.reduce(function (acc, f) {\n return set(acc, f, getter(f));\n }, {});\n }\n }, {\n key: 'getNestedField',\n value: function getNestedField(name, getter) {\n var fullNames = this.getValidFieldsFullName(name);\n if (fullNames.length === 0 || // Not registered\n fullNames.length === 1 && fullNames[0] === name // Name already is full name.\n ) {\n return getter(name);\n }\n var isArrayValue = fullNames[0][name.length] === '[';\n var suffixNameStartIndex = isArrayValue ? name.length : name.length + 1;\n return fullNames.reduce(function (acc, fullName) {\n return set(acc, fullName.slice(suffixNameStartIndex), getter(fullName));\n }, isArrayValue ? [] : {});\n }\n }, {\n key: 'isValidNestedFieldName',\n\n\n // @private\n // BG: `a` and `a.b` cannot be use in the same form\n value: function isValidNestedFieldName(name) {\n var names = this.getAllFieldsName();\n return names.every(function (n) {\n return !partOf(n, name) && !partOf(name, n);\n });\n }\n }, {\n key: 'clearField',\n value: function clearField(name) {\n delete this.fields[name];\n delete this.fieldsMeta[name];\n }\n }]);\n\n return FieldsStore;\n}();\n\nvar _initialiseProps = function _initialiseProps() {\n var _this6 = this;\n\n this.setFieldsInitialValue = function (initialValues) {\n var flattenedInitialValues = _this6.flattenRegisteredFields(initialValues);\n var fieldsMeta = _this6.fieldsMeta;\n Object.keys(flattenedInitialValues).forEach(function (name) {\n if (fieldsMeta[name]) {\n _this6.setFieldMeta(name, _extends({}, _this6.getFieldMeta(name), {\n initialValue: flattenedInitialValues[name]\n }));\n }\n });\n };\n\n this.getAllValues = function () {\n var fieldsMeta = _this6.fieldsMeta,\n fields = _this6.fields;\n\n return Object.keys(fieldsMeta).reduce(function (acc, name) {\n return set(acc, name, _this6.getValueFromFields(name, fields));\n }, {});\n };\n\n this.getFieldsValue = function (names) {\n return _this6.getNestedFields(names, _this6.getFieldValue);\n };\n\n this.getFieldValue = function (name) {\n var fields = _this6.fields;\n\n return _this6.getNestedField(name, function (fullName) {\n return _this6.getValueFromFields(fullName, fields);\n });\n };\n\n this.getFieldsError = function (names) {\n return _this6.getNestedFields(names, _this6.getFieldError);\n };\n\n this.getFieldError = function (name) {\n return _this6.getNestedField(name, function (fullName) {\n return getErrorStrs(_this6.getFieldMember(fullName, 'errors'));\n });\n };\n\n this.isFieldValidating = function (name) {\n return _this6.getFieldMember(name, 'validating');\n };\n\n this.isFieldsValidating = function (ns) {\n var names = ns || _this6.getValidFieldsName();\n return names.some(function (n) {\n return _this6.isFieldValidating(n);\n });\n };\n\n this.isFieldTouched = function (name) {\n return _this6.getFieldMember(name, 'touched');\n };\n\n this.isFieldsTouched = function (ns) {\n var names = ns || _this6.getValidFieldsName();\n return names.some(function (n) {\n return _this6.isFieldTouched(n);\n });\n };\n};\n\nexport default function createFieldsStore(fields) {\n return new FieldsStore(fields);\n}","import _typeof from 'babel-runtime/helpers/typeof';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport AsyncValidator from 'async-validator';\nimport warning from 'warning';\nimport get from 'lodash/get';\nimport set from 'lodash/set';\nimport eq from 'lodash/eq';\nimport omit from 'lodash/omit';\nimport createFieldsStore from './createFieldsStore';\nimport { cloneElement } from '../../_util/vnode';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getOptionProps, getEvents, slotHasProp, getComponentName, getListeners } from '../../_util/props-util';\nimport PropTypes from '../../_util/vue-types';\n\nimport { argumentContainer, identity, normalizeValidateRules, getValidateTriggers, getValueFromEvent, hasRules, getParams, isEmptyObject, flattenArray } from './utils';\n\nvar DEFAULT_TRIGGER = 'change';\n\nfunction createBaseForm() {\n var option = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var mixins = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var validateMessages = option.validateMessages,\n onFieldsChange = option.onFieldsChange,\n onValuesChange = option.onValuesChange,\n _option$mapProps = option.mapProps,\n mapProps = _option$mapProps === undefined ? identity : _option$mapProps,\n mapPropsToFields = option.mapPropsToFields,\n fieldNameProp = option.fieldNameProp,\n fieldMetaProp = option.fieldMetaProp,\n fieldDataProp = option.fieldDataProp,\n _option$formPropName = option.formPropName,\n formPropName = _option$formPropName === undefined ? 'form' : _option$formPropName,\n formName = option.name,\n _option$props = option.props,\n props = _option$props === undefined ? {} : _option$props,\n templateContext = option.templateContext;\n\n return function decorate(WrappedComponent) {\n var formProps = {};\n if (Array.isArray(props)) {\n props.forEach(function (prop) {\n formProps[prop] = PropTypes.any;\n });\n } else {\n formProps = props;\n }\n var Form = {\n mixins: [BaseMixin].concat(_toConsumableArray(mixins)),\n props: _extends({}, formProps, {\n wrappedComponentRef: PropTypes.func.def(function () {})\n }),\n data: function data() {\n var _this = this;\n\n var fields = mapPropsToFields && mapPropsToFields(this.$props);\n this.fieldsStore = createFieldsStore(fields || {});\n this.templateContext = templateContext;\n this.instances = {};\n this.cachedBind = {};\n this.clearedFieldMetaCache = {};\n this.formItems = {};\n this.renderFields = {};\n this.domFields = {};\n\n // HACK: https://github.com/ant-design/ant-design/issues/6406\n ['getFieldsValue', 'getFieldValue', 'setFieldsInitialValue', 'getFieldsError', 'getFieldError', 'isFieldValidating', 'isFieldsValidating', 'isFieldsTouched', 'isFieldTouched'].forEach(function (key) {\n _this[key] = function () {\n var _fieldsStore;\n\n return (_fieldsStore = _this.fieldsStore)[key].apply(_fieldsStore, arguments);\n };\n });\n\n return {\n submitting: false\n };\n },\n\n watch: templateContext ? {} : {\n $props: {\n handler: function handler(nextProps) {\n if (mapPropsToFields) {\n this.fieldsStore.updateFields(mapPropsToFields(nextProps));\n }\n },\n\n deep: true\n }\n },\n mounted: function mounted() {\n this.cleanUpUselessFields();\n },\n updated: function updated() {\n // form updated add for template v-decorator\n this.cleanUpUselessFields();\n },\n\n methods: {\n updateFields: function updateFields() {\n var fields = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.fieldsStore.updateFields(mapPropsToFields(fields));\n if (templateContext) {\n templateContext.$forceUpdate();\n }\n },\n onCollectCommon: function onCollectCommon(name, action, args) {\n var fieldMeta = this.fieldsStore.getFieldMeta(name);\n if (fieldMeta[action]) {\n fieldMeta[action].apply(fieldMeta, _toConsumableArray(args));\n } else if (fieldMeta.originalProps && fieldMeta.originalProps[action]) {\n var _fieldMeta$originalPr;\n\n (_fieldMeta$originalPr = fieldMeta.originalProps)[action].apply(_fieldMeta$originalPr, _toConsumableArray(args));\n }\n var value = fieldMeta.getValueFromEvent ? fieldMeta.getValueFromEvent.apply(fieldMeta, _toConsumableArray(args)) : getValueFromEvent.apply(undefined, _toConsumableArray(args));\n if (onValuesChange && value !== this.fieldsStore.getFieldValue(name)) {\n var valuesAll = this.fieldsStore.getAllValues();\n var valuesAllSet = {};\n valuesAll[name] = value;\n Object.keys(valuesAll).forEach(function (key) {\n return set(valuesAllSet, key, valuesAll[key]);\n });\n onValuesChange(_extends(_defineProperty({}, formPropName, this.getForm()), this.$props), set({}, name, value), valuesAllSet);\n }\n var field = this.fieldsStore.getField(name);\n return { name: name, field: _extends({}, field, { value: value, touched: true }), fieldMeta: fieldMeta };\n },\n onCollect: function onCollect(name_, action) {\n for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n var _onCollectCommon = this.onCollectCommon(name_, action, args),\n name = _onCollectCommon.name,\n field = _onCollectCommon.field,\n fieldMeta = _onCollectCommon.fieldMeta;\n\n var validate = fieldMeta.validate;\n\n this.fieldsStore.setFieldsAsDirty();\n var newField = _extends({}, field, {\n dirty: hasRules(validate)\n });\n this.setFields(_defineProperty({}, name, newField));\n },\n onCollectValidate: function onCollectValidate(name_, action) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n\n var _onCollectCommon2 = this.onCollectCommon(name_, action, args),\n field = _onCollectCommon2.field,\n fieldMeta = _onCollectCommon2.fieldMeta;\n\n var newField = _extends({}, field, {\n dirty: true\n });\n this.fieldsStore.setFieldsAsDirty();\n this.validateFieldsInternal([newField], {\n action: action,\n options: {\n firstFields: !!fieldMeta.validateFirst\n }\n });\n },\n getCacheBind: function getCacheBind(name, action, fn) {\n if (!this.cachedBind[name]) {\n this.cachedBind[name] = {};\n }\n var cache = this.cachedBind[name];\n if (!cache[action] || cache[action].oriFn !== fn) {\n cache[action] = {\n fn: fn.bind(this, name, action),\n oriFn: fn\n };\n }\n return cache[action].fn;\n },\n getFieldDecorator: function getFieldDecorator(name, fieldOption, formItem) {\n var _this2 = this;\n\n var _getFieldProps = this.getFieldProps(name, fieldOption),\n props = _getFieldProps.props,\n restProps = _objectWithoutProperties(_getFieldProps, ['props']);\n\n this.formItems[name] = formItem;\n return function (fieldElem) {\n // We should put field in record if it is rendered\n _this2.renderFields[name] = true;\n\n var fieldMeta = _this2.fieldsStore.getFieldMeta(name);\n var originalProps = getOptionProps(fieldElem);\n var originalEvents = getEvents(fieldElem);\n if (process.env.NODE_ENV !== 'production') {\n var valuePropName = fieldMeta.valuePropName;\n warning(!slotHasProp(fieldElem, valuePropName), '`getFieldDecorator` will override `' + valuePropName + '`, ' + ('so please don\\'t set `' + valuePropName + ' and v-model` directly ') + 'and use `setFieldsValue` to set it.');\n warning(!(!slotHasProp(fieldElem, valuePropName) && valuePropName in originalProps && !(fieldOption && 'initialValue' in fieldOption)), getComponentName(fieldElem.componentOptions) + ' `default value` can not collect, ' + ' please use `option.initialValue` to set default value.');\n var defaultValuePropName = 'default' + valuePropName[0].toUpperCase() + valuePropName.slice(1);\n warning(!slotHasProp(fieldElem, defaultValuePropName), '`' + defaultValuePropName + '` is invalid ' + ('for `getFieldDecorator` will set `' + valuePropName + '`,') + ' please use `option.initialValue` instead.');\n }\n fieldMeta.originalProps = originalProps;\n // fieldMeta.ref = fieldElem.data && fieldElem.data.ref\n var newProps = _extends({\n props: _extends({}, props, _this2.fieldsStore.getFieldValuePropValue(fieldMeta))\n }, restProps);\n newProps.domProps.value = newProps.props.value;\n var newEvents = {};\n Object.keys(newProps.on).forEach(function (key) {\n if (originalEvents[key]) {\n var triggerEvents = newProps.on[key];\n newEvents[key] = function () {\n originalEvents[key].apply(originalEvents, arguments);\n triggerEvents.apply(undefined, arguments);\n };\n } else {\n newEvents[key] = newProps.on[key];\n }\n });\n return cloneElement(fieldElem, _extends({}, newProps, { on: newEvents }));\n };\n },\n getFieldProps: function getFieldProps(name) {\n var _this3 = this;\n\n var usersFieldOption = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!name) {\n throw new Error('Must call `getFieldProps` with valid name string!');\n }\n if (process.env.NODE_ENV !== 'production') {\n warning(this.fieldsStore.isValidNestedFieldName(name), 'One field name cannot be part of another, e.g. `a` and `a.b`. Check field: ' + name);\n warning(!('exclusive' in usersFieldOption), '`option.exclusive` of `getFieldProps`|`getFieldDecorator` had been remove.');\n }\n\n delete this.clearedFieldMetaCache[name];\n\n var fieldOption = _extends({\n name: name,\n trigger: DEFAULT_TRIGGER,\n valuePropName: 'value',\n validate: []\n }, usersFieldOption);\n\n var rules = fieldOption.rules,\n trigger = fieldOption.trigger,\n _fieldOption$validate = fieldOption.validateTrigger,\n validateTrigger = _fieldOption$validate === undefined ? trigger : _fieldOption$validate,\n validate = fieldOption.validate;\n\n\n var fieldMeta = this.fieldsStore.getFieldMeta(name);\n if ('initialValue' in fieldOption) {\n fieldMeta.initialValue = fieldOption.initialValue;\n }\n\n var inputProps = _extends({}, this.fieldsStore.getFieldValuePropValue(fieldOption));\n var inputListeners = {};\n var inputAttrs = {};\n if (fieldNameProp) {\n inputProps[fieldNameProp] = formName ? formName + '_' + name : name;\n }\n\n var validateRules = normalizeValidateRules(validate, rules, validateTrigger);\n var validateTriggers = getValidateTriggers(validateRules);\n validateTriggers.forEach(function (action) {\n if (inputListeners[action]) return;\n inputListeners[action] = _this3.getCacheBind(name, action, _this3.onCollectValidate);\n });\n\n // make sure that the value will be collect\n if (trigger && validateTriggers.indexOf(trigger) === -1) {\n inputListeners[trigger] = this.getCacheBind(name, trigger, this.onCollect);\n }\n\n var meta = _extends({}, fieldMeta, fieldOption, {\n validate: validateRules\n });\n this.fieldsStore.setFieldMeta(name, meta);\n if (fieldMetaProp) {\n inputAttrs[fieldMetaProp] = meta;\n }\n\n if (fieldDataProp) {\n inputAttrs[fieldDataProp] = this.fieldsStore.getField(name);\n }\n // This field is rendered, record it\n this.renderFields[name] = true;\n return {\n props: omit(inputProps, ['id']),\n // id: inputProps.id,\n domProps: {\n value: inputProps.value\n },\n attrs: _extends({}, inputAttrs, {\n id: inputProps.id\n }),\n directives: [{\n name: 'ant-ref',\n value: this.getCacheBind(name, name + '__ref', this.saveRef)\n }],\n on: inputListeners\n };\n },\n getFieldInstance: function getFieldInstance(name) {\n return this.instances[name];\n },\n getRules: function getRules(fieldMeta, action) {\n var actionRules = fieldMeta.validate.filter(function (item) {\n return !action || item.trigger.indexOf(action) >= 0;\n }).map(function (item) {\n return item.rules;\n });\n return flattenArray(actionRules);\n },\n setFields: function setFields(maybeNestedFields, callback) {\n var _this4 = this;\n\n var fields = this.fieldsStore.flattenRegisteredFields(maybeNestedFields);\n this.fieldsStore.setFields(fields);\n var changedFields = Object.keys(fields).reduce(function (acc, name) {\n return set(acc, name, _this4.fieldsStore.getField(name));\n }, {});\n if (onFieldsChange) {\n var _changedFields = Object.keys(fields).reduce(function (acc, name) {\n return set(acc, name, _this4.fieldsStore.getField(name));\n }, {});\n onFieldsChange(this, _changedFields, this.fieldsStore.getNestedAllFields());\n }\n var formContext = templateContext || this;\n var allUpdate = false;\n Object.keys(changedFields).forEach(function (key) {\n var formItem = _this4.formItems[key];\n formItem = typeof formItem === 'function' ? formItem() : formItem;\n if (formItem && formItem.itemSelfUpdate) {\n formItem.$forceUpdate();\n } else {\n allUpdate = true;\n }\n });\n if (allUpdate) {\n formContext.$forceUpdate();\n }\n this.$nextTick(function () {\n callback && callback();\n });\n },\n setFieldsValue: function setFieldsValue(changedValues, callback) {\n var fieldsMeta = this.fieldsStore.fieldsMeta;\n\n var values = this.fieldsStore.flattenRegisteredFields(changedValues);\n var newFields = Object.keys(values).reduce(function (acc, name) {\n var isRegistered = fieldsMeta[name];\n if (process.env.NODE_ENV !== 'production') {\n warning(isRegistered, 'Cannot use `setFieldsValue` until ' + 'you use `getFieldDecorator` or `getFieldProps` to register it.');\n }\n if (isRegistered) {\n var value = values[name];\n acc[name] = {\n value: value\n };\n }\n return acc;\n }, {});\n this.setFields(newFields, callback);\n if (onValuesChange) {\n var allValues = this.fieldsStore.getAllValues();\n onValuesChange(_extends(_defineProperty({}, formPropName, this.getForm()), this.$props), changedValues, allValues);\n }\n },\n saveRef: function saveRef(name, _, component) {\n if (!component) {\n var fieldMeta = this.fieldsStore.getFieldMeta(name);\n if (!fieldMeta.preserve) {\n // after destroy, delete data\n this.clearedFieldMetaCache[name] = {\n field: this.fieldsStore.getField(name),\n meta: fieldMeta\n };\n this.clearField(name);\n }\n delete this.domFields[name];\n return;\n }\n this.domFields[name] = true;\n this.recoverClearedField(name);\n // const fieldMeta = this.fieldsStore.getFieldMeta(name)\n // if (fieldMeta) {\n // const ref = fieldMeta.ref\n // if (ref) {\n // if (typeof ref === 'string') {\n // throw new Error(`can not set ref string for ${name}`)\n // }\n // ref(component)\n // }\n // }\n this.instances[name] = component;\n },\n cleanUpUselessFields: function cleanUpUselessFields() {\n var _this5 = this;\n\n var fieldList = this.fieldsStore.getAllFieldsName();\n var removedList = fieldList.filter(function (field) {\n var fieldMeta = _this5.fieldsStore.getFieldMeta(field);\n return !_this5.renderFields[field] && !_this5.domFields[field] && !fieldMeta.preserve;\n });\n if (removedList.length) {\n removedList.forEach(this.clearField);\n }\n this.renderFields = {};\n },\n clearField: function clearField(name) {\n this.fieldsStore.clearField(name);\n delete this.instances[name];\n delete this.cachedBind[name];\n },\n resetFields: function resetFields(ns) {\n var _this6 = this;\n\n var newFields = this.fieldsStore.resetFields(ns);\n if (Object.keys(newFields).length > 0) {\n this.setFields(newFields);\n }\n if (ns) {\n var names = Array.isArray(ns) ? ns : [ns];\n names.forEach(function (name) {\n return delete _this6.clearedFieldMetaCache[name];\n });\n } else {\n this.clearedFieldMetaCache = {};\n }\n },\n recoverClearedField: function recoverClearedField(name) {\n if (this.clearedFieldMetaCache[name]) {\n this.fieldsStore.setFields(_defineProperty({}, name, this.clearedFieldMetaCache[name].field));\n this.fieldsStore.setFieldMeta(name, this.clearedFieldMetaCache[name].meta);\n delete this.clearedFieldMetaCache[name];\n }\n },\n validateFieldsInternal: function validateFieldsInternal(fields, _ref, callback) {\n var _this7 = this;\n\n var fieldNames = _ref.fieldNames,\n action = _ref.action,\n _ref$options = _ref.options,\n options = _ref$options === undefined ? {} : _ref$options;\n\n var allRules = {};\n var allValues = {};\n var allFields = {};\n var alreadyErrors = {};\n fields.forEach(function (field) {\n var name = field.name;\n if (options.force !== true && field.dirty === false) {\n if (field.errors) {\n set(alreadyErrors, name, { errors: field.errors });\n }\n return;\n }\n var fieldMeta = _this7.fieldsStore.getFieldMeta(name);\n var newField = _extends({}, field);\n newField.errors = undefined;\n newField.validating = true;\n newField.dirty = true;\n allRules[name] = _this7.getRules(fieldMeta, action);\n allValues[name] = newField.value;\n allFields[name] = newField;\n });\n this.setFields(allFields);\n // in case normalize\n Object.keys(allValues).forEach(function (f) {\n allValues[f] = _this7.fieldsStore.getFieldValue(f);\n });\n if (callback && isEmptyObject(allFields)) {\n callback(isEmptyObject(alreadyErrors) ? null : alreadyErrors, this.fieldsStore.getFieldsValue(fieldNames));\n return;\n }\n var validator = new AsyncValidator(allRules);\n if (validateMessages) {\n validator.messages(validateMessages);\n }\n validator.validate(allValues, options, function (errors) {\n var errorsGroup = _extends({}, alreadyErrors);\n if (errors && errors.length) {\n errors.forEach(function (e) {\n var errorFieldName = e.field;\n var fieldName = errorFieldName;\n\n // Handle using array validation rule.\n // ref: https://github.com/ant-design/ant-design/issues/14275\n Object.keys(allRules).some(function (ruleFieldName) {\n var rules = allRules[ruleFieldName] || [];\n\n // Exist if match rule\n if (ruleFieldName === errorFieldName) {\n fieldName = ruleFieldName;\n return true;\n }\n\n // Skip if not match array type\n if (rules.every(function (_ref2) {\n var type = _ref2.type;\n return type !== 'array';\n }) && errorFieldName.indexOf(ruleFieldName) !== 0) {\n return false;\n }\n\n // Exist if match the field name\n var restPath = errorFieldName.slice(ruleFieldName.length + 1);\n if (/^\\d+$/.test(restPath)) {\n fieldName = ruleFieldName;\n return true;\n }\n\n return false;\n });\n\n var field = get(errorsGroup, fieldName);\n if ((typeof field === 'undefined' ? 'undefined' : _typeof(field)) !== 'object' || Array.isArray(field)) {\n set(errorsGroup, fieldName, { errors: [] });\n }\n var fieldErrors = get(errorsGroup, fieldName.concat('.errors'));\n fieldErrors.push(e);\n });\n }\n var expired = [];\n var nowAllFields = {};\n Object.keys(allRules).forEach(function (name) {\n var fieldErrors = get(errorsGroup, name);\n var nowField = _this7.fieldsStore.getField(name);\n // avoid concurrency problems\n if (!eq(nowField.value, allValues[name])) {\n expired.push({\n name: name\n });\n } else {\n nowField.errors = fieldErrors && fieldErrors.errors;\n nowField.value = allValues[name];\n nowField.validating = false;\n nowField.dirty = false;\n nowAllFields[name] = nowField;\n }\n });\n _this7.setFields(nowAllFields);\n if (callback) {\n if (expired.length) {\n expired.forEach(function (_ref3) {\n var name = _ref3.name;\n\n var fieldErrors = [{\n message: name + ' need to revalidate',\n field: name\n }];\n set(errorsGroup, name, {\n expired: true,\n errors: fieldErrors\n });\n });\n }\n\n callback(isEmptyObject(errorsGroup) ? null : errorsGroup, _this7.fieldsStore.getFieldsValue(fieldNames));\n }\n });\n },\n validateFields: function validateFields(ns, opt, cb) {\n var _this8 = this;\n\n var pending = new Promise(function (resolve, reject) {\n var _getParams = getParams(ns, opt, cb),\n names = _getParams.names,\n options = _getParams.options;\n\n var _getParams2 = getParams(ns, opt, cb),\n callback = _getParams2.callback;\n\n if (!callback || typeof callback === 'function') {\n var oldCb = callback;\n callback = function callback(errors, values) {\n if (oldCb) {\n oldCb(errors, values);\n } else if (errors) {\n reject({ errors: errors, values: values });\n } else {\n resolve(values);\n }\n };\n }\n var fieldNames = names ? _this8.fieldsStore.getValidFieldsFullName(names) : _this8.fieldsStore.getValidFieldsName();\n var fields = fieldNames.filter(function (name) {\n var fieldMeta = _this8.fieldsStore.getFieldMeta(name);\n return hasRules(fieldMeta.validate);\n }).map(function (name) {\n var field = _this8.fieldsStore.getField(name);\n field.value = _this8.fieldsStore.getFieldValue(name);\n return field;\n });\n if (!fields.length) {\n callback(null, _this8.fieldsStore.getFieldsValue(fieldNames));\n return;\n }\n if (!('firstFields' in options)) {\n options.firstFields = fieldNames.filter(function (name) {\n var fieldMeta = _this8.fieldsStore.getFieldMeta(name);\n return !!fieldMeta.validateFirst;\n });\n }\n _this8.validateFieldsInternal(fields, {\n fieldNames: fieldNames,\n options: options\n }, callback);\n });\n pending['catch'](function (e) {\n if (console.error && process.env.NODE_ENV !== 'production') {\n console.error(e);\n }\n return e;\n });\n return pending;\n },\n isSubmitting: function isSubmitting() {\n if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\n warning(false, '`isSubmitting` is deprecated. ' + \"Actually, it's more convenient to handle submitting status by yourself.\");\n }\n return this.submitting;\n },\n submit: function submit(callback) {\n var _this9 = this;\n\n if (process.env.NODE_ENV !== 'production' && process.env.NODE_ENV !== 'test') {\n warning(false, '`submit` is deprecated. ' + \"Actually, it's more convenient to handle submitting status by yourself.\");\n }\n var fn = function fn() {\n _this9.setState({\n submitting: false\n });\n };\n this.setState({\n submitting: true\n });\n callback(fn);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var $slots = this.$slots,\n $scopedSlots = this.$scopedSlots;\n\n var formProps = _defineProperty({}, formPropName, this.getForm());\n\n var _getOptionProps = getOptionProps(this),\n wrappedComponentRef = _getOptionProps.wrappedComponentRef,\n restProps = _objectWithoutProperties(_getOptionProps, ['wrappedComponentRef']);\n\n var wrappedComponentProps = {\n props: mapProps.call(this, _extends({}, formProps, restProps)),\n on: getListeners(this),\n ref: 'WrappedComponent',\n directives: [{\n name: 'ant-ref',\n value: wrappedComponentRef\n }]\n };\n if (Object.keys($scopedSlots).length) {\n wrappedComponentProps.scopedSlots = $scopedSlots;\n }\n var slotsKey = Object.keys($slots);\n return WrappedComponent ? h(\n WrappedComponent,\n wrappedComponentProps,\n [slotsKey.length ? slotsKey.map(function (name) {\n return h(\n 'template',\n { slot: name },\n [$slots[name]]\n );\n }) : null]\n ) : null;\n }\n };\n if (!WrappedComponent) return Form;\n if (Array.isArray(WrappedComponent.props)) {\n var newProps = {};\n WrappedComponent.props.forEach(function (prop) {\n newProps[prop] = PropTypes.any;\n });\n newProps[formPropName] = Object;\n WrappedComponent.props = newProps;\n } else {\n WrappedComponent.props = WrappedComponent.props || {};\n if (!(formPropName in WrappedComponent.props)) {\n WrappedComponent.props[formPropName] = Object;\n }\n }\n return argumentContainer(Form, WrappedComponent);\n };\n}\n\nexport default createBaseForm;","import createBaseForm from './createBaseForm';\n\nexport var mixin = {\n methods: {\n getForm: function getForm() {\n return {\n getFieldsValue: this.fieldsStore.getFieldsValue,\n getFieldValue: this.fieldsStore.getFieldValue,\n getFieldInstance: this.getFieldInstance,\n setFieldsValue: this.setFieldsValue,\n setFields: this.setFields,\n setFieldsInitialValue: this.fieldsStore.setFieldsInitialValue,\n getFieldDecorator: this.getFieldDecorator,\n getFieldProps: this.getFieldProps,\n getFieldsError: this.fieldsStore.getFieldsError,\n getFieldError: this.fieldsStore.getFieldError,\n isFieldValidating: this.fieldsStore.isFieldValidating,\n isFieldsValidating: this.fieldsStore.isFieldsValidating,\n isFieldsTouched: this.fieldsStore.isFieldsTouched,\n isFieldTouched: this.fieldsStore.isFieldTouched,\n isSubmitting: this.isSubmitting,\n submit: this.submit,\n validateFields: this.validateFields,\n resetFields: this.resetFields\n };\n }\n }\n};\n\nfunction createForm(options) {\n return createBaseForm(options, [mixin]);\n}\n\nexport default createForm;","import _extends from 'babel-runtime/helpers/extends';\nimport scrollIntoView from 'dom-scroll-into-view';\nimport has from 'lodash/has';\nimport createBaseForm from './createBaseForm';\nimport { mixin as formMixin } from './createForm';\nimport { getParams } from './utils';\n\nfunction computedStyle(el, prop) {\n var getComputedStyle = window.getComputedStyle;\n var style =\n // If we have getComputedStyle\n getComputedStyle ? // Query it\n // TODO: From CSS-Query notes, we might need (node, null) for FF\n getComputedStyle(el) : // Otherwise, we are in IE and use currentStyle\n el.currentStyle;\n if (style) {\n return style[\n // Switch to camelCase for CSSOM\n // DEV: Grabbed from jQuery\n // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194\n // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597\n prop.replace(/-(\\w)/gi, function (word, letter) {\n return letter.toUpperCase();\n })];\n }\n return undefined;\n}\n\nfunction getScrollableContainer(n) {\n var node = n;\n var nodeName = void 0;\n /* eslint no-cond-assign:0 */\n while ((nodeName = node.nodeName.toLowerCase()) !== 'body') {\n var overflowY = computedStyle(node, 'overflowY');\n // https://stackoverflow.com/a/36900407/3040605\n if (node !== n && (overflowY === 'auto' || overflowY === 'scroll') && node.scrollHeight > node.clientHeight) {\n return node;\n }\n node = node.parentNode;\n }\n return nodeName === 'body' ? node.ownerDocument : node;\n}\n\nvar mixin = {\n methods: {\n getForm: function getForm() {\n return _extends({}, formMixin.methods.getForm.call(this), {\n validateFieldsAndScroll: this.validateFieldsAndScroll\n });\n },\n validateFieldsAndScroll: function validateFieldsAndScroll(ns, opt, cb) {\n var _this = this;\n\n var _getParams = getParams(ns, opt, cb),\n names = _getParams.names,\n callback = _getParams.callback,\n options = _getParams.options;\n\n var newCb = function newCb(error, values) {\n if (error) {\n var validNames = _this.fieldsStore.getValidFieldsName();\n var firstNode = void 0;\n var firstTop = void 0;\n validNames.forEach(function (name) {\n if (has(error, name)) {\n var instance = _this.getFieldInstance(name);\n if (instance) {\n var node = instance.$el || instance.elm;\n var top = node.getBoundingClientRect().top;\n if (node.type !== 'hidden' && (firstTop === undefined || firstTop > top)) {\n firstTop = top;\n firstNode = node;\n }\n }\n }\n });\n\n if (firstNode) {\n var c = options.container || getScrollableContainer(firstNode);\n scrollIntoView(firstNode, c, _extends({\n onlyScrollIfNeeded: true\n }, options.scroll));\n }\n }\n\n if (typeof callback === 'function') {\n callback(error, values);\n }\n };\n\n return this.validateFields(names, options, newCb);\n }\n }\n};\n\nfunction createDOMForm(option) {\n return createBaseForm(_extends({}, option), [mixin]);\n}\n\nexport default createDOMForm;","export var FIELD_META_PROP = 'data-__meta';\nexport var FIELD_DATA_PROP = 'data-__field';","import _typeof from 'babel-runtime/helpers/typeof';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport find from 'lodash/find';\nimport Row from '../grid/Row';\nimport Col, { ColProps } from '../grid/Col';\nimport warning from '../_util/warning';\nimport { FIELD_META_PROP, FIELD_DATA_PROP } from './constants';\nimport { initDefaultProps, getComponentFromProp, filterEmpty, getSlotOptions, isValidElement, getAllChildren } from '../_util/props-util';\nimport getTransitionProps from '../_util/getTransitionProps';\nimport BaseMixin from '../_util/BaseMixin';\nimport { cloneElement, cloneVNodes } from '../_util/vnode';\nimport Icon from '../icon';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nfunction noop() {}\n\nfunction intersperseSpace(list) {\n return list.reduce(function (current, item) {\n return [].concat(_toConsumableArray(current), [' ', item]);\n }, []).slice(1);\n}\nexport var FormItemProps = {\n id: PropTypes.string,\n htmlFor: PropTypes.string,\n prefixCls: PropTypes.string,\n label: PropTypes.any,\n labelCol: PropTypes.shape(ColProps).loose,\n wrapperCol: PropTypes.shape(ColProps).loose,\n help: PropTypes.any,\n extra: PropTypes.any,\n validateStatus: PropTypes.oneOf(['', 'success', 'warning', 'error', 'validating']),\n hasFeedback: PropTypes.bool,\n required: PropTypes.bool,\n colon: PropTypes.bool,\n fieldDecoratorId: PropTypes.string,\n fieldDecoratorOptions: PropTypes.object,\n selfUpdate: PropTypes.bool,\n labelAlign: PropTypes.oneOf(['left', 'right'])\n};\nfunction comeFromSlot() {\n var vnodes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var itemVnode = arguments[1];\n\n var isSlot = false;\n for (var i = 0, len = vnodes.length; i < len; i++) {\n var vnode = vnodes[i];\n if (vnode && (vnode === itemVnode || vnode.$vnode === itemVnode)) {\n isSlot = true;\n } else {\n var componentOptions = vnode.componentOptions || vnode.$vnode && vnode.$vnode.componentOptions;\n var children = componentOptions ? componentOptions.children : vnode.$children;\n isSlot = comeFromSlot(children, itemVnode);\n }\n if (isSlot) {\n break;\n }\n }\n return isSlot;\n}\n\nexport default {\n name: 'AFormItem',\n __ANT_FORM_ITEM: true,\n mixins: [BaseMixin],\n props: initDefaultProps(FormItemProps, {\n hasFeedback: false\n }),\n provide: function provide() {\n return {\n isFormItemChildren: true\n };\n },\n\n inject: {\n isFormItemChildren: { 'default': false },\n FormContext: { 'default': function _default() {\n return {};\n } },\n decoratorFormProps: { 'default': function _default() {\n return {};\n } },\n collectFormItemContext: { 'default': function _default() {\n return noop;\n } },\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return { helpShow: false };\n },\n\n computed: {\n itemSelfUpdate: function itemSelfUpdate() {\n return !!(this.selfUpdate === undefined ? this.FormContext.selfUpdate : this.selfUpdate);\n }\n },\n created: function created() {\n this.collectContext();\n },\n beforeUpdate: function beforeUpdate() {\n if (process.env.NODE_ENV !== 'production') {\n this.collectContext();\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.collectFormItemContext(this.$vnode && this.$vnode.context, 'delete');\n },\n mounted: function mounted() {\n var _$props = this.$props,\n help = _$props.help,\n validateStatus = _$props.validateStatus;\n\n warning(this.getControls(this.slotDefault, true).length <= 1 || help !== undefined || validateStatus !== undefined, 'Form.Item', 'Cannot generate `validateStatus` and `help` automatically, ' + 'while there are more than one `getFieldDecorator` in it.');\n warning(!this.fieldDecoratorId, 'Form.Item', '`fieldDecoratorId` is deprecated. please use `v-decorator={id, options}` instead.');\n },\n\n methods: {\n collectContext: function collectContext() {\n if (this.FormContext.form && this.FormContext.form.templateContext) {\n var templateContext = this.FormContext.form.templateContext;\n\n var vnodes = Object.values(templateContext.$slots || {}).reduce(function (a, b) {\n return [].concat(_toConsumableArray(a), _toConsumableArray(b));\n }, []);\n var isSlot = comeFromSlot(vnodes, this.$vnode);\n warning(!isSlot, 'You can not set FormItem from slot, please use slot-scope instead slot');\n var isSlotScope = false;\n // 进一步判断是否是通过slot-scope传递\n if (!isSlot && this.$vnode.context !== templateContext) {\n isSlotScope = comeFromSlot(this.$vnode.context.$children, templateContext.$vnode);\n }\n if (!isSlotScope && !isSlot) {\n this.collectFormItemContext(this.$vnode.context);\n }\n }\n },\n getHelpMessage: function getHelpMessage() {\n var help = getComponentFromProp(this, 'help');\n var onlyControl = this.getOnlyControl();\n if (help === undefined && onlyControl) {\n var errors = this.getField().errors;\n if (errors) {\n return intersperseSpace(errors.map(function (e, index) {\n var node = null;\n if (isValidElement(e)) {\n node = e;\n } else if (isValidElement(e.message)) {\n node = e.message;\n }\n return node ? cloneElement(node, { key: index }) : e.message;\n }));\n } else {\n return '';\n }\n }\n\n return help;\n },\n getControls: function getControls() {\n var childrenArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var recursively = arguments[1];\n\n var controls = [];\n for (var i = 0; i < childrenArray.length; i++) {\n if (!recursively && controls.length > 0) {\n break;\n }\n\n var child = childrenArray[i];\n if (!child.tag && child.text.trim() === '') {\n continue;\n }\n\n if (getSlotOptions(child).__ANT_FORM_ITEM) {\n continue;\n }\n var children = getAllChildren(child);\n var attrs = child.data && child.data.attrs || {};\n if (FIELD_META_PROP in attrs) {\n // And means FIELD_DATA_PROP in child.props, too.\n controls.push(child);\n } else if (children) {\n controls = controls.concat(this.getControls(children, recursively));\n }\n }\n return controls;\n },\n getOnlyControl: function getOnlyControl() {\n var child = this.getControls(this.slotDefault, false)[0];\n return child !== undefined ? child : null;\n },\n getChildAttr: function getChildAttr(prop) {\n var child = this.getOnlyControl();\n var data = {};\n if (!child) {\n return undefined;\n }\n if (child.data) {\n data = child.data;\n } else if (child.$vnode && child.$vnode.data) {\n data = child.$vnode.data;\n }\n return data[prop] || data.attrs[prop];\n },\n getId: function getId() {\n return this.getChildAttr('id');\n },\n getMeta: function getMeta() {\n return this.getChildAttr(FIELD_META_PROP);\n },\n getField: function getField() {\n return this.getChildAttr(FIELD_DATA_PROP);\n },\n getValidateStatus: function getValidateStatus() {\n var onlyControl = this.getOnlyControl();\n if (!onlyControl) {\n return '';\n }\n var field = this.getField();\n if (field.validating) {\n return 'validating';\n }\n if (field.errors) {\n return 'error';\n }\n var fieldValue = 'value' in field ? field.value : this.getMeta().initialValue;\n if (fieldValue !== undefined && fieldValue !== null && fieldValue !== '') {\n return 'success';\n }\n return '';\n },\n\n\n // Resolve duplicated ids bug between different forms\n // https://github.com/ant-design/ant-design/issues/7351\n onLabelClick: function onLabelClick() {\n var id = this.id || this.getId();\n if (!id) {\n return;\n }\n var formItemNode = this.$el;\n var control = formItemNode.querySelector('[id=\"' + id + '\"]');\n if (control && control.focus) {\n control.focus();\n }\n },\n onHelpAnimEnd: function onHelpAnimEnd(_key, helpShow) {\n this.helpShow = helpShow;\n if (!helpShow) {\n this.$forceUpdate();\n }\n },\n isRequired: function isRequired() {\n var required = this.required;\n\n if (required !== undefined) {\n return required;\n }\n if (this.getOnlyControl()) {\n var meta = this.getMeta() || {};\n var validate = meta.validate || [];\n\n return validate.filter(function (item) {\n return !!item.rules;\n }).some(function (item) {\n return item.rules.some(function (rule) {\n return rule.required;\n });\n });\n }\n return false;\n },\n renderHelp: function renderHelp(prefixCls) {\n var _this = this;\n\n var h = this.$createElement;\n\n var help = this.getHelpMessage();\n var children = help ? h(\n 'div',\n { 'class': prefixCls + '-explain', key: 'help' },\n [help]\n ) : null;\n if (children) {\n this.helpShow = !!children;\n }\n var transitionProps = getTransitionProps('show-help', {\n afterEnter: function afterEnter() {\n return _this.onHelpAnimEnd('help', true);\n },\n afterLeave: function afterLeave() {\n return _this.onHelpAnimEnd('help', false);\n }\n });\n return h(\n 'transition',\n _mergeJSXProps([transitionProps, { key: 'help' }]),\n [children]\n );\n },\n renderExtra: function renderExtra(prefixCls) {\n var h = this.$createElement;\n\n var extra = getComponentFromProp(this, 'extra');\n return extra ? h(\n 'div',\n { 'class': prefixCls + '-extra' },\n [extra]\n ) : null;\n },\n renderValidateWrapper: function renderValidateWrapper(prefixCls, c1, c2, c3) {\n var h = this.$createElement;\n\n var props = this.$props;\n var onlyControl = this.getOnlyControl;\n var validateStatus = props.validateStatus === undefined && onlyControl ? this.getValidateStatus() : props.validateStatus;\n\n var classes = prefixCls + '-item-control';\n if (validateStatus) {\n classes = classNames(prefixCls + '-item-control', {\n 'has-feedback': validateStatus && props.hasFeedback,\n 'has-success': validateStatus === 'success',\n 'has-warning': validateStatus === 'warning',\n 'has-error': validateStatus === 'error',\n 'is-validating': validateStatus === 'validating'\n });\n }\n var iconType = '';\n switch (validateStatus) {\n case 'success':\n iconType = 'check-circle';\n break;\n case 'warning':\n iconType = 'exclamation-circle';\n break;\n case 'error':\n iconType = 'close-circle';\n break;\n case 'validating':\n iconType = 'loading';\n break;\n default:\n iconType = '';\n break;\n }\n var icon = props.hasFeedback && iconType ? h(\n 'span',\n { 'class': prefixCls + '-item-children-icon' },\n [h(Icon, {\n attrs: { type: iconType, theme: iconType === 'loading' ? 'outlined' : 'filled' }\n })]\n ) : null;\n return h(\n 'div',\n { 'class': classes },\n [h(\n 'span',\n { 'class': prefixCls + '-item-children' },\n [c1, icon]\n ), c2, c3]\n );\n },\n renderWrapper: function renderWrapper(prefixCls, children) {\n var h = this.$createElement;\n\n var _ref = this.isFormItemChildren ? {} : this.FormContext,\n contextWrapperCol = _ref.wrapperCol;\n\n var wrapperCol = this.wrapperCol;\n\n var mergedWrapperCol = wrapperCol || contextWrapperCol || {};\n\n var style = mergedWrapperCol.style,\n id = mergedWrapperCol.id,\n on = mergedWrapperCol.on,\n restProps = _objectWithoutProperties(mergedWrapperCol, ['style', 'id', 'on']);\n\n var className = classNames(prefixCls + '-item-control-wrapper', mergedWrapperCol['class']);\n var colProps = {\n props: restProps,\n 'class': className,\n key: 'wrapper',\n style: style,\n id: id,\n on: on\n };\n return h(\n Col,\n colProps,\n [children]\n );\n },\n renderLabel: function renderLabel(prefixCls) {\n var _classNames;\n\n var h = this.$createElement;\n var _FormContext = this.FormContext,\n vertical = _FormContext.vertical,\n contextLabelAlign = _FormContext.labelAlign,\n contextLabelCol = _FormContext.labelCol,\n contextColon = _FormContext.colon;\n var labelAlign = this.labelAlign,\n labelCol = this.labelCol,\n colon = this.colon,\n id = this.id,\n htmlFor = this.htmlFor;\n\n var label = getComponentFromProp(this, 'label');\n var required = this.isRequired();\n var mergedLabelCol = labelCol || contextLabelCol || {};\n\n var mergedLabelAlign = labelAlign || contextLabelAlign;\n var labelClsBasic = prefixCls + '-item-label';\n var labelColClassName = classNames(labelClsBasic, mergedLabelAlign === 'left' && labelClsBasic + '-left', mergedLabelCol['class']);\n\n var labelColClass = mergedLabelCol['class'],\n labelColStyle = mergedLabelCol.style,\n labelColId = mergedLabelCol.id,\n on = mergedLabelCol.on,\n restProps = _objectWithoutProperties(mergedLabelCol, ['class', 'style', 'id', 'on']);\n\n var labelChildren = label;\n // Keep label is original where there should have no colon\n var computedColon = colon === true || contextColon !== false && colon !== false;\n var haveColon = computedColon && !vertical;\n // Remove duplicated user input colon\n if (haveColon && typeof label === 'string' && label.trim() !== '') {\n labelChildren = label.replace(/[::]\\s*$/, '');\n }\n\n var labelClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-item-required', required), _defineProperty(_classNames, prefixCls + '-item-no-colon', !computedColon), _classNames));\n var colProps = {\n props: restProps,\n 'class': labelColClassName,\n key: 'label',\n style: labelColStyle,\n id: labelColId,\n on: on\n };\n\n return label ? h(\n Col,\n colProps,\n [h(\n 'label',\n {\n attrs: {\n 'for': htmlFor || id || this.getId(),\n\n title: typeof label === 'string' ? label : ''\n },\n 'class': labelClassName, on: {\n 'click': this.onLabelClick\n }\n },\n [labelChildren]\n )]\n ) : null;\n },\n renderChildren: function renderChildren(prefixCls) {\n return [this.renderLabel(prefixCls), this.renderWrapper(prefixCls, this.renderValidateWrapper(prefixCls, this.slotDefault, this.renderHelp(prefixCls), this.renderExtra(prefixCls)))];\n },\n renderFormItem: function renderFormItem() {\n var _itemClassName;\n\n var h = this.$createElement;\n var customizePrefixCls = this.$props.prefixCls;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('form', customizePrefixCls);\n var children = this.renderChildren(prefixCls);\n var itemClassName = (_itemClassName = {}, _defineProperty(_itemClassName, prefixCls + '-item', true), _defineProperty(_itemClassName, prefixCls + '-item-with-help', this.helpShow), _itemClassName);\n\n return h(\n Row,\n { 'class': classNames(itemClassName), key: 'row' },\n [children]\n );\n },\n decoratorOption: function decoratorOption(vnode) {\n if (vnode.data && vnode.data.directives) {\n var directive = find(vnode.data.directives, ['name', 'decorator']);\n warning(!directive || directive && Array.isArray(directive.value), 'Form', 'Invalid directive: type check failed for directive \"decorator\". Expected Array, got ' + _typeof(directive ? directive.value : directive) + '. At ' + vnode.tag + '.');\n return directive ? directive.value : null;\n } else {\n return null;\n }\n },\n decoratorChildren: function decoratorChildren(vnodes) {\n var FormContext = this.FormContext;\n\n var getFieldDecorator = FormContext.form.getFieldDecorator;\n for (var i = 0, len = vnodes.length; i < len; i++) {\n var vnode = vnodes[i];\n if (getSlotOptions(vnode).__ANT_FORM_ITEM) {\n break;\n }\n if (vnode.children) {\n vnode.children = this.decoratorChildren(cloneVNodes(vnode.children));\n } else if (vnode.componentOptions && vnode.componentOptions.children) {\n vnode.componentOptions.children = this.decoratorChildren(cloneVNodes(vnode.componentOptions.children));\n }\n var option = this.decoratorOption(vnode);\n if (option && option[0]) {\n vnodes[i] = getFieldDecorator(option[0], option[1], this)(vnode);\n }\n }\n return vnodes;\n }\n },\n\n render: function render() {\n var $slots = this.$slots,\n decoratorFormProps = this.decoratorFormProps,\n fieldDecoratorId = this.fieldDecoratorId,\n _fieldDecoratorOption = this.fieldDecoratorOptions,\n fieldDecoratorOptions = _fieldDecoratorOption === undefined ? {} : _fieldDecoratorOption,\n FormContext = this.FormContext;\n\n var child = filterEmpty($slots['default'] || []);\n if (decoratorFormProps.form && fieldDecoratorId && child.length) {\n var getFieldDecorator = decoratorFormProps.form.getFieldDecorator;\n child[0] = getFieldDecorator(fieldDecoratorId, fieldDecoratorOptions, this)(child[0]);\n warning(!(child.length > 1), 'Form', '`autoFormCreate` just `decorator` then first children. but you can use JSX to support multiple children');\n this.slotDefault = child;\n } else if (FormContext.form) {\n child = cloneVNodes(child);\n this.slotDefault = this.decoratorChildren(child);\n } else {\n this.slotDefault = child;\n }\n return this.renderFormItem();\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport { ColProps } from '../grid/Col';\nimport Vue from 'vue';\nimport isRegExp from 'lodash/isRegExp';\nimport warning from '../_util/warning';\nimport createDOMForm from '../vc-form/src/createDOMForm';\nimport createFormField from '../vc-form/src/createFormField';\nimport FormItem from './FormItem';\nimport { FIELD_META_PROP, FIELD_DATA_PROP } from './constants';\nimport { initDefaultProps, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nexport var FormCreateOption = {\n onFieldsChange: PropTypes.func,\n onValuesChange: PropTypes.func,\n mapPropsToFields: PropTypes.func,\n validateMessages: PropTypes.any,\n withRef: PropTypes.bool,\n name: PropTypes.string\n};\n\n// function create\nexport var WrappedFormUtils = {\n /** 获取一组输入控件的值,如不传入参数,则获取全部组件的值 */\n getFieldsValue: PropTypes.func,\n /** 获取一个输入控件的值*/\n getFieldValue: PropTypes.func,\n /** 设置一组输入控件的值*/\n setFieldsValue: PropTypes.func,\n /** 设置一组输入控件的值*/\n setFields: PropTypes.func,\n /** 校验并获取一组输入域的值与 Error */\n validateFields: PropTypes.func,\n // validateFields(fieldNames: Array, options: Object, callback: ValidateCallback): void;\n // validateFields(fieldNames: Array, callback: ValidateCallback): void;\n // validateFields(options: Object, callback: ValidateCallback): void;\n // validateFields(callback: ValidateCallback): void;\n // validateFields(): void;\n /** 与 `validateFields` 相似,但校验完后,如果校验不通过的菜单域不在可见范围内,则自动滚动进可见范围 */\n validateFieldsAndScroll: PropTypes.func,\n // validateFieldsAndScroll(fieldNames?: Array, options?: Object, callback?: ValidateCallback): void;\n // validateFieldsAndScroll(fieldNames?: Array, callback?: ValidateCallback): void;\n // validateFieldsAndScroll(options?: Object, callback?: ValidateCallback): void;\n // validateFieldsAndScroll(callback?: ValidateCallback): void;\n // validateFieldsAndScroll(): void;\n /** 获取某个输入控件的 Error */\n getFieldError: PropTypes.func,\n getFieldsError: PropTypes.func,\n /** 判断一个输入控件是否在校验状态*/\n isFieldValidating: PropTypes.func,\n isFieldTouched: PropTypes.func,\n isFieldsTouched: PropTypes.func,\n /** 重置一组输入控件的值与状态,如不传入参数,则重置所有组件 */\n resetFields: PropTypes.func,\n\n getFieldDecorator: PropTypes.func\n};\n\nexport var FormProps = {\n layout: PropTypes.oneOf(['horizontal', 'inline', 'vertical']),\n labelCol: PropTypes.shape(ColProps).loose,\n wrapperCol: PropTypes.shape(ColProps).loose,\n colon: PropTypes.bool,\n labelAlign: PropTypes.oneOf(['left', 'right']),\n form: PropTypes.object,\n // onSubmit: React.FormEventHandler;\n prefixCls: PropTypes.string,\n hideRequiredMark: PropTypes.bool,\n autoFormCreate: PropTypes.func,\n options: PropTypes.object,\n selfUpdate: PropTypes.bool\n};\n\nexport var ValidationRule = {\n /** validation error message */\n message: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /** built-in validation type, available options: https://github.com/yiminghe/async-validator#type */\n type: PropTypes.string,\n /** indicates whether field is required */\n required: PropTypes.boolean,\n /** treat required fields that only contain whitespace as errors */\n whitespace: PropTypes.boolean,\n /** validate the exact length of a field */\n len: PropTypes.number,\n /** validate the min length of a field */\n min: PropTypes.number,\n /** validate the max length of a field */\n max: PropTypes.number,\n /** validate the value from a list of possible values */\n 'enum': PropTypes.oneOfType([String, PropTypes.arrayOf(String)]),\n /** validate from a regular expression */\n pattern: PropTypes.custom(isRegExp),\n /** transform a value before validation */\n transform: PropTypes.func,\n /** custom validate function (Note: callback must be called) */\n validator: PropTypes.func\n};\n\n// export type ValidateCallback = (errors: any, values: any) => void;\n\n// export type GetFieldDecoratorOptions = {\n// /** 子节点的值的属性,如 Checkbox 的是 'checked' */\n// valuePropName?: string;\n// /** 子节点的初始值,类型、可选值均由子节点决定 */\n// initialValue?: any;\n// /** 收集子节点的值的时机 */\n// trigger?: string;\n// /** 可以把 onChange 的参数转化为控件的值,例如 DatePicker 可设为:(date, dateString) => dateString */\n// getValueFromEvent?: (...args: any[]) => any;\n// /** Get the component props according to field value. */\n// getValueProps?: (value: any) => any;\n// /** 校验子节点值的时机 */\n// validateTrigger?: string | string[];\n// /** 校验规则,参见 [async-validator](https://github.com/yiminghe/async-validator) */\n// rules?: ValidationRule[];\n// /** 是否和其他控件互斥,特别用于 Radio 单选控件 */\n// exclusive?: boolean;\n// /** Normalize value to form component */\n// normalize?: (value: any, prevValue: any, allValues: any) => any;\n// /** Whether stop validate on first rule of error for this field. */\n// validateFirst?: boolean;\n// /** 是否一直保留子节点的信息 */\n// preserve?: boolean;\n// };\n\nvar Form = {\n name: 'AForm',\n props: initDefaultProps(FormProps, {\n layout: 'horizontal',\n hideRequiredMark: false,\n colon: true\n }),\n Item: FormItem,\n createFormField: createFormField,\n create: function create() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n return createDOMForm(_extends({\n fieldNameProp: 'id'\n }, options, {\n fieldMetaProp: FIELD_META_PROP,\n fieldDataProp: FIELD_DATA_PROP\n }));\n },\n createForm: function createForm(context) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var V = Base.Vue || Vue;\n return new V(Form.create(_extends({}, options, { templateContext: context }))());\n },\n created: function created() {\n this.formItemContexts = new Map();\n },\n provide: function provide() {\n var _this = this;\n\n return {\n FormContext: this,\n // https://github.com/vueComponent/ant-design-vue/issues/446\n collectFormItemContext: this.form && this.form.templateContext ? function (c) {\n var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'add';\n\n var formItemContexts = _this.formItemContexts;\n var number = formItemContexts.get(c) || 0;\n if (type === 'delete') {\n if (number <= 1) {\n formItemContexts['delete'](c);\n } else {\n formItemContexts.set(c, number - 1);\n }\n } else {\n if (c !== _this.form.templateContext) {\n formItemContexts.set(c, number + 1);\n }\n }\n } : function () {}\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n watch: {\n form: function form() {\n this.$forceUpdate();\n }\n },\n computed: {\n vertical: function vertical() {\n return this.layout === 'vertical';\n }\n },\n beforeUpdate: function beforeUpdate() {\n this.formItemContexts.forEach(function (number, c) {\n if (c.$forceUpdate) {\n c.$forceUpdate();\n }\n });\n },\n updated: function updated() {\n if (this.form && this.form.cleanUpUselessFields) {\n this.form.cleanUpUselessFields();\n }\n },\n\n methods: {\n onSubmit: function onSubmit(e) {\n if (!getListeners(this).submit) {\n e.preventDefault();\n } else {\n this.$emit('submit', e);\n }\n }\n },\n\n render: function render() {\n var _classNames,\n _this2 = this;\n\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n hideRequiredMark = this.hideRequiredMark,\n layout = this.layout,\n onSubmit = this.onSubmit,\n $slots = this.$slots,\n autoFormCreate = this.autoFormCreate,\n _options = this.options,\n options = _options === undefined ? {} : _options;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('form', customizePrefixCls);\n\n var formClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-horizontal', layout === 'horizontal'), _defineProperty(_classNames, prefixCls + '-vertical', layout === 'vertical'), _defineProperty(_classNames, prefixCls + '-inline', layout === 'inline'), _defineProperty(_classNames, prefixCls + '-hide-required-mark', hideRequiredMark), _classNames));\n if (autoFormCreate) {\n warning(false, 'Form', '`autoFormCreate` is deprecated. please use `form` instead.');\n var DomForm = this.DomForm || createDOMForm(_extends({\n fieldNameProp: 'id'\n }, options, {\n fieldMetaProp: FIELD_META_PROP,\n fieldDataProp: FIELD_DATA_PROP,\n templateContext: this.$vnode.context\n }))({\n provide: function provide() {\n return {\n decoratorFormProps: this.$props\n };\n },\n data: function data() {\n return {\n children: $slots['default'],\n formClassName: formClassName,\n submit: onSubmit\n };\n },\n created: function created() {\n autoFormCreate(this.form);\n },\n render: function render() {\n var h = arguments[0];\n var children = this.children,\n formClassName = this.formClassName,\n submit = this.submit;\n\n return h(\n 'form',\n {\n on: {\n 'submit': submit\n },\n 'class': formClassName },\n [children]\n );\n }\n });\n if (this.domForm) {\n this.domForm.children = $slots['default'];\n this.domForm.submit = onSubmit;\n this.domForm.formClassName = formClassName;\n }\n this.DomForm = DomForm;\n\n return h(DomForm, {\n attrs: {\n wrappedComponentRef: function wrappedComponentRef(inst) {\n _this2.domForm = inst;\n }\n }\n });\n }\n return h(\n 'form',\n {\n on: {\n 'submit': onSubmit\n },\n 'class': formClassName },\n [$slots['default']]\n );\n }\n};\n\nexport default Form;","import Vue from 'vue';\nimport Form from './Form';\nimport ref from 'vue-ref';\nimport FormDecoratorDirective from '../_util/FormDecoratorDirective';\nimport Base from '../base';\n\nVue.use(ref, { name: 'ant-ref' });\nVue.use(FormDecoratorDirective);\nVue.prototype.$form = Form;\n\nexport { FormProps, FormCreateOption, ValidationRule } from './Form';\nexport { FormItemProps } from './FormItem';\n\n/* istanbul ignore next */\nForm.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Form.name, Form);\n Vue.component(Form.Item.name, Form.Item);\n Vue.prototype.$form = Form;\n};\n\nexport default Form;","import _extends from 'babel-runtime/helpers/extends';\nimport AsyncValidator from 'async-validator';\nimport cloneDeep from 'lodash/cloneDeep';\nimport PropTypes from '../_util/vue-types';\nimport { ColProps } from '../grid/Col';\nimport { initDefaultProps, getComponentFromProp, getOptionProps, getEvents, filterEmpty, isValidElement } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport FormItem from '../form/FormItem';\nimport { cloneElement } from '../_util/vnode';\n\nfunction noop() {}\n\nfunction getPropByPath(obj, path, strict) {\n var tempObj = obj;\n path = path.replace(/\\[(\\w+)\\]/g, '.$1');\n path = path.replace(/^\\./, '');\n\n var keyArr = path.split('.');\n var i = 0;\n for (var len = keyArr.length; i < len - 1; ++i) {\n if (!tempObj && !strict) break;\n var key = keyArr[i];\n if (key in tempObj) {\n tempObj = tempObj[key];\n } else {\n if (strict) {\n throw new Error('please transfer a valid prop path to form item!');\n }\n break;\n }\n }\n return {\n o: tempObj,\n k: keyArr[i],\n v: tempObj ? tempObj[keyArr[i]] : null\n };\n}\nexport var FormItemProps = {\n id: PropTypes.string,\n htmlFor: PropTypes.string,\n prefixCls: PropTypes.string,\n label: PropTypes.any,\n help: PropTypes.any,\n extra: PropTypes.any,\n labelCol: PropTypes.shape(ColProps).loose,\n wrapperCol: PropTypes.shape(ColProps).loose,\n hasFeedback: PropTypes.bool,\n colon: PropTypes.bool,\n labelAlign: PropTypes.oneOf(['left', 'right']),\n prop: PropTypes.string,\n rules: PropTypes.oneOfType([Array, Object]),\n autoLink: PropTypes.bool,\n required: PropTypes.bool,\n validateStatus: PropTypes.oneOf(['', 'success', 'warning', 'error', 'validating'])\n};\n\nexport default {\n name: 'AFormModelItem',\n __ANT_NEW_FORM_ITEM: true,\n mixins: [BaseMixin],\n props: initDefaultProps(FormItemProps, {\n hasFeedback: false,\n autoLink: true\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } },\n FormContext: { 'default': function _default() {\n return {};\n } }\n },\n data: function data() {\n return {\n validateState: this.validateStatus,\n validateMessage: '',\n validateDisabled: false,\n validator: {}\n };\n },\n\n\n computed: {\n fieldValue: function fieldValue() {\n var model = this.FormContext.model;\n if (!model || !this.prop) {\n return;\n }\n var path = this.prop;\n if (path.indexOf(':') !== -1) {\n path = path.replace(/:/g, '.');\n }\n return getPropByPath(model, path, true).v;\n },\n isRequired: function isRequired() {\n var rules = this.getRules();\n var isRequired = false;\n if (rules && rules.length) {\n rules.every(function (rule) {\n if (rule.required) {\n isRequired = true;\n return false;\n }\n return true;\n });\n }\n return isRequired;\n }\n },\n watch: {\n validateStatus: function validateStatus(val) {\n this.validateState = val;\n }\n },\n mounted: function mounted() {\n if (this.prop) {\n var addField = this.FormContext.addField;\n\n addField && addField(this);\n this.initialValue = cloneDeep(this.fieldValue);\n }\n },\n beforeDestroy: function beforeDestroy() {\n var removeField = this.FormContext.removeField;\n\n removeField && removeField(this);\n },\n\n methods: {\n validate: function validate(trigger) {\n var _this = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n this.validateDisabled = false;\n var rules = this.getFilteredRule(trigger);\n if (!rules || rules.length === 0) {\n callback();\n return true;\n }\n this.validateState = 'validating';\n var descriptor = {};\n if (rules && rules.length > 0) {\n rules.forEach(function (rule) {\n delete rule.trigger;\n });\n }\n descriptor[this.prop] = rules;\n var validator = new AsyncValidator(descriptor);\n if (this.FormContext && this.FormContext.validateMessages) {\n validator.messages(this.FormContext.validateMessages);\n }\n var model = {};\n model[this.prop] = this.fieldValue;\n validator.validate(model, { firstFields: true }, function (errors, invalidFields) {\n _this.validateState = errors ? 'error' : 'success';\n _this.validateMessage = errors ? errors[0].message : '';\n callback(_this.validateMessage, invalidFields);\n _this.FormContext && _this.FormContext.$emit && _this.FormContext.$emit('validate', _this.prop, !errors, _this.validateMessage || null);\n });\n },\n getRules: function getRules() {\n var formRules = this.FormContext.rules;\n var selfRules = this.rules;\n var requiredRule = this.required !== undefined ? { required: !!this.required, trigger: 'change' } : [];\n var prop = getPropByPath(formRules, this.prop || '');\n formRules = formRules ? prop.o[this.prop || ''] || prop.v : [];\n return [].concat(selfRules || formRules || []).concat(requiredRule);\n },\n getFilteredRule: function getFilteredRule(trigger) {\n var rules = this.getRules();\n return rules.filter(function (rule) {\n if (!rule.trigger || trigger === '') return true;\n if (Array.isArray(rule.trigger)) {\n return rule.trigger.indexOf(trigger) > -1;\n } else {\n return rule.trigger === trigger;\n }\n }).map(function (rule) {\n return _extends({}, rule);\n });\n },\n onFieldBlur: function onFieldBlur() {\n this.validate('blur');\n },\n onFieldChange: function onFieldChange() {\n if (this.validateDisabled) {\n this.validateDisabled = false;\n return;\n }\n this.validate('change');\n },\n clearValidate: function clearValidate() {\n this.validateState = '';\n this.validateMessage = '';\n this.validateDisabled = false;\n },\n resetField: function resetField() {\n var _this2 = this;\n\n this.validateState = '';\n this.validateMessage = '';\n var model = this.FormContext.model || {};\n var value = this.fieldValue;\n var path = this.prop;\n if (path.indexOf(':') !== -1) {\n path = path.replace(/:/, '.');\n }\n var prop = getPropByPath(model, path, true);\n this.validateDisabled = true;\n if (Array.isArray(value)) {\n prop.o[prop.k] = [].concat(this.initialValue);\n } else {\n prop.o[prop.k] = this.initialValue;\n }\n // reset validateDisabled after onFieldChange triggered\n this.$nextTick(function () {\n _this2.validateDisabled = false;\n });\n }\n },\n render: function render() {\n var _this3 = this;\n\n var h = arguments[0];\n var $slots = this.$slots,\n $scopedSlots = this.$scopedSlots;\n\n var props = getOptionProps(this);\n var label = getComponentFromProp(this, 'label');\n var extra = getComponentFromProp(this, 'extra');\n var help = getComponentFromProp(this, 'help');\n var formProps = {\n props: _extends({}, props, {\n label: label,\n extra: extra,\n validateStatus: this.validateState,\n help: this.validateMessage || help,\n required: this.isRequired || props.required\n })\n };\n var children = filterEmpty($scopedSlots['default'] ? $scopedSlots['default']() : $slots['default']);\n var firstChildren = children[0];\n if (this.prop && this.autoLink && isValidElement(firstChildren)) {\n var originalEvents = getEvents(firstChildren);\n var originalBlur = originalEvents.blur;\n var originalChange = originalEvents.change;\n firstChildren = cloneElement(firstChildren, {\n on: {\n blur: function blur() {\n originalBlur && originalBlur.apply(undefined, arguments);\n _this3.onFieldBlur();\n },\n change: function change() {\n if (Array.isArray(originalChange)) {\n for (var i = 0, l = originalChange.length; i < l; i++) {\n originalChange[i].apply(originalChange, arguments);\n }\n } else if (originalChange) {\n originalChange.apply(undefined, arguments);\n }\n _this3.onFieldChange();\n }\n }\n });\n }\n return h(\n FormItem,\n formProps,\n [firstChildren, children.slice(1)]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport { ColProps } from '../grid/Col';\nimport isRegExp from 'lodash/isRegExp';\nimport warning from '../_util/warning';\nimport FormItem from './FormItem';\nimport { initDefaultProps, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport var FormProps = {\n layout: PropTypes.oneOf(['horizontal', 'inline', 'vertical']),\n labelCol: PropTypes.shape(ColProps).loose,\n wrapperCol: PropTypes.shape(ColProps).loose,\n colon: PropTypes.bool,\n labelAlign: PropTypes.oneOf(['left', 'right']),\n prefixCls: PropTypes.string,\n hideRequiredMark: PropTypes.bool,\n model: PropTypes.object,\n rules: PropTypes.object,\n validateMessages: PropTypes.any,\n validateOnRuleChange: PropTypes.bool\n};\n\nexport var ValidationRule = {\n /** validation error message */\n message: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n /** built-in validation type, available options: https://github.com/yiminghe/async-validator#type */\n type: PropTypes.string,\n /** indicates whether field is required */\n required: PropTypes.boolean,\n /** treat required fields that only contain whitespace as errors */\n whitespace: PropTypes.boolean,\n /** validate the exact length of a field */\n len: PropTypes.number,\n /** validate the min length of a field */\n min: PropTypes.number,\n /** validate the max length of a field */\n max: PropTypes.number,\n /** validate the value from a list of possible values */\n 'enum': PropTypes.oneOfType([String, PropTypes.arrayOf(String)]),\n /** validate from a regular expression */\n pattern: PropTypes.custom(isRegExp),\n /** transform a value before validation */\n transform: PropTypes.func,\n /** custom validate function (Note: callback must be called) */\n validator: PropTypes.func\n};\n\nvar Form = {\n name: 'AFormModel',\n props: initDefaultProps(FormProps, {\n layout: 'horizontal',\n hideRequiredMark: false,\n colon: true,\n validateOnRuleChange: false\n }),\n Item: FormItem,\n created: function created() {\n this.fields = [];\n },\n provide: function provide() {\n return {\n FormContext: this\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n watch: {\n rules: function rules() {\n if (this.validateOnRuleChange) {\n this.validate(function () {});\n }\n }\n },\n computed: {\n vertical: function vertical() {\n return this.layout === 'vertical';\n }\n },\n methods: {\n addField: function addField(field) {\n if (field) {\n this.fields.push(field);\n }\n },\n removeField: function removeField(field) {\n if (field.prop) {\n this.fields.splice(this.fields.indexOf(field), 1);\n }\n },\n onSubmit: function onSubmit(e) {\n if (!getListeners(this).submit) {\n e.preventDefault();\n } else {\n this.$emit('submit', e);\n }\n },\n resetFields: function resetFields() {\n if (!this.model) {\n warning(false, 'FormModel', 'model is required for resetFields to work.');\n return;\n }\n this.fields.forEach(function (field) {\n field.resetField();\n });\n },\n clearValidate: function clearValidate() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var fields = props.length ? typeof props === 'string' ? this.fields.filter(function (field) {\n return props === field.prop;\n }) : this.fields.filter(function (field) {\n return props.indexOf(field.prop) > -1;\n }) : this.fields;\n fields.forEach(function (field) {\n field.clearValidate();\n });\n },\n validate: function validate(callback) {\n var _this = this;\n\n if (!this.model) {\n warning(false, 'FormModel', 'model is required for resetFields to work.');\n return;\n }\n var promise = void 0;\n // if no callback, return promise\n if (typeof callback !== 'function' && window.Promise) {\n promise = new window.Promise(function (resolve, reject) {\n callback = function callback(valid) {\n valid ? resolve(valid) : reject(valid);\n };\n });\n }\n var valid = true;\n var count = 0;\n // 如果需要验证的fields为空,调用验证时立刻返回callback\n if (this.fields.length === 0 && callback) {\n callback(true);\n }\n var invalidFields = {};\n this.fields.forEach(function (field) {\n field.validate('', function (message, field) {\n if (message) {\n valid = false;\n }\n invalidFields = _extends({}, invalidFields, field);\n if (typeof callback === 'function' && ++count === _this.fields.length) {\n callback(valid, invalidFields);\n }\n });\n });\n if (promise) {\n return promise;\n }\n },\n validateField: function validateField(props, cb) {\n props = [].concat(props);\n var fields = this.fields.filter(function (field) {\n return props.indexOf(field.prop) !== -1;\n });\n if (!fields.length) {\n warning(false, 'FormModel', 'please pass correct props!');\n return;\n }\n fields.forEach(function (field) {\n field.validate('', cb);\n });\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n hideRequiredMark = this.hideRequiredMark,\n layout = this.layout,\n onSubmit = this.onSubmit,\n $slots = this.$slots;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('form', customizePrefixCls);\n\n var formClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-horizontal', layout === 'horizontal'), _defineProperty(_classNames, prefixCls + '-vertical', layout === 'vertical'), _defineProperty(_classNames, prefixCls + '-inline', layout === 'inline'), _defineProperty(_classNames, prefixCls + '-hide-required-mark', hideRequiredMark), _classNames));\n return h(\n 'form',\n {\n on: {\n 'submit': onSubmit\n },\n 'class': formClassName },\n [$slots['default']]\n );\n }\n};\n\nexport default Form;","import Vue from 'vue';\nimport Form from './Form';\nimport ref from 'vue-ref';\nimport FormDecoratorDirective from '../_util/FormDecoratorDirective';\nimport Base from '../base';\n\nVue.use(ref, { name: 'ant-ref' });\nVue.use(FormDecoratorDirective);\n\nexport { FormProps, ValidationRule } from './Form';\nexport { FormItemProps } from './FormItem';\n\n/* istanbul ignore next */\nForm.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Form.name, Form);\n Vue.component(Form.Item.name, Form.Item);\n};\n\nexport default Form;","import PropTypes from '../../_util/vue-types';\n\nexport var ITouchProps = {\n disabled: PropTypes.bool,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.any\n // onTouchStart: PropTypes.func,\n // onTouchEnd: PropTypes.func,\n // onTouchCancel: PropTypes.func,\n // onMouseDown: PropTypes.func,\n // onMouseUp: PropTypes.func,\n // onMouseLeave: PropTypes.func,\n};","import _extends from 'babel-runtime/helpers/extends';\nimport { initDefaultProps } from '../../_util/props-util';\nimport { cloneElement } from '../../_util/vnode';\nimport warning from '../../_util/warning';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { ITouchProps } from './PropTypes';\n\nexport default {\n name: 'TouchFeedback',\n mixins: [BaseMixin],\n props: initDefaultProps(ITouchProps, {\n disabled: false\n }),\n data: function data() {\n return {\n active: false\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.disabled && _this.active) {\n _this.setState({\n active: false\n });\n }\n });\n },\n\n methods: {\n triggerEvent: function triggerEvent(type, isActive, ev) {\n // 暂时仅有input-number用到,事件直接到挂载到Touchable上,不需要像antd那样从子组件触发\n this.$emit(type, ev);\n if (isActive !== this.active) {\n this.setState({\n active: isActive\n });\n }\n },\n onTouchStart: function onTouchStart(e) {\n this.triggerEvent('touchstart', true, e);\n },\n onTouchMove: function onTouchMove(e) {\n this.triggerEvent('touchmove', false, e);\n },\n onTouchEnd: function onTouchEnd(e) {\n this.triggerEvent('touchend', false, e);\n },\n onTouchCancel: function onTouchCancel(e) {\n this.triggerEvent('touchcancel', false, e);\n },\n onMouseDown: function onMouseDown(e) {\n // pc simulate mobile\n this.triggerEvent('mousedown', true, e);\n },\n onMouseUp: function onMouseUp(e) {\n this.triggerEvent('mouseup', false, e);\n },\n onMouseLeave: function onMouseLeave(e) {\n this.triggerEvent('mouseleave', false, e);\n }\n },\n render: function render() {\n var _$props = this.$props,\n disabled = _$props.disabled,\n _$props$activeClassNa = _$props.activeClassName,\n activeClassName = _$props$activeClassNa === undefined ? '' : _$props$activeClassNa,\n _$props$activeStyle = _$props.activeStyle,\n activeStyle = _$props$activeStyle === undefined ? {} : _$props$activeStyle;\n\n\n var child = this.$slots['default'];\n if (child.length !== 1) {\n warning(false, 'm-feedback组件只能包含一个子元素');\n return null;\n }\n var childProps = {\n on: disabled ? {} : {\n touchstart: this.onTouchStart,\n touchmove: this.onTouchMove,\n touchend: this.onTouchEnd,\n touchcancel: this.onTouchCancel,\n mousedown: this.onMouseDown,\n mouseup: this.onMouseUp,\n mouseleave: this.onMouseLeave\n }\n };\n\n if (!disabled && this.active) {\n childProps = _extends({}, childProps, {\n style: activeStyle,\n 'class': activeClassName\n });\n }\n\n return cloneElement(child, childProps);\n }\n};","// based on 2.0.0\nimport TouchFeedback from './src/TouchFeedback';\nexport default TouchFeedback;","import PropTypes from '../../_util/vue-types';\nimport Touchable from '../../vc-m-feedback';\nimport { getListeners } from '../../_util/props-util';\n\nvar InputHandler = {\n name: 'InputHandler',\n props: {\n prefixCls: PropTypes.string,\n disabled: PropTypes.bool\n },\n render: function render() {\n var h = arguments[0];\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n disabled = _$props.disabled;\n\n var touchableProps = {\n props: {\n disabled: disabled,\n activeClassName: prefixCls + '-handler-active'\n },\n on: getListeners(this)\n };\n return h(\n Touchable,\n touchableProps,\n [h('span', [this.$slots['default']])]\n );\n }\n};\n\nexport default InputHandler;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\n// based on rc-input-number 4.5.5\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { initDefaultProps, hasProp, getOptionProps, getListeners } from '../../_util/props-util';\nimport classNames from 'classnames';\nimport KeyCode from '../../_util/KeyCode';\nimport InputHandler from './InputHandler';\n\nfunction noop() {}\n\nfunction preventDefault(e) {\n e.preventDefault();\n}\n\nfunction defaultParser(input) {\n return input.replace(/[^\\w\\.-]+/g, '');\n}\n\n/**\n * When click and hold on a button - the speed of auto changin the value.\n */\nvar SPEED = 200;\n\n/**\n * When click and hold on a button - the delay before auto changin the value.\n */\nvar DELAY = 600;\n\n/**\n * Max Safe Integer -- on IE this is not available, so manually set the number in that case.\n * The reason this is used, instead of Infinity is because numbers above the MSI are unstable\n */\nvar MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || Math.pow(2, 53) - 1;\n\nvar isValidProps = function isValidProps(value) {\n return value !== undefined && value !== null;\n};\n\nvar isEqual = function isEqual(oldValue, newValue) {\n return newValue === oldValue || typeof newValue === 'number' && typeof oldValue === 'number' && isNaN(newValue) && isNaN(oldValue);\n};\n\nvar inputNumberProps = {\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n focusOnUpDown: PropTypes.bool,\n autoFocus: PropTypes.bool,\n // onChange: PropTypes.func,\n // onKeyDown: PropTypes.func,\n // onKeyUp: PropTypes.func,\n prefixCls: PropTypes.string,\n tabIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n placeholder: PropTypes.string,\n disabled: PropTypes.bool,\n // onFocus: PropTypes.func,\n // onBlur: PropTypes.func,\n readonly: PropTypes.bool,\n max: PropTypes.number,\n min: PropTypes.number,\n step: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n upHandler: PropTypes.any,\n downHandler: PropTypes.any,\n useTouch: PropTypes.bool,\n formatter: PropTypes.func,\n parser: PropTypes.func,\n // onMouseEnter: PropTypes.func,\n // onMouseLeave: PropTypes.func,\n // onMouseOver: PropTypes.func,\n // onMouseOut: PropTypes.func,\n precision: PropTypes.number,\n required: PropTypes.bool,\n pattern: PropTypes.string,\n decimalSeparator: PropTypes.string,\n autoComplete: PropTypes.string,\n title: PropTypes.string,\n name: PropTypes.string,\n type: PropTypes.string,\n id: PropTypes.string\n};\n\nexport default {\n name: 'VCInputNumber',\n mixins: [BaseMixin],\n model: {\n prop: 'value',\n event: 'change'\n },\n props: initDefaultProps(inputNumberProps, {\n focusOnUpDown: true,\n useTouch: false,\n prefixCls: 'rc-input-number',\n min: -MAX_SAFE_INTEGER,\n step: 1,\n parser: defaultParser,\n required: false,\n autoComplete: 'off'\n }),\n data: function data() {\n var props = getOptionProps(this);\n this.prevProps = _extends({}, props);\n var value = void 0;\n if ('value' in props) {\n value = this.value;\n } else {\n value = this.defaultValue;\n }\n var validValue = this.getValidValue(this.toNumber(value));\n return {\n inputValue: this.toPrecisionAsStep(validValue),\n sValue: validValue,\n focused: this.autoFocus\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.autoFocus && !_this.disabled) {\n _this.focus();\n }\n _this.updatedFunc();\n });\n },\n updated: function updated() {\n var _this2 = this;\n\n var _$props = this.$props,\n value = _$props.value,\n max = _$props.max,\n min = _$props.min;\n var focused = this.$data.focused;\n var prevProps = this.prevProps;\n\n var props = getOptionProps(this);\n // Don't trigger in componentDidMount\n if (prevProps) {\n if (!isEqual(prevProps.value, value) || !isEqual(prevProps.max, max) || !isEqual(prevProps.min, min)) {\n var validValue = focused ? value : this.getValidValue(value);\n var nextInputValue = void 0;\n if (this.pressingUpOrDown) {\n nextInputValue = validValue;\n } else if (this.inputting) {\n nextInputValue = this.rawInput;\n } else {\n nextInputValue = this.toPrecisionAsStep(validValue);\n }\n this.setState({\n // eslint-disable-line\n sValue: validValue,\n inputValue: nextInputValue\n });\n }\n\n // Trigger onChange when max or min change\n // https://github.com/ant-design/ant-design/issues/11574\n var nextValue = 'value' in props ? value : this.sValue;\n // ref: null < 20 === true\n // https://github.com/ant-design/ant-design/issues/14277\n if ('max' in props && prevProps.max !== max && typeof nextValue === 'number' && nextValue > max) {\n this.$emit('change', max);\n }\n if ('min' in props && prevProps.min !== min && typeof nextValue === 'number' && nextValue < min) {\n this.$emit('change', min);\n }\n }\n this.prevProps = _extends({}, props);\n this.$nextTick(function () {\n _this2.updatedFunc();\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.stop();\n },\n\n methods: {\n updatedFunc: function updatedFunc() {\n var inputElem = this.$refs.inputRef;\n // Restore cursor\n try {\n // Firefox set the input cursor after it get focused.\n // This caused that if an input didn't init with the selection,\n // set will cause cursor not correct when first focus.\n // Safari will focus input if set selection. We need skip this.\n if (this.cursorStart !== undefined && this.focused) {\n // In most cases, the string after cursor is stable.\n // We can move the cursor before it\n\n if (\n // If not match full str, try to match part of str\n !this.partRestoreByAfter(this.cursorAfter) && this.sValue !== this.value) {\n // If not match any of then, let's just keep the position\n // TODO: Logic should not reach here, need check if happens\n var pos = this.cursorStart + 1;\n\n // If not have last string, just position to the end\n if (!this.cursorAfter) {\n pos = inputElem.value.length;\n } else if (this.lastKeyCode === KeyCode.BACKSPACE) {\n pos = this.cursorStart - 1;\n } else if (this.lastKeyCode === KeyCode.DELETE) {\n pos = this.cursorStart;\n }\n this.fixCaret(pos, pos);\n } else if (this.currentValue === inputElem.value) {\n // Handle some special key code\n switch (this.lastKeyCode) {\n case KeyCode.BACKSPACE:\n this.fixCaret(this.cursorStart - 1, this.cursorStart - 1);\n break;\n case KeyCode.DELETE:\n this.fixCaret(this.cursorStart + 1, this.cursorStart + 1);\n break;\n default:\n // Do nothing\n }\n }\n }\n } catch (e) {}\n // Do nothing\n\n // Reset last key\n this.lastKeyCode = null;\n\n // pressingUpOrDown is true means that someone just click up or down button\n if (!this.pressingUpOrDown) {\n return;\n }\n if (this.focusOnUpDown && this.focused) {\n if (document.activeElement !== inputElem) {\n this.focus();\n }\n }\n\n this.pressingUpOrDown = false;\n },\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === KeyCode.UP) {\n var ratio = this.getRatio(e);\n this.up(e, ratio);\n this.stop();\n } else if (e.keyCode === KeyCode.DOWN) {\n var _ratio = this.getRatio(e);\n this.down(e, _ratio);\n this.stop();\n } else if (e.keyCode === KeyCode.ENTER) {\n this.$emit('pressEnter', e);\n }\n // Trigger user key down\n this.recordCursorPosition();\n this.lastKeyCode = e.keyCode;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n this.$emit.apply(this, ['keydown', e].concat(_toConsumableArray(args)));\n },\n onKeyUp: function onKeyUp(e) {\n this.stop();\n\n this.recordCursorPosition();\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n this.$emit.apply(this, ['keyup', e].concat(_toConsumableArray(args)));\n },\n onTrigger: function onTrigger(e) {\n if (e.target.composing) return false;\n this.onChange(e);\n },\n onChange: function onChange(e) {\n if (this.focused) {\n this.inputting = true;\n }\n this.rawInput = this.parser(this.getValueFromEvent(e));\n this.setState({ inputValue: this.rawInput });\n this.$emit('change', this.toNumber(this.rawInput)); // valid number or invalid string\n },\n onFocus: function onFocus() {\n this.setState({\n focused: true\n });\n\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this.$emit.apply(this, ['focus'].concat(_toConsumableArray(args)));\n },\n onBlur: function onBlur() {\n this.inputting = false;\n this.setState({\n focused: false\n });\n var value = this.getCurrentValidValue(this.inputValue);\n var newValue = this.setValue(value);\n if (this.$listeners.blur) {\n var originValue = this.$refs.inputRef.value;\n var inputValue = this.getInputDisplayValue({ focused: false, sValue: newValue });\n this.$refs.inputRef.value = inputValue;\n\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n this.$emit.apply(this, ['blur'].concat(_toConsumableArray(args)));\n this.$refs.inputRef.value = originValue;\n }\n },\n getCurrentValidValue: function getCurrentValidValue(value) {\n var val = value;\n if (val === '') {\n val = '';\n } else if (!this.isNotCompleteNumber(parseFloat(val, 10))) {\n val = this.getValidValue(val);\n } else {\n val = this.sValue;\n }\n return this.toNumber(val);\n },\n getRatio: function getRatio(e) {\n var ratio = 1;\n if (e.metaKey || e.ctrlKey) {\n ratio = 0.1;\n } else if (e.shiftKey) {\n ratio = 10;\n }\n return ratio;\n },\n getValueFromEvent: function getValueFromEvent(e) {\n // optimize for chinese input expierence\n // https://github.com/ant-design/ant-design/issues/8196\n var value = e.target.value.trim().replace(/。/g, '.');\n\n if (isValidProps(this.decimalSeparator)) {\n value = value.replace(this.decimalSeparator, '.');\n }\n\n return value;\n },\n getValidValue: function getValidValue(value) {\n var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.min;\n var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.max;\n\n var val = parseFloat(value, 10);\n // https://github.com/ant-design/ant-design/issues/7358\n if (isNaN(val)) {\n return value;\n }\n if (val < min) {\n val = min;\n }\n if (val > max) {\n val = max;\n }\n return val;\n },\n setValue: function setValue(v, callback) {\n // trigger onChange\n var precision = this.$props.precision;\n\n var newValue = this.isNotCompleteNumber(parseFloat(v, 10)) ? null : parseFloat(v, 10);\n var _$data = this.$data,\n _$data$sValue = _$data.sValue,\n value = _$data$sValue === undefined ? null : _$data$sValue,\n _$data$inputValue = _$data.inputValue,\n inputValue = _$data$inputValue === undefined ? null : _$data$inputValue;\n // https://github.com/ant-design/ant-design/issues/7363\n // https://github.com/ant-design/ant-design/issues/16622\n\n var newValueInString = typeof newValue === 'number' ? newValue.toFixed(precision) : '' + newValue;\n var changed = newValue !== value || newValueInString !== '' + inputValue;\n if (!hasProp(this, 'value')) {\n this.setState({\n sValue: newValue,\n inputValue: this.toPrecisionAsStep(v)\n }, callback);\n } else {\n // always set input value same as value\n this.setState({\n inputValue: this.toPrecisionAsStep(this.sValue)\n }, callback);\n }\n if (changed) {\n this.$emit('change', newValue);\n }\n return newValue;\n },\n getPrecision: function getPrecision(value) {\n if (isValidProps(this.precision)) {\n return this.precision;\n }\n var valueString = value.toString();\n if (valueString.indexOf('e-') >= 0) {\n return parseInt(valueString.slice(valueString.indexOf('e-') + 2), 10);\n }\n var precision = 0;\n if (valueString.indexOf('.') >= 0) {\n precision = valueString.length - valueString.indexOf('.') - 1;\n }\n return precision;\n },\n\n // step={1.0} value={1.51}\n // press +\n // then value should be 2.51, rather than 2.5\n // if this.$props.precision is undefined\n // https://github.com/react-component/input-number/issues/39\n getMaxPrecision: function getMaxPrecision(currentValue) {\n var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n if (isValidProps(this.precision)) {\n return this.precision;\n }\n var step = this.step;\n\n var ratioPrecision = this.getPrecision(ratio);\n var stepPrecision = this.getPrecision(step);\n var currentValuePrecision = this.getPrecision(currentValue);\n if (!currentValue) {\n return ratioPrecision + stepPrecision;\n }\n return Math.max(currentValuePrecision, ratioPrecision + stepPrecision);\n },\n getPrecisionFactor: function getPrecisionFactor(currentValue) {\n var ratio = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n\n var precision = this.getMaxPrecision(currentValue, ratio);\n return Math.pow(10, precision);\n },\n getInputDisplayValue: function getInputDisplayValue(state) {\n var _ref = state || this.$data,\n focused = _ref.focused,\n inputValue = _ref.inputValue,\n sValue = _ref.sValue;\n\n var inputDisplayValue = void 0;\n if (focused) {\n inputDisplayValue = inputValue;\n } else {\n inputDisplayValue = this.toPrecisionAsStep(sValue);\n }\n\n if (inputDisplayValue === undefined || inputDisplayValue === null) {\n inputDisplayValue = '';\n }\n\n var inputDisplayValueFormat = this.formatWrapper(inputDisplayValue);\n if (isValidProps(this.$props.decimalSeparator)) {\n inputDisplayValueFormat = inputDisplayValueFormat.toString().replace('.', this.$props.decimalSeparator);\n }\n\n return inputDisplayValueFormat;\n },\n recordCursorPosition: function recordCursorPosition() {\n // Record position\n try {\n var inputElem = this.$refs.inputRef;\n this.cursorStart = inputElem.selectionStart;\n this.cursorEnd = inputElem.selectionEnd;\n this.currentValue = inputElem.value;\n this.cursorBefore = inputElem.value.substring(0, this.cursorStart);\n this.cursorAfter = inputElem.value.substring(this.cursorEnd);\n } catch (e) {\n // Fix error in Chrome:\n // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n // http://stackoverflow.com/q/21177489/3040605\n }\n },\n fixCaret: function fixCaret(start, end) {\n if (start === undefined || end === undefined || !this.$refs.inputRef || !this.$refs.inputRef.value) {\n return;\n }\n\n try {\n var inputElem = this.$refs.inputRef;\n var currentStart = inputElem.selectionStart;\n var currentEnd = inputElem.selectionEnd;\n\n if (start !== currentStart || end !== currentEnd) {\n inputElem.setSelectionRange(start, end);\n }\n } catch (e) {\n // Fix error in Chrome:\n // Failed to read the 'selectionStart' property from 'HTMLInputElement'\n // http://stackoverflow.com/q/21177489/3040605\n }\n },\n restoreByAfter: function restoreByAfter(str) {\n if (str === undefined) return false;\n\n var fullStr = this.$refs.inputRef.value;\n var index = fullStr.lastIndexOf(str);\n\n if (index === -1) return false;\n\n var prevCursorPos = this.cursorBefore.length;\n if (this.lastKeyCode === KeyCode.DELETE && this.cursorBefore.charAt(prevCursorPos - 1) === str[0]) {\n this.fixCaret(prevCursorPos, prevCursorPos);\n return true;\n }\n if (index + str.length === fullStr.length) {\n this.fixCaret(index, index);\n\n return true;\n }\n return false;\n },\n partRestoreByAfter: function partRestoreByAfter(str) {\n var _this3 = this;\n\n if (str === undefined) return false;\n\n // For loop from full str to the str with last char to map. e.g. 123\n // -> 123\n // -> 23\n // -> 3\n return Array.prototype.some.call(str, function (_, start) {\n var partStr = str.substring(start);\n\n return _this3.restoreByAfter(partStr);\n });\n },\n focus: function focus() {\n this.$refs.inputRef.focus();\n this.recordCursorPosition();\n },\n blur: function blur() {\n this.$refs.inputRef.blur();\n },\n formatWrapper: function formatWrapper(num) {\n // http://2ality.com/2012/03/signedzero.html\n // https://github.com/ant-design/ant-design/issues/9439\n if (this.formatter) {\n return this.formatter(num);\n }\n return num;\n },\n toPrecisionAsStep: function toPrecisionAsStep(num) {\n if (this.isNotCompleteNumber(num) || num === '') {\n return num;\n }\n var precision = Math.abs(this.getMaxPrecision(num));\n if (!isNaN(precision)) {\n return Number(num).toFixed(precision);\n }\n return num.toString();\n },\n\n // '1.' '1x' 'xx' '' => are not complete numbers\n isNotCompleteNumber: function isNotCompleteNumber(num) {\n return isNaN(num) || num === '' || num === null || num && num.toString().indexOf('.') === num.toString().length - 1;\n },\n toNumber: function toNumber(num) {\n var _$props2 = this.$props,\n precision = _$props2.precision,\n autoFocus = _$props2.autoFocus;\n var _focused = this.focused,\n focused = _focused === undefined ? autoFocus : _focused;\n // num.length > 16 => This is to prevent input of large numbers\n\n var numberIsTooLarge = num && num.length > 16 && focused;\n if (this.isNotCompleteNumber(num) || numberIsTooLarge) {\n return num;\n }\n if (isValidProps(precision)) {\n return Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision);\n }\n return Number(num);\n },\n upStep: function upStep(val, rat) {\n var step = this.step;\n\n var precisionFactor = this.getPrecisionFactor(val, rat);\n var precision = Math.abs(this.getMaxPrecision(val, rat));\n var result = ((precisionFactor * val + precisionFactor * step * rat) / precisionFactor).toFixed(precision);\n return this.toNumber(result);\n },\n downStep: function downStep(val, rat) {\n var step = this.step;\n\n var precisionFactor = this.getPrecisionFactor(val, rat);\n var precision = Math.abs(this.getMaxPrecision(val, rat));\n var result = ((precisionFactor * val - precisionFactor * step * rat) / precisionFactor).toFixed(precision);\n return this.toNumber(result);\n },\n stepFn: function stepFn(type, e) {\n var _this4 = this;\n\n var ratio = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var recursive = arguments[3];\n\n this.stop();\n if (e) {\n // e.persist()\n e.preventDefault();\n }\n if (this.disabled) {\n return;\n }\n var max = this.max,\n min = this.min;\n\n var value = this.getCurrentValidValue(this.inputValue) || 0;\n if (this.isNotCompleteNumber(value)) {\n return;\n }\n var val = this[type + 'Step'](value, ratio);\n var outOfRange = val > max || val < min;\n if (val > max) {\n val = max;\n } else if (val < min) {\n val = min;\n }\n this.setValue(val);\n this.setState({\n focused: true\n });\n if (outOfRange) {\n return;\n }\n this.autoStepTimer = setTimeout(function () {\n _this4[type](e, ratio, true);\n }, recursive ? SPEED : DELAY);\n },\n stop: function stop() {\n if (this.autoStepTimer) {\n clearTimeout(this.autoStepTimer);\n }\n },\n down: function down(e, ratio, recursive) {\n this.pressingUpOrDown = true;\n this.stepFn('down', e, ratio, recursive);\n },\n up: function up(e, ratio, recursive) {\n this.pressingUpOrDown = true;\n this.stepFn('up', e, ratio, recursive);\n },\n handleInputClick: function handleInputClick() {\n this.$emit('click');\n },\n onCompositionstart: function onCompositionstart(e) {\n e.target.composing = true;\n },\n onCompositionend: function onCompositionend(e) {\n this.onChange(e);\n e.target.composing = false;\n }\n },\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var _$props3 = this.$props,\n prefixCls = _$props3.prefixCls,\n disabled = _$props3.disabled,\n readonly = _$props3.readonly,\n useTouch = _$props3.useTouch,\n autoComplete = _$props3.autoComplete,\n upHandler = _$props3.upHandler,\n downHandler = _$props3.downHandler;\n\n var classes = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, prefixCls + '-disabled', disabled), _defineProperty(_classNames, prefixCls + '-focused', this.focused), _classNames));\n var upDisabledClass = '';\n var downDisabledClass = '';\n var sValue = this.sValue;\n\n if (sValue || sValue === 0) {\n if (!isNaN(sValue)) {\n var val = Number(sValue);\n if (val >= this.max) {\n upDisabledClass = prefixCls + '-handler-up-disabled';\n }\n if (val <= this.min) {\n downDisabledClass = prefixCls + '-handler-down-disabled';\n }\n } else {\n upDisabledClass = prefixCls + '-handler-up-disabled';\n downDisabledClass = prefixCls + '-handler-down-disabled';\n }\n }\n\n var editable = !this.readonly && !this.disabled;\n\n // focus state, show input value\n // unfocus state, show valid value\n var inputDisplayValue = this.getInputDisplayValue();\n\n var upEvents = void 0;\n var downEvents = void 0;\n if (useTouch) {\n upEvents = {\n touchstart: editable && !upDisabledClass ? this.up : noop,\n touchend: this.stop\n };\n downEvents = {\n touchstart: editable && !downDisabledClass ? this.down : noop,\n touchend: this.stop\n };\n } else {\n upEvents = {\n mousedown: editable && !upDisabledClass ? this.up : noop,\n mouseup: this.stop,\n mouseleave: this.stop\n };\n downEvents = {\n mousedown: editable && !downDisabledClass ? this.down : noop,\n mouseup: this.stop,\n mouseleave: this.stop\n };\n }\n var isUpDisabled = !!upDisabledClass || disabled || readonly;\n var isDownDisabled = !!downDisabledClass || disabled || readonly;\n\n var _getListeners = getListeners(this),\n _getListeners$mouseen = _getListeners.mouseenter,\n mouseenter = _getListeners$mouseen === undefined ? noop : _getListeners$mouseen,\n _getListeners$mousele = _getListeners.mouseleave,\n mouseleave = _getListeners$mousele === undefined ? noop : _getListeners$mousele,\n _getListeners$mouseov = _getListeners.mouseover,\n mouseover = _getListeners$mouseov === undefined ? noop : _getListeners$mouseov,\n _getListeners$mouseou = _getListeners.mouseout,\n mouseout = _getListeners$mouseou === undefined ? noop : _getListeners$mouseou;\n\n var contentProps = {\n on: { mouseenter: mouseenter, mouseleave: mouseleave, mouseover: mouseover, mouseout: mouseout },\n 'class': classes,\n attrs: { title: this.$props.title }\n };\n var upHandlerProps = {\n props: {\n disabled: isUpDisabled,\n prefixCls: prefixCls\n },\n attrs: {\n unselectable: 'unselectable',\n role: 'button',\n 'aria-label': 'Increase Value',\n 'aria-disabled': !!isUpDisabled\n },\n 'class': prefixCls + '-handler ' + prefixCls + '-handler-up ' + upDisabledClass,\n on: upEvents,\n ref: 'up'\n };\n var downHandlerProps = {\n props: {\n disabled: isDownDisabled,\n prefixCls: prefixCls\n },\n attrs: {\n unselectable: 'unselectable',\n role: 'button',\n 'aria-label': 'Decrease Value',\n 'aria-disabled': !!isDownDisabled\n },\n 'class': prefixCls + '-handler ' + prefixCls + '-handler-down ' + downDisabledClass,\n on: downEvents,\n ref: 'down'\n };\n // ref for test\n return h(\n 'div',\n contentProps,\n [h(\n 'div',\n { 'class': prefixCls + '-handler-wrap' },\n [h(\n InputHandler,\n upHandlerProps,\n [upHandler || h('span', {\n attrs: {\n unselectable: 'unselectable'\n },\n 'class': prefixCls + '-handler-up-inner',\n on: {\n 'click': preventDefault\n }\n })]\n ), h(\n InputHandler,\n downHandlerProps,\n [downHandler || h('span', {\n attrs: {\n unselectable: 'unselectable'\n },\n 'class': prefixCls + '-handler-down-inner',\n on: {\n 'click': preventDefault\n }\n })]\n )]\n ), h(\n 'div',\n { 'class': prefixCls + '-input-wrap' },\n [h('input', {\n attrs: {\n role: 'spinbutton',\n 'aria-valuemin': this.min,\n 'aria-valuemax': this.max,\n 'aria-valuenow': sValue,\n required: this.required,\n type: this.type,\n placeholder: this.placeholder,\n\n tabIndex: this.tabIndex,\n autoComplete: autoComplete,\n\n readonly: this.readonly,\n disabled: this.disabled,\n max: this.max,\n min: this.min,\n step: this.step,\n name: this.name,\n title: this.title,\n id: this.id,\n\n pattern: this.pattern\n },\n on: {\n 'click': this.handleInputClick,\n 'focus': this.onFocus,\n 'blur': this.onBlur,\n 'keydown': editable ? this.onKeyDown : noop,\n 'keyup': editable ? this.onKeyUp : noop,\n 'input': this.onTrigger,\n 'compositionstart': this.onCompositionstart,\n 'compositionend': this.onCompositionend\n },\n\n 'class': prefixCls + '-input',\n ref: 'inputRef',\n domProps: {\n 'value': inputDisplayValue\n }\n })]\n )]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps, getOptionProps, getListeners } from '../_util/props-util';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport VcInputNumber from '../vc-input-number/src';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nexport var InputNumberProps = {\n prefixCls: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n step: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n size: PropTypes.oneOf(['large', 'small', 'default']),\n formatter: PropTypes.func,\n parser: PropTypes.func,\n decimalSeparator: PropTypes.string,\n placeholder: PropTypes.string,\n name: PropTypes.string,\n id: PropTypes.string,\n precision: PropTypes.number,\n autoFocus: PropTypes.bool\n};\n\nvar InputNumber = {\n name: 'AInputNumber',\n model: {\n prop: 'value',\n event: 'change'\n },\n props: initDefaultProps(InputNumberProps, {\n step: 1\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n focus: function focus() {\n this.$refs.inputNumberRef.focus();\n },\n blur: function blur() {\n this.$refs.inputNumberRef.blur();\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n\n var _getOptionProps$$attr = _extends({}, getOptionProps(this), this.$attrs),\n customizePrefixCls = _getOptionProps$$attr.prefixCls,\n size = _getOptionProps$$attr.size,\n others = _objectWithoutProperties(_getOptionProps$$attr, ['prefixCls', 'size']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('input-number', customizePrefixCls);\n\n var inputNumberClass = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-lg', size === 'large'), _defineProperty(_classNames, prefixCls + '-sm', size === 'small'), _classNames));\n var upIcon = h(Icon, {\n attrs: { type: 'up' },\n 'class': prefixCls + '-handler-up-inner' });\n var downIcon = h(Icon, {\n attrs: { type: 'down' },\n 'class': prefixCls + '-handler-down-inner' });\n\n var vcInputNumberprops = {\n props: _extends({\n prefixCls: prefixCls,\n upHandler: upIcon,\n downHandler: downIcon\n }, others),\n 'class': inputNumberClass,\n ref: 'inputNumberRef',\n on: getListeners(this)\n };\n return h(VcInputNumber, vcInputNumberprops);\n }\n};\n\n/* istanbul ignore next */\nInputNumber.install = function (Vue) {\n Vue.use(Base);\n Vue.component(InputNumber.name, InputNumber);\n};\n\nexport default InputNumber;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport { getOptionProps, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport var BasicProps = {\n prefixCls: PropTypes.string,\n hasSider: PropTypes.boolean,\n tagName: PropTypes.string\n};\n\nfunction generator(_ref) {\n var suffixCls = _ref.suffixCls,\n tagName = _ref.tagName,\n name = _ref.name;\n\n return function (BasicComponent) {\n return {\n name: name,\n props: BasicComponent.props,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.$props.prefixCls;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls(suffixCls, customizePrefixCls);\n\n var basicComponentProps = {\n props: _extends({\n prefixCls: prefixCls\n }, getOptionProps(this), {\n tagName: tagName\n }),\n on: getListeners(this)\n };\n return h(\n BasicComponent,\n basicComponentProps,\n [this.$slots['default']]\n );\n }\n };\n };\n}\n\nvar Basic = {\n props: BasicProps,\n render: function render() {\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n Tag = this.tagName,\n $slots = this.$slots;\n\n var divProps = {\n 'class': prefixCls,\n on: getListeners(this)\n };\n return h(\n Tag,\n divProps,\n [$slots['default']]\n );\n }\n};\n\nvar BasicLayout = {\n props: BasicProps,\n data: function data() {\n return {\n siders: []\n };\n },\n provide: function provide() {\n var _this = this;\n\n return {\n siderHook: {\n addSider: function addSider(id) {\n _this.siders = [].concat(_toConsumableArray(_this.siders), [id]);\n },\n removeSider: function removeSider(id) {\n _this.siders = _this.siders.filter(function (currentId) {\n return currentId !== id;\n });\n }\n }\n };\n },\n render: function render() {\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n $slots = this.$slots,\n hasSider = this.hasSider,\n Tag = this.tagName;\n\n var divCls = classNames(prefixCls, _defineProperty({}, prefixCls + '-has-sider', typeof hasSider === 'boolean' ? hasSider : this.siders.length > 0));\n var divProps = {\n 'class': divCls,\n on: getListeners\n };\n return h(\n Tag,\n divProps,\n [$slots['default']]\n );\n }\n};\n\nvar Layout = generator({\n suffixCls: 'layout',\n tagName: 'section',\n name: 'ALayout'\n})(BasicLayout);\n\nvar Header = generator({\n suffixCls: 'layout-header',\n tagName: 'header',\n name: 'ALayoutHeader'\n})(Basic);\n\nvar Footer = generator({\n suffixCls: 'layout-footer',\n tagName: 'footer',\n name: 'ALayoutFooter'\n})(Basic);\n\nvar Content = generator({\n suffixCls: 'layout-content',\n tagName: 'main',\n name: 'ALayoutContent'\n})(Basic);\n\nLayout.Header = Header;\nLayout.Footer = Footer;\nLayout.Content = Content;\n\nexport default Layout;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps, getOptionProps, hasProp, getComponentFromProp, getListeners } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport isNumeric from '../_util/isNumeric';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Icon from '../icon';\n\n// matchMedia polyfill for\n// https://github.com/WickyNilliams/enquire.js/issues/82\nif (typeof window !== 'undefined') {\n var matchMediaPolyfill = function matchMediaPolyfill(mediaQuery) {\n return {\n media: mediaQuery,\n matches: false,\n addListener: function addListener() {},\n removeListener: function removeListener() {}\n };\n };\n window.matchMedia = window.matchMedia || matchMediaPolyfill;\n}\n\nvar dimensionMaxMap = {\n xs: '479.98px',\n sm: '575.98px',\n md: '767.98px',\n lg: '991.98px',\n xl: '1199.98px',\n xxl: '1599.98px'\n};\n\n// export type CollapseType = 'clickTrigger' | 'responsive';\n\nexport var SiderProps = {\n prefixCls: PropTypes.string,\n collapsible: PropTypes.bool,\n collapsed: PropTypes.bool,\n defaultCollapsed: PropTypes.bool,\n reverseArrow: PropTypes.bool,\n // onCollapse?: (collapsed: boolean, type: CollapseType) => void;\n zeroWidthTriggerStyle: PropTypes.object,\n trigger: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n collapsedWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n breakpoint: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', 'xxl']),\n theme: PropTypes.oneOf(['light', 'dark']).def('dark')\n};\n\n// export interface SiderState {\n// collapsed?: boolean;\n// below: boolean;\n// belowShow?: boolean;\n// }\n\n// export interface SiderContext {\n// siderCollapsed: boolean;\n// }\n\nvar generateId = function () {\n var i = 0;\n return function () {\n var prefix = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n i += 1;\n return '' + prefix + i;\n };\n}();\n\nexport default {\n name: 'ALayoutSider',\n __ANT_LAYOUT_SIDER: true,\n mixins: [BaseMixin],\n model: {\n prop: 'collapsed',\n event: 'collapse'\n },\n props: initDefaultProps(SiderProps, {\n collapsible: false,\n defaultCollapsed: false,\n reverseArrow: false,\n width: 200,\n collapsedWidth: 80\n }),\n data: function data() {\n this.uniqueId = generateId('ant-sider-');\n var matchMedia = void 0;\n if (typeof window !== 'undefined') {\n matchMedia = window.matchMedia;\n }\n var props = getOptionProps(this);\n if (matchMedia && props.breakpoint && props.breakpoint in dimensionMaxMap) {\n this.mql = matchMedia('(max-width: ' + dimensionMaxMap[props.breakpoint] + ')');\n }\n var sCollapsed = void 0;\n if ('collapsed' in props) {\n sCollapsed = props.collapsed;\n } else {\n sCollapsed = props.defaultCollapsed;\n }\n return {\n sCollapsed: sCollapsed,\n below: false,\n belowShow: false\n };\n },\n provide: function provide() {\n return {\n layoutSiderContext: this // menu组件中使用\n };\n },\n\n inject: {\n siderHook: { 'default': function _default() {\n return {};\n } },\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n // getChildContext() {\n // return {\n // siderCollapsed: this.state.collapsed,\n // collapsedWidth: this.props.collapsedWidth,\n // };\n // }\n watch: {\n collapsed: function collapsed(val) {\n this.setState({\n sCollapsed: val\n });\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.mql) {\n _this.mql.addListener(_this.responsiveHandler);\n _this.responsiveHandler(_this.mql);\n }\n\n if (_this.siderHook.addSider) {\n _this.siderHook.addSider(_this.uniqueId);\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.mql) {\n this.mql.removeListener(this.responsiveHandler);\n }\n\n if (this.siderHook.removeSider) {\n this.siderHook.removeSider(this.uniqueId);\n }\n },\n\n methods: {\n responsiveHandler: function responsiveHandler(mql) {\n this.setState({ below: mql.matches });\n this.$emit('breakpoint', mql.matches);\n if (this.sCollapsed !== mql.matches) {\n this.setCollapsed(mql.matches, 'responsive');\n }\n },\n setCollapsed: function setCollapsed(collapsed, type) {\n if (!hasProp(this, 'collapsed')) {\n this.setState({\n sCollapsed: collapsed\n });\n }\n this.$emit('collapse', collapsed, type);\n },\n toggle: function toggle() {\n var collapsed = !this.sCollapsed;\n this.setCollapsed(collapsed, 'clickTrigger');\n },\n belowShowChange: function belowShowChange() {\n this.setState({ belowShow: !this.belowShow });\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n theme = _getOptionProps.theme,\n collapsible = _getOptionProps.collapsible,\n reverseArrow = _getOptionProps.reverseArrow,\n width = _getOptionProps.width,\n collapsedWidth = _getOptionProps.collapsedWidth,\n zeroWidthTriggerStyle = _getOptionProps.zeroWidthTriggerStyle;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('layout-sider', customizePrefixCls);\n\n var trigger = getComponentFromProp(this, 'trigger');\n var rawWidth = this.sCollapsed ? collapsedWidth : width;\n // use \"px\" as fallback unit for width\n var siderWidth = isNumeric(rawWidth) ? rawWidth + 'px' : String(rawWidth);\n // special trigger when collapsedWidth == 0\n var zeroWidthTrigger = parseFloat(String(collapsedWidth || 0)) === 0 ? h(\n 'span',\n {\n on: {\n 'click': this.toggle\n },\n\n 'class': prefixCls + '-zero-width-trigger ' + prefixCls + '-zero-width-trigger-' + (reverseArrow ? 'right' : 'left'),\n style: zeroWidthTriggerStyle\n },\n [h(Icon, {\n attrs: { type: 'bars' }\n })]\n ) : null;\n var iconObj = {\n expanded: reverseArrow ? h(Icon, {\n attrs: { type: 'right' }\n }) : h(Icon, {\n attrs: { type: 'left' }\n }),\n collapsed: reverseArrow ? h(Icon, {\n attrs: { type: 'left' }\n }) : h(Icon, {\n attrs: { type: 'right' }\n })\n };\n var status = this.sCollapsed ? 'collapsed' : 'expanded';\n var defaultTrigger = iconObj[status];\n var triggerDom = trigger !== null ? zeroWidthTrigger || h(\n 'div',\n { 'class': prefixCls + '-trigger', on: {\n 'click': this.toggle\n },\n style: { width: siderWidth } },\n [trigger || defaultTrigger]\n ) : null;\n var divStyle = {\n // ...style,\n flex: '0 0 ' + siderWidth,\n maxWidth: siderWidth, // Fix width transition bug in IE11\n minWidth: siderWidth, // https://github.com/ant-design/ant-design/issues/6349\n width: siderWidth\n };\n var siderCls = classNames(prefixCls, prefixCls + '-' + theme, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-collapsed', !!this.sCollapsed), _defineProperty(_classNames, prefixCls + '-has-trigger', collapsible && trigger !== null && !zeroWidthTrigger), _defineProperty(_classNames, prefixCls + '-below', !!this.below), _defineProperty(_classNames, prefixCls + '-zero-width', parseFloat(siderWidth) === 0), _classNames));\n var divProps = {\n on: getListeners(this),\n 'class': siderCls,\n style: divStyle\n };\n return h(\n 'aside',\n divProps,\n [h(\n 'div',\n { 'class': prefixCls + '-children' },\n [this.$slots['default']]\n ), collapsible || this.below && zeroWidthTrigger ? triggerDom : null]\n );\n }\n};","import Layout from './layout';\nimport Sider from './Sider';\nimport Base from '../base';\n\nLayout.Sider = Sider;\n\n/* istanbul ignore next */\nLayout.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Layout.name, Layout);\n Vue.component(Layout.Header.name, Layout.Header);\n Vue.component(Layout.Footer.name, Layout.Footer);\n Vue.component(Layout.Sider.name, Layout.Sider);\n Vue.component(Layout.Content.name, Layout.Content);\n};\nexport default Layout;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport debounce from 'lodash/debounce';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport { filterEmpty, initDefaultProps, isValidElement, getComponentFromProp, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport var SpinSize = PropTypes.oneOf(['small', 'default', 'large']);\n\nexport var SpinProps = function SpinProps() {\n return {\n prefixCls: PropTypes.string,\n spinning: PropTypes.bool,\n size: SpinSize,\n wrapperClassName: PropTypes.string,\n tip: PropTypes.string,\n delay: PropTypes.number,\n indicator: PropTypes.any\n };\n};\n\n// Render indicator\nvar defaultIndicator = void 0;\n\nfunction shouldDelay(spinning, delay) {\n return !!spinning && !!delay && !isNaN(Number(delay));\n}\n\nexport function setDefaultIndicator(Content) {\n defaultIndicator = typeof Content.indicator === 'function' ? Content.indicator : function (h) {\n return h(Content.indicator);\n };\n}\n\nexport default {\n name: 'ASpin',\n mixins: [BaseMixin],\n props: initDefaultProps(SpinProps(), {\n size: 'default',\n spinning: true,\n wrapperClassName: ''\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var spinning = this.spinning,\n delay = this.delay;\n\n var shouldBeDelayed = shouldDelay(spinning, delay);\n this.originalUpdateSpinning = this.updateSpinning;\n this.debouncifyUpdateSpinning(this.$props);\n return {\n sSpinning: spinning && !shouldBeDelayed\n };\n },\n mounted: function mounted() {\n this.updateSpinning();\n },\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.debouncifyUpdateSpinning();\n _this.updateSpinning();\n });\n },\n beforeDestroy: function beforeDestroy() {\n this.cancelExistingSpin();\n },\n\n methods: {\n debouncifyUpdateSpinning: function debouncifyUpdateSpinning(props) {\n var _ref = props || this.$props,\n delay = _ref.delay;\n\n if (delay) {\n this.cancelExistingSpin();\n this.updateSpinning = debounce(this.originalUpdateSpinning, delay);\n }\n },\n updateSpinning: function updateSpinning() {\n var spinning = this.spinning,\n sSpinning = this.sSpinning;\n\n if (sSpinning !== spinning) {\n this.setState({ sSpinning: spinning });\n }\n },\n cancelExistingSpin: function cancelExistingSpin() {\n var updateSpinning = this.updateSpinning;\n\n if (updateSpinning && updateSpinning.cancel) {\n updateSpinning.cancel();\n }\n },\n getChildren: function getChildren() {\n if (this.$slots && this.$slots['default']) {\n return filterEmpty(this.$slots['default']);\n }\n return null;\n },\n renderIndicator: function renderIndicator(h, prefixCls) {\n // const h = this.$createElement\n var dotClassName = prefixCls + '-dot';\n var indicator = getComponentFromProp(this, 'indicator');\n // should not be render default indicator when indicator value is null\n if (indicator === null) {\n return null;\n }\n if (Array.isArray(indicator)) {\n indicator = filterEmpty(indicator);\n indicator = indicator.length === 1 ? indicator[0] : indicator;\n }\n if (isValidElement(indicator)) {\n return cloneElement(indicator, { 'class': dotClassName });\n }\n\n if (defaultIndicator && isValidElement(defaultIndicator(h))) {\n return cloneElement(defaultIndicator(h), { 'class': dotClassName });\n }\n\n return h(\n 'span',\n { 'class': dotClassName + ' ' + prefixCls + '-dot-spin' },\n [h('i', { 'class': prefixCls + '-dot-item' }), h('i', { 'class': prefixCls + '-dot-item' }), h('i', { 'class': prefixCls + '-dot-item' }), h('i', { 'class': prefixCls + '-dot-item' })]\n );\n }\n },\n render: function render(h) {\n var _spinClassName;\n\n var _$props = this.$props,\n size = _$props.size,\n customizePrefixCls = _$props.prefixCls,\n tip = _$props.tip,\n wrapperClassName = _$props.wrapperClassName,\n restProps = _objectWithoutProperties(_$props, ['size', 'prefixCls', 'tip', 'wrapperClassName']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('spin', customizePrefixCls);\n\n var sSpinning = this.sSpinning;\n\n var spinClassName = (_spinClassName = {}, _defineProperty(_spinClassName, prefixCls, true), _defineProperty(_spinClassName, prefixCls + '-sm', size === 'small'), _defineProperty(_spinClassName, prefixCls + '-lg', size === 'large'), _defineProperty(_spinClassName, prefixCls + '-spinning', sSpinning), _defineProperty(_spinClassName, prefixCls + '-show-text', !!tip), _spinClassName);\n\n var spinElement = h(\n 'div',\n _mergeJSXProps([restProps, { 'class': spinClassName }]),\n [this.renderIndicator(h, prefixCls), tip ? h(\n 'div',\n { 'class': prefixCls + '-text' },\n [tip]\n ) : null]\n );\n var children = this.getChildren();\n if (children) {\n var _containerClassName;\n\n var containerClassName = (_containerClassName = {}, _defineProperty(_containerClassName, prefixCls + '-container', true), _defineProperty(_containerClassName, prefixCls + '-blur', sSpinning), _containerClassName);\n\n return h(\n 'div',\n _mergeJSXProps([{ on: getListeners(this) }, {\n 'class': [prefixCls + '-nested-loading', wrapperClassName]\n }]),\n [sSpinning && h(\n 'div',\n { key: 'loading' },\n [spinElement]\n ), h(\n 'div',\n { 'class': containerClassName, key: 'container' },\n [children]\n )]\n );\n }\n return spinElement;\n }\n};","import Spin, { setDefaultIndicator } from './Spin';\nimport Base from '../base';\n\nexport { SpinProps } from './Spin';\n\nSpin.setDefaultIndicator = setDefaultIndicator;\n\n/* istanbul ignore next */\nSpin.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Spin.name, Spin);\n};\n\nexport default Spin;","import _extends from 'babel-runtime/helpers/extends';\nimport VcSelect, { SelectProps } from '../select';\nimport { getOptionProps, filterEmpty, getListeners } from '../_util/props-util';\n\nexport default {\n props: _extends({}, SelectProps),\n Option: VcSelect.Option,\n render: function render() {\n var h = arguments[0];\n\n var selectOptionsProps = getOptionProps(this);\n var selelctProps = {\n props: _extends({}, selectOptionsProps, {\n size: 'small'\n }),\n on: getListeners(this)\n };\n return h(\n VcSelect,\n selelctProps,\n [filterEmpty(this.$slots['default'])]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\n\nexport default {\n name: 'Pager',\n props: {\n rootPrefixCls: PropTypes.string,\n page: PropTypes.number,\n active: PropTypes.bool,\n last: PropTypes.bool,\n locale: PropTypes.object,\n showTitle: PropTypes.bool,\n itemRender: {\n type: Function,\n 'default': function _default() {}\n }\n },\n methods: {\n handleClick: function handleClick() {\n this.$emit('click', this.page);\n },\n handleKeyPress: function handleKeyPress(event) {\n this.$emit('keypress', event, this.handleClick, this.page);\n }\n },\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n\n var props = this.$props;\n var prefixCls = props.rootPrefixCls + '-item';\n var cls = classNames(prefixCls, prefixCls + '-' + props.page, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-active', props.active), _defineProperty(_classNames, prefixCls + '-disabled', !props.page), _classNames));\n\n return h(\n 'li',\n {\n 'class': cls,\n on: {\n 'click': this.handleClick,\n 'keypress': this.handleKeyPress\n },\n attrs: {\n title: this.showTitle ? this.page : null,\n tabIndex: '0'\n }\n },\n [this.itemRender(this.page, 'page', h('a', [this.page]))]\n );\n }\n};","export default {\n ZERO: 48,\n NINE: 57,\n\n NUMPAD_ZERO: 96,\n NUMPAD_NINE: 105,\n\n BACKSPACE: 8,\n DELETE: 46,\n ENTER: 13,\n\n ARROW_UP: 38,\n ARROW_DOWN: 40\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropTypes from '../_util/vue-types';\nimport KEYCODE from './KeyCode';\nimport BaseMixin from '../_util/BaseMixin';\n\nexport default {\n mixins: [BaseMixin],\n props: {\n disabled: PropTypes.bool,\n changeSize: PropTypes.func,\n quickGo: PropTypes.func,\n selectComponentClass: PropTypes.any,\n current: PropTypes.number,\n pageSizeOptions: PropTypes.array.def(['10', '20', '30', '40']),\n pageSize: PropTypes.number,\n buildOptionText: PropTypes.func,\n locale: PropTypes.object,\n rootPrefixCls: PropTypes.string,\n selectPrefixCls: PropTypes.string,\n goButton: PropTypes.any\n },\n data: function data() {\n return {\n goInputText: ''\n };\n },\n\n methods: {\n getValidValue: function getValidValue() {\n var goInputText = this.goInputText,\n current = this.current;\n\n return !goInputText || isNaN(goInputText) ? current : Number(goInputText);\n },\n defaultBuildOptionText: function defaultBuildOptionText(opt) {\n return opt.value + ' ' + this.locale.items_per_page;\n },\n handleChange: function handleChange(e) {\n var _e$target = e.target,\n value = _e$target.value,\n composing = _e$target.composing;\n\n if (e.isComposing || composing || this.goInputText === value) return;\n this.setState({\n goInputText: value\n });\n },\n handleBlur: function handleBlur(e) {\n var _$props = this.$props,\n goButton = _$props.goButton,\n quickGo = _$props.quickGo,\n rootPrefixCls = _$props.rootPrefixCls;\n\n if (goButton) {\n return;\n }\n if (e.relatedTarget && (e.relatedTarget.className.indexOf(rootPrefixCls + '-prev') >= 0 || e.relatedTarget.className.indexOf(rootPrefixCls + '-next') >= 0)) {\n return;\n }\n quickGo(this.getValidValue());\n },\n go: function go(e) {\n var goInputText = this.goInputText;\n\n if (goInputText === '') {\n return;\n }\n if (e.keyCode === KEYCODE.ENTER || e.type === 'click') {\n // https://github.com/vueComponent/ant-design-vue/issues/1316\n this.quickGo(this.getValidValue());\n this.setState({\n goInputText: ''\n });\n }\n }\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n var rootPrefixCls = this.rootPrefixCls,\n locale = this.locale,\n changeSize = this.changeSize,\n quickGo = this.quickGo,\n goButton = this.goButton,\n Select = this.selectComponentClass,\n defaultBuildOptionText = this.defaultBuildOptionText,\n selectPrefixCls = this.selectPrefixCls,\n pageSize = this.pageSize,\n pageSizeOptions = this.pageSizeOptions,\n goInputText = this.goInputText,\n disabled = this.disabled;\n\n var prefixCls = rootPrefixCls + '-options';\n var changeSelect = null;\n var goInput = null;\n var gotoButton = null;\n\n if (!changeSize && !quickGo) {\n return null;\n }\n\n if (changeSize && Select) {\n var buildOptionText = this.buildOptionText || defaultBuildOptionText;\n var options = pageSizeOptions.map(function (opt, i) {\n return h(\n Select.Option,\n { key: i, attrs: { value: opt }\n },\n [buildOptionText({ value: opt })]\n );\n });\n\n changeSelect = h(\n Select,\n {\n attrs: {\n disabled: disabled,\n prefixCls: selectPrefixCls,\n showSearch: false,\n\n optionLabelProp: 'children',\n dropdownMatchSelectWidth: false,\n value: (pageSize || pageSizeOptions[0]).toString(),\n\n getPopupContainer: function getPopupContainer(triggerNode) {\n return triggerNode.parentNode;\n }\n },\n 'class': prefixCls + '-size-changer', on: {\n 'change': function change(value) {\n return _this.changeSize(Number(value));\n }\n }\n },\n [options]\n );\n }\n\n if (quickGo) {\n if (goButton) {\n gotoButton = typeof goButton === 'boolean' ? h(\n 'button',\n {\n attrs: { type: 'button', disabled: disabled },\n on: {\n 'click': this.go,\n 'keyup': this.go\n }\n },\n [locale.jump_to_confirm]\n ) : h(\n 'span',\n {\n on: {\n 'click': this.go,\n 'keyup': this.go\n }\n },\n [goButton]\n );\n }\n goInput = h(\n 'div',\n { 'class': prefixCls + '-quick-jumper' },\n [locale.jump_to, h('input', _mergeJSXProps([{\n attrs: {\n disabled: disabled,\n type: 'text'\n },\n domProps: {\n 'value': goInputText\n },\n on: {\n 'input': this.handleChange,\n 'keyup': this.go,\n 'blur': this.handleBlur\n }\n }, {\n directives: [{\n name: 'ant-input'\n }]\n }])), locale.page, gotoButton]\n );\n }\n\n return h(\n 'li',\n { 'class': '' + prefixCls },\n [changeSelect, goInput]\n );\n }\n};","export default {\n // Options.jsx\n items_per_page: '条/页',\n jump_to: '跳至',\n jump_to_confirm: '确定',\n page: '页',\n\n // Pagination.jsx\n prev_page: '上一页',\n next_page: '下一页',\n prev_5: '向前 5 页',\n next_5: '向后 5 页',\n prev_3: '向前 3 页',\n next_3: '向后 3 页'\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport { hasProp, getComponentFromProp, getOptionProps } from '../_util/props-util';\nimport Pager from './Pager';\nimport Options from './Options';\nimport LOCALE from './locale/zh_CN';\nimport KEYCODE from './KeyCode';\n\nfunction noop() {}\n\n// 是否是正整数\nfunction isInteger(value) {\n return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;\n}\n\nfunction defaultItemRender(page, type, element) {\n return element;\n}\n\nfunction calculatePage(p, state, props) {\n var pageSize = p;\n if (typeof pageSize === 'undefined') {\n pageSize = state.statePageSize;\n }\n return Math.floor((props.total - 1) / pageSize) + 1;\n}\n\nexport default {\n name: 'Pagination',\n mixins: [BaseMixin],\n model: {\n prop: 'current',\n event: 'change.current'\n },\n props: {\n disabled: PropTypes.bool,\n prefixCls: PropTypes.string.def('rc-pagination'),\n selectPrefixCls: PropTypes.string.def('rc-select'),\n current: PropTypes.number,\n defaultCurrent: PropTypes.number.def(1),\n total: PropTypes.number.def(0),\n pageSize: PropTypes.number,\n defaultPageSize: PropTypes.number.def(10),\n hideOnSinglePage: PropTypes.bool.def(false),\n showSizeChanger: PropTypes.bool.def(false),\n showLessItems: PropTypes.bool.def(false),\n // showSizeChange: PropTypes.func.def(noop),\n selectComponentClass: PropTypes.any,\n showPrevNextJumpers: PropTypes.bool.def(true),\n showQuickJumper: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]).def(false),\n showTitle: PropTypes.bool.def(true),\n pageSizeOptions: PropTypes.arrayOf(PropTypes.string),\n buildOptionText: PropTypes.func,\n showTotal: PropTypes.func,\n simple: PropTypes.bool,\n locale: PropTypes.object.def(LOCALE),\n itemRender: PropTypes.func.def(defaultItemRender),\n prevIcon: PropTypes.any,\n nextIcon: PropTypes.any,\n jumpPrevIcon: PropTypes.any,\n jumpNextIcon: PropTypes.any\n },\n data: function data() {\n var props = getOptionProps(this);\n var hasOnChange = this.onChange !== noop;\n var hasCurrent = 'current' in props;\n if (hasCurrent && !hasOnChange) {\n console.warn('Warning: You provided a `current` prop to a Pagination component without an `onChange` handler. This will render a read-only component.'); // eslint-disable-line\n }\n var current = this.defaultCurrent;\n if ('current' in props) {\n current = this.current;\n }\n\n var pageSize = this.defaultPageSize;\n if ('pageSize' in props) {\n pageSize = this.pageSize;\n }\n\n current = Math.min(current, calculatePage(pageSize, undefined, props));\n\n return {\n stateCurrent: current,\n stateCurrentInputValue: current,\n statePageSize: pageSize\n };\n },\n\n watch: {\n current: function current(val) {\n this.setState({\n stateCurrent: val,\n stateCurrentInputValue: val\n });\n },\n pageSize: function pageSize(val) {\n var newState = {};\n var current = this.stateCurrent;\n var newCurrent = calculatePage(val, this.$data, this.$props);\n current = current > newCurrent ? newCurrent : current;\n if (!hasProp(this, 'current')) {\n newState.stateCurrent = current;\n newState.stateCurrentInputValue = current;\n }\n newState.statePageSize = val;\n this.setState(newState);\n },\n stateCurrent: function stateCurrent(val, oldValue) {\n var _this = this;\n\n // When current page change, fix focused style of prev item\n // A hacky solution of https://github.com/ant-design/ant-design/issues/8948\n this.$nextTick(function () {\n if (_this.$refs.paginationNode) {\n var lastCurrentNode = _this.$refs.paginationNode.querySelector('.' + _this.prefixCls + '-item-' + oldValue);\n if (lastCurrentNode && document.activeElement === lastCurrentNode) {\n lastCurrentNode.blur();\n }\n }\n });\n },\n total: function total() {\n var newState = {};\n var newCurrent = calculatePage(this.pageSize, this.$data, this.$props);\n if (hasProp(this, 'current')) {\n var current = Math.min(this.current, newCurrent);\n newState.stateCurrent = current;\n newState.stateCurrentInputValue = current;\n } else {\n var _current = this.stateCurrent;\n if (_current === 0 && newCurrent > 0) {\n _current = 1;\n } else {\n _current = Math.min(this.stateCurrent, newCurrent);\n }\n newState.stateCurrent = _current;\n }\n this.setState(newState);\n }\n },\n methods: {\n getJumpPrevPage: function getJumpPrevPage() {\n return Math.max(1, this.stateCurrent - (this.showLessItems ? 3 : 5));\n },\n getJumpNextPage: function getJumpNextPage() {\n return Math.min(calculatePage(undefined, this.$data, this.$props), this.stateCurrent + (this.showLessItems ? 3 : 5));\n },\n getItemIcon: function getItemIcon(icon) {\n var h = this.$createElement;\n var prefixCls = this.$props.prefixCls;\n\n var iconNode = getComponentFromProp(this, icon, this.$props) || h('a', { 'class': prefixCls + '-item-link' });\n return iconNode;\n },\n getValidValue: function getValidValue(e) {\n var inputValue = e.target.value;\n var allPages = calculatePage(undefined, this.$data, this.$props);\n var stateCurrentInputValue = this.$data.stateCurrentInputValue;\n\n var value = void 0;\n if (inputValue === '') {\n value = inputValue;\n } else if (isNaN(Number(inputValue))) {\n value = stateCurrentInputValue;\n } else if (inputValue >= allPages) {\n value = allPages;\n } else {\n value = Number(inputValue);\n }\n return value;\n },\n isValid: function isValid(page) {\n return isInteger(page) && page !== this.stateCurrent;\n },\n shouldDisplayQuickJumper: function shouldDisplayQuickJumper() {\n var _$props = this.$props,\n showQuickJumper = _$props.showQuickJumper,\n pageSize = _$props.pageSize,\n total = _$props.total;\n\n if (total <= pageSize) {\n return false;\n }\n return showQuickJumper;\n },\n\n // calculatePage (p) {\n // let pageSize = p\n // if (typeof pageSize === 'undefined') {\n // pageSize = this.statePageSize\n // }\n // return Math.floor((this.total - 1) / pageSize) + 1\n // },\n handleKeyDown: function handleKeyDown(event) {\n if (event.keyCode === KEYCODE.ARROW_UP || event.keyCode === KEYCODE.ARROW_DOWN) {\n event.preventDefault();\n }\n },\n handleKeyUp: function handleKeyUp(e) {\n if (e.isComposing || e.target.composing) return;\n var value = this.getValidValue(e);\n var stateCurrentInputValue = this.stateCurrentInputValue;\n\n if (value !== stateCurrentInputValue) {\n this.setState({\n stateCurrentInputValue: value\n });\n }\n\n if (e.keyCode === KEYCODE.ENTER) {\n this.handleChange(value);\n } else if (e.keyCode === KEYCODE.ARROW_UP) {\n this.handleChange(value - 1);\n } else if (e.keyCode === KEYCODE.ARROW_DOWN) {\n this.handleChange(value + 1);\n }\n },\n changePageSize: function changePageSize(size) {\n var current = this.stateCurrent;\n var preCurrent = current;\n var newCurrent = calculatePage(size, this.$data, this.$props);\n current = current > newCurrent ? newCurrent : current;\n // fix the issue:\n // Once 'total' is 0, 'current' in 'onShowSizeChange' is 0, which is not correct.\n if (newCurrent === 0) {\n current = this.stateCurrent;\n }\n if (typeof size === 'number') {\n if (!hasProp(this, 'pageSize')) {\n this.setState({\n statePageSize: size\n });\n }\n if (!hasProp(this, 'current')) {\n this.setState({\n stateCurrent: current,\n stateCurrentInputValue: current\n });\n }\n }\n this.$emit('update:pageSize', size);\n this.$emit('showSizeChange', current, size);\n if (current !== preCurrent) {\n this.$emit('change.current', current, size);\n }\n },\n handleChange: function handleChange(p) {\n var disabled = this.$props.disabled;\n\n var page = p;\n if (this.isValid(page) && !disabled) {\n var currentPage = calculatePage(undefined, this.$data, this.$props);\n if (page > currentPage) {\n page = currentPage;\n } else if (page < 1) {\n page = 1;\n }\n if (!hasProp(this, 'current')) {\n this.setState({\n stateCurrent: page,\n stateCurrentInputValue: page\n });\n }\n // this.$emit('input', page)\n this.$emit('change.current', page, this.statePageSize);\n this.$emit('change', page, this.statePageSize);\n return page;\n }\n return this.stateCurrent;\n },\n prev: function prev() {\n if (this.hasPrev()) {\n this.handleChange(this.stateCurrent - 1);\n }\n },\n next: function next() {\n if (this.hasNext()) {\n this.handleChange(this.stateCurrent + 1);\n }\n },\n jumpPrev: function jumpPrev() {\n this.handleChange(this.getJumpPrevPage());\n },\n jumpNext: function jumpNext() {\n this.handleChange(this.getJumpNextPage());\n },\n hasPrev: function hasPrev() {\n return this.stateCurrent > 1;\n },\n hasNext: function hasNext() {\n return this.stateCurrent < calculatePage(undefined, this.$data, this.$props);\n },\n runIfEnter: function runIfEnter(event, callback) {\n if (event.key === 'Enter' || event.charCode === 13) {\n for (var _len = arguments.length, restParams = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n restParams[_key - 2] = arguments[_key];\n }\n\n callback.apply(undefined, _toConsumableArray(restParams));\n }\n },\n runIfEnterPrev: function runIfEnterPrev(event) {\n this.runIfEnter(event, this.prev);\n },\n runIfEnterNext: function runIfEnterNext(event) {\n this.runIfEnter(event, this.next);\n },\n runIfEnterJumpPrev: function runIfEnterJumpPrev(event) {\n this.runIfEnter(event, this.jumpPrev);\n },\n runIfEnterJumpNext: function runIfEnterJumpNext(event) {\n this.runIfEnter(event, this.jumpNext);\n },\n handleGoTO: function handleGoTO(event) {\n if (event.keyCode === KEYCODE.ENTER || event.type === 'click') {\n this.handleChange(this.stateCurrentInputValue);\n }\n }\n },\n render: function render() {\n var _ref;\n\n var h = arguments[0];\n var _$props2 = this.$props,\n prefixCls = _$props2.prefixCls,\n disabled = _$props2.disabled;\n\n // When hideOnSinglePage is true and there is only 1 page, hide the pager\n\n if (this.hideOnSinglePage === true && this.total <= this.statePageSize) {\n return null;\n }\n var props = this.$props;\n var locale = this.locale;\n\n var allPages = calculatePage(undefined, this.$data, this.$props);\n var pagerList = [];\n var jumpPrev = null;\n var jumpNext = null;\n var firstPager = null;\n var lastPager = null;\n var gotoButton = null;\n var goButton = this.showQuickJumper && this.showQuickJumper.goButton;\n var pageBufferSize = this.showLessItems ? 1 : 2;\n var stateCurrent = this.stateCurrent,\n statePageSize = this.statePageSize;\n\n var prevPage = stateCurrent - 1 > 0 ? stateCurrent - 1 : 0;\n var nextPage = stateCurrent + 1 < allPages ? stateCurrent + 1 : allPages;\n\n if (this.simple) {\n if (goButton) {\n if (typeof goButton === 'boolean') {\n gotoButton = h(\n 'button',\n {\n attrs: { type: 'button' },\n on: {\n 'click': this.handleGoTO,\n 'keyup': this.handleGoTO\n }\n },\n [locale.jump_to_confirm]\n );\n } else {\n gotoButton = h(\n 'span',\n {\n on: {\n 'click': this.handleGoTO,\n 'keyup': this.handleGoTO\n }\n },\n [goButton]\n );\n }\n gotoButton = h(\n 'li',\n {\n attrs: {\n title: this.showTitle ? '' + locale.jump_to + this.stateCurrent + '/' + allPages : null\n },\n 'class': prefixCls + '-simple-pager'\n },\n [gotoButton]\n );\n }\n var hasPrev = this.hasPrev();\n var hasNext = this.hasNext();\n return h(\n 'ul',\n { 'class': prefixCls + ' ' + prefixCls + '-simple' },\n [h(\n 'li',\n {\n attrs: {\n title: this.showTitle ? locale.prev_page : null,\n\n tabIndex: hasPrev ? 0 : null,\n\n 'aria-disabled': !this.hasPrev()\n },\n on: {\n 'click': this.prev,\n 'keypress': this.runIfEnterPrev\n },\n\n 'class': (hasPrev ? '' : prefixCls + '-disabled') + ' ' + prefixCls + '-prev' },\n [this.itemRender(prevPage, 'prev', this.getItemIcon('prevIcon'))]\n ), h(\n 'li',\n {\n attrs: {\n title: this.showTitle ? stateCurrent + '/' + allPages : null\n },\n 'class': prefixCls + '-simple-pager'\n },\n [h('input', _mergeJSXProps([{\n attrs: {\n type: 'text',\n\n size: '3'\n },\n domProps: {\n 'value': this.stateCurrentInputValue\n },\n on: {\n 'keydown': this.handleKeyDown,\n 'keyup': this.handleKeyUp,\n 'input': this.handleKeyUp\n }\n }, {\n directives: [{\n name: 'ant-input'\n }]\n }])), h(\n 'span',\n { 'class': prefixCls + '-slash' },\n ['\\uFF0F']\n ), allPages]\n ), h(\n 'li',\n {\n attrs: {\n title: this.showTitle ? locale.next_page : null,\n\n tabIndex: this.hasNext ? 0 : null,\n\n 'aria-disabled': !this.hasNext()\n },\n on: {\n 'click': this.next,\n 'keypress': this.runIfEnterNext\n },\n\n 'class': (hasNext ? '' : prefixCls + '-disabled') + ' ' + prefixCls + '-next' },\n [this.itemRender(nextPage, 'next', this.getItemIcon('nextIcon'))]\n ), gotoButton]\n );\n }\n if (allPages <= 5 + pageBufferSize * 2) {\n var pagerProps = {\n props: {\n locale: locale,\n rootPrefixCls: prefixCls,\n showTitle: props.showTitle,\n itemRender: props.itemRender\n },\n on: {\n click: this.handleChange,\n keypress: this.runIfEnter\n }\n };\n if (!allPages) {\n pagerList.push(h(Pager, _mergeJSXProps([pagerProps, { key: 'noPager', attrs: { page: allPages },\n 'class': prefixCls + '-disabled' }])));\n }\n for (var i = 1; i <= allPages; i++) {\n var active = stateCurrent === i;\n pagerList.push(h(Pager, _mergeJSXProps([pagerProps, { key: i, attrs: { page: i, active: active }\n }])));\n }\n } else {\n var prevItemTitle = this.showLessItems ? locale.prev_3 : locale.prev_5;\n var nextItemTitle = this.showLessItems ? locale.next_3 : locale.next_5;\n if (this.showPrevNextJumpers) {\n var jumpPrevClassString = prefixCls + '-jump-prev';\n if (props.jumpPrevIcon) {\n jumpPrevClassString += ' ' + prefixCls + '-jump-prev-custom-icon';\n }\n jumpPrev = h(\n 'li',\n {\n attrs: {\n title: this.showTitle ? prevItemTitle : null,\n\n tabIndex: '0'\n },\n key: 'prev',\n on: {\n 'click': this.jumpPrev,\n 'keypress': this.runIfEnterJumpPrev\n },\n\n 'class': jumpPrevClassString\n },\n [this.itemRender(this.getJumpPrevPage(), 'jump-prev', this.getItemIcon('jumpPrevIcon'))]\n );\n var jumpNextClassString = prefixCls + '-jump-next';\n if (props.jumpNextIcon) {\n jumpNextClassString += ' ' + prefixCls + '-jump-next-custom-icon';\n }\n jumpNext = h(\n 'li',\n {\n attrs: {\n title: this.showTitle ? nextItemTitle : null,\n\n tabIndex: '0'\n },\n key: 'next', on: {\n 'click': this.jumpNext,\n 'keypress': this.runIfEnterJumpNext\n },\n\n 'class': jumpNextClassString\n },\n [this.itemRender(this.getJumpNextPage(), 'jump-next', this.getItemIcon('jumpNextIcon'))]\n );\n }\n\n lastPager = h(Pager, {\n attrs: {\n locale: locale,\n last: true,\n rootPrefixCls: prefixCls,\n\n page: allPages,\n active: false,\n showTitle: this.showTitle,\n itemRender: this.itemRender\n },\n on: {\n 'click': this.handleChange,\n 'keypress': this.runIfEnter\n },\n\n key: allPages });\n firstPager = h(Pager, {\n attrs: {\n locale: locale,\n rootPrefixCls: prefixCls,\n\n page: 1,\n active: false,\n showTitle: this.showTitle,\n itemRender: this.itemRender\n },\n on: {\n 'click': this.handleChange,\n 'keypress': this.runIfEnter\n },\n\n key: 1 });\n\n var left = Math.max(1, stateCurrent - pageBufferSize);\n var right = Math.min(stateCurrent + pageBufferSize, allPages);\n\n if (stateCurrent - 1 <= pageBufferSize) {\n right = 1 + pageBufferSize * 2;\n }\n\n if (allPages - stateCurrent <= pageBufferSize) {\n left = allPages - pageBufferSize * 2;\n }\n\n for (var _i = left; _i <= right; _i++) {\n var _active = stateCurrent === _i;\n pagerList.push(h(Pager, {\n attrs: {\n locale: locale,\n rootPrefixCls: prefixCls,\n\n page: _i,\n active: _active,\n showTitle: this.showTitle,\n itemRender: this.itemRender\n },\n on: {\n 'click': this.handleChange,\n 'keypress': this.runIfEnter\n },\n\n key: _i }));\n }\n\n if (stateCurrent - 1 >= pageBufferSize * 2 && stateCurrent !== 1 + 2) {\n pagerList[0] = h(Pager, {\n attrs: {\n locale: locale,\n rootPrefixCls: prefixCls,\n\n page: left,\n\n active: false,\n showTitle: this.showTitle,\n itemRender: this.itemRender\n },\n on: {\n 'click': this.handleChange,\n 'keypress': this.runIfEnter\n },\n\n key: left, 'class': prefixCls + '-item-after-jump-prev' });\n pagerList.unshift(jumpPrev);\n }\n if (allPages - stateCurrent >= pageBufferSize * 2 && stateCurrent !== allPages - 2) {\n pagerList[pagerList.length - 1] = h(Pager, {\n attrs: {\n locale: locale,\n rootPrefixCls: prefixCls,\n\n page: right,\n\n active: false,\n showTitle: this.showTitle,\n itemRender: this.itemRender\n },\n on: {\n 'click': this.handleChange,\n 'keypress': this.runIfEnter\n },\n\n key: right, 'class': prefixCls + '-item-before-jump-next' });\n pagerList.push(jumpNext);\n }\n\n if (left !== 1) {\n pagerList.unshift(firstPager);\n }\n if (right !== allPages) {\n pagerList.push(lastPager);\n }\n }\n\n var totalText = null;\n\n if (this.showTotal) {\n totalText = h(\n 'li',\n { 'class': prefixCls + '-total-text' },\n [this.showTotal(this.total, [this.total === 0 ? 0 : (stateCurrent - 1) * statePageSize + 1, stateCurrent * statePageSize > this.total ? this.total : stateCurrent * statePageSize])]\n );\n }\n var prevDisabled = !this.hasPrev() || !allPages;\n var nextDisabled = !this.hasNext() || !allPages;\n var buildOptionText = this.buildOptionText || this.$scopedSlots.buildOptionText;\n return h(\n 'ul',\n {\n 'class': (_ref = {}, _defineProperty(_ref, '' + prefixCls, true), _defineProperty(_ref, prefixCls + '-disabled', disabled), _ref),\n attrs: { unselectable: 'unselectable'\n },\n ref: 'paginationNode'\n },\n [totalText, h(\n 'li',\n {\n attrs: {\n title: this.showTitle ? locale.prev_page : null,\n\n tabIndex: prevDisabled ? null : 0,\n\n 'aria-disabled': prevDisabled\n },\n on: {\n 'click': this.prev,\n 'keypress': this.runIfEnterPrev\n },\n\n 'class': (!prevDisabled ? '' : prefixCls + '-disabled') + ' ' + prefixCls + '-prev' },\n [this.itemRender(prevPage, 'prev', this.getItemIcon('prevIcon'))]\n ), pagerList, h(\n 'li',\n {\n attrs: {\n title: this.showTitle ? locale.next_page : null,\n\n tabIndex: nextDisabled ? null : 0,\n\n 'aria-disabled': nextDisabled\n },\n on: {\n 'click': this.next,\n 'keypress': this.runIfEnterNext\n },\n\n 'class': (!nextDisabled ? '' : prefixCls + '-disabled') + ' ' + prefixCls + '-next' },\n [this.itemRender(nextPage, 'next', this.getItemIcon('nextIcon'))]\n ), h(Options, {\n attrs: {\n disabled: disabled,\n locale: locale,\n rootPrefixCls: prefixCls,\n selectComponentClass: this.selectComponentClass,\n selectPrefixCls: this.selectPrefixCls,\n changeSize: this.showSizeChanger ? this.changePageSize : null,\n current: stateCurrent,\n pageSize: statePageSize,\n pageSizeOptions: this.pageSizeOptions,\n buildOptionText: buildOptionText || null,\n quickGo: this.shouldDisplayQuickJumper() ? this.handleChange : null,\n goButton: goButton\n }\n })]\n );\n }\n};","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport VcSelect from '../select';\nimport MiniSelect from './MiniSelect';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport { getOptionProps, getListeners } from '../_util/props-util';\nimport VcPagination from '../vc-pagination';\nimport enUS from '../vc-pagination/locale/en_US';\nimport Icon from '../icon';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport var PaginationProps = function PaginationProps() {\n return {\n total: PropTypes.number,\n defaultCurrent: PropTypes.number,\n disabled: PropTypes.bool,\n current: PropTypes.number,\n defaultPageSize: PropTypes.number,\n pageSize: PropTypes.number,\n hideOnSinglePage: PropTypes.bool,\n showSizeChanger: PropTypes.bool,\n pageSizeOptions: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.number, PropTypes.string])),\n buildOptionText: PropTypes.func,\n showSizeChange: PropTypes.func,\n showQuickJumper: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n showTotal: PropTypes.any,\n size: PropTypes.string,\n simple: PropTypes.bool,\n locale: PropTypes.object,\n prefixCls: PropTypes.string,\n selectPrefixCls: PropTypes.string,\n itemRender: PropTypes.any,\n role: PropTypes.string,\n showLessItems: PropTypes.bool\n };\n};\n\nexport var PaginationConfig = function PaginationConfig() {\n return _extends({}, PaginationProps(), {\n position: PropTypes.oneOf(['top', 'bottom', 'both'])\n });\n};\n\nexport default {\n name: 'APagination',\n model: {\n prop: 'current',\n event: 'change.current'\n },\n props: _extends({}, PaginationProps()),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n getIconsProps: function getIconsProps(prefixCls) {\n var h = this.$createElement;\n\n var prevIcon = h(\n 'a',\n { 'class': prefixCls + '-item-link' },\n [h(Icon, {\n attrs: { type: 'left' }\n })]\n );\n var nextIcon = h(\n 'a',\n { 'class': prefixCls + '-item-link' },\n [h(Icon, {\n attrs: { type: 'right' }\n })]\n );\n var jumpPrevIcon = h(\n 'a',\n { 'class': prefixCls + '-item-link' },\n [h(\n 'div',\n { 'class': prefixCls + '-item-container' },\n [h(Icon, { 'class': prefixCls + '-item-link-icon', attrs: { type: 'double-left' }\n }), h(\n 'span',\n { 'class': prefixCls + '-item-ellipsis' },\n ['\\u2022\\u2022\\u2022']\n )]\n )]\n );\n var jumpNextIcon = h(\n 'a',\n { 'class': prefixCls + '-item-link' },\n [h(\n 'div',\n { 'class': prefixCls + '-item-container' },\n [h(Icon, { 'class': prefixCls + '-item-link-icon', attrs: { type: 'double-right' }\n }), h(\n 'span',\n { 'class': prefixCls + '-item-ellipsis' },\n ['\\u2022\\u2022\\u2022']\n )]\n )]\n );\n return {\n prevIcon: prevIcon,\n nextIcon: nextIcon,\n jumpPrevIcon: jumpPrevIcon,\n jumpNextIcon: jumpNextIcon\n };\n },\n renderPagination: function renderPagination(contextLocale) {\n var h = this.$createElement;\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n customizeSelectPrefixCls = _getOptionProps.selectPrefixCls,\n buildOptionText = _getOptionProps.buildOptionText,\n size = _getOptionProps.size,\n customLocale = _getOptionProps.locale,\n restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'selectPrefixCls', 'buildOptionText', 'size', 'locale']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('pagination', customizePrefixCls);\n var selectPrefixCls = getPrefixCls('select', customizeSelectPrefixCls);\n\n var isSmall = size === 'small';\n var paginationProps = {\n props: _extends({\n prefixCls: prefixCls,\n selectPrefixCls: selectPrefixCls\n }, restProps, this.getIconsProps(prefixCls), {\n selectComponentClass: isSmall ? MiniSelect : VcSelect,\n locale: _extends({}, contextLocale, customLocale),\n buildOptionText: buildOptionText || this.$scopedSlots.buildOptionText\n }),\n 'class': {\n mini: isSmall\n },\n on: getListeners(this)\n };\n\n return h(VcPagination, paginationProps);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n return h(LocaleReceiver, {\n attrs: {\n componentName: 'Pagination',\n defaultLocale: enUS\n },\n scopedSlots: { 'default': this.renderPagination }\n });\n }\n};","import Pagination from './Pagination';\nimport Base from '../base';\n\nexport { PaginationProps, PaginationConfig } from './Pagination';\n\n/* istanbul ignore next */\nPagination.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Pagination.name, Pagination);\n};\n\nexport default Pagination;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport { getComponentFromProp, isStringElement, getListeners, isEmptyElement } from '../_util/props-util';\nimport { Col } from '../grid';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { ListGridType } from './index';\nimport { cloneElement } from '../_util/vnode';\n\nexport var ListItemProps = {\n prefixCls: PropTypes.string,\n extra: PropTypes.any,\n actions: PropTypes.arrayOf(PropTypes.any),\n grid: ListGridType\n};\n\nexport var ListItemMetaProps = {\n avatar: PropTypes.any,\n description: PropTypes.any,\n prefixCls: PropTypes.string,\n title: PropTypes.any\n};\n\nexport var Meta = {\n functional: true,\n name: 'AListItemMeta',\n __ANT_LIST_ITEM_META: true,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render(h, context) {\n var props = context.props,\n slots = context.slots,\n listeners = context.listeners,\n injections = context.injections;\n\n var slotsMap = slots();\n var getPrefixCls = injections.configProvider.getPrefixCls;\n var customizePrefixCls = props.prefixCls;\n\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n\n var avatar = props.avatar || slotsMap.avatar;\n var title = props.title || slotsMap.title;\n var description = props.description || slotsMap.description;\n var content = h(\n 'div',\n { 'class': prefixCls + '-item-meta-content' },\n [title && h(\n 'h4',\n { 'class': prefixCls + '-item-meta-title' },\n [title]\n ), description && h(\n 'div',\n { 'class': prefixCls + '-item-meta-description' },\n [description]\n )]\n );\n return h(\n 'div',\n _mergeJSXProps([{ on: listeners }, { 'class': prefixCls + '-item-meta' }]),\n [avatar && h(\n 'div',\n { 'class': prefixCls + '-item-meta-avatar' },\n [avatar]\n ), (title || description) && content]\n );\n }\n};\n\nfunction getGrid(grid, t) {\n return grid[t] && Math.floor(24 / grid[t]);\n}\n\nexport default {\n name: 'AListItem',\n Meta: Meta,\n props: ListItemProps,\n inject: {\n listContext: { 'default': function _default() {\n return {};\n } },\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n isItemContainsTextNodeAndNotSingular: function isItemContainsTextNodeAndNotSingular() {\n var $slots = this.$slots;\n\n var result = void 0;\n var children = $slots['default'] || [];\n children.forEach(function (element) {\n if (isStringElement(element) && !isEmptyElement(element)) {\n result = true;\n }\n });\n return result && children.length > 1;\n },\n isFlexMode: function isFlexMode() {\n var extra = getComponentFromProp(this, 'extra');\n var itemLayout = this.listContext.itemLayout;\n\n if (itemLayout === 'vertical') {\n return !!extra;\n }\n return !this.isItemContainsTextNodeAndNotSingular();\n }\n },\n render: function render() {\n var h = arguments[0];\n var _listContext = this.listContext,\n grid = _listContext.grid,\n itemLayout = _listContext.itemLayout;\n var customizePrefixCls = this.prefixCls,\n $slots = this.$slots;\n\n var listeners = getListeners(this);\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n var extra = getComponentFromProp(this, 'extra');\n var actions = getComponentFromProp(this, 'actions');\n\n var actionsContent = actions && actions.length > 0 && h(\n 'ul',\n { 'class': prefixCls + '-item-action', key: 'actions' },\n [actions.map(function (action, i) {\n return h(\n 'li',\n { key: prefixCls + '-item-action-' + i },\n [action, i !== actions.length - 1 && h('em', { 'class': prefixCls + '-item-action-split' })]\n );\n })]\n );\n\n var Tag = grid ? 'div' : 'li';\n var itemChildren = h(\n Tag,\n _mergeJSXProps([{ on: listeners }, {\n 'class': classNames(prefixCls + '-item', _defineProperty({}, prefixCls + '-item-no-flex', !this.isFlexMode()))\n }]),\n [itemLayout === 'vertical' && extra ? [h(\n 'div',\n { 'class': prefixCls + '-item-main', key: 'content' },\n [$slots['default'], actionsContent]\n ), h(\n 'div',\n { 'class': prefixCls + '-item-extra', key: 'extra' },\n [extra]\n )] : [$slots['default'], actionsContent, cloneElement(extra, { key: 'extra' })]]\n );\n\n var mainContent = grid ? h(\n Col,\n {\n attrs: {\n span: getGrid(grid, 'column'),\n xs: getGrid(grid, 'xs'),\n sm: getGrid(grid, 'sm'),\n md: getGrid(grid, 'md'),\n lg: getGrid(grid, 'lg'),\n xl: getGrid(grid, 'xl'),\n xxl: getGrid(grid, 'xxl')\n }\n },\n [itemChildren]\n ) : itemChildren;\n\n return mainContent;\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport omit from 'omit.js';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nimport Spin from '../spin';\nimport Pagination, { PaginationConfig } from '../pagination';\nimport { Row } from '../grid';\n\nimport Item from './Item';\nimport { initDefaultProps, getComponentFromProp, filterEmpty, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport Base from '../base';\n\nexport { ListItemProps, ListItemMetaProps } from './Item';\n\nexport var ColumnCount = ['', 1, 2, 3, 4, 6, 8, 12, 24];\n\nexport var ColumnType = ['gutter', 'column', 'xs', 'sm', 'md', 'lg', 'xl', 'xxl'];\n\nexport var ListGridType = {\n gutter: PropTypes.number,\n column: PropTypes.oneOf(ColumnCount),\n xs: PropTypes.oneOf(ColumnCount),\n sm: PropTypes.oneOf(ColumnCount),\n md: PropTypes.oneOf(ColumnCount),\n lg: PropTypes.oneOf(ColumnCount),\n xl: PropTypes.oneOf(ColumnCount),\n xxl: PropTypes.oneOf(ColumnCount)\n};\n\nexport var ListSize = ['small', 'default', 'large'];\n\nexport var ListProps = function ListProps() {\n return {\n bordered: PropTypes.bool,\n dataSource: PropTypes.array,\n extra: PropTypes.any,\n grid: PropTypes.shape(ListGridType).loose,\n itemLayout: PropTypes.string,\n loading: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n loadMore: PropTypes.any,\n pagination: PropTypes.oneOfType([PropTypes.shape(PaginationConfig()).loose, PropTypes.bool]),\n prefixCls: PropTypes.string,\n rowKey: PropTypes.any,\n renderItem: PropTypes.any,\n size: PropTypes.oneOf(ListSize),\n split: PropTypes.bool,\n header: PropTypes.any,\n footer: PropTypes.any,\n locale: PropTypes.object\n };\n};\n\nvar List = {\n Item: Item,\n name: 'AList',\n props: initDefaultProps(ListProps(), {\n dataSource: [],\n bordered: false,\n split: true,\n loading: false,\n pagination: false\n }),\n provide: function provide() {\n return {\n listContext: this\n };\n },\n\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var _this = this;\n\n this.keys = [];\n this.defaultPaginationProps = {\n current: 1,\n pageSize: 10,\n onChange: function onChange(page, pageSize) {\n var pagination = _this.pagination;\n\n _this.paginationCurrent = page;\n if (pagination && pagination.onChange) {\n pagination.onChange(page, pageSize);\n }\n },\n total: 0\n };\n this.onPaginationChange = this.triggerPaginationEvent('onChange');\n this.onPaginationShowSizeChange = this.triggerPaginationEvent('onShowSizeChange');\n var pagination = this.$props.pagination;\n\n var paginationObj = pagination && (typeof pagination === 'undefined' ? 'undefined' : _typeof(pagination)) === 'object' ? pagination : {};\n return {\n paginationCurrent: paginationObj.defaultCurrent || 1,\n paginationSize: paginationObj.defaultPageSize || 10\n };\n },\n\n methods: {\n triggerPaginationEvent: function triggerPaginationEvent(eventName) {\n var _this2 = this;\n\n return function (page, pageSize) {\n var pagination = _this2.$props.pagination;\n\n _this2.paginationCurrent = page;\n _this2.paginationSize = pageSize;\n if (pagination && pagination[eventName]) {\n pagination[eventName](page, pageSize);\n }\n };\n },\n renderItem2: function renderItem2(item, index) {\n var $scopedSlots = this.$scopedSlots,\n rowKey = this.rowKey;\n\n var renderItem = this.renderItem || $scopedSlots.renderItem;\n if (!renderItem) return null;\n var key = void 0;\n if (typeof rowKey === 'function') {\n key = rowKey(item);\n } else if (typeof rowKey === 'string') {\n key = item[rowKey];\n } else {\n key = item.key;\n }\n\n if (!key) {\n key = 'list-item-' + index;\n }\n\n this.keys[index] = key;\n\n return renderItem(item, index);\n },\n isSomethingAfterLastItem: function isSomethingAfterLastItem() {\n var pagination = this.pagination;\n\n var loadMore = getComponentFromProp(this, 'loadMore');\n var footer = getComponentFromProp(this, 'footer');\n return !!(loadMore || pagination || footer);\n },\n renderEmpty: function renderEmpty(prefixCls, _renderEmpty) {\n var h = this.$createElement;\n var locale = this.locale;\n\n return h(\n 'div',\n { 'class': prefixCls + '-empty-text' },\n [locale && locale.emptyText || _renderEmpty(h, 'List')]\n );\n }\n },\n\n render: function render() {\n var _classNames,\n _this3 = this;\n\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n bordered = this.bordered,\n split = this.split,\n itemLayout = this.itemLayout,\n pagination = this.pagination,\n grid = this.grid,\n _dataSource = this.dataSource,\n dataSource = _dataSource === undefined ? [] : _dataSource,\n size = this.size,\n loading = this.loading,\n $slots = this.$slots,\n paginationCurrent = this.paginationCurrent,\n paginationSize = this.paginationSize;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('list', customizePrefixCls);\n\n var loadMore = getComponentFromProp(this, 'loadMore');\n var footer = getComponentFromProp(this, 'footer');\n var header = getComponentFromProp(this, 'header');\n var children = filterEmpty($slots['default'] || []);\n var loadingProp = loading;\n if (typeof loadingProp === 'boolean') {\n loadingProp = {\n spinning: loadingProp\n };\n }\n var isLoading = loadingProp && loadingProp.spinning;\n\n // large => lg\n // small => sm\n var sizeCls = '';\n switch (size) {\n case 'large':\n sizeCls = 'lg';\n break;\n case 'small':\n sizeCls = 'sm';\n break;\n default:\n break;\n }\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-vertical', itemLayout === 'vertical'), _defineProperty(_classNames, prefixCls + '-' + sizeCls, sizeCls), _defineProperty(_classNames, prefixCls + '-split', split), _defineProperty(_classNames, prefixCls + '-bordered', bordered), _defineProperty(_classNames, prefixCls + '-loading', isLoading), _defineProperty(_classNames, prefixCls + '-grid', grid), _defineProperty(_classNames, prefixCls + '-something-after-last-item', this.isSomethingAfterLastItem()), _classNames));\n var paginationProps = _extends({}, this.defaultPaginationProps, {\n total: dataSource.length,\n current: paginationCurrent,\n pageSize: paginationSize\n }, pagination || {});\n var largestPage = Math.ceil(paginationProps.total / paginationProps.pageSize);\n if (paginationProps.current > largestPage) {\n paginationProps.current = largestPage;\n }\n\n var cls = paginationProps['class'],\n style = paginationProps.style,\n restProps = _objectWithoutProperties(paginationProps, ['class', 'style']);\n\n var paginationContent = pagination ? h(\n 'div',\n { 'class': prefixCls + '-pagination' },\n [h(Pagination, {\n props: omit(restProps, ['onChange']),\n 'class': cls,\n style: style,\n on: {\n change: this.onPaginationChange,\n showSizeChange: this.onPaginationShowSizeChange\n }\n })]\n ) : null;\n\n var splitDataSource = [].concat(_toConsumableArray(dataSource));\n if (pagination) {\n if (dataSource.length > (paginationProps.current - 1) * paginationProps.pageSize) {\n splitDataSource = [].concat(_toConsumableArray(dataSource)).splice((paginationProps.current - 1) * paginationProps.pageSize, paginationProps.pageSize);\n }\n }\n\n var childrenContent = void 0;\n childrenContent = isLoading && h('div', { style: { minHeight: 53 } });\n if (splitDataSource.length > 0) {\n var items = splitDataSource.map(function (item, index) {\n return _this3.renderItem2(item, index);\n });\n var childrenList = items.map(function (child, index) {\n return cloneElement(child, {\n key: _this3.keys[index]\n });\n });\n\n childrenContent = grid ? h(\n Row,\n {\n attrs: { gutter: grid.gutter }\n },\n [childrenList]\n ) : h(\n 'ul',\n { 'class': prefixCls + '-items' },\n [childrenList]\n );\n } else if (!children.length && !isLoading) {\n var renderEmpty = this.configProvider.renderEmpty;\n childrenContent = this.renderEmpty(prefixCls, renderEmpty);\n }\n var paginationPosition = paginationProps.position || 'bottom';\n\n return h(\n 'div',\n _mergeJSXProps([{ 'class': classString }, { on: getListeners(this) }]),\n [(paginationPosition === 'top' || paginationPosition === 'both') && paginationContent, header && h(\n 'div',\n { 'class': prefixCls + '-header' },\n [header]\n ), h(\n Spin,\n { props: loadingProp },\n [childrenContent, children]\n ), footer && h(\n 'div',\n { 'class': prefixCls + '-footer' },\n [footer]\n ), loadMore || (paginationPosition === 'bottom' || paginationPosition === 'both') && paginationContent]\n );\n }\n};\n\n/* istanbul ignore next */\nList.install = function (Vue) {\n Vue.use(Base);\n Vue.component(List.name, List);\n Vue.component(List.Item.name, List.Item);\n Vue.component(List.Item.Meta.name, List.Item.Meta);\n};\n\nexport default List;","import _extends from 'babel-runtime/helpers/extends';\nimport defaultLocale from '../locale/default';\n\n// export interface ModalLocale {\n// okText: string;\n// cancelText: string;\n// justOkText: string;\n// }\n\nvar runtimeLocale = _extends({}, defaultLocale.Modal);\n\nexport function changeConfirmLocale(newLocale) {\n if (newLocale) {\n runtimeLocale = _extends({}, runtimeLocale, newLocale);\n } else {\n runtimeLocale = _extends({}, defaultLocale.Modal);\n }\n}\n\nexport function getConfirmLocale() {\n return runtimeLocale;\n}","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport * as moment from 'moment';\nimport interopDefault from '../_util/interopDefault';\nimport { changeConfirmLocale } from '../modal/locale';\nimport Base from '../base';\nimport warning from '../_util/warning';\n// export interface Locale {\n// locale: string;\n// Pagination?: Object;\n// DatePicker?: Object;\n// TimePicker?: Object;\n// Calendar?: Object;\n// Table?: Object;\n// Modal?: ModalLocale;\n// Popconfirm?: Object;\n// Transfer?: Object;\n// Select?: Object;\n// Upload?: Object;\n// }\nexport var ANT_MARK = 'internalMark';\nfunction setMomentLocale(locale) {\n if (locale && locale.locale) {\n interopDefault(moment).locale(locale.locale);\n } else {\n interopDefault(moment).locale('en');\n }\n}\n\nvar LocaleProvider = {\n name: 'ALocaleProvider',\n props: {\n locale: PropTypes.object.def(function () {\n return {};\n }),\n _ANT_MARK__: PropTypes.string\n },\n data: function data() {\n warning(this._ANT_MARK__ === ANT_MARK, 'LocaleProvider', '`LocaleProvider` is deprecated. Please use `locale` with `ConfigProvider` instead');\n return {\n antLocale: _extends({}, this.locale, {\n exist: true\n })\n };\n },\n provide: function provide() {\n return {\n localeData: this.$data\n };\n },\n\n watch: {\n locale: function locale(val) {\n this.antLocale = _extends({}, this.locale, {\n exist: true\n });\n setMomentLocale(val);\n changeConfirmLocale(val && val.Modal);\n }\n },\n created: function created() {\n var locale = this.locale;\n\n setMomentLocale(locale);\n changeConfirmLocale(locale && locale.Modal);\n },\n beforeDestroy: function beforeDestroy() {\n changeConfirmLocale();\n },\n render: function render() {\n return this.$slots['default'] ? this.$slots['default'][0] : null;\n }\n};\n\n/* istanbul ignore next */\nLocaleProvider.install = function (Vue) {\n Vue.use(Base);\n Vue.component(LocaleProvider.name, LocaleProvider);\n};\n\nexport default LocaleProvider;","/**\n * Cut input selection into 2 part and return text before selection start\n */\nexport function getBeforeSelectionText(input) {\n var selectionStart = input.selectionStart;\n\n return input.value.slice(0, selectionStart);\n}\n\nfunction lower(char) {\n return (char || '').toLowerCase();\n}\n\n/**\n * Find the last match prefix index\n */\nexport function getLastMeasureIndex(text) {\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n var prefixList = Array.isArray(prefix) ? prefix : [prefix];\n return prefixList.reduce(function (lastMatch, prefixStr) {\n var lastIndex = text.lastIndexOf(prefixStr);\n if (lastIndex > lastMatch.location) {\n return {\n location: lastIndex,\n prefix: prefixStr\n };\n }\n return lastMatch;\n }, { location: -1, prefix: '' });\n}\n\nfunction reduceText(text, targetText, split) {\n var firstChar = text[0];\n if (!firstChar || firstChar === split) {\n return text;\n }\n\n // Reuse rest text as it can\n var restText = text;\n var targetTextLen = targetText.length;\n for (var i = 0; i < targetTextLen; i += 1) {\n if (lower(restText[i]) !== lower(targetText[i])) {\n restText = restText.slice(i);\n break;\n } else if (i === targetTextLen - 1) {\n restText = restText.slice(targetTextLen);\n }\n }\n\n return restText;\n}\n\n/**\n * Paint targetText into current text:\n * text: little@litest\n * targetText: light\n * => little @light test\n */\nexport function replaceWithMeasure(text, measureConfig) {\n var measureLocation = measureConfig.measureLocation,\n prefix = measureConfig.prefix,\n targetText = measureConfig.targetText,\n selectionStart = measureConfig.selectionStart,\n split = measureConfig.split;\n\n // Before text will append one space if have other text\n\n var beforeMeasureText = text.slice(0, measureLocation);\n if (beforeMeasureText[beforeMeasureText.length - split.length] === split) {\n beforeMeasureText = beforeMeasureText.slice(0, beforeMeasureText.length - split.length);\n }\n if (beforeMeasureText) {\n beforeMeasureText = '' + beforeMeasureText + split;\n }\n\n // Cut duplicate string with current targetText\n var restText = reduceText(text.slice(selectionStart), targetText.slice(selectionStart - measureLocation - prefix.length), split);\n if (restText.slice(0, split.length) === split) {\n restText = restText.slice(split.length);\n }\n\n var connectedStartText = '' + beforeMeasureText + prefix + targetText + split;\n\n return {\n text: '' + connectedStartText + restText,\n selectionLocation: connectedStartText.length\n };\n}\n\nexport function setInputSelection(input, location) {\n input.setSelectionRange(location, location);\n\n /**\n * Reset caret into view.\n * Since this function always called by user control, it's safe to focus element.\n */\n input.blur();\n input.focus();\n}\n\nexport function validateSearch() {\n var text = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var split = props.split;\n\n return !split || text.indexOf(split) === -1;\n}\n\nexport function filterOption() {\n var input = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n _ref$value = _ref.value,\n value = _ref$value === undefined ? '' : _ref$value;\n\n var lowerCase = input.toLowerCase();\n return value.toLowerCase().indexOf(lowerCase) !== -1;\n}","import PropTypes from '../../_util/vue-types';\n\nexport var OptionProps = {\n value: PropTypes.string,\n disabled: PropTypes.boolean,\n children: PropTypes.any\n};\n\nexport default {\n name: 'Option',\n props: OptionProps,\n render: function render() {\n return null;\n }\n};","import Menu, { MenuItem } from '../../vc-menu';\nimport PropTypes from '../../_util/vue-types';\nimport { OptionProps } from './Option';\n\nfunction noop() {}\nexport default {\n name: 'DropdownMenu',\n props: {\n prefixCls: PropTypes.string,\n options: PropTypes.arrayOf(OptionProps)\n },\n inject: {\n mentionsContext: { 'default': {} }\n },\n\n render: function render() {\n var h = arguments[0];\n var _mentionsContext = this.mentionsContext,\n notFoundContent = _mentionsContext.notFoundContent,\n activeIndex = _mentionsContext.activeIndex,\n setActiveIndex = _mentionsContext.setActiveIndex,\n selectOption = _mentionsContext.selectOption,\n _mentionsContext$onFo = _mentionsContext.onFocus,\n onFocus = _mentionsContext$onFo === undefined ? noop : _mentionsContext$onFo,\n _mentionsContext$onBl = _mentionsContext.onBlur,\n onBlur = _mentionsContext$onBl === undefined ? noop : _mentionsContext$onBl;\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n options = _$props.options;\n\n var activeOption = options[activeIndex] || {};\n\n return h(\n Menu,\n {\n props: {\n prefixCls: prefixCls + '-menu',\n activeKey: activeOption.value\n },\n on: {\n select: function select(_ref) {\n var key = _ref.key;\n\n var option = options.find(function (_ref2) {\n var value = _ref2.value;\n return value === key;\n });\n selectOption(option);\n },\n focus: onFocus,\n blur: onBlur\n }\n },\n [options.map(function (option, index) {\n var value = option.value,\n disabled = option.disabled,\n children = option.children;\n\n return h(\n MenuItem,\n {\n key: value,\n attrs: { disabled: disabled\n },\n on: {\n 'mouseenter': function mouseenter() {\n setActiveIndex(index);\n }\n }\n },\n [children]\n );\n }), !options.length && h(\n MenuItem,\n {\n attrs: { disabled: true }\n },\n [notFoundContent]\n )]\n );\n }\n};","export var PlaceMent = ['top', 'bottom'];","import PropTypes from '../../_util/vue-types';\nimport Trigger from '../../vc-trigger';\nimport DropdownMenu from './DropdownMenu';\nimport { OptionProps } from './Option';\nimport { PlaceMent } from './placement';\n\nvar BUILT_IN_PLACEMENTS = {\n bottomRight: {\n points: ['tl', 'br'],\n offset: [0, 4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n }\n },\n topRight: {\n points: ['bl', 'tr'],\n offset: [0, -4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n }\n }\n};\n\nexport default {\n name: 'KeywordTrigger',\n props: {\n loading: PropTypes.bool,\n options: PropTypes.arrayOf(OptionProps),\n prefixCls: PropTypes.string,\n placement: PropTypes.oneOf(PlaceMent),\n visible: PropTypes.bool,\n transitionName: PropTypes.string,\n getPopupContainer: PropTypes.func\n },\n methods: {\n getDropdownPrefix: function getDropdownPrefix() {\n return this.$props.prefixCls + '-dropdown';\n },\n getDropdownElement: function getDropdownElement() {\n var h = this.$createElement;\n var options = this.$props.options;\n\n return h(DropdownMenu, {\n attrs: { prefixCls: this.getDropdownPrefix(), options: options }\n });\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var _$props = this.$props,\n visible = _$props.visible,\n placement = _$props.placement,\n transitionName = _$props.transitionName,\n getPopupContainer = _$props.getPopupContainer;\n var $slots = this.$slots;\n\n\n var children = $slots['default'];\n\n var popupElement = this.getDropdownElement();\n\n return h(\n Trigger,\n {\n attrs: {\n prefixCls: this.getDropdownPrefix(),\n popupVisible: visible,\n popup: popupElement,\n popupPlacement: placement === 'top' ? 'topRight' : 'bottomRight',\n popupTransitionName: transitionName,\n builtinPlacements: BUILT_IN_PLACEMENTS,\n getPopupContainer: getPopupContainer\n }\n },\n [children]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport { initDefaultProps } from '../../_util/props-util';\nimport { filterOption as defaultFilterOption, validateSearch as defaultValidateSearch } from './util';\nimport { PlaceMent } from './placement';\n\nexport var mentionsProps = {\n autoFocus: PropTypes.bool,\n prefix: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n prefixCls: PropTypes.string,\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n disabled: PropTypes.bool,\n notFoundContent: PropTypes.any,\n split: PropTypes.string,\n transitionName: PropTypes.string,\n placement: PropTypes.oneOf(PlaceMent),\n character: PropTypes.any,\n characterRender: PropTypes.func,\n filterOption: PropTypes.func,\n validateSearch: PropTypes.func,\n getPopupContainer: PropTypes.func\n};\n\nexport var vcMentionsProps = _extends({}, mentionsProps, {\n children: PropTypes.any\n});\n\nexport var defaultProps = {\n prefix: '@',\n split: ' ',\n validateSearch: defaultValidateSearch,\n filterOption: defaultFilterOption\n};\n\nexport default initDefaultProps(vcMentionsProps, defaultProps);","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport omit from 'omit.js';\nimport KeyCode from '../../_util/KeyCode';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getSlots, hasProp, getOptionProps, getListeners, initDefaultProps } from '../../_util/props-util';\nimport warning from 'warning';\nimport { getBeforeSelectionText, getLastMeasureIndex, replaceWithMeasure, setInputSelection } from './util';\nimport KeywordTrigger from './KeywordTrigger';\nimport { vcMentionsProps, defaultProps } from './mentionsProps';\n\nfunction noop() {}\n\nvar Mentions = {\n name: 'Mentions',\n mixins: [BaseMixin],\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'change'\n },\n props: initDefaultProps(vcMentionsProps, defaultProps),\n provide: function provide() {\n return {\n mentionsContext: this\n };\n },\n data: function data() {\n var _$props = this.$props,\n _$props$value = _$props.value,\n value = _$props$value === undefined ? '' : _$props$value,\n _$props$defaultValue = _$props.defaultValue,\n defaultValue = _$props$defaultValue === undefined ? '' : _$props$defaultValue;\n\n warning(this.$props.children, 'please children prop replace slots.default');\n return {\n _value: !hasProp(this, 'value') ? defaultValue : value,\n measuring: false,\n measureLocation: 0,\n measureText: null,\n measurePrefix: '',\n activeIndex: 0,\n isFocus: false\n };\n },\n\n watch: {\n value: function value(val) {\n this.$data._value = val;\n }\n },\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function () {\n var measuring = _this.$data.measuring;\n\n // Sync measure div top with textarea for rc-trigger usage\n\n if (measuring) {\n _this.$refs.measure.scrollTop = _this.$refs.textarea.scrollTop;\n }\n });\n },\n\n methods: {\n triggerChange: function triggerChange(value) {\n var props = getOptionProps(this);\n if (!('value' in props)) {\n this.setState({ _value: value });\n } else {\n this.$forceUpdate();\n }\n this.$emit('change', value);\n },\n onChange: function onChange(_ref) {\n var _ref$target = _ref.target,\n value = _ref$target.value,\n composing = _ref$target.composing,\n isComposing = _ref.isComposing;\n\n if (isComposing || composing) return;\n this.triggerChange(value);\n },\n onKeyDown: function onKeyDown(event) {\n var which = event.which;\n var _$data = this.$data,\n activeIndex = _$data.activeIndex,\n measuring = _$data.measuring;\n // Skip if not measuring\n\n if (!measuring) {\n return;\n }\n\n if (which === KeyCode.UP || which === KeyCode.DOWN) {\n // Control arrow function\n var optionLen = this.getOptions().length;\n var offset = which === KeyCode.UP ? -1 : 1;\n var newActiveIndex = (activeIndex + offset + optionLen) % optionLen;\n this.setState({\n activeIndex: newActiveIndex\n });\n event.preventDefault();\n } else if (which === KeyCode.ESC) {\n this.stopMeasure();\n } else if (which === KeyCode.ENTER) {\n // Measure hit\n event.preventDefault();\n var options = this.getOptions();\n if (!options.length) {\n this.stopMeasure();\n return;\n }\n var option = options[activeIndex];\n this.selectOption(option);\n }\n },\n\n /**\n * When to start measure:\n * 1. When user press `prefix`\n * 2. When measureText !== prevMeasureText\n * - If measure hit\n * - If measuring\n *\n * When to stop measure:\n * 1. Selection is out of range\n * 2. Contains `space`\n * 3. ESC or select one\n */\n onKeyUp: function onKeyUp(event) {\n var key = event.key,\n which = event.which;\n var _$data2 = this.$data,\n prevMeasureText = _$data2.measureText,\n measuring = _$data2.measuring;\n var _$props2 = this.$props,\n _$props2$prefix = _$props2.prefix,\n prefix = _$props2$prefix === undefined ? '' : _$props2$prefix,\n validateSearch = _$props2.validateSearch;\n\n var target = event.target;\n var selectionStartText = getBeforeSelectionText(target);\n\n var _getLastMeasureIndex = getLastMeasureIndex(selectionStartText, prefix),\n measureIndex = _getLastMeasureIndex.location,\n measurePrefix = _getLastMeasureIndex.prefix;\n\n // Skip if match the white key list\n\n\n if ([KeyCode.ESC, KeyCode.UP, KeyCode.DOWN, KeyCode.ENTER].indexOf(which) !== -1) {\n return;\n }\n\n if (measureIndex !== -1) {\n var measureText = selectionStartText.slice(measureIndex + measurePrefix.length);\n var validateMeasure = validateSearch(measureText, this.$props);\n var matchOption = !!this.getOptions(measureText).length;\n\n if (validateMeasure) {\n if (key === measurePrefix || measuring || measureText !== prevMeasureText && matchOption) {\n this.startMeasure(measureText, measurePrefix, measureIndex);\n }\n } else if (measuring) {\n // Stop if measureText is invalidate\n this.stopMeasure();\n }\n\n /**\n * We will trigger `onSearch` to developer since they may use for async update.\n * If met `space` means user finished searching.\n */\n if (validateMeasure) {\n this.$emit('search', measureText, measurePrefix);\n }\n } else if (measuring) {\n this.stopMeasure();\n }\n },\n onInputFocus: function onInputFocus(event) {\n this.onFocus(event);\n },\n onInputBlur: function onInputBlur(event) {\n this.onBlur(event);\n },\n onDropdownFocus: function onDropdownFocus() {\n this.onFocus();\n },\n onDropdownBlur: function onDropdownBlur() {\n this.onBlur();\n },\n onFocus: function onFocus(event) {\n window.clearTimeout(this.focusId);\n var isFocus = this.$data.isFocus;\n\n if (!isFocus && event) {\n this.$emit('focus', event);\n }\n this.setState({ isFocus: true });\n },\n onBlur: function onBlur(event) {\n var _this2 = this;\n\n this.focusId = window.setTimeout(function () {\n _this2.setState({ isFocus: false });\n _this2.stopMeasure();\n _this2.$emit('blur', event);\n }, 0);\n },\n selectOption: function selectOption(option) {\n var _this3 = this;\n\n var _$data3 = this.$data,\n value = _$data3._value,\n measureLocation = _$data3.measureLocation,\n measurePrefix = _$data3.measurePrefix;\n var split = this.$props.split;\n var _option$value = option.value,\n mentionValue = _option$value === undefined ? '' : _option$value;\n\n var _replaceWithMeasure = replaceWithMeasure(value, {\n measureLocation: measureLocation,\n targetText: mentionValue,\n prefix: measurePrefix,\n selectionStart: this.$refs.textarea.selectionStart,\n split: split\n }),\n text = _replaceWithMeasure.text,\n selectionLocation = _replaceWithMeasure.selectionLocation;\n\n this.triggerChange(text);\n this.stopMeasure(function () {\n // We need restore the selection position\n setInputSelection(_this3.$refs.textarea, selectionLocation);\n });\n\n this.$emit('select', option, measurePrefix);\n },\n setActiveIndex: function setActiveIndex(activeIndex) {\n this.setState({\n activeIndex: activeIndex\n });\n },\n getOptions: function getOptions(measureText) {\n var targetMeasureText = measureText || this.$data.measureText || '';\n var _$props3 = this.$props,\n filterOption = _$props3.filterOption,\n _$props3$children = _$props3.children,\n children = _$props3$children === undefined ? [] : _$props3$children;\n\n var list = (Array.isArray(children) ? children : [children]).map(function (item) {\n var children = getSlots(item)['default'];\n return _extends({}, getOptionProps(item), { children: children });\n }).filter(function (option) {\n /** Return all result if `filterOption` is false. */\n if (filterOption === false) {\n return true;\n }\n return filterOption(targetMeasureText, option);\n });\n return list;\n },\n startMeasure: function startMeasure(measureText, measurePrefix, measureLocation) {\n this.setState({\n measuring: true,\n measureText: measureText,\n measurePrefix: measurePrefix,\n measureLocation: measureLocation,\n activeIndex: 0\n });\n },\n stopMeasure: function stopMeasure(callback) {\n this.setState({\n measuring: false,\n measureLocation: 0,\n measureText: null\n }, callback);\n },\n focus: function focus() {\n this.$refs.textarea.focus();\n },\n blur: function blur() {\n this.$refs.textarea.blur();\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var _$data4 = this.$data,\n value = _$data4._value,\n measureLocation = _$data4.measureLocation,\n measurePrefix = _$data4.measurePrefix,\n measuring = _$data4.measuring;\n\n var _getOptionProps = getOptionProps(this),\n prefixCls = _getOptionProps.prefixCls,\n placement = _getOptionProps.placement,\n transitionName = _getOptionProps.transitionName,\n autoFocus = _getOptionProps.autoFocus,\n notFoundContent = _getOptionProps.notFoundContent,\n getPopupContainer = _getOptionProps.getPopupContainer,\n restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'placement', 'transitionName', 'autoFocus', 'notFoundContent', 'getPopupContainer']);\n\n var inputProps = omit(restProps, ['value', 'defaultValue', 'prefix', 'split', 'children', 'validateSearch', 'filterOption']);\n\n var options = measuring ? this.getOptions() : [];\n\n return h(\n 'div',\n { 'class': prefixCls },\n [h('textarea', _mergeJSXProps([{\n ref: 'textarea'\n }, {\n directives: [{ name: 'ant-input' }],\n attrs: _extends({}, inputProps, this.$attrs),\n domProps: {\n value: value\n },\n on: _extends({}, getListeners(this), {\n select: noop,\n change: noop,\n input: this.onChange,\n keydown: this.onKeyDown,\n keyup: this.onKeyUp,\n blur: this.onInputBlur\n })\n }])), measuring && h(\n 'div',\n { ref: 'measure', 'class': prefixCls + '-measure' },\n [value.slice(0, measureLocation), h(\n KeywordTrigger,\n {\n attrs: {\n prefixCls: prefixCls,\n transitionName: transitionName,\n placement: placement,\n options: options,\n visible: true,\n getPopupContainer: getPopupContainer\n }\n },\n [h('span', [measurePrefix])]\n ), value.slice(measureLocation + measurePrefix.length)]\n )]\n );\n }\n};\n\nexport default Mentions;","import Mentions from './src/Mentions';\nimport Option from './src/Option';\n\nMentions.Option = Option;\n\nexport default Mentions;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport omit from 'omit.js';\nimport PropTypes from '../_util/vue-types';\nimport VcMentions from '../vc-mentions';\nimport { mentionsProps } from '../vc-mentions/src/mentionsProps';\nimport Base from '../base';\nimport Spin from '../spin';\nimport BaseMixin from '../_util/BaseMixin';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { getOptionProps, getComponentFromProp, getListeners, filterEmpty } from '../_util/props-util';\n\nvar Option = VcMentions.Option;\n\n\nfunction loadingFilterOption() {\n return true;\n}\n\nfunction getMentions() {\n var value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var config = arguments[1];\n\n var _ref = config || {},\n _ref$prefix = _ref.prefix,\n prefix = _ref$prefix === undefined ? '@' : _ref$prefix,\n _ref$split = _ref.split,\n split = _ref$split === undefined ? ' ' : _ref$split;\n\n var prefixList = Array.isArray(prefix) ? prefix : [prefix];\n\n return value.split(split).map(function () {\n var str = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var hitPrefix = null;\n\n prefixList.some(function (prefixStr) {\n var startStr = str.slice(0, prefixStr.length);\n if (startStr === prefixStr) {\n hitPrefix = prefixStr;\n return true;\n }\n return false;\n });\n\n if (hitPrefix !== null) {\n return {\n prefix: hitPrefix,\n value: str.slice(hitPrefix.length)\n };\n }\n return null;\n }).filter(function (entity) {\n return !!entity && !!entity.value;\n });\n}\n\nvar Mentions = {\n name: 'AMentions',\n mixins: [BaseMixin],\n inheritAttrs: false,\n model: {\n prop: 'value',\n event: 'change'\n },\n Option: _extends({}, Option, { name: 'AMentionsOption' }),\n getMentions: getMentions,\n props: _extends({}, mentionsProps, {\n loading: PropTypes.bool\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n return {\n focused: false\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.autoFocus) {\n _this.focus();\n }\n });\n },\n\n methods: {\n onFocus: function onFocus() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this.$emit.apply(this, ['focus'].concat(_toConsumableArray(args)));\n this.setState({\n focused: true\n });\n },\n onBlur: function onBlur() {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n this.$emit.apply(this, ['blur'].concat(_toConsumableArray(args)));\n this.setState({\n focused: false\n });\n },\n onSelect: function onSelect() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n this.$emit.apply(this, ['select'].concat(_toConsumableArray(args)));\n this.setState({\n focused: true\n });\n },\n onChange: function onChange(val) {\n this.$emit('change', val);\n },\n getNotFoundContent: function getNotFoundContent(renderEmpty) {\n var h = this.$createElement;\n var notFoundContent = getComponentFromProp(this, 'notFoundContent');\n if (notFoundContent !== undefined) {\n return notFoundContent;\n }\n\n return renderEmpty(h, 'Select');\n },\n getOptions: function getOptions() {\n var h = this.$createElement;\n var loading = this.$props.loading;\n\n var children = filterEmpty(this.$slots['default'] || []);\n\n if (loading) {\n return h(\n Option,\n {\n attrs: { value: 'ANTD_SEARCHING', disabled: true }\n },\n [h(Spin, {\n attrs: { size: 'small' }\n })]\n );\n }\n return children;\n },\n getFilterOption: function getFilterOption() {\n var _$props = this.$props,\n filterOption = _$props.filterOption,\n loading = _$props.loading;\n\n if (loading) {\n return loadingFilterOption;\n }\n return filterOption;\n },\n focus: function focus() {\n this.$refs.vcMentions.focus();\n },\n blur: function blur() {\n this.$refs.vcMentions.blur();\n }\n },\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var focused = this.$data.focused;\n var _configProvider = this.configProvider,\n getPrefixCls = _configProvider.getPrefixCls,\n renderEmpty = _configProvider.renderEmpty;\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n disabled = _getOptionProps.disabled,\n getPopupContainer = _getOptionProps.getPopupContainer,\n restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'disabled', 'getPopupContainer']);\n\n var prefixCls = getPrefixCls('mentions', customizePrefixCls);\n var otherProps = omit(restProps, ['loading']);\n\n var mergedClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-disabled', disabled), _defineProperty(_classNames, prefixCls + '-focused', focused), _classNames));\n\n var mentionsProps = {\n props: _extends({\n prefixCls: prefixCls,\n notFoundContent: this.getNotFoundContent(renderEmpty)\n }, otherProps, {\n disabled: disabled,\n filterOption: this.getFilterOption(),\n getPopupContainer: getPopupContainer,\n children: this.getOptions()\n }),\n 'class': mergedClassName,\n attrs: _extends({ rows: 1 }, this.$attrs),\n on: _extends({}, getListeners(this), {\n change: this.onChange,\n select: this.onSelect,\n focus: this.onFocus,\n blur: this.onBlur\n }),\n ref: 'vcMentions'\n };\n\n return h(VcMentions, mentionsProps);\n }\n};\n\n/* istanbul ignore next */\nMentions.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Mentions.name, Mentions);\n Vue.component(Mentions.Option.name, Mentions.Option);\n};\n\nexport default Mentions;","import PropTypes from '../_util/vue-types';\nimport { getListeners } from '../_util/props-util';\n\nvar ILazyRenderBoxPropTypes = {\n visible: PropTypes.bool,\n hiddenClassName: PropTypes.string,\n forceRender: PropTypes.bool\n};\n\nexport default {\n props: ILazyRenderBoxPropTypes,\n render: function render() {\n var h = arguments[0];\n\n return h(\n 'div',\n { on: getListeners(this) },\n [this.$slots['default']]\n );\n }\n};","var cached = void 0;\n\nexport default function getScrollBarSize(fresh) {\n if (fresh || cached === undefined) {\n var inner = document.createElement('div');\n inner.style.width = '100%';\n inner.style.height = '200px';\n\n var outer = document.createElement('div');\n var outerStyle = outer.style;\n\n outerStyle.position = 'absolute';\n outerStyle.top = 0;\n outerStyle.left = 0;\n outerStyle.pointerEvents = 'none';\n outerStyle.visibility = 'hidden';\n outerStyle.width = '200px';\n outerStyle.height = '150px';\n outerStyle.overflow = 'hidden';\n\n outer.appendChild(inner);\n\n document.body.appendChild(outer);\n\n var widthContained = inner.offsetWidth;\n outer.style.overflow = 'scroll';\n var widthScroll = inner.offsetWidth;\n\n if (widthContained === widthScroll) {\n widthScroll = outer.clientWidth;\n }\n\n document.body.removeChild(outer);\n\n cached = widthContained - widthScroll;\n }\n return cached;\n}","import getScrollBarSize from './getScrollBarSize';\n\nexport default (function (close) {\n var bodyIsOverflowing = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth;\n if (!bodyIsOverflowing) {\n return;\n }\n if (close) {\n document.body.style.position = '';\n document.body.style.width = '';\n return;\n }\n var scrollBarSize = getScrollBarSize();\n if (scrollBarSize) {\n document.body.style.position = 'relative';\n document.body.style.width = 'calc(100% - ' + scrollBarSize + 'px)';\n }\n});","import PropTypes from '../_util/vue-types';\n\nfunction IDialogPropTypes() {\n return {\n keyboard: PropTypes.bool,\n mask: PropTypes.bool,\n afterClose: PropTypes.func,\n // onClose: PropTypes. (e: SyntheticEvent) =>any,\n closable: PropTypes.bool,\n maskClosable: PropTypes.bool,\n visible: PropTypes.bool,\n destroyOnClose: PropTypes.bool,\n mousePosition: PropTypes.shape({\n x: PropTypes.number,\n y: PropTypes.number\n }).loose,\n title: PropTypes.any,\n footer: PropTypes.any,\n transitionName: PropTypes.string,\n maskTransitionName: PropTypes.string,\n animation: PropTypes.any,\n maskAnimation: PropTypes.any,\n wrapStyle: PropTypes.object,\n bodyStyle: PropTypes.object,\n maskStyle: PropTypes.object,\n prefixCls: PropTypes.string,\n wrapClassName: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n zIndex: PropTypes.number,\n bodyProps: PropTypes.any,\n maskProps: PropTypes.any,\n wrapProps: PropTypes.any,\n getContainer: PropTypes.any,\n dialogStyle: PropTypes.object.def(function () {\n return {};\n }),\n dialogClass: PropTypes.string.def(''),\n closeIcon: PropTypes.any,\n forceRender: PropTypes.bool,\n getOpenCount: PropTypes.func,\n // https://github.com/ant-design/ant-design/issues/19771\n // https://github.com/react-component/dialog/issues/95\n focusTriggerAfterClose: PropTypes.bool\n };\n}\n\nexport default IDialogPropTypes;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport { getComponentFromProp, initDefaultProps } from '../_util/props-util';\nimport KeyCode from '../_util/KeyCode';\nimport contains from '../vc-util/Dom/contains';\nimport LazyRenderBox from './LazyRenderBox';\nimport BaseMixin from '../_util/BaseMixin';\nimport getTransitionProps from '../_util/getTransitionProps';\nimport _switchScrollingEffect from '../_util/switchScrollingEffect';\nimport getDialogPropTypes from './IDialogPropTypes';\nvar IDialogPropTypes = getDialogPropTypes();\n\nvar uuid = 0;\n\nfunction noop() {}\nfunction getScroll(w, top) {\n var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];\n var method = 'scroll' + (top ? 'Top' : 'Left');\n if (typeof ret !== 'number') {\n var d = w.document;\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction setTransformOrigin(node, value) {\n var style = node.style;\n ['Webkit', 'Moz', 'Ms', 'ms'].forEach(function (prefix) {\n style[prefix + 'TransformOrigin'] = value;\n });\n style['transformOrigin'] = value;\n}\n\nfunction offset(el) {\n var rect = el.getBoundingClientRect();\n var pos = {\n left: rect.left,\n top: rect.top\n };\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScroll(w);\n pos.top += getScroll(w, true);\n return pos;\n}\n\nvar cacheOverflow = {};\n\nexport default {\n mixins: [BaseMixin],\n props: initDefaultProps(IDialogPropTypes, {\n mask: true,\n visible: false,\n keyboard: true,\n closable: true,\n maskClosable: true,\n destroyOnClose: false,\n prefixCls: 'rc-dialog',\n getOpenCount: function getOpenCount() {\n return null;\n },\n focusTriggerAfterClose: true\n }),\n data: function data() {\n return {\n destroyPopup: false\n };\n },\n provide: function provide() {\n return {\n dialogContext: this\n };\n },\n\n\n watch: {\n visible: function visible(val) {\n var _this = this;\n\n if (val) {\n this.destroyPopup = false;\n }\n this.$nextTick(function () {\n _this.updatedCallback(!val);\n });\n }\n },\n\n beforeMount: function beforeMount() {\n this.inTransition = false;\n this.titleId = 'rcDialogTitle' + uuid++;\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.updatedCallback(false);\n // if forceRender is true, set element style display to be none;\n if ((_this2.forceRender || _this2.getContainer === false && !_this2.visible) && _this2.$refs.wrap) {\n _this2.$refs.wrap.style.display = 'none';\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n var visible = this.visible,\n getOpenCount = this.getOpenCount;\n\n if ((visible || this.inTransition) && !getOpenCount()) {\n this.switchScrollingEffect();\n }\n clearTimeout(this.timeoutId);\n },\n\n methods: {\n // 对外暴露的 api 不要更改名称或删除\n getDialogWrap: function getDialogWrap() {\n return this.$refs.wrap;\n },\n updatedCallback: function updatedCallback(visible) {\n var mousePosition = this.mousePosition;\n var mask = this.mask,\n focusTriggerAfterClose = this.focusTriggerAfterClose;\n\n if (this.visible) {\n // first show\n if (!visible) {\n this.openTime = Date.now();\n // this.lastOutSideFocusNode = document.activeElement\n this.switchScrollingEffect();\n // this.$refs.wrap.focus()\n this.tryFocus();\n var dialogNode = this.$refs.dialog.$el;\n if (mousePosition) {\n var elOffset = offset(dialogNode);\n setTransformOrigin(dialogNode, mousePosition.x - elOffset.left + 'px ' + (mousePosition.y - elOffset.top) + 'px');\n } else {\n setTransformOrigin(dialogNode, '');\n }\n }\n } else if (visible) {\n this.inTransition = true;\n if (mask && this.lastOutSideFocusNode && focusTriggerAfterClose) {\n try {\n this.lastOutSideFocusNode.focus();\n } catch (e) {\n this.lastOutSideFocusNode = null;\n }\n this.lastOutSideFocusNode = null;\n }\n }\n },\n tryFocus: function tryFocus() {\n if (!contains(this.$refs.wrap, document.activeElement)) {\n this.lastOutSideFocusNode = document.activeElement;\n this.$refs.sentinelStart.focus();\n }\n },\n onAnimateLeave: function onAnimateLeave() {\n var afterClose = this.afterClose,\n destroyOnClose = this.destroyOnClose;\n // need demo?\n // https://github.com/react-component/dialog/pull/28\n\n if (this.$refs.wrap) {\n this.$refs.wrap.style.display = 'none';\n }\n if (destroyOnClose) {\n this.destroyPopup = true;\n }\n this.inTransition = false;\n this.switchScrollingEffect();\n if (afterClose) {\n afterClose();\n }\n },\n onDialogMouseDown: function onDialogMouseDown() {\n this.dialogMouseDown = true;\n },\n onMaskMouseUp: function onMaskMouseUp() {\n var _this3 = this;\n\n if (this.dialogMouseDown) {\n this.timeoutId = setTimeout(function () {\n _this3.dialogMouseDown = false;\n }, 0);\n }\n },\n onMaskClick: function onMaskClick(e) {\n // android trigger click on open (fastclick??)\n if (Date.now() - this.openTime < 300) {\n return;\n }\n if (e.target === e.currentTarget && !this.dialogMouseDown) {\n this.close(e);\n }\n },\n onKeydown: function onKeydown(e) {\n var props = this.$props;\n if (props.keyboard && e.keyCode === KeyCode.ESC) {\n e.stopPropagation();\n this.close(e);\n return;\n }\n // keep focus inside dialog\n if (props.visible) {\n if (e.keyCode === KeyCode.TAB) {\n var activeElement = document.activeElement;\n var sentinelStart = this.$refs.sentinelStart;\n if (e.shiftKey) {\n if (activeElement === sentinelStart) {\n this.$refs.sentinelEnd.focus();\n }\n } else if (activeElement === this.$refs.sentinelEnd) {\n sentinelStart.focus();\n }\n }\n }\n },\n getDialogElement: function getDialogElement() {\n var h = this.$createElement;\n var closable = this.closable,\n prefixCls = this.prefixCls,\n width = this.width,\n height = this.height,\n title = this.title,\n tempFooter = this.footer,\n bodyStyle = this.bodyStyle,\n visible = this.visible,\n bodyProps = this.bodyProps,\n forceRender = this.forceRender,\n dialogStyle = this.dialogStyle,\n dialogClass = this.dialogClass;\n\n var dest = _extends({}, dialogStyle);\n if (width !== undefined) {\n dest.width = typeof width === 'number' ? width + 'px' : width;\n }\n if (height !== undefined) {\n dest.height = typeof height === 'number' ? height + 'px' : height;\n }\n\n var footer = void 0;\n if (tempFooter) {\n footer = h(\n 'div',\n { key: 'footer', 'class': prefixCls + '-footer', ref: 'footer' },\n [tempFooter]\n );\n }\n\n var header = void 0;\n if (title) {\n header = h(\n 'div',\n { key: 'header', 'class': prefixCls + '-header', ref: 'header' },\n [h(\n 'div',\n { 'class': prefixCls + '-title', attrs: { id: this.titleId }\n },\n [title]\n )]\n );\n }\n\n var closer = void 0;\n if (closable) {\n var closeIcon = getComponentFromProp(this, 'closeIcon');\n closer = h(\n 'button',\n {\n attrs: {\n type: 'button',\n\n 'aria-label': 'Close'\n },\n key: 'close',\n on: {\n 'click': this.close || noop\n },\n 'class': prefixCls + '-close'\n },\n [closeIcon || h('span', { 'class': prefixCls + '-close-x' })]\n );\n }\n\n var style = dest;\n var sentinelStyle = { width: 0, height: 0, overflow: 'hidden' };\n var cls = _defineProperty({}, prefixCls, true);\n var transitionName = this.getTransitionName();\n var dialogElement = h(\n LazyRenderBox,\n {\n directives: [{\n name: 'show',\n value: visible\n }],\n\n key: 'dialog-element',\n attrs: { role: 'document',\n\n forceRender: forceRender\n },\n ref: 'dialog',\n style: style,\n 'class': [cls, dialogClass], on: {\n 'mousedown': this.onDialogMouseDown\n }\n },\n [h('div', {\n attrs: { tabIndex: 0, 'aria-hidden': 'true' },\n ref: 'sentinelStart', style: sentinelStyle }), h(\n 'div',\n { 'class': prefixCls + '-content' },\n [closer, header, h(\n 'div',\n _mergeJSXProps([{ key: 'body', 'class': prefixCls + '-body', style: bodyStyle, ref: 'body' }, bodyProps]),\n [this.$slots['default']]\n ), footer]\n ), h('div', {\n attrs: { tabIndex: 0, 'aria-hidden': 'true' },\n ref: 'sentinelEnd', style: sentinelStyle })]\n );\n var dialogTransitionProps = getTransitionProps(transitionName, {\n afterLeave: this.onAnimateLeave\n });\n return h(\n 'transition',\n _mergeJSXProps([{ key: 'dialog' }, dialogTransitionProps]),\n [visible || !this.destroyPopup ? dialogElement : null]\n );\n },\n getZIndexStyle: function getZIndexStyle() {\n var style = {};\n var props = this.$props;\n if (props.zIndex !== undefined) {\n style.zIndex = props.zIndex;\n }\n return style;\n },\n getWrapStyle: function getWrapStyle() {\n return _extends({}, this.getZIndexStyle(), this.wrapStyle);\n },\n getMaskStyle: function getMaskStyle() {\n return _extends({}, this.getZIndexStyle(), this.maskStyle);\n },\n getMaskElement: function getMaskElement() {\n var h = this.$createElement;\n\n var props = this.$props;\n var maskElement = void 0;\n if (props.mask) {\n var maskTransition = this.getMaskTransitionName();\n maskElement = h(LazyRenderBox, _mergeJSXProps([{\n directives: [{\n name: 'show',\n value: props.visible\n }],\n\n style: this.getMaskStyle(),\n key: 'mask',\n 'class': props.prefixCls + '-mask'\n }, props.maskProps]));\n if (maskTransition) {\n var maskTransitionProps = getTransitionProps(maskTransition);\n maskElement = h(\n 'transition',\n _mergeJSXProps([{ key: 'mask' }, maskTransitionProps]),\n [maskElement]\n );\n }\n }\n return maskElement;\n },\n getMaskTransitionName: function getMaskTransitionName() {\n var props = this.$props;\n var transitionName = props.maskTransitionName;\n var animation = props.maskAnimation;\n if (!transitionName && animation) {\n transitionName = props.prefixCls + '-' + animation;\n }\n return transitionName;\n },\n getTransitionName: function getTransitionName() {\n var props = this.$props;\n var transitionName = props.transitionName;\n var animation = props.animation;\n if (!transitionName && animation) {\n transitionName = props.prefixCls + '-' + animation;\n }\n return transitionName;\n },\n\n // setScrollbar() {\n // if (this.bodyIsOverflowing && this.scrollbarWidth !== undefined) {\n // document.body.style.paddingRight = `${this.scrollbarWidth}px`;\n // }\n // },\n switchScrollingEffect: function switchScrollingEffect() {\n var getOpenCount = this.getOpenCount;\n\n var openCount = getOpenCount();\n if (openCount === 1) {\n if (cacheOverflow.hasOwnProperty('overflowX')) {\n return;\n }\n cacheOverflow = {\n overflowX: document.body.style.overflowX,\n overflowY: document.body.style.overflowY,\n overflow: document.body.style.overflow\n };\n _switchScrollingEffect();\n // Must be set after switchScrollingEffect\n document.body.style.overflow = 'hidden';\n } else if (!openCount) {\n // IE browser doesn't merge overflow style, need to set it separately\n // https://github.com/ant-design/ant-design/issues/19393\n if (cacheOverflow.overflow !== undefined) {\n document.body.style.overflow = cacheOverflow.overflow;\n }\n if (cacheOverflow.overflowX !== undefined) {\n document.body.style.overflowX = cacheOverflow.overflowX;\n }\n if (cacheOverflow.overflowY !== undefined) {\n document.body.style.overflowY = cacheOverflow.overflowY;\n }\n cacheOverflow = {};\n _switchScrollingEffect(true);\n }\n },\n\n // removeScrollingEffect() {\n // const { getOpenCount } = this;\n // const openCount = getOpenCount();\n // if (openCount !== 0) {\n // return;\n // }\n // document.body.style.overflow = '';\n // switchScrollingEffect(true);\n // // this.resetAdjustments();\n // },\n close: function close(e) {\n this.__emit('close', e);\n }\n },\n render: function render() {\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n maskClosable = this.maskClosable,\n visible = this.visible,\n wrapClassName = this.wrapClassName,\n title = this.title,\n wrapProps = this.wrapProps;\n\n var style = this.getWrapStyle();\n // clear hide display\n // and only set display after async anim, not here for hide\n if (visible) {\n style.display = null;\n }\n return h(\n 'div',\n { 'class': prefixCls + '-root' },\n [this.getMaskElement(), h(\n 'div',\n _mergeJSXProps([{\n attrs: {\n tabIndex: -1,\n\n role: 'dialog',\n 'aria-labelledby': title ? this.titleId : null\n },\n on: {\n 'keydown': this.onKeydown,\n 'click': maskClosable ? this.onMaskClick : noop,\n 'mouseup': maskClosable ? this.onMaskMouseUp : noop\n },\n\n 'class': prefixCls + '-wrap ' + (wrapClassName || ''),\n ref: 'wrap',\n style: style\n }, wrapProps]),\n [this.getDialogElement()]\n )]\n );\n }\n};","/**\n * Easy to set element style, return previous style\n * IE browser compatible(IE browser doesn't merge overflow style, need to set it separately)\n * https://github.com/ant-design/ant-design/issues/19393\n *\n */\nfunction setStyle(style) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$element = options.element,\n element = _options$element === undefined ? document.body : _options$element;\n\n var oldStyle = {};\n\n var styleKeys = Object.keys(style);\n\n // IE browser compatible\n styleKeys.forEach(function (key) {\n oldStyle[key] = element.style[key];\n });\n\n styleKeys.forEach(function (key) {\n element.style[key] = style[key];\n });\n\n return oldStyle;\n}\n\nexport default setStyle;","import PropTypes from './vue-types';\nimport { cloneElement } from './vnode';\n\nexport default {\n name: 'Portal',\n props: {\n getContainer: PropTypes.func.isRequired,\n children: PropTypes.any.isRequired,\n didUpdate: PropTypes.func\n },\n mounted: function mounted() {\n this.createContainer();\n },\n updated: function updated() {\n var _this = this;\n\n var didUpdate = this.$props.didUpdate;\n\n if (didUpdate) {\n this.$nextTick(function () {\n didUpdate(_this.$props);\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.removeContainer();\n },\n\n methods: {\n createContainer: function createContainer() {\n this._container = this.$props.getContainer();\n this.$forceUpdate();\n },\n removeContainer: function removeContainer() {\n if (this._container && this._container.parentNode) {\n this._container.parentNode.removeChild(this._container);\n }\n }\n },\n\n render: function render() {\n if (this._container) {\n return cloneElement(this.$props.children, {\n directives: [{\n name: 'ant-portal',\n value: this._container\n }]\n });\n }\n return null;\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport PropTypes from './vue-types';\nimport _switchScrollingEffect from './switchScrollingEffect';\nimport setStyle from './setStyle';\nimport Portal from './Portal';\n\nvar openCount = 0;\nvar windowIsUndefined = !(typeof window !== 'undefined' && window.document && window.document.createElement);\n// https://github.com/ant-design/ant-design/issues/19340\n// https://github.com/ant-design/ant-design/issues/19332\nvar cacheOverflow = {};\n\nexport default {\n name: 'PortalWrapper',\n props: {\n wrapperClassName: PropTypes.string,\n forceRender: PropTypes.bool,\n getContainer: PropTypes.any,\n children: PropTypes.func,\n visible: PropTypes.bool\n },\n data: function data() {\n var visible = this.$props.visible;\n\n openCount = visible ? openCount + 1 : openCount;\n return {};\n },\n updated: function updated() {\n this.setWrapperClassName();\n },\n\n watch: {\n visible: function visible(val) {\n openCount = val ? openCount + 1 : openCount - 1;\n },\n getContainer: function getContainer(_getContainer, prevGetContainer) {\n var getContainerIsFunc = typeof _getContainer === 'function' && typeof prevGetContainer === 'function';\n if (getContainerIsFunc ? _getContainer.toString() !== prevGetContainer.toString() : _getContainer !== prevGetContainer) {\n this.removeCurrentContainer(false);\n }\n }\n },\n beforeDestroy: function beforeDestroy() {\n var visible = this.$props.visible;\n // 离开时不会 render, 导到离开时数值不变,改用 func 。。\n\n openCount = visible && openCount ? openCount - 1 : openCount;\n this.removeCurrentContainer(visible);\n },\n\n methods: {\n getParent: function getParent() {\n var getContainer = this.$props.getContainer;\n\n if (getContainer) {\n if (typeof getContainer === 'string') {\n return document.querySelectorAll(getContainer)[0];\n }\n if (typeof getContainer === 'function') {\n return getContainer();\n }\n if ((typeof getContainer === 'undefined' ? 'undefined' : _typeof(getContainer)) === 'object' && getContainer instanceof window.HTMLElement) {\n return getContainer;\n }\n }\n return document.body;\n },\n getDomContainer: function getDomContainer() {\n if (windowIsUndefined) {\n return null;\n }\n if (!this.container) {\n this.container = document.createElement('div');\n var parent = this.getParent();\n if (parent) {\n parent.appendChild(this.container);\n }\n }\n this.setWrapperClassName();\n return this.container;\n },\n setWrapperClassName: function setWrapperClassName() {\n var wrapperClassName = this.$props.wrapperClassName;\n\n if (this.container && wrapperClassName && wrapperClassName !== this.container.className) {\n this.container.className = wrapperClassName;\n }\n },\n savePortal: function savePortal(c) {\n // Warning: don't rename _component\n // https://github.com/react-component/util/pull/65#discussion_r352407916\n this._component = c;\n },\n removeCurrentContainer: function removeCurrentContainer() {\n this.container = null;\n this._component = null;\n },\n\n\n /**\n * Enhance ./switchScrollingEffect\n * 1. Simulate document body scroll bar with\n * 2. Record body has overflow style and recover when all of PortalWrapper invisible\n * 3. Disable body scroll when PortalWrapper has open\n *\n * @memberof PortalWrapper\n */\n switchScrollingEffect: function switchScrollingEffect() {\n if (openCount === 1 && !Object.keys(cacheOverflow).length) {\n _switchScrollingEffect();\n // Must be set after switchScrollingEffect\n cacheOverflow = setStyle({\n overflow: 'hidden',\n overflowX: 'hidden',\n overflowY: 'hidden'\n });\n } else if (!openCount) {\n setStyle(cacheOverflow);\n cacheOverflow = {};\n _switchScrollingEffect(true);\n }\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var _$props = this.$props,\n children = _$props.children,\n forceRender = _$props.forceRender,\n visible = _$props.visible;\n\n var portal = null;\n var childProps = {\n getOpenCount: function getOpenCount() {\n return openCount;\n },\n getContainer: this.getDomContainer,\n switchScrollingEffect: this.switchScrollingEffect\n };\n if (forceRender || visible || this._component) {\n portal = h(Portal, _mergeJSXProps([{\n attrs: {\n getContainer: this.getDomContainer,\n children: children(childProps)\n }\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.savePortal\n }]\n }]));\n }\n return portal;\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport Dialog from './Dialog';\nimport getDialogPropTypes from './IDialogPropTypes';\nimport { getListeners } from '../_util/props-util';\nimport Portal from '../_util/PortalWrapper';\nvar IDialogPropTypes = getDialogPropTypes();\nvar DialogWrap = {\n inheritAttrs: false,\n props: _extends({}, IDialogPropTypes, {\n visible: IDialogPropTypes.visible.def(false)\n }),\n\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n var _$props = this.$props,\n visible = _$props.visible,\n getContainer = _$props.getContainer,\n forceRender = _$props.forceRender;\n\n var dialogProps = {\n props: this.$props,\n attrs: this.$attrs,\n ref: '_component',\n key: 'dialog',\n on: getListeners(this)\n };\n // 渲染在当前 dom 里;\n if (getContainer === false) {\n return h(\n Dialog,\n _mergeJSXProps([dialogProps, {\n attrs: {\n getOpenCount: function getOpenCount() {\n return 2;\n } // 不对 body 做任何操作。。\n }\n }]),\n [this.$slots['default']]\n );\n }\n return h(Portal, {\n attrs: {\n visible: visible,\n forceRender: forceRender,\n getContainer: getContainer,\n children: function children(childProps) {\n dialogProps.props = _extends({}, dialogProps.props, childProps);\n return h(\n Dialog,\n dialogProps,\n [_this.$slots['default']]\n );\n }\n }\n });\n }\n};\n\nexport default DialogWrap;","// based on vc-dialog 7.5.14\nimport DialogWrap from './DialogWrap';\nexport default DialogWrap;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport Dialog from '../vc-dialog';\nimport PropTypes from '../_util/vue-types';\nimport addEventListener from '../vc-util/Dom/addEventListener';\nimport { getConfirmLocale } from './locale';\nimport Icon from '../icon';\nimport Button from '../button';\nimport buttonTypes from '../button/buttonTypes';\nvar ButtonType = buttonTypes().type;\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport { initDefaultProps, getComponentFromProp, getClass, getStyle, mergeProps, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nvar mousePosition = null;\n// ref: https://github.com/ant-design/ant-design/issues/15795\nvar getClickPosition = function getClickPosition(e) {\n mousePosition = {\n x: e.pageX,\n y: e.pageY\n };\n // 100ms 内发生过点击事件,则从点击位置动画展示\n // 否则直接 zoom 展示\n // 这样可以兼容非点击方式展开\n setTimeout(function () {\n return mousePosition = null;\n }, 100);\n};\n\n// 只有点击事件支持从鼠标位置动画展开\nif (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n addEventListener(document.documentElement, 'click', getClickPosition, true);\n}\n\nfunction noop() {}\nvar modalProps = function modalProps() {\n var defaultProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var props = {\n prefixCls: PropTypes.string,\n /** 对话框是否可见*/\n visible: PropTypes.bool,\n /** 确定按钮 loading*/\n confirmLoading: PropTypes.bool,\n /** 标题*/\n title: PropTypes.any,\n /** 是否显示右上角的关闭按钮*/\n closable: PropTypes.bool,\n closeIcon: PropTypes.any,\n /** 点击确定回调*/\n // onOk: (e: React.MouseEvent) => void,\n /** 点击模态框右上角叉、取消按钮、Props.maskClosable 值为 true 时的遮罩层或键盘按下 Esc 时的回调*/\n // onCancel: (e: React.MouseEvent) => void,\n afterClose: PropTypes.func.def(noop),\n /** 垂直居中 */\n centered: PropTypes.bool,\n /** 宽度*/\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n /** 底部内容*/\n footer: PropTypes.any,\n /** 确认按钮文字*/\n okText: PropTypes.any,\n /** 确认按钮类型*/\n okType: ButtonType,\n /** 取消按钮文字*/\n cancelText: PropTypes.any,\n icon: PropTypes.any,\n /** 点击蒙层是否允许关闭*/\n maskClosable: PropTypes.bool,\n /** 强制渲染 Modal*/\n forceRender: PropTypes.bool,\n okButtonProps: PropTypes.object,\n cancelButtonProps: PropTypes.object,\n destroyOnClose: PropTypes.bool,\n wrapClassName: PropTypes.string,\n maskTransitionName: PropTypes.string,\n transitionName: PropTypes.string,\n getContainer: PropTypes.func,\n zIndex: PropTypes.number,\n bodyStyle: PropTypes.object,\n maskStyle: PropTypes.object,\n mask: PropTypes.bool,\n keyboard: PropTypes.bool,\n wrapProps: PropTypes.object,\n focusTriggerAfterClose: PropTypes.bool,\n dialogStyle: PropTypes.object.def(function () {\n return {};\n })\n };\n return initDefaultProps(props, defaultProps);\n};\n\nexport var destroyFns = [];\n\nexport default {\n name: 'AModal',\n inheritAttrs: false,\n model: {\n prop: 'visible',\n event: 'change'\n },\n props: modalProps({\n width: 520,\n transitionName: 'zoom',\n maskTransitionName: 'fade',\n confirmLoading: false,\n visible: false,\n okType: 'primary'\n }),\n data: function data() {\n return {\n sVisible: !!this.visible\n };\n },\n\n watch: {\n visible: function visible(val) {\n this.sVisible = val;\n }\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n // static info: ModalFunc;\n // static success: ModalFunc;\n // static error: ModalFunc;\n // static warn: ModalFunc;\n // static warning: ModalFunc;\n // static confirm: ModalFunc;\n methods: {\n handleCancel: function handleCancel(e) {\n this.$emit('cancel', e);\n this.$emit('change', false);\n },\n handleOk: function handleOk(e) {\n this.$emit('ok', e);\n },\n renderFooter: function renderFooter(locale) {\n var h = this.$createElement;\n var okType = this.okType,\n confirmLoading = this.confirmLoading;\n\n var cancelBtnProps = mergeProps({ on: { click: this.handleCancel } }, this.cancelButtonProps || {});\n var okBtnProps = mergeProps({\n on: { click: this.handleOk },\n props: {\n type: okType,\n loading: confirmLoading\n }\n }, this.okButtonProps || {});\n return h('div', [h(\n Button,\n cancelBtnProps,\n [getComponentFromProp(this, 'cancelText') || locale.cancelText]\n ), h(\n Button,\n okBtnProps,\n [getComponentFromProp(this, 'okText') || locale.okText]\n )]);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n visible = this.sVisible,\n wrapClassName = this.wrapClassName,\n centered = this.centered,\n getContainer = this.getContainer,\n $slots = this.$slots,\n $scopedSlots = this.$scopedSlots,\n $attrs = this.$attrs;\n\n var children = $scopedSlots['default'] ? $scopedSlots['default']() : $slots['default'];\n var _configProvider = this.configProvider,\n getPrefixCls = _configProvider.getPrefixCls,\n getContextPopupContainer = _configProvider.getPopupContainer;\n\n var prefixCls = getPrefixCls('modal', customizePrefixCls);\n\n var defaultFooter = h(LocaleReceiver, {\n attrs: {\n componentName: 'Modal',\n defaultLocale: getConfirmLocale()\n },\n scopedSlots: { 'default': this.renderFooter }\n });\n var closeIcon = getComponentFromProp(this, 'closeIcon');\n var closeIconToRender = h(\n 'span',\n { 'class': prefixCls + '-close-x' },\n [closeIcon || h(Icon, { 'class': prefixCls + '-close-icon', attrs: { type: 'close' }\n })]\n );\n var footer = getComponentFromProp(this, 'footer');\n var title = getComponentFromProp(this, 'title');\n var dialogProps = {\n props: _extends({}, this.$props, {\n getContainer: getContainer === undefined ? getContextPopupContainer : getContainer,\n prefixCls: prefixCls,\n wrapClassName: classNames(_defineProperty({}, prefixCls + '-centered', !!centered), wrapClassName),\n title: title,\n footer: footer === undefined ? defaultFooter : footer,\n visible: visible,\n mousePosition: mousePosition,\n closeIcon: closeIconToRender\n }),\n on: _extends({}, getListeners(this), {\n close: this.handleCancel\n }),\n 'class': getClass(this),\n style: getStyle(this),\n attrs: $attrs\n };\n return h(\n Dialog,\n dialogProps,\n [children]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropTypes from '../_util/vue-types';\nimport Button from '../button';\nimport BaseMixin from '../_util/BaseMixin';\nimport buttonTypes from '../button/buttonTypes';\nvar ButtonType = buttonTypes().type;\nvar ActionButtonProps = {\n type: ButtonType,\n actionFn: PropTypes.func,\n closeModal: PropTypes.func,\n autoFocus: PropTypes.bool,\n buttonProps: PropTypes.object\n};\n\nexport default {\n mixins: [BaseMixin],\n props: ActionButtonProps,\n data: function data() {\n return {\n loading: false\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n if (this.autoFocus) {\n this.timeoutId = setTimeout(function () {\n return _this.$el.focus();\n });\n }\n },\n beforeDestroy: function beforeDestroy() {\n clearTimeout(this.timeoutId);\n },\n\n methods: {\n onClick: function onClick() {\n var _this2 = this;\n\n var actionFn = this.actionFn,\n closeModal = this.closeModal;\n\n if (actionFn) {\n var ret = void 0;\n if (actionFn.length) {\n ret = actionFn(closeModal);\n } else {\n ret = actionFn();\n if (!ret) {\n closeModal();\n }\n }\n if (ret && ret.then) {\n this.setState({ loading: true });\n ret.then(function () {\n // It's unnecessary to set loading=false, for the Modal will be unmounted after close.\n // this.setState({ loading: false });\n closeModal.apply(undefined, arguments);\n }, function (e) {\n // Emit error when catch promise reject\n // eslint-disable-next-line no-console\n console.error(e);\n // See: https://github.com/ant-design/ant-design/issues/6183\n _this2.setState({ loading: false });\n });\n }\n } else {\n closeModal();\n }\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var type = this.type,\n $slots = this.$slots,\n loading = this.loading,\n buttonProps = this.buttonProps;\n\n return h(\n Button,\n _mergeJSXProps([{\n attrs: { type: type, loading: loading },\n on: {\n 'click': this.onClick\n }\n }, buttonProps]),\n [$slots['default']]\n );\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport classNames from 'classnames';\nimport Icon from '../icon';\nimport Dialog from './Modal';\nimport ActionButton from './ActionButton';\nimport { getConfirmLocale } from './locale';\nimport warning from '../_util/warning';\n\nexport default {\n functional: true,\n render: function render(h, context) {\n var props = context.props;\n var onCancel = props.onCancel,\n onOk = props.onOk,\n close = props.close,\n zIndex = props.zIndex,\n afterClose = props.afterClose,\n visible = props.visible,\n keyboard = props.keyboard,\n centered = props.centered,\n getContainer = props.getContainer,\n maskStyle = props.maskStyle,\n okButtonProps = props.okButtonProps,\n cancelButtonProps = props.cancelButtonProps,\n _props$iconType = props.iconType,\n iconType = _props$iconType === undefined ? 'question-circle' : _props$iconType,\n _props$closable = props.closable,\n closable = _props$closable === undefined ? false : _props$closable;\n\n warning(!('iconType' in props), 'Modal', 'The property \\'iconType\\' is deprecated. Use the property \\'icon\\' instead.');\n var icon = props.icon ? props.icon : iconType;\n var okType = props.okType || 'primary';\n var prefixCls = props.prefixCls || 'ant-modal';\n var contentPrefixCls = prefixCls + '-confirm';\n // 默认为 true,保持向下兼容\n var okCancel = 'okCancel' in props ? props.okCancel : true;\n var width = props.width || 416;\n var style = props.style || {};\n var mask = props.mask === undefined ? true : props.mask;\n // 默认为 false,保持旧版默认行为\n var maskClosable = props.maskClosable === undefined ? false : props.maskClosable;\n var runtimeLocale = getConfirmLocale();\n var okText = props.okText || (okCancel ? runtimeLocale.okText : runtimeLocale.justOkText);\n var cancelText = props.cancelText || runtimeLocale.cancelText;\n var autoFocusButton = props.autoFocusButton === null ? false : props.autoFocusButton || 'ok';\n var transitionName = props.transitionName || 'zoom';\n var maskTransitionName = props.maskTransitionName || 'fade';\n\n var classString = classNames(contentPrefixCls, contentPrefixCls + '-' + props.type, prefixCls + '-' + props.type, props['class']);\n\n var cancelButton = okCancel && h(\n ActionButton,\n {\n attrs: {\n actionFn: onCancel,\n closeModal: close,\n autoFocus: autoFocusButton === 'cancel',\n buttonProps: cancelButtonProps\n }\n },\n [cancelText]\n );\n var iconNode = typeof icon === 'string' ? h(Icon, {\n attrs: { type: icon }\n }) : icon(h);\n\n return h(\n Dialog,\n {\n attrs: {\n prefixCls: prefixCls,\n\n wrapClassName: classNames(_defineProperty({}, contentPrefixCls + '-centered', !!centered)),\n\n visible: visible,\n closable: closable,\n title: '',\n transitionName: transitionName,\n footer: '',\n maskTransitionName: maskTransitionName,\n mask: mask,\n maskClosable: maskClosable,\n maskStyle: maskStyle,\n\n width: width,\n zIndex: zIndex,\n afterClose: afterClose,\n keyboard: keyboard,\n centered: centered,\n getContainer: getContainer\n },\n 'class': classString, on: {\n 'cancel': function cancel(e) {\n return close({ triggerCancel: true }, e);\n }\n },\n style: style },\n [h(\n 'div',\n { 'class': contentPrefixCls + '-body-wrapper' },\n [h(\n 'div',\n { 'class': contentPrefixCls + '-body' },\n [iconNode, props.title === undefined ? null : h(\n 'span',\n { 'class': contentPrefixCls + '-title' },\n [typeof props.title === 'function' ? props.title(h) : props.title]\n ), h(\n 'div',\n { 'class': contentPrefixCls + '-content' },\n [typeof props.content === 'function' ? props.content(h) : props.content]\n )]\n ), h(\n 'div',\n { 'class': contentPrefixCls + '-btns' },\n [cancelButton, h(\n ActionButton,\n {\n attrs: {\n type: okType,\n actionFn: onOk,\n closeModal: close,\n autoFocus: autoFocusButton === 'ok',\n buttonProps: okButtonProps\n }\n },\n [okText]\n )]\n )]\n )]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport Vue from 'vue';\nimport ConfirmDialog from './ConfirmDialog';\nimport { destroyFns } from './Modal';\nimport Base from '../base';\nimport Omit from 'omit.js';\n\nexport default function confirm(config) {\n var div = document.createElement('div');\n var el = document.createElement('div');\n div.appendChild(el);\n document.body.appendChild(div);\n var currentConfig = _extends({}, Omit(config, ['parentContext']), { close: close, visible: true });\n\n var confirmDialogInstance = null;\n var confirmDialogProps = { props: {} };\n function close() {\n destroy.apply(undefined, arguments);\n }\n function update(newConfig) {\n currentConfig = _extends({}, currentConfig, newConfig);\n confirmDialogProps.props = currentConfig;\n }\n function destroy() {\n if (confirmDialogInstance && div.parentNode) {\n confirmDialogInstance.$destroy();\n confirmDialogInstance = null;\n div.parentNode.removeChild(div);\n }\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var triggerCancel = args.some(function (param) {\n return param && param.triggerCancel;\n });\n if (config.onCancel && triggerCancel) {\n config.onCancel.apply(config, args);\n }\n for (var i = 0; i < destroyFns.length; i++) {\n var fn = destroyFns[i];\n if (fn === close) {\n destroyFns.splice(i, 1);\n break;\n }\n }\n }\n\n function render(props) {\n confirmDialogProps.props = props;\n var V = Base.Vue || Vue;\n return new V({\n el: el,\n parent: config.parentContext,\n data: function data() {\n return { confirmDialogProps: confirmDialogProps };\n },\n render: function render() {\n var h = arguments[0];\n\n // 先解构,避免报错,原因不详\n var cdProps = _extends({}, this.confirmDialogProps);\n return h(ConfirmDialog, cdProps);\n }\n });\n }\n\n confirmDialogInstance = render(currentConfig);\n destroyFns.push(close);\n return {\n destroy: close,\n update: update\n };\n}","import _extends from 'babel-runtime/helpers/extends';\nimport Modal, { destroyFns } from './Modal';\nimport modalConfirm from './confirm';\nimport Icon from '../icon';\nimport Base from '../base';\n\n// export { ActionButtonProps } from './ActionButton'\n// export { ModalProps, ModalFuncProps } from './Modal'\n\nvar info = function info(props) {\n var config = _extends({\n type: 'info',\n icon: function icon(h) {\n return h(Icon, {\n attrs: { type: 'info-circle' }\n });\n },\n okCancel: false\n }, props);\n return modalConfirm(config);\n};\n\nvar success = function success(props) {\n var config = _extends({\n type: 'success',\n icon: function icon(h) {\n return h(Icon, {\n attrs: { type: 'check-circle' }\n });\n },\n okCancel: false\n }, props);\n return modalConfirm(config);\n};\n\nvar error = function error(props) {\n var config = _extends({\n type: 'error',\n icon: function icon(h) {\n return h(Icon, {\n attrs: { type: 'close-circle' }\n });\n },\n okCancel: false\n }, props);\n return modalConfirm(config);\n};\n\nvar warning = function warning(props) {\n var config = _extends({\n type: 'warning',\n icon: function icon(h) {\n return h(Icon, {\n attrs: { type: 'exclamation-circle' }\n });\n },\n okCancel: false\n }, props);\n return modalConfirm(config);\n};\nvar warn = warning;\n\nvar confirm = function confirmFn(props) {\n var config = _extends({\n type: 'confirm',\n okCancel: true\n }, props);\n return modalConfirm(config);\n};\nModal.info = info;\nModal.success = success;\nModal.error = error;\nModal.warning = warning;\nModal.warn = warn;\nModal.confirm = confirm;\n\nModal.destroyAll = function destroyAllFn() {\n while (destroyFns.length) {\n var close = destroyFns.pop();\n if (close) {\n close();\n }\n }\n};\n\n/* istanbul ignore next */\nModal.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Modal.name, Modal);\n};\n\nexport default Modal;","import _extends from 'babel-runtime/helpers/extends';\nimport Notification from '../vc-notification';\nimport Icon from '../icon';\n\nvar notificationInstance = {};\nvar defaultDuration = 4.5;\nvar defaultTop = '24px';\nvar defaultBottom = '24px';\nvar defaultPlacement = 'topRight';\nvar defaultGetContainer = function defaultGetContainer() {\n return document.body;\n};\nvar defaultCloseIcon = null;\n\nfunction setNotificationConfig(options) {\n var duration = options.duration,\n placement = options.placement,\n bottom = options.bottom,\n top = options.top,\n getContainer = options.getContainer,\n closeIcon = options.closeIcon;\n\n if (duration !== undefined) {\n defaultDuration = duration;\n }\n if (placement !== undefined) {\n defaultPlacement = placement;\n }\n if (bottom !== undefined) {\n defaultBottom = typeof bottom === 'number' ? bottom + 'px' : bottom;\n }\n if (top !== undefined) {\n defaultTop = typeof top === 'number' ? top + 'px' : top;\n }\n if (getContainer !== undefined) {\n defaultGetContainer = getContainer;\n }\n if (closeIcon !== undefined) {\n defaultCloseIcon = closeIcon;\n }\n}\n\nfunction getPlacementStyle(placement) {\n var top = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultTop;\n var bottom = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : defaultBottom;\n\n var style = void 0;\n switch (placement) {\n case 'topLeft':\n style = {\n left: 0,\n top: top,\n bottom: 'auto'\n };\n break;\n case 'topRight':\n style = {\n right: 0,\n top: top,\n bottom: 'auto'\n };\n break;\n case 'bottomLeft':\n style = {\n left: 0,\n top: 'auto',\n bottom: bottom\n };\n break;\n default:\n style = {\n right: 0,\n top: 'auto',\n bottom: bottom\n };\n break;\n }\n return style;\n}\n\nfunction getNotificationInstance(_ref, callback) {\n var prefixCls = _ref.prefixCls,\n _ref$placement = _ref.placement,\n placement = _ref$placement === undefined ? defaultPlacement : _ref$placement,\n _ref$getContainer = _ref.getContainer,\n getContainer = _ref$getContainer === undefined ? defaultGetContainer : _ref$getContainer,\n top = _ref.top,\n bottom = _ref.bottom,\n _ref$closeIcon = _ref.closeIcon,\n _closeIcon = _ref$closeIcon === undefined ? defaultCloseIcon : _ref$closeIcon;\n\n var cacheKey = prefixCls + '-' + placement;\n if (notificationInstance[cacheKey]) {\n callback(notificationInstance[cacheKey]);\n return;\n }\n Notification.newInstance({\n prefixCls: prefixCls,\n 'class': prefixCls + '-' + placement,\n style: getPlacementStyle(placement, top, bottom),\n getContainer: getContainer,\n closeIcon: function closeIcon(h) {\n var icon = typeof _closeIcon === 'function' ? _closeIcon(h) : _closeIcon;\n var closeIconToRender = h(\n 'span',\n { 'class': prefixCls + '-close-x' },\n [icon || h(Icon, { 'class': prefixCls + '-close-icon', attrs: { type: 'close' }\n })]\n );\n return closeIconToRender;\n }\n }, function (notification) {\n notificationInstance[cacheKey] = notification;\n callback(notification);\n });\n}\n\nvar typeToIcon = {\n success: 'check-circle-o',\n info: 'info-circle-o',\n error: 'close-circle-o',\n warning: 'exclamation-circle-o'\n};\n\nfunction notice(args) {\n var icon = args.icon,\n type = args.type,\n description = args.description,\n message = args.message,\n btn = args.btn;\n\n var outerPrefixCls = args.prefixCls || 'ant-notification';\n var prefixCls = outerPrefixCls + '-notice';\n var duration = args.duration === undefined ? defaultDuration : args.duration;\n\n var iconNode = null;\n if (icon) {\n iconNode = function iconNode(h) {\n return h(\n 'span',\n { 'class': prefixCls + '-icon' },\n [typeof icon === 'function' ? icon(h) : icon]\n );\n };\n } else if (type) {\n var iconType = typeToIcon[type];\n iconNode = function iconNode(h) {\n return h(Icon, { 'class': prefixCls + '-icon ' + prefixCls + '-icon-' + type, attrs: { type: iconType }\n });\n }; // eslint-disable-line\n }\n var placement = args.placement,\n top = args.top,\n bottom = args.bottom,\n getContainer = args.getContainer,\n closeIcon = args.closeIcon;\n\n getNotificationInstance({\n prefixCls: outerPrefixCls,\n placement: placement,\n top: top,\n bottom: bottom,\n getContainer: getContainer,\n closeIcon: closeIcon\n }, function (notification) {\n notification.notice({\n content: function content(h) {\n return h(\n 'div',\n { 'class': iconNode ? prefixCls + '-with-icon' : '' },\n [iconNode && iconNode(h), h(\n 'div',\n { 'class': prefixCls + '-message' },\n [!description && iconNode ? h('span', { 'class': prefixCls + '-message-single-line-auto-margin' }) : null, typeof message === 'function' ? message(h) : message]\n ), h(\n 'div',\n { 'class': prefixCls + '-description' },\n [typeof description === 'function' ? description(h) : description]\n ), btn ? h(\n 'span',\n { 'class': prefixCls + '-btn' },\n [typeof btn === 'function' ? btn(h) : btn]\n ) : null]\n );\n },\n duration: duration,\n closable: true,\n onClose: args.onClose,\n onClick: args.onClick,\n key: args.key,\n style: args.style || {},\n 'class': args['class']\n });\n });\n}\n\nvar api = {\n open: notice,\n close: function close(key) {\n Object.keys(notificationInstance).forEach(function (cacheKey) {\n return notificationInstance[cacheKey].removeNotice(key);\n });\n },\n\n config: setNotificationConfig,\n destroy: function destroy() {\n Object.keys(notificationInstance).forEach(function (cacheKey) {\n notificationInstance[cacheKey].destroy();\n delete notificationInstance[cacheKey];\n });\n }\n};\n\n['success', 'info', 'warning', 'error'].forEach(function (type) {\n api[type] = function (args) {\n return api.open(_extends({}, args, {\n type: type\n }));\n };\n});\n\napi.warn = api.warning;\nexport default api;","import _extends from 'babel-runtime/helpers/extends';\nimport omit from 'omit.js';\nimport Tooltip from '../tooltip';\nimport abstractTooltipProps from '../tooltip/abstractTooltipProps';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, hasProp, getComponentFromProp, mergeProps } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport buttonTypes from '../button/buttonTypes';\nimport Icon from '../icon';\nimport Button from '../button';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport defaultLocale from '../locale-provider/default';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nvar tooltipProps = abstractTooltipProps();\nvar btnProps = buttonTypes();\nvar Popconfirm = {\n name: 'APopconfirm',\n props: _extends({}, tooltipProps, {\n prefixCls: PropTypes.string,\n transitionName: PropTypes.string.def('zoom-big'),\n content: PropTypes.any,\n title: PropTypes.any,\n trigger: tooltipProps.trigger.def('click'),\n okType: btnProps.type.def('primary'),\n disabled: PropTypes.bool.def(false),\n okText: PropTypes.any,\n cancelText: PropTypes.any,\n icon: PropTypes.any,\n okButtonProps: PropTypes.object,\n cancelButtonProps: PropTypes.object\n }),\n mixins: [BaseMixin],\n model: {\n prop: 'visible',\n event: 'visibleChange'\n },\n watch: {\n visible: function visible(val) {\n this.sVisible = val;\n }\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n var props = getOptionProps(this);\n var state = { sVisible: false };\n if ('visible' in props) {\n state.sVisible = props.visible;\n }\n if ('defaultVisible' in props) {\n state.sVisible = props.defaultVisible;\n }\n return state;\n },\n\n methods: {\n onConfirm: function onConfirm(e) {\n this.setVisible(false, e);\n this.$emit('confirm', e);\n },\n onCancel: function onCancel(e) {\n this.setVisible(false, e);\n this.$emit('cancel', e);\n },\n onVisibleChange: function onVisibleChange(sVisible) {\n var disabled = this.$props.disabled;\n\n if (disabled) {\n return;\n }\n this.setVisible(sVisible);\n },\n setVisible: function setVisible(sVisible, e) {\n if (!hasProp(this, 'visible')) {\n this.setState({ sVisible: sVisible });\n }\n this.$emit('visibleChange', sVisible, e);\n },\n getPopupDomNode: function getPopupDomNode() {\n return this.$refs.tooltip.getPopupDomNode();\n },\n renderOverlay: function renderOverlay(prefixCls, popconfirmLocale) {\n var h = this.$createElement;\n var okType = this.okType,\n okButtonProps = this.okButtonProps,\n cancelButtonProps = this.cancelButtonProps;\n\n var icon = getComponentFromProp(this, 'icon') || h(Icon, {\n attrs: { type: 'exclamation-circle', theme: 'filled' }\n });\n var cancelBtnProps = mergeProps({\n props: {\n size: 'small'\n },\n on: {\n click: this.onCancel\n }\n }, cancelButtonProps);\n var okBtnProps = mergeProps({\n props: {\n type: okType,\n size: 'small'\n },\n on: {\n click: this.onConfirm\n }\n }, okButtonProps);\n return h(\n 'div',\n { 'class': prefixCls + '-inner-content' },\n [h(\n 'div',\n { 'class': prefixCls + '-message' },\n [icon, h(\n 'div',\n { 'class': prefixCls + '-message-title' },\n [getComponentFromProp(this, 'title')]\n )]\n ), h(\n 'div',\n { 'class': prefixCls + '-buttons' },\n [h(\n Button,\n cancelBtnProps,\n [getComponentFromProp(this, 'cancelText') || popconfirmLocale.cancelText]\n ), h(\n Button,\n okBtnProps,\n [getComponentFromProp(this, 'okText') || popconfirmLocale.okText]\n )]\n )]\n );\n }\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var customizePrefixCls = props.prefixCls;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('popover', customizePrefixCls);\n\n var otherProps = omit(props, ['title', 'content', 'cancelText', 'okText']);\n var tooltipProps = {\n props: _extends({}, otherProps, {\n prefixCls: prefixCls,\n visible: this.sVisible\n }),\n ref: 'tooltip',\n on: {\n visibleChange: this.onVisibleChange\n }\n };\n var overlay = h(LocaleReceiver, {\n attrs: {\n componentName: 'Popconfirm',\n defaultLocale: defaultLocale.Popconfirm\n },\n scopedSlots: {\n 'default': function _default(popconfirmLocale) {\n return _this.renderOverlay(prefixCls, popconfirmLocale);\n }\n }\n });\n return h(\n Tooltip,\n tooltipProps,\n [h(\n 'template',\n { slot: 'title' },\n [overlay]\n ), this.$slots['default']]\n );\n }\n};\n\n/* istanbul ignore next */\nPopconfirm.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Popconfirm.name, Popconfirm);\n};\n\nexport default Popconfirm;","import _extends from 'babel-runtime/helpers/extends';\nimport Tooltip from '../tooltip';\nimport abstractTooltipProps from '../tooltip/abstractTooltipProps';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nvar props = abstractTooltipProps();\nvar Popover = {\n name: 'APopover',\n props: _extends({}, props, {\n prefixCls: PropTypes.string,\n transitionName: PropTypes.string.def('zoom-big'),\n content: PropTypes.any,\n title: PropTypes.any\n }),\n model: {\n prop: 'visible',\n event: 'visibleChange'\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n getPopupDomNode: function getPopupDomNode() {\n return this.$refs.tooltip.getPopupDomNode();\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var title = this.title,\n customizePrefixCls = this.prefixCls,\n $slots = this.$slots;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('popover', customizePrefixCls);\n\n var props = getOptionProps(this);\n delete props.title;\n delete props.content;\n var tooltipProps = {\n props: _extends({}, props, {\n prefixCls: prefixCls\n }),\n ref: 'tooltip',\n on: getListeners(this)\n };\n return h(\n Tooltip,\n tooltipProps,\n [h(\n 'template',\n { slot: 'title' },\n [h('div', [(title || $slots.title) && h(\n 'div',\n { 'class': prefixCls + '-title' },\n [getComponentFromProp(this, 'title')]\n ), h(\n 'div',\n { 'class': prefixCls + '-inner-content' },\n [getComponentFromProp(this, 'content')]\n )])]\n ), this.$slots['default']]\n );\n }\n};\n\n/* istanbul ignore next */\nPopover.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Popover.name, Popover);\n};\n\nexport default Popover;","export function validProgress(progress) {\n if (!progress || progress < 0) {\n return 0;\n }\n if (progress > 100) {\n return 100;\n }\n return progress;\n}","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport { validProgress } from './utils';\n\n/**\n * {\n * '0%': '#afc163',\n * '75%': '#009900',\n * '50%': 'green', ====> '#afc163 0%, #66FF00 25%, #00CC00 50%, #009900 75%, #ffffff 100%'\n * '25%': '#66FF00',\n * '100%': '#ffffff'\n * }\n */\nexport var sortGradient = function sortGradient(gradients) {\n var tempArr = [];\n // eslint-disable-next-line no-restricted-syntax\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Object.entries(gradients)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ref = _step.value;\n\n var _ref2 = _slicedToArray(_ref, 2);\n\n var key = _ref2[0];\n var value = _ref2[1];\n\n var formatKey = parseFloat(key.replace(/%/g, ''));\n if (isNaN(formatKey)) {\n return {};\n }\n tempArr.push({\n key: formatKey,\n value: value\n });\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n tempArr = tempArr.sort(function (a, b) {\n return a.key - b.key;\n });\n return tempArr.map(function (_ref3) {\n var key = _ref3.key,\n value = _ref3.value;\n return value + ' ' + key + '%';\n }).join(', ');\n};\n\n/**\n * {\n * '0%': '#afc163',\n * '25%': '#66FF00',\n * '50%': '#00CC00', ====> linear-gradient(to right, #afc163 0%, #66FF00 25%,\n * '75%': '#009900', #00CC00 50%, #009900 75%, #ffffff 100%)\n * '100%': '#ffffff'\n * }\n *\n * Then this man came to realize the truth:\n * Besides six pence, there is the moon.\n * Besides bread and butter, there is the bug.\n * And...\n * Besides women, there is the code.\n */\nvar handleGradient = function handleGradient(strokeColor) {\n var _strokeColor$from = strokeColor.from,\n from = _strokeColor$from === undefined ? '#1890ff' : _strokeColor$from,\n _strokeColor$to = strokeColor.to,\n to = _strokeColor$to === undefined ? '#1890ff' : _strokeColor$to,\n _strokeColor$directio = strokeColor.direction,\n direction = _strokeColor$directio === undefined ? 'to right' : _strokeColor$directio,\n rest = _objectWithoutProperties(strokeColor, ['from', 'to', 'direction']);\n\n if (Object.keys(rest).length !== 0) {\n var sortedGradients = sortGradient(rest);\n return { backgroundImage: 'linear-gradient(' + direction + ', ' + sortedGradients + ')' };\n }\n return { backgroundImage: 'linear-gradient(' + direction + ', ' + from + ', ' + to + ')' };\n};\n\nexport { handleGradient };\nvar Line = {\n functional: true,\n render: function render(h, context) {\n var props = context.props,\n children = context.children;\n var prefixCls = props.prefixCls,\n percent = props.percent,\n successPercent = props.successPercent,\n strokeWidth = props.strokeWidth,\n size = props.size,\n strokeColor = props.strokeColor,\n strokeLinecap = props.strokeLinecap;\n\n var backgroundProps = void 0;\n if (strokeColor && typeof strokeColor !== 'string') {\n backgroundProps = handleGradient(strokeColor);\n } else {\n backgroundProps = {\n background: strokeColor\n };\n }\n var percentStyle = _extends({\n width: validProgress(percent) + '%',\n height: (strokeWidth || (size === 'small' ? 6 : 8)) + 'px',\n background: strokeColor,\n borderRadius: strokeLinecap === 'square' ? 0 : '100px'\n }, backgroundProps);\n var successPercentStyle = {\n width: validProgress(successPercent) + '%',\n height: (strokeWidth || (size === 'small' ? 6 : 8)) + 'px',\n borderRadius: strokeLinecap === 'square' ? 0 : ''\n };\n var successSegment = successPercent !== undefined ? h('div', { 'class': prefixCls + '-success-bg', style: successPercentStyle }) : null;\n return h('div', [h(\n 'div',\n { 'class': prefixCls + '-outer' },\n [h(\n 'div',\n { 'class': prefixCls + '-inner' },\n [h('div', { 'class': prefixCls + '-bg', style: percentStyle }), successSegment]\n )]\n ), children]);\n }\n};\n\nexport default Line;","function enhancer(Component) {\n return {\n mixins: [Component],\n updated: function updated() {\n var _this = this;\n\n var now = Date.now();\n var updated = false;\n\n Object.keys(this.paths).forEach(function (key) {\n var path = _this.paths[key];\n\n if (!path) {\n return;\n }\n\n updated = true;\n var pathStyle = path.style;\n pathStyle.transitionDuration = '.3s, .3s, .3s, .06s';\n\n if (_this.prevTimeStamp && now - _this.prevTimeStamp < 100) {\n pathStyle.transitionDuration = '0s, 0s';\n }\n });\n if (updated) {\n this.prevTimeStamp = Date.now();\n }\n }\n };\n}\n\nexport default enhancer;","import PropTypes from '../../_util/vue-types';\n\nexport var defaultProps = {\n // className: '',\n percent: 0,\n prefixCls: 'rc-progress',\n strokeColor: '#2db7f5',\n strokeLinecap: 'round',\n strokeWidth: 1,\n // style: {},\n trailColor: '#D9D9D9',\n trailWidth: 1\n};\nvar mixedType = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\n\nexport var propTypes = {\n // className: PropTypes.string,\n percent: PropTypes.oneOfType([mixedType, PropTypes.arrayOf(mixedType)]),\n prefixCls: PropTypes.string,\n strokeColor: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])), PropTypes.object]),\n strokeLinecap: PropTypes.oneOf(['butt', 'round', 'square']),\n strokeWidth: mixedType,\n // style: PropTypes.object,\n trailColor: PropTypes.string,\n trailWidth: mixedType\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport Vue from 'vue';\nimport ref from 'vue-ref';\nimport PropTypes from '../../_util/vue-types';\nimport { initDefaultProps } from '../../_util/props-util';\nimport enhancer from './enhancer';\nimport { propTypes, defaultProps } from './types';\n\nvar circlePropTypes = _extends({}, propTypes, {\n gapPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n gapDegree: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.bool])\n});\n\nvar circleDefaultProps = _extends({}, defaultProps, {\n gapPosition: 'top'\n});\n\nVue.use(ref, { name: 'ant-ref' });\n\nvar gradientSeed = 0;\n\nfunction stripPercentToNumber(percent) {\n return +percent.replace('%', '');\n}\n\nfunction toArray(symArray) {\n return Array.isArray(symArray) ? symArray : [symArray];\n}\n\nfunction getPathStyles(offset, percent, strokeColor, strokeWidth) {\n var gapDegree = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var gapPosition = arguments[5];\n\n var radius = 50 - strokeWidth / 2;\n var beginPositionX = 0;\n var beginPositionY = -radius;\n var endPositionX = 0;\n var endPositionY = -2 * radius;\n switch (gapPosition) {\n case 'left':\n beginPositionX = -radius;\n beginPositionY = 0;\n endPositionX = 2 * radius;\n endPositionY = 0;\n break;\n case 'right':\n beginPositionX = radius;\n beginPositionY = 0;\n endPositionX = -2 * radius;\n endPositionY = 0;\n break;\n case 'bottom':\n beginPositionY = radius;\n endPositionY = 2 * radius;\n break;\n default:\n }\n var pathString = 'M 50,50 m ' + beginPositionX + ',' + beginPositionY + '\\n a ' + radius + ',' + radius + ' 0 1 1 ' + endPositionX + ',' + -endPositionY + '\\n a ' + radius + ',' + radius + ' 0 1 1 ' + -endPositionX + ',' + endPositionY;\n var len = Math.PI * 2 * radius;\n\n var pathStyle = {\n stroke: strokeColor,\n strokeDasharray: percent / 100 * (len - gapDegree) + 'px ' + len + 'px',\n strokeDashoffset: '-' + (gapDegree / 2 + offset / 100 * (len - gapDegree)) + 'px',\n transition: 'stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s, stroke-width .06s ease .3s, opacity .3s ease 0s' // eslint-disable-line\n };\n\n return {\n pathString: pathString,\n pathStyle: pathStyle\n };\n}\n\nvar Circle = {\n props: initDefaultProps(circlePropTypes, circleDefaultProps),\n created: function created() {\n this.paths = {};\n this.gradientId = gradientSeed;\n gradientSeed += 1;\n },\n\n methods: {\n getStokeList: function getStokeList() {\n var _this = this;\n\n var h = this.$createElement;\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n percent = _$props.percent,\n strokeColor = _$props.strokeColor,\n strokeWidth = _$props.strokeWidth,\n strokeLinecap = _$props.strokeLinecap,\n gapDegree = _$props.gapDegree,\n gapPosition = _$props.gapPosition;\n\n var percentList = toArray(percent);\n var strokeColorList = toArray(strokeColor);\n\n var stackPtg = 0;\n return percentList.map(function (ptg, index) {\n var color = strokeColorList[index] || strokeColorList[strokeColorList.length - 1];\n var stroke = Object.prototype.toString.call(color) === '[object Object]' ? 'url(#' + prefixCls + '-gradient-' + _this.gradientId + ')' : '';\n\n var _getPathStyles = getPathStyles(stackPtg, ptg, color, strokeWidth, gapDegree, gapPosition),\n pathString = _getPathStyles.pathString,\n pathStyle = _getPathStyles.pathStyle;\n\n stackPtg += ptg;\n\n var pathProps = {\n key: index,\n attrs: {\n d: pathString,\n stroke: stroke,\n 'stroke-linecap': strokeLinecap,\n 'stroke-width': strokeWidth,\n opacity: ptg === 0 ? 0 : 1,\n 'fill-opacity': '0'\n },\n 'class': prefixCls + '-circle-path',\n style: pathStyle,\n directives: [{\n name: 'ant-ref',\n value: function value(c) {\n _this.paths[index] = c;\n }\n }]\n };\n return h('path', pathProps);\n });\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var _$props2 = this.$props,\n prefixCls = _$props2.prefixCls,\n strokeWidth = _$props2.strokeWidth,\n trailWidth = _$props2.trailWidth,\n gapDegree = _$props2.gapDegree,\n gapPosition = _$props2.gapPosition,\n trailColor = _$props2.trailColor,\n strokeLinecap = _$props2.strokeLinecap,\n strokeColor = _$props2.strokeColor,\n restProps = _objectWithoutProperties(_$props2, ['prefixCls', 'strokeWidth', 'trailWidth', 'gapDegree', 'gapPosition', 'trailColor', 'strokeLinecap', 'strokeColor']);\n\n var _getPathStyles2 = getPathStyles(0, 100, trailColor, strokeWidth, gapDegree, gapPosition),\n pathString = _getPathStyles2.pathString,\n pathStyle = _getPathStyles2.pathStyle;\n\n delete restProps.percent;\n var strokeColorList = toArray(strokeColor);\n var gradient = strokeColorList.find(function (color) {\n return Object.prototype.toString.call(color) === '[object Object]';\n });\n var pathFirst = {\n attrs: {\n d: pathString,\n stroke: trailColor,\n 'stroke-linecap': strokeLinecap,\n 'stroke-width': trailWidth || strokeWidth,\n 'fill-opacity': '0'\n },\n 'class': prefixCls + '-circle-trail',\n style: pathStyle\n };\n\n return h(\n 'svg',\n _mergeJSXProps([{ 'class': prefixCls + '-circle', attrs: { viewBox: '0 0 100 100' }\n }, restProps]),\n [gradient && h('defs', [h(\n 'linearGradient',\n {\n attrs: {\n id: prefixCls + '-gradient-' + this.gradientId,\n x1: '100%',\n y1: '0%',\n x2: '0%',\n y2: '0%'\n }\n },\n [Object.keys(gradient).sort(function (a, b) {\n return stripPercentToNumber(a) - stripPercentToNumber(b);\n }).map(function (key, index) {\n return h('stop', { key: index, attrs: { offset: key, 'stop-color': gradient[key] }\n });\n })]\n )]), h('path', pathFirst), this.getStokeList().reverse()]\n );\n }\n};\n\nexport default enhancer(Circle);","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport { Circle as VCCircle } from '../vc-progress';\nimport { validProgress } from './utils';\n\nvar statusColorMap = {\n normal: '#108ee9',\n exception: '#ff5500',\n success: '#87d068'\n};\n\nfunction getPercentage(_ref) {\n var percent = _ref.percent,\n successPercent = _ref.successPercent;\n\n var ptg = validProgress(percent);\n if (!successPercent) return ptg;\n\n var successPtg = validProgress(successPercent);\n return [successPercent, validProgress(ptg - successPtg)];\n}\n\nfunction getStrokeColor(_ref2) {\n var progressStatus = _ref2.progressStatus,\n successPercent = _ref2.successPercent,\n strokeColor = _ref2.strokeColor;\n\n var color = strokeColor || statusColorMap[progressStatus];\n if (!successPercent) return color;\n return [statusColorMap.success, color];\n}\n\nvar Circle = {\n functional: true,\n render: function render(h, context) {\n var _wrapperClassName;\n\n var props = context.props,\n children = context.children;\n var prefixCls = props.prefixCls,\n width = props.width,\n strokeWidth = props.strokeWidth,\n trailColor = props.trailColor,\n strokeLinecap = props.strokeLinecap,\n gapPosition = props.gapPosition,\n gapDegree = props.gapDegree,\n type = props.type;\n\n var circleSize = width || 120;\n var circleStyle = {\n width: typeof circleSize === 'number' ? circleSize + 'px' : circleSize,\n height: typeof circleSize === 'number' ? circleSize + 'px' : circleSize,\n fontSize: circleSize * 0.15 + 6\n };\n var circleWidth = strokeWidth || 6;\n var gapPos = gapPosition || type === 'dashboard' && 'bottom' || 'top';\n var gapDeg = gapDegree || type === 'dashboard' && 75;\n var strokeColor = getStrokeColor(props);\n var isGradient = Object.prototype.toString.call(strokeColor) === '[object Object]';\n\n var wrapperClassName = (_wrapperClassName = {}, _defineProperty(_wrapperClassName, prefixCls + '-inner', true), _defineProperty(_wrapperClassName, prefixCls + '-circle-gradient', isGradient), _wrapperClassName);\n\n return h(\n 'div',\n { 'class': wrapperClassName, style: circleStyle },\n [h(VCCircle, {\n attrs: {\n percent: getPercentage(props),\n strokeWidth: circleWidth,\n trailWidth: circleWidth,\n strokeColor: strokeColor,\n strokeLinecap: strokeLinecap,\n trailColor: trailColor,\n prefixCls: prefixCls,\n gapDegree: gapDeg,\n gapPosition: gapPos\n }\n }), children]\n );\n }\n};\n\nexport default Circle;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, initDefaultProps, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Icon from '../icon';\nimport Line from './line';\nimport Circle from './circle';\nimport { validProgress } from './utils';\n\nvar ProgressStatuses = ['normal', 'exception', 'active', 'success'];\nexport var ProgressType = PropTypes.oneOf(['line', 'circle', 'dashboard']);\nexport var ProgressSize = PropTypes.oneOf(['default', 'small']);\n\nexport var ProgressProps = {\n prefixCls: PropTypes.string,\n type: ProgressType,\n percent: PropTypes.number,\n successPercent: PropTypes.number,\n format: PropTypes.func,\n status: PropTypes.oneOf(ProgressStatuses),\n showInfo: PropTypes.bool,\n strokeWidth: PropTypes.number,\n strokeLinecap: PropTypes.oneOf(['butt', 'round', 'square']),\n strokeColor: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n trailColor: PropTypes.string,\n width: PropTypes.number,\n gapDegree: PropTypes.number,\n gapPosition: PropTypes.oneOf(['top', 'bottom', 'left', 'right']),\n size: ProgressSize\n};\n\nexport default {\n name: 'AProgress',\n props: initDefaultProps(ProgressProps, {\n type: 'line',\n percent: 0,\n showInfo: true,\n trailColor: '#f3f3f3',\n size: 'default',\n gapDegree: 0,\n strokeLinecap: 'round'\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n getPercentNumber: function getPercentNumber() {\n var _$props = this.$props,\n successPercent = _$props.successPercent,\n _$props$percent = _$props.percent,\n percent = _$props$percent === undefined ? 0 : _$props$percent;\n\n return parseInt(successPercent !== undefined ? successPercent.toString() : percent.toString(), 10);\n },\n getProgressStatus: function getProgressStatus() {\n var status = this.$props.status;\n\n if (ProgressStatuses.indexOf(status) < 0 && this.getPercentNumber() >= 100) {\n return 'success';\n }\n return status || 'normal';\n },\n renderProcessInfo: function renderProcessInfo(prefixCls, progressStatus) {\n var h = this.$createElement;\n var _$props2 = this.$props,\n showInfo = _$props2.showInfo,\n format = _$props2.format,\n type = _$props2.type,\n percent = _$props2.percent,\n successPercent = _$props2.successPercent;\n\n if (!showInfo) return null;\n\n var text = void 0;\n var textFormatter = format || this.$scopedSlots.format || function (percentNumber) {\n return percentNumber + '%';\n };\n var iconType = type === 'circle' || type === 'dashboard' ? '' : '-circle';\n if (format || this.$scopedSlots.format || progressStatus !== 'exception' && progressStatus !== 'success') {\n text = textFormatter(validProgress(percent), validProgress(successPercent));\n } else if (progressStatus === 'exception') {\n text = h(Icon, {\n attrs: { type: 'close' + iconType, theme: type === 'line' ? 'filled' : 'outlined' }\n });\n } else if (progressStatus === 'success') {\n text = h(Icon, {\n attrs: { type: 'check' + iconType, theme: type === 'line' ? 'filled' : 'outlined' }\n });\n }\n return h(\n 'span',\n { 'class': prefixCls + '-text', attrs: { title: typeof text === 'string' ? text : undefined }\n },\n [text]\n );\n }\n },\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var customizePrefixCls = props.prefixCls,\n size = props.size,\n type = props.type,\n showInfo = props.showInfo;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('progress', customizePrefixCls);\n var progressStatus = this.getProgressStatus();\n var progressInfo = this.renderProcessInfo(prefixCls, progressStatus);\n\n var progress = void 0;\n\n // Render progress shape\n if (type === 'line') {\n var lineProps = {\n props: _extends({}, props, {\n prefixCls: prefixCls\n })\n };\n progress = h(\n Line,\n lineProps,\n [progressInfo]\n );\n } else if (type === 'circle' || type === 'dashboard') {\n var circleProps = {\n props: _extends({}, props, {\n prefixCls: prefixCls,\n progressStatus: progressStatus\n })\n };\n progress = h(\n Circle,\n circleProps,\n [progressInfo]\n );\n }\n\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-' + (type === 'dashboard' && 'circle' || type), true), _defineProperty(_classNames, prefixCls + '-status-' + progressStatus, true), _defineProperty(_classNames, prefixCls + '-show-info', showInfo), _defineProperty(_classNames, prefixCls + '-' + size, size), _classNames));\n\n var progressProps = {\n on: getListeners(this),\n 'class': classString\n };\n return h(\n 'div',\n progressProps,\n [progress]\n );\n }\n};","import Progress from './progress';\nimport Base from '../base';\n\nexport { ProgressProps } from './progress';\n\n/* istanbul ignore next */\nProgress.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Progress.name, Progress);\n};\n\nexport default Progress;","import Radio from './Radio';\nimport Group from './Group';\nimport Button from './RadioButton';\nimport Base from '../base';\n\nRadio.Group = Group;\nRadio.Button = Button;\n\n/* istanbul ignore next */\nRadio.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Radio.name, Radio);\n Vue.component(Radio.Group.name, Radio.Group);\n Vue.component(Radio.Button.name, Radio.Button);\n};\n\nexport { Button, Group };\nexport default Radio;","function getScroll(w, top) {\n var ret = top ? w.pageYOffset : w.pageXOffset;\n var method = top ? 'scrollTop' : 'scrollLeft';\n if (typeof ret !== 'number') {\n var d = w.document;\n // ie6,7,8 standard mode\n ret = d.documentElement[method];\n if (typeof ret !== 'number') {\n // quirks mode\n ret = d.body[method];\n }\n }\n return ret;\n}\n\nfunction getClientPosition(elem) {\n var x = void 0;\n var y = void 0;\n var doc = elem.ownerDocument;\n var body = doc.body;\n var docElem = doc && doc.documentElement;\n var box = elem.getBoundingClientRect();\n x = box.left;\n y = box.top;\n x -= docElem.clientLeft || body.clientLeft || 0;\n y -= docElem.clientTop || body.clientTop || 0;\n return {\n left: x,\n top: y\n };\n}\n\nexport function getOffsetLeft(el) {\n var pos = getClientPosition(el);\n var doc = el.ownerDocument;\n var w = doc.defaultView || doc.parentWindow;\n pos.left += getScroll(w);\n return pos.left;\n}","import PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getComponentFromProp } from '../../_util/props-util';\nfunction noop() {}\n\nexport default {\n name: 'Star',\n mixins: [BaseMixin],\n props: {\n value: PropTypes.number,\n index: PropTypes.number,\n prefixCls: PropTypes.string,\n allowHalf: PropTypes.bool,\n disabled: PropTypes.bool,\n character: PropTypes.any,\n characterRender: PropTypes.func,\n focused: PropTypes.bool,\n count: PropTypes.number\n },\n methods: {\n onHover: function onHover(e) {\n var index = this.index;\n\n this.$emit('hover', e, index);\n },\n onClick: function onClick(e) {\n var index = this.index;\n\n this.$emit('click', e, index);\n },\n onKeyDown: function onKeyDown(e) {\n var index = this.$props.index;\n\n if (e.keyCode === 13) {\n this.__emit('click', e, index);\n }\n },\n getClassName: function getClassName() {\n var prefixCls = this.prefixCls,\n index = this.index,\n value = this.value,\n allowHalf = this.allowHalf,\n focused = this.focused;\n\n var starValue = index + 1;\n var className = prefixCls;\n if (value === 0 && index === 0 && focused) {\n className += ' ' + prefixCls + '-focused';\n } else if (allowHalf && value + 0.5 === starValue) {\n className += ' ' + prefixCls + '-half ' + prefixCls + '-active';\n if (focused) {\n className += ' ' + prefixCls + '-focused';\n }\n } else {\n className += starValue <= value ? ' ' + prefixCls + '-full' : ' ' + prefixCls + '-zero';\n if (starValue === value && focused) {\n className += ' ' + prefixCls + '-focused';\n }\n }\n return className;\n }\n },\n render: function render() {\n var h = arguments[0];\n var onHover = this.onHover,\n onClick = this.onClick,\n onKeyDown = this.onKeyDown,\n disabled = this.disabled,\n prefixCls = this.prefixCls,\n characterRender = this.characterRender,\n index = this.index,\n count = this.count,\n value = this.value;\n\n\n var character = getComponentFromProp(this, 'character');\n var star = h(\n 'li',\n { 'class': this.getClassName() },\n [h(\n 'div',\n {\n on: {\n 'click': disabled ? noop : onClick,\n 'keydown': disabled ? noop : onKeyDown,\n 'mousemove': disabled ? noop : onHover\n },\n attrs: {\n role: 'radio',\n 'aria-checked': value > index ? 'true' : 'false',\n 'aria-posinset': index + 1,\n 'aria-setsize': count,\n tabIndex: 0\n }\n },\n [h(\n 'div',\n { 'class': prefixCls + '-first' },\n [character]\n ), h(\n 'div',\n { 'class': prefixCls + '-second' },\n [character]\n )]\n )]\n );\n if (characterRender) {\n star = characterRender(star, this.$props);\n }\n return star;\n }\n};","import PropTypes from '../../_util/vue-types';\nimport classNames from 'classnames';\nimport KeyCode from '../../_util/KeyCode';\nimport { initDefaultProps, hasProp, getOptionProps, getComponentFromProp } from '../../_util/props-util';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getOffsetLeft } from './util';\nimport Star from './Star';\n\nvar rateProps = {\n disabled: PropTypes.bool,\n value: PropTypes.number,\n defaultValue: PropTypes.number,\n count: PropTypes.number,\n allowHalf: PropTypes.bool,\n allowClear: PropTypes.bool,\n prefixCls: PropTypes.string,\n character: PropTypes.any,\n characterRender: PropTypes.func,\n tabIndex: PropTypes.number,\n autoFocus: PropTypes.bool\n};\n\nfunction noop() {}\n\nexport default {\n name: 'Rate',\n mixins: [BaseMixin],\n model: {\n prop: 'value',\n event: 'change'\n },\n props: initDefaultProps(rateProps, {\n defaultValue: 0,\n count: 5,\n allowHalf: false,\n allowClear: true,\n prefixCls: 'rc-rate',\n tabIndex: 0,\n character: '★'\n }),\n data: function data() {\n var value = this.value;\n if (!hasProp(this, 'value')) {\n value = this.defaultValue;\n }\n return {\n sValue: value,\n focused: false,\n cleanedValue: null,\n hoverValue: undefined\n };\n },\n\n watch: {\n value: function value(val) {\n this.setState({\n sValue: val\n });\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.autoFocus && !_this.disabled) {\n _this.focus();\n }\n });\n },\n\n methods: {\n onHover: function onHover(event, index) {\n var hoverValue = this.getStarValue(index, event.pageX);\n var cleanedValue = this.cleanedValue;\n\n if (hoverValue !== cleanedValue) {\n this.setState({\n hoverValue: hoverValue,\n cleanedValue: null\n });\n }\n this.$emit('hoverChange', hoverValue);\n },\n onMouseLeave: function onMouseLeave() {\n this.setState({\n hoverValue: undefined,\n cleanedValue: null\n });\n this.$emit('hoverChange', undefined);\n },\n onClick: function onClick(event, index) {\n var allowClear = this.allowClear,\n value = this.sValue;\n\n var newValue = this.getStarValue(index, event.pageX);\n var isReset = false;\n if (allowClear) {\n isReset = newValue === value;\n }\n this.onMouseLeave(true);\n this.changeValue(isReset ? 0 : newValue);\n this.setState({\n cleanedValue: isReset ? newValue : null\n });\n },\n onFocus: function onFocus() {\n this.setState({\n focused: true\n });\n this.$emit('focus');\n },\n onBlur: function onBlur() {\n this.setState({\n focused: false\n });\n this.$emit('blur');\n },\n onKeyDown: function onKeyDown(event) {\n var keyCode = event.keyCode;\n var count = this.count,\n allowHalf = this.allowHalf;\n var sValue = this.sValue;\n\n if (keyCode === KeyCode.RIGHT && sValue < count) {\n if (allowHalf) {\n sValue += 0.5;\n } else {\n sValue += 1;\n }\n this.changeValue(sValue);\n event.preventDefault();\n } else if (keyCode === KeyCode.LEFT && sValue > 0) {\n if (allowHalf) {\n sValue -= 0.5;\n } else {\n sValue -= 1;\n }\n this.changeValue(sValue);\n event.preventDefault();\n }\n this.$emit('keydown', event);\n },\n getStarDOM: function getStarDOM(index) {\n return this.$refs['stars' + index].$el;\n },\n getStarValue: function getStarValue(index, x) {\n var value = index + 1;\n if (this.allowHalf) {\n var starEle = this.getStarDOM(index);\n var leftDis = getOffsetLeft(starEle);\n var width = starEle.clientWidth;\n if (x - leftDis < width / 2) {\n value -= 0.5;\n }\n }\n return value;\n },\n focus: function focus() {\n if (!this.disabled) {\n this.$refs.rateRef.focus();\n }\n },\n blur: function blur() {\n if (!this.disabled) {\n this.$refs.rateRef.blur();\n }\n },\n changeValue: function changeValue(value) {\n if (!hasProp(this, 'value')) {\n this.setState({\n sValue: value\n });\n }\n this.$emit('change', value);\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n count = _getOptionProps.count,\n allowHalf = _getOptionProps.allowHalf,\n prefixCls = _getOptionProps.prefixCls,\n disabled = _getOptionProps.disabled,\n tabIndex = _getOptionProps.tabIndex;\n\n var sValue = this.sValue,\n hoverValue = this.hoverValue,\n focused = this.focused;\n\n var stars = [];\n var disabledClass = disabled ? prefixCls + '-disabled' : '';\n var character = getComponentFromProp(this, 'character');\n var characterRender = this.characterRender || this.$scopedSlots.characterRender;\n for (var index = 0; index < count; index++) {\n var starProps = {\n props: {\n index: index,\n count: count,\n disabled: disabled,\n prefixCls: prefixCls + '-star',\n allowHalf: allowHalf,\n value: hoverValue === undefined ? sValue : hoverValue,\n character: character,\n characterRender: characterRender,\n focused: focused\n },\n on: {\n click: this.onClick,\n hover: this.onHover\n },\n key: index,\n ref: 'stars' + index\n };\n stars.push(h(Star, starProps));\n }\n return h(\n 'ul',\n {\n 'class': classNames(prefixCls, disabledClass),\n on: {\n 'mouseleave': disabled ? noop : this.onMouseLeave,\n 'focus': disabled ? noop : this.onFocus,\n 'blur': disabled ? noop : this.onBlur,\n 'keydown': disabled ? noop : this.onKeyDown\n },\n attrs: {\n tabIndex: disabled ? -1 : tabIndex,\n\n role: 'radiogroup'\n },\n\n ref: 'rateRef' },\n [stars]\n );\n }\n};","import Rate from './Rate';\nexport default Rate;","// based on rc-rate 2.5.0\nimport Rate from './src/';\nexport default Rate;","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport omit from 'omit.js';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport VcRate from '../vc-rate';\nimport Icon from '../icon';\nimport Tooltip from '../tooltip';\nimport Base from '../base';\n\nexport var RateProps = {\n prefixCls: PropTypes.string,\n count: PropTypes.number,\n value: PropTypes.value,\n defaultValue: PropTypes.value,\n allowHalf: PropTypes.bool,\n allowClear: PropTypes.bool,\n tooltips: PropTypes.arrayOf(PropTypes.string),\n disabled: PropTypes.bool,\n character: PropTypes.any,\n autoFocus: PropTypes.bool\n};\n\nvar Rate = {\n name: 'ARate',\n model: {\n prop: 'value',\n event: 'change'\n },\n props: RateProps,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n characterRender: function characterRender(node, _ref) {\n var index = _ref.index;\n var h = this.$createElement;\n var tooltips = this.$props.tooltips;\n\n if (!tooltips) return node;\n return h(\n Tooltip,\n {\n attrs: { title: tooltips[index] }\n },\n [node]\n );\n },\n focus: function focus() {\n this.$refs.refRate.focus();\n },\n blur: function blur() {\n this.$refs.refRate.blur();\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('rate', customizePrefixCls);\n\n var character = getComponentFromProp(this, 'character') || h(Icon, {\n attrs: { type: 'star', theme: 'filled' }\n });\n var rateProps = {\n props: _extends({\n character: character,\n characterRender: this.characterRender,\n prefixCls: prefixCls\n }, omit(restProps, ['tooltips'])),\n on: getListeners(this),\n ref: 'refRate'\n };\n return h(VcRate, rateProps);\n }\n};\n\n/* istanbul ignore next */\nRate.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Rate.name, Rate);\n};\nexport default Rate;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\n/* eslint-disable */\nvar Track = {\n functional: true,\n render: function render(h, context) {\n var _ref, _ref2;\n\n var _context$props = context.props,\n included = _context$props.included,\n vertical = _context$props.vertical,\n offset = _context$props.offset,\n length = _context$props.length,\n reverse = _context$props.reverse;\n var _context$data = context.data,\n style = _context$data.style,\n className = _context$data['class'];\n\n\n var positonStyle = vertical ? (_ref = {}, _defineProperty(_ref, reverse ? 'top' : 'bottom', offset + '%'), _defineProperty(_ref, reverse ? 'bottom' : 'top', 'auto'), _defineProperty(_ref, 'height', length + '%'), _ref) : (_ref2 = {}, _defineProperty(_ref2, reverse ? 'right' : 'left', offset + '%'), _defineProperty(_ref2, reverse ? 'left' : 'right', 'auto'), _defineProperty(_ref2, 'width', length + '%'), _ref2);\n\n var elStyle = _extends({}, style, positonStyle);\n return included ? h('div', { 'class': className, style: elStyle }) : null;\n }\n};\n\nexport default Track;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport warning from '../../../_util/warning';\n\nvar calcPoints = function calcPoints(vertical, marks, dots, step, min, max) {\n warning(dots ? step > 0 : true, 'Slider', '`Slider[step]` should be a positive number in order to make Slider[dots] work.');\n var points = Object.keys(marks).map(parseFloat).sort(function (a, b) {\n return a - b;\n });\n if (dots && step) {\n for (var i = min; i <= max; i += step) {\n if (points.indexOf(i) === -1) {\n points.push(i);\n }\n }\n }\n return points;\n};\n\nvar Steps = {\n functional: true,\n render: function render(h, context) {\n var _context$props = context.props,\n prefixCls = _context$props.prefixCls,\n vertical = _context$props.vertical,\n reverse = _context$props.reverse,\n marks = _context$props.marks,\n dots = _context$props.dots,\n step = _context$props.step,\n included = _context$props.included,\n lowerBound = _context$props.lowerBound,\n upperBound = _context$props.upperBound,\n max = _context$props.max,\n min = _context$props.min,\n dotStyle = _context$props.dotStyle,\n activeDotStyle = _context$props.activeDotStyle;\n\n var range = max - min;\n var elements = calcPoints(vertical, marks, dots, step, min, max).map(function (point) {\n var _classNames;\n\n var offset = Math.abs(point - min) / range * 100 + '%';\n\n var isActived = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var style = vertical ? _extends({}, dotStyle, _defineProperty({}, reverse ? 'top' : 'bottom', offset)) : _extends({}, dotStyle, _defineProperty({}, reverse ? 'right' : 'left', offset));\n if (isActived) {\n style = _extends({}, style, activeDotStyle);\n }\n\n var pointClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-dot', true), _defineProperty(_classNames, prefixCls + '-dot-active', isActived), _defineProperty(_classNames, prefixCls + '-dot-reverse', reverse), _classNames));\n\n return h('span', { 'class': pointClassName, style: style, key: point });\n });\n\n return h(\n 'div',\n { 'class': prefixCls + '-step' },\n [elements]\n );\n }\n};\n\nexport default Steps;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport classNames from 'classnames';\nimport { isValidElement } from '../../../_util/props-util';\n\nvar Marks = {\n functional: true,\n render: function render(h, context) {\n var _context$props = context.props,\n className = _context$props.className,\n vertical = _context$props.vertical,\n reverse = _context$props.reverse,\n marks = _context$props.marks,\n included = _context$props.included,\n upperBound = _context$props.upperBound,\n lowerBound = _context$props.lowerBound,\n max = _context$props.max,\n min = _context$props.min;\n var clickLabel = context.listeners.clickLabel;\n\n var marksKeys = Object.keys(marks);\n\n var range = max - min;\n var elements = marksKeys.map(parseFloat).sort(function (a, b) {\n return a - b;\n }).map(function (point) {\n var _classNames;\n\n var markPoint = typeof marks[point] === 'function' ? marks[point](h) : marks[point];\n var markPointIsObject = (typeof markPoint === 'undefined' ? 'undefined' : _typeof(markPoint)) === 'object' && !isValidElement(markPoint);\n var markLabel = markPointIsObject ? markPoint.label : markPoint;\n if (!markLabel && markLabel !== 0) {\n return null;\n }\n\n var isActive = !included && point === upperBound || included && point <= upperBound && point >= lowerBound;\n var markClassName = classNames((_classNames = {}, _defineProperty(_classNames, className + '-text', true), _defineProperty(_classNames, className + '-text-active', isActive), _classNames));\n\n var bottomStyle = _defineProperty({\n marginBottom: '-50%'\n }, reverse ? 'top' : 'bottom', (point - min) / range * 100 + '%');\n\n var leftStyle = _defineProperty({\n transform: 'translateX(-50%)',\n msTransform: 'translateX(-50%)'\n }, reverse ? 'right' : 'left', reverse ? (point - min / 4) / range * 100 + '%' : (point - min) / range * 100 + '%');\n\n var style = vertical ? bottomStyle : leftStyle;\n var markStyle = markPointIsObject ? _extends({}, style, markPoint.style) : style;\n return h(\n 'span',\n {\n 'class': markClassName,\n style: markStyle,\n key: point,\n on: {\n 'mousedown': function mousedown(e) {\n return clickLabel(e, point);\n },\n 'touchstart': function touchstart(e) {\n return clickLabel(e, point);\n }\n }\n },\n [markLabel]\n );\n });\n\n return h(\n 'div',\n { 'class': className },\n [elements]\n );\n }\n};\n\nexport default Marks;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport classNames from 'classnames';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { getOptionProps, getListeners } from '../../_util/props-util';\nimport addEventListener from '../../vc-util/Dom/addEventListener';\n\nexport default {\n name: 'Handle',\n mixins: [BaseMixin],\n props: {\n prefixCls: PropTypes.string,\n vertical: PropTypes.bool,\n offset: PropTypes.number,\n disabled: PropTypes.bool,\n min: PropTypes.number,\n max: PropTypes.number,\n value: PropTypes.number,\n tabIndex: PropTypes.number,\n className: PropTypes.string,\n reverse: PropTypes.bool\n // handleFocus: PropTypes.func.def(noop),\n // handleBlur: PropTypes.func.def(noop),\n },\n data: function data() {\n return {\n clickFocused: false\n };\n },\n mounted: function mounted() {\n // mouseup won't trigger if mouse moved out of handle\n // so we listen on document here.\n this.onMouseUpListener = addEventListener(document, 'mouseup', this.handleMouseUp);\n },\n beforeDestroy: function beforeDestroy() {\n if (this.onMouseUpListener) {\n this.onMouseUpListener.remove();\n }\n },\n\n methods: {\n setClickFocus: function setClickFocus(focused) {\n this.setState({ clickFocused: focused });\n },\n handleMouseUp: function handleMouseUp() {\n if (document.activeElement === this.$refs.handle) {\n this.setClickFocus(true);\n }\n },\n handleBlur: function handleBlur(e) {\n this.setClickFocus(false);\n this.__emit('blur', e);\n },\n handleKeyDown: function handleKeyDown() {\n this.setClickFocus(false);\n },\n clickFocus: function clickFocus() {\n this.setClickFocus(true);\n this.focus();\n },\n focus: function focus() {\n this.$refs.handle.focus();\n },\n blur: function blur() {\n this.$refs.handle.blur();\n },\n\n // when click can not focus in vue, use mousedown trigger focus\n handleMousedown: function handleMousedown(e) {\n this.focus();\n this.__emit('mousedown', e);\n }\n },\n render: function render() {\n var _ref, _ref2;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n prefixCls = _getOptionProps.prefixCls,\n vertical = _getOptionProps.vertical,\n reverse = _getOptionProps.reverse,\n offset = _getOptionProps.offset,\n disabled = _getOptionProps.disabled,\n min = _getOptionProps.min,\n max = _getOptionProps.max,\n value = _getOptionProps.value,\n tabIndex = _getOptionProps.tabIndex;\n\n var className = classNames(this.$props.className, _defineProperty({}, prefixCls + '-handle-click-focused', this.clickFocused));\n\n var positionStyle = vertical ? (_ref = {}, _defineProperty(_ref, reverse ? 'top' : 'bottom', offset + '%'), _defineProperty(_ref, reverse ? 'bottom' : 'top', 'auto'), _defineProperty(_ref, 'transform', 'translateY(+50%)'), _ref) : (_ref2 = {}, _defineProperty(_ref2, reverse ? 'right' : 'left', offset + '%'), _defineProperty(_ref2, reverse ? 'left' : 'right', 'auto'), _defineProperty(_ref2, 'transform', 'translateX(' + (reverse ? '+' : '-') + '50%)'), _ref2);\n\n var ariaProps = {\n 'aria-valuemin': min,\n 'aria-valuemax': max,\n 'aria-valuenow': value,\n 'aria-disabled': !!disabled\n };\n var _tabIndex = tabIndex || 0;\n if (disabled || tabIndex === null) {\n _tabIndex = null;\n }\n\n var handleProps = {\n attrs: _extends({\n role: 'slider',\n tabIndex: _tabIndex\n }, ariaProps),\n 'class': className,\n on: _extends({}, getListeners(this), {\n blur: this.handleBlur,\n keydown: this.handleKeyDown,\n mousedown: this.handleMousedown\n }),\n ref: 'handle',\n style: positionStyle\n };\n return h('div', handleProps);\n }\n};","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport keyCode from '../../_util/KeyCode';\n\nexport function isEventFromHandle(e, handles) {\n try {\n return Object.keys(handles).some(function (key) {\n return e.target === handles[key].$el || e.target === handles[key];\n });\n } catch (error) {\n return false;\n }\n}\n\nexport function isValueOutOfRange(value, _ref) {\n var min = _ref.min,\n max = _ref.max;\n\n return value < min || value > max;\n}\n\nexport function isNotTouchEvent(e) {\n return e.touches.length > 1 || e.type.toLowerCase() === 'touchend' && e.touches.length > 0;\n}\n\nexport function getClosestPoint(val, _ref2) {\n var marks = _ref2.marks,\n step = _ref2.step,\n min = _ref2.min,\n max = _ref2.max;\n\n var points = Object.keys(marks).map(parseFloat);\n if (step !== null) {\n var base = Math.pow(10, getPrecision(step));\n var maxSteps = Math.floor((max * base - min * base) / (step * base));\n var steps = Math.min((val - min) / step, maxSteps);\n var closestStep = Math.round(steps) * step + min;\n points.push(closestStep);\n }\n var diffs = points.map(function (point) {\n return Math.abs(val - point);\n });\n return points[diffs.indexOf(Math.min.apply(Math, _toConsumableArray(diffs)))];\n}\n\nexport function getPrecision(step) {\n var stepString = step.toString();\n var precision = 0;\n if (stepString.indexOf('.') >= 0) {\n precision = stepString.length - stepString.indexOf('.') - 1;\n }\n return precision;\n}\n\nexport function getMousePosition(vertical, e) {\n var zoom = 1;\n if (window.visualViewport) {\n zoom = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2);\n }\n return (vertical ? e.clientY : e.pageX) / zoom;\n}\n\nexport function getTouchPosition(vertical, e) {\n var zoom = 1;\n if (window.visualViewport) {\n zoom = +(window.visualViewport.width / document.body.getBoundingClientRect().width).toFixed(2);\n }\n return (vertical ? e.touches[0].clientY : e.touches[0].pageX) / zoom;\n}\n\nexport function getHandleCenterPosition(vertical, handle) {\n var coords = handle.getBoundingClientRect();\n return vertical ? coords.top + coords.height * 0.5 : window.pageXOffset + coords.left + coords.width * 0.5;\n}\n\nexport function ensureValueInRange(val, _ref3) {\n var max = _ref3.max,\n min = _ref3.min;\n\n if (val <= min) {\n return min;\n }\n if (val >= max) {\n return max;\n }\n return val;\n}\n\nexport function ensureValuePrecision(val, props) {\n var step = props.step;\n\n var closestPoint = isFinite(getClosestPoint(val, props)) ? getClosestPoint(val, props) : 0; // eslint-disable-line\n return step === null ? closestPoint : parseFloat(closestPoint.toFixed(getPrecision(step)));\n}\n\nexport function pauseEvent(e) {\n e.stopPropagation();\n e.preventDefault();\n}\n\nexport function calculateNextValue(func, value, props) {\n var operations = {\n increase: function increase(a, b) {\n return a + b;\n },\n decrease: function decrease(a, b) {\n return a - b;\n }\n };\n\n var indexToGet = operations[func](Object.keys(props.marks).indexOf(JSON.stringify(value)), 1);\n var keyToGet = Object.keys(props.marks)[indexToGet];\n\n if (props.step) {\n return operations[func](value, props.step);\n } else if (!!Object.keys(props.marks).length && !!props.marks[keyToGet]) {\n return props.marks[keyToGet];\n }\n return value;\n}\n\nexport function getKeyboardValueMutator(e, vertical, reverse) {\n var increase = 'increase';\n var decrease = 'decrease';\n var method = increase;\n switch (e.keyCode) {\n case keyCode.UP:\n method = vertical && reverse ? decrease : increase;\n break;\n case keyCode.RIGHT:\n method = !vertical && reverse ? decrease : increase;\n break;\n case keyCode.DOWN:\n method = vertical && reverse ? increase : decrease;\n break;\n case keyCode.LEFT:\n method = !vertical && reverse ? increase : decrease;\n break;\n\n case keyCode.END:\n return function (value, props) {\n return props.max;\n };\n case keyCode.HOME:\n return function (value, props) {\n return props.min;\n };\n case keyCode.PAGE_UP:\n return function (value, props) {\n return value + props.step * 2;\n };\n case keyCode.PAGE_DOWN:\n return function (value, props) {\n return value - props.step * 2;\n };\n\n default:\n return undefined;\n }\n return function (value, props) {\n return calculateNextValue(method, value, props);\n };\n}","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport classNames from 'classnames';\nimport PropTypes from '../../../_util/vue-types';\nimport addEventListener from '../../../vc-util/Dom/addEventListener';\nimport warning from '../../../_util/warning';\nimport { initDefaultProps } from '../../../_util/props-util';\nimport Steps from './Steps';\nimport Marks from './Marks';\nimport Handle from '../Handle';\nimport * as utils from '../utils';\n\nfunction noop() {}\n\nexport default function createSlider(Component) {\n // const displayName = `ComponentEnhancer(${Component.displayName})`\n var propTypes = {\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.number,\n marks: PropTypes.object,\n included: PropTypes.bool,\n prefixCls: PropTypes.string,\n disabled: PropTypes.bool,\n handle: PropTypes.func,\n dots: PropTypes.bool,\n vertical: PropTypes.bool,\n reverse: PropTypes.bool,\n minimumTrackStyle: PropTypes.object, // just for compatibility, will be deperecate\n maximumTrackStyle: PropTypes.object, // just for compatibility, will be deperecate\n handleStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n trackStyle: PropTypes.oneOfType([PropTypes.object, PropTypes.arrayOf(PropTypes.object)]),\n railStyle: PropTypes.object,\n dotStyle: PropTypes.object,\n activeDotStyle: PropTypes.object,\n autoFocus: PropTypes.bool\n };\n return {\n name: 'createSlider',\n mixins: [Component],\n model: {\n prop: 'value',\n event: 'change'\n },\n props: initDefaultProps(propTypes, {\n prefixCls: 'rc-slider',\n min: 0,\n max: 100,\n step: 1,\n marks: {},\n included: true,\n disabled: false,\n dots: false,\n vertical: false,\n reverse: false,\n trackStyle: [{}],\n handleStyle: [{}],\n railStyle: {},\n dotStyle: {},\n activeDotStyle: {}\n }),\n data: function data() {\n var step = this.step,\n max = this.max,\n min = this.min;\n\n var isPointDiffEven = isFinite(max - min) ? (max - min) % step === 0 : true; // eslint-disable-line\n warning(step && Math.floor(step) === step ? isPointDiffEven : true, 'Slider', 'Slider[max] - Slider[min] (%s) should be a multiple of Slider[step] (%s)', max - min, step);\n this.handlesRefs = {};\n return {};\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n // Snapshot testing cannot handle refs, so be sure to null-check this.\n _this.document = _this.$refs.sliderRef && _this.$refs.sliderRef.ownerDocument;\n // this.setHandleRefs()\n var autoFocus = _this.autoFocus,\n disabled = _this.disabled;\n\n if (autoFocus && !disabled) {\n _this.focus();\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n var _this2 = this;\n\n this.$nextTick(function () {\n // if (super.componentWillUnmount) super.componentWillUnmount()\n _this2.removeDocumentEvents();\n });\n },\n\n methods: {\n defaultHandle: function defaultHandle(_ref) {\n var index = _ref.index,\n directives = _ref.directives,\n className = _ref.className,\n style = _ref.style,\n on = _ref.on,\n restProps = _objectWithoutProperties(_ref, ['index', 'directives', 'className', 'style', 'on']);\n\n var h = this.$createElement;\n\n delete restProps.dragging;\n if (restProps.value === null) {\n return null;\n }\n var handleProps = {\n props: _extends({}, restProps),\n 'class': className,\n style: style,\n key: index,\n directives: directives,\n on: on\n };\n return h(Handle, handleProps);\n },\n onMouseDown: function onMouseDown(e) {\n if (e.button !== 0) {\n return;\n }\n var isVertical = this.vertical;\n var position = utils.getMousePosition(isVertical, e);\n if (!utils.isEventFromHandle(e, this.handlesRefs)) {\n this.dragOffset = 0;\n } else {\n var handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n this.dragOffset = position - handlePosition;\n position = handlePosition;\n }\n this.removeDocumentEvents();\n this.onStart(position);\n this.addDocumentMouseEvents();\n utils.pauseEvent(e);\n },\n onTouchStart: function onTouchStart(e) {\n if (utils.isNotTouchEvent(e)) return;\n\n var isVertical = this.vertical;\n var position = utils.getTouchPosition(isVertical, e);\n if (!utils.isEventFromHandle(e, this.handlesRefs)) {\n this.dragOffset = 0;\n } else {\n var handlePosition = utils.getHandleCenterPosition(isVertical, e.target);\n this.dragOffset = position - handlePosition;\n position = handlePosition;\n }\n this.onStart(position);\n this.addDocumentTouchEvents();\n utils.pauseEvent(e);\n },\n onFocus: function onFocus(e) {\n var vertical = this.vertical;\n\n if (utils.isEventFromHandle(e, this.handlesRefs)) {\n var handlePosition = utils.getHandleCenterPosition(vertical, e.target);\n this.dragOffset = 0;\n this.onStart(handlePosition);\n utils.pauseEvent(e);\n this.$emit('focus', e);\n }\n },\n onBlur: function onBlur(e) {\n this.onEnd();\n this.$emit('blur', e);\n },\n onMouseUp: function onMouseUp() {\n if (this.handlesRefs[this.prevMovedHandleIndex]) {\n this.handlesRefs[this.prevMovedHandleIndex].clickFocus();\n }\n },\n onMouseMove: function onMouseMove(e) {\n if (!this.$refs.sliderRef) {\n this.onEnd();\n return;\n }\n var position = utils.getMousePosition(this.vertical, e);\n this.onMove(e, position - this.dragOffset);\n },\n onTouchMove: function onTouchMove(e) {\n if (utils.isNotTouchEvent(e) || !this.$refs.sliderRef) {\n this.onEnd();\n return;\n }\n\n var position = utils.getTouchPosition(this.vertical, e);\n this.onMove(e, position - this.dragOffset);\n },\n onKeyDown: function onKeyDown(e) {\n if (this.$refs.sliderRef && utils.isEventFromHandle(e, this.handlesRefs)) {\n this.onKeyboard(e);\n }\n },\n onClickMarkLabel: function onClickMarkLabel(e, value) {\n var _this3 = this;\n\n e.stopPropagation();\n this.onChange({ sValue: value });\n this.setState({ sValue: value }, function () {\n return _this3.onEnd(true);\n });\n },\n getSliderStart: function getSliderStart() {\n var slider = this.$refs.sliderRef;\n var vertical = this.vertical,\n reverse = this.reverse;\n\n var rect = slider.getBoundingClientRect();\n if (vertical) {\n return reverse ? rect.bottom : rect.top;\n }\n return window.pageXOffset + (reverse ? rect.right : rect.left);\n },\n getSliderLength: function getSliderLength() {\n var slider = this.$refs.sliderRef;\n if (!slider) {\n return 0;\n }\n\n var coords = slider.getBoundingClientRect();\n return this.vertical ? coords.height : coords.width;\n },\n addDocumentTouchEvents: function addDocumentTouchEvents() {\n // just work for Chrome iOS Safari and Android Browser\n this.onTouchMoveListener = addEventListener(this.document, 'touchmove', this.onTouchMove);\n this.onTouchUpListener = addEventListener(this.document, 'touchend', this.onEnd);\n },\n addDocumentMouseEvents: function addDocumentMouseEvents() {\n this.onMouseMoveListener = addEventListener(this.document, 'mousemove', this.onMouseMove);\n this.onMouseUpListener = addEventListener(this.document, 'mouseup', this.onEnd);\n },\n removeDocumentEvents: function removeDocumentEvents() {\n /* eslint-disable no-unused-expressions */\n this.onTouchMoveListener && this.onTouchMoveListener.remove();\n this.onTouchUpListener && this.onTouchUpListener.remove();\n\n this.onMouseMoveListener && this.onMouseMoveListener.remove();\n this.onMouseUpListener && this.onMouseUpListener.remove();\n /* eslint-enable no-unused-expressions */\n },\n focus: function focus() {\n if (!this.disabled) {\n this.handlesRefs[0].focus();\n }\n },\n blur: function blur() {\n var _this4 = this;\n\n if (!this.disabled) {\n Object.keys(this.handlesRefs).forEach(function (key) {\n if (_this4.handlesRefs[key] && _this4.handlesRefs[key].blur) {\n _this4.handlesRefs[key].blur();\n }\n });\n }\n },\n calcValue: function calcValue(offset) {\n var vertical = this.vertical,\n min = this.min,\n max = this.max;\n\n var ratio = Math.abs(Math.max(offset, 0) / this.getSliderLength());\n var value = vertical ? (1 - ratio) * (max - min) + min : ratio * (max - min) + min;\n return value;\n },\n calcValueByPos: function calcValueByPos(position) {\n var sign = this.reverse ? -1 : +1;\n var pixelOffset = sign * (position - this.getSliderStart());\n var nextValue = this.trimAlignValue(this.calcValue(pixelOffset));\n return nextValue;\n },\n calcOffset: function calcOffset(value) {\n var min = this.min,\n max = this.max;\n\n var ratio = (value - min) / (max - min);\n return ratio * 100;\n },\n saveHandle: function saveHandle(index, handle) {\n this.handlesRefs[index] = handle;\n }\n },\n render: function render(h) {\n var _classNames;\n\n var prefixCls = this.prefixCls,\n marks = this.marks,\n dots = this.dots,\n step = this.step,\n included = this.included,\n disabled = this.disabled,\n vertical = this.vertical,\n reverse = this.reverse,\n min = this.min,\n max = this.max,\n maximumTrackStyle = this.maximumTrackStyle,\n railStyle = this.railStyle,\n dotStyle = this.dotStyle,\n activeDotStyle = this.activeDotStyle;\n\n var _renderSlider = this.renderSlider(h),\n tracks = _renderSlider.tracks,\n handles = _renderSlider.handles;\n\n var sliderClassName = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-with-marks', Object.keys(marks).length), _defineProperty(_classNames, prefixCls + '-disabled', disabled), _defineProperty(_classNames, prefixCls + '-vertical', vertical), _classNames));\n var markProps = {\n props: {\n vertical: vertical,\n marks: marks,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n reverse: reverse,\n className: prefixCls + '-mark'\n },\n on: {\n clickLabel: disabled ? noop : this.onClickMarkLabel\n }\n };\n return h(\n 'div',\n {\n ref: 'sliderRef',\n attrs: { tabIndex: '-1'\n },\n 'class': sliderClassName,\n on: {\n 'touchstart': disabled ? noop : this.onTouchStart,\n 'mousedown': disabled ? noop : this.onMouseDown,\n 'mouseup': disabled ? noop : this.onMouseUp,\n 'keydown': disabled ? noop : this.onKeyDown,\n 'focus': disabled ? noop : this.onFocus,\n 'blur': disabled ? noop : this.onBlur\n }\n },\n [h('div', {\n 'class': prefixCls + '-rail',\n style: _extends({}, maximumTrackStyle, railStyle)\n }), tracks, h(Steps, {\n attrs: {\n prefixCls: prefixCls,\n vertical: vertical,\n reverse: reverse,\n marks: marks,\n dots: dots,\n step: step,\n included: included,\n lowerBound: this.getLowerBound(),\n upperBound: this.getUpperBound(),\n max: max,\n min: min,\n dotStyle: dotStyle,\n activeDotStyle: activeDotStyle\n }\n }), handles, h(Marks, markProps), this.$slots['default']]\n );\n }\n };\n}","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport warning from '../../_util/warning';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { hasProp } from '../../_util/props-util';\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\n\nvar Slider = {\n name: 'Slider',\n mixins: [BaseMixin],\n props: {\n defaultValue: PropTypes.number,\n value: PropTypes.number,\n disabled: PropTypes.bool,\n autoFocus: PropTypes.bool,\n tabIndex: PropTypes.number,\n reverse: PropTypes.bool,\n min: PropTypes.number,\n max: PropTypes.number\n },\n data: function data() {\n var defaultValue = this.defaultValue !== undefined ? this.defaultValue : this.min;\n var value = this.value !== undefined ? this.value : defaultValue;\n\n warning(!hasProp(this, 'minimumTrackStyle'), 'Slider', 'minimumTrackStyle will be deprecate, please use trackStyle instead.');\n warning(!hasProp(this, 'maximumTrackStyle'), 'Slider', 'maximumTrackStyle will be deprecate, please use railStyle instead.');\n return {\n sValue: this.trimAlignValue(value),\n dragging: false\n };\n },\n\n watch: {\n value: {\n handler: function handler(val) {\n this.setChangeValue(val);\n },\n\n deep: true\n },\n min: function min() {\n var sValue = this.sValue;\n\n this.setChangeValue(sValue);\n },\n max: function max() {\n var sValue = this.sValue;\n\n this.setChangeValue(sValue);\n }\n },\n methods: {\n setChangeValue: function setChangeValue(value) {\n var newValue = value !== undefined ? value : this.sValue;\n var nextValue = this.trimAlignValue(newValue, this.$props);\n if (nextValue === this.sValue) return;\n\n this.setState({ sValue: nextValue });\n if (utils.isValueOutOfRange(newValue, this.$props)) {\n this.$emit('change', nextValue);\n }\n },\n onChange: function onChange(state) {\n var isNotControlled = !hasProp(this, 'value');\n var nextState = state.sValue > this.max ? _extends({}, state, { sValue: this.max }) : state;\n if (isNotControlled) {\n this.setState(nextState);\n }\n\n var changedValue = nextState.sValue;\n this.$emit('change', changedValue);\n },\n onStart: function onStart(position) {\n this.setState({ dragging: true });\n var sValue = this.sValue;\n\n this.$emit('beforeChange', sValue);\n\n var value = this.calcValueByPos(position);\n\n this.startValue = value;\n this.startPosition = position;\n if (value === sValue) return;\n\n this.prevMovedHandleIndex = 0;\n this.onChange({ sValue: value });\n },\n onEnd: function onEnd(force) {\n var dragging = this.dragging;\n\n this.removeDocumentEvents();\n if (dragging || force) {\n this.$emit('afterChange', this.sValue);\n }\n this.setState({ dragging: false });\n },\n onMove: function onMove(e, position) {\n utils.pauseEvent(e);\n var sValue = this.sValue;\n\n var value = this.calcValueByPos(position);\n if (value === sValue) return;\n\n this.onChange({ sValue: value });\n },\n onKeyboard: function onKeyboard(e) {\n var _$props = this.$props,\n reverse = _$props.reverse,\n vertical = _$props.vertical;\n\n var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n if (valueMutator) {\n utils.pauseEvent(e);\n var sValue = this.sValue;\n\n var mutatedValue = valueMutator(sValue, this.$props);\n var value = this.trimAlignValue(mutatedValue);\n if (value === sValue) return;\n\n this.onChange({ sValue: value });\n this.$emit('afterChange', value);\n this.onEnd();\n }\n },\n getLowerBound: function getLowerBound() {\n return this.min;\n },\n getUpperBound: function getUpperBound() {\n return this.sValue;\n },\n trimAlignValue: function trimAlignValue(v) {\n var nextProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (v === null) {\n return null;\n }\n var mergedProps = _extends({}, this.$props, nextProps);\n var val = utils.ensureValueInRange(v, mergedProps);\n return utils.ensureValuePrecision(val, mergedProps);\n },\n getTrack: function getTrack(_ref) {\n var prefixCls = _ref.prefixCls,\n reverse = _ref.reverse,\n vertical = _ref.vertical,\n included = _ref.included,\n offset = _ref.offset,\n minimumTrackStyle = _ref.minimumTrackStyle,\n _trackStyle = _ref._trackStyle;\n var h = this.$createElement;\n\n return h(Track, {\n 'class': prefixCls + '-track',\n attrs: { vertical: vertical,\n included: included,\n offset: 0,\n reverse: reverse,\n length: offset\n },\n style: _extends({}, minimumTrackStyle, _trackStyle)\n });\n },\n renderSlider: function renderSlider() {\n var _this = this;\n\n var prefixCls = this.prefixCls,\n vertical = this.vertical,\n included = this.included,\n disabled = this.disabled,\n minimumTrackStyle = this.minimumTrackStyle,\n trackStyle = this.trackStyle,\n handleStyle = this.handleStyle,\n tabIndex = this.tabIndex,\n min = this.min,\n max = this.max,\n reverse = this.reverse,\n handle = this.handle,\n defaultHandle = this.defaultHandle;\n\n var handleGenerator = handle || defaultHandle;\n var sValue = this.sValue,\n dragging = this.dragging;\n\n var offset = this.calcOffset(sValue);\n var handles = handleGenerator({\n className: prefixCls + '-handle',\n prefixCls: prefixCls,\n vertical: vertical,\n offset: offset,\n value: sValue,\n dragging: dragging,\n disabled: disabled,\n min: min,\n max: max,\n reverse: reverse,\n index: 0,\n tabIndex: tabIndex,\n style: handleStyle[0] || handleStyle,\n directives: [{\n name: 'ant-ref',\n value: function value(h) {\n return _this.saveHandle(0, h);\n }\n }],\n on: {\n focus: this.onFocus,\n blur: this.onBlur\n }\n });\n\n var _trackStyle = trackStyle[0] || trackStyle;\n return {\n tracks: this.getTrack({\n prefixCls: prefixCls,\n reverse: reverse,\n vertical: vertical,\n included: included,\n offset: offset,\n minimumTrackStyle: minimumTrackStyle,\n _trackStyle: _trackStyle\n }),\n handles: handles\n };\n }\n }\n};\n\nexport default createSlider(Slider);","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport classNames from 'classnames';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { initDefaultProps, hasProp } from '../../_util/props-util';\nimport Track from './common/Track';\nimport createSlider from './common/createSlider';\nimport * as utils from './utils';\n\nvar _trimAlignValue = function _trimAlignValue(_ref) {\n var value = _ref.value,\n handle = _ref.handle,\n bounds = _ref.bounds,\n props = _ref.props;\n var allowCross = props.allowCross,\n pushable = props.pushable;\n\n var thershold = Number(pushable);\n var valInRange = utils.ensureValueInRange(value, props);\n var valNotConflict = valInRange;\n if (!allowCross && handle != null && bounds !== undefined) {\n if (handle > 0 && valInRange <= bounds[handle - 1] + thershold) {\n valNotConflict = bounds[handle - 1] + thershold;\n }\n if (handle < bounds.length - 1 && valInRange >= bounds[handle + 1] - thershold) {\n valNotConflict = bounds[handle + 1] - thershold;\n }\n }\n return utils.ensureValuePrecision(valNotConflict, props);\n};\n\nvar rangeProps = {\n defaultValue: PropTypes.arrayOf(PropTypes.number),\n value: PropTypes.arrayOf(PropTypes.number),\n count: PropTypes.number,\n pushable: PropTypes.oneOfType([PropTypes.bool, PropTypes.number]),\n allowCross: PropTypes.bool,\n disabled: PropTypes.bool,\n reverse: PropTypes.bool,\n tabIndex: PropTypes.arrayOf(PropTypes.number),\n prefixCls: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n autoFocus: PropTypes.bool\n};\nvar Range = {\n name: 'Range',\n displayName: 'Range',\n mixins: [BaseMixin],\n props: initDefaultProps(rangeProps, {\n count: 1,\n allowCross: true,\n pushable: false,\n tabIndex: []\n }),\n data: function data() {\n var _this = this;\n\n var count = this.count,\n min = this.min,\n max = this.max;\n\n var initialValue = Array.apply(undefined, _toConsumableArray(Array(count + 1))).map(function () {\n return min;\n });\n var defaultValue = hasProp(this, 'defaultValue') ? this.defaultValue : initialValue;\n var value = this.value;\n\n if (value === undefined) {\n value = defaultValue;\n }\n var bounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n props: _this.$props\n });\n });\n var recent = bounds[0] === max ? 0 : bounds.length - 1;\n return {\n sHandle: null,\n recent: recent,\n bounds: bounds\n };\n },\n\n watch: {\n value: {\n handler: function handler(val) {\n var bounds = this.bounds;\n\n this.setChangeValue(val || bounds);\n },\n\n deep: true\n },\n min: function min() {\n var value = this.value;\n\n this.setChangeValue(value || this.bounds);\n },\n max: function max() {\n var value = this.value;\n\n this.setChangeValue(value || this.bounds);\n }\n },\n methods: {\n setChangeValue: function setChangeValue(value) {\n var _this2 = this;\n\n var bounds = this.bounds;\n\n var nextBounds = value.map(function (v, i) {\n return _trimAlignValue({\n value: v,\n handle: i,\n bounds: bounds,\n props: _this2.$props\n });\n });\n if (nextBounds.length === bounds.length && nextBounds.every(function (v, i) {\n return v === bounds[i];\n })) return;\n\n this.setState({ bounds: nextBounds });\n\n if (value.some(function (v) {\n return utils.isValueOutOfRange(v, _this2.$props);\n })) {\n var newValues = value.map(function (v) {\n return utils.ensureValueInRange(v, _this2.$props);\n });\n this.$emit('change', newValues);\n }\n },\n onChange: function onChange(state) {\n var isNotControlled = !hasProp(this, 'value');\n if (isNotControlled) {\n this.setState(state);\n } else {\n var controlledState = {};\n\n ['sHandle', 'recent'].forEach(function (item) {\n if (state[item] !== undefined) {\n controlledState[item] = state[item];\n }\n });\n\n if (Object.keys(controlledState).length) {\n this.setState(controlledState);\n }\n }\n\n var data = _extends({}, this.$data, state);\n var changedValue = data.bounds;\n this.$emit('change', changedValue);\n },\n onStart: function onStart(position) {\n var bounds = this.bounds;\n\n this.$emit('beforeChange', bounds);\n\n var value = this.calcValueByPos(position);\n this.startValue = value;\n this.startPosition = position;\n\n var closestBound = this.getClosestBound(value);\n this.prevMovedHandleIndex = this.getBoundNeedMoving(value, closestBound);\n\n this.setState({\n sHandle: this.prevMovedHandleIndex,\n recent: this.prevMovedHandleIndex\n });\n\n var prevValue = bounds[this.prevMovedHandleIndex];\n if (value === prevValue) return;\n var nextBounds = [].concat(_toConsumableArray(bounds));\n nextBounds[this.prevMovedHandleIndex] = value;\n this.onChange({ bounds: nextBounds });\n },\n onEnd: function onEnd(force) {\n var sHandle = this.sHandle;\n\n this.removeDocumentEvents();\n if (sHandle !== null || force) {\n this.$emit('afterChange', this.bounds);\n }\n this.setState({ sHandle: null });\n },\n onMove: function onMove(e, position) {\n utils.pauseEvent(e);\n var bounds = this.bounds,\n sHandle = this.sHandle;\n\n var value = this.calcValueByPos(position);\n var oldValue = bounds[sHandle];\n if (value === oldValue) return;\n\n this.moveTo(value);\n },\n onKeyboard: function onKeyboard(e) {\n var _$props = this.$props,\n reverse = _$props.reverse,\n vertical = _$props.vertical;\n\n var valueMutator = utils.getKeyboardValueMutator(e, vertical, reverse);\n\n if (valueMutator) {\n utils.pauseEvent(e);\n var bounds = this.bounds,\n sHandle = this.sHandle;\n\n var oldValue = bounds[sHandle === null ? this.recent : sHandle];\n var mutatedValue = valueMutator(oldValue, this.$props);\n var value = _trimAlignValue({\n value: mutatedValue,\n handle: sHandle,\n bounds: bounds,\n props: this.$props\n });\n if (value === oldValue) return;\n var isFromKeyboardEvent = true;\n this.moveTo(value, isFromKeyboardEvent);\n }\n },\n getClosestBound: function getClosestBound(value) {\n var bounds = this.bounds;\n\n var closestBound = 0;\n for (var i = 1; i < bounds.length - 1; ++i) {\n if (value > bounds[i]) {\n closestBound = i;\n }\n }\n if (Math.abs(bounds[closestBound + 1] - value) < Math.abs(bounds[closestBound] - value)) {\n closestBound += 1;\n }\n return closestBound;\n },\n getBoundNeedMoving: function getBoundNeedMoving(value, closestBound) {\n var bounds = this.bounds,\n recent = this.recent;\n\n var boundNeedMoving = closestBound;\n var isAtTheSamePoint = bounds[closestBound + 1] === bounds[closestBound];\n\n if (isAtTheSamePoint && bounds[recent] === bounds[closestBound]) {\n boundNeedMoving = recent;\n }\n\n if (isAtTheSamePoint && value !== bounds[closestBound + 1]) {\n boundNeedMoving = value < bounds[closestBound + 1] ? closestBound : closestBound + 1;\n }\n return boundNeedMoving;\n },\n getLowerBound: function getLowerBound() {\n return this.bounds[0];\n },\n getUpperBound: function getUpperBound() {\n var bounds = this.bounds;\n\n return bounds[bounds.length - 1];\n },\n\n /**\n * Returns an array of possible slider points, taking into account both\n * `marks` and `step`. The result is cached.\n */\n getPoints: function getPoints() {\n var marks = this.marks,\n step = this.step,\n min = this.min,\n max = this.max;\n\n var cache = this._getPointsCache;\n if (!cache || cache.marks !== marks || cache.step !== step) {\n var pointsObject = _extends({}, marks);\n if (step !== null) {\n for (var point = min; point <= max; point += step) {\n pointsObject[point] = point;\n }\n }\n var points = Object.keys(pointsObject).map(parseFloat);\n points.sort(function (a, b) {\n return a - b;\n });\n this._getPointsCache = { marks: marks, step: step, points: points };\n }\n return this._getPointsCache.points;\n },\n moveTo: function moveTo(value, isFromKeyboardEvent) {\n var _this3 = this;\n\n var nextBounds = [].concat(_toConsumableArray(this.bounds));\n var sHandle = this.sHandle,\n recent = this.recent;\n\n var handle = sHandle === null ? recent : sHandle;\n nextBounds[handle] = value;\n var nextHandle = handle;\n if (this.$props.pushable !== false) {\n this.pushSurroundingHandles(nextBounds, nextHandle);\n } else if (this.$props.allowCross) {\n nextBounds.sort(function (a, b) {\n return a - b;\n });\n nextHandle = nextBounds.indexOf(value);\n }\n this.onChange({\n recent: nextHandle,\n sHandle: nextHandle,\n bounds: nextBounds\n });\n if (isFromKeyboardEvent) {\n // known problem: because setState is async,\n // so trigger focus will invoke handler's onEnd and another handler's onStart too early,\n // cause onBeforeChange and onAfterChange receive wrong value.\n // here use setState callback to hack,but not elegant\n this.$emit('afterChange', nextBounds);\n this.setState({}, function () {\n _this3.handlesRefs[nextHandle].focus();\n });\n this.onEnd();\n }\n },\n pushSurroundingHandles: function pushSurroundingHandles(bounds, handle) {\n var value = bounds[handle];\n var threshold = this.pushable;\n\n threshold = Number(threshold);\n\n var direction = 0;\n if (bounds[handle + 1] - value < threshold) {\n direction = +1; // push to right\n }\n if (value - bounds[handle - 1] < threshold) {\n direction = -1; // push to left\n }\n\n if (direction === 0) {\n return;\n }\n\n var nextHandle = handle + direction;\n var diffToNext = direction * (bounds[nextHandle] - value);\n if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n // revert to original value if pushing is impossible\n bounds[handle] = bounds[nextHandle] - direction * threshold;\n }\n },\n pushHandle: function pushHandle(bounds, handle, direction, amount) {\n var originalValue = bounds[handle];\n var currentValue = bounds[handle];\n while (direction * (currentValue - originalValue) < amount) {\n if (!this.pushHandleOnePoint(bounds, handle, direction)) {\n // can't push handle enough to create the needed `amount` gap, so we\n // revert its position to the original value\n bounds[handle] = originalValue;\n return false;\n }\n currentValue = bounds[handle];\n }\n // the handle was pushed enough to create the needed `amount` gap\n return true;\n },\n pushHandleOnePoint: function pushHandleOnePoint(bounds, handle, direction) {\n var points = this.getPoints();\n var pointIndex = points.indexOf(bounds[handle]);\n var nextPointIndex = pointIndex + direction;\n if (nextPointIndex >= points.length || nextPointIndex < 0) {\n // reached the minimum or maximum available point, can't push anymore\n return false;\n }\n var nextHandle = handle + direction;\n var nextValue = points[nextPointIndex];\n var threshold = this.pushable;\n\n var diffToNext = direction * (bounds[nextHandle] - nextValue);\n if (!this.pushHandle(bounds, nextHandle, direction, threshold - diffToNext)) {\n // couldn't push next handle, so we won't push this one either\n return false;\n }\n // push the handle\n bounds[handle] = nextValue;\n return true;\n },\n trimAlignValue: function trimAlignValue(value) {\n var sHandle = this.sHandle,\n bounds = this.bounds;\n\n return _trimAlignValue({\n value: value,\n handle: sHandle,\n bounds: bounds,\n props: this.$props\n });\n },\n ensureValueNotConflict: function ensureValueNotConflict(handle, val, _ref2) {\n var allowCross = _ref2.allowCross,\n thershold = _ref2.pushable;\n\n var state = this.$data || {};\n var bounds = state.bounds;\n\n handle = handle === undefined ? state.sHandle : handle;\n thershold = Number(thershold);\n /* eslint-disable eqeqeq */\n if (!allowCross && handle != null && bounds !== undefined) {\n if (handle > 0 && val <= bounds[handle - 1] + thershold) {\n return bounds[handle - 1] + thershold;\n }\n if (handle < bounds.length - 1 && val >= bounds[handle + 1] - thershold) {\n return bounds[handle + 1] - thershold;\n }\n }\n /* eslint-enable eqeqeq */\n return val;\n },\n getTrack: function getTrack(_ref3) {\n var bounds = _ref3.bounds,\n prefixCls = _ref3.prefixCls,\n reverse = _ref3.reverse,\n vertical = _ref3.vertical,\n included = _ref3.included,\n offsets = _ref3.offsets,\n trackStyle = _ref3.trackStyle;\n var h = this.$createElement;\n\n return bounds.slice(0, -1).map(function (_, index) {\n var _classNames;\n\n var i = index + 1;\n var trackClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-track', true), _defineProperty(_classNames, prefixCls + '-track-' + i, true), _classNames));\n return h(Track, {\n 'class': trackClassName,\n attrs: { vertical: vertical,\n reverse: reverse,\n included: included,\n offset: offsets[i - 1],\n length: offsets[i] - offsets[i - 1]\n },\n style: trackStyle[index],\n key: i\n });\n });\n },\n renderSlider: function renderSlider() {\n var _this4 = this;\n\n var sHandle = this.sHandle,\n bounds = this.bounds,\n prefixCls = this.prefixCls,\n vertical = this.vertical,\n included = this.included,\n disabled = this.disabled,\n min = this.min,\n max = this.max,\n reverse = this.reverse,\n handle = this.handle,\n defaultHandle = this.defaultHandle,\n trackStyle = this.trackStyle,\n handleStyle = this.handleStyle,\n tabIndex = this.tabIndex;\n\n var handleGenerator = handle || defaultHandle;\n var offsets = bounds.map(function (v) {\n return _this4.calcOffset(v);\n });\n\n var handleClassName = prefixCls + '-handle';\n var handles = bounds.map(function (v, i) {\n var _classNames2;\n\n var _tabIndex = tabIndex[i] || 0;\n if (disabled || tabIndex[i] === null) {\n _tabIndex = null;\n }\n return handleGenerator({\n className: classNames((_classNames2 = {}, _defineProperty(_classNames2, handleClassName, true), _defineProperty(_classNames2, handleClassName + '-' + (i + 1), true), _classNames2)),\n prefixCls: prefixCls,\n vertical: vertical,\n offset: offsets[i],\n value: v,\n dragging: sHandle === i,\n index: i,\n tabIndex: _tabIndex,\n min: min,\n max: max,\n reverse: reverse,\n disabled: disabled,\n style: handleStyle[i],\n directives: [{\n name: 'ant-ref',\n value: function value(h) {\n return _this4.saveHandle(i, h);\n }\n }],\n on: {\n focus: _this4.onFocus,\n blur: _this4.onBlur\n }\n });\n });\n\n return {\n tracks: this.getTrack({\n bounds: bounds,\n prefixCls: prefixCls,\n reverse: reverse,\n vertical: vertical,\n included: included,\n offsets: offsets,\n trackStyle: trackStyle\n }),\n handles: handles\n };\n }\n }\n};\n\nexport default createSlider(Range);","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getOptionProps, getListeners } from '../_util/props-util';\nimport VcSlider from '../vc-slider/src/Slider';\nimport VcRange from '../vc-slider/src/Range';\nimport VcHandle from '../vc-slider/src/Handle';\nimport Tooltip from '../tooltip';\nimport Base from '../base';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport abstractTooltipProps from '../tooltip/abstractTooltipProps';\n\n// export interface SliderMarks {\n// [key]: React.ReactNode | {\n// style: React.CSSProperties,\n// label: React.ReactNode,\n// };\n// }\n// const SliderMarks = PropTypes.shape({\n// style: PropTypes.object,\n// label: PropTypes.any,\n// }).loose\nvar tooltipProps = abstractTooltipProps();\nexport var SliderProps = function SliderProps() {\n return {\n prefixCls: PropTypes.string,\n tooltipPrefixCls: PropTypes.string,\n range: PropTypes.bool,\n reverse: PropTypes.bool,\n min: PropTypes.number,\n max: PropTypes.number,\n step: PropTypes.oneOfType([PropTypes.number, PropTypes.any]),\n marks: PropTypes.object,\n dots: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.arrayOf(PropTypes.number)]),\n included: PropTypes.bool,\n disabled: PropTypes.bool,\n vertical: PropTypes.bool,\n tipFormatter: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n tooltipVisible: PropTypes.bool,\n tooltipPlacement: tooltipProps.placement,\n getTooltipPopupContainer: PropTypes.func\n };\n};\n\nvar Slider = {\n name: 'ASlider',\n model: {\n prop: 'value',\n event: 'change'\n },\n mixins: [BaseMixin],\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n props: _extends({}, SliderProps(), {\n tipFormatter: PropTypes.oneOfType([PropTypes.func, PropTypes.object]).def(function (value) {\n return value.toString();\n })\n }),\n data: function data() {\n return {\n visibles: {}\n };\n },\n\n methods: {\n toggleTooltipVisible: function toggleTooltipVisible(index, visible) {\n this.setState(function (_ref) {\n var visibles = _ref.visibles;\n return {\n visibles: _extends({}, visibles, _defineProperty({}, index, visible))\n };\n });\n },\n handleWithTooltip: function handleWithTooltip(tooltipPrefixCls, prefixCls, _ref2) {\n var _this = this;\n\n var value = _ref2.value,\n dragging = _ref2.dragging,\n index = _ref2.index,\n directives = _ref2.directives,\n on = _ref2.on,\n restProps = _objectWithoutProperties(_ref2, ['value', 'dragging', 'index', 'directives', 'on']);\n\n var h = this.$createElement;\n var _$props = this.$props,\n tipFormatter = _$props.tipFormatter,\n tooltipVisible = _$props.tooltipVisible,\n tooltipPlacement = _$props.tooltipPlacement,\n getTooltipPopupContainer = _$props.getTooltipPopupContainer;\n var visibles = this.visibles;\n\n var isTipFormatter = tipFormatter ? visibles[index] || dragging : false;\n var visible = tooltipVisible || tooltipVisible === undefined && isTipFormatter;\n var tooltipProps = {\n props: {\n prefixCls: tooltipPrefixCls,\n title: tipFormatter ? tipFormatter(value) : '',\n visible: visible,\n placement: tooltipPlacement || 'top',\n transitionName: 'zoom-down',\n overlayClassName: prefixCls + '-tooltip',\n getPopupContainer: getTooltipPopupContainer || function () {\n return document.body;\n }\n },\n key: index\n };\n var handleProps = {\n props: _extends({\n value: value\n }, restProps),\n directives: directives,\n on: _extends({}, on, {\n mouseenter: function mouseenter() {\n return _this.toggleTooltipVisible(index, true);\n },\n mouseleave: function mouseleave() {\n return _this.toggleTooltipVisible(index, false);\n }\n })\n };\n return h(\n Tooltip,\n tooltipProps,\n [h(VcHandle, handleProps)]\n );\n },\n focus: function focus() {\n this.$refs.sliderRef.focus();\n },\n blur: function blur() {\n this.$refs.sliderRef.blur();\n }\n },\n render: function render() {\n var _this2 = this;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n range = _getOptionProps.range,\n customizePrefixCls = _getOptionProps.prefixCls,\n customizeTooltipPrefixCls = _getOptionProps.tooltipPrefixCls,\n restProps = _objectWithoutProperties(_getOptionProps, ['range', 'prefixCls', 'tooltipPrefixCls']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('slider', customizePrefixCls);\n var tooltipPrefixCls = getPrefixCls('tooltip', customizeTooltipPrefixCls);\n var listeners = getListeners(this);\n if (range) {\n var vcRangeProps = {\n props: _extends({}, restProps, {\n prefixCls: prefixCls,\n tooltipPrefixCls: tooltipPrefixCls,\n handle: function handle(info) {\n return _this2.handleWithTooltip(tooltipPrefixCls, prefixCls, info);\n }\n }),\n ref: 'sliderRef',\n on: listeners\n };\n return h(VcRange, vcRangeProps);\n }\n var vcSliderProps = {\n props: _extends({}, restProps, {\n prefixCls: prefixCls,\n tooltipPrefixCls: tooltipPrefixCls,\n handle: function handle(info) {\n return _this2.handleWithTooltip(tooltipPrefixCls, prefixCls, info);\n }\n }),\n ref: 'sliderRef',\n on: listeners\n };\n return h(VcSlider, vcSliderProps);\n }\n};\n\n/* istanbul ignore next */\nSlider.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Slider.name, Slider);\n};\n\nexport default Slider;","import padEnd from 'lodash/padEnd';\n\nexport default {\n name: 'AStatisticNumber',\n functional: true,\n render: function render(h, context) {\n var _context$props = context.props,\n value = _context$props.value,\n formatter = _context$props.formatter,\n precision = _context$props.precision,\n decimalSeparator = _context$props.decimalSeparator,\n _context$props$groupS = _context$props.groupSeparator,\n groupSeparator = _context$props$groupS === undefined ? '' : _context$props$groupS,\n prefixCls = _context$props.prefixCls;\n\n var valueNode = void 0;\n\n if (typeof formatter === 'function') {\n // Customize formatter\n valueNode = formatter({ value: value, h: h });\n } else {\n // Internal formatter\n var val = String(value);\n var cells = val.match(/^(-?)(\\d*)(\\.(\\d+))?$/);\n // Process if illegal number\n if (!cells) {\n valueNode = val;\n } else {\n var negative = cells[1];\n var int = cells[2] || '0';\n var decimal = cells[4] || '';\n\n int = int.replace(/\\B(?=(\\d{3})+(?!\\d))/g, groupSeparator);\n if (typeof precision === 'number') {\n decimal = padEnd(decimal, precision, '0').slice(0, precision);\n }\n\n if (decimal) {\n decimal = '' + decimalSeparator + decimal;\n }\n\n valueNode = [h(\n 'span',\n { key: 'int', 'class': prefixCls + '-content-value-int' },\n [negative, int]\n ), decimal && h(\n 'span',\n { key: 'decimal', 'class': prefixCls + '-content-value-decimal' },\n [decimal]\n )];\n }\n }\n\n return h(\n 'span',\n { 'class': prefixCls + '-content-value' },\n [valueNode]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { getComponentFromProp, initDefaultProps } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport StatisticNumber from './Number';\n\nexport var StatisticProps = {\n prefixCls: PropTypes.string,\n decimalSeparator: PropTypes.string,\n groupSeparator: PropTypes.string,\n format: PropTypes.string,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.object]),\n valueStyle: PropTypes.any,\n valueRender: PropTypes.any,\n formatter: PropTypes.any,\n precision: PropTypes.number,\n prefix: PropTypes.any,\n suffix: PropTypes.any,\n title: PropTypes.any\n};\n\nexport default {\n name: 'AStatistic',\n props: initDefaultProps(StatisticProps, {\n decimalSeparator: '.',\n groupSeparator: ','\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n\n render: function render() {\n var h = arguments[0];\n var _$props = this.$props,\n customizePrefixCls = _$props.prefixCls,\n _$props$value = _$props.value,\n value = _$props$value === undefined ? 0 : _$props$value,\n valueStyle = _$props.valueStyle,\n valueRender = _$props.valueRender;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('statistic', customizePrefixCls);\n\n var title = getComponentFromProp(this, 'title');\n var prefix = getComponentFromProp(this, 'prefix');\n var suffix = getComponentFromProp(this, 'suffix');\n var formatter = getComponentFromProp(this, 'formatter', {}, false);\n var valueNode = h(StatisticNumber, { props: _extends({}, this.$props, { prefixCls: prefixCls, value: value, formatter: formatter }) });\n if (valueRender) {\n valueNode = valueRender(valueNode);\n }\n\n return h(\n 'div',\n { 'class': prefixCls },\n [title && h(\n 'div',\n { 'class': prefixCls + '-title' },\n [title]\n ), h(\n 'div',\n { style: valueStyle, 'class': prefixCls + '-content' },\n [prefix && h(\n 'span',\n { 'class': prefixCls + '-content-prefix' },\n [prefix]\n ), valueNode, suffix && h(\n 'span',\n { 'class': prefixCls + '-content-suffix' },\n [suffix]\n )]\n )]\n );\n }\n};","import _slicedToArray from 'babel-runtime/helpers/slicedToArray';\nimport * as moment from 'moment';\nimport padStart from 'lodash/padStart';\n\nimport interopDefault from '../_util/interopDefault';\n\n// Countdown\nvar timeUnits = [['Y', 1000 * 60 * 60 * 24 * 365], // years\n['M', 1000 * 60 * 60 * 24 * 30], // months\n['D', 1000 * 60 * 60 * 24], // days\n['H', 1000 * 60 * 60], // hours\n['m', 1000 * 60], // minutes\n['s', 1000], // seconds\n['S', 1]];\n\nexport function formatTimeStr(duration, format) {\n var leftDuration = duration;\n\n var escapeRegex = /\\[[^\\]]*\\]/g;\n var keepList = (format.match(escapeRegex) || []).map(function (str) {\n return str.slice(1, -1);\n });\n var templateText = format.replace(escapeRegex, '[]');\n\n var replacedText = timeUnits.reduce(function (current, _ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n name = _ref2[0],\n unit = _ref2[1];\n\n if (current.indexOf(name) !== -1) {\n var value = Math.floor(leftDuration / unit);\n leftDuration -= value * unit;\n return current.replace(new RegExp(name + '+', 'g'), function (match) {\n var len = match.length;\n return padStart(value.toString(), len, '0');\n });\n }\n return current;\n }, templateText);\n\n var index = 0;\n return replacedText.replace(escapeRegex, function () {\n var match = keepList[index];\n index += 1;\n return match;\n });\n}\n\nexport function formatCountdown(value, config) {\n var _config$format = config.format,\n format = _config$format === undefined ? '' : _config$format;\n\n var target = interopDefault(moment)(value).valueOf();\n var current = interopDefault(moment)().valueOf();\n var diff = Math.max(target - current, 0);\n return formatTimeStr(diff, format);\n}","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport * as moment from 'moment';\nimport interopDefault from '../_util/interopDefault';\nimport { initDefaultProps, getListeners } from '../_util/props-util';\nimport Statistic, { StatisticProps } from './Statistic';\nimport { formatCountdown as _formatCountdown } from './utils';\n\nvar REFRESH_INTERVAL = 1000 / 30;\n\nfunction getTime(value) {\n return interopDefault(moment)(value).valueOf();\n}\n\nexport default {\n name: 'AStatisticCountdown',\n props: initDefaultProps(StatisticProps, {\n format: 'HH:mm:ss'\n }),\n\n created: function created() {\n this.countdownId = undefined;\n },\n mounted: function mounted() {\n this.syncTimer();\n },\n updated: function updated() {\n this.syncTimer();\n },\n beforeDestroy: function beforeDestroy() {\n this.stopTimer();\n },\n\n\n methods: {\n syncTimer: function syncTimer() {\n var value = this.$props.value;\n\n var timestamp = getTime(value);\n if (timestamp >= Date.now()) {\n this.startTimer();\n } else {\n this.stopTimer();\n }\n },\n startTimer: function startTimer() {\n var _this = this;\n\n if (this.countdownId) return;\n this.countdownId = window.setInterval(function () {\n _this.$refs.statistic.$forceUpdate();\n _this.syncTimer();\n }, REFRESH_INTERVAL);\n },\n stopTimer: function stopTimer() {\n var value = this.$props.value;\n\n if (this.countdownId) {\n clearInterval(this.countdownId);\n this.countdownId = undefined;\n\n var timestamp = getTime(value);\n if (timestamp < Date.now()) {\n this.$emit('finish');\n }\n }\n },\n formatCountdown: function formatCountdown(_ref) {\n var value = _ref.value,\n config = _ref.config;\n var format = this.$props.format;\n\n return _formatCountdown(value, _extends({}, config, { format: format }));\n },\n\n\n valueRenderHtml: function valueRenderHtml(node) {\n return node;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n return h(Statistic, _mergeJSXProps([{\n ref: 'statistic'\n }, {\n props: _extends({}, this.$props, {\n valueRender: this.valueRenderHtml,\n formatter: this.formatCountdown\n }),\n on: getListeners(this)\n }]));\n }\n};","import Statistic from './Statistic';\nimport Countdown from './Countdown';\nimport Base from '../base';\n\nStatistic.Countdown = Countdown;\n/* istanbul ignore next */\nStatistic.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Statistic.name, Statistic);\n Vue.component(Statistic.Countdown.name, Statistic.Countdown);\n};\n\nexport default Statistic;","export default function isFlexSupported() {\n if (typeof window !== 'undefined' && window.document && window.document.documentElement) {\n var documentElement = window.document.documentElement;\n\n return 'flex' in documentElement.style || 'webkitFlex' in documentElement.style || 'Flex' in documentElement.style || 'msFlex' in documentElement.style;\n }\n return false;\n}","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport debounce from 'lodash/debounce';\nimport isFlexSupported from '../_util/isFlexSupported';\nimport { filterEmpty, getEvents, getPropsData, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\n\nexport default {\n name: 'Steps',\n mixins: [BaseMixin],\n props: {\n type: PropTypes.string.def('default'),\n prefixCls: PropTypes.string.def('rc-steps'),\n iconPrefix: PropTypes.string.def('rc'),\n direction: PropTypes.string.def('horizontal'),\n labelPlacement: PropTypes.string.def('horizontal'),\n status: PropTypes.string.def('process'),\n size: PropTypes.string.def(''),\n progressDot: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n initial: PropTypes.number.def(0),\n current: PropTypes.number.def(0),\n icons: PropTypes.shape({\n finish: PropTypes.any,\n error: PropTypes.any\n }).loose\n },\n data: function data() {\n this.calcStepOffsetWidth = debounce(this.calcStepOffsetWidth, 150);\n return {\n flexSupported: true,\n lastStepOffsetWidth: 0\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.calcStepOffsetWidth();\n if (!isFlexSupported()) {\n _this.setState({\n flexSupported: false\n });\n }\n });\n },\n updated: function updated() {\n var _this2 = this;\n\n this.$nextTick(function () {\n _this2.calcStepOffsetWidth();\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.calcTimeout) {\n clearTimeout(this.calcTimeout);\n }\n if (this.calcStepOffsetWidth && this.calcStepOffsetWidth.cancel) {\n this.calcStepOffsetWidth.cancel();\n }\n },\n\n methods: {\n onStepClick: function onStepClick(next) {\n var current = this.$props.current;\n\n if (current !== next) {\n this.$emit('change', next);\n }\n },\n calcStepOffsetWidth: function calcStepOffsetWidth() {\n var _this3 = this;\n\n if (isFlexSupported()) {\n return;\n }\n var lastStepOffsetWidth = this.$data.lastStepOffsetWidth;\n // Just for IE9\n\n var domNode = this.$refs.vcStepsRef;\n if (domNode.children.length > 0) {\n if (this.calcTimeout) {\n clearTimeout(this.calcTimeout);\n }\n this.calcTimeout = setTimeout(function () {\n // +1 for fit edge bug of digit width, like 35.4px\n var offsetWidth = (domNode.lastChild.offsetWidth || 0) + 1;\n // Reduce shake bug\n if (lastStepOffsetWidth === offsetWidth || Math.abs(lastStepOffsetWidth - offsetWidth) <= 3) {\n return;\n }\n _this3.setState({ lastStepOffsetWidth: offsetWidth });\n });\n }\n }\n },\n render: function render() {\n var _classString,\n _this4 = this;\n\n var h = arguments[0];\n var prefixCls = this.prefixCls,\n direction = this.direction,\n type = this.type,\n labelPlacement = this.labelPlacement,\n iconPrefix = this.iconPrefix,\n status = this.status,\n size = this.size,\n current = this.current,\n $scopedSlots = this.$scopedSlots,\n initial = this.initial,\n icons = this.icons;\n\n var isNav = type === 'navigation';\n var progressDot = this.progressDot;\n if (progressDot === undefined) {\n progressDot = $scopedSlots.progressDot;\n }\n var lastStepOffsetWidth = this.lastStepOffsetWidth,\n flexSupported = this.flexSupported;\n\n var filteredChildren = filterEmpty(this.$slots['default']);\n var lastIndex = filteredChildren.length - 1;\n var adjustedlabelPlacement = progressDot ? 'vertical' : labelPlacement;\n var classString = (_classString = {}, _defineProperty(_classString, prefixCls, true), _defineProperty(_classString, prefixCls + '-' + direction, true), _defineProperty(_classString, prefixCls + '-' + size, size), _defineProperty(_classString, prefixCls + '-label-' + adjustedlabelPlacement, direction === 'horizontal'), _defineProperty(_classString, prefixCls + '-dot', !!progressDot), _defineProperty(_classString, prefixCls + '-navigation', isNav), _defineProperty(_classString, prefixCls + '-flex-not-supported', !flexSupported), _classString);\n var listeners = getListeners(this);\n var stepsProps = {\n 'class': classString,\n ref: 'vcStepsRef',\n on: listeners\n };\n return h(\n 'div',\n stepsProps,\n [filteredChildren.map(function (child, index) {\n var childProps = getPropsData(child);\n var stepNumber = initial + index;\n var stepProps = {\n props: _extends({\n stepNumber: '' + (stepNumber + 1),\n stepIndex: stepNumber,\n prefixCls: prefixCls,\n iconPrefix: iconPrefix,\n progressDot: _this4.progressDot,\n icons: icons\n }, childProps),\n on: getEvents(child),\n scopedSlots: $scopedSlots\n };\n if (listeners.change) {\n stepProps.on.stepClick = _this4.onStepClick;\n }\n if (!flexSupported && direction !== 'vertical') {\n if (isNav) {\n stepProps.props.itemWidth = 100 / (lastIndex + 1) + '%';\n stepProps.props.adjustMarginRight = 0;\n } else if (index !== lastIndex) {\n stepProps.props.itemWidth = 100 / lastIndex + '%';\n stepProps.props.adjustMarginRight = -Math.round(lastStepOffsetWidth / lastIndex + 1) + 'px';\n }\n }\n // fix tail color\n if (status === 'error' && index === current - 1) {\n stepProps['class'] = prefixCls + '-next-error';\n }\n if (!childProps.status) {\n if (stepNumber === current) {\n stepProps.props.status = status;\n } else if (stepNumber < current) {\n stepProps.props.status = 'finish';\n } else {\n stepProps.props.status = 'wait';\n }\n }\n stepProps.props.active = stepNumber === current;\n return cloneElement(child, stepProps);\n })]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';\n\nfunction isString(str) {\n return typeof str === 'string';\n}\nfunction noop() {}\nexport default {\n name: 'Step',\n props: {\n prefixCls: PropTypes.string,\n wrapperStyle: PropTypes.object,\n itemWidth: PropTypes.string,\n active: PropTypes.bool,\n disabled: PropTypes.bool,\n status: PropTypes.string,\n iconPrefix: PropTypes.string,\n icon: PropTypes.any,\n adjustMarginRight: PropTypes.string,\n stepNumber: PropTypes.string,\n stepIndex: PropTypes.number,\n description: PropTypes.any,\n title: PropTypes.any,\n subTitle: PropTypes.any,\n progressDot: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n tailContent: PropTypes.any,\n icons: PropTypes.shape({\n finish: PropTypes.any,\n error: PropTypes.any\n }).loose\n },\n methods: {\n onClick: function onClick() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this.$emit.apply(this, ['click'].concat(_toConsumableArray(args)));\n this.$emit('stepClick', this.stepIndex);\n },\n renderIconNode: function renderIconNode() {\n var _iconClassName;\n\n var h = this.$createElement;\n\n var _getOptionProps = getOptionProps(this),\n prefixCls = _getOptionProps.prefixCls,\n stepNumber = _getOptionProps.stepNumber,\n status = _getOptionProps.status,\n iconPrefix = _getOptionProps.iconPrefix,\n icons = _getOptionProps.icons;\n\n var progressDot = this.progressDot;\n if (progressDot === undefined) {\n progressDot = this.$scopedSlots.progressDot;\n }\n var icon = getComponentFromProp(this, 'icon');\n var title = getComponentFromProp(this, 'title');\n var description = getComponentFromProp(this, 'description');\n var iconNode = void 0;\n var iconClassName = (_iconClassName = {}, _defineProperty(_iconClassName, prefixCls + '-icon', true), _defineProperty(_iconClassName, iconPrefix + 'icon', true), _defineProperty(_iconClassName, iconPrefix + 'icon-' + icon, icon && isString(icon)), _defineProperty(_iconClassName, iconPrefix + 'icon-check', !icon && status === 'finish' && icons && !icons.finish), _defineProperty(_iconClassName, iconPrefix + 'icon-close', !icon && status === 'error' && icons && !icons.error), _iconClassName);\n var iconDot = h('span', { 'class': prefixCls + '-icon-dot' });\n // `progressDot` enjoy the highest priority\n if (progressDot) {\n if (typeof progressDot === 'function') {\n iconNode = h(\n 'span',\n { 'class': prefixCls + '-icon' },\n [progressDot({ index: stepNumber - 1, status: status, title: title, description: description, prefixCls: prefixCls })]\n );\n } else {\n iconNode = h(\n 'span',\n { 'class': prefixCls + '-icon' },\n [iconDot]\n );\n }\n } else if (icon && !isString(icon)) {\n iconNode = h(\n 'span',\n { 'class': prefixCls + '-icon' },\n [icon]\n );\n } else if (icons && icons.finish && status === 'finish') {\n iconNode = h(\n 'span',\n { 'class': prefixCls + '-icon' },\n [icons.finish]\n );\n } else if (icons && icons.error && status === 'error') {\n iconNode = h(\n 'span',\n { 'class': prefixCls + '-icon' },\n [icons.error]\n );\n } else if (icon || status === 'finish' || status === 'error') {\n iconNode = h('span', { 'class': iconClassName });\n } else {\n iconNode = h(\n 'span',\n { 'class': prefixCls + '-icon' },\n [stepNumber]\n );\n }\n return iconNode;\n }\n },\n render: function render() {\n var _classString;\n\n var h = arguments[0];\n\n var _getOptionProps2 = getOptionProps(this),\n prefixCls = _getOptionProps2.prefixCls,\n itemWidth = _getOptionProps2.itemWidth,\n active = _getOptionProps2.active,\n _getOptionProps2$stat = _getOptionProps2.status,\n status = _getOptionProps2$stat === undefined ? 'wait' : _getOptionProps2$stat,\n tailContent = _getOptionProps2.tailContent,\n adjustMarginRight = _getOptionProps2.adjustMarginRight,\n disabled = _getOptionProps2.disabled;\n\n var title = getComponentFromProp(this, 'title');\n var subTitle = getComponentFromProp(this, 'subTitle');\n var description = getComponentFromProp(this, 'description');\n\n var classString = (_classString = {}, _defineProperty(_classString, prefixCls + '-item', true), _defineProperty(_classString, prefixCls + '-item-' + status, true), _defineProperty(_classString, prefixCls + '-item-custom', getComponentFromProp(this, 'icon')), _defineProperty(_classString, prefixCls + '-item-active', active), _defineProperty(_classString, prefixCls + '-item-disabled', disabled === true), _classString);\n var stepProps = {\n 'class': classString,\n on: getListeners(this)\n };\n var stepItemStyle = {};\n if (itemWidth) {\n stepItemStyle.width = itemWidth;\n }\n if (adjustMarginRight) {\n stepItemStyle.marginRight = adjustMarginRight;\n }\n var listeners = getListeners(this);\n var accessibilityProps = {\n attrs: {},\n on: {\n click: listeners.click || noop\n }\n };\n if (listeners.stepClick && !disabled) {\n accessibilityProps.attrs.role = 'button';\n accessibilityProps.attrs.tabIndex = 0;\n accessibilityProps.on.click = this.onClick;\n }\n return h(\n 'div',\n _mergeJSXProps([stepProps, { style: stepItemStyle }]),\n [h(\n 'div',\n _mergeJSXProps([accessibilityProps, { 'class': prefixCls + '-item-container' }]),\n [h(\n 'div',\n { 'class': prefixCls + '-item-tail' },\n [tailContent]\n ), h(\n 'div',\n { 'class': prefixCls + '-item-icon' },\n [this.renderIconNode()]\n ), h(\n 'div',\n { 'class': prefixCls + '-item-content' },\n [h(\n 'div',\n { 'class': prefixCls + '-item-title' },\n [title, subTitle && h(\n 'div',\n {\n attrs: { title: subTitle },\n 'class': prefixCls + '-item-subtitle' },\n [subTitle]\n )]\n ), description && h(\n 'div',\n { 'class': prefixCls + '-item-description' },\n [description]\n )]\n )]\n )]\n );\n }\n};","// base rc-steps 3.5.0\nimport Steps from './Steps';\nimport Step from './Step';\n\nSteps.Step = Step;\n\nexport { Step };\nexport default Steps;","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps, getOptionProps, getListeners } from '../_util/props-util';\nimport VcSteps from '../vc-steps';\nimport Icon from '../icon';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nvar getStepsProps = function getStepsProps() {\n var defaultProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var props = {\n prefixCls: PropTypes.string,\n iconPrefix: PropTypes.string,\n current: PropTypes.number,\n initial: PropTypes.number,\n labelPlacement: PropTypes.oneOf(['horizontal', 'vertical']).def('horizontal'),\n status: PropTypes.oneOf(['wait', 'process', 'finish', 'error']),\n size: PropTypes.oneOf(['default', 'small']),\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n progressDot: PropTypes.oneOfType([PropTypes.bool, PropTypes.func]),\n type: PropTypes.oneOf(['default', 'navigation'])\n };\n return initDefaultProps(props, defaultProps);\n};\n\nvar Steps = {\n name: 'ASteps',\n props: getStepsProps({\n current: 0\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n model: {\n prop: 'current',\n event: 'change'\n },\n Step: _extends({}, VcSteps.Step, { name: 'AStep' }),\n render: function render() {\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var customizePrefixCls = props.prefixCls,\n customizeIconPrefixCls = props.iconPrefix;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('steps', customizePrefixCls);\n var iconPrefix = getPrefixCls('', customizeIconPrefixCls);\n\n var icons = {\n finish: h(Icon, {\n attrs: { type: 'check' },\n 'class': prefixCls + '-finish-icon' }),\n error: h(Icon, {\n attrs: { type: 'close' },\n 'class': prefixCls + '-error-icon' })\n };\n var stepsProps = {\n props: _extends({\n icons: icons,\n iconPrefix: iconPrefix,\n prefixCls: prefixCls\n }, props),\n on: getListeners(this),\n scopedSlots: this.$scopedSlots\n };\n return h(\n VcSteps,\n stepsProps,\n [this.$slots['default']]\n );\n }\n};\n\n/* istanbul ignore next */\nSteps.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Steps.name, Steps);\n Vue.component(Steps.Step.name, Steps.Step);\n};\n\nexport default Steps;","import PropTypes from '../_util/vue-types';\n\nexport var switchPropTypes = {\n prefixCls: PropTypes.string,\n disabled: PropTypes.bool.def(false),\n checkedChildren: PropTypes.any,\n unCheckedChildren: PropTypes.any,\n // onChange: PropTypes.func,\n // onMouseUp: PropTypes.func,\n // onClick: PropTypes.func,\n tabIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n checked: PropTypes.bool.def(false),\n defaultChecked: PropTypes.bool.def(false),\n autoFocus: PropTypes.bool.def(false),\n loadingIcon: PropTypes.any\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport { switchPropTypes } from './PropTypes';\nimport BaseMixin from '../_util/BaseMixin';\nimport { hasProp, getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';\n\n// function noop () {\n// }\nexport default {\n name: 'VcSwitch',\n mixins: [BaseMixin],\n model: {\n prop: 'checked',\n event: 'change'\n },\n props: _extends({}, switchPropTypes, {\n prefixCls: switchPropTypes.prefixCls.def('rc-switch')\n // onChange: switchPropTypes.onChange.def(noop),\n // onClick: switchPropTypes.onClick.def(noop),\n }),\n data: function data() {\n var checked = false;\n if (hasProp(this, 'checked')) {\n checked = !!this.checked;\n } else {\n checked = !!this.defaultChecked;\n }\n return {\n stateChecked: checked\n };\n },\n\n watch: {\n checked: function checked(val) {\n this.stateChecked = val;\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n var autoFocus = _this.autoFocus,\n disabled = _this.disabled;\n\n if (autoFocus && !disabled) {\n _this.focus();\n }\n });\n },\n\n methods: {\n setChecked: function setChecked(checked, e) {\n if (this.disabled) {\n return;\n }\n if (!hasProp(this, 'checked')) {\n this.stateChecked = checked;\n }\n this.$emit('change', checked, e);\n },\n handleClick: function handleClick(e) {\n var checked = !this.stateChecked;\n this.setChecked(checked, e);\n this.$emit('click', checked, e);\n },\n handleKeyDown: function handleKeyDown(e) {\n if (e.keyCode === 37) {\n // Left\n this.setChecked(false, e);\n } else if (e.keyCode === 39) {\n // Right\n this.setChecked(true, e);\n }\n },\n handleMouseUp: function handleMouseUp(e) {\n if (this.$refs.refSwitchNode) {\n this.$refs.refSwitchNode.blur();\n }\n this.$emit('mouseup', e);\n },\n focus: function focus() {\n this.$refs.refSwitchNode.focus();\n },\n blur: function blur() {\n this.$refs.refSwitchNode.blur();\n }\n },\n render: function render() {\n var _switchClassName;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n prefixCls = _getOptionProps.prefixCls,\n disabled = _getOptionProps.disabled,\n loadingIcon = _getOptionProps.loadingIcon,\n tabIndex = _getOptionProps.tabIndex,\n restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'disabled', 'loadingIcon', 'tabIndex']);\n\n var checked = this.stateChecked;\n var switchClassName = (_switchClassName = {}, _defineProperty(_switchClassName, prefixCls, true), _defineProperty(_switchClassName, prefixCls + '-checked', checked), _defineProperty(_switchClassName, prefixCls + '-disabled', disabled), _switchClassName);\n var spanProps = {\n props: _extends({}, restProps),\n on: _extends({}, getListeners(this), {\n keydown: this.handleKeyDown,\n click: this.handleClick,\n mouseup: this.handleMouseUp\n }),\n attrs: {\n type: 'button',\n role: 'switch',\n 'aria-checked': checked,\n disabled: disabled,\n tabIndex: tabIndex\n },\n 'class': switchClassName,\n ref: 'refSwitchNode'\n };\n return h(\n 'button',\n spanProps,\n [loadingIcon, h(\n 'span',\n { 'class': prefixCls + '-inner' },\n [checked ? getComponentFromProp(this, 'checkedChildren') : getComponentFromProp(this, 'unCheckedChildren')]\n )]\n );\n }\n};","// base rc-switch 1.9.0\nimport Switch from './Switch';\n\nexport default Switch;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport PropTypes from '../_util/vue-types';\nimport hasProp, { getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';\nimport VcSwitch from '../vc-switch';\nimport Wave from '../_util/wave';\nimport Icon from '../icon';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\nimport warning from '../_util/warning';\n\nvar Switch = {\n name: 'ASwitch',\n __ANT_SWITCH: true,\n model: {\n prop: 'checked',\n event: 'change'\n },\n props: {\n prefixCls: PropTypes.string,\n // size=default and size=large are the same\n size: PropTypes.oneOf(['small', 'default', 'large']),\n disabled: PropTypes.bool,\n checkedChildren: PropTypes.any,\n unCheckedChildren: PropTypes.any,\n tabIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n checked: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n autoFocus: PropTypes.bool,\n loading: PropTypes.bool\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n focus: function focus() {\n this.$refs.refSwitchNode.focus();\n },\n blur: function blur() {\n this.$refs.refSwitchNode.blur();\n }\n },\n created: function created() {\n warning(hasProp(this, 'checked') || !hasProp(this, 'value'), 'Switch', '`value` is not validate prop, do you mean `checked`?');\n },\n render: function render() {\n var _classes;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n size = _getOptionProps.size,\n loading = _getOptionProps.loading,\n disabled = _getOptionProps.disabled,\n restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'size', 'loading', 'disabled']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('switch', customizePrefixCls);\n\n var classes = (_classes = {}, _defineProperty(_classes, prefixCls + '-small', size === 'small'), _defineProperty(_classes, prefixCls + '-loading', loading), _classes);\n var loadingIcon = loading ? h(Icon, {\n attrs: { type: 'loading' },\n 'class': prefixCls + '-loading-icon' }) : null;\n var switchProps = {\n props: _extends({}, restProps, {\n prefixCls: prefixCls,\n loadingIcon: loadingIcon,\n checkedChildren: getComponentFromProp(this, 'checkedChildren'),\n unCheckedChildren: getComponentFromProp(this, 'unCheckedChildren'),\n disabled: disabled || loading\n }),\n on: getListeners(this),\n 'class': classes,\n ref: 'refSwitchNode'\n };\n return h(\n Wave,\n {\n attrs: { insertExtraNode: true }\n },\n [h(VcSwitch, switchProps)]\n );\n }\n};\n\n/* istanbul ignore next */\nSwitch.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Switch.name, Switch);\n};\n\nexport default Switch;","var scrollbarVerticalSize = void 0;\nvar scrollbarHorizontalSize = void 0;\n\n// Measure scrollbar width for padding body during modal show/hide\nvar scrollbarMeasure = {\n position: 'absolute',\n top: '-9999px',\n width: '50px',\n height: '50px'\n};\n\nexport var INTERNAL_COL_DEFINE = 'RC_TABLE_INTERNAL_COL_DEFINE';\n\nexport function measureScrollbar(_ref) {\n var _ref$direction = _ref.direction,\n direction = _ref$direction === undefined ? 'vertical' : _ref$direction,\n prefixCls = _ref.prefixCls;\n\n if (typeof document === 'undefined' || typeof window === 'undefined') {\n return 0;\n }\n var isVertical = direction === 'vertical';\n if (isVertical && scrollbarVerticalSize) {\n return scrollbarVerticalSize;\n }\n if (!isVertical && scrollbarHorizontalSize) {\n return scrollbarHorizontalSize;\n }\n var scrollDiv = document.createElement('div');\n Object.keys(scrollbarMeasure).forEach(function (scrollProp) {\n scrollDiv.style[scrollProp] = scrollbarMeasure[scrollProp];\n });\n // apply hide scrollbar className ahead\n scrollDiv.className = prefixCls + '-hide-scrollbar scroll-div-append-to-body';\n\n // Append related overflow style\n if (isVertical) {\n scrollDiv.style.overflowY = 'scroll';\n } else {\n scrollDiv.style.overflowX = 'scroll';\n }\n document.body.appendChild(scrollDiv);\n var size = 0;\n if (isVertical) {\n size = scrollDiv.offsetWidth - scrollDiv.clientWidth;\n scrollbarVerticalSize = size;\n } else {\n size = scrollDiv.offsetHeight - scrollDiv.clientHeight;\n scrollbarHorizontalSize = size;\n }\n\n document.body.removeChild(scrollDiv);\n return size;\n}\n\nexport function debounce(func, wait, immediate) {\n var timeout = void 0;\n function debounceFunc() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var context = this;\n // https://fb.me/react-event-pooling\n if (args[0] && args[0].persist) {\n args[0].persist();\n }\n var later = function later() {\n timeout = null;\n if (!immediate) {\n func.apply(context, args);\n }\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) {\n func.apply(context, args);\n }\n }\n debounceFunc.cancel = function cancel() {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n };\n return debounceFunc;\n}\n\nexport function remove(array, item) {\n var index = array.indexOf(item);\n var front = array.slice(0, index);\n var last = array.slice(index + 1, array.length);\n return front.concat(last);\n}","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _classCallCheck from 'babel-runtime/helpers/classCallCheck';\nimport _createClass from 'babel-runtime/helpers/createClass';\n\nvar ColumnManager = function () {\n function ColumnManager(columns) {\n _classCallCheck(this, ColumnManager);\n\n this.columns = columns;\n this._cached = {};\n }\n\n _createClass(ColumnManager, [{\n key: 'isAnyColumnsFixed',\n value: function isAnyColumnsFixed() {\n var _this = this;\n\n return this._cache('isAnyColumnsFixed', function () {\n return _this.columns.some(function (column) {\n return !!column.fixed;\n });\n });\n }\n }, {\n key: 'isAnyColumnsLeftFixed',\n value: function isAnyColumnsLeftFixed() {\n var _this2 = this;\n\n return this._cache('isAnyColumnsLeftFixed', function () {\n return _this2.columns.some(function (column) {\n return column.fixed === 'left' || column.fixed === true;\n });\n });\n }\n }, {\n key: 'isAnyColumnsRightFixed',\n value: function isAnyColumnsRightFixed() {\n var _this3 = this;\n\n return this._cache('isAnyColumnsRightFixed', function () {\n return _this3.columns.some(function (column) {\n return column.fixed === 'right';\n });\n });\n }\n }, {\n key: 'leftColumns',\n value: function leftColumns() {\n var _this4 = this;\n\n return this._cache('leftColumns', function () {\n return _this4.groupedColumns().filter(function (column) {\n return column.fixed === 'left' || column.fixed === true;\n });\n });\n }\n }, {\n key: 'rightColumns',\n value: function rightColumns() {\n var _this5 = this;\n\n return this._cache('rightColumns', function () {\n return _this5.groupedColumns().filter(function (column) {\n return column.fixed === 'right';\n });\n });\n }\n }, {\n key: 'leafColumns',\n value: function leafColumns() {\n var _this6 = this;\n\n return this._cache('leafColumns', function () {\n return _this6._leafColumns(_this6.columns);\n });\n }\n }, {\n key: 'leftLeafColumns',\n value: function leftLeafColumns() {\n var _this7 = this;\n\n return this._cache('leftLeafColumns', function () {\n return _this7._leafColumns(_this7.leftColumns());\n });\n }\n }, {\n key: 'rightLeafColumns',\n value: function rightLeafColumns() {\n var _this8 = this;\n\n return this._cache('rightLeafColumns', function () {\n return _this8._leafColumns(_this8.rightColumns());\n });\n }\n\n // add appropriate rowspan and colspan to column\n\n }, {\n key: 'groupedColumns',\n value: function groupedColumns() {\n var _this9 = this;\n\n return this._cache('groupedColumns', function () {\n var _groupColumns = function _groupColumns(columns) {\n var currentRow = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var parentColumn = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var rows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n\n // track how many rows we got\n rows[currentRow] = rows[currentRow] || [];\n var grouped = [];\n var setRowSpan = function setRowSpan(column) {\n var rowSpan = rows.length - currentRow;\n if (column && !column.children && // parent columns are supposed to be one row\n rowSpan > 1 && (!column.rowSpan || column.rowSpan < rowSpan)) {\n column.rowSpan = rowSpan;\n }\n };\n columns.forEach(function (column, index) {\n var newColumn = _extends({}, column);\n rows[currentRow].push(newColumn);\n parentColumn.colSpan = parentColumn.colSpan || 0;\n if (newColumn.children && newColumn.children.length > 0) {\n newColumn.children = _groupColumns(newColumn.children, currentRow + 1, newColumn, rows);\n parentColumn.colSpan += newColumn.colSpan;\n } else {\n parentColumn.colSpan += 1;\n }\n // update rowspan to all same row columns\n for (var i = 0; i < rows[currentRow].length - 1; i += 1) {\n setRowSpan(rows[currentRow][i]);\n }\n // last column, update rowspan immediately\n if (index + 1 === columns.length) {\n setRowSpan(newColumn);\n }\n grouped.push(newColumn);\n });\n return grouped;\n };\n return _groupColumns(_this9.columns);\n });\n }\n }, {\n key: 'reset',\n value: function reset(columns) {\n this.columns = columns;\n this._cached = {};\n }\n }, {\n key: '_cache',\n value: function _cache(name, fn) {\n if (name in this._cached) {\n return this._cached[name];\n }\n this._cached[name] = fn();\n return this._cached[name];\n }\n }, {\n key: '_leafColumns',\n value: function _leafColumns(columns) {\n var _this10 = this;\n\n var leafColumns = [];\n columns.forEach(function (column) {\n if (!column.children) {\n leafColumns.push(column);\n } else {\n leafColumns.push.apply(leafColumns, _toConsumableArray(_this10._leafColumns(column.children)));\n }\n });\n return leafColumns;\n }\n }]);\n\n return ColumnManager;\n}();\n\nexport default ColumnManager;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropTypes from '../../_util/vue-types';\nimport { INTERNAL_COL_DEFINE } from './utils';\n\nexport default {\n name: 'ColGroup',\n props: {\n fixed: PropTypes.string,\n columns: PropTypes.array\n },\n inject: {\n table: { 'default': function _default() {\n return {};\n } }\n },\n render: function render() {\n var h = arguments[0];\n var fixed = this.fixed,\n table = this.table;\n var prefixCls = table.prefixCls,\n expandIconAsCell = table.expandIconAsCell,\n columnManager = table.columnManager;\n\n\n var cols = [];\n\n if (expandIconAsCell && fixed !== 'right') {\n cols.push(h('col', { 'class': prefixCls + '-expand-icon-col', key: 'rc-table-expand-icon-col' }));\n }\n\n var leafColumns = void 0;\n\n if (fixed === 'left') {\n leafColumns = columnManager.leftLeafColumns();\n } else if (fixed === 'right') {\n leafColumns = columnManager.rightLeafColumns();\n } else {\n leafColumns = columnManager.leafColumns();\n }\n cols = cols.concat(leafColumns.map(function (_ref) {\n var key = _ref.key,\n dataIndex = _ref.dataIndex,\n width = _ref.width,\n additionalProps = _ref[INTERNAL_COL_DEFINE];\n\n var mergedKey = key !== undefined ? key : dataIndex;\n var w = typeof width === 'number' ? width + 'px' : width;\n return h('col', _mergeJSXProps([{ key: mergedKey, style: { width: w, minWidth: w } }, additionalProps]));\n }));\n return h('colgroup', [cols]);\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport PropTypes from '../../_util/vue-types';\nimport { mergeProps } from '../../_util/props-util';\n\nvar TableHeaderRow = {\n inject: {\n store: { from: 'table-store', 'default': function _default() {\n return {};\n } }\n },\n props: {\n index: PropTypes.number,\n fixed: PropTypes.string,\n columns: PropTypes.array,\n rows: PropTypes.array,\n row: PropTypes.array,\n components: PropTypes.object,\n customHeaderRow: PropTypes.func,\n prefixCls: PropTypes.string\n },\n name: 'TableHeaderRow',\n computed: {\n height: function height() {\n var fixedColumnsHeadRowsHeight = this.store.fixedColumnsHeadRowsHeight;\n var _$props = this.$props,\n columns = _$props.columns,\n rows = _$props.rows,\n fixed = _$props.fixed;\n\n var headerHeight = fixedColumnsHeadRowsHeight[0];\n\n if (!fixed) {\n return null;\n }\n\n if (headerHeight && columns) {\n if (headerHeight === 'auto') {\n return 'auto';\n }\n return headerHeight / rows.length + 'px';\n }\n return null;\n }\n },\n render: function render(h) {\n var row = this.row,\n index = this.index,\n height = this.height,\n components = this.components,\n customHeaderRow = this.customHeaderRow,\n prefixCls = this.prefixCls;\n\n var HeaderRow = components.header.row;\n var HeaderCell = components.header.cell;\n var rowProps = customHeaderRow(row.map(function (cell) {\n return cell.column;\n }), index);\n var customStyle = rowProps ? rowProps.style : {};\n var style = _extends({ height: height }, customStyle);\n if (style.height === null) {\n delete style.height;\n }\n return h(\n HeaderRow,\n _mergeJSXProps([rowProps, { style: style }]),\n [row.map(function (cell, i) {\n var _classNames;\n\n var column = cell.column,\n isLast = cell.isLast,\n children = cell.children,\n className = cell.className,\n cellProps = _objectWithoutProperties(cell, ['column', 'isLast', 'children', 'className']);\n\n var customProps = column.customHeaderCell ? column.customHeaderCell(column) : {};\n var headerCellProps = mergeProps({\n attrs: _extends({}, cellProps)\n }, _extends({}, customProps, {\n key: column.key || column.dataIndex || i\n }));\n\n if (column.align) {\n headerCellProps.style = _extends({}, customProps.style, { textAlign: column.align });\n }\n\n headerCellProps['class'] = classNames(customProps['class'], customProps.className, column['class'], column.className, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-align-' + column.align, !!column.align), _defineProperty(_classNames, prefixCls + '-row-cell-ellipsis', !!column.ellipsis), _defineProperty(_classNames, prefixCls + '-row-cell-break-word', !!column.width), _defineProperty(_classNames, prefixCls + '-row-cell-last', isLast), _classNames));\n\n if (typeof HeaderCell === 'function') {\n return HeaderCell(h, headerCellProps, children);\n }\n return h(\n HeaderCell,\n headerCellProps,\n [children]\n );\n })]\n );\n }\n};\n\nexport default TableHeaderRow;","import PropTypes from '../../_util/vue-types';\nimport TableHeaderRow from './TableHeaderRow';\n\nfunction getHeaderRows(_ref) {\n var _ref$columns = _ref.columns,\n columns = _ref$columns === undefined ? [] : _ref$columns,\n _ref$currentRow = _ref.currentRow,\n currentRow = _ref$currentRow === undefined ? 0 : _ref$currentRow,\n _ref$rows = _ref.rows,\n rows = _ref$rows === undefined ? [] : _ref$rows,\n _ref$isLast = _ref.isLast,\n isLast = _ref$isLast === undefined ? true : _ref$isLast;\n\n rows = rows || [];\n rows[currentRow] = rows[currentRow] || [];\n\n columns.forEach(function (column, i) {\n if (column.rowSpan && rows.length < column.rowSpan) {\n while (rows.length < column.rowSpan) {\n rows.push([]);\n }\n }\n var cellIsLast = isLast && i === columns.length - 1;\n var cell = {\n key: column.key,\n className: column.className || column['class'] || '',\n children: column.title,\n isLast: cellIsLast,\n column: column\n };\n if (column.children) {\n getHeaderRows({\n columns: column.children,\n currentRow: currentRow + 1,\n rows: rows,\n isLast: cellIsLast\n });\n }\n if ('colSpan' in column) {\n cell.colSpan = column.colSpan;\n }\n if ('rowSpan' in column) {\n cell.rowSpan = column.rowSpan;\n }\n if (cell.colSpan !== 0) {\n rows[currentRow].push(cell);\n }\n });\n return rows.filter(function (row) {\n return row.length > 0;\n });\n}\n\nexport default {\n name: 'TableHeader',\n props: {\n fixed: PropTypes.string,\n columns: PropTypes.array.isRequired,\n expander: PropTypes.object.isRequired\n },\n inject: {\n table: { 'default': function _default() {\n return {};\n } }\n },\n\n render: function render() {\n var h = arguments[0];\n var _table = this.table,\n components = _table.sComponents,\n prefixCls = _table.prefixCls,\n showHeader = _table.showHeader,\n customHeaderRow = _table.customHeaderRow;\n var expander = this.expander,\n columns = this.columns,\n fixed = this.fixed;\n\n\n if (!showHeader) {\n return null;\n }\n\n var rows = getHeaderRows({ columns: columns });\n\n expander.renderExpandIndentCell(rows, fixed);\n\n var HeaderWrapper = components.header.wrapper;\n\n return h(\n HeaderWrapper,\n { 'class': prefixCls + '-thead' },\n [rows.map(function (row, index) {\n return h(TableHeaderRow, {\n attrs: {\n prefixCls: prefixCls,\n\n index: index,\n fixed: fixed,\n columns: columns,\n rows: rows,\n row: row,\n components: components,\n customHeaderRow: customHeaderRow\n },\n key: index });\n })]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport get from 'lodash/get';\nimport classNames from 'classnames';\nimport { isValidElement, mergeProps } from '../../_util/props-util';\n\nfunction isInvalidRenderCellText(text) {\n return text && !isValidElement(text) && Object.prototype.toString.call(text) === '[object Object]';\n}\n\nexport default {\n name: 'TableCell',\n props: {\n record: PropTypes.object,\n prefixCls: PropTypes.string,\n index: PropTypes.number,\n indent: PropTypes.number,\n indentSize: PropTypes.number,\n column: PropTypes.object,\n expandIcon: PropTypes.any,\n component: PropTypes.any\n },\n inject: {\n table: { 'default': function _default() {\n return {};\n } }\n },\n methods: {\n handleClick: function handleClick(e) {\n var record = this.record,\n onCellClick = this.column.onCellClick;\n\n if (onCellClick) {\n onCellClick(record, e);\n }\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var record = this.record,\n indentSize = this.indentSize,\n prefixCls = this.prefixCls,\n indent = this.indent,\n index = this.index,\n expandIcon = this.expandIcon,\n column = this.column,\n BodyCell = this.component;\n var dataIndex = column.dataIndex,\n customRender = column.customRender,\n _column$className = column.className,\n className = _column$className === undefined ? '' : _column$className;\n var transformCellText = this.table.transformCellText;\n // We should return undefined if no dataIndex is specified, but in order to\n // be compatible with object-path's behavior, we return the record object instead.\n\n var text = void 0;\n if (typeof dataIndex === 'number') {\n text = get(record, dataIndex);\n } else if (!dataIndex || dataIndex.length === 0) {\n text = record;\n } else {\n text = get(record, dataIndex);\n }\n var tdProps = {\n props: {},\n attrs: {},\n on: {\n click: this.handleClick\n }\n };\n var colSpan = void 0;\n var rowSpan = void 0;\n\n if (customRender) {\n text = customRender(text, record, index, column);\n if (isInvalidRenderCellText(text)) {\n tdProps.attrs = text.attrs || {};\n tdProps.props = text.props || {};\n tdProps['class'] = text['class'];\n tdProps.style = text.style;\n colSpan = tdProps.attrs.colSpan;\n rowSpan = tdProps.attrs.rowSpan;\n text = text.children;\n }\n }\n\n if (column.customCell) {\n tdProps = mergeProps(tdProps, column.customCell(record, index));\n }\n\n // Fix https://github.com/ant-design/ant-design/issues/1202\n if (isInvalidRenderCellText(text)) {\n text = null;\n }\n\n if (transformCellText) {\n text = transformCellText({ text: text, column: column, record: record, index: index });\n }\n\n var indentText = expandIcon ? h('span', {\n style: { paddingLeft: indentSize * indent + 'px' },\n 'class': prefixCls + '-indent indent-level-' + indent\n }) : null;\n\n if (rowSpan === 0 || colSpan === 0) {\n return null;\n }\n if (column.align) {\n tdProps.style = _extends({ textAlign: column.align }, tdProps.style);\n }\n\n var cellClassName = classNames(className, column['class'], (_classNames = {}, _defineProperty(_classNames, prefixCls + '-cell-ellipsis', !!column.ellipsis), _defineProperty(_classNames, prefixCls + '-cell-break-word', !!column.width), _classNames));\n\n if (column.ellipsis) {\n if (typeof text === 'string') {\n tdProps.attrs.title = text;\n } else if (text) {\n // const { props: textProps } = text;\n // if (textProps && textProps.children && typeof textProps.children === 'string') {\n // tdProps.attrs.title = textProps.children;\n // }\n }\n }\n\n return h(\n BodyCell,\n _mergeJSXProps([{ 'class': cellClassName }, tdProps]),\n [indentText, expandIcon, text]\n );\n }\n};","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport PropTypes from '../../_util/vue-types';\nimport TableCell from './TableCell';\nimport { initDefaultProps, mergeProps, getStyle as _getStyle } from '../../_util/props-util';\nimport BaseMixin from '../../_util/BaseMixin';\nimport warning from '../../_util/warning';\nfunction noop() {}\nvar TableRow = {\n name: 'TableRow',\n mixins: [BaseMixin],\n inject: {\n store: { from: 'table-store', 'default': function _default() {\n return {};\n } }\n },\n props: initDefaultProps({\n customRow: PropTypes.func,\n // onRowClick: PropTypes.func,\n // onRowDoubleClick: PropTypes.func,\n // onRowContextMenu: PropTypes.func,\n // onRowMouseEnter: PropTypes.func,\n // onRowMouseLeave: PropTypes.func,\n record: PropTypes.object,\n prefixCls: PropTypes.string,\n // onHover: PropTypes.func,\n columns: PropTypes.array,\n index: PropTypes.number,\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n className: PropTypes.string,\n indent: PropTypes.number,\n indentSize: PropTypes.number,\n hasExpandIcon: PropTypes.func,\n fixed: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n renderExpandIcon: PropTypes.func,\n renderExpandIconCell: PropTypes.func,\n components: PropTypes.any,\n expandedRow: PropTypes.bool,\n isAnyColumnsFixed: PropTypes.bool,\n ancestorKeys: PropTypes.array.isRequired,\n expandIconColumnIndex: PropTypes.number,\n expandRowByClick: PropTypes.bool\n // visible: PropTypes.bool,\n // hovered: PropTypes.bool,\n // height: PropTypes.any,\n }, {\n // expandIconColumnIndex: 0,\n // expandRowByClick: false,\n hasExpandIcon: function hasExpandIcon() {},\n renderExpandIcon: function renderExpandIcon() {},\n renderExpandIconCell: function renderExpandIconCell() {}\n }),\n\n computed: {\n visible: function visible() {\n var expandedRowKeys = this.store.expandedRowKeys;\n var ancestorKeys = this.$props.ancestorKeys;\n\n return !!(ancestorKeys.length === 0 || ancestorKeys.every(function (k) {\n return expandedRowKeys.includes(k);\n }));\n },\n height: function height() {\n var _store = this.store,\n expandedRowsHeight = _store.expandedRowsHeight,\n fixedColumnsBodyRowsHeight = _store.fixedColumnsBodyRowsHeight;\n var _$props = this.$props,\n fixed = _$props.fixed,\n rowKey = _$props.rowKey;\n\n\n if (!fixed) {\n return null;\n }\n\n if (expandedRowsHeight[rowKey]) {\n return expandedRowsHeight[rowKey];\n }\n\n if (fixedColumnsBodyRowsHeight[rowKey]) {\n return fixedColumnsBodyRowsHeight[rowKey];\n }\n\n return null;\n },\n hovered: function hovered() {\n var currentHoverKey = this.store.currentHoverKey;\n var rowKey = this.$props.rowKey;\n\n return currentHoverKey === rowKey;\n }\n },\n\n data: function data() {\n // this.shouldRender = this.visible\n return {\n shouldRender: this.visible\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n if (this.shouldRender) {\n this.$nextTick(function () {\n _this.saveRowRef();\n });\n }\n },\n\n watch: {\n visible: {\n handler: function handler(val) {\n if (val) {\n this.shouldRender = true;\n }\n },\n\n immediate: true\n }\n },\n\n updated: function updated() {\n var _this2 = this;\n\n if (this.shouldRender && !this.rowRef) {\n this.$nextTick(function () {\n _this2.saveRowRef();\n });\n }\n },\n\n methods: {\n onRowClick: function onRowClick(event) {\n var rowPropFunc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var record = this.record,\n index = this.index;\n\n this.__emit('rowClick', record, index, event);\n rowPropFunc(event);\n },\n onRowDoubleClick: function onRowDoubleClick(event) {\n var rowPropFunc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var record = this.record,\n index = this.index;\n\n this.__emit('rowDoubleClick', record, index, event);\n rowPropFunc(event);\n },\n onContextMenu: function onContextMenu(event) {\n var rowPropFunc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var record = this.record,\n index = this.index;\n\n this.__emit('rowContextmenu', record, index, event);\n rowPropFunc(event);\n },\n onMouseEnter: function onMouseEnter(event) {\n var rowPropFunc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var record = this.record,\n index = this.index,\n rowKey = this.rowKey;\n\n this.__emit('hover', true, rowKey);\n this.__emit('rowMouseenter', record, index, event);\n rowPropFunc(event);\n },\n onMouseLeave: function onMouseLeave(event) {\n var rowPropFunc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var record = this.record,\n index = this.index,\n rowKey = this.rowKey;\n\n this.__emit('hover', false, rowKey);\n this.__emit('rowMouseleave', record, index, event);\n rowPropFunc(event);\n },\n setExpandedRowHeight: function setExpandedRowHeight() {\n var store = this.store,\n rowKey = this.rowKey;\n var expandedRowsHeight = store.expandedRowsHeight;\n\n var height = this.rowRef.getBoundingClientRect().height;\n expandedRowsHeight = _extends({}, expandedRowsHeight, _defineProperty({}, rowKey, height));\n store.expandedRowsHeight = expandedRowsHeight;\n },\n setRowHeight: function setRowHeight() {\n var store = this.store,\n rowKey = this.rowKey;\n var fixedColumnsBodyRowsHeight = store.fixedColumnsBodyRowsHeight;\n\n var height = this.rowRef.getBoundingClientRect().height;\n store.fixedColumnsBodyRowsHeight = _extends({}, fixedColumnsBodyRowsHeight, _defineProperty({}, rowKey, height));\n },\n getStyle: function getStyle() {\n var height = this.height,\n visible = this.visible;\n\n var style = _getStyle(this);\n if (height) {\n style = _extends({}, style, { height: height });\n }\n\n if (!visible && !style.display) {\n style = _extends({}, style, { display: 'none' });\n }\n\n return style;\n },\n saveRowRef: function saveRowRef() {\n this.rowRef = this.$el;\n\n var isAnyColumnsFixed = this.isAnyColumnsFixed,\n fixed = this.fixed,\n expandedRow = this.expandedRow,\n ancestorKeys = this.ancestorKeys;\n\n\n if (!isAnyColumnsFixed) {\n return;\n }\n\n if (!fixed && expandedRow) {\n this.setExpandedRowHeight();\n }\n\n if (!fixed && ancestorKeys.length >= 0) {\n this.setRowHeight();\n }\n }\n },\n\n render: function render() {\n var _this3 = this;\n\n var h = arguments[0];\n\n if (!this.shouldRender) {\n return null;\n }\n\n var prefixCls = this.prefixCls,\n columns = this.columns,\n record = this.record,\n rowKey = this.rowKey,\n index = this.index,\n _customRow = this.customRow,\n customRow = _customRow === undefined ? noop : _customRow,\n indent = this.indent,\n indentSize = this.indentSize,\n hovered = this.hovered,\n height = this.height,\n visible = this.visible,\n components = this.components,\n hasExpandIcon = this.hasExpandIcon,\n renderExpandIcon = this.renderExpandIcon,\n renderExpandIconCell = this.renderExpandIconCell;\n\n var BodyRow = components.body.row;\n var BodyCell = components.body.cell;\n\n var className = '';\n\n if (hovered) {\n className += ' ' + prefixCls + '-hover';\n }\n\n var cells = [];\n\n renderExpandIconCell(cells);\n\n for (var i = 0; i < columns.length; i += 1) {\n var column = columns[i];\n\n warning(column.onCellClick === undefined, 'column[onCellClick] is deprecated, please use column[customCell] instead.');\n\n cells.push(h(TableCell, {\n attrs: {\n prefixCls: prefixCls,\n record: record,\n indentSize: indentSize,\n indent: indent,\n index: index,\n column: column,\n\n expandIcon: hasExpandIcon(i) && renderExpandIcon(),\n component: BodyCell\n },\n key: column.key || column.dataIndex }));\n }\n\n var _ref = customRow(record, index) || {},\n customClass = _ref['class'],\n customClassName = _ref.className,\n customStyle = _ref.style,\n rowProps = _objectWithoutProperties(_ref, ['class', 'className', 'style']);\n\n var style = { height: typeof height === 'number' ? height + 'px' : height };\n\n if (!visible) {\n style.display = 'none';\n }\n\n style = _extends({}, style, customStyle);\n var rowClassName = classNames(prefixCls, className, prefixCls + '-level-' + indent, customClassName, customClass);\n var rowPropEvents = rowProps.on || {};\n var bodyRowProps = mergeProps(_extends({}, rowProps, { style: style }), {\n on: {\n click: function click(e) {\n _this3.onRowClick(e, rowPropEvents.click);\n },\n dblclick: function dblclick(e) {\n _this3.onRowDoubleClick(e, rowPropEvents.dblclick);\n },\n mouseenter: function mouseenter(e) {\n _this3.onMouseEnter(e, rowPropEvents.mouseenter);\n },\n mouseleave: function mouseleave(e) {\n _this3.onMouseLeave(e, rowPropEvents.mouseleave);\n },\n contextmenu: function contextmenu(e) {\n _this3.onContextMenu(e, rowPropEvents.contextmenu);\n }\n },\n 'class': rowClassName\n }, {\n attrs: {\n 'data-row-key': rowKey\n }\n });\n return h(\n BodyRow,\n bodyRowProps,\n [cells]\n );\n }\n};\n\nexport default TableRow;","import PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nexport default {\n name: 'ExpandIcon',\n mixins: [BaseMixin],\n props: {\n record: PropTypes.object,\n prefixCls: PropTypes.string,\n expandable: PropTypes.any,\n expanded: PropTypes.bool,\n needIndentSpaced: PropTypes.bool\n },\n methods: {\n onExpand: function onExpand(e) {\n this.__emit('expand', this.record, e);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var expandable = this.expandable,\n prefixCls = this.prefixCls,\n onExpand = this.onExpand,\n needIndentSpaced = this.needIndentSpaced,\n expanded = this.expanded;\n\n if (expandable) {\n var expandClassName = expanded ? 'expanded' : 'collapsed';\n return h('span', {\n 'class': prefixCls + '-expand-icon ' + prefixCls + '-' + expandClassName,\n on: {\n 'click': onExpand\n }\n });\n }\n if (needIndentSpaced) {\n return h('span', { 'class': prefixCls + '-expand-icon ' + prefixCls + '-spaced' });\n }\n return null;\n }\n};","import PropTypes from '../../_util/vue-types';\nimport ExpandIcon from './ExpandIcon';\nimport BaseMixin from '../../_util/BaseMixin';\n\nvar ExpandableRow = {\n mixins: [BaseMixin],\n name: 'ExpandableRow',\n props: {\n prefixCls: PropTypes.string.isRequired,\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\n fixed: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n record: PropTypes.oneOfType([PropTypes.object, PropTypes.array]).isRequired,\n indentSize: PropTypes.number,\n needIndentSpaced: PropTypes.bool.isRequired,\n expandRowByClick: PropTypes.bool,\n expandIconAsCell: PropTypes.bool,\n expandIconColumnIndex: PropTypes.number,\n childrenColumnName: PropTypes.string,\n expandedRowRender: PropTypes.func,\n expandIcon: PropTypes.func\n // onExpandedChange: PropTypes.func.isRequired,\n // onRowClick: PropTypes.func,\n // children: PropTypes.func.isRequired,\n },\n inject: {\n store: { from: 'table-store', 'default': function _default() {\n return {};\n } }\n },\n computed: {\n expanded: function expanded() {\n return this.store.expandedRowKeys.includes(this.$props.rowKey);\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.handleDestroy();\n },\n\n methods: {\n hasExpandIcon: function hasExpandIcon(columnIndex) {\n var _$props = this.$props,\n expandRowByClick = _$props.expandRowByClick,\n expandIcon = _$props.expandIcon;\n\n\n if (this.tempExpandIconAsCell || columnIndex !== this.tempExpandIconColumnIndex) {\n return false;\n }\n\n return !!expandIcon || !expandRowByClick;\n },\n handleExpandChange: function handleExpandChange(record, event) {\n var expanded = this.expanded,\n rowKey = this.rowKey;\n\n this.__emit('expandedChange', !expanded, record, event, rowKey);\n },\n handleDestroy: function handleDestroy() {\n var rowKey = this.rowKey,\n record = this.record;\n\n this.__emit('expandedChange', false, record, null, rowKey, true);\n },\n handleRowClick: function handleRowClick(record, index, event) {\n var expandRowByClick = this.expandRowByClick;\n\n if (expandRowByClick) {\n this.handleExpandChange(record, event);\n }\n this.__emit('rowClick', record, index, event);\n },\n renderExpandIcon: function renderExpandIcon() {\n var h = this.$createElement;\n var prefixCls = this.prefixCls,\n expanded = this.expanded,\n record = this.record,\n needIndentSpaced = this.needIndentSpaced,\n expandIcon = this.expandIcon;\n\n if (expandIcon) {\n return expandIcon({\n prefixCls: prefixCls,\n expanded: expanded,\n record: record,\n needIndentSpaced: needIndentSpaced,\n expandable: this.expandable,\n onExpand: this.handleExpandChange\n });\n }\n return h(ExpandIcon, {\n attrs: {\n expandable: this.expandable,\n prefixCls: prefixCls,\n\n needIndentSpaced: needIndentSpaced,\n expanded: expanded,\n record: record\n },\n on: {\n 'expand': this.handleExpandChange\n }\n });\n },\n renderExpandIconCell: function renderExpandIconCell(cells) {\n var h = this.$createElement;\n\n if (!this.tempExpandIconAsCell) {\n return;\n }\n var prefixCls = this.prefixCls;\n\n\n cells.push(h(\n 'td',\n { 'class': prefixCls + '-expand-icon-cell', key: 'rc-table-expand-icon-cell' },\n [this.renderExpandIcon()]\n ));\n }\n },\n\n render: function render() {\n var childrenColumnName = this.childrenColumnName,\n expandedRowRender = this.expandedRowRender,\n indentSize = this.indentSize,\n record = this.record,\n fixed = this.fixed,\n $scopedSlots = this.$scopedSlots,\n expanded = this.expanded;\n\n\n this.tempExpandIconAsCell = fixed !== 'right' ? this.expandIconAsCell : false;\n this.tempExpandIconColumnIndex = fixed !== 'right' ? this.expandIconColumnIndex : -1;\n var childrenData = record[childrenColumnName];\n this.expandable = !!(childrenData || expandedRowRender);\n var expandableRowProps = {\n props: {\n indentSize: indentSize,\n expanded: expanded, // not used in TableRow, but it's required to re-render TableRow when `expanded` changes\n hasExpandIcon: this.hasExpandIcon,\n renderExpandIcon: this.renderExpandIcon,\n renderExpandIconCell: this.renderExpandIconCell\n },\n\n on: {\n rowClick: this.handleRowClick\n }\n };\n\n return $scopedSlots['default'] && $scopedSlots['default'](expandableRowProps);\n }\n};\n\nexport default ExpandableRow;","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport classNames from 'classnames';\nimport ColGroup from './ColGroup';\nimport TableHeader from './TableHeader';\nimport TableRow from './TableRow';\nimport ExpandableRow from './ExpandableRow';\nimport { mergeProps, getListeners } from '../../_util/props-util';\nfunction noop() {}\nvar BaseTable = {\n name: 'BaseTable',\n props: {\n fixed: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n columns: PropTypes.array.isRequired,\n tableClassName: PropTypes.string.isRequired,\n hasHead: PropTypes.bool.isRequired,\n hasBody: PropTypes.bool.isRequired,\n expander: PropTypes.object.isRequired,\n getRowKey: PropTypes.func,\n isAnyColumnsFixed: PropTypes.bool\n },\n inject: {\n table: { 'default': function _default() {\n return {};\n } },\n store: { from: 'table-store', 'default': function _default() {\n return {};\n } }\n },\n methods: {\n getColumns: function getColumns(cols) {\n var _$props = this.$props,\n _$props$columns = _$props.columns,\n columns = _$props$columns === undefined ? [] : _$props$columns,\n fixed = _$props.fixed;\n var table = this.table;\n var prefixCls = table.$props.prefixCls;\n\n return (cols || columns).map(function (column) {\n return _extends({}, column, {\n className: !!column.fixed && !fixed ? classNames(prefixCls + '-fixed-columns-in-body', column.className || column['class']) : column.className || column['class']\n });\n });\n },\n handleRowHover: function handleRowHover(isHover, key) {\n this.store.currentHoverKey = isHover ? key : null;\n },\n renderRows: function renderRows(renderData, indent) {\n var _this = this;\n\n var ancestorKeys = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var h = this.$createElement;\n var _table = this.table,\n columnManager = _table.columnManager,\n components = _table.sComponents,\n prefixCls = _table.prefixCls,\n childrenColumnName = _table.childrenColumnName,\n rowClassName = _table.rowClassName,\n _table$customRow = _table.customRow,\n customRow = _table$customRow === undefined ? noop : _table$customRow;\n\n var _getListeners = getListeners(this.table),\n _getListeners$rowClic = _getListeners.rowClick,\n onRowClick = _getListeners$rowClic === undefined ? noop : _getListeners$rowClic,\n _getListeners$rowDoub = _getListeners.rowDoubleclick,\n onRowDoubleClick = _getListeners$rowDoub === undefined ? noop : _getListeners$rowDoub,\n _getListeners$rowCont = _getListeners.rowContextmenu,\n onRowContextMenu = _getListeners$rowCont === undefined ? noop : _getListeners$rowCont,\n _getListeners$rowMous = _getListeners.rowMouseenter,\n onRowMouseEnter = _getListeners$rowMous === undefined ? noop : _getListeners$rowMous,\n _getListeners$rowMous2 = _getListeners.rowMouseleave,\n onRowMouseLeave = _getListeners$rowMous2 === undefined ? noop : _getListeners$rowMous2;\n\n var getRowKey = this.getRowKey,\n fixed = this.fixed,\n expander = this.expander,\n isAnyColumnsFixed = this.isAnyColumnsFixed;\n\n\n var rows = [];\n\n var _loop = function _loop(i) {\n var record = renderData[i];\n var key = getRowKey(record, i);\n var className = typeof rowClassName === 'string' ? rowClassName : rowClassName(record, i, indent);\n\n var onHoverProps = {};\n if (columnManager.isAnyColumnsFixed()) {\n onHoverProps.hover = _this.handleRowHover;\n }\n\n var leafColumns = void 0;\n if (fixed === 'left') {\n leafColumns = columnManager.leftLeafColumns();\n } else if (fixed === 'right') {\n leafColumns = columnManager.rightLeafColumns();\n } else {\n leafColumns = _this.getColumns(columnManager.leafColumns());\n }\n\n var rowPrefixCls = prefixCls + '-row';\n\n var expandableRowProps = {\n props: _extends({}, expander.props, {\n fixed: fixed,\n index: i,\n prefixCls: rowPrefixCls,\n record: record,\n rowKey: key,\n needIndentSpaced: expander.needIndentSpaced\n }),\n key: key,\n on: {\n // ...expander.on,\n rowClick: onRowClick,\n expandedChange: expander.handleExpandChange\n },\n scopedSlots: {\n 'default': function _default(expandableRow) {\n var tableRowProps = mergeProps({\n props: {\n fixed: fixed,\n indent: indent,\n record: record,\n index: i,\n prefixCls: rowPrefixCls,\n childrenColumnName: childrenColumnName,\n columns: leafColumns,\n rowKey: key,\n ancestorKeys: ancestorKeys,\n components: components,\n isAnyColumnsFixed: isAnyColumnsFixed,\n customRow: customRow\n },\n on: _extends({\n rowDoubleclick: onRowDoubleClick,\n rowContextmenu: onRowContextMenu,\n rowMouseenter: onRowMouseEnter,\n rowMouseleave: onRowMouseLeave\n }, onHoverProps),\n 'class': className,\n ref: 'row_' + i + '_' + indent\n }, expandableRow);\n return h(TableRow, tableRowProps);\n }\n }\n };\n var row = h(ExpandableRow, expandableRowProps);\n\n rows.push(row);\n expander.renderRows(_this.renderRows, rows, record, i, indent, fixed, key, ancestorKeys);\n };\n\n for (var i = 0; i < renderData.length; i += 1) {\n _loop(i);\n }\n return rows;\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var _table2 = this.table,\n components = _table2.sComponents,\n prefixCls = _table2.prefixCls,\n scroll = _table2.scroll,\n data = _table2.data,\n getBodyWrapper = _table2.getBodyWrapper;\n var _$props2 = this.$props,\n expander = _$props2.expander,\n tableClassName = _$props2.tableClassName,\n hasHead = _$props2.hasHead,\n hasBody = _$props2.hasBody,\n fixed = _$props2.fixed,\n isAnyColumnsFixed = _$props2.isAnyColumnsFixed;\n\n var columns = this.getColumns();\n var tableStyle = {};\n\n if (!fixed && scroll.x) {\n // 当有固定列时,width auto 会导致 body table 的宽度撑不开,从而固定列无法对齐\n // 详情见:https://github.com/ant-design/ant-design/issues/22160\n var tableWidthScrollX = isAnyColumnsFixed ? 'max-content' : 'auto';\n // not set width, then use content fixed width\n tableStyle.width = scroll.x === true ? tableWidthScrollX : scroll.x;\n tableStyle.width = typeof tableStyle.width === 'number' ? tableStyle.width + 'px' : tableStyle.width;\n }\n if (fixed) {\n var width = columns.reduce(function (sum, _ref) {\n var w = _ref.width;\n\n return sum + parseFloat(w, 10);\n }, 0);\n if (width > 0) {\n tableStyle.width = width + 'px';\n }\n }\n\n var Table = hasBody ? components.table : 'table';\n var BodyWrapper = components.body.wrapper;\n\n var body = void 0;\n if (hasBody) {\n body = h(\n BodyWrapper,\n { 'class': prefixCls + '-tbody' },\n [this.renderRows(data, 0)]\n );\n if (getBodyWrapper) {\n body = getBodyWrapper(body);\n }\n }\n return h(\n Table,\n { 'class': tableClassName, style: tableStyle, key: 'table' },\n [h(ColGroup, {\n attrs: { columns: columns, fixed: fixed }\n }), hasHead && h(TableHeader, {\n attrs: { expander: expander, columns: columns, fixed: fixed }\n }), body]\n );\n }\n};\n\nexport default BaseTable;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../_util/vue-types';\nimport { measureScrollbar } from './utils';\nimport BaseTable from './BaseTable';\nimport classNames from 'classnames';\n\nexport default {\n name: 'HeadTable',\n props: {\n fixed: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n columns: PropTypes.array.isRequired,\n tableClassName: PropTypes.string.isRequired,\n handleBodyScrollLeft: PropTypes.func.isRequired,\n expander: PropTypes.object.isRequired\n },\n inject: {\n table: { 'default': function _default() {\n return {};\n } }\n },\n render: function render() {\n var h = arguments[0];\n var columns = this.columns,\n fixed = this.fixed,\n tableClassName = this.tableClassName,\n handleBodyScrollLeft = this.handleBodyScrollLeft,\n expander = this.expander,\n table = this.table;\n var prefixCls = table.prefixCls,\n scroll = table.scroll,\n showHeader = table.showHeader,\n saveRef = table.saveRef;\n var useFixedHeader = table.useFixedHeader;\n\n var headStyle = {};\n\n var scrollbarWidth = measureScrollbar({ direction: 'vertical' });\n\n if (scroll.y) {\n useFixedHeader = true;\n // https://github.com/ant-design/ant-design/issues/17051\n var scrollbarWidthOfHeader = measureScrollbar({ direction: 'horizontal', prefixCls: prefixCls });\n // Add negative margin bottom for scroll bar overflow bug\n if (scrollbarWidthOfHeader > 0 && !fixed) {\n headStyle.marginBottom = '-' + scrollbarWidthOfHeader + 'px';\n headStyle.paddingBottom = '0px';\n // https://github.com/ant-design/ant-design/pull/19986\n headStyle.minWidth = scrollbarWidth + 'px';\n // https://github.com/ant-design/ant-design/issues/17051\n headStyle.overflowX = 'scroll';\n headStyle.overflowY = scrollbarWidth === 0 ? 'hidden' : 'scroll';\n }\n }\n\n if (!useFixedHeader || !showHeader) {\n return null;\n }\n return h(\n 'div',\n _mergeJSXProps([{\n key: 'headTable'\n }, {\n directives: [{\n name: 'ant-ref',\n value: fixed ? function () {} : saveRef('headTable')\n }]\n }, {\n 'class': classNames(prefixCls + '-header', _defineProperty({}, prefixCls + '-hide-scrollbar', scrollbarWidth > 0)),\n style: headStyle,\n on: {\n 'scroll': handleBodyScrollLeft\n }\n }]),\n [h(BaseTable, {\n attrs: {\n tableClassName: tableClassName,\n hasHead: true,\n hasBody: false,\n fixed: fixed,\n columns: columns,\n expander: expander\n }\n })]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport { measureScrollbar } from './utils';\nimport BaseTable from './BaseTable';\n\nexport default {\n name: 'BodyTable',\n props: {\n fixed: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),\n columns: PropTypes.array.isRequired,\n tableClassName: PropTypes.string.isRequired,\n handleBodyScroll: PropTypes.func.isRequired,\n handleWheel: PropTypes.func.isRequired,\n getRowKey: PropTypes.func.isRequired,\n expander: PropTypes.object.isRequired,\n isAnyColumnsFixed: PropTypes.bool\n },\n inject: {\n table: { 'default': function _default() {\n return {};\n } }\n },\n render: function render() {\n var h = arguments[0];\n var _table = this.table,\n prefixCls = _table.prefixCls,\n scroll = _table.scroll;\n var columns = this.columns,\n fixed = this.fixed,\n tableClassName = this.tableClassName,\n getRowKey = this.getRowKey,\n handleBodyScroll = this.handleBodyScroll,\n handleWheel = this.handleWheel,\n expander = this.expander,\n isAnyColumnsFixed = this.isAnyColumnsFixed;\n var _table2 = this.table,\n useFixedHeader = _table2.useFixedHeader,\n saveRef = _table2.saveRef;\n\n var bodyStyle = _extends({}, this.table.bodyStyle);\n var innerBodyStyle = {};\n\n if (scroll.x || fixed) {\n bodyStyle.overflowX = bodyStyle.overflowX || 'scroll';\n // Fix weired webkit render bug\n // https://github.com/ant-design/ant-design/issues/7783\n bodyStyle.WebkitTransform = 'translate3d (0, 0, 0)';\n }\n\n if (scroll.y) {\n // maxHeight will make fixed-Table scrolling not working\n // so we only set maxHeight to body-Table here\n var maxHeight = bodyStyle.maxHeight || scroll.y;\n maxHeight = typeof maxHeight === 'number' ? maxHeight + 'px' : maxHeight;\n if (fixed) {\n innerBodyStyle.maxHeight = maxHeight;\n innerBodyStyle.overflowY = bodyStyle.overflowY || 'scroll';\n } else {\n bodyStyle.maxHeight = maxHeight;\n }\n bodyStyle.overflowY = bodyStyle.overflowY || 'scroll';\n useFixedHeader = true;\n\n // Add negative margin bottom for scroll bar overflow bug\n var scrollbarWidth = measureScrollbar({ direction: 'vertical' });\n if (scrollbarWidth > 0 && fixed) {\n bodyStyle.marginBottom = '-' + scrollbarWidth + 'px';\n bodyStyle.paddingBottom = '0px';\n }\n }\n\n var baseTable = h(BaseTable, {\n attrs: {\n tableClassName: tableClassName,\n hasHead: !useFixedHeader,\n hasBody: true,\n fixed: fixed,\n columns: columns,\n expander: expander,\n getRowKey: getRowKey,\n isAnyColumnsFixed: isAnyColumnsFixed\n }\n });\n\n if (fixed && columns.length) {\n var refName = void 0;\n if (columns[0].fixed === 'left' || columns[0].fixed === true) {\n refName = 'fixedColumnsBodyLeft';\n } else if (columns[0].fixed === 'right') {\n refName = 'fixedColumnsBodyRight';\n }\n delete bodyStyle.overflowX;\n delete bodyStyle.overflowY;\n return h(\n 'div',\n { key: 'bodyTable', 'class': prefixCls + '-body-outer', style: _extends({}, bodyStyle) },\n [h(\n 'div',\n _mergeJSXProps([{\n 'class': prefixCls + '-body-inner',\n style: innerBodyStyle\n }, {\n directives: [{\n name: 'ant-ref',\n value: saveRef(refName)\n }]\n }, {\n on: {\n 'wheel': handleWheel,\n 'scroll': handleBodyScroll\n }\n }]),\n [baseTable]\n )]\n );\n }\n // Should provides `tabIndex` if use scroll to enable keyboard scroll\n var useTabIndex = scroll && (scroll.x || scroll.y);\n\n return h(\n 'div',\n _mergeJSXProps([{\n attrs: {\n tabIndex: useTabIndex ? -1 : undefined\n },\n key: 'bodyTable',\n 'class': prefixCls + '-body',\n style: bodyStyle\n }, {\n directives: [{\n name: 'ant-ref',\n value: saveRef('bodyTable')\n }]\n }, {\n on: {\n 'wheel': handleWheel,\n 'scroll': handleBodyScroll\n }\n }]),\n [baseTable]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport shallowEqual from 'shallowequal';\nimport TableRow from './TableRow';\nimport { remove } from './utils';\nimport { initDefaultProps, getOptionProps, getListeners } from '../../_util/props-util';\n\nexport var ExpandableTableProps = function ExpandableTableProps() {\n return {\n expandIconAsCell: PropTypes.bool,\n expandRowByClick: PropTypes.bool,\n expandedRowKeys: PropTypes.array,\n expandedRowClassName: PropTypes.func,\n defaultExpandAllRows: PropTypes.bool,\n defaultExpandedRowKeys: PropTypes.array,\n expandIconColumnIndex: PropTypes.number,\n expandedRowRender: PropTypes.func,\n expandIcon: PropTypes.func,\n childrenColumnName: PropTypes.string,\n indentSize: PropTypes.number,\n // onExpand: PropTypes.func,\n // onExpandedRowsChange: PropTypes.func,\n columnManager: PropTypes.object.isRequired,\n prefixCls: PropTypes.string.isRequired,\n data: PropTypes.array,\n getRowKey: PropTypes.func\n };\n};\n\nvar ExpandableTable = {\n name: 'ExpandableTable',\n mixins: [BaseMixin],\n props: initDefaultProps(ExpandableTableProps(), {\n expandIconAsCell: false,\n expandedRowClassName: function expandedRowClassName() {\n return '';\n },\n expandIconColumnIndex: 0,\n defaultExpandAllRows: false,\n defaultExpandedRowKeys: [],\n childrenColumnName: 'children',\n indentSize: 15\n }),\n inject: {\n store: { from: 'table-store', 'default': function _default() {\n return {};\n } }\n },\n data: function data() {\n var data = this.data,\n childrenColumnName = this.childrenColumnName,\n defaultExpandAllRows = this.defaultExpandAllRows,\n expandedRowKeys = this.expandedRowKeys,\n defaultExpandedRowKeys = this.defaultExpandedRowKeys,\n getRowKey = this.getRowKey;\n\n\n var finalExpandedRowKeys = [];\n var rows = [].concat(_toConsumableArray(data));\n\n if (defaultExpandAllRows) {\n for (var i = 0; i < rows.length; i += 1) {\n var row = rows[i];\n finalExpandedRowKeys.push(getRowKey(row, i));\n rows = rows.concat(row[childrenColumnName] || []);\n }\n } else {\n finalExpandedRowKeys = expandedRowKeys || defaultExpandedRowKeys;\n }\n\n // this.columnManager = props.columnManager\n // this.store = props.store\n\n this.store.expandedRowsHeight = {};\n this.store.expandedRowKeys = finalExpandedRowKeys;\n return {};\n },\n mounted: function mounted() {\n this.handleUpdated();\n },\n updated: function updated() {\n this.handleUpdated();\n },\n\n watch: {\n expandedRowKeys: function expandedRowKeys(val) {\n var _this = this;\n\n this.$nextTick(function () {\n _this.store.expandedRowKeys = val;\n });\n }\n },\n methods: {\n handleUpdated: function handleUpdated() {\n // We should record latest expanded rows to avoid multiple rows remove cause `onExpandedRowsChange` trigger many times\n this.latestExpandedRows = null;\n },\n handleExpandChange: function handleExpandChange(expanded, record, event, rowKey) {\n var destroy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n if (event) {\n event.preventDefault();\n event.stopPropagation();\n }\n\n var expandedRowKeys = this.store.expandedRowKeys;\n\n\n if (expanded) {\n // row was expaned\n expandedRowKeys = [].concat(_toConsumableArray(expandedRowKeys), [rowKey]);\n } else {\n // row was collapse\n var expandedRowIndex = expandedRowKeys.indexOf(rowKey);\n if (expandedRowIndex !== -1) {\n expandedRowKeys = remove(expandedRowKeys, rowKey);\n }\n }\n\n if (!this.expandedRowKeys) {\n this.store.expandedRowKeys = expandedRowKeys;\n }\n // De-dup of repeat call\n if (!this.latestExpandedRows || !shallowEqual(this.latestExpandedRows, expandedRowKeys)) {\n this.latestExpandedRows = expandedRowKeys;\n this.__emit('expandedRowsChange', expandedRowKeys);\n this.__emit('update:expandedRowKeys', expandedRowKeys);\n }\n\n if (!destroy) {\n this.__emit('expand', expanded, record);\n }\n },\n renderExpandIndentCell: function renderExpandIndentCell(rows, fixed) {\n var prefixCls = this.prefixCls,\n expandIconAsCell = this.expandIconAsCell;\n\n if (!expandIconAsCell || fixed === 'right' || !rows.length) {\n return;\n }\n\n var iconColumn = {\n key: 'rc-table-expand-icon-cell',\n className: prefixCls + '-expand-icon-th',\n title: '',\n rowSpan: rows.length\n };\n\n rows[0].unshift(_extends({}, iconColumn, { column: iconColumn }));\n },\n renderExpandedRow: function renderExpandedRow(record, index, expandedRowRender, className, ancestorKeys, indent, fixed) {\n var _this2 = this;\n\n var h = this.$createElement;\n var prefixCls = this.prefixCls,\n expandIconAsCell = this.expandIconAsCell,\n indentSize = this.indentSize;\n\n var parentKey = ancestorKeys[ancestorKeys.length - 1];\n var rowKey = parentKey + '-extra-row';\n var components = {\n body: {\n row: 'tr',\n cell: 'td'\n }\n };\n var colCount = void 0;\n if (fixed === 'left') {\n colCount = this.columnManager.leftLeafColumns().length;\n } else if (fixed === 'right') {\n colCount = this.columnManager.rightLeafColumns().length;\n } else {\n colCount = this.columnManager.leafColumns().length;\n }\n var columns = [{\n key: 'extra-row',\n customRender: function customRender() {\n var expandedRowKeys = _this2.store.expandedRowKeys;\n\n var expanded = expandedRowKeys.includes(parentKey);\n return {\n attrs: {\n colSpan: colCount\n },\n children: fixed !== 'right' ? expandedRowRender(record, index, indent, expanded) : ' '\n };\n }\n }];\n if (expandIconAsCell && fixed !== 'right') {\n columns.unshift({\n key: 'expand-icon-placeholder',\n customRender: function customRender() {\n return null;\n }\n });\n }\n\n return h(TableRow, {\n key: rowKey,\n attrs: { columns: columns,\n\n rowKey: rowKey,\n ancestorKeys: ancestorKeys,\n prefixCls: prefixCls + '-expanded-row',\n indentSize: indentSize,\n indent: indent,\n fixed: fixed,\n components: components,\n expandedRow: true,\n hasExpandIcon: function hasExpandIcon() {}\n },\n 'class': className });\n },\n renderRows: function renderRows(_renderRows, rows, record, index, indent, fixed, parentKey, ancestorKeys) {\n var expandedRowClassName = this.expandedRowClassName,\n expandedRowRender = this.expandedRowRender,\n childrenColumnName = this.childrenColumnName;\n\n var childrenData = record[childrenColumnName];\n var nextAncestorKeys = [].concat(_toConsumableArray(ancestorKeys), [parentKey]);\n var nextIndent = indent + 1;\n\n if (expandedRowRender) {\n rows.push(this.renderExpandedRow(record, index, expandedRowRender, expandedRowClassName(record, index, indent), nextAncestorKeys, nextIndent, fixed));\n }\n\n if (childrenData) {\n rows.push.apply(rows, _toConsumableArray(_renderRows(childrenData, nextIndent, nextAncestorKeys)));\n }\n }\n },\n\n render: function render() {\n var data = this.data,\n childrenColumnName = this.childrenColumnName,\n $scopedSlots = this.$scopedSlots;\n\n var props = getOptionProps(this);\n var needIndentSpaced = data.some(function (record) {\n return record[childrenColumnName];\n });\n\n return $scopedSlots['default'] && $scopedSlots['default']({\n props: props,\n on: getListeners(this),\n needIndentSpaced: needIndentSpaced,\n renderRows: this.renderRows,\n handleExpandChange: this.handleExpandChange,\n renderExpandIndentCell: this.renderExpandIndentCell\n });\n }\n};\n\nexport default ExpandableTable;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\n/* eslint-disable camelcase */\nimport shallowequal from 'shallowequal';\nimport merge from 'lodash/merge';\nimport classes from 'component-classes';\nimport classNames from 'classnames';\nimport PropTypes from '../../_util/vue-types';\nimport { debounce } from './utils';\nimport warning from '../../_util/warning';\nimport addEventListener from '../../vc-util/Dom/addEventListener';\nimport ColumnManager from './ColumnManager';\nimport HeadTable from './HeadTable';\nimport BodyTable from './BodyTable';\nimport ExpandableTable from './ExpandableTable';\nimport { initDefaultProps, getOptionProps, getListeners } from '../../_util/props-util';\nimport BaseMixin from '../../_util/BaseMixin';\nimport Vue from 'vue';\n\nexport default {\n name: 'Table',\n mixins: [BaseMixin],\n provide: function provide() {\n return { 'table-store': this.store, table: this };\n },\n\n props: initDefaultProps({\n data: PropTypes.array,\n useFixedHeader: PropTypes.bool,\n columns: PropTypes.array,\n prefixCls: PropTypes.string,\n bodyStyle: PropTypes.object,\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n rowClassName: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n customRow: PropTypes.func,\n customHeaderRow: PropTypes.func,\n // onRowClick: PropTypes.func,\n // onRowDoubleClick: PropTypes.func,\n // onRowContextMenu: PropTypes.func,\n // onRowMouseEnter: PropTypes.func,\n // onRowMouseLeave: PropTypes.func,\n showHeader: PropTypes.bool,\n title: PropTypes.func,\n id: PropTypes.string,\n footer: PropTypes.func,\n emptyText: PropTypes.any,\n scroll: PropTypes.object,\n rowRef: PropTypes.func,\n getBodyWrapper: PropTypes.func,\n components: PropTypes.shape({\n table: PropTypes.any,\n header: PropTypes.shape({\n wrapper: PropTypes.any,\n row: PropTypes.any,\n cell: PropTypes.any\n }),\n body: PropTypes.shape({\n wrapper: PropTypes.any,\n row: PropTypes.any,\n cell: PropTypes.any\n })\n }),\n expandIconAsCell: PropTypes.bool,\n expandedRowKeys: PropTypes.array,\n expandedRowClassName: PropTypes.func,\n defaultExpandAllRows: PropTypes.bool,\n defaultExpandedRowKeys: PropTypes.array,\n expandIconColumnIndex: PropTypes.number,\n expandedRowRender: PropTypes.func,\n childrenColumnName: PropTypes.string,\n indentSize: PropTypes.number,\n expandRowByClick: PropTypes.bool,\n expandIcon: PropTypes.func,\n tableLayout: PropTypes.string,\n transformCellText: PropTypes.func\n }, {\n data: [],\n useFixedHeader: false,\n rowKey: 'key',\n rowClassName: function rowClassName() {\n return '';\n },\n prefixCls: 'rc-table',\n bodyStyle: {},\n showHeader: true,\n scroll: {},\n rowRef: function rowRef() {\n return null;\n },\n emptyText: function emptyText() {\n return 'No Data';\n },\n customHeaderRow: function customHeaderRow() {}\n }),\n data: function data() {\n this.preData = [].concat(_toConsumableArray(this.data));\n this.store = (this.$root.constructor.observable || Vue.observable)({\n currentHoverKey: null,\n fixedColumnsHeadRowsHeight: [],\n fixedColumnsBodyRowsHeight: {},\n expandedRowsHeight: {},\n expandedRowKeys: []\n });\n return {\n columnManager: new ColumnManager(this.columns),\n sComponents: merge({\n table: 'table',\n header: {\n wrapper: 'thead',\n row: 'tr',\n cell: 'th'\n },\n body: {\n wrapper: 'tbody',\n row: 'tr',\n cell: 'td'\n }\n }, this.components)\n };\n },\n\n watch: {\n components: function components() {\n this._components = merge({\n table: 'table',\n header: {\n wrapper: 'thead',\n row: 'tr',\n cell: 'th'\n },\n body: {\n wrapper: 'tbody',\n row: 'tr',\n cell: 'td'\n }\n }, this.components);\n },\n columns: function columns(val) {\n if (val) {\n this.columnManager.reset(val);\n }\n },\n data: function data(val) {\n var _this = this;\n\n if (val.length === 0 && this.hasScrollX()) {\n this.$nextTick(function () {\n _this.resetScrollX();\n });\n }\n }\n },\n\n // static childContextTypes = {\n // table: PropTypes.any,\n // components: PropTypes.any,\n // },\n\n created: function created() {\n var _this2 = this;\n\n ['rowClick', 'rowDoubleclick', 'rowContextmenu', 'rowMouseenter', 'rowMouseleave'].forEach(function (name) {\n warning(getListeners(_this2)[name] === undefined, name + ' is deprecated, please use customRow instead.');\n });\n\n warning(this.getBodyWrapper === undefined, 'getBodyWrapper is deprecated, please use custom components instead.');\n\n this.setScrollPosition('left');\n\n this.debouncedWindowResize = debounce(this.handleWindowResize, 150);\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.$nextTick(function () {\n if (_this3.columnManager.isAnyColumnsFixed()) {\n _this3.handleWindowResize();\n _this3.resizeEvent = addEventListener(window, 'resize', _this3.debouncedWindowResize);\n }\n // https://github.com/ant-design/ant-design/issues/11635\n if (_this3.ref_headTable) {\n _this3.ref_headTable.scrollLeft = 0;\n }\n if (_this3.ref_bodyTable) {\n _this3.ref_bodyTable.scrollLeft = 0;\n }\n });\n },\n updated: function updated() {\n var _this4 = this;\n\n this.$nextTick(function () {\n if (_this4.columnManager.isAnyColumnsFixed()) {\n _this4.handleWindowResize();\n if (!_this4.resizeEvent) {\n _this4.resizeEvent = addEventListener(window, 'resize', _this4.debouncedWindowResize);\n }\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n if (this.resizeEvent) {\n this.resizeEvent.remove();\n }\n if (this.debouncedWindowResize) {\n this.debouncedWindowResize.cancel();\n }\n },\n\n methods: {\n getRowKey: function getRowKey(record, index) {\n var rowKey = this.rowKey;\n var key = typeof rowKey === 'function' ? rowKey(record, index) : record[rowKey];\n warning(key !== undefined, 'Each record in table should have a unique `key` prop,' + 'or set `rowKey` to an unique primary key.');\n return key === undefined ? index : key;\n },\n setScrollPosition: function setScrollPosition(position) {\n this.scrollPosition = position;\n if (this.tableNode) {\n var prefixCls = this.prefixCls;\n\n if (position === 'both') {\n classes(this.tableNode).remove(new RegExp('^' + prefixCls + '-scroll-position-.+$')).add(prefixCls + '-scroll-position-left').add(prefixCls + '-scroll-position-right');\n } else {\n classes(this.tableNode).remove(new RegExp('^' + prefixCls + '-scroll-position-.+$')).add(prefixCls + '-scroll-position-' + position);\n }\n }\n },\n setScrollPositionClassName: function setScrollPositionClassName() {\n var node = this.ref_bodyTable;\n var scrollToLeft = node.scrollLeft === 0;\n var scrollToRight = node.scrollLeft + 1 >= node.children[0].getBoundingClientRect().width - node.getBoundingClientRect().width;\n if (scrollToLeft && scrollToRight) {\n this.setScrollPosition('both');\n } else if (scrollToLeft) {\n this.setScrollPosition('left');\n } else if (scrollToRight) {\n this.setScrollPosition('right');\n } else if (this.scrollPosition !== 'middle') {\n this.setScrollPosition('middle');\n }\n },\n isTableLayoutFixed: function isTableLayoutFixed() {\n var _$props = this.$props,\n tableLayout = _$props.tableLayout,\n _$props$columns = _$props.columns,\n columns = _$props$columns === undefined ? [] : _$props$columns,\n useFixedHeader = _$props.useFixedHeader,\n _$props$scroll = _$props.scroll,\n scroll = _$props$scroll === undefined ? {} : _$props$scroll;\n\n if (typeof tableLayout !== 'undefined') {\n return tableLayout === 'fixed';\n }\n // if one column is ellipsis, use fixed table layout to fix align issue\n if (columns.some(function (_ref) {\n var ellipsis = _ref.ellipsis;\n return !!ellipsis;\n })) {\n return true;\n }\n // if header fixed, use fixed table layout to fix align issue\n if (useFixedHeader || scroll.y) {\n return true;\n }\n // if scroll.x is number/px/% width value, we should fixed table layout\n // to avoid long word layout broken issue\n if (scroll.x && scroll.x !== true && scroll.x !== 'max-content') {\n return true;\n }\n return false;\n },\n handleWindowResize: function handleWindowResize() {\n this.syncFixedTableRowHeight();\n this.setScrollPositionClassName();\n },\n syncFixedTableRowHeight: function syncFixedTableRowHeight() {\n var tableRect = this.tableNode.getBoundingClientRect();\n // If tableNode's height less than 0, suppose it is hidden and don't recalculate rowHeight.\n // see: https://github.com/ant-design/ant-design/issues/4836\n if (tableRect.height !== undefined && tableRect.height <= 0) {\n return;\n }\n var prefixCls = this.prefixCls;\n\n var headRows = this.ref_headTable ? this.ref_headTable.querySelectorAll('thead') : this.ref_bodyTable.querySelectorAll('thead');\n var bodyRows = this.ref_bodyTable.querySelectorAll('.' + prefixCls + '-row') || [];\n var fixedColumnsHeadRowsHeight = [].map.call(headRows, function (row) {\n return row.getBoundingClientRect().height ? row.getBoundingClientRect().height - 0.5 : 'auto';\n });\n var state = this.store;\n var fixedColumnsBodyRowsHeight = [].reduce.call(bodyRows, function (acc, row) {\n var rowKey = row.getAttribute('data-row-key');\n var height = row.getBoundingClientRect().height || state.fixedColumnsBodyRowsHeight[rowKey] || 'auto';\n acc[rowKey] = height;\n return acc;\n }, {});\n if (shallowequal(state.fixedColumnsHeadRowsHeight, fixedColumnsHeadRowsHeight) && shallowequal(state.fixedColumnsBodyRowsHeight, fixedColumnsBodyRowsHeight)) {\n return;\n }\n this.store.fixedColumnsHeadRowsHeight = fixedColumnsHeadRowsHeight;\n this.store.fixedColumnsBodyRowsHeight = fixedColumnsBodyRowsHeight;\n },\n resetScrollX: function resetScrollX() {\n if (this.ref_headTable) {\n this.ref_headTable.scrollLeft = 0;\n }\n if (this.ref_bodyTable) {\n this.ref_bodyTable.scrollLeft = 0;\n }\n },\n hasScrollX: function hasScrollX() {\n var _scroll = this.scroll,\n scroll = _scroll === undefined ? {} : _scroll;\n\n return 'x' in scroll;\n },\n handleBodyScrollLeft: function handleBodyScrollLeft(e) {\n // Fix https://github.com/ant-design/ant-design/issues/7635\n if (e.currentTarget !== e.target) {\n return;\n }\n var target = e.target;\n var _scroll2 = this.scroll,\n scroll = _scroll2 === undefined ? {} : _scroll2;\n var ref_headTable = this.ref_headTable,\n ref_bodyTable = this.ref_bodyTable;\n\n if (target.scrollLeft !== this.lastScrollLeft && scroll.x) {\n if (target === ref_bodyTable && ref_headTable) {\n ref_headTable.scrollLeft = target.scrollLeft;\n } else if (target === ref_headTable && ref_bodyTable) {\n ref_bodyTable.scrollLeft = target.scrollLeft;\n }\n this.setScrollPositionClassName();\n }\n // Remember last scrollLeft for scroll direction detecting.\n this.lastScrollLeft = target.scrollLeft;\n },\n handleBodyScrollTop: function handleBodyScrollTop(e) {\n var target = e.target;\n // Fix https://github.com/ant-design/ant-design/issues/9033\n if (e.currentTarget !== target) {\n return;\n }\n var _scroll3 = this.scroll,\n scroll = _scroll3 === undefined ? {} : _scroll3;\n var ref_headTable = this.ref_headTable,\n ref_bodyTable = this.ref_bodyTable,\n ref_fixedColumnsBodyLeft = this.ref_fixedColumnsBodyLeft,\n ref_fixedColumnsBodyRight = this.ref_fixedColumnsBodyRight;\n\n if (target.scrollTop !== this.lastScrollTop && scroll.y && target !== ref_headTable) {\n var scrollTop = target.scrollTop;\n if (ref_fixedColumnsBodyLeft && target !== ref_fixedColumnsBodyLeft) {\n ref_fixedColumnsBodyLeft.scrollTop = scrollTop;\n }\n if (ref_fixedColumnsBodyRight && target !== ref_fixedColumnsBodyRight) {\n ref_fixedColumnsBodyRight.scrollTop = scrollTop;\n }\n if (ref_bodyTable && target !== ref_bodyTable) {\n ref_bodyTable.scrollTop = scrollTop;\n }\n }\n // Remember last scrollTop for scroll direction detecting.\n this.lastScrollTop = target.scrollTop;\n },\n handleBodyScroll: function handleBodyScroll(e) {\n this.handleBodyScrollLeft(e);\n this.handleBodyScrollTop(e);\n },\n handleWheel: function handleWheel(event) {\n var _$props$scroll2 = this.$props.scroll,\n scroll = _$props$scroll2 === undefined ? {} : _$props$scroll2;\n\n if (window.navigator.userAgent.match(/Trident\\/7\\./) && scroll.y) {\n event.preventDefault();\n var wd = event.deltaY;\n var target = event.target;\n var bodyTable = this.ref_bodyTable,\n fixedColumnsBodyLeft = this.ref_fixedColumnsBodyLeft,\n fixedColumnsBodyRight = this.ref_fixedColumnsBodyRight;\n\n var scrollTop = 0;\n\n if (this.lastScrollTop) {\n scrollTop = this.lastScrollTop + wd;\n } else {\n scrollTop = wd;\n }\n\n if (fixedColumnsBodyLeft && target !== fixedColumnsBodyLeft) {\n fixedColumnsBodyLeft.scrollTop = scrollTop;\n }\n if (fixedColumnsBodyRight && target !== fixedColumnsBodyRight) {\n fixedColumnsBodyRight.scrollTop = scrollTop;\n }\n if (bodyTable && target !== bodyTable) {\n bodyTable.scrollTop = scrollTop;\n }\n }\n },\n\n // saveChildrenRef(name, node) {\n // this[`ref_${name}`] = node;\n // },\n saveRef: function saveRef(name) {\n var _this5 = this;\n\n return function (node) {\n _this5['ref_' + name] = node;\n };\n },\n saveTableNodeRef: function saveTableNodeRef(node) {\n this.tableNode = node;\n },\n renderMainTable: function renderMainTable() {\n var h = this.$createElement;\n var scroll = this.scroll,\n prefixCls = this.prefixCls;\n\n var isAnyColumnsFixed = this.columnManager.isAnyColumnsFixed();\n var scrollable = isAnyColumnsFixed || scroll.x || scroll.y;\n\n var table = [this.renderTable({\n columns: this.columnManager.groupedColumns(),\n isAnyColumnsFixed: isAnyColumnsFixed\n }), this.renderEmptyText(), this.renderFooter()];\n\n return scrollable ? h(\n 'div',\n { 'class': prefixCls + '-scroll' },\n [table]\n ) : table;\n },\n renderLeftFixedTable: function renderLeftFixedTable() {\n var h = this.$createElement;\n var prefixCls = this.prefixCls;\n\n\n return h(\n 'div',\n { 'class': prefixCls + '-fixed-left' },\n [this.renderTable({\n columns: this.columnManager.leftColumns(),\n fixed: 'left'\n })]\n );\n },\n renderRightFixedTable: function renderRightFixedTable() {\n var h = this.$createElement;\n var prefixCls = this.prefixCls;\n\n\n return h(\n 'div',\n { 'class': prefixCls + '-fixed-right' },\n [this.renderTable({\n columns: this.columnManager.rightColumns(),\n fixed: 'right'\n })]\n );\n },\n renderTable: function renderTable(options) {\n var h = this.$createElement;\n var columns = options.columns,\n fixed = options.fixed,\n isAnyColumnsFixed = options.isAnyColumnsFixed;\n var prefixCls = this.prefixCls,\n _scroll4 = this.scroll,\n scroll = _scroll4 === undefined ? {} : _scroll4;\n\n var tableClassName = scroll.x || fixed ? prefixCls + '-fixed' : '';\n\n var headTable = h(HeadTable, {\n key: 'head',\n attrs: { columns: columns,\n fixed: fixed,\n tableClassName: tableClassName,\n handleBodyScrollLeft: this.handleBodyScrollLeft,\n expander: this.expander\n }\n });\n\n var bodyTable = h(BodyTable, {\n key: 'body',\n attrs: { columns: columns,\n fixed: fixed,\n tableClassName: tableClassName,\n getRowKey: this.getRowKey,\n handleWheel: this.handleWheel,\n handleBodyScroll: this.handleBodyScroll,\n expander: this.expander,\n isAnyColumnsFixed: isAnyColumnsFixed\n }\n });\n\n return [headTable, bodyTable];\n },\n renderTitle: function renderTitle() {\n var h = this.$createElement;\n var title = this.title,\n prefixCls = this.prefixCls,\n data = this.data;\n\n return title ? h(\n 'div',\n { 'class': prefixCls + '-title', key: 'title' },\n [title(data)]\n ) : null;\n },\n renderFooter: function renderFooter() {\n var h = this.$createElement;\n var footer = this.footer,\n prefixCls = this.prefixCls,\n data = this.data;\n\n return footer ? h(\n 'div',\n { 'class': prefixCls + '-footer', key: 'footer' },\n [footer(data)]\n ) : null;\n },\n renderEmptyText: function renderEmptyText() {\n var h = this.$createElement;\n var emptyText = this.emptyText,\n prefixCls = this.prefixCls,\n data = this.data;\n\n if (data.length) {\n return null;\n }\n var emptyClassName = prefixCls + '-placeholder';\n return h(\n 'div',\n { 'class': emptyClassName, key: 'emptyText' },\n [typeof emptyText === 'function' ? emptyText() : emptyText]\n );\n }\n },\n\n render: function render() {\n var _classNames,\n _this6 = this;\n\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var columnManager = this.columnManager,\n getRowKey = this.getRowKey;\n\n var prefixCls = props.prefixCls;\n\n var tableClassName = classNames(props.prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-fixed-header', props.useFixedHeader || props.scroll && props.scroll.y), _defineProperty(_classNames, prefixCls + '-scroll-position-left ' + prefixCls + '-scroll-position-right', this.scrollPosition === 'both'), _defineProperty(_classNames, prefixCls + '-scroll-position-' + this.scrollPosition, this.scrollPosition !== 'both'), _defineProperty(_classNames, prefixCls + '-layout-fixed', this.isTableLayoutFixed()), _classNames));\n\n var hasLeftFixed = columnManager.isAnyColumnsLeftFixed();\n var hasRightFixed = columnManager.isAnyColumnsRightFixed();\n\n var expandableTableProps = {\n props: _extends({}, props, {\n columnManager: columnManager,\n getRowKey: getRowKey\n }),\n on: getListeners(this),\n scopedSlots: {\n 'default': function _default(expander) {\n _this6.expander = expander;\n return h(\n 'div',\n _mergeJSXProps([{\n directives: [{\n name: 'ant-ref',\n value: _this6.saveTableNodeRef\n }]\n }, {\n 'class': tableClassName\n // style={props.style}\n // id={props.id}\n }]),\n [_this6.renderTitle(), h(\n 'div',\n { 'class': prefixCls + '-content' },\n [_this6.renderMainTable(), hasLeftFixed && _this6.renderLeftFixedTable(), hasRightFixed && _this6.renderRightFixedTable()]\n )]\n );\n }\n }\n };\n return h(ExpandableTable, expandableTableProps);\n }\n};","import PropTypes from '../../_util/vue-types';\n\nexport default {\n name: 'Column',\n props: {\n rowSpan: PropTypes.number,\n colSpan: PropTypes.number,\n title: PropTypes.any,\n dataIndex: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n ellipsis: PropTypes.bool,\n fixed: PropTypes.oneOf([true, 'left', 'right']),\n align: PropTypes.oneOf(['left', 'center', 'right']),\n customRender: PropTypes.func,\n className: PropTypes.string,\n // onCellClick: PropTypes.func,\n customCell: PropTypes.func,\n customHeaderCell: PropTypes.func\n }\n};","import PropTypes from '../../_util/vue-types';\n\nexport default {\n name: 'ColumnGroup',\n props: {\n title: PropTypes.any\n },\n isTableColumnGroup: true\n};","import _extends from 'babel-runtime/helpers/extends';\n// base rc-table 6.10.9\nimport T from './src/Table';\nimport Column from './src/Column';\nimport ColumnGroup from './src/ColumnGroup';\nimport { getOptionProps, getKey, getClass, getStyle, getEvents, getSlotOptions, camelize, getSlots, getListeners } from '../_util/props-util';\nimport { INTERNAL_COL_DEFINE } from './src/utils';\nvar Table = {\n name: 'Table',\n Column: Column,\n ColumnGroup: ColumnGroup,\n props: T.props,\n methods: {\n getTableNode: function getTableNode() {\n return this.$refs.table.tableNode;\n },\n getBodyTable: function getBodyTable() {\n return this.$refs.table.ref_bodyTable;\n },\n normalize: function normalize() {\n var _this = this;\n\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var columns = [];\n elements.forEach(function (element) {\n if (!element.tag) {\n return;\n }\n var key = getKey(element);\n var style = getStyle(element);\n var cls = getClass(element);\n var props = getOptionProps(element);\n var events = getEvents(element);\n var listeners = {};\n Object.keys(events).forEach(function (e) {\n var k = 'on-' + e;\n listeners[camelize(k)] = events[e];\n });\n\n var _getSlots = getSlots(element),\n children = _getSlots['default'],\n title = _getSlots.title;\n\n var column = _extends({ title: title }, props, { style: style, 'class': cls }, listeners);\n if (key) {\n column.key = key;\n }\n if (getSlotOptions(element).isTableColumnGroup) {\n column.children = _this.normalize(typeof children === 'function' ? children() : children);\n } else {\n var customRender = element.data && element.data.scopedSlots && element.data.scopedSlots['default'];\n column.customRender = column.customRender || customRender;\n }\n columns.push(column);\n });\n return columns;\n }\n },\n render: function render() {\n var h = arguments[0];\n var $slots = this.$slots,\n normalize = this.normalize;\n\n var props = getOptionProps(this);\n var columns = props.columns || normalize($slots['default']);\n var tProps = {\n props: _extends({}, props, {\n columns: columns\n }),\n on: getListeners(this),\n ref: 'table'\n };\n return h(T, tProps);\n }\n};\n\nexport default Table;\nexport { Column, ColumnGroup, INTERNAL_COL_DEFINE };","export default {\n name: 'FilterDropdownMenuWrapper',\n methods: {\n handelClick: function handelClick(e) {\n e.stopPropagation();\n //this.$emit('click', e);\n }\n },\n render: function render() {\n var h = arguments[0];\n var $slots = this.$slots,\n handelClick = this.handelClick;\n\n return h(\n 'div',\n {\n on: {\n 'click': handelClick\n }\n },\n [$slots['default']]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { PaginationProps as getPaginationProps } from '../pagination';\nimport { SpinProps as getSpinProps } from '../spin';\n\nvar PaginationProps = getPaginationProps();\nvar SpinProps = getSpinProps();\n\n// export type CompareFn = ((a: T, b: T) => number);\nexport var ColumnFilterItem = PropTypes.shape({\n text: PropTypes.string,\n value: PropTypes.string,\n children: PropTypes.array\n}).loose;\n\nexport var ColumnProps = {\n title: PropTypes.any,\n // key?: React.Key;\n dataIndex: PropTypes.string,\n customRender: PropTypes.func,\n customCell: PropTypes.func,\n customHeaderCell: PropTypes.func,\n align: PropTypes.oneOf(['left', 'right', 'center']),\n ellipsis: PropTypes.bool,\n filters: PropTypes.arrayOf(ColumnFilterItem),\n // onFilter: (value: any, record: T) => PropTypes.bool,\n filterMultiple: PropTypes.bool,\n filterDropdown: PropTypes.any,\n filterDropdownVisible: PropTypes.bool,\n // onFilterDropdownVisibleChange?: (visible: boolean) => void;\n sorter: PropTypes.oneOfType([PropTypes.boolean, PropTypes.func]),\n defaultSortOrder: PropTypes.oneOf(['ascend', 'descend']),\n colSpan: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n className: PropTypes.string,\n fixed: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right'])]),\n filterIcon: PropTypes.any,\n filteredValue: PropTypes.array,\n filtered: PropTypes.bool,\n defaultFilteredValue: PropTypes.array,\n sortOrder: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['ascend', 'descend'])]),\n sortDirections: PropTypes.array\n // children?: ColumnProps[];\n // onCellClick?: (record: T, event: any) => void;\n // onCell?: (record: T) => any;\n // onHeaderCell?: (props: ColumnProps) => any;\n};\n\n// export interface TableComponents {\n// table?: any;\n// header?: {\n// wrapper?: any;\n// row?: any;\n// cell?: any;\n// };\n// body?: {\n// wrapper?: any;\n// row?: any;\n// cell?: any;\n// };\n// }\n\nexport var TableLocale = PropTypes.shape({\n filterTitle: PropTypes.string,\n filterConfirm: PropTypes.any,\n filterReset: PropTypes.any,\n emptyText: PropTypes.any,\n selectAll: PropTypes.any,\n selectInvert: PropTypes.any,\n sortTitle: PropTypes.string,\n expand: PropTypes.string,\n collapse: PropTypes.string\n}).loose;\n\nexport var RowSelectionType = PropTypes.oneOf(['checkbox', 'radio']);\n// export type SelectionSelectFn = (record: T, selected: boolean, selectedRows: Object[]) => any;\n\nexport var TableRowSelection = {\n type: RowSelectionType,\n selectedRowKeys: PropTypes.array,\n // onChange?: (selectedRowKeys: string[] | number[], selectedRows: Object[]) => any;\n getCheckboxProps: PropTypes.func,\n // onSelect?: SelectionSelectFn;\n // onSelectAll?: (selected: boolean, selectedRows: Object[], changeRows: Object[]) => any;\n // onSelectInvert?: (selectedRows: Object[]) => any;\n selections: PropTypes.oneOfType([PropTypes.array, PropTypes.bool]),\n hideDefaultSelections: PropTypes.bool,\n fixed: PropTypes.bool,\n columnWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n selectWay: PropTypes.oneOf(['onSelect', 'onSelectMultiple', 'onSelectAll', 'onSelectInvert']),\n columnTitle: PropTypes.any\n};\n\nexport var TableProps = {\n prefixCls: PropTypes.string,\n dropdownPrefixCls: PropTypes.string,\n rowSelection: PropTypes.oneOfType([PropTypes.shape(TableRowSelection).loose, null]),\n pagination: PropTypes.oneOfType([PropTypes.shape(_extends({}, PaginationProps, {\n position: PropTypes.oneOf(['top', 'bottom', 'both'])\n })).loose, PropTypes.bool]),\n size: PropTypes.oneOf(['default', 'middle', 'small', 'large']),\n dataSource: PropTypes.array,\n components: PropTypes.object,\n columns: PropTypes.array,\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n rowClassName: PropTypes.func,\n expandedRowRender: PropTypes.any,\n defaultExpandAllRows: PropTypes.bool,\n defaultExpandedRowKeys: PropTypes.array,\n expandedRowKeys: PropTypes.array,\n expandIconAsCell: PropTypes.bool,\n expandIconColumnIndex: PropTypes.number,\n expandRowByClick: PropTypes.bool,\n // onExpandedRowsChange?: (expandedRowKeys: string[] | number[]) => void;\n // onExpand?: (expanded: boolean, record: T) => void;\n // onChange?: (pagination: PaginationProps | boolean, filters: string[], sorter: Object) => any;\n loading: PropTypes.oneOfType([PropTypes.shape(SpinProps).loose, PropTypes.bool]),\n locale: TableLocale,\n indentSize: PropTypes.number,\n // onRowClick?: (record: T, index: number, event: Event) => any;\n customRow: PropTypes.func,\n customHeaderRow: PropTypes.func,\n useFixedHeader: PropTypes.bool,\n bordered: PropTypes.bool,\n showHeader: PropTypes.bool,\n footer: PropTypes.func,\n title: PropTypes.func,\n scroll: PropTypes.object,\n childrenColumnName: PropTypes.oneOfType([PropTypes.array, PropTypes.string]),\n bodyStyle: PropTypes.any,\n sortDirections: PropTypes.array,\n tableLayout: PropTypes.string,\n getPopupContainer: PropTypes.func,\n expandIcon: PropTypes.func,\n transformCellText: PropTypes.func\n // className?: PropTypes.string,\n // style?: React.CSSProperties;\n // children?: React.ReactNode;\n};\n\n// export interface TableStateFilters {\n// [key: string]: string[];\n// }\n\n// export interface TableState {\n// pagination: PaginationProps;\n// filters: TableStateFilters;\n// sortColumn: ColumnProps | null;\n// sortOrder: PropTypes.string,\n// }\n\n// export type SelectionItemSelectFn = (key: string[]) => any;\n\n// export interface SelectionItem {\n// key: PropTypes.string,\n// text: PropTypes.any,\n// onSelect: SelectionItemSelectFn;\n// }\n\nexport var SelectionCheckboxAllProps = {\n store: PropTypes.any,\n locale: PropTypes.any,\n disabled: PropTypes.bool,\n getCheckboxPropsByItem: PropTypes.func,\n getRecordKey: PropTypes.func,\n data: PropTypes.array,\n prefixCls: PropTypes.string,\n // onSelect: (key: string, index: number, selectFunc: any) => void;\n hideDefaultSelections: PropTypes.bool,\n selections: PropTypes.oneOfType([PropTypes.array, PropTypes.bool]),\n getPopupContainer: PropTypes.func\n};\n\n// export interface SelectionCheckboxAllState {\n// checked: PropTypes.bool,\n// indeterminate: PropTypes.bool,\n// }\n\nexport var SelectionBoxProps = {\n store: PropTypes.any,\n type: RowSelectionType,\n defaultSelection: PropTypes.arrayOf([PropTypes.string, PropTypes.number]),\n rowIndex: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n name: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string\n // onChange: React.ChangeEventHandler;\n};\n\n// export interface SelectionBoxState {\n// checked?: PropTypes.bool,\n// }\n\nexport var FilterMenuProps = {\n _propsSymbol: PropTypes.any,\n locale: TableLocale,\n selectedKeys: PropTypes.arrayOf([PropTypes.string, PropTypes.number]),\n column: PropTypes.object,\n confirmFilter: PropTypes.func,\n prefixCls: PropTypes.string,\n dropdownPrefixCls: PropTypes.string,\n getPopupContainer: PropTypes.func,\n handleFilter: PropTypes.func\n};\n\n// export interface FilterMenuState {\n// selectedKeys: string[];\n// keyPathOfSelectedItem: { [key: string]: string };\n// visible?: PropTypes.bool,\n// }","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\nexport function flatArray() {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var childrenName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'children';\n\n var result = [];\n var loop = function loop(array) {\n array.forEach(function (item) {\n if (item[childrenName]) {\n var newItem = _extends({}, item);\n delete newItem[childrenName];\n result.push(newItem);\n if (item[childrenName].length > 0) {\n loop(item[childrenName]);\n }\n } else {\n result.push(item);\n }\n });\n };\n loop(data);\n return result;\n}\n\nexport function treeMap(tree, mapper) {\n var childrenName = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'children';\n\n return tree.map(function (node, index) {\n var extra = {};\n if (node[childrenName]) {\n extra[childrenName] = treeMap(node[childrenName], mapper, childrenName);\n }\n return _extends({}, mapper(node, index), extra);\n });\n}\n\nexport function flatFilter(tree, callback) {\n return tree.reduce(function (acc, node) {\n if (callback(node)) {\n acc.push(node);\n }\n if (node.children) {\n var children = flatFilter(node.children, callback);\n acc.push.apply(acc, _toConsumableArray(children));\n }\n return acc;\n }, []);\n}\n\n// export function normalizeColumns (elements) {\n// const columns = []\n// React.Children.forEach(elements, (element) => {\n// if (!React.isValidElement(element)) {\n// return\n// }\n// const column = {\n// ...element.props,\n// }\n// if (element.key) {\n// column.key = element.key\n// }\n// if (element.type && element.type.__ANT_TABLE_COLUMN_GROUP) {\n// column.children = normalizeColumns(column.children)\n// }\n// columns.push(column)\n// })\n// return columns\n// }\n\nexport function generateValueMaps(items) {\n var maps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n (items || []).forEach(function (_ref) {\n var value = _ref.value,\n children = _ref.children;\n\n maps[value.toString()] = value;\n generateValueMaps(children, maps);\n });\n return maps;\n}","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport Menu, { SubMenu, Item as MenuItem } from '../vc-menu';\nimport closest from 'dom-closest';\nimport classNames from 'classnames';\nimport shallowequal from 'shallowequal';\nimport Dropdown from '../dropdown';\nimport Icon from '../icon';\nimport Checkbox from '../checkbox';\nimport Radio from '../radio';\nimport FilterDropdownMenuWrapper from './FilterDropdownMenuWrapper';\nimport { FilterMenuProps } from './interface';\nimport { initDefaultProps, getOptionProps, isValidElement } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport BaseMixin from '../_util/BaseMixin';\nimport { generateValueMaps } from './util';\n\nfunction stopPropagation(e) {\n e.stopPropagation();\n}\n\nexport default {\n name: 'FilterMenu',\n mixins: [BaseMixin],\n props: initDefaultProps(FilterMenuProps, {\n handleFilter: function handleFilter() {},\n\n column: {}\n }),\n\n data: function data() {\n var visible = 'filterDropdownVisible' in this.column ? this.column.filterDropdownVisible : false;\n this.preProps = _extends({}, getOptionProps(this));\n return {\n sSelectedKeys: this.selectedKeys,\n sKeyPathOfSelectedItem: {}, // 记录所有有选中子菜单的祖先菜单\n sVisible: visible,\n sValueKeys: generateValueMaps(this.column.filters)\n };\n },\n\n watch: {\n _propsSymbol: function _propsSymbol() {\n var nextProps = getOptionProps(this);\n var column = nextProps.column;\n\n var newState = {};\n\n /**\n * if the state is visible the component should ignore updates on selectedKeys prop to avoid\n * that the user selection is lost\n * this happens frequently when a table is connected on some sort of realtime data\n * Fixes https://github.com/ant-design/ant-design/issues/10289 and\n * https://github.com/ant-design/ant-design/issues/10209\n */\n if ('selectedKeys' in nextProps && !shallowequal(this.preProps.selectedKeys, nextProps.selectedKeys)) {\n newState.sSelectedKeys = nextProps.selectedKeys;\n }\n if (!shallowequal((this.preProps.column || {}).filters, (nextProps.column || {}).filters)) {\n newState.sValueKeys = generateValueMaps(nextProps.column.filters);\n }\n if ('filterDropdownVisible' in column) {\n newState.sVisible = column.filterDropdownVisible;\n }\n if (Object.keys(newState).length > 0) {\n this.setState(newState);\n }\n this.preProps = _extends({}, nextProps);\n }\n },\n\n mounted: function mounted() {\n var _this = this;\n\n var column = this.column;\n\n this.$nextTick(function () {\n _this.setNeverShown(column);\n });\n },\n updated: function updated() {\n var _this2 = this;\n\n var column = this.column;\n\n this.$nextTick(function () {\n _this2.setNeverShown(column);\n });\n },\n\n methods: {\n getDropdownVisible: function getDropdownVisible() {\n return this.neverShown ? false : this.sVisible;\n },\n setNeverShown: function setNeverShown(column) {\n var rootNode = this.$el;\n var filterBelongToScrollBody = !!closest(rootNode, '.ant-table-scroll');\n if (filterBelongToScrollBody) {\n // When fixed column have filters, there will be two dropdown menus\n // Filter dropdown menu inside scroll body should never be shown\n // To fix https://github.com/ant-design/ant-design/issues/5010 and\n // https://github.com/ant-design/ant-design/issues/7909\n this.neverShown = !!column.fixed;\n }\n },\n setSelectedKeys: function setSelectedKeys(_ref) {\n var selectedKeys = _ref.selectedKeys;\n\n this.setState({ sSelectedKeys: selectedKeys });\n },\n setVisible: function setVisible(visible) {\n var column = this.column;\n\n if (!('filterDropdownVisible' in column)) {\n this.setState({ sVisible: visible });\n }\n if (column.onFilterDropdownVisibleChange) {\n column.onFilterDropdownVisibleChange(visible);\n }\n },\n handleClearFilters: function handleClearFilters() {\n this.setState({\n sSelectedKeys: []\n }, this.handleConfirm);\n },\n handleConfirm: function handleConfirm() {\n var _this3 = this;\n\n this.setVisible(false);\n this.confirmFilter2();\n // Call `setSelectedKeys` & `confirm` in the same time will make filter data not up to date\n // https://github.com/ant-design/ant-design/issues/12284\n this.$forceUpdate();\n this.$nextTick(function () {\n _this3.confirmFilter;\n });\n },\n onVisibleChange: function onVisibleChange(visible) {\n this.setVisible(visible);\n var column = this.$props.column;\n // https://github.com/ant-design/ant-design/issues/17833\n\n if (!visible && !(column.filterDropdown instanceof Function)) {\n this.confirmFilter2();\n }\n },\n handleMenuItemClick: function handleMenuItemClick(info) {\n var selectedKeys = this.$data.sSelectedKeys;\n\n if (!info.keyPath || info.keyPath.length <= 1) {\n return;\n }\n var keyPathOfSelectedItem = this.$data.sKeyPathOfSelectedItem;\n\n if (selectedKeys && selectedKeys.indexOf(info.key) >= 0) {\n // deselect SubMenu child\n delete keyPathOfSelectedItem[info.key];\n } else {\n // select SubMenu child\n keyPathOfSelectedItem[info.key] = info.keyPath;\n }\n this.setState({ sKeyPathOfSelectedItem: keyPathOfSelectedItem });\n },\n hasSubMenu: function hasSubMenu() {\n var _column$filters = this.column.filters,\n filters = _column$filters === undefined ? [] : _column$filters;\n\n return filters.some(function (item) {\n return !!(item.children && item.children.length > 0);\n });\n },\n confirmFilter2: function confirmFilter2() {\n var _$props = this.$props,\n column = _$props.column,\n propSelectedKeys = _$props.selectedKeys,\n confirmFilter = _$props.confirmFilter;\n var _$data = this.$data,\n selectedKeys = _$data.sSelectedKeys,\n valueKeys = _$data.sValueKeys;\n var filterDropdown = column.filterDropdown;\n\n\n if (!shallowequal(selectedKeys, propSelectedKeys)) {\n confirmFilter(column, filterDropdown ? selectedKeys : selectedKeys.map(function (key) {\n return valueKeys[key];\n }).filter(function (key) {\n return key !== undefined;\n }));\n }\n },\n renderMenus: function renderMenus(items) {\n var _this4 = this;\n\n var h = this.$createElement;\n var _$props2 = this.$props,\n dropdownPrefixCls = _$props2.dropdownPrefixCls,\n prefixCls = _$props2.prefixCls;\n\n return items.map(function (item) {\n if (item.children && item.children.length > 0) {\n var sKeyPathOfSelectedItem = _this4.sKeyPathOfSelectedItem;\n\n var containSelected = Object.keys(sKeyPathOfSelectedItem).some(function (key) {\n return sKeyPathOfSelectedItem[key].indexOf(item.value) >= 0;\n });\n var subMenuCls = classNames(prefixCls + '-dropdown-submenu', _defineProperty({}, dropdownPrefixCls + '-submenu-contain-selected', containSelected));\n return h(\n SubMenu,\n {\n attrs: { title: item.text, popupClassName: subMenuCls },\n key: item.value },\n [_this4.renderMenus(item.children)]\n );\n }\n return _this4.renderMenuItem(item);\n });\n },\n renderFilterIcon: function renderFilterIcon() {\n var _classNames2;\n\n var h = this.$createElement;\n var column = this.column,\n locale = this.locale,\n prefixCls = this.prefixCls,\n selectedKeys = this.selectedKeys;\n\n var filtered = selectedKeys && selectedKeys.length > 0;\n var filterIcon = column.filterIcon;\n if (typeof filterIcon === 'function') {\n filterIcon = filterIcon(filtered, column);\n }\n var dropdownIconClass = classNames((_classNames2 = {}, _defineProperty(_classNames2, prefixCls + '-selected', 'filtered' in column ? column.filtered : filtered), _defineProperty(_classNames2, prefixCls + '-open', this.getDropdownVisible()), _classNames2));\n if (!filterIcon) {\n return h(Icon, {\n attrs: {\n title: locale.filterTitle,\n type: 'filter',\n theme: 'filled'\n },\n 'class': dropdownIconClass,\n on: {\n 'click': stopPropagation\n }\n });\n }\n if (filterIcon.length === 1 && isValidElement(filterIcon[0])) {\n return cloneElement(filterIcon[0], {\n on: {\n click: stopPropagation\n },\n 'class': classNames(prefixCls + '-icon', dropdownIconClass)\n });\n }\n return h(\n 'span',\n { 'class': classNames(prefixCls + '-icon', dropdownIconClass) },\n [filterIcon]\n );\n },\n renderMenuItem: function renderMenuItem(item) {\n var h = this.$createElement;\n var column = this.column;\n var selectedKeys = this.$data.sSelectedKeys;\n\n var multiple = 'filterMultiple' in column ? column.filterMultiple : true;\n\n var input = multiple ? h(Checkbox, {\n attrs: { checked: selectedKeys && selectedKeys.indexOf(item.value) >= 0 }\n }) : h(Radio, {\n attrs: { checked: selectedKeys && selectedKeys.indexOf(item.value) >= 0 }\n });\n\n return h(\n MenuItem,\n { key: item.value },\n [input, h('span', [item.text])]\n );\n }\n },\n\n render: function render() {\n var _this5 = this;\n\n var h = arguments[0];\n var originSelectedKeys = this.$data.sSelectedKeys;\n var column = this.column,\n locale = this.locale,\n prefixCls = this.prefixCls,\n dropdownPrefixCls = this.dropdownPrefixCls,\n getPopupContainer = this.getPopupContainer;\n // default multiple selection in filter dropdown\n\n var multiple = 'filterMultiple' in column ? column.filterMultiple : true;\n var dropdownMenuClass = classNames(_defineProperty({}, dropdownPrefixCls + '-menu-without-submenu', !this.hasSubMenu()));\n var filterDropdown = column.filterDropdown;\n\n if (filterDropdown instanceof Function) {\n filterDropdown = filterDropdown({\n prefixCls: dropdownPrefixCls + '-custom',\n setSelectedKeys: function setSelectedKeys(selectedKeys) {\n return _this5.setSelectedKeys({ selectedKeys: selectedKeys });\n },\n selectedKeys: originSelectedKeys,\n confirm: this.handleConfirm,\n clearFilters: this.handleClearFilters,\n filters: column.filters,\n visible: this.getDropdownVisible(),\n column: column\n });\n }\n\n var menus = filterDropdown ? h(\n FilterDropdownMenuWrapper,\n { 'class': prefixCls + '-dropdown' },\n [filterDropdown]\n ) : h(\n FilterDropdownMenuWrapper,\n { 'class': prefixCls + '-dropdown' },\n [h(\n Menu,\n {\n attrs: {\n multiple: multiple,\n\n prefixCls: dropdownPrefixCls + '-menu',\n\n selectedKeys: originSelectedKeys && originSelectedKeys.map(function (val) {\n return val;\n }),\n getPopupContainer: getPopupContainer\n },\n on: {\n 'click': this.handleMenuItemClick,\n 'select': this.setSelectedKeys,\n 'deselect': this.setSelectedKeys\n },\n 'class': dropdownMenuClass\n },\n [this.renderMenus(column.filters)]\n ), h(\n 'div',\n { 'class': prefixCls + '-dropdown-btns' },\n [h(\n 'a',\n { 'class': prefixCls + '-dropdown-link confirm', on: {\n 'click': this.handleConfirm\n }\n },\n [locale.filterConfirm]\n ), h(\n 'a',\n { 'class': prefixCls + '-dropdown-link clear', on: {\n 'click': this.handleClearFilters\n }\n },\n [locale.filterReset]\n )]\n )]\n );\n\n return h(\n Dropdown,\n {\n attrs: {\n trigger: ['click'],\n placement: 'bottomRight',\n visible: this.getDropdownVisible(),\n\n getPopupContainer: getPopupContainer,\n forceRender: true\n },\n on: {\n 'visibleChange': this.onVisibleChange\n }\n },\n [h(\n 'template',\n { slot: 'overlay' },\n [menus]\n ), this.renderFilterIcon()]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport Checkbox from '../checkbox';\nimport Radio from '../radio';\nimport { SelectionBoxProps } from './interface';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getOptionProps, getListeners } from '../_util/props-util';\n\nexport default {\n name: 'SelectionBox',\n mixins: [BaseMixin],\n props: SelectionBoxProps,\n computed: {\n checked: function checked() {\n var _$props = this.$props,\n store = _$props.store,\n defaultSelection = _$props.defaultSelection,\n rowIndex = _$props.rowIndex;\n\n var checked = false;\n if (store.selectionDirty) {\n checked = store.selectedRowKeys.indexOf(rowIndex) >= 0;\n } else {\n checked = store.selectedRowKeys.indexOf(rowIndex) >= 0 || defaultSelection.indexOf(rowIndex) >= 0;\n }\n return checked;\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n type = _getOptionProps.type,\n rowIndex = _getOptionProps.rowIndex,\n rest = _objectWithoutProperties(_getOptionProps, ['type', 'rowIndex']);\n\n var checked = this.checked;\n\n var checkboxProps = {\n props: _extends({\n checked: checked\n }, rest),\n on: getListeners(this)\n };\n if (type === 'radio') {\n checkboxProps.props.value = rowIndex;\n return h(Radio, checkboxProps);\n }\n return h(Checkbox, checkboxProps);\n }\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport Checkbox from '../checkbox';\nimport Dropdown from '../dropdown';\nimport Menu from '../menu';\nimport Icon from '../icon';\nimport classNames from 'classnames';\nimport { SelectionCheckboxAllProps } from './interface';\nimport BaseMixin from '../_util/BaseMixin';\n\nfunction checkSelection(_ref) {\n var store = _ref.store,\n getCheckboxPropsByItem = _ref.getCheckboxPropsByItem,\n getRecordKey = _ref.getRecordKey,\n data = _ref.data,\n type = _ref.type,\n byDefaultChecked = _ref.byDefaultChecked;\n\n return byDefaultChecked ? data[type](function (item, i) {\n return getCheckboxPropsByItem(item, i).defaultChecked;\n }) : data[type](function (item, i) {\n return store.selectedRowKeys.indexOf(getRecordKey(item, i)) >= 0;\n });\n}\n\nfunction getIndeterminateState(props) {\n var store = props.store,\n data = props.data;\n\n if (!data.length) {\n return false;\n }\n\n var someCheckedNotByDefaultChecked = checkSelection(_extends({}, props, {\n data: data,\n type: 'some',\n byDefaultChecked: false\n })) && !checkSelection(_extends({}, props, {\n data: data,\n type: 'every',\n byDefaultChecked: false\n }));\n var someCheckedByDefaultChecked = checkSelection(_extends({}, props, {\n data: data,\n type: 'some',\n byDefaultChecked: true\n })) && !checkSelection(_extends({}, props, {\n data: data,\n type: 'every',\n byDefaultChecked: true\n }));\n\n if (store.selectionDirty) {\n return someCheckedNotByDefaultChecked;\n }\n return someCheckedNotByDefaultChecked || someCheckedByDefaultChecked;\n}\n\nfunction getCheckState(props) {\n var store = props.store,\n data = props.data;\n\n if (!data.length) {\n return false;\n }\n if (store.selectionDirty) {\n return checkSelection(_extends({}, props, {\n data: data,\n type: 'every',\n byDefaultChecked: false\n }));\n }\n return checkSelection(_extends({}, props, {\n data: data,\n type: 'every',\n byDefaultChecked: false\n })) || checkSelection(_extends({}, props, {\n data: data,\n type: 'every',\n byDefaultChecked: true\n }));\n}\n\nexport default {\n name: 'SelectionCheckboxAll',\n mixins: [BaseMixin],\n props: SelectionCheckboxAllProps,\n data: function data() {\n var props = this.$props;\n\n this.defaultSelections = props.hideDefaultSelections ? [] : [{\n key: 'all',\n text: props.locale.selectAll\n }, {\n key: 'invert',\n text: props.locale.selectInvert\n }];\n return {\n checked: getCheckState(props),\n indeterminate: getIndeterminateState(props)\n };\n },\n\n\n watch: {\n $props: {\n handler: function handler() {\n this.setCheckState(this.$props);\n },\n\n deep: true,\n immediate: true\n }\n },\n\n methods: {\n checkSelection: function checkSelection(props, data, type, byDefaultChecked) {\n var _ref2 = props || this.$props,\n store = _ref2.store,\n getCheckboxPropsByItem = _ref2.getCheckboxPropsByItem,\n getRecordKey = _ref2.getRecordKey;\n // type should be 'every' | 'some'\n\n\n if (type === 'every' || type === 'some') {\n return byDefaultChecked ? data[type](function (item, i) {\n return getCheckboxPropsByItem(item, i).props.defaultChecked;\n }) : data[type](function (item, i) {\n return store.selectedRowKeys.indexOf(getRecordKey(item, i)) >= 0;\n });\n }\n return false;\n },\n setCheckState: function setCheckState(props) {\n var checked = getCheckState(props);\n var indeterminate = getIndeterminateState(props);\n this.setState(function (prevState) {\n var newState = {};\n if (indeterminate !== prevState.indeterminate) {\n newState.indeterminate = indeterminate;\n }\n if (checked !== prevState.checked) {\n newState.checked = checked;\n }\n return newState;\n });\n },\n handleSelectAllChange: function handleSelectAllChange(e) {\n var checked = e.target.checked;\n\n this.$emit('select', checked ? 'all' : 'removeAll', 0, null);\n },\n renderMenus: function renderMenus(selections) {\n var _this = this;\n\n var h = this.$createElement;\n\n return selections.map(function (selection, index) {\n return h(\n Menu.Item,\n { key: selection.key || index },\n [h(\n 'div',\n {\n on: {\n 'click': function click() {\n _this.$emit('select', selection.key, index, selection.onSelect);\n }\n }\n },\n [selection.text]\n )]\n );\n });\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var disabled = this.disabled,\n prefixCls = this.prefixCls,\n selections = this.selections,\n getPopupContainer = this.getPopupContainer,\n checked = this.checked,\n indeterminate = this.indeterminate;\n\n\n var selectionPrefixCls = prefixCls + '-selection';\n\n var customSelections = null;\n\n if (selections) {\n var newSelections = Array.isArray(selections) ? this.defaultSelections.concat(selections) : this.defaultSelections;\n\n var menu = h(\n Menu,\n { 'class': selectionPrefixCls + '-menu', attrs: { selectedKeys: [] }\n },\n [this.renderMenus(newSelections)]\n );\n\n customSelections = newSelections.length > 0 ? h(\n Dropdown,\n {\n attrs: { getPopupContainer: getPopupContainer }\n },\n [h(\n 'template',\n { slot: 'overlay' },\n [menu]\n ), h(\n 'div',\n { 'class': selectionPrefixCls + '-down' },\n [h(Icon, {\n attrs: { type: 'down' }\n })]\n )]\n ) : null;\n }\n\n return h(\n 'div',\n { 'class': selectionPrefixCls },\n [h(Checkbox, {\n 'class': classNames(_defineProperty({}, selectionPrefixCls + '-select-all-custom', customSelections)),\n attrs: { checked: checked,\n indeterminate: indeterminate,\n disabled: disabled\n },\n on: {\n 'change': this.handleSelectAllChange\n }\n }), customSelections]\n );\n }\n};","import { ColumnProps } from './interface';\n\nexport default {\n name: 'ATableColumn',\n props: ColumnProps\n};","import PropTypes from '../_util/vue-types';\n\nexport default {\n name: 'ATableColumnGroup',\n props: {\n fixed: PropTypes.oneOfType([PropTypes.bool, PropTypes.oneOf(['left', 'right'])]),\n title: PropTypes.any\n },\n __ANT_TABLE_COLUMN_GROUP: true\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { getListeners } from '../_util/props-util';\n\nvar BodyRowProps = {\n store: PropTypes.any,\n rowKey: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n prefixCls: PropTypes.string\n};\n\nexport default function createBodyRow() {\n var Component = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'tr';\n\n var BodyRow = {\n name: 'BodyRow',\n props: BodyRowProps,\n computed: {\n selected: function selected() {\n return this.$props.store.selectedRowKeys.indexOf(this.$props.rowKey) >= 0;\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var className = _defineProperty({}, this.prefixCls + '-row-selected', this.selected);\n\n return h(\n Component,\n _mergeJSXProps([{ 'class': className }, { on: getListeners(this) }]),\n [this.$slots['default']]\n );\n }\n };\n\n return BodyRow;\n}","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\n/**\n * Wrap of sub component which need use as Button capacity (like Icon component).\n * This helps accessibility reader to tread as a interactive button to operation.\n */\nimport KeyCode from './KeyCode';\nimport PropTypes from './vue-types';\n\nvar inlineStyle = {\n border: 0,\n background: 'transparent',\n padding: 0,\n lineHeight: 'inherit',\n display: 'inline-block'\n};\n\nvar TransButton = {\n props: {\n noStyle: PropTypes.bool\n },\n\n methods: {\n onKeyDown: function onKeyDown(event) {\n var keyCode = event.keyCode;\n\n if (keyCode === KeyCode.ENTER) {\n event.preventDefault();\n }\n },\n onKeyUp: function onKeyUp(event) {\n var keyCode = event.keyCode;\n\n if (keyCode === KeyCode.ENTER) {\n this.$emit('click', event);\n }\n },\n setRef: function setRef(btn) {\n this.div = btn;\n },\n focus: function focus() {\n if (this.div) {\n this.div.focus();\n }\n },\n blur: function blur() {\n if (this.div) {\n this.div.blur();\n }\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var noStyle = this.$props.noStyle;\n\n\n return h(\n 'div',\n _mergeJSXProps([{\n attrs: {\n role: 'button',\n tabIndex: 0\n }\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.setRef\n }],\n on: _extends({}, this.$listeners, {\n keydown: this.onKeyDown,\n keyup: this.onKeyUp\n })\n }, {\n style: _extends({}, !noStyle ? inlineStyle : null)\n }]),\n [this.$slots['default']]\n );\n }\n};\n\nexport default TransButton;","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport _extends from 'babel-runtime/helpers/extends';\nimport VcTable, { INTERNAL_COL_DEFINE } from '../vc-table';\nimport classNames from 'classnames';\nimport shallowEqual from 'shallowequal';\nimport FilterDropdown from './filterDropdown';\nimport SelectionBox from './SelectionBox';\nimport SelectionCheckboxAll from './SelectionCheckboxAll';\nimport Column from './Column';\nimport ColumnGroup from './ColumnGroup';\nimport createBodyRow from './createBodyRow';\nimport { flatArray, treeMap, flatFilter } from './util';\nimport { initDefaultProps, mergeProps, getOptionProps, getListeners } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { TableProps } from './interface';\nimport Pagination from '../pagination';\nimport Icon from '../icon';\nimport Spin from '../spin';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport defaultLocale from '../locale-provider/default';\nimport warning from '../_util/warning';\nimport scrollTo from '../_util/scrollTo';\nimport TransButton from '../_util/transButton';\nimport Vue from 'vue';\n\nfunction noop() {}\n\nfunction stopPropagation(e) {\n e.stopPropagation();\n}\n\nfunction getRowSelection(props) {\n return props.rowSelection || {};\n}\n\nfunction getColumnKey(column, index) {\n return column.key || column.dataIndex || index;\n}\n\nfunction isSameColumn(a, b) {\n if (a && b && a.key && a.key === b.key) {\n return true;\n }\n return a === b || shallowEqual(a, b, function (value, other) {\n // https://github.com/ant-design/ant-design/issues/12737\n if (typeof value === 'function' && typeof other === 'function') {\n return value === other || value.toString() === other.toString();\n }\n // https://github.com/ant-design/ant-design/issues/19398\n if (Array.isArray(value) && Array.isArray(other)) {\n return value === other || shallowEqual(value, other);\n }\n });\n}\n\nvar defaultPagination = {\n onChange: noop,\n onShowSizeChange: noop\n};\n\n/**\n * Avoid creating new object, so that parent component's shouldComponentUpdate\n * can works appropriately。\n */\nvar emptyObject = {};\n\nvar createComponents = function createComponents() {\n var components = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var bodyRow = components && components.body && components.body.row;\n return _extends({}, components, {\n body: _extends({}, components.body, {\n row: createBodyRow(bodyRow)\n })\n });\n};\n\nfunction isTheSameComponents() {\n var components1 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var components2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n return components1 === components2 || ['table', 'header', 'body'].every(function (key) {\n return shallowEqual(components1[key], components2[key]);\n });\n}\n\nfunction getFilteredValueColumns(state, columns) {\n return flatFilter(columns || (state || {}).columns || [], function (column) {\n return typeof column.filteredValue !== 'undefined';\n });\n}\n\nfunction getFiltersFromColumns(state, columns) {\n var filters = {};\n getFilteredValueColumns(state, columns).forEach(function (col) {\n var colKey = getColumnKey(col);\n filters[colKey] = col.filteredValue;\n });\n return filters;\n}\n\nfunction isFiltersChanged(state, filters) {\n if (Object.keys(filters).length !== Object.keys(state.filters).length) {\n return true;\n }\n return Object.keys(filters).some(function (columnKey) {\n return filters[columnKey] !== state.filters[columnKey];\n });\n}\n\nexport default {\n name: 'Table',\n Column: Column,\n ColumnGroup: ColumnGroup,\n mixins: [BaseMixin],\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n provide: function provide() {\n return {\n store: this.store\n };\n },\n\n props: initDefaultProps(TableProps, {\n dataSource: [],\n useFixedHeader: false,\n // rowSelection: null,\n size: 'default',\n loading: false,\n bordered: false,\n indentSize: 20,\n locale: {},\n rowKey: 'key',\n showHeader: true,\n sortDirections: ['ascend', 'descend'],\n childrenColumnName: 'children'\n }),\n\n data: function data() {\n var props = getOptionProps(this);\n warning(!props.expandedRowRender || !('scroll' in props) || !props.scroll.x, '`expandedRowRender` and `scroll` are not compatible. Please use one of them at one time.');\n this.CheckboxPropsCache = {};\n\n this.store = (this.$root.constructor.observable || Vue.observable)({\n selectedRowKeys: getRowSelection(this.$props).selectedRowKeys || [],\n selectionDirty: false\n });\n return _extends({}, this.getDefaultSortOrder(props.columns || []), {\n // 减少状态\n sFilters: this.getDefaultFilters(props.columns),\n sPagination: this.getDefaultPagination(this.$props),\n pivot: undefined,\n sComponents: createComponents(this.components),\n filterDataCnt: 0\n });\n },\n\n watch: {\n pagination: {\n handler: function handler(val) {\n this.setState(function (previousState) {\n var newPagination = _extends({}, defaultPagination, previousState.sPagination, val);\n newPagination.current = newPagination.current || 1;\n newPagination.pageSize = newPagination.pageSize || 10;\n return { sPagination: val !== false ? newPagination : emptyObject };\n });\n },\n\n deep: true\n },\n rowSelection: {\n handler: function handler(val, oldVal) {\n if (val && 'selectedRowKeys' in val) {\n this.store.selectedRowKeys = val.selectedRowKeys || [];\n var rowSelection = this.rowSelection;\n\n if (rowSelection && val.getCheckboxProps !== rowSelection.getCheckboxProps) {\n this.CheckboxPropsCache = {};\n }\n } else if (oldVal && !val) {\n this.store.selectedRowKeys = [];\n }\n },\n\n deep: true\n },\n\n dataSource: function dataSource() {\n this.store.selectionDirty = false;\n this.CheckboxPropsCache = {};\n },\n columns: function columns(val) {\n var filteredValueColumns = getFilteredValueColumns({ columns: val }, val);\n if (filteredValueColumns.length > 0) {\n var filtersFromColumns = getFiltersFromColumns({ columns: val }, val);\n var newFilters = _extends({}, this.sFilters);\n Object.keys(filtersFromColumns).forEach(function (key) {\n newFilters[key] = filtersFromColumns[key];\n });\n if (isFiltersChanged({ filters: this.sFilters }, newFilters)) {\n this.setState({ sFilters: newFilters });\n }\n }\n this.$forceUpdate();\n },\n\n components: {\n handler: function handler(val, oldVal) {\n if (!isTheSameComponents(val, oldVal)) {\n var components = createComponents(val);\n this.setState({ sComponents: components });\n }\n },\n\n deep: true\n }\n },\n updated: function updated() {\n var columns = this.columns,\n sortColumn = this.sSortColumn,\n sortOrder = this.sSortOrder;\n\n if (this.getSortOrderColumns(columns).length > 0) {\n var sortState = this.getSortStateFromColumns(columns);\n if (!isSameColumn(sortState.sSortColumn, sortColumn) || sortState.sSortOrder !== sortOrder) {\n this.setState(sortState);\n }\n }\n },\n\n methods: {\n getCheckboxPropsByItem: function getCheckboxPropsByItem(item, index) {\n var rowSelection = getRowSelection(this.$props);\n if (!rowSelection.getCheckboxProps) {\n return { props: {} };\n }\n var key = this.getRecordKey(item, index);\n // Cache checkboxProps\n if (!this.CheckboxPropsCache[key]) {\n this.CheckboxPropsCache[key] = rowSelection.getCheckboxProps(item);\n }\n this.CheckboxPropsCache[key].props = this.CheckboxPropsCache[key].props || {};\n return this.CheckboxPropsCache[key];\n },\n getDefaultSelection: function getDefaultSelection() {\n var _this = this;\n\n var rowSelection = getRowSelection(this.$props);\n if (!rowSelection.getCheckboxProps) {\n return [];\n }\n return this.getFlatData().filter(function (item, rowIndex) {\n return _this.getCheckboxPropsByItem(item, rowIndex).props.defaultChecked;\n }).map(function (record, rowIndex) {\n return _this.getRecordKey(record, rowIndex);\n });\n },\n getDefaultPagination: function getDefaultPagination(props) {\n var pagination = _typeof(props.pagination) === 'object' ? props.pagination : {};\n var current = void 0;\n if ('current' in pagination) {\n current = pagination.current;\n } else if ('defaultCurrent' in pagination) {\n current = pagination.defaultCurrent;\n }\n var pageSize = void 0;\n if ('pageSize' in pagination) {\n pageSize = pagination.pageSize;\n } else if ('defaultPageSize' in pagination) {\n pageSize = pagination.defaultPageSize;\n }\n return this.hasPagination(props) ? _extends({}, defaultPagination, pagination, {\n current: current || 1,\n pageSize: pageSize || 10\n }) : {};\n },\n getSortOrderColumns: function getSortOrderColumns(columns) {\n return flatFilter(columns || this.columns || [], function (column) {\n return 'sortOrder' in column;\n });\n },\n getDefaultFilters: function getDefaultFilters(columns) {\n var definedFilters = getFiltersFromColumns({ columns: this.columns }, columns);\n\n var defaultFilteredValueColumns = flatFilter(columns || [], function (column) {\n return typeof column.defaultFilteredValue !== 'undefined';\n });\n\n var defaultFilters = defaultFilteredValueColumns.reduce(function (soFar, col) {\n var colKey = getColumnKey(col);\n soFar[colKey] = col.defaultFilteredValue;\n return soFar;\n }, {});\n\n return _extends({}, defaultFilters, definedFilters);\n },\n getDefaultSortOrder: function getDefaultSortOrder(columns) {\n var definedSortState = this.getSortStateFromColumns(columns);\n\n var defaultSortedColumn = flatFilter(columns || [], function (column) {\n return column.defaultSortOrder != null;\n })[0];\n\n if (defaultSortedColumn && !definedSortState.sortColumn) {\n return {\n sSortColumn: defaultSortedColumn,\n sSortOrder: defaultSortedColumn.defaultSortOrder\n };\n }\n\n return definedSortState;\n },\n getSortStateFromColumns: function getSortStateFromColumns(columns) {\n // return first column which sortOrder is not falsy\n var sortedColumn = this.getSortOrderColumns(columns).filter(function (col) {\n return col.sortOrder;\n })[0];\n\n if (sortedColumn) {\n return {\n sSortColumn: sortedColumn,\n sSortOrder: sortedColumn.sortOrder\n };\n }\n\n return {\n sSortColumn: null,\n sSortOrder: null\n };\n },\n getMaxCurrent: function getMaxCurrent(total) {\n var _sPagination = this.sPagination,\n current = _sPagination.current,\n pageSize = _sPagination.pageSize;\n\n if ((current - 1) * pageSize >= total) {\n return Math.floor((total - 1) / pageSize) + 1;\n }\n return current;\n },\n getRecordKey: function getRecordKey(record, index) {\n var rowKey = this.rowKey;\n\n var recordKey = typeof rowKey === 'function' ? rowKey(record, index) : record[rowKey];\n warning(recordKey !== undefined, 'Table', 'Each record in dataSource of table should have a unique `key` prop, ' + 'or set `rowKey` of Table to an unique primary key, ');\n return recordKey === undefined ? index : recordKey;\n },\n getSorterFn: function getSorterFn(state) {\n var _ref = state || this.$data,\n sortOrder = _ref.sSortOrder,\n sortColumn = _ref.sSortColumn;\n\n if (!sortOrder || !sortColumn || typeof sortColumn.sorter !== 'function') {\n return;\n }\n\n return function (a, b) {\n var result = sortColumn.sorter(a, b, sortOrder);\n if (result !== 0) {\n return sortOrder === 'descend' ? -result : result;\n }\n return 0;\n };\n },\n getCurrentPageData: function getCurrentPageData() {\n var data = this.getLocalData();\n this.filterDataCnt = data.length;\n var current = void 0;\n var pageSize = void 0;\n var sPagination = this.sPagination;\n // 如果没有分页的话,默认全部展示\n if (!this.hasPagination()) {\n pageSize = Number.MAX_VALUE;\n current = 1;\n } else {\n pageSize = sPagination.pageSize;\n current = this.getMaxCurrent(sPagination.total || data.length);\n }\n\n // 分页\n // ---\n // 当数据量少于等于每页数量时,直接设置数据\n // 否则进行读取分页数据\n if (data.length > pageSize || pageSize === Number.MAX_VALUE) {\n data = data.slice((current - 1) * pageSize, current * pageSize);\n }\n return data;\n },\n getFlatData: function getFlatData() {\n var childrenColumnName = this.$props.childrenColumnName;\n\n return flatArray(this.getLocalData(null, false), childrenColumnName);\n },\n getFlatCurrentPageData: function getFlatCurrentPageData() {\n var childrenColumnName = this.$props.childrenColumnName;\n\n return flatArray(this.getCurrentPageData(), childrenColumnName);\n },\n getLocalData: function getLocalData(state) {\n var _this2 = this;\n\n var filter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n var currentState = state || this.$data;\n var filters = currentState.sFilters;\n var dataSource = this.$props.dataSource;\n\n var data = dataSource || [];\n // 优化本地排序\n data = data.slice(0);\n var sorterFn = this.getSorterFn(currentState);\n if (sorterFn) {\n // 使用新数组,避免改变原数组导致无限循环更新\n // https://github.com/vueComponent/ant-design-vue/issues/2270\n data = this.recursiveSort([].concat(_toConsumableArray(data)), sorterFn);\n }\n // 筛选\n if (filter && filters) {\n Object.keys(filters).forEach(function (columnKey) {\n var col = _this2.findColumn(columnKey);\n if (!col) {\n return;\n }\n var values = filters[columnKey] || [];\n if (values.length === 0) {\n return;\n }\n var onFilter = col.onFilter;\n data = onFilter ? data.filter(function (record) {\n return values.some(function (v) {\n return onFilter(v, record);\n });\n }) : data;\n });\n }\n return data;\n },\n onRow: function onRow(prefixCls, record, index) {\n var customRow = this.customRow;\n\n var custom = customRow ? customRow(record, index) : {};\n return mergeProps(custom, {\n props: {\n prefixCls: prefixCls,\n store: this.store,\n rowKey: this.getRecordKey(record, index)\n }\n });\n },\n setSelectedRowKeys: function setSelectedRowKeys(selectedRowKeys, selectionInfo) {\n var _this3 = this;\n\n var selectWay = selectionInfo.selectWay,\n record = selectionInfo.record,\n checked = selectionInfo.checked,\n changeRowKeys = selectionInfo.changeRowKeys,\n nativeEvent = selectionInfo.nativeEvent;\n\n var rowSelection = getRowSelection(this.$props);\n if (rowSelection && !('selectedRowKeys' in rowSelection)) {\n this.store.selectedRowKeys = selectedRowKeys;\n }\n var data = this.getFlatData();\n if (!rowSelection.onChange && !rowSelection[selectWay]) {\n return;\n }\n var selectedRows = data.filter(function (row, i) {\n return selectedRowKeys.indexOf(_this3.getRecordKey(row, i)) >= 0;\n });\n if (rowSelection.onChange) {\n rowSelection.onChange(selectedRowKeys, selectedRows);\n }\n if (selectWay === 'onSelect' && rowSelection.onSelect) {\n rowSelection.onSelect(record, checked, selectedRows, nativeEvent);\n } else if (selectWay === 'onSelectMultiple' && rowSelection.onSelectMultiple) {\n var changeRows = data.filter(function (row, i) {\n return changeRowKeys.indexOf(_this3.getRecordKey(row, i)) >= 0;\n });\n rowSelection.onSelectMultiple(checked, selectedRows, changeRows);\n } else if (selectWay === 'onSelectAll' && rowSelection.onSelectAll) {\n var _changeRows = data.filter(function (row, i) {\n return changeRowKeys.indexOf(_this3.getRecordKey(row, i)) >= 0;\n });\n rowSelection.onSelectAll(checked, selectedRows, _changeRows);\n } else if (selectWay === 'onSelectInvert' && rowSelection.onSelectInvert) {\n rowSelection.onSelectInvert(selectedRowKeys);\n }\n },\n generatePopupContainerFunc: function generatePopupContainerFunc(getPopupContainer) {\n var scroll = this.$props.scroll;\n\n var table = this.$refs.vcTable;\n if (getPopupContainer) {\n return getPopupContainer;\n }\n // Use undefined to let rc component use default logic.\n return scroll && table ? function () {\n return table.getTableNode();\n } : undefined;\n },\n scrollToFirstRow: function scrollToFirstRow() {\n var _this4 = this;\n\n var scroll = this.$props.scroll;\n\n if (scroll && scroll.scrollToFirstRowOnChange !== false) {\n scrollTo(0, {\n getContainer: function getContainer() {\n return _this4.$refs.vcTable.getBodyTable();\n }\n });\n }\n },\n isSameColumn: function isSameColumn(a, b) {\n if (a && b && a.key && a.key === b.key) {\n return true;\n }\n return a === b || shallowEqual(a, b, function (value, other) {\n if (typeof value === 'function' && typeof other === 'function') {\n return value === other || value.toString() === other.toString();\n }\n });\n },\n handleFilter: function handleFilter(column, nextFilters) {\n var _this5 = this;\n\n var props = this.$props;\n var pagination = _extends({}, this.sPagination);\n var filters = _extends({}, this.sFilters, _defineProperty({}, getColumnKey(column), nextFilters));\n // Remove filters not in current columns\n var currentColumnKeys = [];\n treeMap(this.columns, function (c) {\n if (!c.children) {\n currentColumnKeys.push(getColumnKey(c));\n }\n });\n Object.keys(filters).forEach(function (columnKey) {\n if (currentColumnKeys.indexOf(columnKey) < 0) {\n delete filters[columnKey];\n }\n });\n\n if (props.pagination) {\n // Reset current prop\n pagination.current = 1;\n pagination.onChange(pagination.current);\n }\n\n var newState = {\n sPagination: pagination,\n sFilters: {}\n };\n var filtersToSetState = _extends({}, filters);\n // Remove filters which is controlled\n getFilteredValueColumns({ columns: props.columns }).forEach(function (col) {\n var columnKey = getColumnKey(col);\n if (columnKey) {\n delete filtersToSetState[columnKey];\n }\n });\n if (Object.keys(filtersToSetState).length > 0) {\n newState.sFilters = filtersToSetState;\n }\n\n // Controlled current prop will not respond user interaction\n if (_typeof(props.pagination) === 'object' && 'current' in props.pagination) {\n newState.sPagination = _extends({}, pagination, {\n current: this.sPagination.current\n });\n }\n\n this.setState(newState, function () {\n _this5.scrollToFirstRow();\n _this5.store.selectionDirty = false;\n _this5.$emit.apply(_this5, ['change'].concat(_toConsumableArray(_this5.prepareParamsArguments(_extends({}, _this5.$data, {\n sSelectionDirty: false,\n sFilters: filters,\n sPagination: pagination\n })))));\n });\n },\n handleSelect: function handleSelect(record, rowIndex, e) {\n var _this6 = this;\n\n var checked = e.target.checked;\n var nativeEvent = e.nativeEvent;\n var defaultSelection = this.store.selectionDirty ? [] : this.getDefaultSelection();\n var selectedRowKeys = this.store.selectedRowKeys.concat(defaultSelection);\n var key = this.getRecordKey(record, rowIndex);\n var pivot = this.$data.pivot;\n\n var rows = this.getFlatCurrentPageData();\n var realIndex = rowIndex;\n if (this.$props.expandedRowRender) {\n realIndex = rows.findIndex(function (row) {\n return _this6.getRecordKey(row, rowIndex) === key;\n });\n }\n if (nativeEvent.shiftKey && pivot !== undefined && realIndex !== pivot) {\n var changeRowKeys = [];\n var direction = Math.sign(pivot - realIndex);\n var dist = Math.abs(pivot - realIndex);\n var step = 0;\n\n var _loop = function _loop() {\n var i = realIndex + step * direction;\n step += 1;\n var row = rows[i];\n var rowKey = _this6.getRecordKey(row, i);\n var checkboxProps = _this6.getCheckboxPropsByItem(row, i);\n if (!checkboxProps.disabled) {\n if (selectedRowKeys.includes(rowKey)) {\n if (!checked) {\n selectedRowKeys = selectedRowKeys.filter(function (j) {\n return rowKey !== j;\n });\n changeRowKeys.push(rowKey);\n }\n } else if (checked) {\n selectedRowKeys.push(rowKey);\n changeRowKeys.push(rowKey);\n }\n }\n };\n\n while (step <= dist) {\n _loop();\n }\n\n this.setState({ pivot: realIndex });\n this.store.selectionDirty = true;\n this.setSelectedRowKeys(selectedRowKeys, {\n selectWay: 'onSelectMultiple',\n record: record,\n checked: checked,\n changeRowKeys: changeRowKeys,\n nativeEvent: nativeEvent\n });\n } else {\n if (checked) {\n selectedRowKeys.push(this.getRecordKey(record, realIndex));\n } else {\n selectedRowKeys = selectedRowKeys.filter(function (i) {\n return key !== i;\n });\n }\n this.setState({ pivot: realIndex });\n this.store.selectionDirty = true;\n this.setSelectedRowKeys(selectedRowKeys, {\n selectWay: 'onSelect',\n record: record,\n checked: checked,\n changeRowKeys: undefined,\n nativeEvent: nativeEvent\n });\n }\n },\n handleRadioSelect: function handleRadioSelect(record, rowIndex, e) {\n var checked = e.target.checked;\n var nativeEvent = e.nativeEvent;\n var key = this.getRecordKey(record, rowIndex);\n var selectedRowKeys = [key];\n this.store.selectionDirty = true;\n this.setSelectedRowKeys(selectedRowKeys, {\n selectWay: 'onSelect',\n record: record,\n checked: checked,\n changeRowKeys: undefined,\n nativeEvent: nativeEvent\n });\n },\n handleSelectRow: function handleSelectRow(selectionKey, index, onSelectFunc) {\n var _this7 = this;\n\n var data = this.getFlatCurrentPageData();\n var defaultSelection = this.store.selectionDirty ? [] : this.getDefaultSelection();\n var selectedRowKeys = this.store.selectedRowKeys.concat(defaultSelection);\n var changeableRowKeys = data.filter(function (item, i) {\n return !_this7.getCheckboxPropsByItem(item, i).props.disabled;\n }).map(function (item, i) {\n return _this7.getRecordKey(item, i);\n });\n\n var changeRowKeys = [];\n var selectWay = 'onSelectAll';\n var checked = void 0;\n // handle default selection\n switch (selectionKey) {\n case 'all':\n changeableRowKeys.forEach(function (key) {\n if (selectedRowKeys.indexOf(key) < 0) {\n selectedRowKeys.push(key);\n changeRowKeys.push(key);\n }\n });\n selectWay = 'onSelectAll';\n checked = true;\n break;\n case 'removeAll':\n changeableRowKeys.forEach(function (key) {\n if (selectedRowKeys.indexOf(key) >= 0) {\n selectedRowKeys.splice(selectedRowKeys.indexOf(key), 1);\n changeRowKeys.push(key);\n }\n });\n selectWay = 'onSelectAll';\n checked = false;\n break;\n case 'invert':\n changeableRowKeys.forEach(function (key) {\n if (selectedRowKeys.indexOf(key) < 0) {\n selectedRowKeys.push(key);\n } else {\n selectedRowKeys.splice(selectedRowKeys.indexOf(key), 1);\n }\n changeRowKeys.push(key);\n selectWay = 'onSelectInvert';\n });\n break;\n default:\n break;\n }\n\n this.store.selectionDirty = true;\n // when select custom selection, callback selections[n].onSelect\n var rowSelection = this.rowSelection;\n\n var customSelectionStartIndex = 2;\n if (rowSelection && rowSelection.hideDefaultSelections) {\n customSelectionStartIndex = 0;\n }\n if (index >= customSelectionStartIndex && typeof onSelectFunc === 'function') {\n return onSelectFunc(changeableRowKeys);\n }\n this.setSelectedRowKeys(selectedRowKeys, {\n selectWay: selectWay,\n checked: checked,\n changeRowKeys: changeRowKeys\n });\n },\n handlePageChange: function handlePageChange(current) {\n var props = this.$props;\n var pagination = _extends({}, this.sPagination);\n if (current) {\n pagination.current = current;\n } else {\n pagination.current = pagination.current || 1;\n }\n\n for (var _len = arguments.length, otherArguments = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n otherArguments[_key - 1] = arguments[_key];\n }\n\n pagination.onChange.apply(pagination, [pagination.current].concat(_toConsumableArray(otherArguments)));\n\n var newState = {\n sPagination: pagination\n };\n // Controlled current prop will not respond user interaction\n if (props.pagination && _typeof(props.pagination) === 'object' && 'current' in props.pagination) {\n newState.sPagination = _extends({}, pagination, {\n current: this.sPagination.current\n });\n }\n this.setState(newState, this.scrollToFirstRow);\n\n this.store.selectionDirty = false;\n this.$emit.apply(this, ['change'].concat(_toConsumableArray(this.prepareParamsArguments(_extends({}, this.$data, {\n sSelectionDirty: false,\n sPagination: pagination\n })))));\n },\n handleShowSizeChange: function handleShowSizeChange(current, pageSize) {\n var pagination = this.sPagination;\n pagination.onShowSizeChange(current, pageSize);\n var nextPagination = _extends({}, pagination, {\n pageSize: pageSize,\n current: current\n });\n this.setState({ sPagination: nextPagination }, this.scrollToFirstRow);\n this.$emit.apply(this, ['change'].concat(_toConsumableArray(this.prepareParamsArguments(_extends({}, this.$data, {\n sPagination: nextPagination\n })))));\n },\n toggleSortOrder: function toggleSortOrder(column) {\n var sortDirections = column.sortDirections || this.sortDirections;\n var sortOrder = this.sSortOrder,\n sortColumn = this.sSortColumn;\n // 只同时允许一列进行排序,否则会导致排序顺序的逻辑问题\n\n var newSortOrder = void 0;\n // 切换另一列时,丢弃 sortOrder 的状态\n if (isSameColumn(sortColumn, column) && sortOrder !== undefined) {\n // 按照sortDirections的内容依次切换排序状态\n var methodIndex = sortDirections.indexOf(sortOrder) + 1;\n newSortOrder = methodIndex === sortDirections.length ? undefined : sortDirections[methodIndex];\n } else {\n newSortOrder = sortDirections[0];\n }\n var newState = {\n sSortOrder: newSortOrder,\n sSortColumn: newSortOrder ? column : null\n };\n\n // Controlled\n if (this.getSortOrderColumns().length === 0) {\n this.setState(newState, this.scrollToFirstRow);\n }\n this.$emit.apply(this, ['change'].concat(_toConsumableArray(this.prepareParamsArguments(_extends({}, this.$data, newState), column))));\n },\n hasPagination: function hasPagination(props) {\n return (props || this.$props).pagination !== false;\n },\n isSortColumn: function isSortColumn(column) {\n var sortColumn = this.sSortColumn;\n\n if (!column || !sortColumn) {\n return false;\n }\n return getColumnKey(sortColumn) === getColumnKey(column);\n },\n\n\n // Get pagination, filters, sorter\n prepareParamsArguments: function prepareParamsArguments(state, column) {\n var pagination = _extends({}, state.sPagination);\n // remove useless handle function in Table.onChange\n delete pagination.onChange;\n delete pagination.onShowSizeChange;\n var filters = state.sFilters;\n var sorter = {};\n var currentColumn = column;\n if (state.sSortColumn && state.sSortOrder) {\n currentColumn = state.sSortColumn;\n sorter.column = state.sSortColumn;\n sorter.order = state.sSortOrder;\n }\n\n if (currentColumn) {\n sorter.field = currentColumn.dataIndex;\n sorter.columnKey = getColumnKey(currentColumn);\n }\n\n var extra = {\n currentDataSource: this.getLocalData(state)\n };\n\n return [pagination, filters, sorter, extra];\n },\n findColumn: function findColumn(myKey) {\n var column = void 0;\n treeMap(this.columns, function (c) {\n if (getColumnKey(c) === myKey) {\n column = c;\n }\n });\n return column;\n },\n recursiveSort: function recursiveSort(data, sorterFn) {\n var _this8 = this;\n\n var _childrenColumnName = this.childrenColumnName,\n childrenColumnName = _childrenColumnName === undefined ? 'children' : _childrenColumnName;\n\n return data.sort(sorterFn).map(function (item) {\n return item[childrenColumnName] ? _extends({}, item, _defineProperty({}, childrenColumnName, _this8.recursiveSort([].concat(_toConsumableArray(item[childrenColumnName])), sorterFn))) : item;\n });\n },\n renderExpandIcon: function renderExpandIcon(prefixCls) {\n var h = this.$createElement;\n\n return function (_ref2) {\n var expandable = _ref2.expandable,\n expanded = _ref2.expanded,\n needIndentSpaced = _ref2.needIndentSpaced,\n record = _ref2.record,\n onExpand = _ref2.onExpand;\n\n if (expandable) {\n return h(\n LocaleReceiver,\n {\n attrs: { componentName: 'Table', defaultLocale: defaultLocale.Table }\n },\n [function (locale) {\n var _classNames;\n\n return h(TransButton, {\n 'class': classNames(prefixCls + '-row-expand-icon', (_classNames = {}, _defineProperty(_classNames, prefixCls + '-row-collapsed', !expanded), _defineProperty(_classNames, prefixCls + '-row-expanded', expanded), _classNames)),\n on: {\n 'click': function click(event) {\n onExpand(record, event);\n }\n },\n attrs: {\n 'aria-label': expanded ? locale.collapse : locale.expand,\n noStyle: true\n }\n });\n }]\n );\n }\n\n if (needIndentSpaced) {\n return h('span', { 'class': prefixCls + '-row-expand-icon ' + prefixCls + '-row-spaced' });\n }\n\n return null;\n };\n },\n renderPagination: function renderPagination(prefixCls, paginationPosition) {\n var h = this.$createElement;\n\n // 强制不需要分页\n if (!this.hasPagination()) {\n return null;\n }\n var size = 'default';\n var pagination = this.sPagination;\n\n if (pagination.size) {\n size = pagination.size;\n } else if (this.size === 'middle' || this.size === 'small') {\n size = 'small';\n }\n var position = pagination.position || 'bottom';\n var total = pagination.total || this.filterDataCnt;\n\n var cls = pagination['class'],\n style = pagination.style,\n onChange = pagination.onChange,\n onShowSizeChange = pagination.onShowSizeChange,\n restProps = _objectWithoutProperties(pagination, ['class', 'style', 'onChange', 'onShowSizeChange']); // eslint-disable-line\n\n\n var paginationProps = mergeProps({\n key: 'pagination-' + paginationPosition,\n 'class': classNames(cls, prefixCls + '-pagination'),\n props: _extends({}, restProps, {\n total: total,\n size: size,\n current: this.getMaxCurrent(total)\n }),\n style: style,\n on: {\n change: this.handlePageChange,\n showSizeChange: this.handleShowSizeChange\n }\n });\n return total > 0 && (position === paginationPosition || position === 'both') ? h(Pagination, paginationProps) : null;\n },\n renderSelectionBox: function renderSelectionBox(type) {\n var _this9 = this;\n\n var h = this.$createElement;\n\n return function (_, record, index) {\n var rowKey = _this9.getRecordKey(record, index); // 从 1 开始\n var props = _this9.getCheckboxPropsByItem(record, index);\n var handleChange = function handleChange(e) {\n type === 'radio' ? _this9.handleRadioSelect(record, index, e) : _this9.handleSelect(record, index, e);\n };\n var selectionBoxProps = mergeProps({\n props: {\n type: type,\n store: _this9.store,\n rowIndex: rowKey,\n defaultSelection: _this9.getDefaultSelection()\n },\n on: {\n change: handleChange\n }\n }, props);\n\n return h(\n 'span',\n {\n on: {\n 'click': stopPropagation\n }\n },\n [h(SelectionBox, selectionBoxProps)]\n );\n };\n },\n renderRowSelection: function renderRowSelection(_ref3) {\n var _this10 = this;\n\n var prefixCls = _ref3.prefixCls,\n locale = _ref3.locale,\n getPopupContainer = _ref3.getPopupContainer;\n var h = this.$createElement;\n var rowSelection = this.rowSelection;\n\n var columns = this.columns.concat();\n if (rowSelection) {\n var data = this.getFlatCurrentPageData().filter(function (item, index) {\n if (rowSelection.getCheckboxProps) {\n return !_this10.getCheckboxPropsByItem(item, index).props.disabled;\n }\n return true;\n });\n var selectionColumnClass = classNames(prefixCls + '-selection-column', _defineProperty({}, prefixCls + '-selection-column-custom', rowSelection.selections));\n var selectionColumn = _defineProperty({\n key: 'selection-column',\n customRender: this.renderSelectionBox(rowSelection.type),\n className: selectionColumnClass,\n fixed: rowSelection.fixed,\n width: rowSelection.columnWidth,\n title: rowSelection.columnTitle\n }, INTERNAL_COL_DEFINE, {\n 'class': prefixCls + '-selection-col'\n });\n if (rowSelection.type !== 'radio') {\n var checkboxAllDisabled = data.every(function (item, index) {\n return _this10.getCheckboxPropsByItem(item, index).props.disabled;\n });\n selectionColumn.title = selectionColumn.title || h(SelectionCheckboxAll, {\n attrs: {\n store: this.store,\n locale: locale,\n data: data,\n getCheckboxPropsByItem: this.getCheckboxPropsByItem,\n getRecordKey: this.getRecordKey,\n disabled: checkboxAllDisabled,\n prefixCls: prefixCls,\n\n selections: rowSelection.selections,\n hideDefaultSelections: rowSelection.hideDefaultSelections,\n getPopupContainer: this.generatePopupContainerFunc(getPopupContainer)\n },\n on: {\n 'select': this.handleSelectRow\n }\n });\n }\n if ('fixed' in rowSelection) {\n selectionColumn.fixed = rowSelection.fixed;\n } else if (columns.some(function (column) {\n return column.fixed === 'left' || column.fixed === true;\n })) {\n selectionColumn.fixed = 'left';\n }\n if (columns[0] && columns[0].key === 'selection-column') {\n columns[0] = selectionColumn;\n } else {\n columns.unshift(selectionColumn);\n }\n }\n return columns;\n },\n renderColumnsDropdown: function renderColumnsDropdown(_ref4) {\n var _this11 = this;\n\n var prefixCls = _ref4.prefixCls,\n dropdownPrefixCls = _ref4.dropdownPrefixCls,\n columns = _ref4.columns,\n locale = _ref4.locale,\n getPopupContainer = _ref4.getPopupContainer;\n var h = this.$createElement;\n var sortOrder = this.sSortOrder,\n filters = this.sFilters;\n\n return treeMap(columns, function (column, i) {\n var _classNames3;\n\n var key = getColumnKey(column, i);\n var filterDropdown = void 0;\n var sortButton = void 0;\n var customHeaderCell = column.customHeaderCell;\n var isSortColumn = _this11.isSortColumn(column);\n if (column.filters && column.filters.length > 0 || column.filterDropdown) {\n var colFilters = key in filters ? filters[key] : [];\n filterDropdown = h(FilterDropdown, {\n attrs: {\n _propsSymbol: Symbol(),\n locale: locale,\n column: column,\n selectedKeys: colFilters,\n confirmFilter: _this11.handleFilter,\n prefixCls: prefixCls + '-filter',\n dropdownPrefixCls: dropdownPrefixCls || 'ant-dropdown',\n getPopupContainer: _this11.generatePopupContainerFunc(getPopupContainer)\n },\n key: 'filter-dropdown'\n });\n }\n if (column.sorter) {\n var sortDirections = column.sortDirections || _this11.sortDirections;\n var isAscend = isSortColumn && sortOrder === 'ascend';\n var isDescend = isSortColumn && sortOrder === 'descend';\n var ascend = sortDirections.indexOf('ascend') !== -1 && h(Icon, {\n 'class': prefixCls + '-column-sorter-up ' + (isAscend ? 'on' : 'off'),\n attrs: { type: 'caret-up',\n theme: 'filled'\n },\n key: 'caret-up'\n });\n\n var descend = sortDirections.indexOf('descend') !== -1 && h(Icon, {\n 'class': prefixCls + '-column-sorter-down ' + (isDescend ? 'on' : 'off'),\n attrs: { type: 'caret-down',\n theme: 'filled'\n },\n key: 'caret-down'\n });\n\n sortButton = h(\n 'div',\n {\n attrs: {\n title: locale.sortTitle\n },\n 'class': classNames(prefixCls + '-column-sorter-inner', ascend && descend && prefixCls + '-column-sorter-inner-full'),\n key: 'sorter'\n },\n [ascend, descend]\n );\n customHeaderCell = function customHeaderCell(col) {\n var colProps = {};\n // Get original first\n if (column.customHeaderCell) {\n colProps = _extends({}, column.customHeaderCell(col));\n }\n colProps.on = colProps.on || {};\n // Add sorter logic\n var onHeaderCellClick = colProps.on.click;\n colProps.on.click = function () {\n _this11.toggleSortOrder(column);\n if (onHeaderCellClick) {\n onHeaderCellClick.apply(undefined, arguments);\n }\n };\n return colProps;\n };\n }\n return _extends({}, column, {\n className: classNames(column.className, (_classNames3 = {}, _defineProperty(_classNames3, prefixCls + '-column-has-actions', sortButton || filterDropdown), _defineProperty(_classNames3, prefixCls + '-column-has-filters', filterDropdown), _defineProperty(_classNames3, prefixCls + '-column-has-sorters', sortButton), _defineProperty(_classNames3, prefixCls + '-column-sort', isSortColumn && sortOrder), _classNames3)),\n title: [h(\n 'span',\n { key: 'title', 'class': prefixCls + '-header-column' },\n [h(\n 'div',\n { 'class': sortButton ? prefixCls + '-column-sorters' : undefined },\n [h(\n 'span',\n { 'class': prefixCls + '-column-title' },\n [_this11.renderColumnTitle(column.title)]\n ), h(\n 'span',\n { 'class': prefixCls + '-column-sorter' },\n [sortButton]\n )]\n )]\n ), filterDropdown],\n customHeaderCell: customHeaderCell\n });\n });\n },\n renderColumnTitle: function renderColumnTitle(title) {\n var _$data = this.$data,\n filters = _$data.sFilters,\n sortOrder = _$data.sSortOrder,\n sortColumn = _$data.sSortColumn;\n // https://github.com/ant-design/ant-design/issues/11246#issuecomment-405009167\n\n if (title instanceof Function) {\n return title({\n filters: filters,\n sortOrder: sortOrder,\n sortColumn: sortColumn\n });\n }\n return title;\n },\n renderTable: function renderTable(_ref5) {\n var _classNames4,\n _this12 = this;\n\n var prefixCls = _ref5.prefixCls,\n renderEmpty = _ref5.renderEmpty,\n dropdownPrefixCls = _ref5.dropdownPrefixCls,\n contextLocale = _ref5.contextLocale,\n contextGetPopupContainer = _ref5.getPopupContainer,\n transformCellText = _ref5.transformCellText;\n var h = this.$createElement;\n\n var _getOptionProps = getOptionProps(this),\n showHeader = _getOptionProps.showHeader,\n locale = _getOptionProps.locale,\n getPopupContainer = _getOptionProps.getPopupContainer,\n expandIcon = _getOptionProps.expandIcon,\n restProps = _objectWithoutProperties(_getOptionProps, ['showHeader', 'locale', 'getPopupContainer', 'expandIcon']);\n\n var data = this.getCurrentPageData();\n var expandIconAsCell = this.expandedRowRender && this.expandIconAsCell !== false;\n\n // use props.getPopupContainer first\n var realGetPopupContainer = getPopupContainer || contextGetPopupContainer;\n\n // Merge too locales\n var mergedLocale = _extends({}, contextLocale, locale);\n if (!locale || !locale.emptyText) {\n mergedLocale.emptyText = renderEmpty(h, 'Table');\n }\n\n var classString = classNames((_classNames4 = {}, _defineProperty(_classNames4, prefixCls + '-' + this.size, true), _defineProperty(_classNames4, prefixCls + '-bordered', this.bordered), _defineProperty(_classNames4, prefixCls + '-empty', !data.length), _defineProperty(_classNames4, prefixCls + '-without-column-header', !showHeader), _classNames4));\n\n var columnsWithRowSelection = this.renderRowSelection({\n prefixCls: prefixCls,\n locale: mergedLocale,\n getPopupContainer: realGetPopupContainer\n });\n var columns = this.renderColumnsDropdown({\n columns: columnsWithRowSelection,\n prefixCls: prefixCls,\n dropdownPrefixCls: dropdownPrefixCls,\n locale: mergedLocale,\n getPopupContainer: realGetPopupContainer\n }).map(function (column, i) {\n var newColumn = _extends({}, column);\n newColumn.key = getColumnKey(newColumn, i);\n return newColumn;\n });\n\n var expandIconColumnIndex = columns[0] && columns[0].key === 'selection-column' ? 1 : 0;\n if ('expandIconColumnIndex' in restProps) {\n expandIconColumnIndex = restProps.expandIconColumnIndex;\n }\n var vcTableProps = {\n key: 'table',\n props: _extends({\n expandIcon: expandIcon || this.renderExpandIcon(prefixCls)\n }, restProps, {\n customRow: function customRow(record, index) {\n return _this12.onRow(prefixCls, record, index);\n },\n components: this.sComponents,\n prefixCls: prefixCls,\n data: data,\n columns: columns,\n showHeader: showHeader,\n expandIconColumnIndex: expandIconColumnIndex,\n expandIconAsCell: expandIconAsCell,\n emptyText: mergedLocale.emptyText,\n transformCellText: transformCellText\n }),\n on: getListeners(this),\n 'class': classString,\n ref: 'vcTable'\n };\n return h(VcTable, vcTableProps);\n }\n },\n\n render: function render() {\n var _this13 = this;\n\n var h = arguments[0];\n var customizePrefixCls = this.prefixCls,\n customizeDropdownPrefixCls = this.dropdownPrefixCls,\n customizeTransformCellText = this.transformCellText;\n\n var data = this.getCurrentPageData();\n var _configProvider = this.configProvider,\n getContextPopupContainer = _configProvider.getPopupContainer,\n tct = _configProvider.transformCellText;\n\n var getPopupContainer = this.getPopupContainer || getContextPopupContainer;\n var transformCellText = customizeTransformCellText || tct;\n var loading = this.loading;\n if (typeof loading === 'boolean') {\n loading = {\n props: {\n spinning: loading\n }\n };\n } else {\n loading = {\n props: _extends({}, loading)\n };\n }\n var getPrefixCls = this.configProvider.getPrefixCls;\n var renderEmpty = this.configProvider.renderEmpty;\n\n var prefixCls = getPrefixCls('table', customizePrefixCls);\n var dropdownPrefixCls = getPrefixCls('dropdown', customizeDropdownPrefixCls);\n\n var table = h(LocaleReceiver, {\n attrs: {\n componentName: 'Table',\n defaultLocale: defaultLocale.Table,\n children: function children(locale) {\n return _this13.renderTable({\n prefixCls: prefixCls,\n renderEmpty: renderEmpty,\n dropdownPrefixCls: dropdownPrefixCls,\n contextLocale: locale,\n getPopupContainer: getPopupContainer,\n transformCellText: transformCellText\n });\n }\n }\n });\n\n // if there is no pagination or no data,\n // the height of spin should decrease by half of pagination\n var paginationPatchClass = this.hasPagination() && data && data.length !== 0 ? prefixCls + '-with-pagination' : prefixCls + '-without-pagination';\n var spinProps = _extends({}, loading, {\n 'class': loading.props && loading.props.spinning ? paginationPatchClass + ' ' + prefixCls + '-spin-holder' : ''\n });\n return h(\n 'div',\n { 'class': classNames(prefixCls + '-wrapper') },\n [h(\n Spin,\n spinProps,\n [this.renderPagination(prefixCls, 'top'), table, this.renderPagination(prefixCls, 'bottom')]\n )]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport T from './Table';\nimport ref from 'vue-ref';\nimport Vue from 'vue';\nimport { getOptionProps, getKey, getClass, getStyle, getEvents, getSlotOptions, camelize, getSlots, getListeners } from '../_util/props-util';\nimport Base from '../base';\n\nVue.use(ref, { name: 'ant-ref' });\n\nvar Table = {\n name: 'ATable',\n Column: T.Column,\n ColumnGroup: T.ColumnGroup,\n props: T.props,\n methods: {\n normalize: function normalize() {\n var _this = this;\n\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var columns = [];\n elements.forEach(function (element) {\n if (!element.tag) {\n return;\n }\n var key = getKey(element);\n var style = getStyle(element);\n var cls = getClass(element);\n var props = getOptionProps(element);\n var events = getEvents(element);\n var listeners = {};\n Object.keys(events).forEach(function (e) {\n /*\n Convert events on template Column to function props onPropAbcChange in Table.columns prop.\n If you write template code like below:\n \n You will get these events:\n {\n 'prop-abc-change': this.f1,\n 'update:prop-abc': [this.f2, e => this.dataAbc = e],\n 'update:propAbc': e => this.dataAbc = e,\n }\n All of these events would be treat as column.onPropAbcChange,\n but only one of them will be valid, which can not be determined.\n */\n var k = void 0;\n if (e.startsWith('update:')) {\n k = 'on-' + e.substr('update:'.length) + '-change';\n } else {\n k = 'on-' + e;\n }\n listeners[camelize(k)] = events[e];\n });\n\n var _getSlots = getSlots(element),\n children = _getSlots['default'],\n restSlots = _objectWithoutProperties(_getSlots, ['default']);\n\n var column = _extends({}, restSlots, props, { style: style, 'class': cls }, listeners);\n if (key) {\n column.key = key;\n }\n if (getSlotOptions(element).__ANT_TABLE_COLUMN_GROUP) {\n column.children = _this.normalize(typeof children === 'function' ? children() : children);\n } else {\n var customRender = element.data && element.data.scopedSlots && element.data.scopedSlots['default'];\n column.customRender = column.customRender || customRender;\n }\n columns.push(column);\n });\n return columns;\n },\n updateColumns: function updateColumns() {\n var _this2 = this;\n\n var cols = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var columns = [];\n var $slots = this.$slots,\n $scopedSlots = this.$scopedSlots;\n\n cols.forEach(function (col) {\n var _col$slots = col.slots,\n slots = _col$slots === undefined ? {} : _col$slots,\n _col$scopedSlots = col.scopedSlots,\n scopedSlots = _col$scopedSlots === undefined ? {} : _col$scopedSlots,\n restProps = _objectWithoutProperties(col, ['slots', 'scopedSlots']);\n\n var column = _extends({}, restProps);\n Object.keys(slots).forEach(function (key) {\n var name = slots[key];\n if (column[key] === undefined && $slots[name]) {\n column[key] = $slots[name].length === 1 ? $slots[name][0] : $slots[name];\n }\n });\n Object.keys(scopedSlots).forEach(function (key) {\n var name = scopedSlots[key];\n if (column[key] === undefined && $scopedSlots[name]) {\n column[key] = $scopedSlots[name];\n }\n });\n // if (slotScopeName && $scopedSlots[slotScopeName]) {\n // column.customRender = column.customRender || $scopedSlots[slotScopeName]\n // }\n if (col.children) {\n column.children = _this2.updateColumns(column.children);\n }\n columns.push(column);\n });\n return columns;\n }\n },\n render: function render() {\n var h = arguments[0];\n var $slots = this.$slots,\n normalize = this.normalize,\n $scopedSlots = this.$scopedSlots;\n\n var props = getOptionProps(this);\n var columns = props.columns ? this.updateColumns(props.columns) : normalize($slots['default']);\n var title = props.title,\n footer = props.footer;\n var slotTitle = $scopedSlots.title,\n slotFooter = $scopedSlots.footer,\n _$scopedSlots$expande = $scopedSlots.expandedRowRender,\n expandedRowRender = _$scopedSlots$expande === undefined ? props.expandedRowRender : _$scopedSlots$expande,\n expandIcon = $scopedSlots.expandIcon;\n\n title = title || slotTitle;\n footer = footer || slotFooter;\n var tProps = {\n props: _extends({}, props, {\n columns: columns,\n title: title,\n footer: footer,\n expandedRowRender: expandedRowRender,\n expandIcon: this.$props.expandIcon || expandIcon\n }),\n on: getListeners(this)\n };\n return h(T, tProps);\n }\n};\n/* istanbul ignore next */\nTable.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Table.name, Table);\n Vue.component(Table.Column.name, Table.Column);\n Vue.component(Table.ColumnGroup.name, Table.ColumnGroup);\n};\n\nexport default Table;","import PropTypes from '../_util/vue-types';\nimport { initDefaultProps, getOptionProps } from '../_util/props-util';\nimport Icon from '../icon';\nimport Input from '../input';\n\nexport var TransferSearchProps = {\n prefixCls: PropTypes.string,\n placeholder: PropTypes.string,\n value: PropTypes.any,\n handleClear: PropTypes.func,\n disabled: PropTypes.bool\n};\n\nexport default {\n name: 'Search',\n props: initDefaultProps(TransferSearchProps, {\n placeholder: ''\n }),\n methods: {\n handleChange: function handleChange(e) {\n this.$emit('change', e);\n },\n handleClear2: function handleClear2(e) {\n e.preventDefault();\n var _$props = this.$props,\n handleClear = _$props.handleClear,\n disabled = _$props.disabled;\n\n if (!disabled && handleClear) {\n handleClear(e);\n }\n }\n },\n render: function render() {\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n placeholder = _getOptionProps.placeholder,\n value = _getOptionProps.value,\n prefixCls = _getOptionProps.prefixCls,\n disabled = _getOptionProps.disabled;\n\n var icon = value && value.length > 0 ? h(\n 'a',\n {\n attrs: { href: '#' },\n 'class': prefixCls + '-action', on: {\n 'click': this.handleClear2\n }\n },\n [h(Icon, {\n attrs: { type: 'close-circle', theme: 'filled' }\n })]\n ) : h(\n 'span',\n { 'class': prefixCls + '-action' },\n [h(Icon, {\n attrs: { type: 'search' }\n })]\n );\n\n return h('div', [h(Input, {\n attrs: {\n placeholder: placeholder,\n\n value: value,\n\n disabled: disabled\n },\n 'class': prefixCls, on: {\n 'change': this.handleChange\n }\n }), icon]);\n }\n};","var style = function style(element, prop) {\n var styleVal = '';\n if (typeof getComputedStyle !== 'undefined') {\n styleVal = window.getComputedStyle(element, null).getPropertyValue(prop);\n } else {\n styleVal = element.style[prop];\n }\n return styleVal;\n};\n\nvar overflow = function overflow(element) {\n return style(element, 'overflow') + style(element, 'overflow-y') + style(element, 'overflow-x');\n};\n\nvar scrollParent = function scrollParent(element) {\n if (!(element instanceof window.HTMLElement)) {\n return window;\n }\n\n var parent = element;\n\n while (parent) {\n if (parent === document.body || parent === document.documentElement) {\n break;\n }\n\n if (!parent.parentNode) {\n break;\n }\n if (/(scroll|auto)/.test(overflow(parent))) {\n return parent;\n }\n\n parent = parent.parentNode;\n }\n\n return window;\n};\n\nexport default scrollParent;","/*\n * Finds element's position relative to the whole document,\n * rather than to the viewport as it is the case with .getBoundingClientRect().\n */\nexport default function getElementPosition(element) {\n var rect = element.getBoundingClientRect();\n\n return {\n top: rect.top + window.pageYOffset,\n left: rect.left + window.pageXOffset\n };\n}","import getElementPosition from './getElementPosition';\n\nvar isHidden = function isHidden(element) {\n return element.offsetParent === null;\n};\n\nexport default function inViewport(element, container, customOffset) {\n if (isHidden(element)) {\n return false;\n }\n\n var top = void 0;\n var bottom = void 0;\n var left = void 0;\n var right = void 0;\n\n if (typeof container === 'undefined' || container === window) {\n top = window.pageYOffset;\n left = window.pageXOffset;\n bottom = top + window.innerHeight;\n right = left + window.innerWidth;\n } else {\n var containerPosition = getElementPosition(container);\n\n top = containerPosition.top;\n left = containerPosition.left;\n bottom = top + container.offsetHeight;\n right = left + container.offsetWidth;\n }\n\n var elementPosition = getElementPosition(element);\n\n return top <= elementPosition.top + element.offsetHeight + customOffset.top && bottom >= elementPosition.top - customOffset.bottom && left <= elementPosition.left + element.offsetWidth + customOffset.left && right >= elementPosition.left - customOffset.right;\n}","import PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport addEventListener from '../../vc-util/Dom/addEventListener';\nimport { initDefaultProps } from '../../_util/props-util';\nimport warning from '../../_util/warning';\nimport debounce from 'lodash/debounce';\nimport throttle from 'lodash/throttle';\nimport parentScroll from './utils/parentScroll';\nimport inViewport from './utils/inViewport';\n\nvar lazyLoadProps = {\n debounce: PropTypes.bool,\n elementType: PropTypes.string,\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n offset: PropTypes.number,\n offsetBottom: PropTypes.number,\n offsetHorizontal: PropTypes.number,\n offsetLeft: PropTypes.number,\n offsetRight: PropTypes.number,\n offsetTop: PropTypes.number,\n offsetVertical: PropTypes.number,\n threshold: PropTypes.number,\n throttle: PropTypes.number,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n _propsSymbol: PropTypes.any\n};\n\nexport default {\n name: 'LazyLoad',\n mixins: [BaseMixin],\n props: initDefaultProps(lazyLoadProps, {\n elementType: 'div',\n debounce: true,\n offset: 0,\n offsetBottom: 0,\n offsetHorizontal: 0,\n offsetLeft: 0,\n offsetRight: 0,\n offsetTop: 0,\n offsetVertical: 0,\n throttle: 250\n }),\n data: function data() {\n if (this.throttle > 0) {\n if (this.debounce) {\n this.lazyLoadHandler = debounce(this.lazyLoadHandler, this.throttle);\n } else {\n this.lazyLoadHandler = throttle(this.lazyLoadHandler, this.throttle);\n }\n }\n return {\n visible: false\n };\n },\n\n watch: {\n _propsSymbol: function _propsSymbol() {\n if (!this.visible) {\n this.lazyLoadHandler();\n }\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n _this._mounted = true;\n var eventNode = _this.getEventNode();\n\n _this.lazyLoadHandler();\n\n if (_this.lazyLoadHandler.flush) {\n _this.lazyLoadHandler.flush();\n }\n _this.resizeHander = addEventListener(window, 'resize', _this.lazyLoadHandler);\n _this.scrollHander = addEventListener(eventNode, 'scroll', _this.lazyLoadHandler);\n });\n },\n beforeDestroy: function beforeDestroy() {\n this._mounted = false;\n if (this.lazyLoadHandler.cancel) {\n this.lazyLoadHandler.cancel();\n }\n\n this.detachListeners();\n },\n\n methods: {\n getEventNode: function getEventNode() {\n return parentScroll(this.$el);\n },\n getOffset: function getOffset() {\n var _$props = this.$props,\n offset = _$props.offset,\n offsetVertical = _$props.offsetVertical,\n offsetHorizontal = _$props.offsetHorizontal,\n offsetTop = _$props.offsetTop,\n offsetBottom = _$props.offsetBottom,\n offsetLeft = _$props.offsetLeft,\n offsetRight = _$props.offsetRight,\n threshold = _$props.threshold;\n\n\n var _offsetAll = threshold || offset;\n var _offsetVertical = offsetVertical || _offsetAll;\n var _offsetHorizontal = offsetHorizontal || _offsetAll;\n\n return {\n top: offsetTop || _offsetVertical,\n bottom: offsetBottom || _offsetVertical,\n left: offsetLeft || _offsetHorizontal,\n right: offsetRight || _offsetHorizontal\n };\n },\n lazyLoadHandler: function lazyLoadHandler() {\n var _this2 = this;\n\n if (!this._mounted) {\n return;\n }\n var offset = this.getOffset();\n var node = this.$el;\n var eventNode = this.getEventNode();\n\n if (inViewport(node, eventNode, offset)) {\n this.setState({ visible: true }, function () {\n _this2.__emit('contentVisible');\n });\n this.detachListeners();\n }\n },\n detachListeners: function detachListeners() {\n this.resizeHander && this.resizeHander.remove();\n this.scrollHander && this.scrollHander.remove();\n }\n },\n render: function render(createElement) {\n var children = this.$slots['default'];\n if (children.length !== 1) {\n warning(false, 'lazyLoad组件只能包含一个子元素');\n return null;\n }\n var _$props2 = this.$props,\n height = _$props2.height,\n width = _$props2.width,\n elementType = _$props2.elementType;\n var visible = this.visible;\n\n\n var elStyles = {\n height: typeof height === 'number' ? height + 'px' : height,\n width: typeof width === 'number' ? width + 'px' : width\n };\n var elClasses = {\n LazyLoad: true,\n 'is-visible': visible\n };\n\n return createElement(elementType, {\n 'class': elClasses,\n style: elStyles\n }, [visible ? children[0] : null]);\n }\n};","import LazyLoad from './src/LazyLoad';\nexport default LazyLoad;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport classNames from 'classnames';\nimport Lazyload from '../vc-lazy-load';\nimport Checkbox from '../checkbox';\n\nfunction noop() {}\n\nexport default {\n name: 'ListItem',\n props: {\n renderedText: PropTypes.any,\n renderedEl: PropTypes.any,\n item: PropTypes.any,\n lazy: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n checked: PropTypes.bool,\n prefixCls: PropTypes.string,\n disabled: PropTypes.bool\n },\n render: function render() {\n var _classNames,\n _this = this;\n\n var h = arguments[0];\n var _$props = this.$props,\n renderedText = _$props.renderedText,\n renderedEl = _$props.renderedEl,\n item = _$props.item,\n lazy = _$props.lazy,\n checked = _$props.checked,\n disabled = _$props.disabled,\n prefixCls = _$props.prefixCls;\n\n\n var className = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-content-item', true), _defineProperty(_classNames, prefixCls + '-content-item-disabled', disabled || item.disabled), _classNames));\n\n var title = void 0;\n if (typeof renderedText === 'string' || typeof renderedText === 'number') {\n title = String(renderedText);\n }\n\n var listItem = h(\n 'li',\n {\n 'class': className,\n attrs: { title: title\n },\n on: {\n 'click': disabled || item.disabled ? noop : function () {\n _this.$emit('click', item);\n }\n }\n },\n [h(Checkbox, {\n attrs: { checked: checked, disabled: disabled || item.disabled }\n }), h(\n 'span',\n { 'class': prefixCls + '-content-item-text' },\n [renderedEl]\n )]\n );\n var children = null;\n if (lazy) {\n var lazyProps = {\n props: _extends({\n height: 32,\n offset: 500,\n throttle: 0,\n debounce: false\n }, lazy, {\n _propsSymbol: Symbol()\n })\n };\n children = h(\n Lazyload,\n lazyProps,\n [listItem]\n );\n } else {\n children = listItem;\n }\n return children;\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport raf from '../_util/raf';\nimport ListItem from './ListItem';\nimport PropTypes from '../_util/vue-types';\nimport getTransitionProps from '../_util/getTransitionProps';\nfunction noop() {}\nvar ListBody = {\n name: 'ListBody',\n inheritAttrs: false,\n props: {\n prefixCls: PropTypes.string,\n filteredRenderItems: PropTypes.array.def([]),\n lazy: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n selectedKeys: PropTypes.array,\n disabled: PropTypes.bool\n },\n data: function data() {\n return {\n mounted: false\n };\n },\n\n computed: {\n itemsLength: function itemsLength() {\n return this.filteredRenderItems ? this.filteredRenderItems.length : 0;\n }\n },\n watch: {\n itemsLength: function itemsLength() {\n var _this = this;\n\n this.$nextTick(function () {\n var lazy = _this.$props.lazy;\n\n if (lazy !== false) {\n var container = _this.$el;\n raf.cancel(_this.lazyId);\n _this.lazyId = raf(function () {\n if (container) {\n var scrollEvent = new Event('scroll', { bubbles: true });\n container.dispatchEvent(scrollEvent);\n }\n });\n }\n });\n }\n },\n mounted: function mounted() {\n var _this2 = this;\n\n this.mountId = raf(function () {\n _this2.mounted = true;\n });\n },\n beforeDestroy: function beforeDestroy() {\n raf.cancel(this.mountId);\n raf.cancel(this.lazyId);\n },\n\n methods: {\n onItemSelect: function onItemSelect(item) {\n var selectedKeys = this.$props.selectedKeys;\n\n var checked = selectedKeys.indexOf(item.key) >= 0;\n this.$emit('itemSelect', item.key, !checked);\n },\n onScroll: function onScroll(e) {\n this.$emit('scroll', e);\n }\n },\n render: function render() {\n var _this3 = this;\n\n var h = arguments[0];\n var mounted = this.$data.mounted;\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n filteredRenderItems = _$props.filteredRenderItems,\n lazy = _$props.lazy,\n selectedKeys = _$props.selectedKeys,\n globalDisabled = _$props.disabled;\n\n var items = filteredRenderItems.map(function (_ref) {\n var renderedEl = _ref.renderedEl,\n renderedText = _ref.renderedText,\n item = _ref.item;\n var disabled = item.disabled;\n\n var checked = selectedKeys.indexOf(item.key) >= 0;\n\n return h(ListItem, {\n attrs: {\n disabled: globalDisabled || disabled,\n\n item: item,\n lazy: lazy,\n renderedText: renderedText,\n renderedEl: renderedEl,\n checked: checked,\n prefixCls: prefixCls\n },\n key: item.key, on: {\n 'click': _this3.onItemSelect\n }\n });\n });\n var transitionProps = getTransitionProps(mounted ? prefixCls + '-content-item-highlight' : '', {\n tag: 'ul',\n nativeOn: {\n scroll: this.onScroll\n },\n leave: noop\n });\n return h(\n 'transition-group',\n _mergeJSXProps([{ 'class': prefixCls + '-content' }, transitionProps]),\n [items]\n );\n }\n};\n\nexport default (function (h, props) {\n return h(ListBody, props);\n});","export default function triggerEvent(el, type) {\n if ('createEvent' in document) {\n // modern browsers, IE9+\n var e = document.createEvent('HTMLEvents');\n e.initEvent(type, false, true);\n el.dispatchEvent(e);\n }\n}","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport { isValidElement, initDefaultProps, getListeners } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport Checkbox from '../checkbox';\nimport Search from './search';\nimport defaultRenderList from './renderListBody';\nimport triggerEvent from '../_util/triggerEvent';\nimport addEventListener from '../vc-util/Dom/addEventListener';\n\nvar defaultRender = function defaultRender() {\n return null;\n};\n\nvar TransferItem = {\n key: PropTypes.string,\n title: PropTypes.string,\n description: PropTypes.string,\n disabled: PropTypes.bool\n};\n\nfunction isRenderResultPlainObject(result) {\n return result && !isValidElement(result) && Object.prototype.toString.call(result) === '[object Object]';\n}\n\nexport var TransferListProps = {\n prefixCls: PropTypes.string,\n titleText: PropTypes.string,\n dataSource: PropTypes.arrayOf(PropTypes.shape(TransferItem).loose),\n filter: PropTypes.string,\n filterOption: PropTypes.func,\n checkedKeys: PropTypes.arrayOf(PropTypes.string),\n handleFilter: PropTypes.func,\n handleSelect: PropTypes.func,\n handleSelectAll: PropTypes.func,\n handleClear: PropTypes.func,\n renderItem: PropTypes.func,\n showSearch: PropTypes.bool,\n searchPlaceholder: PropTypes.string,\n notFoundContent: PropTypes.any,\n itemUnit: PropTypes.string,\n itemsUnit: PropTypes.string,\n body: PropTypes.any,\n renderList: PropTypes.any,\n footer: PropTypes.any,\n lazy: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n disabled: PropTypes.bool,\n direction: PropTypes.string,\n showSelectAll: PropTypes.bool\n};\n\nfunction renderListNode(h, renderList, props) {\n var bodyContent = renderList ? renderList(props) : null;\n var customize = !!bodyContent;\n if (!customize) {\n bodyContent = defaultRenderList(h, props);\n }\n return {\n customize: customize,\n bodyContent: bodyContent\n };\n}\n\nexport default {\n name: 'TransferList',\n mixins: [BaseMixin],\n props: initDefaultProps(TransferListProps, {\n dataSource: [],\n titleText: '',\n showSearch: false,\n lazy: {}\n }),\n data: function data() {\n this.timer = null;\n this.triggerScrollTimer = null;\n return {\n filterValue: ''\n };\n },\n\n // mounted() {\n // this.timer = setTimeout(() => {\n // this.setState({\n // mounted: true,\n // });\n // }, 0);\n // this.$nextTick(() => {\n // if (this.$refs.listContentWrapper) {\n // const listContentWrapperDom = this.$refs.listContentWrapper.$el;\n // this.scrollEvent = addEventListener(listContentWrapperDom, 'scroll', this.handleScroll);\n // }\n // });\n // },\n beforeDestroy: function beforeDestroy() {\n clearTimeout(this.triggerScrollTimer);\n // if (this.scrollEvent) {\n // this.scrollEvent.remove();\n // }\n },\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.scrollEvent) {\n _this.scrollEvent.remove();\n }\n if (_this.$refs.listContentWrapper) {\n var listContentWrapperDom = _this.$refs.listContentWrapper.$el;\n _this.scrollEvent = addEventListener(listContentWrapperDom, 'scroll', _this.handleScroll);\n }\n });\n },\n\n methods: {\n handleScroll: function handleScroll(e) {\n this.$emit('scroll', e);\n },\n getCheckStatus: function getCheckStatus(filteredItems) {\n var checkedKeys = this.$props.checkedKeys;\n\n if (checkedKeys.length === 0) {\n return 'none';\n }\n if (filteredItems.every(function (item) {\n return checkedKeys.indexOf(item.key) >= 0 || !!item.disabled;\n })) {\n return 'all';\n }\n return 'part';\n },\n getFilteredItems: function getFilteredItems(dataSource, filterValue) {\n var _this2 = this;\n\n var filteredItems = [];\n var filteredRenderItems = [];\n\n dataSource.forEach(function (item) {\n var renderedItem = _this2.renderItemHtml(item);\n var renderedText = renderedItem.renderedText;\n\n // Filter skip\n\n if (filterValue && filterValue.trim() && !_this2.matchFilter(renderedText, item)) {\n return null;\n }\n\n filteredItems.push(item);\n filteredRenderItems.push(renderedItem);\n });\n\n return { filteredItems: filteredItems, filteredRenderItems: filteredRenderItems };\n },\n getListBody: function getListBody(prefixCls, searchPlaceholder, filterValue, filteredItems, notFoundContent, bodyDom, filteredRenderItems, checkedKeys, renderList, showSearch, disabled) {\n var h = this.$createElement;\n\n var search = showSearch ? h(\n 'div',\n { 'class': prefixCls + '-body-search-wrapper' },\n [h(Search, {\n attrs: {\n prefixCls: prefixCls + '-search',\n\n handleClear: this._handleClear,\n placeholder: searchPlaceholder,\n value: filterValue,\n disabled: disabled\n },\n on: {\n 'change': this._handleFilter\n }\n })]\n ) : null;\n\n var listBody = bodyDom;\n if (!listBody) {\n var bodyNode = void 0;\n\n var _renderListNode = renderListNode(this.$createElement, renderList, {\n props: _extends({}, this.$props, { filteredItems: filteredItems, filteredRenderItems: filteredRenderItems, selectedKeys: checkedKeys }),\n on: getListeners(this)\n }),\n bodyContent = _renderListNode.bodyContent,\n customize = _renderListNode.customize;\n\n // We should wrap customize list body in a classNamed div to use flex layout.\n\n\n if (customize) {\n bodyNode = h(\n 'div',\n { 'class': prefixCls + '-body-customize-wrapper' },\n [bodyContent]\n );\n } else {\n bodyNode = filteredItems.length ? bodyContent : h(\n 'div',\n { 'class': prefixCls + '-body-not-found' },\n [notFoundContent]\n );\n }\n\n listBody = h(\n 'div',\n {\n 'class': classNames(showSearch ? prefixCls + '-body ' + prefixCls + '-body-with-search' : prefixCls + '-body')\n },\n [search, bodyNode]\n );\n }\n return listBody;\n },\n getCheckBox: function getCheckBox(filteredItems, showSelectAll, disabled) {\n var _this3 = this;\n\n var h = this.$createElement;\n\n var checkStatus = this.getCheckStatus(filteredItems);\n var checkedAll = checkStatus === 'all';\n var checkAllCheckbox = showSelectAll !== false && h(Checkbox, {\n attrs: {\n disabled: disabled,\n checked: checkedAll,\n indeterminate: checkStatus === 'part'\n },\n on: {\n 'change': function change() {\n // Only select enabled items\n _this3.$emit('itemSelectAll', filteredItems.filter(function (item) {\n return !item.disabled;\n }).map(function (_ref) {\n var key = _ref.key;\n return key;\n }), !checkedAll);\n }\n }\n });\n\n return checkAllCheckbox;\n },\n _handleSelect: function _handleSelect(selectedItem) {\n var checkedKeys = this.$props.checkedKeys;\n\n var result = checkedKeys.some(function (key) {\n return key === selectedItem.key;\n });\n this.handleSelect(selectedItem, !result);\n },\n _handleFilter: function _handleFilter(e) {\n var _this4 = this;\n\n var handleFilter = this.$props.handleFilter;\n var filterValue = e.target.value;\n\n this.setState({ filterValue: filterValue });\n handleFilter(e);\n if (!filterValue) {\n return;\n }\n // Manually trigger scroll event for lazy search bug\n // https://github.com/ant-design/ant-design/issues/5631\n this.triggerScrollTimer = setTimeout(function () {\n var transferNode = _this4.$el;\n var listNode = transferNode.querySelectorAll('.ant-transfer-list-content')[0];\n if (listNode) {\n triggerEvent(listNode, 'scroll');\n }\n }, 0);\n },\n _handleClear: function _handleClear(e) {\n this.setState({ filterValue: '' });\n this.handleClear(e);\n },\n matchFilter: function matchFilter(text, item) {\n var filterValue = this.$data.filterValue;\n var filterOption = this.$props.filterOption;\n\n if (filterOption) {\n return filterOption(filterValue, item);\n }\n return text.indexOf(filterValue) >= 0;\n },\n renderItemHtml: function renderItemHtml(item) {\n var _$props$renderItem = this.$props.renderItem,\n renderItem = _$props$renderItem === undefined ? defaultRender : _$props$renderItem;\n\n var renderResult = renderItem(item);\n var isRenderResultPlain = isRenderResultPlainObject(renderResult);\n return {\n renderedText: isRenderResultPlain ? renderResult.value : renderResult,\n renderedEl: isRenderResultPlain ? renderResult.label : renderResult,\n item: item\n };\n },\n filterNull: function filterNull(arr) {\n return arr.filter(function (item) {\n return item !== null;\n });\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var filterValue = this.$data.filterValue;\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n dataSource = _$props.dataSource,\n titleText = _$props.titleText,\n checkedKeys = _$props.checkedKeys,\n disabled = _$props.disabled,\n body = _$props.body,\n footer = _$props.footer,\n showSearch = _$props.showSearch,\n searchPlaceholder = _$props.searchPlaceholder,\n notFoundContent = _$props.notFoundContent,\n itemUnit = _$props.itemUnit,\n itemsUnit = _$props.itemsUnit,\n renderList = _$props.renderList,\n showSelectAll = _$props.showSelectAll;\n\n // Custom Layout\n\n var footerDom = footer && footer(_extends({}, this.$props));\n var bodyDom = body && body(_extends({}, this.$props));\n\n var listCls = classNames(prefixCls, _defineProperty({}, prefixCls + '-with-footer', !!footerDom));\n\n // ====================== Get filtered, checked item list ======================\n\n var _getFilteredItems = this.getFilteredItems(dataSource, filterValue),\n filteredItems = _getFilteredItems.filteredItems,\n filteredRenderItems = _getFilteredItems.filteredRenderItems;\n\n // ================================= List Body =================================\n\n var unit = dataSource.length > 1 ? itemsUnit : itemUnit;\n\n var listBody = this.getListBody(prefixCls, searchPlaceholder, filterValue, filteredItems, notFoundContent, bodyDom, filteredRenderItems, checkedKeys, renderList, showSearch, disabled);\n\n var listFooter = footerDom ? h(\n 'div',\n { 'class': prefixCls + '-footer' },\n [footerDom]\n ) : null;\n\n var checkAllCheckbox = this.getCheckBox(filteredItems, showSelectAll, disabled);\n\n return h(\n 'div',\n { 'class': listCls },\n [h(\n 'div',\n { 'class': prefixCls + '-header' },\n [checkAllCheckbox, h(\n 'span',\n { 'class': prefixCls + '-header-selected' },\n [h('span', [(checkedKeys.length > 0 ? checkedKeys.length + '/' : '') + filteredItems.length, ' ', unit]), h(\n 'span',\n { 'class': prefixCls + '-header-title' },\n [titleText]\n )]\n )]\n ), listBody, listFooter]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps } from '../_util/props-util';\nimport Button from '../button';\n\nfunction noop() {}\n\nexport var TransferOperationProps = {\n className: PropTypes.string,\n leftArrowText: PropTypes.string,\n rightArrowText: PropTypes.string,\n moveToLeft: PropTypes.any,\n moveToRight: PropTypes.any,\n leftActive: PropTypes.bool,\n rightActive: PropTypes.bool,\n disabled: PropTypes.bool\n};\n\nexport default {\n name: 'Operation',\n props: _extends({}, TransferOperationProps),\n render: function render() {\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n disabled = _getOptionProps.disabled,\n _getOptionProps$moveT = _getOptionProps.moveToLeft,\n moveToLeft = _getOptionProps$moveT === undefined ? noop : _getOptionProps$moveT,\n _getOptionProps$moveT2 = _getOptionProps.moveToRight,\n moveToRight = _getOptionProps$moveT2 === undefined ? noop : _getOptionProps$moveT2,\n _getOptionProps$leftA = _getOptionProps.leftArrowText,\n leftArrowText = _getOptionProps$leftA === undefined ? '' : _getOptionProps$leftA,\n _getOptionProps$right = _getOptionProps.rightArrowText,\n rightArrowText = _getOptionProps$right === undefined ? '' : _getOptionProps$right,\n leftActive = _getOptionProps.leftActive,\n rightActive = _getOptionProps.rightActive;\n\n return h('div', [h(\n Button,\n {\n attrs: {\n type: 'primary',\n size: 'small',\n disabled: disabled || !rightActive,\n\n icon: 'right'\n },\n on: {\n 'click': moveToRight\n }\n },\n [rightArrowText]\n ), h(\n Button,\n {\n attrs: {\n type: 'primary',\n size: 'small',\n disabled: disabled || !leftActive,\n\n icon: 'left'\n },\n on: {\n 'click': moveToLeft\n }\n },\n [leftArrowText]\n )]);\n }\n};","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { hasProp, initDefaultProps, getOptionProps, getComponentFromProp, getListeners } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport classNames from 'classnames';\nimport List from './list';\nimport Operation from './operation';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport defaultLocale from '../locale-provider/default';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport warning from '../_util/warning';\nimport Base from '../base';\n\nexport var TransferDirection = 'left' | 'right';\n\nexport var TransferItem = {\n key: PropTypes.string,\n title: PropTypes.string,\n description: PropTypes.string,\n disabled: PropTypes.bool\n};\n\nexport var TransferProps = {\n prefixCls: PropTypes.string,\n dataSource: PropTypes.arrayOf(PropTypes.shape(TransferItem).loose),\n disabled: PropTypes.boolean,\n targetKeys: PropTypes.arrayOf(PropTypes.string),\n selectedKeys: PropTypes.arrayOf(PropTypes.string),\n render: PropTypes.func,\n listStyle: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n operationStyle: PropTypes.object,\n titles: PropTypes.arrayOf(PropTypes.string),\n operations: PropTypes.arrayOf(PropTypes.string),\n showSearch: PropTypes.bool,\n filterOption: PropTypes.func,\n searchPlaceholder: PropTypes.string,\n notFoundContent: PropTypes.any,\n locale: PropTypes.object,\n rowKey: PropTypes.func,\n lazy: PropTypes.oneOfType([PropTypes.object, PropTypes.bool]),\n showSelectAll: PropTypes.bool\n};\n\nexport var TransferLocale = {\n titles: PropTypes.arrayOf(PropTypes.string),\n notFoundContent: PropTypes.string,\n itemUnit: PropTypes.string,\n itemsUnit: PropTypes.string\n};\n\nvar Transfer = {\n name: 'ATransfer',\n mixins: [BaseMixin],\n props: initDefaultProps(TransferProps, {\n dataSource: [],\n locale: {},\n showSearch: false,\n listStyle: function listStyle() {}\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n data: function data() {\n // vue 中 通过slot,不方便传递,保留notFoundContent及searchPlaceholder\n // warning(\n // !(getComponentFromProp(this, 'notFoundContent') || hasProp(this, 'searchPlaceholder')),\n // 'Transfer[notFoundContent] and Transfer[searchPlaceholder] will be removed, ' +\n // 'please use Transfer[locale] instead.',\n // )\n var _selectedKeys = this.selectedKeys,\n selectedKeys = _selectedKeys === undefined ? [] : _selectedKeys,\n _targetKeys = this.targetKeys,\n targetKeys = _targetKeys === undefined ? [] : _targetKeys;\n\n return {\n leftFilter: '',\n rightFilter: '',\n sourceSelectedKeys: selectedKeys.filter(function (key) {\n return targetKeys.indexOf(key) === -1;\n }),\n targetSelectedKeys: selectedKeys.filter(function (key) {\n return targetKeys.indexOf(key) > -1;\n })\n };\n },\n mounted: function mounted() {\n // this.currentProps = { ...this.$props }\n },\n\n watch: {\n targetKeys: function targetKeys() {\n this.updateState();\n if (this.selectedKeys) {\n var targetKeys = this.targetKeys || [];\n this.setState({\n sourceSelectedKeys: this.selectedKeys.filter(function (key) {\n return !targetKeys.includes(key);\n }),\n targetSelectedKeys: this.selectedKeys.filter(function (key) {\n return targetKeys.includes(key);\n })\n });\n }\n },\n dataSource: function dataSource() {\n this.updateState();\n },\n selectedKeys: function selectedKeys() {\n if (this.selectedKeys) {\n var targetKeys = this.targetKeys || [];\n this.setState({\n sourceSelectedKeys: this.selectedKeys.filter(function (key) {\n return !targetKeys.includes(key);\n }),\n targetSelectedKeys: this.selectedKeys.filter(function (key) {\n return targetKeys.includes(key);\n })\n });\n }\n }\n },\n methods: {\n getSelectedKeysName: function getSelectedKeysName(direction) {\n return direction === 'left' ? 'sourceSelectedKeys' : 'targetSelectedKeys';\n },\n getTitles: function getTitles(transferLocale) {\n if (this.titles) {\n return this.titles;\n }\n return transferLocale.titles || ['', ''];\n },\n getLocale: function getLocale(transferLocale, renderEmpty) {\n var h = this.$createElement;\n // Keep old locale props still working.\n var oldLocale = {\n notFoundContent: renderEmpty(h, 'Transfer')\n };\n var notFoundContent = getComponentFromProp(this, 'notFoundContent');\n if (notFoundContent) {\n oldLocale.notFoundContent = notFoundContent;\n }\n if (hasProp(this, 'searchPlaceholder')) {\n oldLocale.searchPlaceholder = this.$props.searchPlaceholder;\n }\n\n return _extends({}, transferLocale, oldLocale, this.$props.locale);\n },\n updateState: function updateState() {\n var sourceSelectedKeys = this.sourceSelectedKeys,\n targetSelectedKeys = this.targetSelectedKeys;\n\n this.separatedDataSource = null;\n if (!this.selectedKeys) {\n // clear key nolonger existed\n // clear checkedKeys according to targetKeys\n var dataSource = this.dataSource,\n _targetKeys2 = this.targetKeys,\n targetKeys = _targetKeys2 === undefined ? [] : _targetKeys2;\n\n\n var newSourceSelectedKeys = [];\n var newTargetSelectedKeys = [];\n dataSource.forEach(function (_ref) {\n var key = _ref.key;\n\n if (sourceSelectedKeys.includes(key) && !targetKeys.includes(key)) {\n newSourceSelectedKeys.push(key);\n }\n if (targetSelectedKeys.includes(key) && targetKeys.includes(key)) {\n newTargetSelectedKeys.push(key);\n }\n });\n this.setState({\n sourceSelectedKeys: newSourceSelectedKeys,\n targetSelectedKeys: newTargetSelectedKeys\n });\n }\n },\n moveTo: function moveTo(direction) {\n var _$props = this.$props,\n _$props$targetKeys = _$props.targetKeys,\n targetKeys = _$props$targetKeys === undefined ? [] : _$props$targetKeys,\n _$props$dataSource = _$props.dataSource,\n dataSource = _$props$dataSource === undefined ? [] : _$props$dataSource;\n var sourceSelectedKeys = this.sourceSelectedKeys,\n targetSelectedKeys = this.targetSelectedKeys;\n\n var moveKeys = direction === 'right' ? sourceSelectedKeys : targetSelectedKeys;\n // filter the disabled options\n var newMoveKeys = moveKeys.filter(function (key) {\n return !dataSource.some(function (data) {\n return !!(key === data.key && data.disabled);\n });\n });\n // move items to target box\n var newTargetKeys = direction === 'right' ? newMoveKeys.concat(targetKeys) : targetKeys.filter(function (targetKey) {\n return newMoveKeys.indexOf(targetKey) === -1;\n });\n\n // empty checked keys\n var oppositeDirection = direction === 'right' ? 'left' : 'right';\n this.setState(_defineProperty({}, this.getSelectedKeysName(oppositeDirection), []));\n this.handleSelectChange(oppositeDirection, []);\n\n this.$emit('change', newTargetKeys, direction, newMoveKeys);\n },\n moveToLeft: function moveToLeft() {\n this.moveTo('left');\n },\n moveToRight: function moveToRight() {\n this.moveTo('right');\n },\n onItemSelectAll: function onItemSelectAll(direction, selectedKeys, checkAll) {\n var originalSelectedKeys = this.$data[this.getSelectedKeysName(direction)] || [];\n\n var mergedCheckedKeys = [];\n if (checkAll) {\n // Merge current keys with origin key\n mergedCheckedKeys = Array.from(new Set([].concat(_toConsumableArray(originalSelectedKeys), _toConsumableArray(selectedKeys))));\n } else {\n // Remove current keys from origin keys\n mergedCheckedKeys = originalSelectedKeys.filter(function (key) {\n return selectedKeys.indexOf(key) === -1;\n });\n }\n\n this.handleSelectChange(direction, mergedCheckedKeys);\n\n if (!this.$props.selectedKeys) {\n this.setState(_defineProperty({}, this.getSelectedKeysName(direction), mergedCheckedKeys));\n }\n },\n handleSelectAll: function handleSelectAll(direction, filteredDataSource, checkAll) {\n this.onItemSelectAll(direction, filteredDataSource.map(function (_ref2) {\n var key = _ref2.key;\n return key;\n }), !checkAll);\n },\n\n\n // [Legacy] Old prop `body` pass origin check as arg. It's confusing.\n // TODO: Remove this in next version.\n handleLeftSelectAll: function handleLeftSelectAll(filteredDataSource, checkAll) {\n return this.handleSelectAll('left', filteredDataSource, !checkAll);\n },\n handleRightSelectAll: function handleRightSelectAll(filteredDataSource, checkAll) {\n return this.handleSelectAll('right', filteredDataSource, !checkAll);\n },\n onLeftItemSelectAll: function onLeftItemSelectAll(selectedKeys, checkAll) {\n return this.onItemSelectAll('left', selectedKeys, checkAll);\n },\n onRightItemSelectAll: function onRightItemSelectAll(selectedKeys, checkAll) {\n return this.onItemSelectAll('right', selectedKeys, checkAll);\n },\n handleFilter: function handleFilter(direction, e) {\n var value = e.target.value;\n if (getListeners(this).searchChange) {\n warning(false, 'Transfer', '`searchChange` in Transfer is deprecated. Please use `search` instead.');\n this.$emit('searchChange', direction, e);\n }\n this.$emit('search', direction, value);\n },\n handleLeftFilter: function handleLeftFilter(e) {\n this.handleFilter('left', e);\n },\n handleRightFilter: function handleRightFilter(e) {\n this.handleFilter('right', e);\n },\n handleClear: function handleClear(direction) {\n this.$emit('search', direction, '');\n },\n handleLeftClear: function handleLeftClear() {\n this.handleClear('left');\n },\n handleRightClear: function handleRightClear() {\n this.handleClear('right');\n },\n onItemSelect: function onItemSelect(direction, selectedKey, checked) {\n var sourceSelectedKeys = this.sourceSelectedKeys,\n targetSelectedKeys = this.targetSelectedKeys;\n\n var holder = direction === 'left' ? [].concat(_toConsumableArray(sourceSelectedKeys)) : [].concat(_toConsumableArray(targetSelectedKeys));\n var index = holder.indexOf(selectedKey);\n if (index > -1) {\n holder.splice(index, 1);\n }\n if (checked) {\n holder.push(selectedKey);\n }\n this.handleSelectChange(direction, holder);\n\n if (!this.selectedKeys) {\n this.setState(_defineProperty({}, this.getSelectedKeysName(direction), holder));\n }\n },\n handleSelect: function handleSelect(direction, selectedItem, checked) {\n warning(false, 'Transfer', '`handleSelect` will be removed, please use `onSelect` instead.');\n this.onItemSelect(direction, selectedItem.key, checked);\n },\n handleLeftSelect: function handleLeftSelect(selectedItem, checked) {\n return this.handleSelect('left', selectedItem, checked);\n },\n handleRightSelect: function handleRightSelect(selectedItem, checked) {\n return this.handleSelect('right', selectedItem, checked);\n },\n onLeftItemSelect: function onLeftItemSelect(selectedKey, checked) {\n return this.onItemSelect('left', selectedKey, checked);\n },\n onRightItemSelect: function onRightItemSelect(selectedKey, checked) {\n return this.onItemSelect('right', selectedKey, checked);\n },\n handleScroll: function handleScroll(direction, e) {\n this.$emit('scroll', direction, e);\n },\n handleLeftScroll: function handleLeftScroll(e) {\n this.handleScroll('left', e);\n },\n handleRightScroll: function handleRightScroll(e) {\n this.handleScroll('right', e);\n },\n handleSelectChange: function handleSelectChange(direction, holder) {\n var sourceSelectedKeys = this.sourceSelectedKeys,\n targetSelectedKeys = this.targetSelectedKeys;\n\n\n if (direction === 'left') {\n this.$emit('selectChange', holder, targetSelectedKeys);\n } else {\n this.$emit('selectChange', sourceSelectedKeys, holder);\n }\n },\n handleListStyle: function handleListStyle(listStyle, direction) {\n if (typeof listStyle === 'function') {\n return listStyle({ direction: direction });\n }\n return listStyle;\n },\n separateDataSource: function separateDataSource() {\n var _$props2 = this.$props,\n dataSource = _$props2.dataSource,\n rowKey = _$props2.rowKey,\n _$props2$targetKeys = _$props2.targetKeys,\n targetKeys = _$props2$targetKeys === undefined ? [] : _$props2$targetKeys;\n\n\n var leftDataSource = [];\n var rightDataSource = new Array(targetKeys.length);\n dataSource.forEach(function (record) {\n if (rowKey) {\n record.key = rowKey(record);\n }\n\n // rightDataSource should be ordered by targetKeys\n // leftDataSource should be ordered by dataSource\n var indexOfKey = targetKeys.indexOf(record.key);\n if (indexOfKey !== -1) {\n rightDataSource[indexOfKey] = record;\n } else {\n leftDataSource.push(record);\n }\n });\n\n return {\n leftDataSource: leftDataSource,\n rightDataSource: rightDataSource\n };\n },\n renderTransfer: function renderTransfer(transferLocale) {\n var _classNames;\n\n var h = this.$createElement;\n\n var props = getOptionProps(this);\n var customizePrefixCls = props.prefixCls,\n disabled = props.disabled,\n _props$operations = props.operations,\n operations = _props$operations === undefined ? [] : _props$operations,\n showSearch = props.showSearch,\n listStyle = props.listStyle,\n operationStyle = props.operationStyle,\n filterOption = props.filterOption,\n lazy = props.lazy,\n showSelectAll = props.showSelectAll;\n\n var children = getComponentFromProp(this, 'children', {}, false);\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('transfer', customizePrefixCls);\n\n var renderEmpty = this.configProvider.renderEmpty;\n var locale = this.getLocale(transferLocale, renderEmpty);\n var sourceSelectedKeys = this.sourceSelectedKeys,\n targetSelectedKeys = this.targetSelectedKeys,\n $scopedSlots = this.$scopedSlots;\n var body = $scopedSlots.body,\n footer = $scopedSlots.footer;\n\n var renderItem = props.render;\n\n var _separateDataSource = this.separateDataSource(),\n leftDataSource = _separateDataSource.leftDataSource,\n rightDataSource = _separateDataSource.rightDataSource;\n\n var leftActive = targetSelectedKeys.length > 0;\n var rightActive = sourceSelectedKeys.length > 0;\n\n var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-disabled', disabled), _defineProperty(_classNames, prefixCls + '-customize-list', !!children), _classNames));\n var titles = this.getTitles(locale);\n return h(\n 'div',\n { 'class': cls },\n [h(List, {\n key: 'leftList',\n attrs: { prefixCls: prefixCls + '-list',\n titleText: titles[0],\n dataSource: leftDataSource,\n filterOption: filterOption,\n\n checkedKeys: sourceSelectedKeys,\n handleFilter: this.handleLeftFilter,\n handleClear: this.handleLeftClear,\n handleSelect: this.handleLeftSelect,\n handleSelectAll: this.handleLeftSelectAll,\n\n renderItem: renderItem,\n showSearch: showSearch,\n body: body,\n renderList: children,\n footer: footer,\n lazy: lazy,\n\n disabled: disabled,\n direction: 'left',\n showSelectAll: showSelectAll,\n itemUnit: locale.itemUnit,\n itemsUnit: locale.itemsUnit,\n notFoundContent: locale.notFoundContent,\n searchPlaceholder: locale.searchPlaceholder\n },\n style: this.handleListStyle(listStyle, 'left'), on: {\n 'itemSelect': this.onLeftItemSelect,\n 'itemSelectAll': this.onLeftItemSelectAll,\n 'scroll': this.handleLeftScroll\n }\n }), h(Operation, {\n key: 'operation',\n 'class': prefixCls + '-operation',\n attrs: { rightActive: rightActive,\n rightArrowText: operations[0],\n moveToRight: this.moveToRight,\n leftActive: leftActive,\n leftArrowText: operations[1],\n moveToLeft: this.moveToLeft,\n\n disabled: disabled\n },\n style: operationStyle }), h(List, {\n key: 'rightList',\n attrs: { prefixCls: prefixCls + '-list',\n titleText: titles[1],\n dataSource: rightDataSource,\n filterOption: filterOption,\n\n checkedKeys: targetSelectedKeys,\n handleFilter: this.handleRightFilter,\n handleClear: this.handleRightClear,\n handleSelect: this.handleRightSelect,\n handleSelectAll: this.handleRightSelectAll,\n\n renderItem: renderItem,\n showSearch: showSearch,\n body: body,\n renderList: children,\n footer: footer,\n lazy: lazy,\n\n disabled: disabled,\n direction: 'right',\n showSelectAll: showSelectAll,\n itemUnit: locale.itemUnit,\n itemsUnit: locale.itemsUnit,\n notFoundContent: locale.notFoundContent,\n searchPlaceholder: locale.searchPlaceholder\n },\n style: this.handleListStyle(listStyle, 'right'), on: {\n 'itemSelect': this.onRightItemSelect,\n 'itemSelectAll': this.onRightItemSelectAll,\n 'scroll': this.handleRightScroll\n }\n })]\n );\n }\n },\n render: function render() {\n var h = arguments[0];\n\n return h(LocaleReceiver, {\n attrs: {\n componentName: 'Transfer',\n defaultLocale: defaultLocale.Transfer\n },\n scopedSlots: { 'default': this.renderTransfer }\n });\n }\n};\n\n/* istanbul ignore next */\nTransfer.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Transfer.name, Transfer);\n};\n\nexport default Transfer;","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport warning from 'warning';\nimport { Tree as VcTree, TreeNode } from '../vc-tree';\nimport animation from '../_util/openAnimation';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps, getOptionProps, filterEmpty, getComponentFromProp, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Icon from '../icon';\n\nfunction TreeProps() {\n return {\n showLine: PropTypes.bool,\n /** 是否支持多选 */\n multiple: PropTypes.bool,\n /** 是否自动展开父节点 */\n autoExpandParent: PropTypes.bool,\n /** checkable状态下节点选择完全受控(父子节点选中状态不再关联)*/\n checkStrictly: PropTypes.bool,\n /** 是否支持选中 */\n checkable: PropTypes.bool,\n /** 是否禁用树 */\n disabled: PropTypes.bool,\n /** 默认展开所有树节点 */\n defaultExpandAll: PropTypes.bool,\n /** 默认展开对应树节点 */\n defaultExpandParent: PropTypes.bool,\n /** 默认展开指定的树节点 */\n defaultExpandedKeys: PropTypes.array,\n /** (受控)展开指定的树节点 */\n expandedKeys: PropTypes.array,\n /** (受控)选中复选框的树节点 */\n checkedKeys: PropTypes.oneOfType([PropTypes.array, PropTypes.shape({\n checked: PropTypes.array,\n halfChecked: PropTypes.array\n }).loose]),\n /** 默认选中复选框的树节点 */\n defaultCheckedKeys: PropTypes.array,\n /** (受控)设置选中的树节点 */\n selectedKeys: PropTypes.array,\n /** 默认选中的树节点 */\n defaultSelectedKeys: PropTypes.array,\n selectable: PropTypes.bool,\n /** 展开/收起节点时触发 */\n // onExpand: (expandedKeys: string[], info: AntTreeNodeExpandedEvent) => void | PromiseLike,\n /** 点击复选框触发 */\n // onCheck: (checkedKeys: string[] | { checked: string[]; halfChecked: string[] }, e: AntTreeNodeCheckedEvent) => void,\n /** 点击树节点触发 */\n // onSelect: (selectedKeys: string[], e: AntTreeNodeSelectedEvent) => void,\n /** 单击树节点触发 */\n // onClick: (e: React.MouseEvent, node: AntTreeNode) => void,\n /** 双击树节点触发 */\n // onDoubleClick: (e: React.MouseEvent, node: AntTreeNode) => void,\n /** filter some AntTreeNodes as you need. it should return true */\n filterAntTreeNode: PropTypes.func,\n /** 异步加载数据 */\n loadData: PropTypes.func,\n loadedKeys: PropTypes.array,\n // onLoaded: (loadedKeys: string[], info: { event: 'load', node: AntTreeNode; }) => void,\n /** 响应右键点击 */\n // onRightClick: (options: AntTreeNodeMouseEvent) => void,\n /** 设置节点可拖拽(IE>8)*/\n draggable: PropTypes.bool,\n // /** 开始拖拽时调用 */\n // onDragStart: (options: AntTreeNodeMouseEvent) => void,\n // /** dragenter 触发时调用 */\n // onDragEnter: (options: AntTreeNodeMouseEvent) => void,\n // /** dragover 触发时调用 */\n // onDragOver: (options: AntTreeNodeMouseEvent) => void,\n // /** dragleave 触发时调用 */\n // onDragLeave: (options: AntTreeNodeMouseEvent) => void,\n // /** drop 触发时调用 */\n // onDrop: (options: AntTreeNodeMouseEvent) => void,\n showIcon: PropTypes.bool,\n icon: PropTypes.func,\n switcherIcon: PropTypes.any,\n prefixCls: PropTypes.string,\n filterTreeNode: PropTypes.func,\n openAnimation: PropTypes.any,\n treeNodes: PropTypes.array,\n treeData: PropTypes.array,\n /**\n * @default{title,key,children}\n * 替换treeNode中 title,key,children字段为treeData中对应的字段\n */\n replaceFields: PropTypes.object,\n blockNode: PropTypes.bool\n };\n}\n\nexport { TreeProps };\n\nexport default {\n name: 'ATree',\n model: {\n prop: 'checkedKeys',\n event: 'check'\n },\n props: initDefaultProps(TreeProps(), {\n checkable: false,\n showIcon: false,\n openAnimation: {\n on: animation,\n props: { appear: null }\n },\n blockNode: false\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n created: function created() {\n warning(!('treeNodes' in getOptionProps(this)), '`treeNodes` is deprecated. please use treeData instead.');\n },\n\n TreeNode: TreeNode,\n methods: {\n renderSwitcherIcon: function renderSwitcherIcon(prefixCls, switcherIcon, _ref) {\n var isLeaf = _ref.isLeaf,\n expanded = _ref.expanded,\n loading = _ref.loading;\n var h = this.$createElement;\n var showLine = this.$props.showLine;\n\n if (loading) {\n return h(Icon, {\n attrs: { type: 'loading' },\n 'class': prefixCls + '-switcher-loading-icon' });\n }\n\n if (isLeaf) {\n return showLine ? h(Icon, {\n attrs: { type: 'file' },\n 'class': prefixCls + '-switcher-line-icon' }) : null;\n }\n var switcherCls = prefixCls + '-switcher-icon';\n if (switcherIcon) {\n return cloneElement(switcherIcon, {\n 'class': _defineProperty({}, switcherCls, true)\n });\n }\n return showLine ? h(Icon, {\n attrs: {\n type: expanded ? 'minus-square' : 'plus-square',\n\n theme: 'outlined'\n },\n 'class': prefixCls + '-switcher-line-icon' }) : h(Icon, {\n attrs: { type: 'caret-down', theme: 'filled' },\n 'class': switcherCls });\n },\n updateTreeData: function updateTreeData(treeData) {\n var _this = this;\n\n var $slots = this.$slots,\n $scopedSlots = this.$scopedSlots;\n\n var defaultFields = { children: 'children', title: 'title', key: 'key' };\n var replaceFields = _extends({}, defaultFields, this.$props.replaceFields);\n return treeData.map(function (item) {\n var key = item[replaceFields.key];\n var children = item[replaceFields.children];\n\n var _item$on = item.on,\n on = _item$on === undefined ? {} : _item$on,\n _item$slots = item.slots,\n slots = _item$slots === undefined ? {} : _item$slots,\n _item$scopedSlots = item.scopedSlots,\n scopedSlots = _item$scopedSlots === undefined ? {} : _item$scopedSlots,\n cls = item['class'],\n style = item.style,\n restProps = _objectWithoutProperties(item, ['on', 'slots', 'scopedSlots', 'class', 'style']);\n\n var treeNodeProps = _extends({}, restProps, {\n icon: $scopedSlots[scopedSlots.icon] || $slots[slots.icon] || restProps.icon,\n switcherIcon: $scopedSlots[scopedSlots.switcherIcon] || $slots[slots.switcherIcon] || restProps.switcherIcon,\n title: $scopedSlots[scopedSlots.title] || $slots[slots.title] || $scopedSlots.title || restProps[replaceFields.title],\n dataRef: item,\n on: on,\n key: key,\n 'class': cls,\n style: style\n });\n if (children) {\n return _extends({}, treeNodeProps, { children: _this.updateTreeData(children) });\n }\n return treeNodeProps;\n });\n }\n },\n render: function render() {\n var _this2 = this,\n _class2;\n\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var $slots = this.$slots,\n $scopedSlots = this.$scopedSlots;\n var customizePrefixCls = props.prefixCls,\n showIcon = props.showIcon,\n treeNodes = props.treeNodes,\n blockNode = props.blockNode;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('tree', customizePrefixCls);\n var _switcherIcon = getComponentFromProp(this, 'switcherIcon');\n var checkable = props.checkable;\n var treeData = props.treeData || treeNodes;\n if (treeData) {\n treeData = this.updateTreeData(treeData);\n }\n var vcTreeProps = {\n props: _extends({}, props, {\n prefixCls: prefixCls,\n checkable: checkable ? h('span', { 'class': prefixCls + '-checkbox-inner' }) : checkable,\n children: filterEmpty($scopedSlots['default'] ? $scopedSlots['default']() : $slots['default']),\n __propsSymbol__: Symbol(),\n switcherIcon: function switcherIcon(nodeProps) {\n return _this2.renderSwitcherIcon(prefixCls, _switcherIcon, nodeProps);\n }\n }),\n on: getListeners(this),\n ref: 'tree',\n 'class': (_class2 = {}, _defineProperty(_class2, prefixCls + '-icon-hide', !showIcon), _defineProperty(_class2, prefixCls + '-block-node', blockNode), _class2)\n };\n if (treeData) {\n vcTreeProps.props.treeData = treeData;\n }\n return h(VcTree, vcTreeProps);\n }\n};","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport { getNodeChildren, convertTreeToEntities } from '../vc-tree/src/util';\nimport { getSlots } from '../_util/props-util';\n\nvar Record = {\n None: 'node',\n Start: 'start',\n End: 'end'\n};\n\n// TODO: Move this logic into `rc-tree`\nfunction traverseNodesKey(rootChildren, callback) {\n var nodeList = getNodeChildren(rootChildren) || [];\n\n function processNode(node) {\n var key = node.key;\n\n var children = getSlots(node)['default'];\n if (callback(key, node) !== false) {\n traverseNodesKey(typeof children === 'function' ? children() : children, callback);\n }\n }\n\n nodeList.forEach(processNode);\n}\n\nexport function getFullKeyList(children) {\n var _convertTreeToEntitie = convertTreeToEntities(children),\n keyEntities = _convertTreeToEntitie.keyEntities;\n\n return [].concat(_toConsumableArray(keyEntities.keys()));\n}\n\n/** 计算选中范围,只考虑expanded情况以优化性能 */\nexport function calcRangeKeys(rootChildren, expandedKeys, startKey, endKey) {\n var keys = [];\n var record = Record.None;\n\n if (startKey && startKey === endKey) {\n return [startKey];\n }\n if (!startKey || !endKey) {\n return [];\n }\n\n function matchKey(key) {\n return key === startKey || key === endKey;\n }\n\n traverseNodesKey(rootChildren, function (key) {\n if (record === Record.End) {\n return false;\n }\n\n if (matchKey(key)) {\n // Match test\n keys.push(key);\n\n if (record === Record.None) {\n record = Record.Start;\n } else if (record === Record.Start) {\n record = Record.End;\n return false;\n }\n } else if (record === Record.Start) {\n // Append selection\n keys.push(key);\n }\n\n if (expandedKeys.indexOf(key) === -1) {\n return false;\n }\n\n return true;\n });\n\n return keys;\n}\n\nexport function convertDirectoryKeysToNodes(rootChildren, keys) {\n var restKeys = [].concat(_toConsumableArray(keys));\n var nodes = [];\n traverseNodesKey(rootChildren, function (key, node) {\n var index = restKeys.indexOf(key);\n if (index !== -1) {\n nodes.push(node);\n restKeys.splice(index, 1);\n }\n\n return !!restKeys.length;\n });\n return nodes;\n}\n\nexport function getFullKeyListByTreeData(treeData) {\n var keys = [];\n\n (treeData || []).forEach(function (item) {\n keys.push(item.key);\n if (item.children) {\n keys = [].concat(_toConsumableArray(keys), _toConsumableArray(getFullKeyListByTreeData(item.children)));\n }\n });\n return keys;\n}","import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport omit from 'omit.js';\nimport debounce from 'lodash/debounce';\nimport PropTypes from '../_util/vue-types';\nimport warning from '../_util/warning';\nimport { conductExpandParent, convertTreeToEntities } from '../vc-tree/src/util';\nimport Tree, { TreeProps } from './Tree';\nimport { calcRangeKeys, getFullKeyList, convertDirectoryKeysToNodes, getFullKeyListByTreeData } from './util';\nimport Icon from '../icon';\nimport BaseMixin from '../_util/BaseMixin';\nimport { initDefaultProps, getOptionProps, getListeners, getComponentFromProp } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\n// export type ExpandAction = false | 'click' | 'dblclick'; export interface\n// DirectoryTreeProps extends TreeProps { expandAction?: ExpandAction; }\n// export interface DirectoryTreeState { expandedKeys?: string[];\n// selectedKeys?: string[]; }\n\nfunction getIcon(props, h) {\n var isLeaf = props.isLeaf,\n expanded = props.expanded;\n\n if (isLeaf) {\n return h(Icon, {\n attrs: { type: 'file' }\n });\n }\n return h(Icon, {\n attrs: { type: expanded ? 'folder-open' : 'folder' }\n });\n}\n\nexport default {\n name: 'ADirectoryTree',\n mixins: [BaseMixin],\n model: {\n prop: 'checkedKeys',\n event: 'check'\n },\n props: initDefaultProps(_extends({}, TreeProps(), {\n expandAction: PropTypes.oneOf([false, 'click', 'doubleclick', 'dblclick'])\n }), {\n showIcon: true,\n expandAction: 'click'\n }),\n\n // state: DirectoryTreeState; onDebounceExpand: (event, node: AntTreeNode) =>\n // void; // Shift click usage lastSelectedKey?: string; cachedSelectedKeys?:\n // string[];\n inject: {\n configProvider: {\n 'default': function _default() {\n return ConfigConsumerProps;\n }\n }\n },\n data: function data() {\n var props = getOptionProps(this);\n var defaultExpandAll = props.defaultExpandAll,\n defaultExpandParent = props.defaultExpandParent,\n expandedKeys = props.expandedKeys,\n defaultExpandedKeys = props.defaultExpandedKeys;\n\n var _convertTreeToEntitie = convertTreeToEntities(this.$slots['default']),\n keyEntities = _convertTreeToEntitie.keyEntities;\n\n var state = {};\n // Selected keys\n state._selectedKeys = props.selectedKeys || props.defaultSelectedKeys || [];\n\n // Expanded keys\n if (defaultExpandAll) {\n if (props.treeData) {\n state._expandedKeys = getFullKeyListByTreeData(props.treeData);\n } else {\n state._expandedKeys = getFullKeyList(this.$slots['default']);\n }\n } else if (defaultExpandParent) {\n state._expandedKeys = conductExpandParent(expandedKeys || defaultExpandedKeys, keyEntities);\n } else {\n state._expandedKeys = expandedKeys || defaultExpandedKeys;\n }\n\n this.onDebounceExpand = debounce(this.expandFolderNode, 200, { leading: true });\n return _extends({\n _selectedKeys: [],\n _expandedKeys: []\n }, state);\n },\n\n watch: {\n expandedKeys: function expandedKeys(val) {\n this.setState({ _expandedKeys: val });\n },\n selectedKeys: function selectedKeys(val) {\n this.setState({ _selectedKeys: val });\n }\n },\n methods: {\n onExpand: function onExpand(expandedKeys, info) {\n this.setUncontrolledState({ _expandedKeys: expandedKeys });\n\n this.$emit('expand', expandedKeys, info);\n\n return undefined;\n },\n onClick: function onClick(event, node) {\n var expandAction = this.$props.expandAction;\n\n // Expand the tree\n\n if (expandAction === 'click') {\n this.onDebounceExpand(event, node);\n }\n this.$emit('click', event, node);\n },\n onDoubleClick: function onDoubleClick(event, node) {\n var expandAction = this.$props.expandAction;\n\n // Expand the tree\n\n if (expandAction === 'dblclick' || expandAction === 'doubleclick') {\n this.onDebounceExpand(event, node);\n }\n\n this.$emit('doubleclick', event, node);\n this.$emit('dblclick', event, node);\n },\n onSelect: function onSelect(keys, event) {\n var multiple = this.$props.multiple;\n\n var children = this.$slots['default'] || [];\n var _$data$_expandedKeys = this.$data._expandedKeys,\n expandedKeys = _$data$_expandedKeys === undefined ? [] : _$data$_expandedKeys;\n var node = event.node,\n nativeEvent = event.nativeEvent;\n var _node$eventKey = node.eventKey,\n eventKey = _node$eventKey === undefined ? '' : _node$eventKey;\n\n\n var newState = {};\n\n // We need wrap this event since some value is not same\n var newEvent = _extends({}, event, {\n selected: true // Directory selected always true\n });\n\n // Windows / Mac single pick\n var ctrlPick = nativeEvent.ctrlKey || nativeEvent.metaKey;\n var shiftPick = nativeEvent.shiftKey;\n\n // Generate new selected keys\n var newSelectedKeys = void 0;\n if (multiple && ctrlPick) {\n // Control click\n newSelectedKeys = keys;\n this.lastSelectedKey = eventKey;\n this.cachedSelectedKeys = newSelectedKeys;\n newEvent.selectedNodes = convertDirectoryKeysToNodes(children, newSelectedKeys);\n } else if (multiple && shiftPick) {\n // Shift click\n newSelectedKeys = Array.from(new Set([].concat(_toConsumableArray(this.cachedSelectedKeys || []), _toConsumableArray(calcRangeKeys(children, expandedKeys, eventKey, this.lastSelectedKey)))));\n newEvent.selectedNodes = convertDirectoryKeysToNodes(children, newSelectedKeys);\n } else {\n // Single click\n newSelectedKeys = [eventKey];\n this.lastSelectedKey = eventKey;\n this.cachedSelectedKeys = newSelectedKeys;\n newEvent.selectedNodes = [event.node];\n }\n newState._selectedKeys = newSelectedKeys;\n\n this.$emit('update:selectedKeys', newSelectedKeys);\n this.$emit('select', newSelectedKeys, newEvent);\n\n this.setUncontrolledState(newState);\n },\n expandFolderNode: function expandFolderNode(event, node) {\n var isLeaf = node.isLeaf;\n\n\n if (isLeaf || event.shiftKey || event.metaKey || event.ctrlKey) {\n return;\n }\n\n if (this.$refs.tree.$refs.tree) {\n // Get internal vc-tree\n var internalTree = this.$refs.tree.$refs.tree;\n\n // Call internal rc-tree expand function\n // https://github.com/ant-design/ant-design/issues/12567\n internalTree.onNodeExpand(event, node);\n }\n },\n setUncontrolledState: function setUncontrolledState(state) {\n var newState = omit(state, Object.keys(getOptionProps(this)).map(function (p) {\n return '_' + p;\n }));\n if (Object.keys(newState).length) {\n this.setState(newState);\n }\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n props = _objectWithoutProperties(_getOptionProps, ['prefixCls']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('tree', customizePrefixCls);\n var _$data = this.$data,\n expandedKeys = _$data._expandedKeys,\n selectedKeys = _$data._selectedKeys;\n\n var listeners = getListeners(this);\n warning(!listeners.doubleclick, '`doubleclick` is deprecated. please use `dblclick` instead.');\n var treeProps = {\n props: _extends({\n icon: getIcon\n }, props, {\n prefixCls: prefixCls,\n expandedKeys: expandedKeys,\n selectedKeys: selectedKeys,\n switcherIcon: getComponentFromProp(this, 'switcherIcon')\n }),\n ref: 'tree',\n 'class': prefixCls + '-directory',\n on: _extends({}, omit(listeners, ['update:selectedKeys']), {\n select: this.onSelect,\n click: this.onClick,\n dblclick: this.onDoubleClick,\n expand: this.onExpand\n })\n };\n return h(\n Tree,\n treeProps,\n [this.$slots['default']]\n );\n }\n};","import Tree from './Tree';\nimport DirectoryTree from './DirectoryTree';\nimport Base from '../base';\n\nTree.TreeNode.name = 'ATreeNode';\nTree.DirectoryTree = DirectoryTree;\n/* istanbul ignore next */\nTree.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Tree.name, Tree);\n Vue.component(Tree.TreeNode.name, Tree.TreeNode);\n Vue.component(DirectoryTree.name, DirectoryTree);\n};\n\nexport default Tree;","export function hasClass(node, className) {\n if (node.classList) {\n return node.classList.contains(className);\n }\n var originClass = node.className;\n return (' ' + originClass + ' ').indexOf(' ' + className + ' ') > -1;\n}\n\nexport function addClass(node, className) {\n if (node.classList) {\n node.classList.add(className);\n } else {\n if (!hasClass(node, className)) {\n node.className = node.className + ' ' + className;\n }\n }\n}\n\nexport function removeClass(node, className) {\n if (node.classList) {\n node.classList.remove(className);\n } else {\n if (hasClass(node, className)) {\n var originClass = node.className;\n node.className = (' ' + originClass + ' ').replace(' ' + className + ' ', ' ');\n }\n }\n}","export var SHOW_ALL = 'SHOW_ALL';\nexport var SHOW_PARENT = 'SHOW_PARENT';\nexport var SHOW_CHILD = 'SHOW_CHILD';","import _typeof from 'babel-runtime/helpers/typeof';\nimport _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport warning from 'warning';\nimport omit from 'omit.js';\nimport { convertDataToTree as vcConvertDataToTree, convertTreeToEntities as vcConvertTreeToEntities, conductCheck as rcConductCheck } from '../../vc-tree/src/util';\nimport { hasClass } from '../../vc-util/Dom/class';\nimport { SHOW_CHILD, SHOW_PARENT } from './strategies';\nimport { getSlots, getPropsData, isEmptyElement } from '../../_util/props-util';\n\nvar warnDeprecatedLabel = false;\n\n// =================== DOM =====================\nexport function findPopupContainer(node, prefixClass) {\n var current = node;\n while (current) {\n if (hasClass(current, prefixClass)) {\n return current;\n }\n current = current.parentNode;\n }\n\n return null;\n}\n\n// =================== MISC ====================\nexport function toTitle(title) {\n if (typeof title === 'string') {\n return title;\n }\n return null;\n}\n\nexport function toArray(data) {\n if (data === undefined || data === null) return [];\n\n return Array.isArray(data) ? data : [data];\n}\n\nexport function createRef() {\n var func = function setRef(node) {\n func.current = node;\n };\n return func;\n}\n\n// =============== Legacy ===============\nexport var UNSELECTABLE_STYLE = {\n userSelect: 'none',\n WebkitUserSelect: 'none'\n};\n\nexport var UNSELECTABLE_ATTRIBUTE = {\n unselectable: 'unselectable'\n};\n\n/**\n * Convert position list to hierarchy structure.\n * This is little hack since use '-' to split the position.\n */\nexport function flatToHierarchy(positionList) {\n if (!positionList.length) {\n return [];\n }\n\n var entrances = {};\n\n // Prepare the position map\n var posMap = {};\n var parsedList = positionList.slice().map(function (entity) {\n var clone = _extends({}, entity, {\n fields: entity.pos.split('-')\n });\n delete clone.children;\n return clone;\n });\n\n parsedList.forEach(function (entity) {\n posMap[entity.pos] = entity;\n });\n\n parsedList.sort(function (a, b) {\n return a.fields.length - b.fields.length;\n });\n\n // Create the hierarchy\n parsedList.forEach(function (entity) {\n var parentPos = entity.fields.slice(0, -1).join('-');\n var parentEntity = posMap[parentPos];\n\n if (!parentEntity) {\n entrances[entity.pos] = entity;\n } else {\n parentEntity.children = parentEntity.children || [];\n parentEntity.children.push(entity);\n }\n\n // Some time position list provide `key`, we don't need it\n delete entity.key;\n delete entity.fields;\n });\n\n return Object.keys(entrances).map(function (key) {\n return entrances[key];\n });\n}\n\n// =============== Accessibility ===============\nvar ariaId = 0;\n\nexport function resetAriaId() {\n ariaId = 0;\n}\n\nexport function generateAriaId(prefix) {\n ariaId += 1;\n return prefix + '_' + ariaId;\n}\n\nexport function isLabelInValue(props) {\n var treeCheckable = props.treeCheckable,\n treeCheckStrictly = props.treeCheckStrictly,\n labelInValue = props.labelInValue;\n\n if (treeCheckable && treeCheckStrictly) {\n return true;\n }\n return labelInValue || false;\n}\n\n// =================== Tree ====================\nexport function parseSimpleTreeData(treeData, _ref) {\n var id = _ref.id,\n pId = _ref.pId,\n rootPId = _ref.rootPId;\n\n var keyNodes = {};\n var rootNodeList = [];\n\n // Fill in the map\n var nodeList = treeData.map(function (node) {\n var clone = _extends({}, node);\n var key = clone[id];\n keyNodes[key] = clone;\n clone.key = clone.key || key;\n return clone;\n });\n\n // Connect tree\n nodeList.forEach(function (node) {\n var parentKey = node[pId];\n var parent = keyNodes[parentKey];\n\n // Fill parent\n if (parent) {\n parent.children = parent.children || [];\n parent.children.push(node);\n }\n\n // Fill root tree node\n if (parentKey === rootPId || !parent && rootPId === null) {\n rootNodeList.push(node);\n }\n });\n\n return rootNodeList;\n}\n\n/**\n * Detect if position has relation.\n * e.g. 1-2 related with 1-2-3\n * e.g. 1-3-2 related with 1\n * e.g. 1-2 not related with 1-21\n */\nexport function isPosRelated(pos1, pos2) {\n var fields1 = pos1.split('-');\n var fields2 = pos2.split('-');\n\n var minLen = Math.min(fields1.length, fields2.length);\n for (var i = 0; i < minLen; i += 1) {\n if (fields1[i] !== fields2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * This function is only used on treeNode check (none treeCheckStrictly but has searchInput).\n * We convert entity to { node, pos, children } format.\n * This is legacy bug but we still need to do with it.\n * @param entity\n */\nexport function cleanEntity(_ref2) {\n var node = _ref2.node,\n pos = _ref2.pos,\n children = _ref2.children;\n\n var instance = {\n node: node,\n pos: pos\n };\n\n if (children) {\n instance.children = children.map(cleanEntity);\n }\n\n return instance;\n}\n\n/**\n * Get a filtered TreeNode list by provided treeNodes.\n * [Legacy] Since `Tree` use `key` as map but `key` will changed by React,\n * we have to convert `treeNodes > data > treeNodes` to keep the key.\n * Such performance hungry!\n */\nexport function getFilterTree(h, treeNodes, searchValue, filterFunc, valueEntities, Component) {\n if (!searchValue) {\n return null;\n }\n\n function mapFilteredNodeToData(node) {\n if (!node || isEmptyElement(node)) return null;\n\n var match = false;\n if (filterFunc(searchValue, node)) {\n match = true;\n }\n var children = getSlots(node)['default'];\n children = ((typeof children === 'function' ? children() : children) || []).map(mapFilteredNodeToData).filter(function (n) {\n return n;\n });\n if (children.length || match) {\n return h(\n Component,\n _mergeJSXProps([node.data, { key: valueEntities[getPropsData(node).value].key }]),\n [children]\n );\n }\n\n return null;\n }\n return treeNodes.map(mapFilteredNodeToData).filter(function (node) {\n return node;\n });\n}\n\n// =================== Value ===================\n/**\n * Convert value to array format to make logic simplify.\n */\nexport function formatInternalValue(value, props) {\n var valueList = toArray(value);\n\n // Parse label in value\n if (isLabelInValue(props)) {\n return valueList.map(function (val) {\n if ((typeof val === 'undefined' ? 'undefined' : _typeof(val)) !== 'object' || !val) {\n return {\n value: '',\n label: ''\n };\n }\n\n return val;\n });\n }\n\n return valueList.map(function (val) {\n return {\n value: val\n };\n });\n}\n\nexport function getLabel(wrappedValue, entity, treeNodeLabelProp) {\n if (wrappedValue.label) {\n return wrappedValue.label;\n }\n\n if (entity) {\n var props = getPropsData(entity.node);\n if (Object.keys(props).length) {\n return props[treeNodeLabelProp];\n }\n }\n\n // Since value without entity will be in missValueList.\n // This code will never reached, but we still need this in case.\n return wrappedValue.value;\n}\n\n/**\n * Convert internal state `valueList` to user needed value list.\n * This will return an array list. You need check if is not multiple when return.\n *\n * `allCheckedNodes` is used for `treeCheckStrictly`\n */\nexport function formatSelectorValue(valueList, props, valueEntities) {\n var treeNodeLabelProp = props.treeNodeLabelProp,\n treeCheckable = props.treeCheckable,\n treeCheckStrictly = props.treeCheckStrictly,\n showCheckedStrategy = props.showCheckedStrategy;\n\n // Will hide some value if `showCheckedStrategy` is set\n\n if (treeCheckable && !treeCheckStrictly) {\n var values = {};\n valueList.forEach(function (wrappedValue) {\n values[wrappedValue.value] = wrappedValue;\n });\n var hierarchyList = flatToHierarchy(valueList.map(function (_ref3) {\n var value = _ref3.value;\n return valueEntities[value];\n }));\n\n if (showCheckedStrategy === SHOW_PARENT) {\n // Only get the parent checked value\n return hierarchyList.map(function (_ref4) {\n var node = _ref4.node;\n\n var value = getPropsData(node).value;\n return {\n label: getLabel(values[value], valueEntities[value], treeNodeLabelProp),\n value: value\n };\n });\n }\n if (showCheckedStrategy === SHOW_CHILD) {\n // Only get the children checked value\n var targetValueList = [];\n\n // Find the leaf children\n var traverse = function traverse(_ref5) {\n var node = _ref5.node,\n children = _ref5.children;\n\n var value = getPropsData(node).value;\n if (!children || children.length === 0) {\n targetValueList.push({\n label: getLabel(values[value], valueEntities[value], treeNodeLabelProp),\n value: value\n });\n return;\n }\n\n children.forEach(function (entity) {\n traverse(entity);\n });\n };\n\n hierarchyList.forEach(function (entity) {\n traverse(entity);\n });\n\n return targetValueList;\n }\n }\n\n return valueList.map(function (wrappedValue) {\n return {\n label: getLabel(wrappedValue, valueEntities[wrappedValue.value], treeNodeLabelProp),\n value: wrappedValue.value\n };\n });\n}\n\n/**\n * Use `rc-tree` convertDataToTree to convert treeData to TreeNodes.\n * This will change the label to title value\n */\nfunction processProps(props) {\n var title = props.title,\n label = props.label,\n value = props.value,\n cls = props['class'],\n style = props.style,\n _props$on = props.on,\n on = _props$on === undefined ? {} : _props$on;\n\n var key = props.key;\n if (!key && (key === undefined || key === null)) {\n key = value;\n }\n var p = {\n props: omit(props, ['on', 'key', 'class', 'className', 'style']),\n on: on,\n 'class': cls || props.className,\n style: style,\n key: key\n };\n // Warning user not to use deprecated label prop.\n if (label && !title) {\n if (!warnDeprecatedLabel) {\n warning(false, \"'label' in treeData is deprecated. Please use 'title' instead.\");\n warnDeprecatedLabel = true;\n }\n\n p.props.title = label;\n }\n\n return p;\n}\n\nexport function convertDataToTree(h, treeData) {\n return vcConvertDataToTree(h, treeData, { processProps: processProps });\n}\n\n/**\n * Use `rc-tree` convertTreeToEntities for entities calculation.\n * We have additional entities of `valueEntities`\n */\nfunction initWrapper(wrapper) {\n return _extends({}, wrapper, {\n valueEntities: {}\n });\n}\n\nfunction processEntity(entity, wrapper) {\n var value = getPropsData(entity.node).value;\n entity.value = value;\n\n // This should be empty, or will get error message.\n var currentEntity = wrapper.valueEntities[value];\n if (currentEntity) {\n warning(false, 'Conflict! value of node \\'' + entity.key + '\\' (' + value + ') has already used by node \\'' + currentEntity.key + '\\'.');\n }\n wrapper.valueEntities[value] = entity;\n}\n\nexport function convertTreeToEntities(treeNodes) {\n return vcConvertTreeToEntities(treeNodes, {\n initWrapper: initWrapper,\n processEntity: processEntity\n });\n}\n\n/**\n * https://github.com/ant-design/ant-design/issues/13328\n * We need calculate the half check key when searchValue is set.\n */\n// TODO: This logic may better move to rc-tree\nexport function getHalfCheckedKeys(valueList, valueEntities) {\n var values = {};\n\n // Fill checked keys\n valueList.forEach(function (_ref6) {\n var value = _ref6.value;\n\n values[value] = false;\n });\n\n // Fill half checked keys\n valueList.forEach(function (_ref7) {\n var value = _ref7.value;\n\n var current = valueEntities[value];\n\n while (current && current.parent) {\n var parentValue = current.parent.value;\n if (parentValue in values) break;\n values[parentValue] = true;\n\n current = current.parent;\n }\n });\n\n // Get half keys\n return Object.keys(values).filter(function (value) {\n return values[value];\n }).map(function (value) {\n return valueEntities[value].key;\n });\n}\n\nexport var conductCheck = rcConductCheck;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../_util/vue-types';\n\nimport Trigger from '../../vc-trigger';\nimport { createRef } from './util';\nimport classNames from 'classnames';\n\nvar BUILT_IN_PLACEMENTS = {\n bottomLeft: {\n points: ['tl', 'bl'],\n offset: [0, 4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n },\n ignoreShake: true\n },\n topLeft: {\n points: ['bl', 'tl'],\n offset: [0, -4],\n overflow: {\n adjustX: 0,\n adjustY: 1\n },\n ignoreShake: true\n }\n};\n\nvar SelectTrigger = {\n name: 'SelectTrigger',\n props: {\n // Pass by outside user props\n disabled: PropTypes.bool,\n showSearch: PropTypes.bool,\n prefixCls: PropTypes.string,\n dropdownPopupAlign: PropTypes.object,\n dropdownClassName: PropTypes.string,\n dropdownStyle: PropTypes.object,\n transitionName: PropTypes.string,\n animation: PropTypes.string,\n getPopupContainer: PropTypes.func,\n\n dropdownMatchSelectWidth: PropTypes.bool,\n\n // Pass by Select\n isMultiple: PropTypes.bool,\n dropdownPrefixCls: PropTypes.string,\n dropdownVisibleChange: PropTypes.func,\n popupElement: PropTypes.node,\n open: PropTypes.bool\n },\n created: function created() {\n this.triggerRef = createRef();\n },\n\n methods: {\n getDropdownTransitionName: function getDropdownTransitionName() {\n var _$props = this.$props,\n transitionName = _$props.transitionName,\n animation = _$props.animation,\n dropdownPrefixCls = _$props.dropdownPrefixCls;\n\n if (!transitionName && animation) {\n return dropdownPrefixCls + '-' + animation;\n }\n return transitionName;\n },\n forcePopupAlign: function forcePopupAlign() {\n var $trigger = this.triggerRef.current;\n if ($trigger) {\n $trigger.forcePopupAlign();\n }\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var _$props2 = this.$props,\n disabled = _$props2.disabled,\n isMultiple = _$props2.isMultiple,\n dropdownPopupAlign = _$props2.dropdownPopupAlign,\n dropdownMatchSelectWidth = _$props2.dropdownMatchSelectWidth,\n dropdownClassName = _$props2.dropdownClassName,\n dropdownStyle = _$props2.dropdownStyle,\n dropdownVisibleChange = _$props2.dropdownVisibleChange,\n getPopupContainer = _$props2.getPopupContainer,\n dropdownPrefixCls = _$props2.dropdownPrefixCls,\n popupElement = _$props2.popupElement,\n open = _$props2.open;\n\n // TODO: [Legacy] Use new action when trigger fixed: https://github.com/react-component/trigger/pull/86\n\n // When false do nothing with the width\n // ref: https://github.com/ant-design/ant-design/issues/10927\n\n var stretch = void 0;\n if (dropdownMatchSelectWidth !== false) {\n stretch = dropdownMatchSelectWidth ? 'width' : 'minWidth';\n }\n return h(\n Trigger,\n _mergeJSXProps([{\n directives: [{\n name: 'ant-ref',\n value: this.triggerRef\n }]\n }, {\n attrs: {\n action: disabled ? [] : ['click'],\n popupPlacement: 'bottomLeft',\n builtinPlacements: BUILT_IN_PLACEMENTS,\n popupAlign: dropdownPopupAlign,\n prefixCls: dropdownPrefixCls,\n popupTransitionName: this.getDropdownTransitionName(),\n\n popup: popupElement,\n popupVisible: open,\n getPopupContainer: getPopupContainer,\n stretch: stretch,\n popupClassName: classNames(dropdownClassName, (_classNames = {}, _defineProperty(_classNames, dropdownPrefixCls + '--multiple', isMultiple), _defineProperty(_classNames, dropdownPrefixCls + '--single', !isMultiple), _classNames)),\n popupStyle: dropdownStyle\n },\n on: {\n 'popupVisibleChange': dropdownVisibleChange\n }\n }]),\n [this.$slots['default']]\n );\n }\n};\n\nexport default SelectTrigger;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\n/**\n * Input Box is in different position for different mode.\n * This not the same design as `Select` cause it's followed by antd 0.x `Select`.\n * We will not follow the new design immediately since antd 3.x is already released.\n *\n * So this file named as Selector to avoid confuse.\n */\nimport { createRef } from '../util';\nimport PropTypes from '../../../_util/vue-types';\nimport classNames from 'classnames';\nimport { initDefaultProps, getComponentFromProp, getListeners } from '../../../_util/props-util';\nimport BaseMixin from '../../../_util/BaseMixin';\nexport var selectorPropTypes = function selectorPropTypes() {\n return {\n prefixCls: PropTypes.string,\n className: PropTypes.string,\n open: PropTypes.bool,\n selectorValueList: PropTypes.array,\n allowClear: PropTypes.bool,\n showArrow: PropTypes.bool,\n // onClick: PropTypes.func,\n // onBlur: PropTypes.func,\n // onFocus: PropTypes.func,\n removeSelected: PropTypes.func,\n choiceTransitionName: PropTypes.string,\n // Pass by component\n ariaId: PropTypes.string,\n inputIcon: PropTypes.any,\n clearIcon: PropTypes.any,\n removeIcon: PropTypes.any,\n placeholder: PropTypes.any,\n disabled: PropTypes.bool,\n focused: PropTypes.bool\n };\n};\n\nfunction noop() {}\nexport default function (modeName) {\n var BaseSelector = {\n name: 'BaseSelector',\n mixins: [BaseMixin],\n props: initDefaultProps(_extends({}, selectorPropTypes(), {\n\n // Pass by HOC\n renderSelection: PropTypes.func.isRequired,\n renderPlaceholder: PropTypes.func,\n tabIndex: PropTypes.number\n }), {\n tabIndex: 0\n }),\n inject: {\n vcTreeSelect: { 'default': function _default() {\n return {};\n } }\n },\n created: function created() {\n this.domRef = createRef();\n },\n\n methods: {\n onFocus: function onFocus(e) {\n var focused = this.$props.focused;\n var onSelectorFocus = this.vcTreeSelect.onSelectorFocus;\n\n\n if (!focused) {\n onSelectorFocus();\n }\n this.__emit('focus', e);\n },\n onBlur: function onBlur(e) {\n var onSelectorBlur = this.vcTreeSelect.onSelectorBlur;\n\n // TODO: Not trigger when is inner component get focused\n\n onSelectorBlur();\n this.__emit('blur', e);\n },\n focus: function focus() {\n this.domRef.current.focus();\n },\n blur: function blur() {\n this.domRef.current.blur();\n },\n renderClear: function renderClear() {\n var h = this.$createElement;\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n allowClear = _$props.allowClear,\n selectorValueList = _$props.selectorValueList;\n var onSelectorClear = this.vcTreeSelect.onSelectorClear;\n\n\n if (!allowClear || !selectorValueList.length || !selectorValueList[0].value) {\n return null;\n }\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n return h(\n 'span',\n { key: 'clear', 'class': prefixCls + '-selection__clear', on: {\n 'click': onSelectorClear\n }\n },\n [clearIcon]\n );\n },\n renderArrow: function renderArrow() {\n var h = this.$createElement;\n var _$props2 = this.$props,\n prefixCls = _$props2.prefixCls,\n showArrow = _$props2.showArrow;\n\n if (!showArrow) {\n return null;\n }\n var inputIcon = getComponentFromProp(this, 'inputIcon');\n return h(\n 'span',\n { key: 'arrow', 'class': prefixCls + '-arrow', style: { outline: 'none' } },\n [inputIcon]\n );\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var _$props3 = this.$props,\n prefixCls = _$props3.prefixCls,\n className = _$props3.className,\n style = _$props3.style,\n open = _$props3.open,\n focused = _$props3.focused,\n disabled = _$props3.disabled,\n allowClear = _$props3.allowClear,\n ariaId = _$props3.ariaId,\n renderSelection = _$props3.renderSelection,\n renderPlaceholder = _$props3.renderPlaceholder,\n tabIndex = _$props3.tabIndex;\n var onSelectorKeyDown = this.vcTreeSelect.onSelectorKeyDown;\n\n\n var myTabIndex = tabIndex;\n if (disabled) {\n myTabIndex = null;\n }\n\n return h(\n 'span',\n _mergeJSXProps([{\n style: style,\n on: {\n 'click': getListeners(this).click || noop\n },\n\n 'class': classNames(className, prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-open', open), _defineProperty(_classNames, prefixCls + '-focused', open || focused), _defineProperty(_classNames, prefixCls + '-disabled', disabled), _defineProperty(_classNames, prefixCls + '-enabled', !disabled), _defineProperty(_classNames, prefixCls + '-allow-clear', allowClear), _classNames))\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.domRef\n }]\n }, {\n attrs: {\n role: 'combobox',\n 'aria-expanded': open,\n 'aria-owns': open ? ariaId : undefined,\n 'aria-controls': open ? ariaId : undefined,\n 'aria-haspopup': 'listbox',\n 'aria-disabled': disabled,\n tabIndex: myTabIndex\n },\n on: {\n 'focus': this.onFocus,\n 'blur': this.onBlur,\n 'keydown': onSelectorKeyDown\n }\n }]),\n [h(\n 'span',\n {\n key: 'selection',\n 'class': classNames(prefixCls + '-selection', prefixCls + '-selection--' + modeName)\n },\n [renderSelection(), this.renderClear(), this.renderArrow(), renderPlaceholder && renderPlaceholder()]\n )]\n );\n }\n };\n\n return BaseSelector;\n}","import _extends from 'babel-runtime/helpers/extends';\nimport generateSelector, { selectorPropTypes } from '../Base/BaseSelector';\nimport { toTitle } from '../util';\nimport { getOptionProps, getListeners } from '../../../_util/props-util';\nimport { createRef } from '../util';\nvar Selector = generateSelector('single');\n\nvar SingleSelector = {\n name: 'SingleSelector',\n props: selectorPropTypes(),\n created: function created() {\n this.selectorRef = createRef();\n },\n\n methods: {\n focus: function focus() {\n this.selectorRef.current.focus();\n },\n blur: function blur() {\n this.selectorRef.current.blur();\n },\n renderSelection: function renderSelection() {\n var h = this.$createElement;\n var _$props = this.$props,\n selectorValueList = _$props.selectorValueList,\n placeholder = _$props.placeholder,\n prefixCls = _$props.prefixCls;\n\n\n var innerNode = void 0;\n\n if (selectorValueList.length) {\n var _selectorValueList$ = selectorValueList[0],\n label = _selectorValueList$.label,\n value = _selectorValueList$.value;\n\n innerNode = h(\n 'span',\n { key: 'value', attrs: { title: toTitle(label) },\n 'class': prefixCls + '-selection-selected-value' },\n [label || value]\n );\n } else {\n innerNode = h(\n 'span',\n { key: 'placeholder', 'class': prefixCls + '-selection__placeholder' },\n [placeholder]\n );\n }\n\n return h(\n 'span',\n { 'class': prefixCls + '-selection__rendered' },\n [innerNode]\n );\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var _$props$showArrow = this.$props.showArrow,\n showArrow = _$props$showArrow === undefined ? true : _$props$showArrow;\n\n var props = {\n props: _extends({}, getOptionProps(this), {\n showArrow: showArrow,\n renderSelection: this.renderSelection\n }),\n on: getListeners(this),\n directives: [{\n name: 'ant-ref',\n value: this.selectorRef\n }]\n };\n return h(Selector, props);\n }\n};\n\nexport default SingleSelector;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\n/**\n * Since search box is in different position with different mode.\n * - Single: in the popup box\n * - multiple: in the selector\n * Move the code as a SearchInput for easy management.\n */\n\nimport PropTypes from '../../_util/vue-types';\nimport { createRef } from './util';\n\nvar SearchInput = {\n name: 'SearchInput',\n props: {\n open: PropTypes.bool,\n searchValue: PropTypes.string,\n prefixCls: PropTypes.string,\n disabled: PropTypes.bool,\n renderPlaceholder: PropTypes.func,\n needAlign: PropTypes.bool,\n ariaId: PropTypes.string\n },\n inject: {\n vcTreeSelect: { 'default': function _default() {\n return {};\n } }\n },\n data: function data() {\n return {\n mirrorSearchValue: this.searchValue\n };\n },\n\n watch: {\n searchValue: function searchValue(val) {\n this.mirrorSearchValue = val;\n }\n },\n created: function created() {\n this.inputRef = createRef();\n this.mirrorInputRef = createRef();\n this.prevProps = _extends({}, this.$props);\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n var _$props = _this.$props,\n open = _$props.open,\n needAlign = _$props.needAlign;\n\n if (needAlign) {\n _this.alignInputWidth();\n }\n\n if (open) {\n _this.focus(true);\n }\n });\n },\n updated: function updated() {\n var _this2 = this;\n\n var _$props2 = this.$props,\n open = _$props2.open,\n searchValue = _$props2.searchValue,\n needAlign = _$props2.needAlign;\n var prevProps = this.prevProps;\n\n this.$nextTick(function () {\n if (open && prevProps.open !== open) {\n _this2.focus();\n }\n if (needAlign && searchValue !== prevProps.searchValue) {\n _this2.alignInputWidth();\n }\n _this2.prevProps = _extends({}, _this2.$props);\n });\n },\n\n methods: {\n /**\n * `scrollWidth` is not correct in IE, do the workaround.\n * ref: https://github.com/react-component/tree-select/issues/65\n * clientWidth 0 when mounted in vue. why?\n */\n alignInputWidth: function alignInputWidth() {\n this.inputRef.current.style.width = (this.mirrorInputRef.current.clientWidth || this.mirrorInputRef.current.offsetWidth) + 'px';\n },\n\n\n /**\n * Need additional timeout for focus cause parent dom is not ready when didMount trigger\n */\n focus: function focus(isDidMount) {\n var _this3 = this;\n\n if (this.inputRef.current) {\n if (isDidMount) {\n setTimeout(function () {\n _this3.inputRef.current.focus();\n }, 0);\n } else {\n // set it into else, Avoid scrolling when focus\n this.inputRef.current.focus();\n }\n }\n },\n blur: function blur() {\n if (this.inputRef.current) {\n this.inputRef.current.blur();\n }\n },\n handleInputChange: function handleInputChange(e) {\n var _e$target = e.target,\n value = _e$target.value,\n composing = _e$target.composing;\n var _searchValue = this.searchValue,\n searchValue = _searchValue === undefined ? '' : _searchValue;\n\n if (e.isComposing || composing || searchValue === value) {\n this.mirrorSearchValue = value;\n return;\n }\n this.vcTreeSelect.onSearchInputChange(e);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var _$props3 = this.$props,\n searchValue = _$props3.searchValue,\n prefixCls = _$props3.prefixCls,\n disabled = _$props3.disabled,\n renderPlaceholder = _$props3.renderPlaceholder,\n open = _$props3.open,\n ariaId = _$props3.ariaId;\n var onSearchInputKeyDown = this.vcTreeSelect.onSearchInputKeyDown,\n handleInputChange = this.handleInputChange,\n mirrorSearchValue = this.mirrorSearchValue;\n\n return h(\n 'span',\n { 'class': prefixCls + '-search__field__wrap' },\n [h('input', _mergeJSXProps([{\n attrs: {\n type: 'text'\n }\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.inputRef\n }, {\n name: 'ant-input'\n }]\n }, {\n on: {\n 'input': handleInputChange,\n 'keydown': onSearchInputKeyDown\n },\n domProps: {\n 'value': searchValue\n },\n attrs: {\n disabled: disabled,\n\n 'aria-label': 'filter select',\n 'aria-autocomplete': 'list',\n 'aria-controls': open ? ariaId : undefined,\n 'aria-multiline': 'false'\n },\n 'class': prefixCls + '-search__field' }])), h(\n 'span',\n _mergeJSXProps([{\n directives: [{\n name: 'ant-ref',\n value: this.mirrorInputRef\n }]\n }, {\n 'class': prefixCls + '-search__field__mirror'\n }]),\n [mirrorSearchValue, '\\xA0']\n ), renderPlaceholder && !mirrorSearchValue ? renderPlaceholder() : null]\n );\n }\n};\n\nexport default SearchInput;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropTypes from '../../../../_util/vue-types';\nimport { toTitle, UNSELECTABLE_ATTRIBUTE, UNSELECTABLE_STYLE } from '../../util';\nimport { getComponentFromProp, getListeners } from '../../../../_util/props-util';\nimport BaseMixin from '../../../../_util/BaseMixin';\n\nvar Selection = {\n mixins: [BaseMixin],\n props: {\n prefixCls: PropTypes.string,\n maxTagTextLength: PropTypes.number,\n // onRemove: PropTypes.func,\n\n label: PropTypes.any,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n removeIcon: PropTypes.any\n },\n methods: {\n onRemove: function onRemove(event) {\n var value = this.$props.value;\n\n this.__emit('remove', event, value);\n event.stopPropagation();\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n maxTagTextLength = _$props.maxTagTextLength,\n label = _$props.label,\n value = _$props.value;\n\n var content = label || value;\n if (maxTagTextLength && typeof content === 'string' && content.length > maxTagTextLength) {\n content = content.slice(0, maxTagTextLength) + '...';\n }\n\n return h(\n 'li',\n _mergeJSXProps([{\n style: UNSELECTABLE_STYLE\n }, { attrs: UNSELECTABLE_ATTRIBUTE }, {\n attrs: {\n role: 'menuitem',\n\n title: toTitle(label)\n },\n 'class': prefixCls + '-selection__choice' }]),\n [getListeners(this).remove && h(\n 'span',\n { 'class': prefixCls + '-selection__choice__remove', on: {\n 'click': this.onRemove\n }\n },\n [getComponentFromProp(this, 'removeIcon')]\n ), h(\n 'span',\n { 'class': prefixCls + '-selection__choice__content' },\n [content]\n )]\n );\n }\n};\n\nexport default Selection;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../../../_util/vue-types';\nimport { createRef } from '../../util';\nimport generateSelector, { selectorPropTypes } from '../../Base/BaseSelector';\nimport SearchInput from '../../SearchInput';\nimport Selection from './Selection';\nimport { getComponentFromProp, getListeners } from '../../../../_util/props-util';\nimport getTransitionProps from '../../../../_util/getTransitionProps';\nimport BaseMixin from '../../../../_util/BaseMixin';\nvar TREE_SELECT_EMPTY_VALUE_KEY = 'RC_TREE_SELECT_EMPTY_VALUE_KEY';\n\nvar Selector = generateSelector('multiple');\n\n// export const multipleSelectorContextTypes = {\n// onMultipleSelectorRemove: PropTypes.func.isRequired,\n// }\n\nvar MultipleSelector = {\n mixins: [BaseMixin],\n props: _extends({}, selectorPropTypes(), SearchInput.props, {\n selectorValueList: PropTypes.array,\n disabled: PropTypes.bool,\n searchValue: PropTypes.string,\n labelInValue: PropTypes.bool,\n maxTagCount: PropTypes.number,\n maxTagPlaceholder: PropTypes.any\n\n // onChoiceAnimationLeave: PropTypes.func,\n }),\n inject: {\n vcTreeSelect: { 'default': function _default() {\n return {};\n } }\n },\n created: function created() {\n this.inputRef = createRef();\n },\n\n methods: {\n onPlaceholderClick: function onPlaceholderClick() {\n this.inputRef.current.focus();\n },\n focus: function focus() {\n this.inputRef.current.focus();\n },\n blur: function blur() {\n this.inputRef.current.blur();\n },\n _renderPlaceholder: function _renderPlaceholder() {\n var h = this.$createElement;\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n placeholder = _$props.placeholder,\n searchPlaceholder = _$props.searchPlaceholder,\n searchValue = _$props.searchValue,\n selectorValueList = _$props.selectorValueList;\n\n\n var currentPlaceholder = placeholder || searchPlaceholder;\n\n if (!currentPlaceholder) return null;\n\n var hidden = searchValue || selectorValueList.length;\n\n // [Legacy] Not remove the placeholder\n return h(\n 'span',\n {\n style: {\n display: hidden ? 'none' : 'block'\n },\n on: {\n 'click': this.onPlaceholderClick\n },\n\n 'class': prefixCls + '-search__field__placeholder'\n },\n [currentPlaceholder]\n );\n },\n onChoiceAnimationLeave: function onChoiceAnimationLeave() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n this.__emit.apply(this, ['choiceAnimationLeave'].concat(_toConsumableArray(args)));\n },\n renderSelection: function renderSelection() {\n var _this = this;\n\n var h = this.$createElement;\n var _$props2 = this.$props,\n selectorValueList = _$props2.selectorValueList,\n choiceTransitionName = _$props2.choiceTransitionName,\n prefixCls = _$props2.prefixCls,\n labelInValue = _$props2.labelInValue,\n maxTagCount = _$props2.maxTagCount;\n var onMultipleSelectorRemove = this.vcTreeSelect.onMultipleSelectorRemove,\n $slots = this.$slots;\n\n var listeners = getListeners(this);\n // Check if `maxTagCount` is set\n var myValueList = selectorValueList;\n if (maxTagCount >= 0) {\n myValueList = selectorValueList.slice(0, maxTagCount);\n }\n // Selector node list\n var selectedValueNodes = myValueList.map(function (_ref) {\n var label = _ref.label,\n value = _ref.value;\n return h(\n Selection,\n _mergeJSXProps([{\n props: _extends({}, _this.$props, {\n label: label,\n value: value\n }),\n on: _extends({}, listeners, { remove: onMultipleSelectorRemove })\n }, {\n key: value || TREE_SELECT_EMPTY_VALUE_KEY\n }]),\n [$slots['default']]\n );\n });\n\n // Rest node count\n if (maxTagCount >= 0 && maxTagCount < selectorValueList.length) {\n var content = '+ ' + (selectorValueList.length - maxTagCount) + ' ...';\n var maxTagPlaceholder = getComponentFromProp(this, 'maxTagPlaceholder', {}, false);\n if (typeof maxTagPlaceholder === 'string') {\n content = maxTagPlaceholder;\n } else if (typeof maxTagPlaceholder === 'function') {\n var restValueList = selectorValueList.slice(maxTagCount);\n content = maxTagPlaceholder(labelInValue ? restValueList : restValueList.map(function (_ref2) {\n var value = _ref2.value;\n return value;\n }));\n }\n\n var restNodeSelect = h(\n Selection,\n _mergeJSXProps([{\n props: _extends({}, this.$props, {\n label: content,\n value: null\n }),\n on: listeners\n }, {\n key: 'rc-tree-select-internal-max-tag-counter'\n }]),\n [$slots['default']]\n );\n\n selectedValueNodes.push(restNodeSelect);\n }\n\n selectedValueNodes.push(h(\n 'li',\n { 'class': prefixCls + '-search ' + prefixCls + '-search--inline', key: '__input' },\n [h(\n SearchInput,\n {\n props: _extends({}, this.$props, {\n needAlign: true\n }),\n on: listeners,\n directives: [{\n name: 'ant-ref',\n value: this.inputRef\n }]\n },\n [$slots['default']]\n )]\n ));\n var className = prefixCls + '-selection__rendered';\n if (choiceTransitionName) {\n var transitionProps = getTransitionProps(choiceTransitionName, {\n tag: 'ul',\n afterLeave: this.onChoiceAnimationLeave\n });\n return h(\n 'transition-group',\n _mergeJSXProps([{ 'class': className }, transitionProps]),\n [selectedValueNodes]\n );\n }\n return h(\n 'ul',\n { 'class': className, attrs: { role: 'menubar' }\n },\n [selectedValueNodes]\n );\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var $slots = this.$slots,\n $props = this.$props;\n\n var listeners = getListeners(this);\n var _$props$showArrow = $props.showArrow,\n showArrow = _$props$showArrow === undefined ? false : _$props$showArrow;\n\n return h(\n Selector,\n {\n props: _extends({}, this.$props, {\n showArrow: showArrow,\n tabIndex: -1,\n renderSelection: this.renderSelection,\n renderPlaceholder: this._renderPlaceholder\n }),\n on: listeners\n },\n [$slots['default']]\n );\n }\n};\n\nexport default MultipleSelector;","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\nimport warning from 'warning';\nimport PropTypes from '../../../_util/vue-types';\nimport { Tree } from '../../../vc-tree';\nimport BaseMixin from '../../../_util/BaseMixin';\nimport { createRef } from '../util';\n\n// export const popupContextTypes = {\n// onPopupKeyDown: PropTypes.func.isRequired,\n// onTreeNodeSelect: PropTypes.func.isRequired,\n// onTreeNodeCheck: PropTypes.func.isRequired,\n// }\nfunction getDerivedState(nextProps, prevState) {\n var _ref = prevState || {},\n _ref$_prevProps = _ref._prevProps,\n prevProps = _ref$_prevProps === undefined ? {} : _ref$_prevProps,\n loadedKeys = _ref._loadedKeys,\n expandedKeyList = _ref._expandedKeyList,\n cachedExpandedKeyList = _ref._cachedExpandedKeyList;\n\n var valueList = nextProps.valueList,\n valueEntities = nextProps.valueEntities,\n keyEntities = nextProps.keyEntities,\n treeExpandedKeys = nextProps.treeExpandedKeys,\n filteredTreeNodes = nextProps.filteredTreeNodes,\n upperSearchValue = nextProps.upperSearchValue;\n\n\n var newState = {\n _prevProps: _extends({}, nextProps)\n };\n\n // Check value update\n if (valueList !== prevProps.valueList) {\n newState._keyList = valueList.map(function (_ref2) {\n var value = _ref2.value;\n return valueEntities[value];\n }).filter(function (entity) {\n return entity;\n }).map(function (_ref3) {\n var key = _ref3.key;\n return key;\n });\n }\n\n // Show all when tree is in filter mode\n if (!treeExpandedKeys && filteredTreeNodes && filteredTreeNodes.length && filteredTreeNodes !== prevProps.filteredTreeNodes) {\n newState._expandedKeyList = [].concat(_toConsumableArray(keyEntities.keys()));\n }\n\n // Cache `expandedKeyList` when filter set\n if (upperSearchValue && !prevProps.upperSearchValue) {\n newState._cachedExpandedKeyList = expandedKeyList;\n } else if (!upperSearchValue && prevProps.upperSearchValue && !treeExpandedKeys) {\n newState._expandedKeyList = cachedExpandedKeyList || [];\n newState._cachedExpandedKeyList = [];\n }\n\n // Use expandedKeys if provided\n if (prevProps.treeExpandedKeys !== treeExpandedKeys) {\n newState._expandedKeyList = treeExpandedKeys;\n }\n\n // Clean loadedKeys if key not exist in keyEntities anymore\n if (nextProps.loadData) {\n newState._loadedKeys = loadedKeys.filter(function (key) {\n return keyEntities.has(key);\n });\n }\n\n return newState;\n}\nvar BasePopup = {\n mixins: [BaseMixin],\n name: 'BasePopup',\n props: {\n prefixCls: PropTypes.string,\n upperSearchValue: PropTypes.string,\n valueList: PropTypes.array,\n searchHalfCheckedKeys: PropTypes.array,\n valueEntities: PropTypes.object,\n keyEntities: Map,\n treeIcon: PropTypes.bool,\n treeLine: PropTypes.bool,\n treeNodeFilterProp: PropTypes.string,\n treeCheckable: PropTypes.any,\n treeCheckStrictly: PropTypes.bool,\n treeDefaultExpandAll: PropTypes.bool,\n treeDefaultExpandedKeys: PropTypes.array,\n treeExpandedKeys: PropTypes.array,\n loadData: PropTypes.func,\n multiple: PropTypes.bool,\n // onTreeExpand: PropTypes.func,\n searchValue: PropTypes.string,\n treeNodes: PropTypes.any,\n filteredTreeNodes: PropTypes.any,\n notFoundContent: PropTypes.any,\n\n ariaId: PropTypes.string,\n switcherIcon: PropTypes.any,\n // HOC\n renderSearch: PropTypes.func,\n // onTreeExpanded: PropTypes.func,\n\n __propsSymbol__: PropTypes.any\n },\n inject: {\n vcTreeSelect: { 'default': function _default() {\n return {};\n } }\n },\n watch: {\n __propsSymbol__: function __propsSymbol__() {\n var state = getDerivedState(this.$props, this.$data);\n this.setState(state);\n }\n },\n data: function data() {\n this.treeRef = createRef();\n warning(this.$props.__propsSymbol__, 'must pass __propsSymbol__');\n var _$props = this.$props,\n treeDefaultExpandAll = _$props.treeDefaultExpandAll,\n treeDefaultExpandedKeys = _$props.treeDefaultExpandedKeys,\n keyEntities = _$props.keyEntities;\n\n // TODO: make `expandedKeyList` control\n\n var expandedKeyList = treeDefaultExpandedKeys;\n if (treeDefaultExpandAll) {\n expandedKeyList = [].concat(_toConsumableArray(keyEntities.keys()));\n }\n\n var state = {\n _keyList: [],\n _expandedKeyList: expandedKeyList,\n // Cache `expandedKeyList` when tree is in filter. This is used in `getDerivedState`\n _cachedExpandedKeyList: [],\n _loadedKeys: [],\n _prevProps: {}\n };\n return _extends({}, state, getDerivedState(this.$props, state));\n },\n\n methods: {\n onTreeExpand: function onTreeExpand(expandedKeyList) {\n var _this = this;\n\n var treeExpandedKeys = this.$props.treeExpandedKeys;\n\n // Set uncontrolled state\n\n if (!treeExpandedKeys) {\n this.setState({ _expandedKeyList: expandedKeyList }, function () {\n _this.__emit('treeExpanded');\n });\n }\n this.__emit('update:treeExpandedKeys', expandedKeyList);\n this.__emit('treeExpand', expandedKeyList);\n },\n onLoad: function onLoad(loadedKeys) {\n this.setState({ _loadedKeys: loadedKeys });\n },\n getTree: function getTree() {\n return this.treeRef.current;\n },\n\n\n /**\n * Not pass `loadData` when searching. To avoid loop ajax call makes browser crash.\n */\n getLoadData: function getLoadData() {\n var _$props2 = this.$props,\n loadData = _$props2.loadData,\n upperSearchValue = _$props2.upperSearchValue;\n\n if (upperSearchValue) return null;\n return loadData;\n },\n\n\n /**\n * This method pass to Tree component which is used for add filtered class\n * in TreeNode > li\n */\n filterTreeNode: function filterTreeNode(treeNode) {\n var _$props3 = this.$props,\n upperSearchValue = _$props3.upperSearchValue,\n treeNodeFilterProp = _$props3.treeNodeFilterProp;\n\n\n var filterVal = treeNode[treeNodeFilterProp];\n if (typeof filterVal === 'string') {\n return upperSearchValue && filterVal.toUpperCase().indexOf(upperSearchValue) !== -1;\n }\n\n return false;\n },\n renderNotFound: function renderNotFound() {\n var h = this.$createElement;\n var _$props4 = this.$props,\n prefixCls = _$props4.prefixCls,\n notFoundContent = _$props4.notFoundContent;\n\n\n return h(\n 'span',\n { 'class': prefixCls + '-not-found' },\n [notFoundContent]\n );\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var _$data = this.$data,\n keyList = _$data._keyList,\n expandedKeyList = _$data._expandedKeyList,\n loadedKeys = _$data._loadedKeys;\n var _$props5 = this.$props,\n prefixCls = _$props5.prefixCls,\n treeNodes = _$props5.treeNodes,\n filteredTreeNodes = _$props5.filteredTreeNodes,\n treeIcon = _$props5.treeIcon,\n treeLine = _$props5.treeLine,\n treeCheckable = _$props5.treeCheckable,\n treeCheckStrictly = _$props5.treeCheckStrictly,\n multiple = _$props5.multiple,\n ariaId = _$props5.ariaId,\n renderSearch = _$props5.renderSearch,\n switcherIcon = _$props5.switcherIcon,\n searchHalfCheckedKeys = _$props5.searchHalfCheckedKeys;\n var _vcTreeSelect = this.vcTreeSelect,\n onPopupKeyDown = _vcTreeSelect.onPopupKeyDown,\n onTreeNodeSelect = _vcTreeSelect.onTreeNodeSelect,\n onTreeNodeCheck = _vcTreeSelect.onTreeNodeCheck;\n\n\n var loadData = this.getLoadData();\n\n var treeProps = {};\n\n if (treeCheckable) {\n treeProps.checkedKeys = keyList;\n } else {\n treeProps.selectedKeys = keyList;\n }\n var $notFound = void 0;\n var $treeNodes = void 0;\n if (filteredTreeNodes) {\n if (filteredTreeNodes.length) {\n treeProps.checkStrictly = true;\n $treeNodes = filteredTreeNodes;\n\n // Fill halfCheckedKeys\n if (treeCheckable && !treeCheckStrictly) {\n treeProps.checkedKeys = {\n checked: keyList,\n halfChecked: searchHalfCheckedKeys\n };\n }\n } else {\n $notFound = this.renderNotFound();\n }\n } else if (!treeNodes || !treeNodes.length) {\n $notFound = this.renderNotFound();\n } else {\n $treeNodes = treeNodes;\n }\n\n var $tree = void 0;\n if ($notFound) {\n $tree = $notFound;\n } else {\n var treeAllProps = {\n props: _extends({\n prefixCls: prefixCls + '-tree',\n showIcon: treeIcon,\n showLine: treeLine,\n selectable: !treeCheckable,\n checkable: treeCheckable,\n checkStrictly: treeCheckStrictly,\n multiple: multiple,\n loadData: loadData,\n loadedKeys: loadedKeys,\n expandedKeys: expandedKeyList,\n filterTreeNode: this.filterTreeNode,\n switcherIcon: switcherIcon\n }, treeProps, {\n __propsSymbol__: Symbol(),\n children: $treeNodes\n }),\n on: {\n select: onTreeNodeSelect,\n check: onTreeNodeCheck,\n expand: this.onTreeExpand,\n load: this.onLoad\n },\n directives: [{\n name: 'ant-ref',\n value: this.treeRef\n }]\n };\n $tree = h(Tree, treeAllProps);\n }\n\n return h(\n 'div',\n {\n attrs: { role: 'listbox', id: ariaId, tabIndex: -1 },\n on: {\n 'keydown': onPopupKeyDown\n }\n },\n [renderSearch ? renderSearch() : null, $tree]\n );\n }\n};\n\nexport default BasePopup;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../../_util/vue-types';\nimport BasePopup from '../Base/BasePopup';\nimport SearchInput from '../SearchInput';\nimport { createRef } from '../util';\nimport { getListeners } from '../../../_util/props-util';\n\nvar SinglePopup = {\n name: 'SinglePopup',\n props: _extends({}, BasePopup.props, SearchInput.props, {\n searchValue: PropTypes.string,\n showSearch: PropTypes.bool,\n dropdownPrefixCls: PropTypes.string,\n disabled: PropTypes.bool,\n searchPlaceholder: PropTypes.string\n }),\n created: function created() {\n this.inputRef = createRef();\n this.searchRef = createRef();\n this.popupRef = createRef();\n },\n\n methods: {\n onPlaceholderClick: function onPlaceholderClick() {\n this.inputRef.current.focus();\n },\n getTree: function getTree() {\n return this.popupRef.current && this.popupRef.current.getTree();\n },\n _renderPlaceholder: function _renderPlaceholder() {\n var h = this.$createElement;\n var _$props = this.$props,\n searchPlaceholder = _$props.searchPlaceholder,\n searchValue = _$props.searchValue,\n prefixCls = _$props.prefixCls;\n\n\n if (!searchPlaceholder) {\n return null;\n }\n\n return h(\n 'span',\n {\n style: {\n display: searchValue ? 'none' : 'block'\n },\n on: {\n 'click': this.onPlaceholderClick\n },\n\n 'class': prefixCls + '-search__field__placeholder'\n },\n [searchPlaceholder]\n );\n },\n _renderSearch: function _renderSearch() {\n var h = this.$createElement;\n var _$props2 = this.$props,\n showSearch = _$props2.showSearch,\n dropdownPrefixCls = _$props2.dropdownPrefixCls;\n\n\n if (!showSearch) {\n return null;\n }\n\n return h(\n 'span',\n _mergeJSXProps([{\n 'class': dropdownPrefixCls + '-search'\n }, {\n directives: [{\n name: 'ant-ref',\n value: this.searchRef\n }]\n }]),\n [h(SearchInput, {\n props: _extends({}, this.$props, { renderPlaceholder: this._renderPlaceholder }),\n on: getListeners(this),\n directives: [{\n name: 'ant-ref',\n value: this.inputRef\n }]\n })]\n );\n }\n },\n render: function render() {\n var h = arguments[0];\n\n return h(BasePopup, {\n props: _extends({}, this.$props, { renderSearch: this._renderSearch, __propsSymbol__: Symbol() }),\n on: getListeners(this),\n directives: [{\n name: 'ant-ref',\n value: this.popupRef\n }]\n });\n }\n};\n\nexport default SinglePopup;","import BasePopup from '../Base/BasePopup';\n\nexport default BasePopup;","import _extends from 'babel-runtime/helpers/extends';\nimport { TreeNode } from '../../vc-tree';\n/**\n * SelectNode wrapped the tree node.\n * Let's use SelectNode instead of TreeNode\n * since TreeNode is so confuse here.\n */\nexport default {\n name: 'SelectNode',\n functional: true,\n isTreeNode: true,\n props: TreeNode.props,\n render: function render(h, context) {\n var props = context.props,\n slots = context.slots,\n listeners = context.listeners,\n data = context.data,\n scopedSlots = context.scopedSlots;\n\n var $slots = slots() || {};\n var children = $slots['default'];\n var slotsKey = Object.keys($slots);\n var scopedSlotsTemp = {}; // for vue 2.5.x\n slotsKey.forEach(function (name) {\n scopedSlotsTemp[name] = function () {\n return $slots[name];\n };\n });\n var treeNodeProps = _extends({}, data, {\n on: _extends({}, listeners, data.nativeOn),\n props: props,\n scopedSlots: _extends({}, scopedSlotsTemp, scopedSlots)\n });\n return h(\n TreeNode,\n treeNodeProps,\n [children]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _extends from 'babel-runtime/helpers/extends';\n/**\n * ARIA: https://www.w3.org/TR/wai-aria/#combobox\n * Sample 1: https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/examples/combobox/aria1.1pattern/listbox-combo.html\n * Sample 2: https://www.w3.org/blog/wai-components-gallery/widget/combobox-with-aria-autocompleteinline/\n *\n * Tab logic:\n * Popup is close\n * 1. Focus input (mark component as focused)\n * 2. Press enter to show the popup\n * 3. If popup has input, focus it\n *\n * Popup is open\n * 1. press tab to close the popup\n * 2. Focus back to the selection input box\n * 3. Let the native tab going on\n *\n * TreeSelect use 2 design type.\n * In single mode, we should focus on the `span`\n * In multiple mode, we should focus on the `input`\n */\n\nimport shallowEqual from 'shallowequal';\nimport raf from 'raf';\nimport scrollIntoView from 'dom-scroll-into-view';\nimport warning from 'warning';\nimport PropTypes from '../../_util/vue-types';\nimport KeyCode from '../../_util/KeyCode';\n\nimport SelectTrigger from './SelectTrigger';\nimport SingleSelector from './Selector/SingleSelector';\nimport MultipleSelector from './Selector/MultipleSelector';\nimport SinglePopup from './Popup/SinglePopup';\nimport MultiplePopup from './Popup/MultiplePopup';\n\nimport { SHOW_ALL, SHOW_PARENT, SHOW_CHILD } from './strategies';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { createRef, generateAriaId, formatInternalValue, formatSelectorValue, parseSimpleTreeData, convertDataToTree, convertTreeToEntities, conductCheck, getHalfCheckedKeys, flatToHierarchy, isPosRelated, isLabelInValue as _isLabelInValue, getFilterTree, cleanEntity, findPopupContainer } from './util';\nimport SelectNode from './SelectNode';\nimport { initDefaultProps, getOptionProps, mergeProps, getPropsData, filterEmpty, getListeners } from '../../_util/props-util';\nfunction getWatch() {\n var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var watch = {};\n keys.forEach(function (k) {\n watch[k] = function () {\n this.needSyncKeys[k] = true;\n };\n });\n return watch;\n}\nvar Select = {\n name: 'Select',\n mixins: [BaseMixin],\n props: initDefaultProps({\n prefixCls: PropTypes.string,\n prefixAria: PropTypes.string,\n multiple: PropTypes.bool,\n showArrow: PropTypes.bool,\n open: PropTypes.bool,\n value: PropTypes.any,\n\n autoFocus: PropTypes.bool,\n\n defaultOpen: PropTypes.bool,\n defaultValue: PropTypes.any,\n\n showSearch: PropTypes.bool,\n placeholder: PropTypes.any,\n inputValue: PropTypes.string, // [Legacy] Deprecated. Use `searchValue` instead.\n searchValue: PropTypes.string,\n autoClearSearchValue: PropTypes.bool,\n searchPlaceholder: PropTypes.any, // [Legacy] Confuse with placeholder\n disabled: PropTypes.bool,\n children: PropTypes.any,\n labelInValue: PropTypes.bool,\n maxTagCount: PropTypes.number,\n maxTagPlaceholder: PropTypes.oneOfType([PropTypes.any, PropTypes.func]),\n maxTagTextLength: PropTypes.number,\n showCheckedStrategy: PropTypes.oneOf([SHOW_ALL, SHOW_PARENT, SHOW_CHILD]),\n dropdownClassName: PropTypes.string,\n dropdownStyle: PropTypes.object,\n dropdownVisibleChange: PropTypes.func,\n dropdownMatchSelectWidth: PropTypes.bool,\n treeData: PropTypes.array,\n treeDataSimpleMode: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n treeNodeFilterProp: PropTypes.string,\n treeNodeLabelProp: PropTypes.string,\n treeCheckable: PropTypes.oneOfType([PropTypes.any, PropTypes.object, PropTypes.bool]),\n // treeCheckable: PropTypes.any,\n treeCheckStrictly: PropTypes.bool,\n treeIcon: PropTypes.bool,\n treeLine: PropTypes.bool,\n treeDefaultExpandAll: PropTypes.bool,\n treeDefaultExpandedKeys: PropTypes.array,\n treeExpandedKeys: PropTypes.array,\n loadData: PropTypes.func,\n filterTreeNode: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n\n notFoundContent: PropTypes.any,\n getPopupContainer: PropTypes.func,\n\n // onSearch: PropTypes.func,\n // onSelect: PropTypes.func,\n // onDeselect: PropTypes.func,\n // onChange: PropTypes.func,\n // onDropdownVisibleChange: PropTypes.func,\n\n // onTreeExpand: PropTypes.func,\n allowClear: PropTypes.bool,\n transitionName: PropTypes.string,\n animation: PropTypes.string,\n choiceTransitionName: PropTypes.string,\n inputIcon: PropTypes.any,\n clearIcon: PropTypes.any,\n removeIcon: PropTypes.any,\n switcherIcon: PropTypes.any,\n __propsSymbol__: PropTypes.any\n }, {\n prefixCls: 'rc-tree-select',\n prefixAria: 'rc-tree-select',\n showSearch: true,\n autoClearSearchValue: true,\n showCheckedStrategy: SHOW_CHILD,\n\n // dropdownMatchSelectWidth change the origin design, set to false now\n // ref: https://github.com/react-component/select/blob/4cad95e098a341a09de239ad6981067188842020/src/Select.jsx#L344\n // ref: https://github.com/react-component/select/pull/71\n treeNodeFilterProp: 'value',\n treeNodeLabelProp: 'title',\n treeIcon: false,\n notFoundContent: 'Not Found',\n dropdownStyle: {},\n dropdownVisibleChange: function dropdownVisibleChange() {\n return true;\n }\n }),\n\n data: function data() {\n warning(this.$props.__propsSymbol__, 'must pass __propsSymbol__');\n var _$props = this.$props,\n prefixAria = _$props.prefixAria,\n defaultOpen = _$props.defaultOpen,\n open = _$props.open;\n\n this.needSyncKeys = {};\n this.selectorRef = createRef();\n this.selectTriggerRef = createRef();\n\n // ARIA need `aria-controls` props mapping\n // Since this need user input. Let's generate ourselves\n this.ariaId = generateAriaId(prefixAria + '-list');\n\n var state = {\n _open: open || defaultOpen,\n _valueList: [],\n _searchHalfCheckedKeys: [],\n _missValueList: [], // Contains the value not in the tree\n _selectorValueList: [], // Used for multiple selector\n _valueEntities: {},\n _posEntities: new Map(),\n _keyEntities: new Map(),\n _searchValue: '',\n _prevProps: {},\n _init: true,\n _focused: undefined,\n _treeNodes: undefined,\n _filteredTreeNodes: undefined\n };\n var newState = this.getDerivedState(this.$props, state);\n return _extends({}, state, newState);\n },\n provide: function provide() {\n return {\n vcTreeSelect: {\n onSelectorFocus: this.onSelectorFocus,\n onSelectorBlur: this.onSelectorBlur,\n onSelectorKeyDown: this.onComponentKeyDown,\n onSelectorClear: this.onSelectorClear,\n onMultipleSelectorRemove: this.onMultipleSelectorRemove,\n\n onTreeNodeSelect: this.onTreeNodeSelect,\n onTreeNodeCheck: this.onTreeNodeCheck,\n onPopupKeyDown: this.onComponentKeyDown,\n\n onSearchInputChange: this.onSearchInputChange,\n onSearchInputKeyDown: this.onSearchInputKeyDown\n }\n };\n },\n\n watch: _extends({}, getWatch(['treeData', 'defaultValue', 'value']), {\n __propsSymbol__: function __propsSymbol__() {\n var state = this.getDerivedState(this.$props, this.$data);\n this.setState(state);\n this.needSyncKeys = {};\n },\n '$data._valueList': function $data_valueList() {\n var _this = this;\n\n this.$nextTick(function () {\n _this.forcePopupAlign();\n });\n },\n '$data._open': function $data_open(open) {\n var _this2 = this;\n\n setTimeout(function () {\n var prefixCls = _this2.$props.prefixCls;\n var _$data = _this2.$data,\n selectorValueList = _$data._selectorValueList,\n valueEntities = _$data._valueEntities;\n\n var isMultiple = _this2.isMultiple();\n\n // Scroll to value position, only need sync on single mode\n if (!isMultiple && selectorValueList.length && open && _this2.popup) {\n var value = selectorValueList[0].value;\n\n var _popup$getTree = _this2.popup.getTree(),\n domTreeNodes = _popup$getTree.domTreeNodes;\n\n var _ref = valueEntities[value] || {},\n key = _ref.key;\n\n var treeNode = domTreeNodes[key];\n\n if (treeNode) {\n var domNode = treeNode.$el;\n raf(function () {\n var popupNode = _this2.popup.$el;\n var triggerContainer = findPopupContainer(popupNode, prefixCls + '-dropdown');\n var searchNode = _this2.popup.searchRef.current;\n\n if (domNode && triggerContainer && searchNode) {\n scrollIntoView(domNode, triggerContainer, {\n onlyScrollIfNeeded: true,\n offsetTop: searchNode.offsetHeight\n });\n }\n });\n }\n }\n });\n }\n }),\n mounted: function mounted() {\n var _this3 = this;\n\n this.$nextTick(function () {\n var _$props2 = _this3.$props,\n autoFocus = _$props2.autoFocus,\n disabled = _$props2.disabled;\n\n if (autoFocus && !disabled) {\n _this3.focus();\n }\n });\n },\n\n\n methods: {\n getDerivedState: function getDerivedState(nextProps, prevState) {\n var h = this.$createElement;\n var _prevState$_prevProps = prevState._prevProps,\n prevProps = _prevState$_prevProps === undefined ? {} : _prevState$_prevProps;\n var treeCheckable = nextProps.treeCheckable,\n treeCheckStrictly = nextProps.treeCheckStrictly,\n filterTreeNode = nextProps.filterTreeNode,\n treeNodeFilterProp = nextProps.treeNodeFilterProp,\n treeDataSimpleMode = nextProps.treeDataSimpleMode;\n\n var newState = {\n _prevProps: _extends({}, nextProps),\n _init: false\n };\n var self = this;\n // Process the state when props updated\n function processState(propName, updater) {\n if (prevProps[propName] !== nextProps[propName] || self.needSyncKeys[propName]) {\n updater(nextProps[propName], prevProps[propName]);\n return true;\n }\n return false;\n }\n\n var valueRefresh = false;\n\n // Open\n processState('open', function (propValue) {\n newState._open = propValue;\n });\n\n // Tree Nodes\n var treeNodes = void 0;\n var treeDataChanged = false;\n var treeDataModeChanged = false;\n processState('treeData', function (propValue) {\n treeNodes = convertDataToTree(h, propValue);\n treeDataChanged = true;\n });\n\n processState('treeDataSimpleMode', function (propValue, prevValue) {\n if (!propValue) return;\n\n var prev = !prevValue || prevValue === true ? {} : prevValue;\n\n // Shallow equal to avoid dynamic prop object\n if (!shallowEqual(propValue, prev)) {\n treeDataModeChanged = true;\n }\n });\n\n // Parse by `treeDataSimpleMode`\n if (treeDataSimpleMode && (treeDataChanged || treeDataModeChanged)) {\n var simpleMapper = _extends({\n id: 'id',\n pId: 'pId',\n rootPId: null\n }, treeDataSimpleMode !== true ? treeDataSimpleMode : {});\n treeNodes = convertDataToTree(h, parseSimpleTreeData(nextProps.treeData, simpleMapper));\n }\n\n // If `treeData` not provide, use children TreeNodes\n if (!nextProps.treeData) {\n // processState('children', (propValue) => {\n // treeNodes = Array.isArray(propValue) ? propValue : [propValue]\n // })\n treeNodes = filterEmpty(this.$slots['default']);\n }\n\n // Convert `treeData` to entities\n if (treeNodes) {\n var entitiesMap = convertTreeToEntities(treeNodes);\n newState._treeNodes = treeNodes;\n newState._posEntities = entitiesMap.posEntities;\n newState._valueEntities = entitiesMap.valueEntities;\n newState._keyEntities = entitiesMap.keyEntities;\n\n valueRefresh = true;\n }\n\n // Value List\n if (prevState._init) {\n processState('defaultValue', function (propValue) {\n newState._valueList = formatInternalValue(propValue, nextProps);\n valueRefresh = true;\n });\n }\n\n processState('value', function (propValue) {\n newState._valueList = formatInternalValue(propValue, nextProps);\n valueRefresh = true;\n });\n\n // Selector Value List\n if (valueRefresh) {\n // Find out that value not exist in the tree\n var missValueList = [];\n var filteredValueList = [];\n var keyList = [];\n\n // Get latest value list\n var latestValueList = newState._valueList;\n if (!latestValueList) {\n // Also need add prev missValueList to avoid new treeNodes contains the value\n latestValueList = [].concat(_toConsumableArray(prevState._valueList), _toConsumableArray(prevState._missValueList));\n }\n\n // Get key by value\n var valueLabels = {};\n latestValueList.forEach(function (wrapperValue) {\n var value = wrapperValue.value,\n label = wrapperValue.label;\n\n var entity = (newState._valueEntities || prevState._valueEntities)[value];\n valueLabels[value] = label;\n\n if (entity) {\n keyList.push(entity.key);\n filteredValueList.push(wrapperValue);\n return;\n }\n\n // If not match, it may caused by ajax load. We need keep this\n missValueList.push(wrapperValue);\n });\n\n // We need calculate the value when tree is checked tree\n if (treeCheckable && !treeCheckStrictly) {\n // Calculate the keys need to be checked\n var _conductCheck = conductCheck(keyList, true, newState._keyEntities || prevState._keyEntities),\n checkedKeys = _conductCheck.checkedKeys;\n\n // Format value list again for internal usage\n\n\n newState._valueList = checkedKeys.map(function (key) {\n var val = (newState._keyEntities || prevState._keyEntities).get(key).value;\n\n var wrappedValue = {\n value: val\n };\n\n if (valueLabels[val] !== undefined) {\n wrappedValue.label = valueLabels[val];\n }\n\n return wrappedValue;\n });\n } else {\n newState._valueList = filteredValueList;\n }\n\n // Fill the missValueList, we still need display in the selector\n newState._missValueList = missValueList;\n\n // Calculate the value list for `Selector` usage\n newState._selectorValueList = formatSelectorValue(newState._valueList, nextProps, newState._valueEntities || prevState._valueEntities);\n }\n\n // [Legacy] To align with `Select` component,\n // We use `searchValue` instead of `inputValue` but still keep the api\n // `inputValue` support `null` to work as `autoClearSearchValue`\n processState('inputValue', function (propValue) {\n if (propValue !== null) {\n newState._searchValue = propValue;\n }\n });\n\n // Search value\n processState('searchValue', function (propValue) {\n newState._searchValue = propValue;\n });\n\n // Do the search logic\n if (newState._searchValue !== undefined || prevState._searchValue && treeNodes) {\n var searchValue = newState._searchValue !== undefined ? newState._searchValue : prevState._searchValue;\n var upperSearchValue = String(searchValue).toUpperCase();\n\n var filterTreeNodeFn = filterTreeNode;\n if (filterTreeNode === false) {\n // Don't filter if is false\n filterTreeNodeFn = function filterTreeNodeFn() {\n return true;\n };\n } else if (typeof filterTreeNodeFn !== 'function') {\n // When is not function (true or undefined), use inner filter\n filterTreeNodeFn = function filterTreeNodeFn(_, node) {\n var nodeValue = String(getPropsData(node)[treeNodeFilterProp]).toUpperCase();\n return nodeValue.indexOf(upperSearchValue) !== -1;\n };\n }\n\n newState._filteredTreeNodes = getFilterTree(this.$createElement, newState._treeNodes || prevState._treeNodes, searchValue, filterTreeNodeFn, newState._valueEntities || prevState._valueEntities, SelectNode);\n }\n\n // We should re-calculate the halfCheckedKeys when in search mode\n if (valueRefresh && treeCheckable && !treeCheckStrictly && (newState._searchValue || prevState._searchValue)) {\n newState._searchHalfCheckedKeys = getHalfCheckedKeys(newState._valueList, newState._valueEntities || prevState._valueEntities);\n }\n\n // Checked Strategy\n processState('showCheckedStrategy', function () {\n newState._selectorValueList = newState._selectorValueList || formatSelectorValue(newState._valueList || prevState._valueList, nextProps, newState._valueEntities || prevState._valueEntities);\n });\n\n return newState;\n },\n\n // ==================== Selector ====================\n onSelectorFocus: function onSelectorFocus() {\n this.setState({ _focused: true });\n },\n onSelectorBlur: function onSelectorBlur() {\n this.setState({ _focused: false });\n\n // TODO: Close when Popup is also not focused\n // this.setState({ open: false });\n },\n\n\n // Handle key board event in both Selector and Popup\n onComponentKeyDown: function onComponentKeyDown(event) {\n var open = this.$data._open;\n var keyCode = event.keyCode;\n\n\n if (!open) {\n if ([KeyCode.ENTER, KeyCode.DOWN].indexOf(keyCode) !== -1) {\n this.setOpenState(true);\n }\n } else if (KeyCode.ESC === keyCode) {\n this.setOpenState(false);\n } else if ([KeyCode.UP, KeyCode.DOWN, KeyCode.LEFT, KeyCode.RIGHT].indexOf(keyCode) !== -1) {\n // TODO: Handle `open` state\n event.stopPropagation();\n }\n },\n onDeselect: function onDeselect(wrappedValue, node, nodeEventInfo) {\n this.__emit('deselect', wrappedValue, node, nodeEventInfo);\n },\n onSelectorClear: function onSelectorClear(event) {\n var disabled = this.$props.disabled;\n\n if (disabled) return;\n\n this.triggerChange([], []);\n\n if (!this.isSearchValueControlled()) {\n this.setUncontrolledState({\n _searchValue: '',\n _filteredTreeNodes: null\n });\n }\n\n event.stopPropagation();\n },\n onMultipleSelectorRemove: function onMultipleSelectorRemove(event, removeValue) {\n event.stopPropagation();\n\n var _$data2 = this.$data,\n valueList = _$data2._valueList,\n missValueList = _$data2._missValueList,\n valueEntities = _$data2._valueEntities;\n var _$props3 = this.$props,\n treeCheckable = _$props3.treeCheckable,\n treeCheckStrictly = _$props3.treeCheckStrictly,\n treeNodeLabelProp = _$props3.treeNodeLabelProp,\n disabled = _$props3.disabled;\n\n if (disabled) return;\n\n // Find trigger entity\n var triggerEntity = valueEntities[removeValue];\n\n // Clean up value\n var newValueList = valueList;\n if (triggerEntity) {\n // If value is in tree\n if (treeCheckable && !treeCheckStrictly) {\n newValueList = valueList.filter(function (_ref2) {\n var value = _ref2.value;\n\n var entity = valueEntities[value];\n return !isPosRelated(entity.pos, triggerEntity.pos);\n });\n } else {\n newValueList = valueList.filter(function (_ref3) {\n var value = _ref3.value;\n return value !== removeValue;\n });\n }\n }\n\n var triggerNode = triggerEntity ? triggerEntity.node : null;\n\n var extraInfo = {\n triggerValue: removeValue,\n triggerNode: triggerNode\n };\n var deselectInfo = {\n node: triggerNode\n };\n\n // [Legacy] Little hack on this to make same action as `onCheck` event.\n if (treeCheckable) {\n var filteredEntityList = newValueList.map(function (_ref4) {\n var value = _ref4.value;\n return valueEntities[value];\n });\n\n deselectInfo.event = 'check';\n deselectInfo.checked = false;\n deselectInfo.checkedNodes = filteredEntityList.map(function (_ref5) {\n var node = _ref5.node;\n return node;\n });\n deselectInfo.checkedNodesPositions = filteredEntityList.map(function (_ref6) {\n var node = _ref6.node,\n pos = _ref6.pos;\n return {\n node: node,\n pos: pos\n };\n });\n\n if (treeCheckStrictly) {\n extraInfo.allCheckedNodes = deselectInfo.checkedNodes;\n } else {\n // TODO: It's too expansive to get `halfCheckedKeys` in onDeselect. Not pass this.\n extraInfo.allCheckedNodes = flatToHierarchy(filteredEntityList).map(function (_ref7) {\n var node = _ref7.node;\n return node;\n });\n }\n } else {\n deselectInfo.event = 'select';\n deselectInfo.selected = false;\n deselectInfo.selectedNodes = newValueList.map(function (_ref8) {\n var value = _ref8.value;\n return (valueEntities[value] || {}).node;\n });\n }\n\n // Some value user pass prop is not in the tree, we also need clean it\n var newMissValueList = missValueList.filter(function (_ref9) {\n var value = _ref9.value;\n return value !== removeValue;\n });\n var wrappedValue = void 0;\n if (this.isLabelInValue()) {\n wrappedValue = {\n label: triggerNode ? getPropsData(triggerNode)[treeNodeLabelProp] : null,\n value: removeValue\n };\n } else {\n wrappedValue = removeValue;\n }\n\n this.onDeselect(wrappedValue, triggerNode, deselectInfo);\n\n this.triggerChange(newMissValueList, newValueList, extraInfo);\n },\n\n\n // ===================== Popup ======================\n onValueTrigger: function onValueTrigger(isAdd, nodeList, nodeEventInfo, nodeExtraInfo) {\n var node = nodeEventInfo.node;\n var value = node.$props.value;\n var _$data3 = this.$data,\n missValueList = _$data3._missValueList,\n valueEntities = _$data3._valueEntities,\n keyEntities = _$data3._keyEntities,\n searchValue = _$data3._searchValue;\n var _$props4 = this.$props,\n disabled = _$props4.disabled,\n inputValue = _$props4.inputValue,\n treeNodeLabelProp = _$props4.treeNodeLabelProp,\n multiple = _$props4.multiple,\n treeCheckable = _$props4.treeCheckable,\n treeCheckStrictly = _$props4.treeCheckStrictly,\n autoClearSearchValue = _$props4.autoClearSearchValue;\n\n var label = node.$props[treeNodeLabelProp];\n\n if (disabled) return;\n\n // Wrap the return value for user\n var wrappedValue = void 0;\n if (this.isLabelInValue()) {\n wrappedValue = {\n value: value,\n label: label\n };\n } else {\n wrappedValue = value;\n }\n\n // [Legacy] Origin code not trigger `onDeselect` every time. Let's align the behaviour.\n if (isAdd) {\n this.__emit('select', wrappedValue, node, nodeEventInfo);\n } else {\n this.__emit('deselect', wrappedValue, node, nodeEventInfo);\n }\n\n // Get wrapped value list.\n // This is a bit hack cause we use key to match the value.\n var newValueList = nodeList.map(function (node) {\n var props = getPropsData(node);\n return {\n value: props.value,\n label: props[treeNodeLabelProp]\n };\n });\n\n // When is `treeCheckable` and with `searchValue`, `valueList` is not full filled.\n // We need calculate the missing nodes.\n if (treeCheckable && !treeCheckStrictly) {\n var keyList = newValueList.map(function (_ref10) {\n var val = _ref10.value;\n return valueEntities[val].key;\n });\n if (isAdd) {\n keyList = conductCheck(keyList, true, keyEntities).checkedKeys;\n } else {\n keyList = conductCheck([valueEntities[value].key], false, keyEntities, {\n checkedKeys: keyList\n }).checkedKeys;\n }\n newValueList = keyList.map(function (key) {\n var props = getPropsData(keyEntities.get(key).node);\n return {\n value: props.value,\n label: props[treeNodeLabelProp]\n };\n });\n }\n\n // Clean up `searchValue` when this prop is set\n if (autoClearSearchValue || inputValue === null) {\n // Clean state `searchValue` if uncontrolled\n if (!this.isSearchValueControlled() && (multiple || treeCheckable)) {\n this.setUncontrolledState({\n _searchValue: '',\n _filteredTreeNodes: null\n });\n }\n\n // Trigger onSearch if `searchValue` to be empty.\n // We should also trigger onSearch with empty string here\n // since if user use `treeExpandedKeys`, it need user have the ability to reset it.\n if (searchValue && searchValue.length) {\n this.__emit('update:searchValue', '');\n this.__emit('search', '');\n }\n }\n\n // [Legacy] Provide extra info\n var extraInfo = _extends({}, nodeExtraInfo, {\n triggerValue: value,\n triggerNode: node\n });\n\n this.triggerChange(missValueList, newValueList, extraInfo);\n },\n onTreeNodeSelect: function onTreeNodeSelect(_, nodeEventInfo) {\n var _$data4 = this.$data,\n valueList = _$data4._valueList,\n valueEntities = _$data4._valueEntities;\n var _$props5 = this.$props,\n treeCheckable = _$props5.treeCheckable,\n multiple = _$props5.multiple;\n\n if (treeCheckable) return;\n\n if (!multiple) {\n this.setOpenState(false);\n }\n\n var isAdd = nodeEventInfo.selected;\n var selectedValue = nodeEventInfo.node.$props.value;\n\n\n var newValueList = void 0;\n\n if (!multiple) {\n newValueList = [{ value: selectedValue }];\n } else {\n newValueList = valueList.filter(function (_ref11) {\n var value = _ref11.value;\n return value !== selectedValue;\n });\n if (isAdd) {\n newValueList.push({ value: selectedValue });\n }\n }\n\n var selectedNodes = newValueList.map(function (_ref12) {\n var value = _ref12.value;\n return valueEntities[value];\n }).filter(function (entity) {\n return entity;\n }).map(function (_ref13) {\n var node = _ref13.node;\n return node;\n });\n\n this.onValueTrigger(isAdd, selectedNodes, nodeEventInfo, { selected: isAdd });\n },\n onTreeNodeCheck: function onTreeNodeCheck(_, nodeEventInfo) {\n var _$data5 = this.$data,\n searchValue = _$data5._searchValue,\n keyEntities = _$data5._keyEntities,\n valueEntities = _$data5._valueEntities,\n valueList = _$data5._valueList;\n var treeCheckStrictly = this.$props.treeCheckStrictly;\n var checkedNodes = nodeEventInfo.checkedNodes,\n checkedNodesPositions = nodeEventInfo.checkedNodesPositions;\n\n var isAdd = nodeEventInfo.checked;\n\n var extraInfo = {\n checked: isAdd\n };\n\n var checkedNodeList = checkedNodes;\n\n // [Legacy] Check event provide `allCheckedNodes`.\n // When `treeCheckStrictly` or internal `searchValue` is set, TreeNode will be unrelated:\n // - Related: Show the top checked nodes and has children prop.\n // - Unrelated: Show all the checked nodes.\n if (searchValue) {\n var oriKeyList = valueList.map(function (_ref14) {\n var value = _ref14.value;\n return valueEntities[value];\n }).filter(function (entity) {\n return entity;\n }).map(function (_ref15) {\n var key = _ref15.key;\n return key;\n });\n\n var keyList = void 0;\n if (isAdd) {\n keyList = Array.from(new Set([].concat(_toConsumableArray(oriKeyList), _toConsumableArray(checkedNodeList.map(function (node) {\n var _getPropsData = getPropsData(node),\n value = _getPropsData.value;\n\n return valueEntities[value].key;\n })))));\n } else {\n keyList = conductCheck([getPropsData(nodeEventInfo.node).eventKey], false, keyEntities, {\n checkedKeys: oriKeyList\n }).checkedKeys;\n }\n\n checkedNodeList = keyList.map(function (key) {\n return keyEntities.get(key).node;\n });\n\n // Let's follow as not `treeCheckStrictly` format\n extraInfo.allCheckedNodes = keyList.map(function (key) {\n return cleanEntity(keyEntities.get(key));\n });\n } else if (treeCheckStrictly) {\n extraInfo.allCheckedNodes = nodeEventInfo.checkedNodes;\n } else {\n extraInfo.allCheckedNodes = flatToHierarchy(checkedNodesPositions);\n }\n\n this.onValueTrigger(isAdd, checkedNodeList, nodeEventInfo, extraInfo);\n },\n\n\n // ==================== Trigger =====================\n\n onDropdownVisibleChange: function onDropdownVisibleChange(open) {\n var _$props6 = this.$props,\n multiple = _$props6.multiple,\n treeCheckable = _$props6.treeCheckable;\n var _searchValue = this.$data._searchValue;\n\n // When set open success and single mode,\n // we will reset the input content.\n\n if (open && !multiple && !treeCheckable && _searchValue) {\n this.setUncontrolledState({\n _searchValue: '',\n _filteredTreeNodes: null\n });\n }\n this.setOpenState(open, true);\n },\n onSearchInputChange: function onSearchInputChange(event) {\n var value = event.target.value;\n var _$data6 = this.$data,\n treeNodes = _$data6._treeNodes,\n valueEntities = _$data6._valueEntities;\n var _$props7 = this.$props,\n filterTreeNode = _$props7.filterTreeNode,\n treeNodeFilterProp = _$props7.treeNodeFilterProp;\n\n this.__emit('update:searchValue', value);\n this.__emit('search', value);\n\n var isSet = false;\n\n if (!this.isSearchValueControlled()) {\n isSet = this.setUncontrolledState({\n _searchValue: value\n });\n this.setOpenState(true);\n }\n\n if (isSet) {\n // Do the search logic\n var upperSearchValue = String(value).toUpperCase();\n\n var filterTreeNodeFn = filterTreeNode;\n if (filterTreeNode === false) {\n filterTreeNodeFn = function filterTreeNodeFn() {\n return true;\n };\n } else if (!filterTreeNodeFn) {\n filterTreeNodeFn = function filterTreeNodeFn(_, node) {\n var nodeValue = String(getPropsData(node)[treeNodeFilterProp]).toUpperCase();\n return nodeValue.indexOf(upperSearchValue) !== -1;\n };\n }\n\n this.setState({\n _filteredTreeNodes: getFilterTree(this.$createElement, treeNodes, value, filterTreeNodeFn, valueEntities, SelectNode)\n });\n }\n },\n onSearchInputKeyDown: function onSearchInputKeyDown(event) {\n var _$data7 = this.$data,\n searchValue = _$data7._searchValue,\n valueList = _$data7._valueList;\n var keyCode = event.keyCode;\n\n\n if (KeyCode.BACKSPACE === keyCode && this.isMultiple() && !searchValue && valueList.length) {\n var lastValue = valueList[valueList.length - 1].value;\n this.onMultipleSelectorRemove(event, lastValue);\n }\n },\n onChoiceAnimationLeave: function onChoiceAnimationLeave() {\n var _this4 = this;\n\n raf(function () {\n _this4.forcePopupAlign();\n });\n },\n setPopupRef: function setPopupRef(popup) {\n this.popup = popup;\n },\n\n\n /**\n * Only update the value which is not in props\n */\n setUncontrolledState: function setUncontrolledState(state) {\n var needSync = false;\n var newState = {};\n var props = getOptionProps(this);\n Object.keys(state).forEach(function (name) {\n if (name.slice(1) in props) return;\n\n needSync = true;\n newState[name] = state[name];\n });\n\n if (needSync) {\n this.setState(newState);\n }\n\n return needSync;\n },\n\n\n // [Legacy] Origin provide `documentClickClose` which triggered by `Trigger`\n // Currently `TreeSelect` align the hide popup logic as `Select` which blur to hide.\n // `documentClickClose` is not accurate anymore. Let's just keep the key word.\n setOpenState: function setOpenState(open) {\n var byTrigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var dropdownVisibleChange = this.$props.dropdownVisibleChange;\n\n\n if (dropdownVisibleChange && dropdownVisibleChange(open, { documentClickClose: !open && byTrigger }) === false) {\n return;\n }\n\n this.setUncontrolledState({ _open: open });\n },\n\n\n // Tree checkable is also a multiple case\n isMultiple: function isMultiple() {\n var _$props8 = this.$props,\n multiple = _$props8.multiple,\n treeCheckable = _$props8.treeCheckable;\n\n return !!(multiple || treeCheckable);\n },\n isLabelInValue: function isLabelInValue() {\n return _isLabelInValue(this.$props);\n },\n\n\n // [Legacy] To align with `Select` component,\n // We use `searchValue` instead of `inputValue`\n // but currently still need support that.\n // Add this method the check if is controlled\n isSearchValueControlled: function isSearchValueControlled() {\n var props = getOptionProps(this);\n var inputValue = props.inputValue;\n\n if ('searchValue' in props) return true;\n return 'inputValue' in props && inputValue !== null;\n },\n forcePopupAlign: function forcePopupAlign() {\n var $trigger = this.selectTriggerRef.current;\n if ($trigger) {\n $trigger.forcePopupAlign();\n }\n },\n delayForcePopupAlign: function delayForcePopupAlign() {\n var _this5 = this;\n\n // Wait 2 frame to avoid dom update & dom algin in the same time\n // https://github.com/ant-design/ant-design/issues/12031\n raf(function () {\n raf(_this5.forcePopupAlign);\n });\n },\n\n\n /**\n * 1. Update state valueList.\n * 2. Fire `onChange` event to user.\n */\n triggerChange: function triggerChange(missValueList, valueList) {\n var extraInfo = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _$data8 = this.$data,\n valueEntities = _$data8._valueEntities,\n searchValue = _$data8._searchValue,\n prevSelectorValueList = _$data8._selectorValueList;\n\n var props = getOptionProps(this);\n var disabled = props.disabled,\n treeCheckable = props.treeCheckable,\n treeCheckStrictly = props.treeCheckStrictly;\n\n if (disabled) return;\n\n // Trigger\n var extra = _extends({\n // [Legacy] Always return as array contains label & value\n preValue: prevSelectorValueList.map(function (_ref16) {\n var label = _ref16.label,\n value = _ref16.value;\n return { label: label, value: value };\n })\n }, extraInfo);\n\n // Format value by `treeCheckStrictly`\n var selectorValueList = formatSelectorValue(valueList, props, valueEntities);\n\n if (!('value' in props)) {\n var newState = {\n _missValueList: missValueList,\n _valueList: valueList,\n _selectorValueList: selectorValueList\n };\n\n if (searchValue && treeCheckable && !treeCheckStrictly) {\n newState._searchHalfCheckedKeys = getHalfCheckedKeys(valueList, valueEntities);\n }\n\n this.setState(newState);\n }\n\n // Only do the logic when `onChange` function provided\n if (getListeners(this).change) {\n var connectValueList = void 0;\n\n // Get value by mode\n if (this.isMultiple()) {\n connectValueList = [].concat(_toConsumableArray(missValueList), _toConsumableArray(selectorValueList));\n } else {\n connectValueList = selectorValueList.slice(0, 1);\n }\n\n var labelList = null;\n var returnValue = void 0;\n\n if (this.isLabelInValue()) {\n returnValue = connectValueList.map(function (_ref17) {\n var label = _ref17.label,\n value = _ref17.value;\n return { label: label, value: value };\n });\n } else {\n labelList = [];\n returnValue = connectValueList.map(function (_ref18) {\n var label = _ref18.label,\n value = _ref18.value;\n\n labelList.push(label);\n return value;\n });\n }\n\n if (!this.isMultiple()) {\n returnValue = returnValue[0];\n }\n this.__emit('change', returnValue, labelList, extra);\n }\n },\n focus: function focus() {\n this.selectorRef.current.focus();\n },\n blur: function blur() {\n this.selectorRef.current.blur();\n }\n },\n\n // ===================== Render =====================\n\n render: function render() {\n var h = arguments[0];\n var _$data9 = this.$data,\n valueList = _$data9._valueList,\n missValueList = _$data9._missValueList,\n selectorValueList = _$data9._selectorValueList,\n searchHalfCheckedKeys = _$data9._searchHalfCheckedKeys,\n valueEntities = _$data9._valueEntities,\n keyEntities = _$data9._keyEntities,\n searchValue = _$data9._searchValue,\n open = _$data9._open,\n focused = _$data9._focused,\n treeNodes = _$data9._treeNodes,\n filteredTreeNodes = _$data9._filteredTreeNodes;\n\n var props = getOptionProps(this);\n var prefixCls = props.prefixCls,\n treeExpandedKeys = props.treeExpandedKeys;\n\n var isMultiple = this.isMultiple();\n\n var passProps = {\n props: _extends({}, props, {\n isMultiple: isMultiple,\n valueList: valueList,\n searchHalfCheckedKeys: searchHalfCheckedKeys,\n selectorValueList: [].concat(_toConsumableArray(missValueList), _toConsumableArray(selectorValueList)),\n valueEntities: valueEntities,\n keyEntities: keyEntities,\n searchValue: searchValue,\n upperSearchValue: (searchValue || '').toUpperCase(), // Perf save\n open: open,\n focused: focused,\n dropdownPrefixCls: prefixCls + '-dropdown',\n ariaId: this.ariaId\n }),\n on: _extends({}, getListeners(this), {\n choiceAnimationLeave: this.onChoiceAnimationLeave\n }),\n scopedSlots: this.$scopedSlots\n };\n var popupProps = mergeProps(passProps, {\n props: {\n treeNodes: treeNodes,\n filteredTreeNodes: filteredTreeNodes,\n // Tree expanded control\n treeExpandedKeys: treeExpandedKeys,\n __propsSymbol__: Symbol()\n },\n on: {\n treeExpanded: this.delayForcePopupAlign\n },\n directives: [{\n name: 'ant-ref',\n value: this.setPopupRef\n }]\n });\n\n var Popup = isMultiple ? MultiplePopup : SinglePopup;\n var $popup = h(Popup, popupProps);\n\n var Selector = isMultiple ? MultipleSelector : SingleSelector;\n var $selector = h(Selector, _mergeJSXProps([passProps, {\n directives: [{\n name: 'ant-ref',\n value: this.selectorRef\n }]\n }]));\n var selectTriggerProps = mergeProps(passProps, {\n props: {\n popupElement: $popup,\n dropdownVisibleChange: this.onDropdownVisibleChange\n },\n directives: [{\n name: 'ant-ref',\n value: this.selectTriggerRef\n }]\n });\n return h(\n SelectTrigger,\n selectTriggerProps,\n [$selector]\n );\n }\n};\n\nSelect.TreeNode = SelectNode;\nSelect.SHOW_ALL = SHOW_ALL;\nSelect.SHOW_PARENT = SHOW_PARENT;\nSelect.SHOW_CHILD = SHOW_CHILD;\n\n// Let warning show correct component name\nSelect.name = 'TreeSelect';\n\nexport default Select;","import Select from './Select';\nimport SelectNode from './SelectNode';\n\nexport { SHOW_ALL, SHOW_CHILD, SHOW_PARENT } from './strategies';\nexport var TreeNode = SelectNode;\n\nexport default Select;","// export this package's api\n// base 2.9.3\nimport Vue from 'vue';\nimport TreeSelect from './src';\nimport ref from 'vue-ref';\n\nVue.use(ref, { name: 'ant-ref' });\nexport default TreeSelect;\n\nexport { TreeNode, SHOW_ALL, SHOW_PARENT, SHOW_CHILD } from './src';","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../_util/vue-types';\nimport { AbstractSelectProps } from '../select';\n\nexport var TreeData = PropTypes.shape({\n key: PropTypes.string,\n value: PropTypes.string,\n label: PropTypes.any,\n scopedSlots: PropTypes.object,\n children: PropTypes.array\n}).loose;\n\nexport var TreeSelectProps = function TreeSelectProps() {\n return _extends({}, AbstractSelectProps(), {\n autoFocus: PropTypes.bool,\n dropdownStyle: PropTypes.object,\n filterTreeNode: PropTypes.oneOfType([Function, Boolean]),\n getPopupContainer: PropTypes.func,\n labelInValue: PropTypes.bool,\n loadData: PropTypes.func,\n maxTagCount: PropTypes.number,\n maxTagPlaceholder: PropTypes.any,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.array, PropTypes.number]),\n defaultValue: PropTypes.oneOfType([PropTypes.string, PropTypes.object, PropTypes.array, PropTypes.number]),\n multiple: PropTypes.bool,\n notFoundContent: PropTypes.any,\n // onSelect: (value: any) => void,\n // onChange: (value: any, label: any) => void,\n // onSearch: (value: any) => void,\n searchPlaceholder: PropTypes.string,\n searchValue: PropTypes.string,\n showCheckedStrategy: PropTypes.oneOf(['SHOW_ALL', 'SHOW_PARENT', 'SHOW_CHILD']),\n suffixIcon: PropTypes.any,\n treeCheckable: PropTypes.oneOfType([PropTypes.any, PropTypes.bool]),\n treeCheckStrictly: PropTypes.bool,\n treeData: PropTypes.arrayOf(Object),\n treeDataSimpleMode: PropTypes.oneOfType([Boolean, Object]),\n\n dropdownClassName: PropTypes.string,\n dropdownMatchSelectWidth: PropTypes.bool,\n treeDefaultExpandAll: PropTypes.bool,\n treeExpandedKeys: PropTypes.array,\n treeIcon: PropTypes.bool,\n treeDefaultExpandedKeys: PropTypes.array,\n treeNodeFilterProp: PropTypes.string,\n treeNodeLabelProp: PropTypes.string,\n replaceFields: PropTypes.object.def({})\n });\n};","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport VcTreeSelect, { TreeNode, SHOW_ALL, SHOW_PARENT, SHOW_CHILD } from '../vc-tree-select';\nimport classNames from 'classnames';\nimport { TreeSelectProps } from './interface';\nimport warning from '../_util/warning';\nimport { initDefaultProps, getOptionProps, getComponentFromProp, filterEmpty, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nexport { TreeData, TreeSelectProps } from './interface';\nimport Icon from '../icon';\nimport omit from 'omit.js';\n\nvar TreeSelect = {\n TreeNode: _extends({}, TreeNode, { name: 'ATreeSelectNode' }),\n SHOW_ALL: SHOW_ALL,\n SHOW_PARENT: SHOW_PARENT,\n SHOW_CHILD: SHOW_CHILD,\n name: 'ATreeSelect',\n props: initDefaultProps(TreeSelectProps(), {\n transitionName: 'slide-up',\n choiceTransitionName: 'zoom',\n showSearch: false\n }),\n model: {\n prop: 'value',\n event: 'change'\n },\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n created: function created() {\n warning(this.multiple !== false || !this.treeCheckable, 'TreeSelect', '`multiple` will alway be `true` when `treeCheckable` is true');\n },\n\n methods: {\n focus: function focus() {\n this.$refs.vcTreeSelect.focus();\n },\n blur: function blur() {\n this.$refs.vcTreeSelect.blur();\n },\n renderSwitcherIcon: function renderSwitcherIcon(prefixCls, _ref) {\n var isLeaf = _ref.isLeaf,\n loading = _ref.loading;\n var h = this.$createElement;\n\n if (loading) {\n return h(Icon, {\n attrs: { type: 'loading' },\n 'class': prefixCls + '-switcher-loading-icon' });\n }\n if (isLeaf) {\n return null;\n }\n return h(Icon, {\n attrs: { type: 'caret-down' },\n 'class': prefixCls + '-switcher-icon' });\n },\n onChange: function onChange() {\n this.$emit.apply(this, ['change'].concat(Array.prototype.slice.call(arguments)));\n },\n updateTreeData: function updateTreeData(treeData) {\n var _this = this;\n\n var $scopedSlots = this.$scopedSlots;\n\n var defaultFields = {\n children: 'children',\n title: 'title',\n key: 'key',\n label: 'label',\n value: 'value'\n };\n var replaceFields = _extends({}, defaultFields, this.$props.replaceFields);\n return treeData.map(function (item) {\n var _item$scopedSlots = item.scopedSlots,\n scopedSlots = _item$scopedSlots === undefined ? {} : _item$scopedSlots;\n\n var label = item[replaceFields.label];\n var title = item[replaceFields.title];\n var value = item[replaceFields.value];\n var key = item[replaceFields.key];\n var children = item[replaceFields.children];\n var newLabel = typeof label === 'function' ? label(_this.$createElement) : label;\n var newTitle = typeof title === 'function' ? title(_this.$createElement) : title;\n if (!newLabel && scopedSlots.label && $scopedSlots[scopedSlots.label]) {\n newLabel = $scopedSlots[scopedSlots.label](item);\n }\n if (!newTitle && scopedSlots.title && $scopedSlots[scopedSlots.title]) {\n newTitle = $scopedSlots[scopedSlots.title](item);\n }\n var treeNodeProps = _extends({}, item, {\n title: newTitle || newLabel,\n value: value,\n dataRef: item,\n key: key\n });\n if (children) {\n return _extends({}, treeNodeProps, { children: _this.updateTreeData(children) });\n }\n return treeNodeProps;\n });\n }\n },\n\n render: function render(h) {\n var _cls,\n _this2 = this;\n\n var props = getOptionProps(this);\n\n var customizePrefixCls = props.prefixCls,\n size = props.size,\n dropdownStyle = props.dropdownStyle,\n dropdownClassName = props.dropdownClassName,\n getPopupContainer = props.getPopupContainer,\n restProps = _objectWithoutProperties(props, ['prefixCls', 'size', 'dropdownStyle', 'dropdownClassName', 'getPopupContainer']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('select', customizePrefixCls);\n\n var renderEmpty = this.configProvider.renderEmpty;\n var notFoundContent = getComponentFromProp(this, 'notFoundContent');\n var removeIcon = getComponentFromProp(this, 'removeIcon');\n var clearIcon = getComponentFromProp(this, 'clearIcon');\n var getContextPopupContainer = this.configProvider.getPopupContainer;\n\n var rest = omit(restProps, ['inputIcon', 'removeIcon', 'clearIcon', 'switcherIcon', 'suffixIcon']);\n var suffixIcon = getComponentFromProp(this, 'suffixIcon');\n suffixIcon = Array.isArray(suffixIcon) ? suffixIcon[0] : suffixIcon;\n var treeData = props.treeData;\n if (treeData) {\n treeData = this.updateTreeData(treeData);\n }\n var cls = (_cls = {}, _defineProperty(_cls, prefixCls + '-lg', size === 'large'), _defineProperty(_cls, prefixCls + '-sm', size === 'small'), _cls);\n\n // showSearch: single - false, multiple - true\n var showSearch = restProps.showSearch;\n\n if (!('showSearch' in restProps)) {\n showSearch = !!(restProps.multiple || restProps.treeCheckable);\n }\n\n var checkable = getComponentFromProp(this, 'treeCheckable');\n if (checkable) {\n checkable = h('span', { 'class': prefixCls + '-tree-checkbox-inner' });\n }\n\n var inputIcon = suffixIcon || h(Icon, {\n attrs: { type: 'down' },\n 'class': prefixCls + '-arrow-icon' });\n\n var finalRemoveIcon = removeIcon || h(Icon, {\n attrs: { type: 'close' },\n 'class': prefixCls + '-remove-icon' });\n\n var finalClearIcon = clearIcon || h(Icon, {\n attrs: { type: 'close-circle', theme: 'filled' },\n 'class': prefixCls + '-clear-icon' });\n var VcTreeSelectProps = {\n props: _extends(_extends({\n switcherIcon: function switcherIcon(nodeProps) {\n return _this2.renderSwitcherIcon(prefixCls, nodeProps);\n },\n inputIcon: inputIcon,\n removeIcon: finalRemoveIcon,\n clearIcon: finalClearIcon\n }, rest, {\n showSearch: showSearch,\n getPopupContainer: getPopupContainer || getContextPopupContainer,\n dropdownClassName: classNames(dropdownClassName, prefixCls + '-tree-dropdown'),\n prefixCls: prefixCls,\n dropdownStyle: _extends({ maxHeight: '100vh', overflow: 'auto' }, dropdownStyle),\n treeCheckable: checkable,\n notFoundContent: notFoundContent || renderEmpty(h, 'Select'),\n __propsSymbol__: Symbol()\n }), treeData ? { treeData: treeData } : {}),\n 'class': cls,\n on: _extends({}, getListeners(this), { change: this.onChange }),\n ref: 'vcTreeSelect',\n scopedSlots: this.$scopedSlots\n };\n return h(\n VcTreeSelect,\n VcTreeSelectProps,\n [filterEmpty(this.$slots['default'])]\n );\n }\n};\n\n/* istanbul ignore next */\nTreeSelect.install = function (Vue) {\n Vue.use(Base);\n Vue.component(TreeSelect.name, TreeSelect);\n Vue.component(TreeSelect.TreeNode.name, TreeSelect.TreeNode);\n};\n\nexport default TreeSelect;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, initDefaultProps, getComponentFromProp, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport var TimeLineItemProps = {\n prefixCls: PropTypes.string,\n color: PropTypes.string,\n dot: PropTypes.any,\n pending: PropTypes.bool,\n position: PropTypes.oneOf(['left', 'right', '']).def('')\n};\n\nexport default {\n name: 'ATimelineItem',\n props: initDefaultProps(TimeLineItemProps, {\n color: 'blue',\n pending: false\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var _classNames, _classNames2;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n _getOptionProps$color = _getOptionProps.color,\n color = _getOptionProps$color === undefined ? '' : _getOptionProps$color,\n pending = _getOptionProps.pending;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('timeline', customizePrefixCls);\n\n var dot = getComponentFromProp(this, 'dot');\n var itemClassName = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-item', true), _defineProperty(_classNames, prefixCls + '-item-pending', pending), _classNames));\n\n var dotClassName = classNames((_classNames2 = {}, _defineProperty(_classNames2, prefixCls + '-item-head', true), _defineProperty(_classNames2, prefixCls + '-item-head-custom', dot), _defineProperty(_classNames2, prefixCls + '-item-head-' + color, true), _classNames2));\n var liProps = {\n 'class': itemClassName,\n on: getListeners(this)\n };\n return h(\n 'li',\n liProps,\n [h('div', { 'class': prefixCls + '-item-tail' }), h(\n 'div',\n {\n 'class': dotClassName,\n style: { borderColor: /blue|red|green|gray/.test(color) ? undefined : color }\n },\n [dot]\n ), h(\n 'div',\n { 'class': prefixCls + '-item-content' },\n [this.$slots['default']]\n )]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nimport _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, getPropsData, initDefaultProps, filterEmpty, getComponentFromProp, getListeners } from '../_util/props-util';\nimport { cloneElement } from '../_util/vnode';\nimport TimelineItem from './TimelineItem';\nimport Icon from '../icon';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport var TimelineProps = {\n prefixCls: PropTypes.string,\n /** 指定最后一个幽灵节点是否存在或内容 */\n pending: PropTypes.any,\n pendingDot: PropTypes.string,\n reverse: PropTypes.bool,\n mode: PropTypes.oneOf(['left', 'alternate', 'right', ''])\n};\n\nexport default {\n name: 'ATimeline',\n props: initDefaultProps(TimelineProps, {\n reverse: false,\n mode: ''\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n reverse = _getOptionProps.reverse,\n mode = _getOptionProps.mode,\n restProps = _objectWithoutProperties(_getOptionProps, ['prefixCls', 'reverse', 'mode']);\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('timeline', customizePrefixCls);\n\n var pendingDot = getComponentFromProp(this, 'pendingDot');\n var pending = getComponentFromProp(this, 'pending');\n var pendingNode = typeof pending === 'boolean' ? null : pending;\n var classString = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-pending', !!pending), _defineProperty(_classNames, prefixCls + '-reverse', !!reverse), _defineProperty(_classNames, prefixCls + '-' + mode, !!mode), _classNames));\n var children = filterEmpty(this.$slots['default']);\n // // Remove falsy items\n // const falsylessItems = filterEmpty(this.$slots.default)\n // const items = falsylessItems.map((item, idx) => {\n // return cloneElement(item, {\n // props: {\n // last: falsylessItems.length - 1 === idx,\n // },\n // })\n // })\n var pendingItem = pending ? h(\n TimelineItem,\n {\n attrs: { pending: !!pending }\n },\n [h(\n 'template',\n { slot: 'dot' },\n [pendingDot || h(Icon, {\n attrs: { type: 'loading' }\n })]\n ), pendingNode]\n ) : null;\n\n var timeLineItems = reverse ? [pendingItem].concat(_toConsumableArray(children.reverse())) : [].concat(_toConsumableArray(children), [pendingItem]);\n\n var getPositionCls = function getPositionCls(ele, idx) {\n var eleProps = getPropsData(ele);\n if (mode === 'alternate') {\n if (eleProps.position === 'right') return prefixCls + '-item-right';\n if (eleProps.position === 'left') return prefixCls + '-item-left';\n return idx % 2 === 0 ? prefixCls + '-item-left' : prefixCls + '-item-right';\n }\n if (mode === 'left') return prefixCls + '-item-left';\n if (mode === 'right') return prefixCls + '-item-right';\n if (eleProps.position === 'right') return prefixCls + '-item-right';\n return '';\n };\n\n // Remove falsy items\n var truthyItems = timeLineItems.filter(function (item) {\n return !!item;\n });\n var itemsCount = truthyItems.length;\n var lastCls = prefixCls + '-item-last';\n var items = truthyItems.map(function (ele, idx) {\n var pendingClass = idx === itemsCount - 2 ? lastCls : '';\n var readyClass = idx === itemsCount - 1 ? lastCls : '';\n return cloneElement(ele, {\n 'class': classNames([!reverse && !!pending ? pendingClass : readyClass, getPositionCls(ele, idx)])\n });\n });\n\n var timelineProps = {\n props: _extends({}, restProps),\n 'class': classString,\n on: getListeners(this)\n };\n return h(\n 'ul',\n timelineProps,\n [items]\n );\n }\n};","import Timeline from './Timeline';\nimport TimelineItem from './TimelineItem';\nimport Base from '../base';\n\nexport { TimelineProps } from './Timeline';\nexport { TimeLineItemProps } from './TimelineItem';\n\nTimeline.Item = TimelineItem;\n\n/* istanbul ignore next */\nTimeline.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Timeline.name, Timeline);\n Vue.component(TimelineItem.name, TimelineItem);\n};\n\nexport default Timeline;","function getError(option, xhr) {\n var msg = 'cannot ' + option.method + ' ' + option.action + ' ' + xhr.status + '\\'';\n var err = new Error(msg);\n err.status = xhr.status;\n err.method = option.method;\n err.url = option.action;\n return err;\n}\n\nfunction getBody(xhr) {\n var text = xhr.responseText || xhr.response;\n if (!text) {\n return text;\n }\n\n try {\n return JSON.parse(text);\n } catch (e) {\n return text;\n }\n}\n\n// option {\n// onProgress: (event: { percent: number }): void,\n// onError: (event: Error, body?: Object): void,\n// onSuccess: (body: Object): void,\n// data: Object,\n// filename: String,\n// file: File,\n// withCredentials: Boolean,\n// action: String,\n// headers: Object,\n// }\nexport default function upload(option) {\n var xhr = new window.XMLHttpRequest();\n\n if (option.onProgress && xhr.upload) {\n xhr.upload.onprogress = function progress(e) {\n if (e.total > 0) {\n e.percent = e.loaded / e.total * 100;\n }\n option.onProgress(e);\n };\n }\n\n var formData = new window.FormData();\n\n if (option.data) {\n Object.keys(option.data).forEach(function (key) {\n var value = option.data[key];\n // support key-value array data\n if (Array.isArray(value)) {\n value.forEach(function (item) {\n // { list: [ 11, 22 ] }\n // formData.append('list[]', 11);\n formData.append(key + '[]', item);\n });\n return;\n }\n\n formData.append(key, option.data[key]);\n });\n }\n\n formData.append(option.filename, option.file);\n\n xhr.onerror = function error(e) {\n option.onError(e);\n };\n\n xhr.onload = function onload() {\n // allow success when 2xx status\n // see https://github.com/react-component/upload/issues/34\n if (xhr.status < 200 || xhr.status >= 300) {\n return option.onError(getError(option, xhr), getBody(xhr));\n }\n\n option.onSuccess(getBody(xhr), xhr);\n };\n\n xhr.open(option.method, option.action, true);\n\n // Has to be after `.open()`. See https://github.com/enyo/dropzone/issues/179\n if (option.withCredentials && 'withCredentials' in xhr) {\n xhr.withCredentials = true;\n }\n\n var headers = option.headers || {};\n\n // when set headers['X-Requested-With'] = null , can close default XHR header\n // see https://github.com/react-component/upload/issues/33\n if (headers['X-Requested-With'] !== null) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n for (var h in headers) {\n if (headers.hasOwnProperty(h) && headers[h] !== null) {\n xhr.setRequestHeader(h, headers[h]);\n }\n }\n xhr.send(formData);\n\n return {\n abort: function abort() {\n xhr.abort();\n }\n };\n}","var now = +new Date();\nvar index = 0;\n\nexport default function uid() {\n return \"vc-upload-\" + now + \"-\" + ++index;\n}","function endsWith(str, suffix) {\n return str.indexOf(suffix, str.length - suffix.length) !== -1;\n}\n\nexport default (function (file, acceptedFiles) {\n if (file && acceptedFiles) {\n var acceptedFilesArray = Array.isArray(acceptedFiles) ? acceptedFiles : acceptedFiles.split(',');\n var fileName = file.name || '';\n var mimeType = file.type || '';\n var baseMimeType = mimeType.replace(/\\/.*$/, '');\n\n return acceptedFilesArray.some(function (type) {\n var validType = type.trim();\n if (validType.charAt(0) === '.') {\n return endsWith(fileName.toLowerCase(), validType.toLowerCase());\n } else if (/\\/\\*$/.test(validType)) {\n // This is something like a image/* mime type\n return baseMimeType === validType.replace(/\\/.*$/, '');\n }\n return mimeType === validType;\n });\n }\n return true;\n});","function loopFiles(item, callback) {\n var dirReader = item.createReader();\n var fileList = [];\n\n function sequence() {\n dirReader.readEntries(function (entries) {\n var entryList = Array.prototype.slice.apply(entries);\n fileList = fileList.concat(entryList);\n\n // Check if all the file has been viewed\n var isFinished = !entryList.length;\n\n if (isFinished) {\n callback(fileList);\n } else {\n sequence();\n }\n });\n }\n\n sequence();\n}\n\nvar traverseFileTree = function traverseFileTree(files, callback, isAccepted) {\n var _traverseFileTree = function _traverseFileTree(item, path) {\n path = path || '';\n if (item.isFile) {\n item.file(function (file) {\n if (isAccepted(file)) {\n // https://github.com/ant-design/ant-design/issues/16426\n if (item.fullPath && !file.webkitRelativePath) {\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: true\n }\n });\n file.webkitRelativePath = item.fullPath.replace(/^\\//, '');\n Object.defineProperties(file, {\n webkitRelativePath: {\n writable: false\n }\n });\n }\n callback([file]);\n }\n });\n } else if (item.isDirectory) {\n loopFiles(item, function (entries) {\n entries.forEach(function (entryItem) {\n _traverseFileTree(entryItem, '' + path + item.name + '/');\n });\n });\n }\n };\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var file = _step.value;\n\n _traverseFileTree(file.webkitGetAsEntry());\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator['return']) {\n _iterator['return']();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n};\n\nexport default traverseFileTree;","import _extends from 'babel-runtime/helpers/extends';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport partition from 'lodash/partition';\nimport classNames from 'classnames';\nimport defaultRequest from './request';\nimport getUid from './uid';\nimport attrAccept from './attr-accept';\nimport traverseFileTree from './traverseFileTree';\nimport { getListeners } from '../../_util/props-util';\n\nvar upLoadPropTypes = {\n componentTag: PropTypes.string,\n // style: PropTypes.object,\n prefixCls: PropTypes.string,\n name: PropTypes.string,\n // className: PropTypes.string,\n multiple: PropTypes.bool,\n directory: PropTypes.bool,\n disabled: PropTypes.bool,\n accept: PropTypes.string,\n // children: PropTypes.any,\n // onStart: PropTypes.func,\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n action: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n headers: PropTypes.object,\n beforeUpload: PropTypes.func,\n customRequest: PropTypes.func,\n // onProgress: PropTypes.func,\n withCredentials: PropTypes.bool,\n openFileDialogOnClick: PropTypes.bool,\n transformFile: PropTypes.func,\n method: PropTypes.string\n};\n\nvar AjaxUploader = {\n inheritAttrs: false,\n name: 'ajaxUploader',\n mixins: [BaseMixin],\n props: upLoadPropTypes,\n data: function data() {\n this.reqs = {};\n return {\n uid: getUid()\n };\n },\n mounted: function mounted() {\n this._isMounted = true;\n },\n beforeDestroy: function beforeDestroy() {\n this._isMounted = false;\n this.abort();\n },\n\n methods: {\n onChange: function onChange(e) {\n var files = e.target.files;\n this.uploadFiles(files);\n this.reset();\n },\n onClick: function onClick() {\n var el = this.$refs.fileInputRef;\n if (!el) {\n return;\n }\n el.click();\n },\n onKeyDown: function onKeyDown(e) {\n if (e.key === 'Enter') {\n this.onClick();\n }\n },\n onFileDrop: function onFileDrop(e) {\n var _this = this;\n\n var multiple = this.$props.multiple;\n\n e.preventDefault();\n if (e.type === 'dragover') {\n return;\n }\n if (this.directory) {\n traverseFileTree(e.dataTransfer.items, this.uploadFiles, function (_file) {\n return attrAccept(_file, _this.accept);\n });\n } else {\n var files = partition(Array.prototype.slice.call(e.dataTransfer.files), function (file) {\n return attrAccept(file, _this.accept);\n });\n var successFiles = files[0];\n var errorFiles = files[1];\n if (multiple === false) {\n successFiles = successFiles.slice(0, 1);\n }\n this.uploadFiles(successFiles);\n\n if (errorFiles.length) {\n this.$emit('reject', errorFiles);\n }\n }\n },\n uploadFiles: function uploadFiles(files) {\n var _this2 = this;\n\n var postFiles = Array.prototype.slice.call(files);\n postFiles.map(function (file) {\n file.uid = getUid();\n return file;\n }).forEach(function (file) {\n _this2.upload(file, postFiles);\n });\n },\n upload: function upload(file, fileList) {\n var _this3 = this;\n\n if (!this.beforeUpload) {\n // always async in case use react state to keep fileList\n return setTimeout(function () {\n return _this3.post(file);\n }, 0);\n }\n\n var before = this.beforeUpload(file, fileList);\n if (before && before.then) {\n before.then(function (processedFile) {\n var processedFileType = Object.prototype.toString.call(processedFile);\n if (processedFileType === '[object File]' || processedFileType === '[object Blob]') {\n return _this3.post(processedFile);\n }\n return _this3.post(file);\n })['catch'](function (e) {\n console && console.log(e); // eslint-disable-line\n });\n } else if (before !== false) {\n setTimeout(function () {\n return _this3.post(file);\n }, 0);\n }\n },\n post: function post(file) {\n var _this4 = this;\n\n if (!this._isMounted) {\n return;\n }\n var props = this.$props;\n var data = props.data;\n var _props$transformFile = props.transformFile,\n transformFile = _props$transformFile === undefined ? function (originFile) {\n return originFile;\n } : _props$transformFile;\n\n\n new Promise(function (resolve) {\n var action = _this4.action;\n\n if (typeof action === 'function') {\n return resolve(action(file));\n }\n resolve(action);\n }).then(function (action) {\n var uid = file.uid;\n\n var request = _this4.customRequest || defaultRequest;\n var transform = Promise.resolve(transformFile(file))['catch'](function (e) {\n console.error(e); // eslint-disable-line no-console\n });\n transform.then(function (transformedFile) {\n if (typeof data === 'function') {\n data = data(file);\n }\n\n var requestOption = {\n action: action,\n filename: _this4.name,\n data: data,\n file: transformedFile,\n headers: _this4.headers,\n withCredentials: _this4.withCredentials,\n method: props.method || 'post',\n onProgress: function onProgress(e) {\n _this4.$emit('progress', e, file);\n },\n onSuccess: function onSuccess(ret, xhr) {\n delete _this4.reqs[uid];\n _this4.$emit('success', ret, file, xhr);\n },\n onError: function onError(err, ret) {\n delete _this4.reqs[uid];\n _this4.$emit('error', err, ret, file);\n }\n };\n _this4.reqs[uid] = request(requestOption);\n _this4.$emit('start', file);\n });\n });\n },\n reset: function reset() {\n this.setState({\n uid: getUid()\n });\n },\n abort: function abort(file) {\n var reqs = this.reqs;\n\n if (file) {\n var uid = file;\n if (file && file.uid) {\n uid = file.uid;\n }\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n delete reqs[uid];\n } else {\n Object.keys(reqs).forEach(function (uid) {\n if (reqs[uid] && reqs[uid].abort) {\n reqs[uid].abort();\n }\n\n delete reqs[uid];\n });\n }\n }\n },\n\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var $props = this.$props,\n $attrs = this.$attrs;\n var Tag = $props.componentTag,\n prefixCls = $props.prefixCls,\n disabled = $props.disabled,\n multiple = $props.multiple,\n accept = $props.accept,\n directory = $props.directory,\n openFileDialogOnClick = $props.openFileDialogOnClick;\n\n var cls = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, prefixCls + '-disabled', disabled), _classNames));\n var events = disabled ? {} : {\n click: openFileDialogOnClick ? this.onClick : function () {},\n keydown: openFileDialogOnClick ? this.onKeyDown : function () {},\n drop: this.onFileDrop,\n dragover: this.onFileDrop\n };\n var tagProps = {\n on: _extends({}, getListeners(this), events),\n attrs: {\n role: 'button',\n tabIndex: disabled ? null : '0'\n },\n 'class': cls\n };\n return h(\n Tag,\n tagProps,\n [h('input', {\n attrs: {\n id: $attrs.id,\n type: 'file',\n\n accept: accept,\n directory: directory ? 'directory' : null,\n webkitdirectory: directory ? 'webkitdirectory' : null,\n multiple: multiple\n },\n ref: 'fileInputRef',\n on: {\n 'click': function click(e) {\n return e.stopPropagation();\n },\n 'change': this.onChange\n },\n // https://github.com/ant-design/ant-design/issues/19948\n key: this.uid,\n style: { display: 'none' } }), this.$slots['default']]\n );\n }\n};\n\nexport default AjaxUploader;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport BaseMixin from '../../_util/BaseMixin';\nimport classNames from 'classnames';\nimport getUid from './uid';\nimport warning from '../../_util/warning';\n\nvar IFRAME_STYLE = {\n position: 'absolute',\n top: 0,\n opacity: 0,\n filter: 'alpha(opacity=0)',\n left: 0,\n zIndex: 9999\n};\n\n// diferent from AjaxUpload, can only upload on at one time, serial seriously\nvar IframeUploader = {\n mixins: [BaseMixin],\n props: {\n componentTag: PropTypes.string,\n // style: PropTypes.object,\n disabled: PropTypes.bool,\n prefixCls: PropTypes.string,\n // className: PropTypes.string,\n accept: PropTypes.string,\n // onStart: PropTypes.func,\n multiple: PropTypes.bool,\n // children: PropTypes.any,\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n action: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n name: PropTypes.string\n },\n data: function data() {\n this.file = {};\n return {\n uploading: false\n };\n },\n\n methods: {\n onLoad: function onLoad() {\n if (!this.uploading) {\n return;\n }\n var file = this.file;\n\n var response = void 0;\n try {\n var doc = this.getIframeDocument();\n var script = doc.getElementsByTagName('script')[0];\n if (script && script.parentNode === doc.body) {\n doc.body.removeChild(script);\n }\n response = doc.body.innerHTML;\n this.$emit('success', response, file);\n } catch (err) {\n warning(false, 'cross domain error for Upload. Maybe server should return document.domain script. see Note from https://github.com/react-component/upload');\n response = 'cross-domain';\n this.$emit('error', err, null, file);\n }\n this.endUpload();\n },\n onChange: function onChange() {\n var _this = this;\n\n var target = this.getFormInputNode();\n // ie8/9 don't support FileList Object\n // http://stackoverflow.com/questions/12830058/ie8-input-type-file-get-files\n var file = this.file = {\n uid: getUid(),\n name: target.value && target.value.substring(target.value.lastIndexOf('\\\\') + 1, target.value.length)\n };\n this.startUpload();\n var props = this.$props;\n\n if (!props.beforeUpload) {\n return this.post(file);\n }\n var before = props.beforeUpload(file);\n if (before && before.then) {\n before.then(function () {\n _this.post(file);\n }, function () {\n _this.endUpload();\n });\n } else if (before !== false) {\n this.post(file);\n } else {\n this.endUpload();\n }\n },\n getIframeNode: function getIframeNode() {\n return this.$refs.iframeRef;\n },\n getIframeDocument: function getIframeDocument() {\n return this.getIframeNode().contentDocument;\n },\n getFormNode: function getFormNode() {\n return this.getIframeDocument().getElementById('form');\n },\n getFormInputNode: function getFormInputNode() {\n return this.getIframeDocument().getElementById('input');\n },\n getFormDataNode: function getFormDataNode() {\n return this.getIframeDocument().getElementById('data');\n },\n getFileForMultiple: function getFileForMultiple(file) {\n return this.multiple ? [file] : file;\n },\n getIframeHTML: function getIframeHTML(domain) {\n var domainScript = '';\n var domainInput = '';\n if (domain) {\n var script = 'script';\n domainScript = '<' + script + '>document.domain=\"' + domain + '\";' + script + '>';\n domainInput = '';\n }\n return '\\n \\n \\n \\n \\n \\n ' + domainScript + '\\n \\n \\n \\n \\n \\n ';\n },\n initIframeSrc: function initIframeSrc() {\n if (this.domain) {\n this.getIframeNode().src = 'javascript:void((function(){\\n var d = document;\\n d.open();\\n d.domain=\\'' + this.domain + '\\';\\n d.write(\\'\\');\\n d.close();\\n })())';\n }\n },\n initIframe: function initIframe() {\n var iframeNode = this.getIframeNode();\n var win = iframeNode.contentWindow;\n var doc = void 0;\n this.domain = this.domain || '';\n this.initIframeSrc();\n try {\n doc = win.document;\n } catch (e) {\n this.domain = document.domain;\n this.initIframeSrc();\n win = iframeNode.contentWindow;\n doc = win.document;\n }\n doc.open('text/html', 'replace');\n doc.write(this.getIframeHTML(this.domain));\n doc.close();\n this.getFormInputNode().onchange = this.onChange;\n },\n endUpload: function endUpload() {\n if (this.uploading) {\n this.file = {};\n // hack avoid batch\n this.uploading = false;\n this.setState({\n uploading: false\n });\n this.initIframe();\n }\n },\n startUpload: function startUpload() {\n if (!this.uploading) {\n this.uploading = true;\n this.setState({\n uploading: true\n });\n }\n },\n updateIframeWH: function updateIframeWH() {\n var rootNode = this.$el;\n var iframeNode = this.getIframeNode();\n iframeNode.style.height = rootNode.offsetHeight + 'px';\n iframeNode.style.width = rootNode.offsetWidth + 'px';\n },\n abort: function abort(file) {\n if (file) {\n var uid = file;\n if (file && file.uid) {\n uid = file.uid;\n }\n if (uid === this.file.uid) {\n this.endUpload();\n }\n } else {\n this.endUpload();\n }\n },\n post: function post(file) {\n var _this2 = this;\n\n var formNode = this.getFormNode();\n var dataSpan = this.getFormDataNode();\n var data = this.$props.data;\n\n if (typeof data === 'function') {\n data = data(file);\n }\n var inputs = document.createDocumentFragment();\n for (var key in data) {\n if (data.hasOwnProperty(key)) {\n var input = document.createElement('input');\n input.setAttribute('name', key);\n input.value = data[key];\n inputs.appendChild(input);\n }\n }\n dataSpan.appendChild(inputs);\n new Promise(function (resolve) {\n var action = _this2.action;\n\n if (typeof action === 'function') {\n return resolve(action(file));\n }\n resolve(action);\n }).then(function (action) {\n formNode.setAttribute('action', action);\n formNode.submit();\n dataSpan.innerHTML = '';\n _this2.$emit('start', file);\n });\n }\n },\n mounted: function mounted() {\n var _this3 = this;\n\n this.$nextTick(function () {\n _this3.updateIframeWH();\n _this3.initIframe();\n });\n },\n updated: function updated() {\n var _this4 = this;\n\n this.$nextTick(function () {\n _this4.updateIframeWH();\n });\n },\n render: function render() {\n var _classNames;\n\n var h = arguments[0];\n var _$props = this.$props,\n Tag = _$props.componentTag,\n disabled = _$props.disabled,\n prefixCls = _$props.prefixCls;\n\n var iframeStyle = _extends({}, IFRAME_STYLE, {\n display: this.uploading || disabled ? 'none' : ''\n });\n var cls = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls, true), _defineProperty(_classNames, prefixCls + '-disabled', disabled), _classNames));\n\n return h(\n Tag,\n {\n attrs: { className: cls },\n style: { position: 'relative', zIndex: 0 } },\n [h('iframe', { ref: 'iframeRef', on: {\n 'load': this.onLoad\n },\n style: iframeStyle }), this.$slots['default']]\n );\n }\n};\n\nexport default IframeUploader;","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\nimport { initDefaultProps, getListeners } from '../../_util/props-util';\nimport BaseMixin from '../../_util/BaseMixin';\nimport AjaxUpload from './AjaxUploader';\nimport IframeUpload from './IframeUploader';\n\nfunction empty() {}\n\nvar uploadProps = {\n componentTag: PropTypes.string,\n prefixCls: PropTypes.string,\n action: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n name: PropTypes.string,\n multipart: PropTypes.bool,\n directory: PropTypes.bool,\n // onError: PropTypes.func,\n // onSuccess: PropTypes.func,\n // onProgress: PropTypes.func,\n // onStart: PropTypes.func,\n data: PropTypes.oneOfType([PropTypes.object, PropTypes.func]),\n headers: PropTypes.object,\n accept: PropTypes.string,\n multiple: PropTypes.bool,\n disabled: PropTypes.bool,\n beforeUpload: PropTypes.func,\n customRequest: PropTypes.func,\n // onReady: PropTypes.func,\n method: PropTypes.string,\n withCredentials: PropTypes.bool,\n supportServerRender: PropTypes.bool,\n openFileDialogOnClick: PropTypes.bool,\n transformFile: PropTypes.func\n};\nexport default {\n name: 'Upload',\n mixins: [BaseMixin],\n inheritAttrs: false,\n props: initDefaultProps(uploadProps, {\n componentTag: 'span',\n prefixCls: 'rc-upload',\n data: {},\n headers: {},\n name: 'file',\n multipart: false,\n // onReady: empty,\n // onStart: empty,\n // onError: empty,\n // onSuccess: empty,\n supportServerRender: false,\n multiple: false,\n beforeUpload: empty,\n withCredentials: false,\n openFileDialogOnClick: true\n }),\n data: function data() {\n return {\n Component: null\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.supportServerRender) {\n _this.setState({\n Component: _this.getComponent()\n }, function () {\n _this.$emit('ready');\n });\n }\n });\n },\n\n methods: {\n getComponent: function getComponent() {\n return typeof File !== 'undefined' ? AjaxUpload : IframeUpload;\n },\n abort: function abort(file) {\n this.$refs.uploaderRef.abort(file);\n }\n },\n\n render: function render() {\n var h = arguments[0];\n\n var componentProps = {\n props: _extends({}, this.$props),\n on: getListeners(this),\n ref: 'uploaderRef',\n attrs: this.$attrs\n };\n if (this.supportServerRender) {\n var _ComponentUploader = this.Component;\n if (_ComponentUploader) {\n return h(\n _ComponentUploader,\n componentProps,\n [this.$slots['default']]\n );\n }\n return null;\n }\n var ComponentUploader = this.getComponent();\n return h(\n ComponentUploader,\n componentProps,\n [this.$slots['default']]\n );\n }\n};","// export this package's api\nimport Upload from './Upload';\n\nexport default Upload;","// rc-upload 2.9.4\nimport upload from './src';\n\nexport default upload;","import _typeof from 'babel-runtime/helpers/typeof';\nimport PropsTypes from '../_util/vue-types';\n\nexport var UploadFileStatus = PropsTypes.oneOf(['error', 'success', 'done', 'uploading', 'removed']);\n\n// export const HttpRequestHeader {\n// [key: string]: string;\n// }\n\n// export const UploadFile = PropsTypes.shape({\n// uid: PropsTypes.oneOfType([\n// PropsTypes.string,\n// PropsTypes.number,\n// ]),\n// size: PropsTypes.number,\n// name: PropsTypes.string,\n// filename: PropsTypes.string,\n// lastModified: PropsTypes.number,\n// lastModifiedDate: PropsTypes.any,\n// url: PropsTypes.string,\n// status: UploadFileStatus,\n// percent: PropsTypes.number,\n// thumbUrl: PropsTypes.string,\n// originFileObj: PropsTypes.any,\n// response: PropsTypes.any,\n// error: PropsTypes.any,\n// linkProps: PropsTypes.any,\n// type: PropsTypes.string,\n// }).loose\n\nfunction UploadFile(_ref) {\n var uid = _ref.uid,\n name = _ref.name;\n\n if (!uid && uid !== 0) return false;\n if (!['string', 'number'].includes(typeof uid === 'undefined' ? 'undefined' : _typeof(uid))) return false;\n if (name === '' || typeof name !== 'string') return false;\n return true;\n}\n\nexport var UploadChangeParam = {\n file: PropsTypes.custom(UploadFile),\n fileList: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),\n event: PropsTypes.object\n};\n\nexport var ShowUploadListInterface = PropsTypes.shape({\n showRemoveIcon: PropsTypes.bool,\n showPreviewIcon: PropsTypes.bool\n}).loose;\n\nexport var UploadLocale = PropsTypes.shape({\n uploading: PropsTypes.string,\n removeFile: PropsTypes.string,\n downloadFile: PropsTypes.string,\n uploadError: PropsTypes.string,\n previewFile: PropsTypes.string\n}).loose;\n\nexport var UploadProps = {\n type: PropsTypes.oneOf(['drag', 'select']),\n name: PropsTypes.string,\n defaultFileList: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),\n fileList: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),\n action: PropsTypes.oneOfType([PropsTypes.string, PropsTypes.func]),\n directory: PropsTypes.bool,\n data: PropsTypes.oneOfType([PropsTypes.object, PropsTypes.func]),\n method: PropsTypes.oneOf(['POST', 'PUT', 'post', 'put']),\n headers: PropsTypes.object,\n showUploadList: PropsTypes.oneOfType([PropsTypes.bool, ShowUploadListInterface]),\n multiple: PropsTypes.bool,\n accept: PropsTypes.string,\n beforeUpload: PropsTypes.func,\n // onChange: PropsTypes.func,\n listType: PropsTypes.oneOf(['text', 'picture', 'picture-card']),\n // className: PropsTypes.string,\n // onPreview: PropsTypes.func,\n remove: PropsTypes.func,\n supportServerRender: PropsTypes.bool,\n // style: PropsTypes.object,\n disabled: PropsTypes.bool,\n prefixCls: PropsTypes.string,\n customRequest: PropsTypes.func,\n withCredentials: PropsTypes.bool,\n openFileDialogOnClick: PropsTypes.bool,\n locale: UploadLocale,\n height: PropsTypes.number,\n id: PropsTypes.string,\n previewFile: PropsTypes.func,\n transformFile: PropsTypes.func\n};\n\nexport var UploadState = {\n fileList: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),\n dragState: PropsTypes.string\n};\n\nexport var UploadListProps = {\n listType: PropsTypes.oneOf(['text', 'picture', 'picture-card']),\n // onPreview: PropsTypes.func,\n // onRemove: PropsTypes.func,\n // items: PropsTypes.arrayOf(UploadFile),\n items: PropsTypes.arrayOf(PropsTypes.custom(UploadFile)),\n // items: PropsTypes.any,\n progressAttr: PropsTypes.object,\n prefixCls: PropsTypes.string,\n showRemoveIcon: PropsTypes.bool,\n showDownloadIcon: PropsTypes.bool,\n showPreviewIcon: PropsTypes.bool,\n locale: UploadLocale,\n previewFile: PropsTypes.func\n};","import _extends from 'babel-runtime/helpers/extends';\nimport { getOptionProps, getListeners } from '../_util/props-util';\nimport Upload from './Upload';\nimport { UploadProps } from './interface';\n\nexport default {\n name: 'AUploadDragger',\n props: UploadProps,\n render: function render() {\n var h = arguments[0];\n\n var props = getOptionProps(this);\n var draggerProps = {\n props: _extends({}, props, {\n type: 'drag'\n }),\n on: getListeners(this),\n style: { height: this.height }\n };\n return h(\n Upload,\n draggerProps,\n [this.$slots['default']]\n );\n }\n};","import _extends from 'babel-runtime/helpers/extends';\nexport function T() {\n return true;\n}\n\n// Fix IE file.status problem\n// via coping a new Object\nexport function fileToObject(file) {\n return _extends({}, file, {\n lastModified: file.lastModified,\n lastModifiedDate: file.lastModifiedDate,\n name: file.name,\n size: file.size,\n type: file.type,\n uid: file.uid,\n percent: 0,\n originFileObj: file\n });\n}\n\n/**\n * 生成Progress percent: 0.1 -> 0.98\n * - for ie\n */\nexport function genPercentAdd() {\n var k = 0.1;\n var i = 0.01;\n var end = 0.98;\n return function (s) {\n var start = s;\n if (start >= end) {\n return start;\n }\n\n start += k;\n k = k - i;\n if (k < 0.001) {\n k = 0.001;\n }\n return start;\n };\n}\n\nexport function getFileItem(file, fileList) {\n var matchKey = file.uid !== undefined ? 'uid' : 'name';\n return fileList.filter(function (item) {\n return item[matchKey] === file[matchKey];\n })[0];\n}\n\nexport function removeFileItem(file, fileList) {\n var matchKey = file.uid !== undefined ? 'uid' : 'name';\n var removed = fileList.filter(function (item) {\n return item[matchKey] !== file[matchKey];\n });\n if (removed.length === fileList.length) {\n return null;\n }\n return removed;\n}\n\n// ==================== Default Image Preview ====================\nvar extname = function extname() {\n var url = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n var temp = url.split('/');\n var filename = temp[temp.length - 1];\n var filenameWithoutSuffix = filename.split(/#|\\?/)[0];\n return (/\\.[^./\\\\]*$/.exec(filenameWithoutSuffix) || [''])[0];\n};\n\nvar isImageFileType = function isImageFileType(type) {\n return !!type && type.indexOf('image/') === 0;\n};\n\nexport var isImageUrl = function isImageUrl(file) {\n if (isImageFileType(file.type)) {\n return true;\n }\n var url = file.thumbUrl || file.url;\n var extension = extname(url);\n if (/^data:image\\//.test(url) || /(webp|svg|png|gif|jpg|jpeg|jfif|bmp|dpg|ico)$/i.test(extension)) {\n return true;\n }\n if (/^data:/.test(url)) {\n // other file types of base64\n return false;\n }\n if (extension) {\n // other file types which have extension\n return false;\n }\n return true;\n};\n\nvar MEASURE_SIZE = 200;\nexport function previewImage(file) {\n return new Promise(function (resolve) {\n if (!isImageFileType(file.type)) {\n resolve('');\n return;\n }\n\n var canvas = document.createElement('canvas');\n canvas.width = MEASURE_SIZE;\n canvas.height = MEASURE_SIZE;\n canvas.style.cssText = 'position: fixed; left: 0; top: 0; width: ' + MEASURE_SIZE + 'px; height: ' + MEASURE_SIZE + 'px; z-index: 9999; display: none;';\n document.body.appendChild(canvas);\n var ctx = canvas.getContext('2d');\n var img = new Image();\n img.onload = function () {\n var width = img.width,\n height = img.height;\n\n\n var drawWidth = MEASURE_SIZE;\n var drawHeight = MEASURE_SIZE;\n var offsetX = 0;\n var offsetY = 0;\n\n if (width < height) {\n drawHeight = height * (MEASURE_SIZE / width);\n offsetY = -(drawHeight - drawWidth) / 2;\n } else {\n drawWidth = width * (MEASURE_SIZE / height);\n offsetX = -(drawWidth - drawHeight) / 2;\n }\n\n ctx.drawImage(img, offsetX, offsetY, drawWidth, drawHeight);\n var dataURL = canvas.toDataURL();\n document.body.removeChild(canvas);\n\n resolve(dataURL);\n };\n img.src = window.URL.createObjectURL(file);\n });\n}","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getOptionProps, initDefaultProps, getListeners } from '../_util/props-util';\nimport getTransitionProps from '../_util/getTransitionProps';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport { previewImage, isImageUrl } from './utils';\nimport Icon from '../icon';\nimport Tooltip from '../tooltip';\nimport Progress from '../progress';\nimport classNames from 'classnames';\nimport { UploadListProps } from './interface';\n\nexport default {\n name: 'AUploadList',\n mixins: [BaseMixin],\n props: initDefaultProps(UploadListProps, {\n listType: 'text', // or picture\n progressAttr: {\n strokeWidth: 2,\n showInfo: false\n },\n showRemoveIcon: true,\n showDownloadIcon: false,\n showPreviewIcon: true,\n previewFile: previewImage\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function () {\n var _$props = _this.$props,\n listType = _$props.listType,\n items = _$props.items,\n previewFile = _$props.previewFile;\n\n if (listType !== 'picture' && listType !== 'picture-card') {\n return;\n }\n (items || []).forEach(function (file) {\n if (typeof document === 'undefined' || typeof window === 'undefined' || !window.FileReader || !window.File || !(file.originFileObj instanceof File || file.originFileObj instanceof Blob) || file.thumbUrl !== undefined) {\n return;\n }\n /*eslint-disable */\n file.thumbUrl = '';\n if (previewFile) {\n previewFile(file.originFileObj).then(function (previewDataUrl) {\n // Need append '' to avoid dead loop\n file.thumbUrl = previewDataUrl || '';\n _this.$forceUpdate();\n });\n }\n });\n });\n },\n\n methods: {\n handlePreview: function handlePreview(file, e) {\n var _getListeners = getListeners(this),\n preview = _getListeners.preview;\n\n if (!preview) {\n return;\n }\n e.preventDefault();\n return this.$emit('preview', file);\n },\n handleDownload: function handleDownload(file) {\n var _getListeners2 = getListeners(this),\n download = _getListeners2.download;\n\n if (typeof download === 'function') {\n download(file);\n } else if (file.url) {\n window.open(file.url);\n }\n },\n handleClose: function handleClose(file) {\n this.$emit('remove', file);\n }\n },\n render: function render() {\n var _this2 = this,\n _classNames4;\n\n var h = arguments[0];\n\n var _getOptionProps = getOptionProps(this),\n customizePrefixCls = _getOptionProps.prefixCls,\n _getOptionProps$items = _getOptionProps.items,\n items = _getOptionProps$items === undefined ? [] : _getOptionProps$items,\n listType = _getOptionProps.listType,\n showPreviewIcon = _getOptionProps.showPreviewIcon,\n showRemoveIcon = _getOptionProps.showRemoveIcon,\n showDownloadIcon = _getOptionProps.showDownloadIcon,\n locale = _getOptionProps.locale,\n progressAttr = _getOptionProps.progressAttr;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('upload', customizePrefixCls);\n\n var list = items.map(function (file) {\n var _classNames, _classNames2;\n\n var progress = void 0;\n var icon = h(Icon, {\n attrs: { type: file.status === 'uploading' ? 'loading' : 'paper-clip' }\n });\n\n if (listType === 'picture' || listType === 'picture-card') {\n if (listType === 'picture-card' && file.status === 'uploading') {\n icon = h(\n 'div',\n { 'class': prefixCls + '-list-item-uploading-text' },\n [locale.uploading]\n );\n } else if (!file.thumbUrl && !file.url) {\n icon = h(Icon, { 'class': prefixCls + '-list-item-thumbnail', attrs: { type: 'picture', theme: 'twoTone' }\n });\n } else {\n var thumbnail = isImageUrl(file) ? h('img', {\n attrs: {\n src: file.thumbUrl || file.url,\n alt: file.name\n },\n 'class': prefixCls + '-list-item-image'\n }) : h(Icon, {\n attrs: { type: 'file', theme: 'twoTone' },\n 'class': prefixCls + '-list-item-icon' });\n icon = h(\n 'a',\n {\n 'class': prefixCls + '-list-item-thumbnail',\n on: {\n 'click': function click(e) {\n return _this2.handlePreview(file, e);\n }\n },\n attrs: {\n href: file.url || file.thumbUrl,\n target: '_blank',\n rel: 'noopener noreferrer'\n }\n },\n [thumbnail]\n );\n }\n }\n\n if (file.status === 'uploading') {\n var progressProps = {\n props: _extends({}, progressAttr, {\n type: 'line',\n percent: file.percent\n })\n };\n // show loading icon if upload progress listener is disabled\n var loadingProgress = 'percent' in file ? h(Progress, progressProps) : null;\n\n progress = h(\n 'div',\n { 'class': prefixCls + '-list-item-progress', key: 'progress' },\n [loadingProgress]\n );\n }\n var infoUploadingClass = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-list-item', true), _defineProperty(_classNames, prefixCls + '-list-item-' + file.status, true), _defineProperty(_classNames, prefixCls + '-list-item-list-type-' + listType, true), _classNames));\n var linkProps = typeof file.linkProps === 'string' ? JSON.parse(file.linkProps) : file.linkProps;\n\n var removeIcon = showRemoveIcon ? h(Icon, {\n attrs: { type: 'delete', title: locale.removeFile },\n on: {\n 'click': function click() {\n return _this2.handleClose(file);\n }\n }\n }) : null;\n var downloadIcon = showDownloadIcon && file.status === 'done' ? h(Icon, {\n attrs: {\n type: 'download',\n title: locale.downloadFile\n },\n on: {\n 'click': function click() {\n return _this2.handleDownload(file);\n }\n }\n }) : null;\n var downloadOrDelete = listType !== 'picture-card' && h(\n 'span',\n {\n key: 'download-delete',\n 'class': prefixCls + '-list-item-card-actions ' + (listType === 'picture' ? 'picture' : '')\n },\n [downloadIcon && h(\n 'a',\n {\n attrs: { title: locale.downloadFile }\n },\n [downloadIcon]\n ), removeIcon && h(\n 'a',\n {\n attrs: { title: locale.removeFile }\n },\n [removeIcon]\n )]\n );\n var listItemNameClass = classNames((_classNames2 = {}, _defineProperty(_classNames2, prefixCls + '-list-item-name', true), _defineProperty(_classNames2, prefixCls + '-list-item-name-icon-count-' + [downloadIcon, removeIcon].filter(function (x) {\n return x;\n }).length, true), _classNames2));\n\n var preview = file.url ? [h(\n 'a',\n _mergeJSXProps([{\n attrs: {\n target: '_blank',\n rel: 'noopener noreferrer',\n\n title: file.name\n },\n 'class': listItemNameClass }, linkProps, {\n attrs: {\n href: file.url\n },\n on: {\n 'click': function click(e) {\n return _this2.handlePreview(file, e);\n }\n }\n }]),\n [file.name]\n ), downloadOrDelete] : [h(\n 'span',\n {\n key: 'view',\n 'class': prefixCls + '-list-item-name',\n on: {\n 'click': function click(e) {\n return _this2.handlePreview(file, e);\n }\n },\n attrs: {\n title: file.name\n }\n },\n [file.name]\n ), downloadOrDelete];\n var style = file.url || file.thumbUrl ? undefined : {\n pointerEvents: 'none',\n opacity: 0.5\n };\n var previewIcon = showPreviewIcon ? h(\n 'a',\n {\n attrs: {\n href: file.url || file.thumbUrl,\n target: '_blank',\n rel: 'noopener noreferrer',\n\n title: locale.previewFile\n },\n style: style,\n on: {\n 'click': function click(e) {\n return _this2.handlePreview(file, e);\n }\n }\n },\n [h(Icon, {\n attrs: { type: 'eye-o' }\n })]\n ) : null;\n var actions = listType === 'picture-card' && file.status !== 'uploading' && h(\n 'span',\n { 'class': prefixCls + '-list-item-actions' },\n [previewIcon, file.status === 'done' && downloadIcon, removeIcon]\n );\n var message = void 0;\n if (file.response && typeof file.response === 'string') {\n message = file.response;\n } else {\n message = file.error && file.error.statusText || locale.uploadError;\n }\n var iconAndPreview = h('span', [icon, preview]);\n var transitionProps = getTransitionProps('fade');\n var dom = h(\n 'div',\n { 'class': infoUploadingClass, key: file.uid },\n [h(\n 'div',\n { 'class': prefixCls + '-list-item-info' },\n [iconAndPreview]\n ), actions, h(\n 'transition',\n transitionProps,\n [progress]\n )]\n );\n var listContainerNameClass = classNames(_defineProperty({}, prefixCls + '-list-picture-card-container', listType === 'picture-card'));\n return h(\n 'div',\n { key: file.uid, 'class': listContainerNameClass },\n [file.status === 'error' ? h(\n Tooltip,\n {\n attrs: { title: message }\n },\n [dom]\n ) : h('span', [dom])]\n );\n });\n var listClassNames = classNames((_classNames4 = {}, _defineProperty(_classNames4, prefixCls + '-list', true), _defineProperty(_classNames4, prefixCls + '-list-' + listType, true), _classNames4));\n var animationDirection = listType === 'picture-card' ? 'animate-inline' : 'animate';\n var transitionGroupProps = getTransitionProps(prefixCls + '-' + animationDirection);\n return h(\n 'transition-group',\n _mergeJSXProps([transitionGroupProps, {\n attrs: { tag: 'div' },\n 'class': listClassNames }]),\n [list]\n );\n }\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classNames from 'classnames';\nimport uniqBy from 'lodash/uniqBy';\nimport findIndex from 'lodash/findIndex';\nimport pick from 'lodash/pick';\nimport VcUpload from '../vc-upload';\nimport BaseMixin from '../_util/BaseMixin';\nimport { getOptionProps, initDefaultProps, hasProp, getListeners } from '../_util/props-util';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport defaultLocale from '../locale-provider/default';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Dragger from './Dragger';\nimport UploadList from './UploadList';\nimport { UploadProps } from './interface';\nimport { T, fileToObject, genPercentAdd, getFileItem, removeFileItem } from './utils';\n\nexport { UploadProps };\n\nexport default {\n name: 'AUpload',\n mixins: [BaseMixin],\n inheritAttrs: false,\n Dragger: Dragger,\n props: initDefaultProps(UploadProps, {\n type: 'select',\n multiple: false,\n action: '',\n data: {},\n accept: '',\n beforeUpload: T,\n showUploadList: true,\n listType: 'text', // or pictrue\n disabled: false,\n supportServerRender: true\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n // recentUploadStatus: boolean | PromiseLike;\n data: function data() {\n this.progressTimer = null;\n return {\n sFileList: this.fileList || this.defaultFileList || [],\n dragState: 'drop'\n };\n },\n\n watch: {\n fileList: function fileList(val) {\n this.sFileList = val || [];\n }\n },\n beforeDestroy: function beforeDestroy() {\n this.clearProgressTimer();\n },\n\n methods: {\n onStart: function onStart(file) {\n var targetItem = fileToObject(file);\n targetItem.status = 'uploading';\n var nextFileList = this.sFileList.concat();\n var fileIndex = findIndex(nextFileList, function (_ref) {\n var uid = _ref.uid;\n return uid === targetItem.uid;\n });\n if (fileIndex === -1) {\n nextFileList.push(targetItem);\n } else {\n nextFileList[fileIndex] = targetItem;\n }\n this.onChange({\n file: targetItem,\n fileList: nextFileList\n });\n // fix ie progress\n if (!window.File || process.env.TEST_IE) {\n this.autoUpdateProgress(0, targetItem);\n }\n },\n onSuccess: function onSuccess(response, file, xhr) {\n this.clearProgressTimer();\n try {\n if (typeof response === 'string') {\n response = JSON.parse(response);\n }\n } catch (e) {\n /* do nothing */\n }\n var fileList = this.sFileList;\n var targetItem = getFileItem(file, fileList);\n // removed\n if (!targetItem) {\n return;\n }\n targetItem.status = 'done';\n targetItem.response = response;\n targetItem.xhr = xhr;\n this.onChange({\n file: _extends({}, targetItem),\n fileList: fileList\n });\n },\n onProgress: function onProgress(e, file) {\n var fileList = this.sFileList;\n var targetItem = getFileItem(file, fileList);\n // removed\n if (!targetItem) {\n return;\n }\n targetItem.percent = e.percent;\n this.onChange({\n event: e,\n file: _extends({}, targetItem),\n fileList: this.sFileList\n });\n },\n onError: function onError(error, response, file) {\n this.clearProgressTimer();\n var fileList = this.sFileList;\n var targetItem = getFileItem(file, fileList);\n // removed\n if (!targetItem) {\n return;\n }\n targetItem.error = error;\n targetItem.response = response;\n targetItem.status = 'error';\n this.onChange({\n file: _extends({}, targetItem),\n fileList: fileList\n });\n },\n onReject: function onReject(fileList) {\n this.$emit('reject', fileList);\n },\n handleRemove: function handleRemove(file) {\n var _this = this;\n\n var onRemove = this.remove;\n var fileList = this.$data.sFileList;\n\n\n Promise.resolve(typeof onRemove === 'function' ? onRemove(file) : onRemove).then(function (ret) {\n // Prevent removing file\n if (ret === false) {\n return;\n }\n\n var removedFileList = removeFileItem(file, fileList);\n\n if (removedFileList) {\n file.status = 'removed'; // eslint-disable-line\n\n if (_this.upload) {\n _this.upload.abort(file);\n }\n\n _this.onChange({\n file: file,\n fileList: removedFileList\n });\n }\n });\n },\n handleManualRemove: function handleManualRemove(file) {\n if (this.$refs.uploadRef) {\n this.$refs.uploadRef.abort(file);\n }\n this.handleRemove(file);\n },\n onChange: function onChange(info) {\n if (!hasProp(this, 'fileList')) {\n this.setState({ sFileList: info.fileList });\n }\n this.$emit('change', info);\n },\n onFileDrop: function onFileDrop(e) {\n this.setState({\n dragState: e.type\n });\n },\n reBeforeUpload: function reBeforeUpload(file, fileList) {\n var beforeUpload = this.$props.beforeUpload;\n var stateFileList = this.$data.sFileList;\n\n if (!beforeUpload) {\n return true;\n }\n var result = beforeUpload(file, fileList);\n if (result === false) {\n this.onChange({\n file: file,\n fileList: uniqBy(stateFileList.concat(fileList.map(fileToObject)), function (item) {\n return item.uid;\n })\n });\n return false;\n }\n if (result && result.then) {\n return result;\n }\n return true;\n },\n clearProgressTimer: function clearProgressTimer() {\n clearInterval(this.progressTimer);\n },\n autoUpdateProgress: function autoUpdateProgress(_, file) {\n var _this2 = this;\n\n var getPercent = genPercentAdd();\n var curPercent = 0;\n this.clearProgressTimer();\n this.progressTimer = setInterval(function () {\n curPercent = getPercent(curPercent);\n _this2.onProgress({\n percent: curPercent * 100\n }, file);\n }, 200);\n },\n renderUploadList: function renderUploadList(locale) {\n var h = this.$createElement;\n\n var _getOptionProps = getOptionProps(this),\n _getOptionProps$showU = _getOptionProps.showUploadList,\n showUploadList = _getOptionProps$showU === undefined ? {} : _getOptionProps$showU,\n listType = _getOptionProps.listType,\n previewFile = _getOptionProps.previewFile,\n disabled = _getOptionProps.disabled,\n propLocale = _getOptionProps.locale;\n\n var showRemoveIcon = showUploadList.showRemoveIcon,\n showPreviewIcon = showUploadList.showPreviewIcon,\n showDownloadIcon = showUploadList.showDownloadIcon;\n var fileList = this.$data.sFileList;\n\n var uploadListProps = {\n props: {\n listType: listType,\n items: fileList,\n previewFile: previewFile,\n showRemoveIcon: !disabled && showRemoveIcon,\n showPreviewIcon: showPreviewIcon,\n showDownloadIcon: showDownloadIcon,\n locale: _extends({}, locale, propLocale)\n },\n on: _extends({\n remove: this.handleManualRemove\n }, pick(getListeners(this), ['download', 'preview']))\n };\n return h(UploadList, uploadListProps);\n }\n },\n render: function render() {\n var _classNames2;\n\n var h = arguments[0];\n\n var _getOptionProps2 = getOptionProps(this),\n customizePrefixCls = _getOptionProps2.prefixCls,\n showUploadList = _getOptionProps2.showUploadList,\n listType = _getOptionProps2.listType,\n type = _getOptionProps2.type,\n disabled = _getOptionProps2.disabled;\n\n var _$data = this.$data,\n fileList = _$data.sFileList,\n dragState = _$data.dragState;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('upload', customizePrefixCls);\n\n var vcUploadProps = {\n props: _extends({}, this.$props, {\n prefixCls: prefixCls,\n beforeUpload: this.reBeforeUpload\n }),\n on: {\n start: this.onStart,\n error: this.onError,\n progress: this.onProgress,\n success: this.onSuccess,\n reject: this.onReject\n },\n ref: 'uploadRef',\n attrs: _extends({}, this.$attrs)\n };\n var children = this.$slots['default'];\n // Remove id to avoid open by label when trigger is hidden\n // https://github.com/ant-design/ant-design/issues/14298\n if (!children || disabled) {\n delete vcUploadProps.props.id;\n delete vcUploadProps.attrs.id;\n }\n var uploadList = showUploadList ? h(LocaleReceiver, {\n attrs: {\n componentName: 'Upload',\n defaultLocale: defaultLocale.Upload\n },\n scopedSlots: { 'default': this.renderUploadList }\n }) : null;\n\n if (type === 'drag') {\n var _classNames;\n\n var dragCls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-drag', true), _defineProperty(_classNames, prefixCls + '-drag-uploading', fileList.some(function (file) {\n return file.status === 'uploading';\n })), _defineProperty(_classNames, prefixCls + '-drag-hover', dragState === 'dragover'), _defineProperty(_classNames, prefixCls + '-disabled', disabled), _classNames));\n return h('span', [h(\n 'div',\n {\n 'class': dragCls,\n on: {\n 'drop': this.onFileDrop,\n 'dragover': this.onFileDrop,\n 'dragleave': this.onFileDrop\n }\n },\n [h(\n VcUpload,\n _mergeJSXProps([vcUploadProps, { 'class': prefixCls + '-btn' }]),\n [h(\n 'div',\n { 'class': prefixCls + '-drag-container' },\n [children]\n )]\n )]\n ), uploadList]);\n }\n\n var uploadButtonCls = classNames(prefixCls, (_classNames2 = {}, _defineProperty(_classNames2, prefixCls + '-select', true), _defineProperty(_classNames2, prefixCls + '-select-' + listType, true), _defineProperty(_classNames2, prefixCls + '-disabled', disabled), _classNames2));\n\n var uploadButton = h(\n 'div',\n { 'class': uploadButtonCls, style: children ? undefined : { display: 'none' } },\n [h(\n VcUpload,\n vcUploadProps,\n [children]\n )]\n );\n\n if (listType === 'picture-card') {\n return h(\n 'span',\n { 'class': prefixCls + '-picture-card-wrapper' },\n [uploadList, uploadButton]\n );\n }\n return h('span', [uploadButton, uploadList]);\n }\n};","import Upload from './Upload';\nimport Dragger from './Dragger';\nimport Base from '../base';\n\nexport { UploadProps, UploadListProps, UploadChangeParam } from './interface';\n\nUpload.Dragger = Dragger;\n\n/* istanbul ignore next */\nUpload.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Upload.name, Upload);\n Vue.component(Dragger.name, Dragger);\n};\n\nexport default Upload;","import packageInfo from '../../package.json';\n\nexport default packageInfo.version;","import _extends from 'babel-runtime/helpers/extends';\nimport PropTypes from '../../_util/vue-types';\n\nvar IProps = {\n width: PropTypes.any,\n height: PropTypes.any,\n defaultOpen: PropTypes.bool,\n firstEnter: PropTypes.bool,\n open: PropTypes.bool,\n prefixCls: PropTypes.string,\n placement: PropTypes.string,\n level: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),\n levelMove: PropTypes.oneOfType([PropTypes.number, PropTypes.func, PropTypes.array]),\n ease: PropTypes.string,\n duration: PropTypes.string,\n handler: PropTypes.any,\n showMask: PropTypes.bool,\n maskStyle: PropTypes.object,\n className: PropTypes.string,\n wrapStyle: PropTypes.object,\n maskClosable: PropTypes.bool,\n afterVisibleChange: PropTypes.func,\n keyboard: PropTypes.bool\n};\n\nvar IDrawerProps = _extends({}, IProps, {\n wrapperClassName: PropTypes.string,\n forceRender: PropTypes.bool,\n getContainer: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.object, PropTypes.bool])\n});\n\nvar IDrawerChildProps = _extends({}, IProps, {\n getContainer: PropTypes.func,\n getOpenCount: PropTypes.func,\n switchScrollingEffect: PropTypes.func\n});\n\nexport { IDrawerProps, IDrawerChildProps };","export function dataToArray(vars) {\n if (Array.isArray(vars)) {\n return vars;\n }\n return [vars];\n}\nvar transitionEndObject = {\n transition: 'transitionend',\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd otransitionend'\n};\nexport var transitionStr = Object.keys(transitionEndObject).filter(function (key) {\n if (typeof document === 'undefined') {\n return false;\n }\n var html = document.getElementsByTagName('html')[0];\n return key in (html ? html.style : {});\n})[0];\nexport var transitionEnd = transitionEndObject[transitionStr];\n\nexport function addEventListener(target, eventType, callback, options) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, options);\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n }\n}\n\nexport function removeEventListener(target, eventType, callback, options) {\n if (target.removeEventListener) {\n target.removeEventListener(eventType, callback, options);\n } else if (target.attachEvent) {\n target.detachEvent('on' + eventType, callback);\n }\n}\n\nexport function transformArguments(arg, cb) {\n var result = void 0;\n if (typeof arg === 'function') {\n result = arg(cb);\n } else {\n result = arg;\n }\n if (Array.isArray(result)) {\n if (result.length === 2) {\n return result;\n }\n return [result[0], result[1]];\n }\n return [result];\n}\n\nexport var isNumeric = function isNumeric(value) {\n return !isNaN(parseFloat(value)) && isFinite(value); // eslint-disable-line\n};\n\nexport var windowIsUndefined = !(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nexport var getTouchParentScroll = function getTouchParentScroll(root, currentTarget, differX, differY) {\n if (!currentTarget || currentTarget === document || currentTarget instanceof Document) {\n return false;\n }\n // root 为 drawer-content 设定了 overflow, 判断为 root 的 parent 时结束滚动;\n if (currentTarget === root.parentNode) {\n return true;\n }\n\n var isY = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);\n var isX = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);\n\n var scrollY = currentTarget.scrollHeight - currentTarget.clientHeight;\n var scrollX = currentTarget.scrollWidth - currentTarget.clientWidth;\n\n var style = document.defaultView.getComputedStyle(currentTarget);\n var overflowY = style.overflowY === 'auto' || style.overflowY === 'scroll';\n var overflowX = style.overflowX === 'auto' || style.overflowX === 'scroll';\n\n var y = scrollY && overflowY;\n var x = scrollX && overflowX;\n\n if (isY && (!y || y && (currentTarget.scrollTop >= scrollY && differY < 0 || currentTarget.scrollTop <= 0 && differY > 0)) || isX && (!x || x && (currentTarget.scrollLeft >= scrollX && scrollX < 0 || currentTarget.scrollLeft <= 0 && scrollX > 0))) {\n return getTouchParentScroll(root, currentTarget.parentNode, differX, differY);\n }\n return false;\n};","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classnames from 'classnames';\nimport Vue from 'vue';\nimport ref from 'vue-ref';\nimport BaseMixin from '../../_util/BaseMixin';\nimport { initDefaultProps, getEvents, getListeners } from '../../_util/props-util';\nimport { cloneElement } from '../../_util/vnode';\nimport getScrollBarSize from '../../_util/getScrollBarSize';\nimport { IDrawerProps } from './IDrawerPropTypes';\nimport KeyCode from '../../_util/KeyCode';\nimport { dataToArray, transitionEnd, transitionStr, addEventListener, removeEventListener, transformArguments, isNumeric } from './utils';\nimport Portal from '../../_util/Portal';\n\nfunction noop() {}\n\nvar currentDrawer = {};\nvar windowIsUndefined = !(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nVue.use(ref, { name: 'ant-ref' });\nvar Drawer = {\n mixins: [BaseMixin],\n props: initDefaultProps(IDrawerProps, {\n prefixCls: 'drawer',\n placement: 'left',\n getContainer: 'body',\n level: 'all',\n duration: '.3s',\n ease: 'cubic-bezier(0.78, 0.14, 0.15, 0.86)',\n firstEnter: false, // 记录首次进入.\n showMask: true,\n handler: true,\n maskStyle: {},\n wrapperClassName: '',\n className: ''\n }),\n data: function data() {\n this.levelDom = [];\n this.contentDom = null;\n this.maskDom = null;\n this.handlerdom = null;\n this.mousePos = null;\n this.sFirstEnter = this.firstEnter;\n this.timeout = null;\n this.children = null;\n this.drawerId = Number((Date.now() + Math.random()).toString().replace('.', Math.round(Math.random() * 9))).toString(16);\n var open = this.open !== undefined ? this.open : !!this.defaultOpen;\n currentDrawer[this.drawerId] = open;\n this.orignalOpen = this.open;\n this.preProps = _extends({}, this.$props);\n return {\n sOpen: open\n };\n },\n mounted: function mounted() {\n var _this = this;\n\n this.$nextTick(function () {\n if (!windowIsUndefined) {\n var passiveSupported = false;\n window.addEventListener('test', null, Object.defineProperty({}, 'passive', {\n get: function get() {\n passiveSupported = true;\n return null;\n }\n }));\n _this.passive = passiveSupported ? { passive: false } : false;\n }\n var open = _this.getOpen();\n if (_this.handler || open || _this.sFirstEnter) {\n _this.getDefault(_this.$props);\n if (open) {\n _this.isOpenChange = true;\n _this.$nextTick(function () {\n _this.domFocus();\n });\n }\n _this.$forceUpdate();\n }\n });\n },\n\n watch: {\n open: function (_open) {\n function open(_x) {\n return _open.apply(this, arguments);\n }\n\n open.toString = function () {\n return _open.toString();\n };\n\n return open;\n }(function (val) {\n var _this2 = this;\n\n if (val !== undefined && val !== this.preProps.open) {\n this.isOpenChange = true;\n // 没渲染 dom 时,获取默认数据;\n if (!this.container) {\n this.getDefault(this.$props);\n }\n this.setState({\n sOpen: open\n });\n }\n this.preProps.open = val;\n if (val) {\n this.$nextTick(function () {\n _this2.domFocus();\n });\n }\n }),\n placement: function placement(val) {\n if (val !== this.preProps.placement) {\n // test 的 bug, 有动画过场,删除 dom\n this.contentDom = null;\n }\n this.preProps.placement = val;\n },\n level: function level(val) {\n if (this.preProps.level !== val) {\n this.getParentAndLevelDom(this.$props);\n }\n this.preProps.level = val;\n }\n },\n updated: function updated() {\n var _this3 = this;\n\n this.$nextTick(function () {\n // dom 没渲染时,重走一遍。\n if (!_this3.sFirstEnter && _this3.container) {\n _this3.$forceUpdate();\n _this3.sFirstEnter = true;\n }\n });\n },\n beforeDestroy: function beforeDestroy() {\n delete currentDrawer[this.drawerId];\n delete this.isOpenChange;\n if (this.container) {\n if (this.sOpen) {\n this.setLevelDomTransform(false, true);\n }\n document.body.style.overflow = '';\n }\n this.sFirstEnter = false;\n clearTimeout(this.timeout);\n },\n\n methods: {\n domFocus: function domFocus() {\n if (this.dom) {\n this.dom.focus();\n }\n },\n onKeyDown: function onKeyDown(e) {\n if (e.keyCode === KeyCode.ESC) {\n e.stopPropagation();\n this.$emit('close', e);\n }\n },\n onMaskTouchEnd: function onMaskTouchEnd(e) {\n this.$emit('close', e);\n this.onTouchEnd(e, true);\n },\n onIconTouchEnd: function onIconTouchEnd(e) {\n this.$emit('handleClick', e);\n this.onTouchEnd(e);\n },\n onTouchEnd: function onTouchEnd(e, close) {\n if (this.open !== undefined) {\n return;\n }\n var open = close || this.sOpen;\n this.isOpenChange = true;\n this.setState({\n sOpen: !open\n });\n },\n onWrapperTransitionEnd: function onWrapperTransitionEnd(e) {\n if (e.target === this.contentWrapper && e.propertyName.match(/transform$/)) {\n var _open2 = this.getOpen();\n this.dom.style.transition = '';\n if (!_open2 && this.getCurrentDrawerSome()) {\n document.body.style.overflowX = '';\n if (this.maskDom) {\n this.maskDom.style.left = '';\n this.maskDom.style.width = '';\n }\n }\n if (this.afterVisibleChange) {\n this.afterVisibleChange(!!_open2);\n }\n }\n },\n getDefault: function getDefault(props) {\n this.getParentAndLevelDom(props);\n if (props.getContainer || props.parent) {\n this.container = this.defaultGetContainer();\n }\n },\n getCurrentDrawerSome: function getCurrentDrawerSome() {\n return !Object.keys(currentDrawer).some(function (key) {\n return currentDrawer[key];\n });\n },\n getSelfContainer: function getSelfContainer() {\n return this.container;\n },\n getParentAndLevelDom: function getParentAndLevelDom(props) {\n var _this4 = this;\n\n if (windowIsUndefined) {\n return;\n }\n var level = props.level,\n getContainer = props.getContainer;\n\n this.levelDom = [];\n if (getContainer) {\n if (typeof getContainer === 'string') {\n var dom = document.querySelectorAll(getContainer)[0];\n this.parent = dom;\n }\n if (typeof getContainer === 'function') {\n this.parent = getContainer();\n }\n if ((typeof getContainer === 'undefined' ? 'undefined' : _typeof(getContainer)) === 'object' && getContainer instanceof window.HTMLElement) {\n this.parent = getContainer;\n }\n }\n if (!getContainer && this.container) {\n this.parent = this.container.parentNode;\n }\n if (level === 'all') {\n var children = Array.prototype.slice.call(this.parent.children);\n children.forEach(function (child) {\n if (child.nodeName !== 'SCRIPT' && child.nodeName !== 'STYLE' && child.nodeName !== 'LINK' && child !== _this4.container) {\n _this4.levelDom.push(child);\n }\n });\n } else if (level) {\n dataToArray(level).forEach(function (key) {\n document.querySelectorAll(key).forEach(function (item) {\n _this4.levelDom.push(item);\n });\n });\n }\n },\n setLevelDomTransform: function setLevelDomTransform(open, openTransition, placementName, value) {\n var _this5 = this;\n\n var _$props = this.$props,\n placement = _$props.placement,\n levelMove = _$props.levelMove,\n duration = _$props.duration,\n ease = _$props.ease,\n getContainer = _$props.getContainer;\n\n if (!windowIsUndefined) {\n this.levelDom.forEach(function (dom) {\n if (_this5.isOpenChange || openTransition) {\n /* eslint no-param-reassign: \"error\" */\n dom.style.transition = 'transform ' + duration + ' ' + ease;\n addEventListener(dom, transitionEnd, _this5.trnasitionEnd);\n var levelValue = open ? value : 0;\n if (levelMove) {\n var $levelMove = transformArguments(levelMove, { target: dom, open: open });\n levelValue = open ? $levelMove[0] : $levelMove[1] || 0;\n }\n var $value = typeof levelValue === 'number' ? levelValue + 'px' : levelValue;\n var placementPos = placement === 'left' || placement === 'top' ? $value : '-' + $value;\n dom.style.transform = levelValue ? placementName + '(' + placementPos + ')' : '';\n dom.style.msTransform = levelValue ? placementName + '(' + placementPos + ')' : '';\n }\n });\n // 处理 body 滚动\n if (getContainer === 'body') {\n var eventArray = ['touchstart'];\n var domArray = [document.body, this.maskDom, this.handlerdom, this.contentDom];\n var right = document.body.scrollHeight > (window.innerHeight || document.documentElement.clientHeight) && window.innerWidth > document.body.offsetWidth ? getScrollBarSize(1) : 0;\n var widthTransition = 'width ' + duration + ' ' + ease;\n var trannsformTransition = 'transform ' + duration + ' ' + ease;\n if (open && document.body.style.overflow !== 'hidden') {\n document.body.style.overflow = 'hidden';\n if (right) {\n document.body.style.position = 'relative';\n document.body.style.width = 'calc(100% - ' + right + 'px)';\n this.dom.style.transition = 'none';\n switch (placement) {\n case 'right':\n this.dom.style.transform = 'translateX(-' + right + 'px)';\n this.dom.style.msTransform = 'translateX(-' + right + 'px)';\n break;\n case 'top':\n case 'bottom':\n this.dom.style.width = 'calc(100% - ' + right + 'px)';\n this.dom.style.transform = 'translateZ(0)';\n break;\n default:\n break;\n }\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this5.dom.style.transition = trannsformTransition + ',' + widthTransition;\n _this5.dom.style.width = '';\n _this5.dom.style.transform = '';\n _this5.dom.style.msTransform = '';\n });\n }\n // 手机禁滚\n domArray.forEach(function (item, i) {\n if (!item) {\n return;\n }\n addEventListener(item, eventArray[i] || 'touchmove', i ? _this5.removeMoveHandler : _this5.removeStartHandler, _this5.passive);\n });\n } else if (this.getCurrentDrawerSome()) {\n document.body.style.overflow = '';\n if ((this.isOpenChange || openTransition) && right) {\n document.body.style.position = '';\n document.body.style.width = '';\n if (transitionStr) {\n document.body.style.overflowX = 'hidden';\n }\n this.dom.style.transition = 'none';\n var heightTransition = void 0;\n switch (placement) {\n case 'right':\n {\n this.dom.style.transform = 'translateX(' + right + 'px)';\n this.dom.style.msTransform = 'translateX(' + right + 'px)';\n this.dom.style.width = '100%';\n widthTransition = 'width 0s ' + ease + ' ' + duration;\n if (this.maskDom) {\n this.maskDom.style.left = '-' + right + 'px';\n this.maskDom.style.width = 'calc(100% + ' + right + 'px)';\n }\n break;\n }\n case 'top':\n case 'bottom':\n {\n this.dom.style.width = 'calc(100% + ' + right + 'px)';\n this.dom.style.height = '100%';\n this.dom.style.transform = 'translateZ(0)';\n heightTransition = 'height 0s ' + ease + ' ' + duration;\n break;\n }\n default:\n break;\n }\n clearTimeout(this.timeout);\n this.timeout = setTimeout(function () {\n _this5.dom.style.transition = trannsformTransition + ',' + (heightTransition ? heightTransition + ',' : '') + widthTransition;\n _this5.dom.style.transform = '';\n _this5.dom.style.msTransform = '';\n _this5.dom.style.width = '';\n _this5.dom.style.height = '';\n });\n }\n domArray.forEach(function (item, i) {\n if (!item) {\n return;\n }\n removeEventListener(item, eventArray[i] || 'touchmove', i ? _this5.removeMoveHandler : _this5.removeStartHandler, _this5.passive);\n });\n }\n }\n }\n\n var _getListeners = getListeners(this),\n change = _getListeners.change;\n\n if (change && this.isOpenChange && this.sFirstEnter) {\n change(open);\n this.isOpenChange = false;\n }\n },\n getChildToRender: function getChildToRender(open) {\n var _classnames,\n _this6 = this;\n\n var h = this.$createElement;\n var _$props2 = this.$props,\n className = _$props2.className,\n prefixCls = _$props2.prefixCls,\n placement = _$props2.placement,\n handler = _$props2.handler,\n showMask = _$props2.showMask,\n maskStyle = _$props2.maskStyle,\n width = _$props2.width,\n height = _$props2.height,\n wrapStyle = _$props2.wrapStyle,\n keyboard = _$props2.keyboard,\n maskClosable = _$props2.maskClosable;\n\n var children = this.$slots['default'];\n var wrapperClassname = classnames(prefixCls, (_classnames = {}, _defineProperty(_classnames, prefixCls + '-' + placement, true), _defineProperty(_classnames, prefixCls + '-open', open), _defineProperty(_classnames, className, !!className), _defineProperty(_classnames, 'no-mask', !showMask), _classnames));\n var isOpenChange = this.isOpenChange;\n var isHorizontal = placement === 'left' || placement === 'right';\n var placementName = 'translate' + (isHorizontal ? 'X' : 'Y');\n // 百分比与像素动画不同步,第一次打用后全用像素动画。\n // const defaultValue = !this.contentDom || !level ? '100%' : `${value}px`;\n var placementPos = placement === 'left' || placement === 'top' ? '-100%' : '100%';\n var transform = open ? '' : placementName + '(' + placementPos + ')';\n if (isOpenChange === undefined || isOpenChange) {\n var contentValue = this.contentDom ? this.contentDom.getBoundingClientRect()[isHorizontal ? 'width' : 'height'] : 0;\n var value = (isHorizontal ? width : height) || contentValue;\n this.setLevelDomTransform(open, false, placementName, value);\n }\n var handlerChildren = void 0;\n if (handler !== false) {\n var handlerDefalut = h(\n 'div',\n { 'class': 'drawer-handle' },\n [h('i', { 'class': 'drawer-handle-icon' })]\n );\n var handlerSlot = this.handler;\n\n var handlerSlotVnode = handlerSlot && handlerSlot[0] || handlerDefalut;\n\n var _getEvents = getEvents(handlerSlotVnode),\n handleIconClick = _getEvents.click;\n\n handlerChildren = cloneElement(handlerSlotVnode, {\n on: {\n click: function click(e) {\n handleIconClick && handleIconClick();\n _this6.onIconTouchEnd(e);\n }\n },\n directives: [{\n name: 'ant-ref',\n value: function value(c) {\n _this6.handlerdom = c;\n }\n }]\n });\n }\n var domContProps = {\n 'class': wrapperClassname,\n directives: [{\n name: 'ant-ref',\n value: function value(c) {\n _this6.dom = c;\n }\n }],\n on: {\n transitionend: this.onWrapperTransitionEnd,\n keydown: open && keyboard ? this.onKeyDown : noop\n },\n style: wrapStyle\n };\n var directivesMaskDom = [{\n name: 'ant-ref',\n value: function value(c) {\n _this6.maskDom = c;\n }\n }];\n var directivesContentWrapper = [{\n name: 'ant-ref',\n value: function value(c) {\n _this6.contentWrapper = c;\n }\n }];\n var directivesContentDom = [{\n name: 'ant-ref',\n value: function value(c) {\n _this6.contentDom = c;\n }\n }];\n return h(\n 'div',\n _mergeJSXProps([domContProps, {\n attrs: { tabIndex: -1 }\n }]),\n [showMask && h('div', _mergeJSXProps([{\n key: open // 第二次渲染时虚拟DOM没有改变,没有出发dom更新,使用key强制更新 https://github.com/vueComponent/ant-design-vue/issues/2407\n , 'class': prefixCls + '-mask',\n on: {\n 'click': maskClosable ? this.onMaskTouchEnd : noop\n },\n\n style: maskStyle\n }, { directives: directivesMaskDom }])), h(\n 'div',\n _mergeJSXProps([{\n 'class': prefixCls + '-content-wrapper',\n style: {\n transform: transform,\n msTransform: transform,\n width: isNumeric(width) ? width + 'px' : width,\n height: isNumeric(height) ? height + 'px' : height\n }\n }, { directives: directivesContentWrapper }]),\n [h(\n 'div',\n _mergeJSXProps([{\n 'class': prefixCls + '-content'\n }, { directives: directivesContentDom }, {\n on: {\n 'touchstart': open ? this.removeStartHandler : noop,\n 'touchmove': open ? this.removeMoveHandler : noop\n }\n }]),\n [children]\n ), handlerChildren]\n )]\n );\n },\n getOpen: function getOpen() {\n return this.open !== undefined ? this.open : this.sOpen;\n },\n getTouchParentScroll: function getTouchParentScroll(root, currentTarget, differX, differY) {\n if (!currentTarget || currentTarget === document) {\n return false;\n }\n // root 为 drawer-content 设定了 overflow, 判断为 root 的 parent 时结束滚动;\n if (currentTarget === root.parentNode) {\n return true;\n }\n\n var isY = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differY);\n var isX = Math.max(Math.abs(differX), Math.abs(differY)) === Math.abs(differX);\n\n var scrollY = currentTarget.scrollHeight - currentTarget.clientHeight;\n var scrollX = currentTarget.scrollWidth - currentTarget.clientWidth;\n /**\n * \n * 在没设定 overflow: auto 或 scroll 时,currentTarget 里获取不到 scrollTop 或 scrollLeft,\n * 预先用 scrollTo 来滚动,如果取出的值跟滚动前取出不同,则 currnetTarget 被设定了 overflow; 否则就是上面这种。\n */\n var t = currentTarget.scrollTop;\n var l = currentTarget.scrollLeft;\n if (currentTarget.scrollTo) {\n currentTarget.scrollTo(currentTarget.scrollLeft + 1, currentTarget.scrollTop + 1);\n }\n var currentT = currentTarget.scrollTop;\n var currentL = currentTarget.scrollLeft;\n if (currentTarget.scrollTo) {\n currentTarget.scrollTo(currentTarget.scrollLeft - 1, currentTarget.scrollTop - 1);\n }\n if (isY && (!scrollY || !(currentT - t) || scrollY && (currentTarget.scrollTop >= scrollY && differY < 0 || currentTarget.scrollTop <= 0 && differY > 0)) || isX && (!scrollX || !(currentL - l) || scrollX && (currentTarget.scrollLeft >= scrollX && differX < 0 || currentTarget.scrollLeft <= 0 && differX > 0))) {\n return this.getTouchParentScroll(root, currentTarget.parentNode, differX, differY);\n }\n return false;\n },\n removeStartHandler: function removeStartHandler(e) {\n if (e.touches.length > 1) {\n return;\n }\n this.startPos = {\n x: e.touches[0].clientX,\n y: e.touches[0].clientY\n };\n },\n removeMoveHandler: function removeMoveHandler(e) {\n if (e.changedTouches.length > 1) {\n return;\n }\n var currentTarget = e.currentTarget;\n var differX = e.changedTouches[0].clientX - this.startPos.x;\n var differY = e.changedTouches[0].clientY - this.startPos.y;\n if (currentTarget === this.maskDom || currentTarget === this.handlerdom || currentTarget === this.contentDom && this.getTouchParentScroll(currentTarget, e.target, differX, differY)) {\n e.preventDefault();\n }\n },\n trnasitionEnd: function trnasitionEnd(e) {\n removeEventListener(e.target, transitionEnd, this.trnasitionEnd);\n e.target.style.transition = '';\n },\n defaultGetContainer: function defaultGetContainer() {\n if (windowIsUndefined) {\n return null;\n }\n var container = document.createElement('div');\n this.parent.appendChild(container);\n if (this.wrapperClassName) {\n container.className = this.wrapperClassName;\n }\n return container;\n }\n },\n\n render: function render() {\n var _this7 = this;\n\n var h = arguments[0];\n var _$props3 = this.$props,\n getContainer = _$props3.getContainer,\n wrapperClassName = _$props3.wrapperClassName,\n handler = _$props3.handler,\n forceRender = _$props3.forceRender;\n\n var open = this.getOpen();\n var portal = null;\n currentDrawer[this.drawerId] = open ? this.container : open;\n var children = this.getChildToRender(this.sFirstEnter ? open : false);\n if (!getContainer) {\n var directives = [{\n name: 'ant-ref',\n value: function value(c) {\n _this7.container = c;\n }\n }];\n return h(\n 'div',\n _mergeJSXProps([{ 'class': wrapperClassName }, { directives: directives }]),\n [children]\n );\n }\n if (!this.container || !open && !this.sFirstEnter) {\n return null;\n }\n // 如果有 handler 为内置强制渲染;\n var $forceRender = !!handler || forceRender;\n if ($forceRender || open || this.dom) {\n portal = h(Portal, {\n attrs: { getContainer: this.getSelfContainer, children: children }\n });\n }\n return portal;\n }\n};\n\nexport default Drawer;","// base in 1.7.7\n// export this package's api\nimport Drawer from './Drawer';\n\nexport default Drawer;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';\nimport _extends from 'babel-runtime/helpers/extends';\nimport classnames from 'classnames';\nimport omit from 'omit.js';\nimport VcDrawer from '../vc-drawer/src';\nimport PropTypes from '../_util/vue-types';\nimport BaseMixin from '../_util/BaseMixin';\nimport Icon from '../icon';\nimport { getComponentFromProp, getOptionProps, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\n\nvar Drawer = {\n name: 'ADrawer',\n props: {\n closable: PropTypes.bool.def(true),\n destroyOnClose: PropTypes.bool,\n getContainer: PropTypes.any,\n maskClosable: PropTypes.bool.def(true),\n mask: PropTypes.bool.def(true),\n maskStyle: PropTypes.object,\n wrapStyle: PropTypes.object,\n bodyStyle: PropTypes.object,\n headerStyle: PropTypes.object,\n drawerStyle: PropTypes.object,\n title: PropTypes.any,\n visible: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).def(256),\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).def(256),\n zIndex: PropTypes.number,\n prefixCls: PropTypes.string,\n placement: PropTypes.oneOf(['top', 'right', 'bottom', 'left']).def('right'),\n level: PropTypes.any.def(null),\n wrapClassName: PropTypes.string, // not use class like react, vue will add class to root dom\n handle: PropTypes.any,\n afterVisibleChange: PropTypes.func,\n keyboard: PropTypes.bool.def(true)\n },\n mixins: [BaseMixin],\n data: function data() {\n this.destroyClose = false;\n this.preVisible = this.$props.visible;\n return {\n _push: false\n };\n },\n\n inject: {\n parentDrawer: {\n 'default': function _default() {\n return null;\n }\n },\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n provide: function provide() {\n return {\n parentDrawer: this\n };\n },\n mounted: function mounted() {\n // fix: delete drawer in child and re-render, no push started.\n // {show && }\n var visible = this.visible;\n\n if (visible && this.parentDrawer) {\n this.parentDrawer.push();\n }\n },\n updated: function updated() {\n var _this = this;\n\n this.$nextTick(function () {\n if (_this.preVisible !== _this.visible && _this.parentDrawer) {\n if (_this.visible) {\n _this.parentDrawer.push();\n } else {\n _this.parentDrawer.pull();\n }\n }\n _this.preVisible = _this.visible;\n });\n },\n beforeDestroy: function beforeDestroy() {\n // unmount drawer in child, clear push.\n if (this.parentDrawer) {\n this.parentDrawer.pull();\n }\n },\n\n methods: {\n domFocus: function domFocus() {\n if (this.$refs.vcDrawer) {\n this.$refs.vcDrawer.domFocus();\n }\n },\n close: function close(e) {\n this.$emit('close', e);\n },\n\n // onMaskClick(e) {\n // if (!this.maskClosable) {\n // return;\n // }\n // this.close(e);\n // },\n push: function push() {\n this.setState({\n _push: true\n });\n },\n pull: function pull() {\n var _this2 = this;\n\n this.setState({\n _push: false\n }, function () {\n _this2.domFocus();\n });\n },\n onDestroyTransitionEnd: function onDestroyTransitionEnd() {\n var isDestroyOnClose = this.getDestroyOnClose();\n if (!isDestroyOnClose) {\n return;\n }\n if (!this.visible) {\n this.destroyClose = true;\n this.$forceUpdate();\n }\n },\n getDestroyOnClose: function getDestroyOnClose() {\n return this.destroyOnClose && !this.visible;\n },\n\n // get drawar push width or height\n getPushTransform: function getPushTransform(placement) {\n if (placement === 'left' || placement === 'right') {\n return 'translateX(' + (placement === 'left' ? 180 : -180) + 'px)';\n }\n if (placement === 'top' || placement === 'bottom') {\n return 'translateY(' + (placement === 'top' ? 180 : -180) + 'px)';\n }\n },\n getRcDrawerStyle: function getRcDrawerStyle() {\n var _$props = this.$props,\n zIndex = _$props.zIndex,\n placement = _$props.placement,\n wrapStyle = _$props.wrapStyle;\n var push = this.$data._push;\n\n return _extends({\n zIndex: zIndex,\n transform: push ? this.getPushTransform(placement) : undefined\n }, wrapStyle);\n },\n renderHeader: function renderHeader(prefixCls) {\n var h = this.$createElement;\n var _$props2 = this.$props,\n closable = _$props2.closable,\n headerStyle = _$props2.headerStyle;\n\n var title = getComponentFromProp(this, 'title');\n if (!title && !closable) {\n return null;\n }\n\n var headerClassName = title ? prefixCls + '-header' : prefixCls + '-header-no-title';\n return h(\n 'div',\n { 'class': headerClassName, style: headerStyle },\n [title && h(\n 'div',\n { 'class': prefixCls + '-title' },\n [title]\n ), closable ? this.renderCloseIcon(prefixCls) : null]\n );\n },\n renderCloseIcon: function renderCloseIcon(prefixCls) {\n var h = this.$createElement;\n var closable = this.closable;\n\n return closable && h(\n 'button',\n { key: 'closer', on: {\n 'click': this.close\n },\n attrs: { 'aria-label': 'Close' },\n 'class': prefixCls + '-close' },\n [h(Icon, {\n attrs: { type: 'close' }\n })]\n );\n },\n\n // render drawer body dom\n renderBody: function renderBody(prefixCls) {\n var h = this.$createElement;\n\n if (this.destroyClose && !this.visible) {\n return null;\n }\n this.destroyClose = false;\n var _$props3 = this.$props,\n bodyStyle = _$props3.bodyStyle,\n drawerStyle = _$props3.drawerStyle;\n\n\n var containerStyle = {};\n\n var isDestroyOnClose = this.getDestroyOnClose();\n if (isDestroyOnClose) {\n // Increase the opacity transition, delete children after closing.\n containerStyle.opacity = 0;\n containerStyle.transition = 'opacity .3s';\n }\n\n return h(\n 'div',\n {\n 'class': prefixCls + '-wrapper-body',\n style: _extends({}, containerStyle, drawerStyle),\n on: {\n 'transitionend': this.onDestroyTransitionEnd\n }\n },\n [this.renderHeader(prefixCls), h(\n 'div',\n { key: 'body', 'class': prefixCls + '-body', style: bodyStyle },\n [this.$slots['default']]\n )]\n );\n }\n },\n render: function render() {\n var _classnames;\n\n var h = arguments[0];\n\n var props = getOptionProps(this);\n\n var customizePrefixCls = props.prefixCls,\n width = props.width,\n height = props.height,\n visible = props.visible,\n placement = props.placement,\n wrapClassName = props.wrapClassName,\n mask = props.mask,\n rest = _objectWithoutProperties(props, ['prefixCls', 'width', 'height', 'visible', 'placement', 'wrapClassName', 'mask']);\n\n var haveMask = mask ? '' : 'no-mask';\n var offsetStyle = {};\n if (placement === 'left' || placement === 'right') {\n offsetStyle.width = typeof width === 'number' ? width + 'px' : width;\n } else {\n offsetStyle.height = typeof height === 'number' ? height + 'px' : height;\n }\n var handler = getComponentFromProp(this, 'handle') || false;\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('drawer', customizePrefixCls);\n\n var vcDrawerProps = {\n ref: 'vcDrawer',\n props: _extends({}, omit(rest, ['closable', 'destroyOnClose', 'drawerStyle', 'headerStyle', 'bodyStyle', 'title', 'push', 'visible', 'getPopupContainer', 'rootPrefixCls', 'getPrefixCls', 'renderEmpty', 'csp', 'pageHeader', 'autoInsertSpaceInButton']), {\n handler: handler\n }, offsetStyle, {\n prefixCls: prefixCls,\n open: visible,\n showMask: mask,\n placement: placement,\n className: classnames((_classnames = {}, _defineProperty(_classnames, wrapClassName, !!wrapClassName), _defineProperty(_classnames, haveMask, !!haveMask), _classnames)),\n wrapStyle: this.getRcDrawerStyle()\n }),\n on: _extends({}, getListeners(this))\n };\n return h(\n VcDrawer,\n vcDrawerProps,\n [this.renderBody(prefixCls)]\n );\n }\n};\n\n/* istanbul ignore next */\nDrawer.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Drawer.name, Drawer);\n};\n\nexport default Drawer;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps } from '../_util/props-util';\n\nvar skeletonAvatarProps = {\n prefixCls: PropTypes.string,\n size: PropTypes.oneOfType([PropTypes.oneOf(['large', 'small', 'default']), PropTypes.number]),\n shape: PropTypes.oneOf(['circle', 'square'])\n};\n\nexport var SkeletonAvatarProps = PropTypes.shape(skeletonAvatarProps).loose;\n\nvar Avatar = {\n props: initDefaultProps(skeletonAvatarProps, {\n size: 'large'\n }),\n render: function render() {\n var _classNames, _classNames2;\n\n var h = arguments[0];\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n size = _$props.size,\n shape = _$props.shape;\n\n\n var sizeCls = classNames((_classNames = {}, _defineProperty(_classNames, prefixCls + '-lg', size === 'large'), _defineProperty(_classNames, prefixCls + '-sm', size === 'small'), _classNames));\n\n var shapeCls = classNames((_classNames2 = {}, _defineProperty(_classNames2, prefixCls + '-circle', shape === 'circle'), _defineProperty(_classNames2, prefixCls + '-square', shape === 'square'), _classNames2));\n\n var sizeStyle = typeof size === 'number' ? {\n width: size + 'px',\n height: size + 'px',\n lineHeight: size + 'px'\n } : {};\n\n return h('span', { 'class': classNames(prefixCls, sizeCls, shapeCls), style: sizeStyle });\n }\n};\n\nexport default Avatar;","import PropTypes from '../_util/vue-types';\n\nvar skeletonTitleProps = {\n prefixCls: PropTypes.string,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n};\n\nexport var SkeletonTitleProps = PropTypes.shape(skeletonTitleProps);\n\nvar Title = {\n props: skeletonTitleProps,\n render: function render() {\n var h = arguments[0];\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n width = _$props.width;\n\n var zWidth = typeof width === 'number' ? width + 'px' : width;\n return h('h3', { 'class': prefixCls, style: { width: zWidth } });\n }\n};\n\nexport default Title;","import _toConsumableArray from 'babel-runtime/helpers/toConsumableArray';\nimport PropTypes from '../_util/vue-types';\n\nvar widthUnit = PropTypes.oneOfType([PropTypes.number, PropTypes.string]);\n\nvar skeletonParagraphProps = {\n prefixCls: PropTypes.string,\n width: PropTypes.oneOfType([widthUnit, PropTypes.arrayOf(widthUnit)]),\n rows: PropTypes.number\n};\n\nexport var SkeletonParagraphProps = PropTypes.shape(skeletonParagraphProps);\n\nvar Paragraph = {\n props: skeletonParagraphProps,\n methods: {\n getWidth: function getWidth(index) {\n var width = this.width,\n _rows = this.rows,\n rows = _rows === undefined ? 2 : _rows;\n\n if (Array.isArray(width)) {\n return width[index];\n }\n // last paragraph\n if (rows - 1 === index) {\n return width;\n }\n return undefined;\n }\n },\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n var _$props = this.$props,\n prefixCls = _$props.prefixCls,\n rows = _$props.rows;\n\n var rowList = [].concat(_toConsumableArray(Array(rows))).map(function (_, index) {\n var width = _this.getWidth(index);\n return h('li', { key: index, style: { width: typeof width === 'number' ? width + 'px' : width } });\n });\n return h(\n 'ul',\n { 'class': prefixCls },\n [rowList]\n );\n }\n};\n\nexport default Paragraph;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _extends from 'babel-runtime/helpers/extends';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport classNames from 'classnames';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps, hasProp } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Avatar, { SkeletonAvatarProps } from './Avatar';\nimport Title, { SkeletonTitleProps } from './Title';\nimport Paragraph, { SkeletonParagraphProps } from './Paragraph';\nimport Base from '../base';\n\nexport var SkeletonProps = {\n active: PropTypes.bool,\n loading: PropTypes.bool,\n prefixCls: PropTypes.string,\n children: PropTypes.any,\n avatar: PropTypes.oneOfType([PropTypes.string, SkeletonAvatarProps, PropTypes.bool]),\n title: PropTypes.oneOfType([PropTypes.bool, PropTypes.string, SkeletonTitleProps]),\n paragraph: PropTypes.oneOfType([PropTypes.bool, PropTypes.string, SkeletonParagraphProps])\n};\n\nfunction getComponentProps(prop) {\n if (prop && (typeof prop === 'undefined' ? 'undefined' : _typeof(prop)) === 'object') {\n return prop;\n }\n return {};\n}\n\nfunction getAvatarBasicProps(hasTitle, hasParagraph) {\n if (hasTitle && !hasParagraph) {\n return { shape: 'square' };\n }\n\n return { shape: 'circle' };\n}\n\nfunction getTitleBasicProps(hasAvatar, hasParagraph) {\n if (!hasAvatar && hasParagraph) {\n return { width: '38%' };\n }\n\n if (hasAvatar && hasParagraph) {\n return { width: '50%' };\n }\n\n return {};\n}\n\nfunction getParagraphBasicProps(hasAvatar, hasTitle) {\n var basicProps = {};\n\n // Width\n if (!hasAvatar || !hasTitle) {\n basicProps.width = '61%';\n }\n\n // Rows\n if (!hasAvatar && hasTitle) {\n basicProps.rows = 3;\n } else {\n basicProps.rows = 2;\n }\n\n return basicProps;\n}\n\nvar Skeleton = {\n name: 'ASkeleton',\n props: initDefaultProps(SkeletonProps, {\n avatar: false,\n title: true,\n paragraph: true\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render() {\n var h = arguments[0];\n var _$props = this.$props,\n customizePrefixCls = _$props.prefixCls,\n loading = _$props.loading,\n avatar = _$props.avatar,\n title = _$props.title,\n paragraph = _$props.paragraph,\n active = _$props.active;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('skeleton', customizePrefixCls);\n\n if (loading || !hasProp(this, 'loading')) {\n var _classNames;\n\n var hasAvatar = !!avatar || avatar === '';\n var hasTitle = !!title;\n var hasParagraph = !!paragraph;\n\n // Avatar\n var avatarNode = void 0;\n if (hasAvatar) {\n var avatarProps = {\n props: _extends({\n prefixCls: prefixCls + '-avatar'\n }, getAvatarBasicProps(hasTitle, hasParagraph), getComponentProps(avatar))\n };\n\n avatarNode = h(\n 'div',\n { 'class': prefixCls + '-header' },\n [h(Avatar, avatarProps)]\n );\n }\n\n var contentNode = void 0;\n if (hasTitle || hasParagraph) {\n // Title\n var $title = void 0;\n if (hasTitle) {\n var titleProps = {\n props: _extends({\n prefixCls: prefixCls + '-title'\n }, getTitleBasicProps(hasAvatar, hasParagraph), getComponentProps(title))\n };\n\n $title = h(Title, titleProps);\n }\n\n // Paragraph\n var paragraphNode = void 0;\n if (hasParagraph) {\n var paragraphProps = {\n props: _extends({\n prefixCls: prefixCls + '-paragraph'\n }, getParagraphBasicProps(hasAvatar, hasTitle), getComponentProps(paragraph))\n };\n\n paragraphNode = h(Paragraph, paragraphProps);\n }\n\n contentNode = h(\n 'div',\n { 'class': prefixCls + '-content' },\n [$title, paragraphNode]\n );\n }\n\n var cls = classNames(prefixCls, (_classNames = {}, _defineProperty(_classNames, prefixCls + '-with-avatar', hasAvatar), _defineProperty(_classNames, prefixCls + '-active', active), _classNames));\n\n return h(\n 'div',\n { 'class': cls },\n [avatarNode, contentNode]\n );\n }\n var children = this.$slots['default'];\n return children && children.length === 1 ? children[0] : h('span', [children]);\n }\n};\n/* istanbul ignore next */\nSkeleton.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Skeleton.name, Skeleton);\n};\nexport default Skeleton;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport PropsTypes from '../_util/vue-types';\nimport { getComponentFromProp, getListeners } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Base from '../base';\nexport var CommentProps = {\n actions: PropsTypes.array,\n /** The element to display as the comment author. */\n author: PropsTypes.any,\n /** The element to display as the comment avatar - generally an antd Avatar */\n avatar: PropsTypes.any,\n /** The main content of the comment */\n content: PropsTypes.any,\n /** Comment prefix defaults to '.ant-comment' */\n prefixCls: PropsTypes.string,\n /** A datetime element containing the time to be displayed */\n datetime: PropsTypes.any\n};\n\nvar Comment = {\n name: 'AComment',\n props: CommentProps,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n methods: {\n getAction: function getAction(actions) {\n var h = this.$createElement;\n\n if (!actions || !actions.length) {\n return null;\n }\n var actionList = actions.map(function (action, index) {\n return h(\n 'li',\n { key: 'action-' + index },\n [action]\n );\n });\n return actionList;\n },\n renderNested: function renderNested(prefixCls, children) {\n var h = this.$createElement;\n\n return h(\n 'div',\n { 'class': prefixCls + '-nested' },\n [children]\n );\n }\n },\n\n render: function render() {\n var h = arguments[0];\n var customizePrefixCls = this.$props.prefixCls;\n\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('comment', customizePrefixCls);\n\n var actions = getComponentFromProp(this, 'actions');\n var author = getComponentFromProp(this, 'author');\n var avatar = getComponentFromProp(this, 'avatar');\n var content = getComponentFromProp(this, 'content');\n var datetime = getComponentFromProp(this, 'datetime');\n\n var avatarDom = h(\n 'div',\n { 'class': prefixCls + '-avatar' },\n [typeof avatar === 'string' ? h('img', {\n attrs: { src: avatar, alt: 'comment-avatar' }\n }) : avatar]\n );\n\n var actionDom = actions && actions.length ? h(\n 'ul',\n { 'class': prefixCls + '-actions' },\n [this.getAction(actions)]\n ) : null;\n\n var authorContent = h(\n 'div',\n { 'class': prefixCls + '-content-author' },\n [author && h(\n 'span',\n { 'class': prefixCls + '-content-author-name' },\n [author]\n ), datetime && h(\n 'span',\n { 'class': prefixCls + '-content-author-time' },\n [datetime]\n )]\n );\n\n var contentDom = h(\n 'div',\n { 'class': prefixCls + '-content' },\n [authorContent, h(\n 'div',\n { 'class': prefixCls + '-content-detail' },\n [content]\n ), actionDom]\n );\n\n var comment = h(\n 'div',\n { 'class': prefixCls + '-inner' },\n [avatarDom, contentDom]\n );\n var children = this.$slots['default'];\n return h(\n 'div',\n _mergeJSXProps([{ 'class': prefixCls }, { on: getListeners(this) }]),\n [comment, children ? this.renderNested(prefixCls, children) : null]\n );\n }\n};\n\n/* istanbul ignore next */\nComment.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Comment.name, Comment);\n};\nexport default Comment;","import _extends from 'babel-runtime/helpers/extends';\nimport Vue from 'vue';\nimport PropTypes from '../_util/vue-types';\nimport { filterEmpty, getComponentFromProp } from '../_util/props-util';\nimport defaultRenderEmpty from './renderEmpty';\nimport Base from '../base';\nimport LocaleProvider, { ANT_MARK } from '../locale-provider';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\n\nfunction getWatch() {\n var keys = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n var watch = {};\n keys.forEach(function (k) {\n watch[k] = function (value) {\n this._proxyVm._data[k] = value;\n };\n });\n return watch;\n}\n\nvar ConfigProvider = {\n name: 'AConfigProvider',\n props: {\n getPopupContainer: PropTypes.func,\n prefixCls: PropTypes.string,\n renderEmpty: PropTypes.func,\n csp: PropTypes.object,\n autoInsertSpaceInButton: PropTypes.bool,\n locale: PropTypes.object,\n pageHeader: PropTypes.object,\n transformCellText: PropTypes.func\n },\n provide: function provide() {\n var _self = this;\n this._proxyVm = new Vue({\n data: function data() {\n return _extends({}, _self.$props, {\n getPrefixCls: _self.getPrefixCls,\n renderEmpty: _self.renderEmptyComponent\n });\n }\n });\n return {\n configProvider: this._proxyVm._data\n };\n },\n\n watch: _extends({}, getWatch(['prefixCls', 'csp', 'autoInsertSpaceInButton', 'locale', 'pageHeader', 'transformCellText'])),\n methods: {\n renderEmptyComponent: function renderEmptyComponent(h, name) {\n var renderEmpty = getComponentFromProp(this, 'renderEmpty', {}, false) || defaultRenderEmpty;\n return renderEmpty(h, name);\n },\n getPrefixCls: function getPrefixCls(suffixCls, customizePrefixCls) {\n var _$props$prefixCls = this.$props.prefixCls,\n prefixCls = _$props$prefixCls === undefined ? 'ant' : _$props$prefixCls;\n\n if (customizePrefixCls) return customizePrefixCls;\n return suffixCls ? prefixCls + '-' + suffixCls : prefixCls;\n },\n renderProvider: function renderProvider(legacyLocale) {\n var h = this.$createElement;\n\n return h(\n LocaleProvider,\n {\n attrs: { locale: this.locale || legacyLocale, _ANT_MARK__: ANT_MARK }\n },\n [this.$slots['default'] ? filterEmpty(this.$slots['default'])[0] : null]\n );\n }\n },\n\n render: function render() {\n var _this = this;\n\n var h = arguments[0];\n\n return h(LocaleReceiver, {\n scopedSlots: { 'default': function _default(_, __, legacyLocale) {\n return _this.renderProvider(legacyLocale);\n } }\n });\n }\n};\n\n/* istanbul ignore next */\nConfigProvider.install = function (Vue) {\n Vue.use(Base);\n Vue.component(ConfigProvider.name, ConfigProvider);\n};\n\nexport default ConfigProvider;","var NoFound = {\n functional: true,\n render: function render() {\n var h = arguments[0];\n\n return h(\n \"svg\",\n {\n attrs: { width: \"252\", height: \"294\" }\n },\n [h(\"defs\", [h(\"path\", {\n attrs: { d: \"M0 .387h251.772v251.772H0z\" }\n })]), h(\n \"g\",\n {\n attrs: { fill: \"none\", fillRule: \"evenodd\" }\n },\n [h(\n \"g\",\n {\n attrs: { transform: \"translate(0 .012)\" }\n },\n [h(\"mask\", {\n attrs: { fill: \"#fff\" }\n }), h(\"path\", {\n attrs: {\n d: \"M0 127.32v-2.095C0 56.279 55.892.387 124.838.387h2.096c68.946 0 124.838 55.892 124.838 124.838v2.096c0 68.946-55.892 124.838-124.838 124.838h-2.096C55.892 252.16 0 196.267 0 127.321\",\n fill: \"#E4EBF7\",\n mask: \"url(#b)\"\n }\n })]\n ), h(\"path\", {\n attrs: {\n d: \"M39.755 130.84a8.276 8.276 0 1 1-16.468-1.66 8.276 8.276 0 0 1 16.468 1.66\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M36.975 134.297l10.482 5.943M48.373 146.508l-12.648 10.788\",\n stroke: \"#FFF\",\n strokeWidth: \"2\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M39.875 159.352a5.667 5.667 0 1 1-11.277-1.136 5.667 5.667 0 0 1 11.277 1.136M57.588 143.247a5.708 5.708 0 1 1-11.358-1.145 5.708 5.708 0 0 1 11.358 1.145M99.018 26.875l29.82-.014a4.587 4.587 0 1 0-.003-9.175l-29.82.013a4.587 4.587 0 1 0 .003 9.176M110.424 45.211l29.82-.013a4.588 4.588 0 0 0-.004-9.175l-29.82.013a4.587 4.587 0 1 0 .004 9.175\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M112.798 26.861v-.002l15.784-.006a4.588 4.588 0 1 0 .003 9.175l-15.783.007v-.002a4.586 4.586 0 0 0-.004-9.172M184.523 135.668c-.553 5.485-5.447 9.483-10.931 8.93-5.485-.553-9.483-5.448-8.93-10.932.552-5.485 5.447-9.483 10.932-8.93 5.485.553 9.483 5.447 8.93 10.932\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M179.26 141.75l12.64 7.167M193.006 156.477l-15.255 13.011\",\n stroke: \"#FFF\",\n strokeWidth: \"2\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M184.668 170.057a6.835 6.835 0 1 1-13.6-1.372 6.835 6.835 0 0 1 13.6 1.372M203.34 153.325a6.885 6.885 0 1 1-13.7-1.382 6.885 6.885 0 0 1 13.7 1.382\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M151.931 192.324a2.222 2.222 0 1 1-4.444 0 2.222 2.222 0 0 1 4.444 0zM225.27 116.056a2.222 2.222 0 1 1-4.445 0 2.222 2.222 0 0 1 4.444 0zM216.38 151.08a2.223 2.223 0 1 1-4.446-.001 2.223 2.223 0 0 1 4.446 0zM176.917 107.636a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM195.291 92.165a2.223 2.223 0 1 1-4.445 0 2.223 2.223 0 0 1 4.445 0zM202.058 180.711a2.223 2.223 0 1 1-4.446 0 2.223 2.223 0 0 1 4.446 0z\",\n stroke: \"#FFF\",\n strokeWidth: \"2\"\n }\n }), h(\"path\", {\n attrs: {\n stroke: \"#FFF\",\n strokeWidth: \"2\",\n d: \"M214.404 153.302l-1.912 20.184-10.928 5.99M173.661 174.792l-6.356 9.814h-11.36l-4.508 6.484M174.941 125.168v-15.804M220.824 117.25l-12.84 7.901-15.31-7.902V94.39\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M166.588 65.936h-3.951a4.756 4.756 0 0 1-4.743-4.742 4.756 4.756 0 0 1 4.743-4.743h3.951a4.756 4.756 0 0 1 4.743 4.743 4.756 4.756 0 0 1-4.743 4.742\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M174.823 30.03c0-16.281 13.198-29.48 29.48-29.48 16.28 0 29.48 13.199 29.48 29.48 0 16.28-13.2 29.48-29.48 29.48-16.282 0-29.48-13.2-29.48-29.48\",\n fill: \"#1890FF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M205.952 38.387c.5.5.785 1.142.785 1.928s-.286 1.465-.785 1.964c-.572.5-1.214.75-2 .75-.785 0-1.429-.285-1.929-.785-.572-.5-.82-1.143-.82-1.929s.248-1.428.82-1.928c.5-.5 1.144-.75 1.93-.75.785 0 1.462.25 1.999.75m4.285-19.463c1.428 1.249 2.143 2.963 2.143 5.142 0 1.712-.427 3.13-1.219 4.25-.067.096-.137.18-.218.265-.416.429-1.41 1.346-2.956 2.699a5.07 5.07 0 0 0-1.428 1.75 5.207 5.207 0 0 0-.536 2.357v.5h-4.107v-.5c0-1.357.215-2.536.714-3.5.464-.964 1.857-2.464 4.178-4.536l.43-.5c.643-.785.964-1.643.964-2.535 0-1.18-.358-2.108-1-2.785-.678-.68-1.643-1.001-2.858-1.001-1.536 0-2.642.464-3.357 1.43-.37.5-.621 1.135-.76 1.904a1.999 1.999 0 0 1-1.971 1.63h-.004c-1.277 0-2.257-1.183-1.98-2.43.337-1.518 1.02-2.78 2.073-3.784 1.536-1.5 3.607-2.25 6.25-2.25 2.32 0 4.214.607 5.642 1.894\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M52.04 76.131s21.81 5.36 27.307 15.945c5.575 10.74-6.352 9.26-15.73 4.935-10.86-5.008-24.7-11.822-11.577-20.88\",\n fill: \"#FFB594\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M90.483 67.504l-.449 2.893c-.753.49-4.748-2.663-4.748-2.663l-1.645.748-1.346-5.684s6.815-4.589 8.917-5.018c2.452-.501 9.884.94 10.7 2.278 0 0 1.32.486-2.227.69-3.548.203-5.043.447-6.79 3.132-1.747 2.686-2.412 3.624-2.412 3.624\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M128.055 111.367c-2.627-7.724-6.15-13.18-8.917-15.478-3.5-2.906-9.34-2.225-11.366-4.187-1.27-1.231-3.215-1.197-3.215-1.197s-14.98-3.158-16.828-3.479c-2.37-.41-2.124-.714-6.054-1.405-1.57-1.907-2.917-1.122-2.917-1.122l-7.11-1.383c-.853-1.472-2.423-1.023-2.423-1.023l-2.468-.897c-1.645 9.976-7.74 13.796-7.74 13.796 1.795 1.122 15.703 8.3 15.703 8.3l5.107 37.11s-3.321 5.694 1.346 9.109c0 0 19.883-3.743 34.921-.329 0 0 3.047-2.546.972-8.806.523-3.01 1.394-8.263 1.736-11.622.385.772 2.019 1.918 3.14 3.477 0 0 9.407-7.365 11.052-14.012-.832-.723-1.598-1.585-2.267-2.453-.567-.736-.358-2.056-.765-2.717-.669-1.084-1.804-1.378-1.907-1.682\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M101.09 289.998s4.295 2.041 7.354 1.021c2.821-.94 4.53.668 7.08 1.178 2.55.51 6.874 1.1 11.686-1.26-.103-5.51-6.889-3.98-11.96-6.713-2.563-1.38-3.784-4.722-3.598-8.799h-9.402s-1.392 10.52-1.16 14.573\",\n fill: \"#CBD1D1\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M101.067 289.826s2.428 1.271 6.759.653c3.058-.437 3.712.481 7.423 1.031 3.712.55 10.724-.069 11.823-.894.413 1.1-.343 2.063-.343 2.063s-1.512.603-4.812.824c-2.03.136-5.8.291-7.607-.503-1.787-1.375-5.247-1.903-5.728-.241-3.918.95-7.355-.286-7.355-.286l-.16-2.647z\",\n fill: \"#2B0849\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M108.341 276.044h3.094s-.103 6.702 4.536 8.558c-4.64.618-8.558-2.303-7.63-8.558\",\n fill: \"#A4AABA\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M57.542 272.401s-2.107 7.416-4.485 12.306c-1.798 3.695-4.225 7.492 5.465 7.492 6.648 0 8.953-.48 7.423-6.599-1.53-6.12.266-13.199.266-13.199h-8.669z\",\n fill: \"#CBD1D1\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M51.476 289.793s2.097 1.169 6.633 1.169c6.083 0 8.249-1.65 8.249-1.65s.602 1.114-.619 2.165c-.993.855-3.597 1.591-7.39 1.546-4.145-.048-5.832-.566-6.736-1.168-.825-.55-.687-1.58-.137-2.062\",\n fill: \"#2B0849\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M58.419 274.304s.033 1.519-.314 2.93c-.349 1.42-1.078 3.104-1.13 4.139-.058 1.151 4.537 1.58 5.155.034.62-1.547 1.294-6.427 1.913-7.252.619-.825-4.903-2.119-5.624.15\",\n fill: \"#A4AABA\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M99.66 278.514l13.378.092s1.298-54.52 1.853-64.403c.554-9.882 3.776-43.364 1.002-63.128l-12.547-.644-22.849.78s-.434 3.966-1.195 9.976c-.063.496-.682.843-.749 1.365-.075.585.423 1.354.32 1.966-2.364 14.08-6.377 33.104-8.744 46.677-.116.666-1.234 1.009-1.458 2.691-.04.302.211 1.525.112 1.795-6.873 18.744-10.949 47.842-14.277 61.885l14.607-.014s2.197-8.57 4.03-16.97c2.811-12.886 23.111-85.01 23.111-85.01l3.016-.521 1.043 46.35s-.224 1.234.337 2.02c.56.785-.56 1.123-.392 2.244l.392 1.794s-.449 7.178-.898 11.89c-.448 4.71-.092 39.165-.092 39.165\",\n fill: \"#7BB2F9\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M76.085 221.626c1.153.094 4.038-2.019 6.955-4.935M106.36 225.142s2.774-1.11 6.103-3.883\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M107.275 222.1s2.773-1.11 6.102-3.884\",\n stroke: \"#648BD8\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M74.74 224.767s2.622-.591 6.505-3.365M86.03 151.634c-.27 3.106.3 8.525-4.336 9.123M103.625 149.88s.11 14.012-1.293 15.065c-2.219 1.664-2.99 1.944-2.99 1.944M99.79 150.438s.035 12.88-1.196 24.377M93.673 175.911s7.212-1.664 9.431-1.664M74.31 205.861a212.013 212.013 0 0 1-.979 4.56s-1.458 1.832-1.009 3.776c.449 1.944-.947 2.045-4.985 15.355-1.696 5.59-4.49 18.591-6.348 27.597l-.231 1.12M75.689 197.807a320.934 320.934 0 0 1-.882 4.754M82.591 152.233L81.395 162.7s-1.097.15-.5 2.244c.113 1.346-2.674 15.775-5.18 30.43M56.12 274.418h13.31\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M116.241 148.22s-17.047-3.104-35.893.2c.158 2.514-.003 4.15-.003 4.15s14.687-2.818 35.67-.312c.252-2.355.226-4.038.226-4.038\",\n fill: \"#192064\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M106.322 151.165l.003-4.911a.81.81 0 0 0-.778-.815c-2.44-.091-5.066-.108-7.836-.014a.818.818 0 0 0-.789.815l-.003 4.906a.81.81 0 0 0 .831.813c2.385-.06 4.973-.064 7.73.017a.815.815 0 0 0 .842-.81\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M105.207 150.233l.002-3.076a.642.642 0 0 0-.619-.646 94.321 94.321 0 0 0-5.866-.01.65.65 0 0 0-.63.647v3.072a.64.64 0 0 0 .654.644 121.12 121.12 0 0 1 5.794.011c.362.01.665-.28.665-.642\",\n fill: \"#192064\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M100.263 275.415h12.338M101.436 270.53c.006 3.387.042 5.79.111 6.506M101.451 264.548a915.75 915.75 0 0 0-.015 4.337M100.986 174.965l.898 44.642s.673 1.57-.225 2.692c-.897 1.122 2.468.673.898 2.243-1.57 1.57.897 1.122 0 3.365-.596 1.489-.994 21.1-1.096 35.146\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M46.876 83.427s-.516 6.045 7.223 5.552c11.2-.712 9.218-9.345 31.54-21.655-.786-2.708-2.447-4.744-2.447-4.744s-11.068 3.11-22.584 8.046c-6.766 2.9-13.395 6.352-13.732 12.801M104.46 91.057l.941-5.372-8.884-11.43-5.037 5.372-1.74 7.834a.321.321 0 0 0 .108.32c.965.8 6.5 5.013 14.347 3.544a.332.332 0 0 0 .264-.268\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M93.942 79.387s-4.533-2.853-2.432-6.855c1.623-3.09 4.513 1.133 4.513 1.133s.52-3.642 3.121-3.642c.52-1.04 1.561-4.162 1.561-4.162s11.445 2.601 13.526 3.121c0 5.203-2.304 19.424-7.84 19.861-8.892.703-12.449-9.456-12.449-9.456\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M113.874 73.446c2.601-2.081 3.47-9.722 3.47-9.722s-2.479-.49-6.64-2.05c-4.683-2.081-12.798-4.747-17.48.976-9.668 3.223-2.05 19.823-2.05 19.823l2.713-3.021s-3.935-3.287-2.08-6.243c2.17-3.462 3.92 1.073 3.92 1.073s.637-2.387 3.581-3.342c.355-.71 1.036-2.674 1.432-3.85a1.073 1.073 0 0 1 1.263-.704c2.4.558 8.677 2.019 11.356 2.662.522.125.871.615.82 1.15l-.305 3.248z\",\n fill: \"#520038\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M104.977 76.064c-.103.61-.582 1.038-1.07.956-.489-.083-.801-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.644.698 1.254M112.132 77.694c-.103.61-.582 1.038-1.07.956-.488-.083-.8-.644-.698-1.254.103-.61.582-1.038 1.07-.956.488.082.8.643.698 1.254\",\n fill: \"#552950\"\n }\n }), h(\"path\", {\n attrs: {\n stroke: \"#DB836E\",\n strokeWidth: \"1.118\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M110.13 74.84l-.896 1.61-.298 4.357h-2.228\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M110.846 74.481s1.79-.716 2.506.537\",\n stroke: \"#5C2552\",\n strokeWidth: \"1.118\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M92.386 74.282s.477-1.114 1.113-.716c.637.398 1.274 1.433.558 1.99-.717.556.159 1.67.159 1.67\",\n stroke: \"#DB836E\",\n strokeWidth: \"1.118\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M103.287 72.93s1.83 1.113 4.137.954\",\n stroke: \"#5C2552\",\n strokeWidth: \"1.118\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M103.685 81.762s2.227 1.193 4.376 1.193M104.64 84.308s.954.398 1.511.318M94.693 81.205s2.308 7.4 10.424 7.639\",\n stroke: \"#DB836E\",\n strokeWidth: \"1.118\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M81.45 89.384s.45 5.647-4.935 12.787M69 82.654s-.726 9.282-8.204 14.206\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.101\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M129.405 122.865s-5.272 7.403-9.422 10.768\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M119.306 107.329s.452 4.366-2.127 32.062\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.101\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M150.028 151.232h-49.837a1.01 1.01 0 0 1-1.01-1.01v-31.688c0-.557.452-1.01 1.01-1.01h49.837c.558 0 1.01.453 1.01 1.01v31.688a1.01 1.01 0 0 1-1.01 1.01\",\n fill: \"#F2D7AD\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M150.29 151.232h-19.863v-33.707h20.784v32.786a.92.92 0 0 1-.92.92\",\n fill: \"#F4D19D\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M123.554 127.896H92.917a.518.518 0 0 1-.425-.816l6.38-9.113c.193-.277.51-.442.85-.442h31.092l-7.26 10.371z\",\n fill: \"#F2D7AD\"\n }\n }), h(\"path\", {\n attrs: { fill: \"#CC9B6E\", d: \"M123.689 128.447H99.25v-.519h24.169l7.183-10.26.424.298z\" }\n }), h(\"path\", {\n attrs: {\n d: \"M158.298 127.896h-18.669a2.073 2.073 0 0 1-1.659-.83l-7.156-9.541h19.965c.49 0 .95.23 1.244.622l6.69 8.92a.519.519 0 0 1-.415.83\",\n fill: \"#F4D19D\"\n }\n }), h(\"path\", {\n attrs: {\n fill: \"#CC9B6E\",\n d: \"M157.847 128.479h-19.384l-7.857-10.475.415-.31 7.7 10.266h19.126zM130.554 150.685l-.032-8.177.519-.002.032 8.177z\"\n }\n }), h(\"path\", {\n attrs: {\n fill: \"#CC9B6E\",\n d: \"M130.511 139.783l-.08-21.414.519-.002.08 21.414zM111.876 140.932l-.498-.143 1.479-5.167.498.143zM108.437 141.06l-2.679-2.935 2.665-3.434.41.318-2.397 3.089 2.384 2.612zM116.607 141.06l-.383-.35 2.383-2.612-2.397-3.089.41-.318 2.665 3.434z\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M154.316 131.892l-3.114-1.96.038 3.514-1.043.092c-1.682.115-3.634.23-4.789.23-1.902 0-2.693 2.258 2.23 2.648l-2.645-.596s-2.168 1.317.504 2.3c0 0-1.58 1.217.561 2.58-.584 3.504 5.247 4.058 7.122 3.59 1.876-.47 4.233-2.359 4.487-5.16.28-3.085-.89-5.432-3.35-7.238\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M153.686 133.577s-6.522.47-8.36.372c-1.836-.098-1.904 2.19 2.359 2.264 3.739.15 5.451-.044 5.451-.044\",\n stroke: \"#DB836E\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M145.16 135.877c-1.85 1.346.561 2.355.561 2.355s3.478.898 6.73.617\",\n stroke: \"#DB836E\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M151.89 141.71s-6.28.111-6.73-2.132c-.223-1.346.45-1.402.45-1.402M146.114 140.868s-1.103 3.16 5.44 3.533M151.202 129.932v3.477M52.838 89.286c3.533-.337 8.423-1.248 13.582-7.754\",\n stroke: \"#DB836E\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M168.567 248.318a6.647 6.647 0 0 1-6.647-6.647v-66.466a6.647 6.647 0 1 1 13.294 0v66.466a6.647 6.647 0 0 1-6.647 6.647\",\n fill: \"#5BA02E\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M176.543 247.653a6.647 6.647 0 0 1-6.646-6.647v-33.232a6.647 6.647 0 1 1 13.293 0v33.232a6.647 6.647 0 0 1-6.647 6.647\",\n fill: \"#92C110\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M186.443 293.613H158.92a3.187 3.187 0 0 1-3.187-3.187v-46.134a3.187 3.187 0 0 1 3.187-3.187h27.524a3.187 3.187 0 0 1 3.187 3.187v46.134a3.187 3.187 0 0 1-3.187 3.187\",\n fill: \"#F2D7AD\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M88.979 89.48s7.776 5.384 16.6 2.842\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.101\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n })]\n )]\n );\n }\n};\n\nexport default NoFound;","var ServerError = {\n functional: true,\n render: function render() {\n var h = arguments[0];\n\n return h(\n \"svg\",\n {\n attrs: { width: \"254\", height: \"294\" }\n },\n [h(\"defs\", [h(\"path\", {\n attrs: { d: \"M0 .335h253.49v253.49H0z\" }\n }), h(\"path\", {\n attrs: { d: \"M0 293.665h253.49V.401H0z\" }\n })]), h(\n \"g\",\n {\n attrs: { fill: \"none\", fillRule: \"evenodd\" }\n },\n [h(\n \"g\",\n {\n attrs: { transform: \"translate(0 .067)\" }\n },\n [h(\"mask\", {\n attrs: { fill: \"#fff\" }\n }), h(\"path\", {\n attrs: {\n d: \"M0 128.134v-2.11C0 56.608 56.273.334 125.69.334h2.11c69.416 0 125.69 56.274 125.69 125.69v2.11c0 69.417-56.274 125.69-125.69 125.69h-2.11C56.273 253.824 0 197.551 0 128.134\",\n fill: \"#E4EBF7\",\n mask: \"url(#b)\"\n }\n })]\n ), h(\"path\", {\n attrs: {\n d: \"M39.989 132.108a8.332 8.332 0 1 1-16.581-1.671 8.332 8.332 0 0 1 16.58 1.671\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M37.19 135.59l10.553 5.983M48.665 147.884l-12.734 10.861\",\n stroke: \"#FFF\",\n strokeWidth: \"2\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M40.11 160.816a5.706 5.706 0 1 1-11.354-1.145 5.706 5.706 0 0 1 11.354 1.145M57.943 144.6a5.747 5.747 0 1 1-11.436-1.152 5.747 5.747 0 0 1 11.436 1.153M99.656 27.434l30.024-.013a4.619 4.619 0 1 0-.004-9.238l-30.024.013a4.62 4.62 0 0 0 .004 9.238M111.14 45.896l30.023-.013a4.62 4.62 0 1 0-.004-9.238l-30.024.013a4.619 4.619 0 1 0 .004 9.238\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M113.53 27.421v-.002l15.89-.007a4.619 4.619 0 1 0 .005 9.238l-15.892.007v-.002a4.618 4.618 0 0 0-.004-9.234M150.167 70.091h-3.979a4.789 4.789 0 0 1-4.774-4.775 4.788 4.788 0 0 1 4.774-4.774h3.979a4.789 4.789 0 0 1 4.775 4.774 4.789 4.789 0 0 1-4.775 4.775\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M171.687 30.234c0-16.392 13.289-29.68 29.681-29.68 16.392 0 29.68 13.288 29.68 29.68 0 16.393-13.288 29.681-29.68 29.681s-29.68-13.288-29.68-29.68\",\n fill: \"#FF603B\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M203.557 19.435l-.676 15.035a1.514 1.514 0 0 1-3.026 0l-.675-15.035a2.19 2.19 0 1 1 4.377 0m-.264 19.378c.513.477.77 1.1.77 1.87s-.257 1.393-.77 1.907c-.55.476-1.21.733-1.943.733a2.545 2.545 0 0 1-1.87-.77c-.55-.514-.806-1.136-.806-1.87 0-.77.256-1.393.806-1.87.513-.513 1.137-.733 1.87-.733.77 0 1.43.22 1.943.733\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M119.3 133.275c4.426-.598 3.612-1.204 4.079-4.778.675-5.18-3.108-16.935-8.262-25.118-1.088-10.72-12.598-11.24-12.598-11.24s4.312 4.895 4.196 16.199c1.398 5.243.804 14.45.804 14.45s5.255 11.369 11.78 10.487\",\n fill: \"#FFB594\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M100.944 91.61s1.463-.583 3.211.582c8.08 1.398 10.368 6.706 11.3 11.368 1.864 1.282 1.864 2.33 1.864 3.496.365.777 1.515 3.03 1.515 3.03s-7.225 1.748-10.954 6.758c-1.399-6.41-6.936-25.235-6.936-25.235\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M94.008 90.5l1.019-5.815-9.23-11.874-5.233 5.581-2.593 9.863s8.39 5.128 16.037 2.246\",\n fill: \"#FFB594\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M82.931 78.216s-4.557-2.868-2.445-6.892c1.632-3.107 4.537 1.139 4.537 1.139s.524-3.662 3.139-3.662c.523-1.046 1.569-4.184 1.569-4.184s11.507 2.615 13.6 3.138c-.001 5.23-2.317 19.529-7.884 19.969-8.94.706-12.516-9.508-12.516-9.508\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M102.971 72.243c2.616-2.093 3.489-9.775 3.489-9.775s-2.492-.492-6.676-2.062c-4.708-2.092-12.867-4.771-17.575.982-9.54 4.41-2.062 19.93-2.062 19.93l2.729-3.037s-3.956-3.304-2.092-6.277c2.183-3.48 3.943 1.08 3.943 1.08s.64-2.4 3.6-3.36c.356-.714 1.04-2.69 1.44-3.872a1.08 1.08 0 0 1 1.27-.707c2.41.56 8.723 2.03 11.417 2.676.524.126.876.619.825 1.156l-.308 3.266z\",\n fill: \"#520038\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M101.22 76.514c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.961.491.083.805.647.702 1.26M94.26 75.074c-.104.613-.585 1.044-1.076.96-.49-.082-.805-.646-.702-1.26.104-.613.585-1.044 1.076-.96.491.082.805.646.702 1.26\",\n fill: \"#552950\"\n }\n }), h(\"path\", {\n attrs: {\n stroke: \"#DB836E\",\n strokeWidth: \"1.063\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M99.206 73.644l-.9 1.62-.3 4.38h-2.24\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M99.926 73.284s1.8-.72 2.52.54\",\n stroke: \"#5C2552\",\n strokeWidth: \"1.117\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M81.367 73.084s.48-1.12 1.12-.72c.64.4 1.28 1.44.56 2s.16 1.68.16 1.68\",\n stroke: \"#DB836E\",\n strokeWidth: \"1.117\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M92.326 71.724s1.84 1.12 4.16.96\",\n stroke: \"#5C2552\",\n strokeWidth: \"1.117\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M92.726 80.604s2.24 1.2 4.4 1.2M93.686 83.164s.96.4 1.52.32M83.687 80.044s1.786 6.547 9.262 7.954\",\n stroke: \"#DB836E\",\n strokeWidth: \"1.063\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M95.548 91.663s-1.068 2.821-8.298 2.105c-7.23-.717-10.29-5.044-10.29-5.044\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.136\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M78.126 87.478s6.526 4.972 16.47 2.486c0 0 9.577 1.02 11.536 5.322 5.36 11.77.543 36.835 0 39.962 3.496 4.055-.466 8.483-.466 8.483-15.624-3.548-35.81-.6-35.81-.6-4.849-3.546-1.223-9.044-1.223-9.044L62.38 110.32c-2.485-15.227.833-19.803 3.549-20.743 3.03-1.049 8.04-1.282 8.04-1.282.496-.058 1.08-.076 1.37-.233 2.36-1.282 2.787-.583 2.787-.583\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M65.828 89.81s-6.875.465-7.59 8.156c-.466 8.857 3.03 10.954 3.03 10.954s6.075 22.102 16.796 22.957c8.39-2.176 4.758-6.702 4.661-11.42-.233-11.304-7.108-16.897-7.108-16.897s-4.212-13.75-9.789-13.75\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M71.716 124.225s.855 11.264 9.828 6.486c4.765-2.536 7.581-13.828 9.789-22.568 1.456-5.768 2.58-12.197 2.58-12.197l-4.973-1.709s-2.408 5.516-7.769 12.275c-4.335 5.467-9.144 11.11-9.455 17.713\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M108.463 105.191s1.747 2.724-2.331 30.535c2.376 2.216 1.053 6.012-.233 7.51\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.085\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M123.262 131.527s-.427 2.732-11.77 1.981c-15.187-1.006-25.326-3.25-25.326-3.25l.933-5.8s.723.215 9.71-.068c11.887-.373 18.714-6.07 24.964-1.022 4.039 3.263 1.489 8.16 1.489 8.16\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M70.24 90.974s-5.593-4.739-11.054 2.68c-3.318 7.223.517 15.284 2.664 19.578-.31 3.729 2.33 4.311 2.33 4.311s.108.895 1.516 2.68c4.078-7.03 6.72-9.166 13.711-12.546-.328-.656-1.877-3.265-1.825-3.767.175-1.69-1.282-2.623-1.282-2.623s-.286-.156-1.165-2.738c-.788-2.313-2.036-5.177-4.895-7.575\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M90.232 288.027s4.855 2.308 8.313 1.155c3.188-1.063 5.12.755 8.002 1.331 2.881.577 7.769 1.243 13.207-1.424-.117-6.228-7.786-4.499-13.518-7.588-2.895-1.56-4.276-5.336-4.066-9.944H91.544s-1.573 11.89-1.312 16.47\",\n fill: \"#CBD1D1\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M90.207 287.833s2.745 1.437 7.639.738c3.456-.494 3.223.66 7.418 1.282 4.195.621 13.092-.194 14.334-1.126.466 1.242-.388 2.33-.388 2.33s-1.709.682-5.438.932c-2.295.154-8.098.276-10.14-.621-2.02-1.554-4.894-1.515-6.06-.234-4.427 1.075-7.184-.31-7.184-.31l-.181-2.991z\",\n fill: \"#2B0849\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M98.429 272.257h3.496s-.117 7.574 5.127 9.671c-5.244.7-9.672-2.602-8.623-9.671\",\n fill: \"#A4AABA\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M44.425 272.046s-2.208 7.774-4.702 12.899c-1.884 3.874-4.428 7.854 5.729 7.854 6.97 0 9.385-.503 7.782-6.917-1.604-6.415.279-13.836.279-13.836h-9.088z\",\n fill: \"#CBD1D1\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M38.066 290.277s2.198 1.225 6.954 1.225c6.376 0 8.646-1.73 8.646-1.73s.63 1.168-.649 2.27c-1.04.897-3.77 1.668-7.745 1.621-4.347-.05-6.115-.593-7.062-1.224-.864-.577-.72-1.657-.144-2.162\",\n fill: \"#2B0849\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M45.344 274.041s.035 1.592-.329 3.07c-.365 1.49-1.13 3.255-1.184 4.34-.061 1.206 4.755 1.657 5.403.036.65-1.622 1.357-6.737 2.006-7.602.648-.865-5.14-2.222-5.896.156\",\n fill: \"#A4AABA\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M89.476 277.57l13.899.095s1.349-56.643 1.925-66.909c.576-10.267 3.923-45.052 1.042-65.585l-13.037-.669-23.737.81s-.452 4.12-1.243 10.365c-.065.515-.708.874-.777 1.417-.078.608.439 1.407.332 2.044-2.455 14.627-5.797 32.736-8.256 46.837-.121.693-1.282 1.048-1.515 2.796-.042.314.22 1.584.116 1.865-7.14 19.473-12.202 52.601-15.66 67.19l15.176-.015s2.282-10.145 4.185-18.871c2.922-13.389 24.012-88.32 24.012-88.32l3.133-.954-.158 48.568s-.233 1.282.35 2.098c.583.815-.581 1.167-.408 2.331l.408 1.864s-.466 7.458-.932 12.352c-.467 4.895 1.145 40.69 1.145 40.69\",\n fill: \"#7BB2F9\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M64.57 218.881c1.197.099 4.195-2.097 7.225-5.127M96.024 222.534s2.881-1.152 6.34-4.034\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.085\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M96.973 219.373s2.882-1.153 6.34-4.034\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.032\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M63.172 222.144s2.724-.614 6.759-3.496M74.903 146.166c-.281 3.226.31 8.856-4.506 9.478M93.182 144.344s.115 14.557-1.344 15.65c-2.305 1.73-3.107 2.02-3.107 2.02M89.197 144.923s.269 13.144-1.01 25.088M83.525 170.71s6.81-1.051 9.116-1.051M46.026 270.045l-.892 4.538M46.937 263.289l-.815 4.157M62.725 202.503c-.33 1.618-.102 1.904-.449 3.438 0 0-2.756 1.903-2.29 3.923.466 2.02-.31 3.424-4.505 17.252-1.762 5.807-4.233 18.922-6.165 28.278-.03.144-.521 2.646-1.14 5.8M64.158 194.136c-.295 1.658-.6 3.31-.917 4.938M71.33 146.787l-1.244 10.877s-1.14.155-.519 2.33c.117 1.399-2.778 16.39-5.382 31.615M44.242 273.727H58.07\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.085\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M106.18 142.117c-3.028-.489-18.825-2.744-36.219.2a.625.625 0 0 0-.518.644c.063 1.307.044 2.343.015 2.995a.617.617 0 0 0 .716.636c3.303-.534 17.037-2.412 35.664-.266.347.04.66-.214.692-.56.124-1.347.16-2.425.17-3.029a.616.616 0 0 0-.52-.62\",\n fill: \"#192064\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M96.398 145.264l.003-5.102a.843.843 0 0 0-.809-.847 114.104 114.104 0 0 0-8.141-.014.85.85 0 0 0-.82.847l-.003 5.097c0 .476.388.857.864.845 2.478-.064 5.166-.067 8.03.017a.848.848 0 0 0 .876-.843\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M95.239 144.296l.002-3.195a.667.667 0 0 0-.643-.672c-1.9-.061-3.941-.073-6.094-.01a.675.675 0 0 0-.654.672l-.002 3.192c0 .376.305.677.68.669 1.859-.042 3.874-.043 6.02.012.376.01.69-.291.691-.668\",\n fill: \"#192064\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M90.102 273.522h12.819M91.216 269.761c.006 3.519-.072 5.55 0 6.292M90.923 263.474c-.009 1.599-.016 2.558-.016 4.505M90.44 170.404l.932 46.38s.7 1.631-.233 2.796c-.932 1.166 2.564.7.932 2.33-1.63 1.633.933 1.166 0 3.497-.618 1.546-1.031 21.921-1.138 36.513\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.085\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M73.736 98.665l2.214 4.312s2.098.816 1.865 2.68l.816 2.214M64.297 116.611c.233-.932 2.176-7.147 12.585-10.488M77.598 90.042s7.691 6.137 16.547 2.72\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.085\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M91.974 86.954s5.476-.816 7.574-4.545c1.297-.345.72 2.212-.33 3.671-.7.971-1.01 1.554-1.01 1.554s.194.31.155.816c-.053.697-.175.653-.272 1.048-.081.335.108.657 0 1.049-.046.17-.198.5-.382.878-.12.249-.072.687-.2.948-.231.469-1.562 1.87-2.622 2.855-3.826 3.554-5.018 1.644-6.001-.408-.894-1.865-.661-5.127-.874-6.875-.35-2.914-2.622-3.03-1.923-4.429.343-.685 2.87.69 3.263 1.748.757 2.04 2.952 1.807 2.622 1.69\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M99.8 82.429c-.465.077-.35.272-.97 1.243-.622.971-4.817 2.932-6.39 3.224-2.589.48-2.278-1.56-4.254-2.855-1.69-1.107-3.562-.638-1.398 1.398.99.932.932 1.107 1.398 3.205.335 1.506-.64 3.67.7 5.593\",\n stroke: \"#DB836E\",\n strokeWidth: \".774\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M79.543 108.673c-2.1 2.926-4.266 6.175-5.557 8.762\",\n stroke: \"#E59788\",\n strokeWidth: \".774\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M87.72 124.768s-2.098-1.942-5.127-2.719c-3.03-.777-3.574-.155-5.516.078-1.942.233-3.885-.932-3.652.7.233 1.63 5.05 1.01 5.206 2.097.155 1.087-6.37 2.796-8.313 2.175-.777.777.466 1.864 2.02 2.175.233 1.554 2.253 1.554 2.253 1.554s.699 1.01 2.641 1.088c2.486 1.32 8.934-.7 10.954-1.554 2.02-.855-.466-5.594-.466-5.594\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M73.425 122.826s.66 1.127 3.167 1.418c2.315.27 2.563.583 2.563.583s-2.545 2.894-9.07 2.272M72.416 129.274s3.826.097 4.933-.718M74.98 130.75s1.961.136 3.36-.505M77.232 131.916s1.748.019 2.914-.505M73.328 122.321s-.595-1.032 1.262-.427c1.671.544 2.833.055 5.128.155 1.389.061 3.067-.297 3.982.15 1.606.784 3.632 2.181 3.632 2.181s10.526 1.204 19.033-1.127M78.864 108.104s-8.39 2.758-13.168 12.12\",\n stroke: \"#E59788\",\n strokeWidth: \".774\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M109.278 112.533s3.38-3.613 7.575-4.662\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.085\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M107.375 123.006s9.697-2.745 11.445-.88\",\n stroke: \"#E59788\",\n strokeWidth: \".774\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M194.605 83.656l3.971-3.886M187.166 90.933l3.736-3.655M191.752 84.207l-4.462-4.56M198.453 91.057l-4.133-4.225M129.256 163.074l3.718-3.718M122.291 170.039l3.498-3.498M126.561 163.626l-4.27-4.27M132.975 170.039l-3.955-3.955\",\n stroke: \"#BFCDDD\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M190.156 211.779h-1.604a4.023 4.023 0 0 1-4.011-4.011V175.68a4.023 4.023 0 0 1 4.01-4.01h1.605a4.023 4.023 0 0 1 4.011 4.01v32.088a4.023 4.023 0 0 1-4.01 4.01\",\n fill: \"#A3B4C6\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M237.824 212.977a4.813 4.813 0 0 1-4.813 4.813h-86.636a4.813 4.813 0 0 1 0-9.626h86.636a4.813 4.813 0 0 1 4.813 4.813\",\n fill: \"#A3B4C6\"\n }\n }), h(\"mask\", {\n attrs: { fill: \"#fff\" }\n }), h(\"path\", {\n attrs: { fill: \"#A3B4C6\", mask: \"url(#d)\", d: \"M154.098 190.096h70.513v-84.617h-70.513z\" }\n }), h(\"path\", {\n attrs: {\n d: \"M224.928 190.096H153.78a3.219 3.219 0 0 1-3.208-3.209V167.92a3.219 3.219 0 0 1 3.208-3.21h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.219 3.219 0 0 1-3.21 3.209M224.928 130.832H153.78a3.218 3.218 0 0 1-3.208-3.208v-18.968a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.21v18.967a3.218 3.218 0 0 1-3.21 3.208\",\n fill: \"#BFCDDD\",\n mask: \"url(#d)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M159.563 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 120.546a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 120.546h-22.461a.802.802 0 0 1-.802-.802v-3.208c0-.443.359-.803.802-.803h22.46c.444 0 .803.36.803.803v3.208c0 .443-.36.802-.802.802\",\n fill: \"#FFF\",\n mask: \"url(#d)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M224.928 160.464H153.78a3.218 3.218 0 0 1-3.208-3.209v-18.967a3.219 3.219 0 0 1 3.208-3.209h71.148a3.219 3.219 0 0 1 3.209 3.209v18.967a3.218 3.218 0 0 1-3.21 3.209\",\n fill: \"#BFCDDD\",\n mask: \"url(#d)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M173.455 130.832h49.301M164.984 130.832h6.089M155.952 130.832h6.75M173.837 160.613h49.3M165.365 160.613h6.089M155.57 160.613h6.751\",\n stroke: \"#7C90A5\",\n strokeWidth: \"1.124\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n mask: \"url(#d)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M159.563 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M166.98 151.038a2.407 2.407 0 1 1 0-4.814 2.407 2.407 0 0 1 0 4.814M174.397 151.038a2.407 2.407 0 1 1 .001-4.814 2.407 2.407 0 0 1 0 4.814M222.539 151.038h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802M159.563 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M166.98 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M174.397 179.987a2.407 2.407 0 1 1 0-4.813 2.407 2.407 0 0 1 0 4.813M222.539 179.987h-22.461a.802.802 0 0 1-.802-.802v-3.209c0-.443.359-.802.802-.802h22.46c.444 0 .803.36.803.802v3.209c0 .443-.36.802-.802.802\",\n fill: \"#FFF\",\n mask: \"url(#d)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M203.04 221.108h-27.372a2.413 2.413 0 0 1-2.406-2.407v-11.448a2.414 2.414 0 0 1 2.406-2.407h27.372a2.414 2.414 0 0 1 2.407 2.407V218.7a2.413 2.413 0 0 1-2.407 2.407\",\n fill: \"#BFCDDD\",\n mask: \"url(#d)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M177.259 207.217v11.52M201.05 207.217v11.52\",\n stroke: \"#A3B4C6\",\n strokeWidth: \"1.124\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n mask: \"url(#d)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M162.873 267.894a9.422 9.422 0 0 1-9.422-9.422v-14.82a9.423 9.423 0 0 1 18.845 0v14.82a9.423 9.423 0 0 1-9.423 9.422\",\n fill: \"#5BA02E\",\n mask: \"url(#d)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M171.22 267.83a9.422 9.422 0 0 1-9.422-9.423v-3.438a9.423 9.423 0 0 1 18.845 0v3.438a9.423 9.423 0 0 1-9.422 9.423\",\n fill: \"#92C110\",\n mask: \"url(#d)\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M181.31 293.666h-27.712a3.209 3.209 0 0 1-3.209-3.21V269.79a3.209 3.209 0 0 1 3.209-3.21h27.711a3.209 3.209 0 0 1 3.209 3.21v20.668a3.209 3.209 0 0 1-3.209 3.209\",\n fill: \"#F2D7AD\",\n mask: \"url(#d)\"\n }\n })]\n )]\n );\n }\n};\n\nexport default ServerError;","var Unauthorized = {\n functional: true,\n render: function render() {\n var h = arguments[0];\n\n return h(\n \"svg\",\n {\n attrs: { width: \"251\", height: \"294\" }\n },\n [h(\n \"g\",\n {\n attrs: { fill: \"none\", fillRule: \"evenodd\" }\n },\n [h(\"path\", {\n attrs: {\n d: \"M0 129.023v-2.084C0 58.364 55.591 2.774 124.165 2.774h2.085c68.574 0 124.165 55.59 124.165 124.165v2.084c0 68.575-55.59 124.166-124.165 124.166h-2.085C55.591 253.189 0 197.598 0 129.023\",\n fill: \"#E4EBF7\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M41.417 132.92a8.231 8.231 0 1 1-16.38-1.65 8.231 8.231 0 0 1 16.38 1.65\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M38.652 136.36l10.425 5.91M49.989 148.505l-12.58 10.73\",\n stroke: \"#FFF\",\n strokeWidth: \"2\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M41.536 161.28a5.636 5.636 0 1 1-11.216-1.13 5.636 5.636 0 0 1 11.216 1.13M59.154 145.261a5.677 5.677 0 1 1-11.297-1.138 5.677 5.677 0 0 1 11.297 1.138M100.36 29.516l29.66-.013a4.562 4.562 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 0 0 .005 9.126M111.705 47.754l29.659-.013a4.563 4.563 0 1 0-.004-9.126l-29.66.013a4.563 4.563 0 1 0 .005 9.126\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M114.066 29.503V29.5l15.698-.007a4.563 4.563 0 1 0 .004 9.126l-15.698.007v-.002a4.562 4.562 0 0 0-.004-9.122M185.405 137.723c-.55 5.455-5.418 9.432-10.873 8.882-5.456-.55-9.432-5.418-8.882-10.873.55-5.455 5.418-9.432 10.873-8.882 5.455.55 9.432 5.418 8.882 10.873\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M180.17 143.772l12.572 7.129M193.841 158.42L178.67 171.36\",\n stroke: \"#FFF\",\n strokeWidth: \"2\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M185.55 171.926a6.798 6.798 0 1 1-13.528-1.363 6.798 6.798 0 0 1 13.527 1.363M204.12 155.285a6.848 6.848 0 1 1-13.627-1.375 6.848 6.848 0 0 1 13.626 1.375\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M152.988 194.074a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0zM225.931 118.217a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM217.09 153.051a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.42 0zM177.84 109.842a2.21 2.21 0 1 1-4.422 0 2.21 2.21 0 0 1 4.421 0zM196.114 94.454a2.21 2.21 0 1 1-4.421 0 2.21 2.21 0 0 1 4.421 0zM202.844 182.523a2.21 2.21 0 1 1-4.42 0 2.21 2.21 0 0 1 4.42 0z\",\n stroke: \"#FFF\",\n strokeWidth: \"2\"\n }\n }), h(\"path\", {\n attrs: {\n stroke: \"#FFF\",\n strokeWidth: \"2\",\n d: \"M215.125 155.262l-1.902 20.075-10.87 5.958M174.601 176.636l-6.322 9.761H156.98l-4.484 6.449M175.874 127.28V111.56M221.51 119.404l-12.77 7.859-15.228-7.86V96.668\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M180.68 29.32C180.68 13.128 193.806 0 210 0c16.193 0 29.32 13.127 29.32 29.32 0 16.194-13.127 29.322-29.32 29.322-16.193 0-29.32-13.128-29.32-29.321\",\n fill: \"#A26EF4\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M221.45 41.706l-21.563-.125a1.744 1.744 0 0 1-1.734-1.754l.071-12.23a1.744 1.744 0 0 1 1.754-1.734l21.562.125c.964.006 1.74.791 1.735 1.755l-.071 12.229a1.744 1.744 0 0 1-1.754 1.734\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M215.106 29.192c-.015 2.577-2.049 4.654-4.543 4.64-2.494-.014-4.504-2.115-4.489-4.693l.04-6.925c.016-2.577 2.05-4.654 4.543-4.64 2.494.015 4.504 2.116 4.49 4.693l-.04 6.925zm-4.53-14.074a6.877 6.877 0 0 0-6.916 6.837l-.043 7.368a6.877 6.877 0 0 0 13.754.08l.042-7.368a6.878 6.878 0 0 0-6.837-6.917zM167.566 68.367h-3.93a4.73 4.73 0 0 1-4.717-4.717 4.73 4.73 0 0 1 4.717-4.717h3.93a4.73 4.73 0 0 1 4.717 4.717 4.73 4.73 0 0 1-4.717 4.717\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M168.214 248.838a6.611 6.611 0 0 1-6.61-6.611v-66.108a6.611 6.611 0 0 1 13.221 0v66.108a6.611 6.611 0 0 1-6.61 6.61\",\n fill: \"#5BA02E\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M176.147 248.176a6.611 6.611 0 0 1-6.61-6.61v-33.054a6.611 6.611 0 1 1 13.221 0v33.053a6.611 6.611 0 0 1-6.61 6.611\",\n fill: \"#92C110\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M185.994 293.89h-27.376a3.17 3.17 0 0 1-3.17-3.17v-45.887a3.17 3.17 0 0 1 3.17-3.17h27.376a3.17 3.17 0 0 1 3.17 3.17v45.886a3.17 3.17 0 0 1-3.17 3.17\",\n fill: \"#F2D7AD\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M81.972 147.673s6.377-.927 17.566-1.28c11.729-.371 17.57 1.086 17.57 1.086s3.697-3.855.968-8.424c1.278-12.077 5.982-32.827.335-48.273-1.116-1.339-3.743-1.512-7.536-.62-1.337.315-7.147-.149-7.983-.1l-15.311-.347s-3.487-.17-8.035-.508c-1.512-.113-4.227-1.683-5.458-.338-.406.443-2.425 5.669-1.97 16.077l8.635 35.642s-3.141 3.61 1.219 7.085\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M75.768 73.325l-.9-6.397 11.982-6.52s7.302-.118 8.038 1.205c.737 1.324-5.616.993-5.616.993s-1.836 1.388-2.615 2.5c-1.654 2.363-.986 6.471-8.318 5.986-1.708.284-2.57 2.233-2.57 2.233\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M52.44 77.672s14.217 9.406 24.973 14.444c1.061.497-2.094 16.183-11.892 11.811-7.436-3.318-20.162-8.44-21.482-14.496-.71-3.258 2.543-7.643 8.401-11.76M141.862 80.113s-6.693 2.999-13.844 6.876c-3.894 2.11-10.137 4.704-12.33 7.988-6.224 9.314 3.536 11.22 12.947 7.503 6.71-2.651 28.999-12.127 13.227-22.367\",\n fill: \"#FFB594\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M76.166 66.36l3.06 3.881s-2.783 2.67-6.31 5.747c-7.103 6.195-12.803 14.296-15.995 16.44-3.966 2.662-9.754 3.314-12.177-.118-3.553-5.032.464-14.628 31.422-25.95\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M64.674 85.116s-2.34 8.413-8.912 14.447c.652.548 18.586 10.51 22.144 10.056 5.238-.669 6.417-18.968 1.145-20.531-.702-.208-5.901-1.286-8.853-2.167-.87-.26-1.611-1.71-3.545-.936l-1.98-.869zM128.362 85.826s5.318 1.956 7.325 13.734c-.546.274-17.55 12.35-21.829 7.805-6.534-6.94-.766-17.393 4.275-18.61 4.646-1.121 5.03-1.37 10.23-2.929\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M78.18 94.656s.911 7.41-4.914 13.078\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M87.397 94.68s3.124 2.572 10.263 2.572c7.14 0 9.074-3.437 9.074-3.437\",\n stroke: \"#E4EBF7\",\n strokeWidth: \".932\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M117.184 68.639l-6.781-6.177s-5.355-4.314-9.223-.893c-3.867 3.422 4.463 2.083 5.653 4.165 1.19 2.082.848 1.143-2.083.446-5.603-1.331-2.082.893 2.975 5.355 2.091 1.845 6.992.955 6.992.955l2.467-3.851z\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M105.282 91.315l-.297-10.937-15.918-.027-.53 10.45c-.026.403.17.788.515.999 2.049 1.251 9.387 5.093 15.799.424.287-.21.443-.554.431-.91\",\n fill: \"#FFB594\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M107.573 74.24c.817-1.147.982-9.118 1.015-11.928a1.046 1.046 0 0 0-.965-1.055l-4.62-.365c-7.71-1.044-17.071.624-18.253 6.346-5.482 5.813-.421 13.244-.421 13.244s1.963 3.566 4.305 6.791c.756 1.041.398-3.731 3.04-5.929 5.524-4.594 15.899-7.103 15.899-7.103\",\n fill: \"#5C2552\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M88.426 83.206s2.685 6.202 11.602 6.522c7.82.28 8.973-7.008 7.434-17.505l-.909-5.483c-6.118-2.897-15.478.54-15.478.54s-.576 2.044-.19 5.504c-2.276 2.066-1.824 5.618-1.824 5.618s-.905-1.922-1.98-2.321c-.86-.32-1.897.089-2.322 1.98-1.04 4.632 3.667 5.145 3.667 5.145\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n stroke: \"#DB836E\",\n strokeWidth: \"1.145\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n d: \"M100.843 77.099l1.701-.928-1.015-4.324.674-1.406\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M105.546 74.092c-.022.713-.452 1.279-.96 1.263-.51-.016-.904-.607-.882-1.32.021-.713.452-1.278.96-1.263.51.016.904.607.882 1.32M97.592 74.349c-.022.713-.452 1.278-.961 1.263-.509-.016-.904-.607-.882-1.32.022-.713.452-1.279.961-1.263.51.016.904.606.882 1.32\",\n fill: \"#552950\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M91.132 86.786s5.269 4.957 12.679 2.327\",\n stroke: \"#DB836E\",\n strokeWidth: \"1.145\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M99.776 81.903s-3.592.232-1.44-2.79c1.59-1.496 4.897-.46 4.897-.46s1.156 3.906-3.457 3.25\",\n fill: \"#DB836E\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M102.88 70.6s2.483.84 3.402.715M93.883 71.975s2.492-1.144 4.778-1.073\",\n stroke: \"#5C2552\",\n strokeWidth: \"1.526\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M86.32 77.374s.961.879 1.458 2.106c-.377.48-1.033 1.152-.236 1.809M99.337 83.719s1.911.151 2.509-.254\",\n stroke: \"#DB836E\",\n strokeWidth: \"1.145\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M87.782 115.821l15.73-3.012M100.165 115.821l10.04-2.008\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M66.508 86.763s-1.598 8.83-6.697 14.078\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.114\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M128.31 87.934s3.013 4.121 4.06 11.785\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M64.09 84.816s-6.03 9.912-13.607 9.903\",\n stroke: \"#DB836E\",\n strokeWidth: \".795\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M112.366 65.909l-.142 5.32s5.993 4.472 11.945 9.202c4.482 3.562 8.888 7.455 10.985 8.662 4.804 2.766 8.9 3.355 11.076 1.808 4.071-2.894 4.373-9.878-8.136-15.263-4.271-1.838-16.144-6.36-25.728-9.73\",\n fill: \"#FFC6A0\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M130.532 85.488s4.588 5.757 11.619 6.214\",\n stroke: \"#DB836E\",\n strokeWidth: \".75\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M121.708 105.73s-.393 8.564-1.34 13.612\",\n stroke: \"#E4EBF7\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M115.784 161.512s-3.57-1.488-2.678-7.14\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M101.52 290.246s4.326 2.057 7.408 1.03c2.842-.948 4.564.673 7.132 1.186 2.57.514 6.925 1.108 11.772-1.269-.104-5.551-6.939-4.01-12.048-6.763-2.582-1.39-3.812-4.757-3.625-8.863h-9.471s-1.402 10.596-1.169 14.68\",\n fill: \"#CBD1D1\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M101.496 290.073s2.447 1.281 6.809.658c3.081-.44 3.74.485 7.479 1.039 3.739.554 10.802-.07 11.91-.9.415 1.108-.347 2.077-.347 2.077s-1.523.608-4.847.831c-2.045.137-5.843.293-7.663-.507-1.8-1.385-5.286-1.917-5.77-.243-3.947.958-7.41-.288-7.41-.288l-.16-2.667z\",\n fill: \"#2B0849\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M108.824 276.19h3.116s-.103 6.751 4.57 8.62c-4.673.624-8.62-2.32-7.686-8.62\",\n fill: \"#A4AABA\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M57.65 272.52s-2.122 7.47-4.518 12.396c-1.811 3.724-4.255 7.548 5.505 7.548 6.698 0 9.02-.483 7.479-6.648-1.541-6.164.268-13.296.268-13.296H57.65z\",\n fill: \"#CBD1D1\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M51.54 290.04s2.111 1.178 6.682 1.178c6.128 0 8.31-1.662 8.31-1.662s.605 1.122-.624 2.18c-1 .862-3.624 1.603-7.444 1.559-4.177-.049-5.876-.57-6.786-1.177-.831-.554-.692-1.593-.138-2.078\",\n fill: \"#2B0849\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M58.533 274.438s.034 1.529-.315 2.95c-.352 1.431-1.087 3.127-1.139 4.17-.058 1.16 4.57 1.592 5.194.035.623-1.559 1.303-6.475 1.927-7.306.622-.831-4.94-2.135-5.667.15\",\n fill: \"#A4AABA\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M100.885 277.015l13.306.092s1.291-54.228 1.843-64.056c.552-9.828 3.756-43.13.997-62.788l-12.48-.64-22.725.776s-.433 3.944-1.19 9.921c-.062.493-.677.838-.744 1.358-.075.582.42 1.347.318 1.956-2.35 14.003-6.343 32.926-8.697 46.425-.116.663-1.227 1.004-1.45 2.677-.04.3.21 1.516.112 1.785-6.836 18.643-10.89 47.584-14.2 61.551l14.528-.014s2.185-8.524 4.008-16.878c2.796-12.817 22.987-84.553 22.987-84.553l3-.517 1.037 46.1s-.223 1.228.334 2.008c.558.782-.556 1.117-.39 2.233l.39 1.784s-.446 7.14-.892 11.826c-.446 4.685-.092 38.954-.092 38.954\",\n fill: \"#7BB2F9\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M77.438 220.434c1.146.094 4.016-2.008 6.916-4.91M107.55 223.931s2.758-1.103 6.069-3.862\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M108.459 220.905s2.759-1.104 6.07-3.863\",\n stroke: \"#648BD8\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M76.099 223.557s2.608-.587 6.47-3.346M87.33 150.82c-.27 3.088.297 8.478-4.315 9.073M104.829 149.075s.11 13.936-1.286 14.983c-2.207 1.655-2.975 1.934-2.975 1.934M101.014 149.63s.035 12.81-1.19 24.245M94.93 174.965s7.174-1.655 9.38-1.655M75.671 204.754c-.316 1.55-.64 3.067-.973 4.535 0 0-1.45 1.822-1.003 3.756.446 1.934-.943 2.034-4.96 15.273-1.686 5.559-4.464 18.49-6.313 27.447-.078.38-4.018 18.06-4.093 18.423M77.043 196.743a313.269 313.269 0 0 1-.877 4.729M83.908 151.414l-1.19 10.413s-1.091.148-.496 2.23c.111 1.34-2.66 15.692-5.153 30.267M57.58 272.94h13.238\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M117.377 147.423s-16.955-3.087-35.7.199c.157 2.501-.002 4.128-.002 4.128s14.607-2.802 35.476-.31c.251-2.342.226-4.017.226-4.017\",\n fill: \"#192064\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M107.511 150.353l.004-4.885a.807.807 0 0 0-.774-.81c-2.428-.092-5.04-.108-7.795-.014a.814.814 0 0 0-.784.81l-.003 4.88c0 .456.371.82.827.808a140.76 140.76 0 0 1 7.688.017.81.81 0 0 0 .837-.806\",\n fill: \"#FFF\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M106.402 149.426l.002-3.06a.64.64 0 0 0-.616-.643 94.135 94.135 0 0 0-5.834-.009.647.647 0 0 0-.626.643l-.001 3.056c0 .36.291.648.651.64 1.78-.04 3.708-.041 5.762.012.36.009.662-.279.662-.64\",\n fill: \"#192064\"\n }\n }), h(\"path\", {\n attrs: {\n d: \"M101.485 273.933h12.272M102.652 269.075c.006 3.368.04 5.759.11 6.47M102.667 263.125c-.009 1.53-.015 2.98-.016 4.313M102.204 174.024l.893 44.402s.669 1.561-.224 2.677c-.892 1.116 2.455.67.893 2.231-1.562 1.562.893 1.116 0 3.347-.592 1.48-.988 20.987-1.09 34.956\",\n stroke: \"#648BD8\",\n strokeWidth: \"1.051\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n }\n })]\n )]\n );\n }\n};\n\nexport default Unauthorized;","import PropTypes from '../_util/vue-types';\nimport { getComponentFromProp } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Icon from '../icon';\nimport Base from '../base';\nimport noFound from './noFound';\nimport serverError from './serverError';\nimport unauthorized from './unauthorized';\n\nexport var IconMap = {\n success: 'check-circle',\n error: 'close-circle',\n info: 'exclamation-circle',\n warning: 'warning'\n};\n\nexport var ExceptionMap = {\n '404': noFound,\n '500': serverError,\n '403': unauthorized\n};\n\n// ExceptionImageMap keys\nvar ExceptionStatus = Object.keys(ExceptionMap);\n\nexport var ResultProps = {\n prefixCls: PropTypes.string,\n icon: PropTypes.any,\n status: PropTypes.oneOf(['success', 'error', 'info', 'warning', '404', '403', '500']).def('info'),\n title: PropTypes.any,\n subTitle: PropTypes.any,\n extra: PropTypes.any\n};\n\nvar renderIcon = function renderIcon(h, prefixCls, _ref) {\n var status = _ref.status,\n icon = _ref.icon;\n\n if (ExceptionStatus.includes('' + status)) {\n var SVGComponent = ExceptionMap[status];\n return h(\n 'div',\n { 'class': prefixCls + '-icon ' + prefixCls + '-image' },\n [h(SVGComponent)]\n );\n }\n // prop `icon` require slot or VNode\n var iconString = IconMap[status];\n var iconNode = icon || h(Icon, {\n attrs: { type: iconString, theme: 'filled' }\n });\n return h(\n 'div',\n { 'class': prefixCls + '-icon' },\n [iconNode]\n );\n};\n\nvar renderExtra = function renderExtra(h, prefixCls, extra) {\n return extra && h(\n 'div',\n { 'class': prefixCls + '-extra' },\n [extra]\n );\n};\n\nvar Result = {\n name: 'AResult',\n props: ResultProps,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render(h) {\n var customizePrefixCls = this.prefixCls,\n status = this.status;\n\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('result', customizePrefixCls);\n\n var title = getComponentFromProp(this, 'title');\n var subTitle = getComponentFromProp(this, 'subTitle');\n var icon = getComponentFromProp(this, 'icon');\n var extra = getComponentFromProp(this, 'extra');\n\n return h(\n 'div',\n { 'class': prefixCls + ' ' + prefixCls + '-' + status },\n [renderIcon(h, prefixCls, { status: status, icon: icon }), h(\n 'div',\n { 'class': prefixCls + '-title' },\n [title]\n ), subTitle && h(\n 'div',\n { 'class': prefixCls + '-subtitle' },\n [subTitle]\n ), this.$slots['default'] && h(\n 'div',\n { 'class': prefixCls + '-content' },\n [this.$slots['default']]\n ), renderExtra(h, prefixCls, extra)]\n );\n }\n};\n\n/* add resource */\nResult.PRESENTED_IMAGE_403 = ExceptionMap[403];\nResult.PRESENTED_IMAGE_404 = ExceptionMap[404];\nResult.PRESENTED_IMAGE_500 = ExceptionMap[500];\n\n/* istanbul ignore next */\nResult.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Result.name, Result);\n};\nexport default Result;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { getOptionProps, getSlots, getComponentFromProp } from '../_util/props-util';\n\nvar ColProps = {\n child: PropTypes.any,\n bordered: PropTypes.bool,\n colon: PropTypes.bool,\n type: PropTypes.oneOf(['label', 'content']),\n layout: PropTypes.oneOf(['horizontal', 'vertical'])\n};\n\nvar Col = {\n functional: true,\n props: ColProps,\n render: function render(h, ctx) {\n var _ref;\n\n var _ctx$props = ctx.props,\n child = _ctx$props.child,\n bordered = _ctx$props.bordered,\n colon = _ctx$props.colon,\n type = _ctx$props.type,\n layout = _ctx$props.layout;\n\n var _getOptionProps = getOptionProps(child),\n prefixCls = _getOptionProps.prefixCls,\n _getOptionProps$span = _getOptionProps.span,\n span = _getOptionProps$span === undefined ? 1 : _getOptionProps$span;\n\n var key = ctx.data.key;\n\n var label = getComponentFromProp(child, 'label');\n var slots = getSlots(child);\n var labelProps = {\n attrs: {},\n 'class': [prefixCls + '-item-label', (_ref = {}, _defineProperty(_ref, prefixCls + '-item-colon', colon), _defineProperty(_ref, prefixCls + '-item-no-label', !label), _ref)],\n key: key + '-label'\n };\n if (layout === 'vertical') {\n labelProps.attrs.colSpan = span * 2 - 1;\n }\n\n if (bordered) {\n if (type === 'label') {\n return h(\n 'th',\n labelProps,\n [label]\n );\n }\n return h(\n 'td',\n { 'class': prefixCls + '-item-content', key: key + '-content', attrs: { colSpan: span * 2 - 1 }\n },\n [slots['default']]\n );\n }\n if (layout === 'vertical') {\n if (type === 'content') {\n return h(\n 'td',\n {\n attrs: { colSpan: span },\n 'class': prefixCls + '-item' },\n [h(\n 'span',\n { 'class': prefixCls + '-item-content', key: key + '-content' },\n [slots['default']]\n )]\n );\n }\n return h(\n 'td',\n {\n attrs: { colSpan: span },\n 'class': prefixCls + '-item' },\n [h(\n 'span',\n {\n 'class': [prefixCls + '-item-label', _defineProperty({}, prefixCls + '-item-colon', colon)],\n key: key + '-label'\n },\n [label]\n )]\n );\n }\n return h(\n 'td',\n {\n attrs: { colSpan: span },\n 'class': prefixCls + '-item' },\n [h(\n 'span',\n labelProps,\n [label]\n ), h(\n 'span',\n { 'class': prefixCls + '-item-content', key: key + '-content' },\n [slots['default']]\n )]\n );\n }\n};\n\nexport default Col;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport _typeof from 'babel-runtime/helpers/typeof';\nimport warning from '../_util/warning';\nimport ResponsiveObserve, { responsiveArray } from '../_util/responsiveObserve';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Col from './Col';\nimport PropTypes from '../_util/vue-types';\nimport { initDefaultProps, isValidElement, getOptionProps, getComponentFromProp } from '../_util/props-util';\nimport BaseMixin from '../_util/BaseMixin';\nimport Base from '../base';\nimport { cloneElement } from '../_util/vnode';\n\nexport var DescriptionsItemProps = {\n prefixCls: PropTypes.string,\n label: PropTypes.any,\n span: PropTypes.number\n};\n\nfunction toArray(value) {\n var ret = value;\n if (value === undefined) {\n ret = [];\n } else if (!Array.isArray(value)) {\n ret = [value];\n }\n return ret;\n}\n\nexport var DescriptionsItem = {\n name: 'ADescriptionsItem',\n props: initDefaultProps(DescriptionsItemProps, { span: 1 })\n};\n\nexport var DescriptionsProps = {\n prefixCls: PropTypes.string,\n bordered: PropTypes.bool,\n size: PropTypes.oneOf(['default', 'middle', 'small']).def('default'),\n title: PropTypes.any,\n column: PropTypes.oneOfType([PropTypes.number, PropTypes.object]),\n layout: PropTypes.oneOf(['horizontal', 'vertical']),\n colon: PropTypes.bool\n};\n\n/**\n * Convert children into `column` groups.\n * @param children: DescriptionsItem\n * @param column: number\n */\nvar generateChildrenRows = function generateChildrenRows(children, column) {\n var rows = [];\n var columns = null;\n var leftSpans = void 0;\n\n var itemNodes = toArray(children);\n itemNodes.forEach(function (node, index) {\n var itemProps = getOptionProps(node);\n var itemNode = node;\n\n if (!columns) {\n leftSpans = column;\n columns = [];\n rows.push(columns);\n }\n\n // Always set last span to align the end of Descriptions\n var lastItem = index === itemNodes.length - 1;\n var lastSpanSame = true;\n if (lastItem) {\n lastSpanSame = !itemProps.span || itemProps.span === leftSpans;\n itemNode = cloneElement(itemNode, {\n props: {\n span: leftSpans\n }\n });\n }\n\n // Calculate left fill span\n var _itemProps$span = itemProps.span,\n span = _itemProps$span === undefined ? 1 : _itemProps$span;\n\n columns.push(itemNode);\n leftSpans -= span;\n\n if (leftSpans <= 0) {\n columns = null;\n\n warning(leftSpans === 0 && lastSpanSame, 'Descriptions', 'Sum of column `span` in a line exceeds `column` of Descriptions.');\n }\n });\n\n return rows;\n};\n\nvar defaultColumnMap = {\n xxl: 3,\n xl: 3,\n lg: 3,\n md: 3,\n sm: 2,\n xs: 1\n};\n\nvar Descriptions = {\n name: 'ADescriptions',\n Item: DescriptionsItem,\n mixins: [BaseMixin],\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n props: initDefaultProps(DescriptionsProps, {\n column: defaultColumnMap\n }),\n data: function data() {\n return {\n screens: {},\n token: undefined\n };\n },\n\n methods: {\n getColumn: function getColumn() {\n var column = this.$props.column;\n\n if ((typeof column === 'undefined' ? 'undefined' : _typeof(column)) === 'object') {\n for (var i = 0; i < responsiveArray.length; i++) {\n var breakpoint = responsiveArray[i];\n if (this.screens[breakpoint] && column[breakpoint] !== undefined) {\n return column[breakpoint] || defaultColumnMap[breakpoint];\n }\n }\n }\n // If the configuration is not an object, it is a number, return number\n if (typeof column === 'number') {\n return column;\n }\n // If it is an object, but no response is found, this happens only in the test.\n // Maybe there are some strange environments\n return 3;\n },\n renderRow: function renderRow(children, index, _ref, bordered, layout, colon) {\n var prefixCls = _ref.prefixCls;\n var h = this.$createElement;\n\n var renderCol = function renderCol(colItem, type, idx) {\n return h(Col, {\n attrs: {\n child: colItem,\n bordered: bordered,\n colon: colon,\n type: type,\n\n layout: layout\n },\n key: type + '-' + (colItem.key || idx) });\n };\n\n var cloneChildren = [];\n var cloneContentChildren = [];\n toArray(children).forEach(function (childrenItem, idx) {\n cloneChildren.push(renderCol(childrenItem, 'label', idx));\n if (layout === 'vertical') {\n cloneContentChildren.push(renderCol(childrenItem, 'content', idx));\n } else if (bordered) {\n cloneChildren.push(renderCol(childrenItem, 'content', idx));\n }\n });\n\n if (layout === 'vertical') {\n return [h(\n 'tr',\n { 'class': prefixCls + '-row', key: 'label-' + index },\n [cloneChildren]\n ), h(\n 'tr',\n { 'class': prefixCls + '-row', key: 'content-' + index },\n [cloneContentChildren]\n )];\n }\n\n return h(\n 'tr',\n { 'class': prefixCls + '-row', key: index },\n [cloneChildren]\n );\n }\n },\n mounted: function mounted() {\n var _this = this;\n\n var column = this.$props.column;\n\n this.token = ResponsiveObserve.subscribe(function (screens) {\n if ((typeof column === 'undefined' ? 'undefined' : _typeof(column)) !== 'object') {\n return;\n }\n _this.setState({\n screens: screens\n });\n });\n },\n beforeDestroy: function beforeDestroy() {\n ResponsiveObserve.unsubscribe(this.token);\n },\n render: function render() {\n var _ref2,\n _this2 = this;\n\n var h = arguments[0];\n var _$props = this.$props,\n customizePrefixCls = _$props.prefixCls,\n size = _$props.size,\n _$props$bordered = _$props.bordered,\n bordered = _$props$bordered === undefined ? false : _$props$bordered,\n _$props$layout = _$props.layout,\n layout = _$props$layout === undefined ? 'horizontal' : _$props$layout,\n _$props$colon = _$props.colon,\n colon = _$props$colon === undefined ? true : _$props$colon;\n\n var title = getComponentFromProp(this, 'title') || null;\n var getPrefixCls = this.configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('descriptions', customizePrefixCls);\n\n var column = this.getColumn();\n var children = this.$slots['default'];\n var cloneChildren = toArray(children).map(function (child) {\n if (isValidElement(child)) {\n return cloneElement(child, {\n props: {\n prefixCls: prefixCls\n }\n });\n }\n return null;\n }).filter(function (node) {\n return node;\n });\n\n var childrenArray = generateChildrenRows(cloneChildren, column);\n return h(\n 'div',\n {\n 'class': [prefixCls, (_ref2 = {}, _defineProperty(_ref2, prefixCls + '-' + size, size !== 'default'), _defineProperty(_ref2, prefixCls + '-bordered', !!bordered), _ref2)]\n },\n [title && h(\n 'div',\n { 'class': prefixCls + '-title' },\n [title]\n ), h(\n 'div',\n { 'class': prefixCls + '-view' },\n [h('table', [h('tbody', [childrenArray.map(function (child, index) {\n return _this2.renderRow(child, index, {\n prefixCls: prefixCls\n }, bordered, layout, colon);\n })])])]\n )]\n );\n }\n};\n\nDescriptions.install = function (Vue) {\n Vue.use(Base);\n Vue.component(Descriptions.name, Descriptions);\n Vue.component(Descriptions.Item.name, Descriptions.Item);\n};\n\nexport default Descriptions;","import _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { getComponentFromProp, getOptionProps } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\nimport Icon from '../icon';\nimport Breadcrumb from '../breadcrumb';\nimport Avatar from '../avatar';\nimport TransButton from '../_util/transButton';\nimport LocaleReceiver from '../locale-provider/LocaleReceiver';\nimport Base from '../base';\n\nexport var PageHeaderProps = {\n backIcon: PropTypes.any,\n prefixCls: PropTypes.string,\n title: PropTypes.any,\n subTitle: PropTypes.any,\n breadcrumb: PropTypes.object,\n tags: PropTypes.any,\n footer: PropTypes.any,\n extra: PropTypes.any,\n avatar: PropTypes.object,\n ghost: PropTypes.bool\n};\n\nvar renderBack = function renderBack(instance, prefixCls, backIcon, onBack) {\n // eslint-disable-next-line no-unused-vars\n var h = instance.$createElement;\n if (!backIcon || !onBack) {\n return null;\n }\n return h(\n LocaleReceiver,\n {\n attrs: { componentName: 'PageHeader' }\n },\n [function (_ref) {\n var back = _ref.back;\n return h(\n 'div',\n { 'class': prefixCls + '-back' },\n [h(\n TransButton,\n {\n on: {\n 'click': function click(e) {\n instance.$emit('back', e);\n }\n },\n\n 'class': prefixCls + '-back-button',\n attrs: { 'aria-label': back\n }\n },\n [backIcon]\n )]\n );\n }]\n );\n};\n\nvar renderBreadcrumb = function renderBreadcrumb(h, breadcrumb) {\n return h(Breadcrumb, breadcrumb);\n};\n\nvar renderTitle = function renderTitle(h, prefixCls, instance) {\n var avatar = instance.avatar;\n\n var title = getComponentFromProp(instance, 'title');\n var subTitle = getComponentFromProp(instance, 'subTitle');\n var tags = getComponentFromProp(instance, 'tags');\n var extra = getComponentFromProp(instance, 'extra');\n var backIcon = getComponentFromProp(instance, 'backIcon') !== undefined ? getComponentFromProp(instance, 'backIcon') : h(Icon, {\n attrs: { type: 'arrow-left' }\n });\n var onBack = instance.$listeners.back;\n var headingPrefixCls = prefixCls + '-heading';\n if (title || subTitle || tags || extra) {\n var backIconDom = renderBack(instance, prefixCls, backIcon, onBack);\n return h(\n 'div',\n { 'class': headingPrefixCls },\n [backIconDom, avatar && h(Avatar, avatar), title && h(\n 'span',\n { 'class': headingPrefixCls + '-title' },\n [title]\n ), subTitle && h(\n 'span',\n { 'class': headingPrefixCls + '-sub-title' },\n [subTitle]\n ), tags && h(\n 'span',\n { 'class': headingPrefixCls + '-tags' },\n [tags]\n ), extra && h(\n 'span',\n { 'class': headingPrefixCls + '-extra' },\n [extra]\n )]\n );\n }\n return null;\n};\n\nvar renderFooter = function renderFooter(h, prefixCls, footer) {\n if (footer) {\n return h(\n 'div',\n { 'class': prefixCls + '-footer' },\n [footer]\n );\n }\n return null;\n};\n\nvar renderChildren = function renderChildren(h, prefixCls, children) {\n return h(\n 'div',\n { 'class': prefixCls + '-content' },\n [children]\n );\n};\n\nvar PageHeader = {\n name: 'APageHeader',\n props: PageHeaderProps,\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render(h) {\n var _configProvider = this.configProvider,\n getPrefixCls = _configProvider.getPrefixCls,\n pageHeader = _configProvider.pageHeader;\n\n var props = getOptionProps(this);\n var customizePrefixCls = props.prefixCls,\n breadcrumb = props.breadcrumb;\n\n var footer = getComponentFromProp(this, 'footer');\n var children = this.$slots['default'];\n\n var ghost = true;\n\n // Use `ghost` from `props` or from `ConfigProvider` instead.\n if ('ghost' in props) {\n ghost = props.ghost;\n } else if (pageHeader && 'ghost' in pageHeader) {\n ghost = pageHeader.ghost;\n }\n var prefixCls = getPrefixCls('page-header', customizePrefixCls);\n var breadcrumbDom = breadcrumb && breadcrumb.props && breadcrumb.props.routes ? renderBreadcrumb(h, breadcrumb) : null;\n var className = [prefixCls, _defineProperty({\n 'has-breadcrumb': breadcrumbDom,\n 'has-footer': footer\n }, prefixCls + '-ghost', ghost)];\n\n return h(\n 'div',\n { 'class': className },\n [breadcrumbDom, renderTitle(h, prefixCls, this), children && renderChildren(h, prefixCls, children), renderFooter(h, prefixCls, footer)]\n );\n }\n};\n\n/* istanbul ignore next */\nPageHeader.install = function (Vue) {\n Vue.use(Base);\n Vue.component(PageHeader.name, PageHeader);\n};\n\nexport default PageHeader;","import _mergeJSXProps from 'babel-helper-vue-jsx-merge-props';\nimport _defineProperty from 'babel-runtime/helpers/defineProperty';\nimport PropTypes from '../_util/vue-types';\nimport { filterEmpty, initDefaultProps } from '../_util/props-util';\nimport { ConfigConsumerProps } from '../config-provider/configConsumerProps';\n\nexport var SpaceSizeType = PropTypes.oneOfType([PropTypes.number, PropTypes.oneOf(['small', 'middle', 'large'])]);\n\nvar spaceSize = {\n small: 8,\n middle: 16,\n large: 24\n};\n\nexport var SpaceProps = {\n prefixCls: PropTypes.string,\n size: SpaceSizeType,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n align: PropTypes.oneOf(['start', 'end', 'center', 'baseline'])\n};\n\nvar Space = {\n functional: true,\n name: 'ASpace',\n props: initDefaultProps(SpaceProps, {\n size: 'small',\n direction: 'horizontal'\n }),\n inject: {\n configProvider: { 'default': function _default() {\n return ConfigConsumerProps;\n } }\n },\n render: function render(h, content) {\n var _ref;\n\n var customizePrefixCls = content.prefixCls,\n configProvider = content.injections.configProvider,\n children = content.children;\n var _content$props = content.props,\n align = _content$props.align,\n size = _content$props.size,\n direction = _content$props.direction;\n\n\n var getPrefixCls = configProvider.getPrefixCls;\n var prefixCls = getPrefixCls('space', customizePrefixCls);\n var items = filterEmpty(children);\n var len = items.length;\n\n if (len === 0) {\n return null;\n }\n\n var mergedAlign = align === undefined && direction === 'horizontal' ? 'center' : align;\n\n var someSpaceClass = [(_ref = {}, _defineProperty(_ref, prefixCls, true), _defineProperty(_ref, prefixCls + '-' + direction, true), _defineProperty(_ref, prefixCls + '-align-' + mergedAlign, mergedAlign), _ref)];\n\n if (content.data['class']) {\n someSpaceClass.push(content.data['class']);\n }\n\n var itemClassName = prefixCls + '-item';\n var marginDirection = 'marginRight'; // directionConfig === 'rtl' ? 'marginLeft' : 'marginRight';\n\n return h(\n 'div',\n _mergeJSXProps([content.data, { 'class': someSpaceClass }]),\n [items.map(function (child, i) {\n return h(\n 'div',\n {\n 'class': itemClassName,\n key: itemClassName + '-' + i,\n style: i === len - 1 ? {} : _defineProperty({}, direction === 'vertical' ? 'marginBottom' : marginDirection, typeof size === 'string' ? spaceSize[size] + 'px' : size + 'px')\n },\n [child]\n );\n })]\n );\n }\n};\n\n/* istanbul ignore next */\nSpace.install = function (Vue) {\n Vue.component(Space.name, Space);\n};\nexport default Space;","\nimport { default as Affix } from './affix';\n\nimport { default as Anchor } from './anchor';\n\nimport { default as AutoComplete } from './auto-complete';\n\nimport { default as Alert } from './alert';\n\nimport { default as Avatar } from './avatar';\n\nimport { default as BackTop } from './back-top';\n\nimport { default as Badge } from './badge';\n\nimport { default as Base } from './base';\n\nimport { default as Breadcrumb } from './breadcrumb';\n\nimport { default as Button } from './button';\n\nimport { default as Calendar } from './calendar';\n\nimport { default as Card } from './card';\n\nimport { default as Collapse } from './collapse';\n\nimport { default as Carousel } from './carousel';\n\nimport { default as Cascader } from './cascader';\n\nimport { default as Checkbox } from './checkbox';\n\nimport { default as Col } from './col';\n\nimport { default as DatePicker } from './date-picker';\n\nimport { default as Divider } from './divider';\n\nimport { default as Dropdown } from './dropdown';\n\nimport { default as Form } from './form';\nimport { default as FormModel } from './form-model';\n\nimport { default as Icon } from './icon';\n\nimport { default as Input } from './input';\n\nimport { default as InputNumber } from './input-number';\n\nimport { default as Layout } from './layout';\n\nimport { default as List } from './list';\n\nimport { default as LocaleProvider } from './locale-provider';\n\nimport { default as message } from './message';\n\nimport { default as Menu } from './menu';\n\nimport { default as Mentions } from './mentions';\n\nimport { default as Modal } from './modal';\n\nimport { default as notification } from './notification';\n\nimport { default as Pagination } from './pagination';\n\nimport { default as Popconfirm } from './popconfirm';\n\nimport { default as Popover } from './popover';\n\nimport { default as Progress } from './progress';\n\nimport { default as Radio } from './radio';\n\nimport { default as Rate } from './rate';\n\nimport { default as Row } from './row';\n\nimport { default as Select } from './select';\n\nimport { default as Slider } from './slider';\n\nimport { default as Spin } from './spin';\n\nimport { default as Statistic } from './statistic';\n\nimport { default as Steps } from './steps';\n\nimport { default as Switch } from './switch';\n\nimport { default as Table } from './table';\n\nimport { default as Transfer } from './transfer';\n\nimport { default as Tree } from './tree';\n\nimport { default as TreeSelect } from './tree-select';\n\nimport { default as Tabs } from './tabs';\n\nimport { default as Tag } from './tag';\n\nimport { default as TimePicker } from './time-picker';\n\nimport { default as Timeline } from './timeline';\n\nimport { default as Tooltip } from './tooltip';\n\nimport { default as Upload } from './upload';\n\nimport { default as version } from './version';\n\nimport { default as Drawer } from './drawer';\n\nimport { default as Skeleton } from './skeleton';\n\nimport { default as Comment } from './comment';\n\nimport { default as ConfigProvider } from './config-provider';\n\nimport { default as Empty } from './empty';\n\nimport { default as Result } from './result';\n\nimport { default as Descriptions } from './descriptions';\nimport { default as PageHeader } from './page-header';\nimport { default as Space } from './space';\n\nvar components = [Base, Affix, Anchor, AutoComplete, Alert, Avatar, BackTop, Badge, Breadcrumb, Button, Calendar, Card, Collapse, Carousel, Cascader, Checkbox, Col, DatePicker, Divider, Dropdown, Form, FormModel, Icon, Input, InputNumber, Layout, List, LocaleProvider, Menu, Mentions, Modal, Pagination, Popconfirm, Popover, Progress, Radio, Rate, Row, Select, Slider, Spin, Statistic, Steps, Switch, Table, Transfer, Tree, TreeSelect, Tabs, Tag, TimePicker, Timeline, Tooltip, Upload, Drawer, Skeleton, Comment,\n// ColorPicker,\nConfigProvider, Empty, Result, Descriptions, PageHeader, Space];\n\nvar install = function install(Vue) {\n components.map(function (component) {\n Vue.use(component);\n });\n\n Vue.prototype.$message = message;\n Vue.prototype.$notification = notification;\n Vue.prototype.$info = Modal.info;\n Vue.prototype.$success = Modal.success;\n Vue.prototype.$error = Modal.error;\n Vue.prototype.$warning = Modal.warning;\n Vue.prototype.$confirm = Modal.confirm;\n Vue.prototype.$destroyAll = Modal.destroyAll;\n};\n\n/* istanbul ignore if */\nif (typeof window !== 'undefined' && window.Vue) {\n install(window.Vue);\n}\n\nexport { Base, version, install, message, notification, Affix, Anchor, AutoComplete, Alert, Avatar, BackTop, Badge, Breadcrumb, Button, Calendar, Card, Collapse, Carousel, Cascader, Checkbox, Col, DatePicker, Divider, Dropdown, Form, FormModel, Icon, Input, InputNumber, Layout, List, LocaleProvider, Menu, Mentions, Modal, Pagination, Popconfirm, Popover, Progress, Radio, Rate, Row, Select, Slider, Spin, Statistic, Steps, Switch, Table, Transfer, Tree, TreeSelect, Tabs, Tag, TimePicker, Timeline, Tooltip, Upload, Drawer, Skeleton, Comment,\n// ColorPicker,\nConfigProvider, Empty, Result, Descriptions, PageHeader, Space };\n\nexport default {\n version: version,\n install: install\n};","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.colorConfig = void 0;\nvar colorConfig = ['#37a2da', '#32c5e9', '#67e0e3', '#9fe6b8', '#ffdb5c', '#ff9f7f', '#fb7293', '#e062ae', '#e690d1', '#e7bcf3', '#9d96f5', '#8378ea', '#96bfff'];\nexports.colorConfig = colorConfig;","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var global = require('../internals/global');\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar Object = global.Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","import _extends from 'babel-runtime/helpers/extends';\nimport Notification from '../vc-notification';\nimport Icon from '../icon';\n\nvar defaultDuration = 3;\nvar defaultTop = void 0;\nvar messageInstance = void 0;\nvar key = 1;\nvar prefixCls = 'ant-message';\nvar transitionName = 'move-up';\nvar getContainer = function getContainer() {\n return document.body;\n};\nvar maxCount = void 0;\n\nfunction getMessageInstance(callback) {\n if (messageInstance) {\n callback(messageInstance);\n return;\n }\n Notification.newInstance({\n prefixCls: prefixCls,\n transitionName: transitionName,\n style: { top: defaultTop }, // 覆盖原来的样式\n getContainer: getContainer,\n maxCount: maxCount\n }, function (instance) {\n if (messageInstance) {\n callback(messageInstance);\n return;\n }\n messageInstance = instance;\n callback(instance);\n });\n}\n\n// type NoticeType = 'info' | 'success' | 'error' | 'warning' | 'loading';\n\nfunction notice(args) {\n var duration = args.duration !== undefined ? args.duration : defaultDuration;\n var iconType = {\n info: 'info-circle',\n success: 'check-circle',\n error: 'close-circle',\n warning: 'exclamation-circle',\n loading: 'loading'\n }[args.type];\n\n var target = args.key || key++;\n var closePromise = new Promise(function (resolve) {\n var callback = function callback() {\n if (typeof args.onClose === 'function') {\n args.onClose();\n }\n return resolve(true);\n };\n getMessageInstance(function (instance) {\n instance.notice({\n key: target,\n duration: duration,\n style: {},\n content: function content(h) {\n var iconNode = h(Icon, {\n attrs: { type: iconType, theme: iconType === 'loading' ? 'outlined' : 'filled' }\n });\n var switchIconNode = iconType ? iconNode : '';\n return h(\n 'div',\n {\n 'class': prefixCls + '-custom-content' + (args.type ? ' ' + prefixCls + '-' + args.type : '')\n },\n [args.icon ? typeof args.icon === 'function' ? args.icon(h) : args.icon : switchIconNode, h('span', [typeof args.content === 'function' ? args.content(h) : args.content])]\n );\n },\n onClose: callback\n });\n });\n });\n var result = function result() {\n if (messageInstance) {\n messageInstance.removeNotice(target);\n }\n };\n result.then = function (filled, rejected) {\n return closePromise.then(filled, rejected);\n };\n result.promise = closePromise;\n return result;\n}\n\n// type ConfigContent = React.ReactNode | string;\n// type ConfigDuration = number | (() => void);\n// export type ConfigOnClose = () => void;\n\nfunction isArgsProps(content) {\n return Object.prototype.toString.call(content) === '[object Object]' && !!content.content;\n}\n\n// export interface ConfigOptions {\n// top?: number;\n// duration?: number;\n// prefixCls?: string;\n// getContainer?: () => HTMLElement;\n// transitionName?: string;\n// }\n\nvar api = {\n open: notice,\n config: function config(options) {\n if (options.top !== undefined) {\n defaultTop = options.top;\n messageInstance = null; // delete messageInstance for new defaultTop\n }\n if (options.duration !== undefined) {\n defaultDuration = options.duration;\n }\n if (options.prefixCls !== undefined) {\n prefixCls = options.prefixCls;\n }\n if (options.getContainer !== undefined) {\n getContainer = options.getContainer;\n }\n if (options.transitionName !== undefined) {\n transitionName = options.transitionName;\n messageInstance = null; // delete messageInstance for new transitionName\n }\n if (options.maxCount !== undefined) {\n maxCount = options.maxCount;\n messageInstance = null;\n }\n },\n destroy: function destroy() {\n if (messageInstance) {\n messageInstance.destroy();\n messageInstance = null;\n }\n }\n};\n\n['success', 'info', 'warning', 'error', 'loading'].forEach(function (type) {\n api[type] = function (content, duration, onClose) {\n if (isArgsProps(content)) {\n return api.open(_extends({}, content, { type: type }));\n }\n if (typeof duration === 'function') {\n onClose = duration;\n duration = undefined;\n }\n return api.open({ content: content, duration: duration, type: type, onClose: onClose });\n };\n});\n\napi.warn = api.warning;\n\nexport default api;","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _zh_CN = require('../vc-pagination/locale/zh_CN');\n\nvar _zh_CN2 = _interopRequireDefault(_zh_CN);\n\nvar _zh_CN3 = require('../date-picker/locale/zh_CN');\n\nvar _zh_CN4 = _interopRequireDefault(_zh_CN3);\n\nvar _zh_CN5 = require('../time-picker/locale/zh_CN');\n\nvar _zh_CN6 = _interopRequireDefault(_zh_CN5);\n\nvar _zh_CN7 = require('../calendar/locale/zh_CN');\n\nvar _zh_CN8 = _interopRequireDefault(_zh_CN7);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nexports['default'] = {\n locale: 'zh-cn',\n Pagination: _zh_CN2['default'],\n DatePicker: _zh_CN4['default'],\n TimePicker: _zh_CN6['default'],\n Calendar: _zh_CN8['default'],\n // locales for all comoponents\n global: {\n placeholder: '请选择'\n },\n Table: {\n filterTitle: '筛选',\n filterConfirm: '确定',\n filterReset: '重置',\n selectAll: '全选当页',\n selectInvert: '反选当页',\n sortTitle: '排序',\n expand: '展开行',\n collapse: '关闭行'\n },\n Modal: {\n okText: '确定',\n cancelText: '取消',\n justOkText: '知道了'\n },\n Popconfirm: {\n cancelText: '取消',\n okText: '确定'\n },\n Transfer: {\n searchPlaceholder: '请输入搜索内容',\n itemUnit: '项',\n itemsUnit: '项'\n },\n Upload: {\n uploading: '文件上传中',\n removeFile: '删除文件',\n uploadError: '上传错误',\n previewFile: '预览文件',\n downloadFile: '下载文件'\n },\n Empty: {\n description: '暂无数据'\n },\n Icon: {\n icon: '图标'\n },\n Text: {\n edit: '编辑',\n copy: '复制',\n copied: '复制成功',\n expand: '展开'\n },\n PageHeader: {\n back: '返回'\n }\n};","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","module.exports = { \"default\": require(\"core-js/library/fn/symbol\"), __esModule: true };","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setToStringTag = require('../internals/set-to-string-tag');\n\n$({ global: true }, { Reflect: {} });\n\n// Reflect[@@toStringTag] property\n// https://tc39.es/ecma262/#sec-reflect-@@tostringtag\nsetToStringTag(global.Reflect, 'Reflect', true);\n","export default {\n today: 'Today',\n now: 'Now',\n backToToday: 'Back to today',\n ok: 'Ok',\n clear: 'Clear',\n month: 'Month',\n year: 'Year',\n timeSelect: 'select time',\n dateSelect: 'select date',\n weekSelect: 'Choose a week',\n monthSelect: 'Choose a month',\n yearSelect: 'Choose a year',\n decadeSelect: 'Choose a decade',\n yearFormat: 'YYYY',\n dateFormat: 'M/D/YYYY',\n dayFormat: 'D',\n dateTimeFormat: 'M/D/YYYY HH:mm:ss',\n monthBeforeYear: true,\n previousMonth: 'Previous month (PageUp)',\n nextMonth: 'Next month (PageDown)',\n previousYear: 'Last year (Control + left)',\n nextYear: 'Next year (Control + right)',\n previousDecade: 'Last decade',\n nextDecade: 'Next decade',\n previousCentury: 'Last century',\n nextCentury: 'Next century'\n};","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(\n '_'\n ),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex: /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(\n '_'\n ),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar un$Slice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar Array = global.Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return un$Slice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","exports.f = require('./_wks');\n","var fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.exec('\\n') && re.flags === 's');\n});\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","exports.f = Object.getOwnPropertySymbols;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(\n '_'\n ),\n weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n"],"sourceRoot":""}