MOON
Server: Apache
System: Linux nserver.cafsindia.com 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: cafsindia (1002)
PHP: 8.2.30
Disabled: NONE
Upload Files
File: /home/cafsindia/snap.cafsinfotech.in/node_modules/vue2-datepicker/index.js.map
{"version":3,"file":"index.js","sources":["node_modules/@vue/babel-helper-vue-jsx-merge-props/dist/helper.js","node_modules/date-format-parse/es/util.js","node_modules/date-format-parse/es/locale/en.js","node_modules/date-format-parse/es/format.js","node_modules/date-format-parse/es/parse.js","src/util/date.js","src/util/base.js","node_modules/date-format-parse/lib/locale/en.js","src/locale/en.js","src/locale.js","src/util/throttle.js","src/util/dom.js","src/popup.vue","src/calendar/icon-button.vue","src/calendar/table-date.vue","src/calendar/table-month.vue","src/calendar/table-year.vue","src/calendar/calendar-panel.js","src/calendar/calendar-range.js","src/util/scrollbar-width.js","src/scrollbar/scrollbar-vertical.vue","src/time/list-columns.vue","src/time/list-options.vue","src/time/time-panel.vue","src/time/time-range.js","src/datetime/datetime-panel.js","src/datetime/datetime-range.js","src/date-picker.js","src/index.js"],"sourcesContent":["\"use strict\";function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}var normalMerge=[\"attrs\",\"props\",\"domProps\"],toArrayMerge=[\"class\",\"style\",\"directives\"],functionalMerge=[\"on\",\"nativeOn\"],mergeJsxProps=function(a){return a.reduce(function(c,a){for(var b in a)if(!c[b])c[b]=a[b];else if(-1!==normalMerge.indexOf(b))c[b]=_extends({},c[b],a[b]);else if(-1!==toArrayMerge.indexOf(b)){var d=c[b]instanceof Array?c[b]:[c[b]],e=a[b]instanceof Array?a[b]:[a[b]];c[b]=d.concat(e)}else if(-1!==functionalMerge.indexOf(b)){for(var f in a[b])if(c[b][f]){var g=c[b][f]instanceof Array?c[b][f]:[c[b][f]],h=a[b][f]instanceof Array?a[b][f]:[a[b][f]];c[b][f]=g.concat(h)}else c[b][f]=a[b][f];}else if(\"hook\"==b)for(var i in a[b])c[b][i]=c[b][i]?mergeFn(c[b][i],a[b][i]):a[b][i];else c[b]=a[b];return c},{})},mergeFn=function(a,b){return function(){a&&a.apply(this,arguments),b&&b.apply(this,arguments)}};module.exports=mergeJsxProps;\n","export function isDate(value) {\n  return value instanceof Date || Object.prototype.toString.call(value) === '[object Date]';\n}\nexport function toDate(value) {\n  if (isDate(value)) {\n    return new Date(value.getTime());\n  }\n\n  if (value == null) {\n    return new Date(NaN);\n  }\n\n  return new Date(value);\n}\nexport function isValidDate(value) {\n  return isDate(value) && !isNaN(value.getTime());\n}\nexport function startOfWeek(value) {\n  var firstDayOfWeek = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n  if (!(firstDayOfWeek >= 0 && firstDayOfWeek <= 6)) {\n    throw new RangeError('weekStartsOn must be between 0 and 6');\n  }\n\n  var date = toDate(value);\n  var day = date.getDay();\n  var diff = (day + 7 - firstDayOfWeek) % 7;\n  date.setDate(date.getDate() - diff);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}\nexport function startOfWeekYear(value) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      _ref$firstDayOfWeek = _ref.firstDayOfWeek,\n      firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek,\n      _ref$firstWeekContain = _ref.firstWeekContainsDate,\n      firstWeekContainsDate = _ref$firstWeekContain === void 0 ? 1 : _ref$firstWeekContain;\n\n  if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n    throw new RangeError('firstWeekContainsDate must be between 1 and 7');\n  }\n\n  var date = toDate(value);\n  var year = date.getFullYear();\n  var firstDateOfFirstWeek = new Date(0);\n\n  for (var i = year + 1; i >= year - 1; i--) {\n    firstDateOfFirstWeek.setFullYear(i, 0, firstWeekContainsDate);\n    firstDateOfFirstWeek.setHours(0, 0, 0, 0);\n    firstDateOfFirstWeek = startOfWeek(firstDateOfFirstWeek, firstDayOfWeek);\n\n    if (date.getTime() >= firstDateOfFirstWeek.getTime()) {\n      break;\n    }\n  }\n\n  return firstDateOfFirstWeek;\n}\nexport function getWeek(value) {\n  var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      _ref2$firstDayOfWeek = _ref2.firstDayOfWeek,\n      firstDayOfWeek = _ref2$firstDayOfWeek === void 0 ? 0 : _ref2$firstDayOfWeek,\n      _ref2$firstWeekContai = _ref2.firstWeekContainsDate,\n      firstWeekContainsDate = _ref2$firstWeekContai === void 0 ? 1 : _ref2$firstWeekContai;\n\n  var date = toDate(value);\n  var firstDateOfThisWeek = startOfWeek(date, firstDayOfWeek);\n  var firstDateOfFirstWeek = startOfWeekYear(date, {\n    firstDayOfWeek: firstDayOfWeek,\n    firstWeekContainsDate: firstWeekContainsDate\n  });\n  var diff = firstDateOfThisWeek.getTime() - firstDateOfFirstWeek.getTime();\n  return Math.round(diff / (7 * 24 * 3600 * 1000)) + 1;\n}","var locale = {\n  months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n  monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  firstDayOfWeek: 0,\n  firstWeekContainsDate: 1\n};\nexport default locale;","import { toDate, isValidDate, getWeek } from './util';\nimport defaultLocale from './locale/en';\nvar REGEX_FORMAT = /\\[([^\\]]+)]|YYYY|YY?|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|m{1,2}|s{1,2}|Z{1,2}|S{1,3}|w{1,2}|x|X|a|A/g;\n\nfunction pad(val) {\n  var len = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2;\n  var output = \"\".concat(Math.abs(val));\n  var sign = val < 0 ? '-' : '';\n\n  while (output.length < len) {\n    output = \"0\".concat(output);\n  }\n\n  return sign + output;\n}\n\nfunction getOffset(date) {\n  return Math.round(date.getTimezoneOffset() / 15) * 15;\n}\n\nfunction formatTimezone(offset) {\n  var delimeter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n  var sign = offset > 0 ? '-' : '+';\n  var absOffset = Math.abs(offset);\n  var hours = Math.floor(absOffset / 60);\n  var minutes = absOffset % 60;\n  return sign + pad(hours, 2) + delimeter + pad(minutes, 2);\n}\n\nvar meridiem = function meridiem(h, _, isLowercase) {\n  var word = h < 12 ? 'AM' : 'PM';\n  return isLowercase ? word.toLocaleLowerCase() : word;\n};\n\nvar formatFlags = {\n  Y: function Y(date) {\n    var y = date.getFullYear();\n    return y <= 9999 ? \"\".concat(y) : \"+\".concat(y);\n  },\n  // Year: 00, 01, ..., 99\n  YY: function YY(date) {\n    return pad(date.getFullYear(), 4).substr(2);\n  },\n  // Year: 1900, 1901, ..., 2099\n  YYYY: function YYYY(date) {\n    return pad(date.getFullYear(), 4);\n  },\n  // Month: 1, 2, ..., 12\n  M: function M(date) {\n    return date.getMonth() + 1;\n  },\n  // Month: 01, 02, ..., 12\n  MM: function MM(date) {\n    return pad(date.getMonth() + 1, 2);\n  },\n  MMM: function MMM(date, locale) {\n    return locale.monthsShort[date.getMonth()];\n  },\n  MMMM: function MMMM(date, locale) {\n    return locale.months[date.getMonth()];\n  },\n  // Day of month: 1, 2, ..., 31\n  D: function D(date) {\n    return date.getDate();\n  },\n  // Day of month: 01, 02, ..., 31\n  DD: function DD(date) {\n    return pad(date.getDate(), 2);\n  },\n  // Hour: 0, 1, ... 23\n  H: function H(date) {\n    return date.getHours();\n  },\n  // Hour: 00, 01, ..., 23\n  HH: function HH(date) {\n    return pad(date.getHours(), 2);\n  },\n  // Hour: 1, 2, ..., 12\n  h: function h(date) {\n    var hours = date.getHours();\n\n    if (hours === 0) {\n      return 12;\n    }\n\n    if (hours > 12) {\n      return hours % 12;\n    }\n\n    return hours;\n  },\n  // Hour: 01, 02, ..., 12\n  hh: function hh() {\n    var hours = formatFlags.h.apply(formatFlags, arguments);\n    return pad(hours, 2);\n  },\n  // Minute: 0, 1, ..., 59\n  m: function m(date) {\n    return date.getMinutes();\n  },\n  // Minute: 00, 01, ..., 59\n  mm: function mm(date) {\n    return pad(date.getMinutes(), 2);\n  },\n  // Second: 0, 1, ..., 59\n  s: function s(date) {\n    return date.getSeconds();\n  },\n  // Second: 00, 01, ..., 59\n  ss: function ss(date) {\n    return pad(date.getSeconds(), 2);\n  },\n  // 1/10 of second: 0, 1, ..., 9\n  S: function S(date) {\n    return Math.floor(date.getMilliseconds() / 100);\n  },\n  // 1/100 of second: 00, 01, ..., 99\n  SS: function SS(date) {\n    return pad(Math.floor(date.getMilliseconds() / 10), 2);\n  },\n  // Millisecond: 000, 001, ..., 999\n  SSS: function SSS(date) {\n    return pad(date.getMilliseconds(), 3);\n  },\n  // Day of week: 0, 1, ..., 6\n  d: function d(date) {\n    return date.getDay();\n  },\n  // Day of week: 'Su', 'Mo', ..., 'Sa'\n  dd: function dd(date, locale) {\n    return locale.weekdaysMin[date.getDay()];\n  },\n  // Day of week: 'Sun', 'Mon',..., 'Sat'\n  ddd: function ddd(date, locale) {\n    return locale.weekdaysShort[date.getDay()];\n  },\n  // Day of week: 'Sunday', 'Monday', ...,'Saturday'\n  dddd: function dddd(date, locale) {\n    return locale.weekdays[date.getDay()];\n  },\n  // AM, PM\n  A: function A(date, locale) {\n    var meridiemFunc = locale.meridiem || meridiem;\n    return meridiemFunc(date.getHours(), date.getMinutes(), false);\n  },\n  // am, pm\n  a: function a(date, locale) {\n    var meridiemFunc = locale.meridiem || meridiem;\n    return meridiemFunc(date.getHours(), date.getMinutes(), true);\n  },\n  // Timezone: -01:00, +00:00, ... +12:00\n  Z: function Z(date) {\n    return formatTimezone(getOffset(date), ':');\n  },\n  // Timezone: -0100, +0000, ... +1200\n  ZZ: function ZZ(date) {\n    return formatTimezone(getOffset(date));\n  },\n  // Seconds timestamp: 512969520\n  X: function X(date) {\n    return Math.floor(date.getTime() / 1000);\n  },\n  // Milliseconds timestamp: 512969520900\n  x: function x(date) {\n    return date.getTime();\n  },\n  w: function w(date, locale) {\n    return getWeek(date, {\n      firstDayOfWeek: locale.firstDayOfWeek,\n      firstWeekContainsDate: locale.firstWeekContainsDate\n    });\n  },\n  ww: function ww(date, locale) {\n    return pad(formatFlags.w(date, locale), 2);\n  }\n};\nexport function format(val, str) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  var formatStr = str ? String(str) : 'YYYY-MM-DDTHH:mm:ss.SSSZ';\n  var date = toDate(val);\n\n  if (!isValidDate(date)) {\n    return 'Invalid Date';\n  }\n\n  var locale = options.locale || defaultLocale;\n  return formatStr.replace(REGEX_FORMAT, function (match, p1) {\n    if (p1) {\n      return p1;\n    }\n\n    if (typeof formatFlags[match] === 'function') {\n      return \"\".concat(formatFlags[match](date, locale));\n    }\n\n    return match;\n  });\n}","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance\"); }\n\nfunction _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport defaultLocale from './locale/en';\nimport { startOfWeekYear } from './util';\nvar formattingTokens = /(\\[[^\\[]*\\])|(MM?M?M?|Do|DD?|ddd?d?|w[o|w]?|YYYY|YY|a|A|hh?|HH?|mm?|ss?|S{1,3}|x|X|ZZ?|.)/g;\nvar match1 = /\\d/; // 0 - 9\n\nvar match2 = /\\d\\d/; // 00 - 99\n\nvar match3 = /\\d{3}/; // 000 - 999\n\nvar match4 = /\\d{4}/; // 0000 - 9999\n\nvar match1to2 = /\\d\\d?/; // 0 - 99\n\nvar matchShortOffset = /[+-]\\d\\d:?\\d\\d/; // +00:00 -00:00 +0000 or -0000\n\nvar matchSigned = /[+-]?\\d+/; // -inf - inf\n\nvar matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/; // 123456789 123456789.123\n// const 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; // Word\n\nvar YEAR = 'year';\nvar MONTH = 'month';\nvar DAY = 'day';\nvar HOUR = 'hour';\nvar MINUTE = 'minute';\nvar SECOND = 'second';\nvar MILLISECOND = 'millisecond';\nvar parseFlags = {};\n\nvar addParseFlag = function addParseFlag(token, regex, callback) {\n  var tokens = Array.isArray(token) ? token : [token];\n  var func;\n\n  if (typeof callback === 'string') {\n    func = function func(input) {\n      var value = parseInt(input, 10);\n      return _defineProperty({}, callback, value);\n    };\n  } else {\n    func = callback;\n  }\n\n  tokens.forEach(function (key) {\n    parseFlags[key] = [regex, func];\n  });\n};\n\nvar escapeStringRegExp = function escapeStringRegExp(str) {\n  return str.replace(/[|\\\\{}()[\\]^$+*?.]/g, '\\\\$&');\n};\n\nvar matchWordRegExp = function matchWordRegExp(localeKey) {\n  return function (locale) {\n    var array = locale[localeKey];\n\n    if (!Array.isArray(array)) {\n      throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n    }\n\n    return new RegExp(array.map(escapeStringRegExp).join('|'));\n  };\n};\n\nvar matchWordCallback = function matchWordCallback(localeKey, key) {\n  return function (input, locale) {\n    var array = locale[localeKey];\n\n    if (!Array.isArray(array)) {\n      throw new Error(\"Locale[\".concat(localeKey, \"] need an array\"));\n    }\n\n    var index = array.indexOf(input);\n\n    if (index < 0) {\n      throw new Error('Invalid Word');\n    }\n\n    return _defineProperty({}, key, index);\n  };\n};\n\naddParseFlag('Y', matchSigned, YEAR);\naddParseFlag('YY', match2, function (input) {\n  var year = new Date().getFullYear();\n  var cent = Math.floor(year / 100);\n  var value = parseInt(input, 10);\n  value = (value > 68 ? cent - 1 : cent) * 100 + value;\n  return _defineProperty({}, YEAR, value);\n});\naddParseFlag('YYYY', match4, YEAR);\naddParseFlag('M', match1to2, function (input) {\n  return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MM', match2, function (input) {\n  return _defineProperty({}, MONTH, parseInt(input, 10) - 1);\n});\naddParseFlag('MMM', matchWordRegExp('monthsShort'), matchWordCallback('monthsShort', MONTH));\naddParseFlag('MMMM', matchWordRegExp('months'), matchWordCallback('months', MONTH));\naddParseFlag('D', match1to2, DAY);\naddParseFlag('DD', match2, DAY);\naddParseFlag(['H', 'h'], match1to2, HOUR);\naddParseFlag(['HH', 'hh'], match2, HOUR);\naddParseFlag('m', match1to2, MINUTE);\naddParseFlag('mm', match2, MINUTE);\naddParseFlag('s', match1to2, SECOND);\naddParseFlag('ss', match2, SECOND);\naddParseFlag('S', match1, function (input) {\n  return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 100);\n});\naddParseFlag('SS', match2, function (input) {\n  return _defineProperty({}, MILLISECOND, parseInt(input, 10) * 10);\n});\naddParseFlag('SSS', match3, MILLISECOND);\n\nfunction matchMeridiem(locale) {\n  return locale.meridiemParse || /[ap]\\.?m?\\.?/i;\n}\n\nfunction defaultIsPM(input) {\n  return \"\".concat(input).toLowerCase().charAt(0) === 'p';\n}\n\naddParseFlag(['A', 'a'], matchMeridiem, function (input, locale) {\n  var isPM = typeof locale.isPM === 'function' ? locale.isPM(input) : defaultIsPM(input);\n  return {\n    isPM: isPM\n  };\n});\n\nfunction offsetFromString(str) {\n  var _ref8 = str.match(/([+-]|\\d\\d)/g) || ['-', '0', '0'],\n      _ref9 = _slicedToArray(_ref8, 3),\n      symbol = _ref9[0],\n      hour = _ref9[1],\n      minute = _ref9[2];\n\n  var minutes = parseInt(hour, 10) * 60 + parseInt(minute, 10);\n\n  if (minutes === 0) {\n    return 0;\n  }\n\n  return symbol === '+' ? -minutes : +minutes;\n}\n\naddParseFlag(['Z', 'ZZ'], matchShortOffset, function (input) {\n  return {\n    offset: offsetFromString(input)\n  };\n});\naddParseFlag('x', matchSigned, function (input) {\n  return {\n    date: new Date(parseInt(input, 10))\n  };\n});\naddParseFlag('X', matchTimestamp, function (input) {\n  return {\n    date: new Date(parseFloat(input) * 1000)\n  };\n});\naddParseFlag('d', match1, 'weekday');\naddParseFlag('dd', matchWordRegExp('weekdaysMin'), matchWordCallback('weekdaysMin', 'weekday'));\naddParseFlag('ddd', matchWordRegExp('weekdaysShort'), matchWordCallback('weekdaysShort', 'weekday'));\naddParseFlag('dddd', matchWordRegExp('weekdays'), matchWordCallback('weekdays', 'weekday'));\naddParseFlag('w', match1to2, 'week');\naddParseFlag('ww', match2, 'week');\n\nfunction to24hour(hour, isPM) {\n  if (hour !== undefined && isPM !== undefined) {\n    if (isPM) {\n      if (hour < 12) {\n        return hour + 12;\n      }\n    } else if (hour === 12) {\n      return 0;\n    }\n  }\n\n  return hour;\n}\n\nfunction getFullInputArray(input) {\n  var backupDate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Date();\n  var result = [0, 0, 1, 0, 0, 0, 0];\n  var backupArr = [backupDate.getFullYear(), backupDate.getMonth(), backupDate.getDate(), backupDate.getHours(), backupDate.getMinutes(), backupDate.getSeconds(), backupDate.getMilliseconds()];\n  var useBackup = true;\n\n  for (var i = 0; i < 7; i++) {\n    if (input[i] === undefined) {\n      result[i] = useBackup ? backupArr[i] : result[i];\n    } else {\n      result[i] = input[i];\n      useBackup = false;\n    }\n  }\n\n  return result;\n}\n\nfunction createDate(y, m, d, h, M, s, ms) {\n  var date;\n\n  if (y < 100 && y >= 0) {\n    date = new Date(y + 400, m, d, h, M, s, ms);\n\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\nfunction createUTCDate() {\n  var date;\n\n  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n    args[_key] = arguments[_key];\n  }\n\n  var y = args[0];\n\n  if (y < 100 && y >= 0) {\n    args[0] += 400;\n    date = new Date(Date.UTC.apply(Date, args)); // eslint-disable-next-line no-restricted-globals\n\n    if (isFinite(date.getUTCFullYear())) {\n      date.setUTCFullYear(y);\n    }\n  } else {\n    date = new Date(Date.UTC.apply(Date, args));\n  }\n\n  return date;\n}\n\nfunction makeParser(dateString, format, locale) {\n  var tokens = format.match(formattingTokens);\n\n  if (!tokens) {\n    throw new Error();\n  }\n\n  var length = tokens.length;\n  var mark = {};\n\n  for (var i = 0; i < length; i += 1) {\n    var token = tokens[i];\n    var parseTo = parseFlags[token];\n\n    if (!parseTo) {\n      var word = token.replace(/^\\[|\\]$/g, '');\n\n      if (dateString.indexOf(word) === 0) {\n        dateString = dateString.substr(word.length);\n      } else {\n        throw new Error('not match');\n      }\n    } else {\n      var regex = typeof parseTo[0] === 'function' ? parseTo[0](locale) : parseTo[0];\n      var parser = parseTo[1];\n      var value = (regex.exec(dateString) || [])[0];\n      var obj = parser(value, locale);\n      mark = _objectSpread({}, mark, {}, obj);\n      dateString = dateString.replace(value, '');\n    }\n  }\n\n  return mark;\n}\n\nexport function parse(str, format) {\n  var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n  try {\n    var _options$locale = options.locale,\n        _locale = _options$locale === void 0 ? defaultLocale : _options$locale,\n        _options$backupDate = options.backupDate,\n        backupDate = _options$backupDate === void 0 ? new Date() : _options$backupDate;\n\n    var parseResult = makeParser(str, format, _locale);\n    var year = parseResult.year,\n        month = parseResult.month,\n        day = parseResult.day,\n        hour = parseResult.hour,\n        minute = parseResult.minute,\n        second = parseResult.second,\n        millisecond = parseResult.millisecond,\n        isPM = parseResult.isPM,\n        date = parseResult.date,\n        offset = parseResult.offset,\n        weekday = parseResult.weekday,\n        week = parseResult.week;\n\n    if (date) {\n      return date;\n    }\n\n    var inputArray = [year, month, day, hour, minute, second, millisecond];\n    inputArray[3] = to24hour(inputArray[3], isPM); // check week\n\n    if (week !== undefined && month === undefined && day === undefined) {\n      // new Date(year, 3) make sure in current year\n      var firstDate = startOfWeekYear(year === undefined ? backupDate : new Date(year, 3), {\n        firstDayOfWeek: _locale.firstDayOfWeek,\n        firstWeekContainsDate: _locale.firstWeekContainsDate\n      });\n      return new Date(firstDate.getTime() + (week - 1) * 7 * 24 * 3600 * 1000);\n    }\n\n    var parsedDate;\n    var result = getFullInputArray(inputArray, backupDate);\n\n    if (offset !== undefined) {\n      result[6] += offset * 60 * 1000;\n      parsedDate = createUTCDate.apply(void 0, _toConsumableArray(result));\n    } else {\n      parsedDate = createDate.apply(void 0, _toConsumableArray(result));\n    } // check weekday\n\n\n    if (weekday !== undefined && parsedDate.getDay() !== weekday) {\n      return new Date(NaN);\n    }\n\n    return parsedDate;\n  } catch (e) {\n    return new Date(NaN);\n  }\n}","// new Date(10, 0, 1) The year from 0 to 99 will be incremented by 1900 automatically.\nexport function createDate(y, M = 0, d = 1, h = 0, m = 0, s = 0, ms = 0) {\n  const date = new Date(y, M, d, h, m, s, ms);\n  if (y < 100 && y >= 0) {\n    date.setFullYear(y);\n  }\n  return date;\n}\n\nexport function isValidDate(date) {\n  return date instanceof Date && !isNaN(date);\n}\n\nexport function isValidRangeDate(date) {\n  return Array.isArray(date) && date.length === 2 && date.every(isValidDate) && date[0] <= date[1];\n}\n\nexport function isValidDates(dates) {\n  return Array.isArray(dates) && dates.every(isValidDate);\n}\n\nexport function getValidDate(value, ...backup) {\n  const date = new Date(value);\n  if (isValidDate(date)) {\n    return date;\n  }\n  if (backup.length) {\n    return getValidDate(...backup);\n  }\n  return new Date();\n}\n\nexport function startOfYear(value) {\n  const date = new Date(value);\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}\n\nexport function startOfMonth(value) {\n  const date = new Date(value);\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}\n\nexport function startOfDay(value) {\n  const date = new Date(value);\n  date.setHours(0, 0, 0, 0);\n  return date;\n}\n\nexport function getCalendar({ firstDayOfWeek, year, month }) {\n  const arr = [];\n  // change to the last day of the last month\n  const calendar = createDate(year, month, 0);\n  const lastDayInLastMonth = calendar.getDate();\n  // getDay() 0 is Sunday, 1 is Monday\n  const firstDayInLastMonth = lastDayInLastMonth - ((calendar.getDay() + 7 - firstDayOfWeek) % 7);\n  for (let i = firstDayInLastMonth; i <= lastDayInLastMonth; i++) {\n    arr.push(createDate(year, month, i - lastDayInLastMonth));\n  }\n  // change to the last day of the current month\n  calendar.setMonth(month + 1, 0);\n  const lastDayInCurrentMonth = calendar.getDate();\n  for (let i = 1; i <= lastDayInCurrentMonth; i++) {\n    arr.push(createDate(year, month, i));\n  }\n\n  const lastMonthLength = lastDayInLastMonth - firstDayInLastMonth + 1;\n  const nextMonthLength = 6 * 7 - lastMonthLength - lastDayInCurrentMonth;\n  for (let i = 1; i <= nextMonthLength; i++) {\n    arr.push(createDate(year, month, lastDayInCurrentMonth + i));\n  }\n  return arr;\n}\n\nexport function setMonth(dirtyDate, dirtyMonth) {\n  const date = new Date(dirtyDate);\n  const month = typeof dirtyMonth === 'function' ? dirtyMonth(date.getMonth()) : Number(dirtyMonth);\n  const year = date.getFullYear();\n  const daysInMonth = createDate(year, month + 1, 0).getDate();\n  const day = date.getDate();\n  date.setMonth(month, Math.min(day, daysInMonth));\n  return date;\n}\n\nexport function setYear(dirtyDate, dirtyYear) {\n  const date = new Date(dirtyDate);\n  const year = typeof dirtyYear === 'function' ? dirtyYear(date.getFullYear()) : dirtyYear;\n  date.setFullYear(year);\n  return date;\n}\n\nexport function assignTime(target, source) {\n  const date = new Date(target);\n  const time = new Date(source);\n  date.setHours(time.getHours(), time.getMinutes(), time.getSeconds());\n  return date;\n}\n","/**\n * chunk the array\n * @param {Array} arr\n * @param {Number} size\n */\nexport function chunk(arr, size) {\n  if (!Array.isArray(arr)) {\n    return [];\n  }\n  const result = [];\n  const len = arr.length;\n  let i = 0;\n  size = size || len;\n  while (i < len) {\n    result.push(arr.slice(i, (i += size)));\n  }\n  return result;\n}\n\n/**\n * isObject\n * @param {*} obj\n * @returns {Boolean}\n */\nexport function isObject(obj) {\n  return Object.prototype.toString.call(obj) === '[object Object]';\n}\n\n/**\n * pick object\n * @param {Object} obj\n * @param {Array|String} props\n */\nexport function pick(obj, props) {\n  if (!isObject(obj)) return {};\n  if (!Array.isArray(props)) {\n    props = [props];\n  }\n  const res = {};\n  props.forEach(prop => {\n    if (prop in obj) {\n      res[prop] = obj[prop];\n    }\n  });\n  return res;\n}\n\n/**\n * deep merge two object without merging array\n * @param {object} target\n * @param {object} source\n */\nexport function mergeDeep(target, source) {\n  if (!isObject(target)) {\n    return {};\n  }\n  let result = target;\n  if (isObject(source)) {\n    Object.keys(source).forEach(key => {\n      let value = source[key];\n      if (isObject(value) && isObject(target[key])) {\n        value = mergeDeep(target[key], value);\n      }\n      result = { ...result, [key]: value };\n    });\n  }\n  return result;\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports[\"default\"] = void 0;\nvar locale = {\n  months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n  monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n  weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n  weekdaysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n  weekdaysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n  firstDayOfWeek: 0,\n  firstWeekContainsDate: 1\n};\nvar _default = locale;\nexports[\"default\"] = _default;\nmodule.exports = exports.default;","import en from 'date-format-parse/lib/locale/en';\n\nconst lang = {\n  formatLocale: en,\n  yearFormat: 'YYYY',\n  monthFormat: 'MMM',\n  monthBeforeYear: true,\n};\n\nexport default lang;\n","import enUS from './locale/en';\n\nlet defaultLocale = 'en';\nconst locales = {};\nlocales[defaultLocale] = enUS;\n\nexport function locale(name, object, isLocal) {\n  if (typeof name !== 'string') return locales[defaultLocale];\n  let l = defaultLocale;\n  if (locales[name]) {\n    l = name;\n  }\n  if (object) {\n    locales[name] = object;\n    l = name;\n  }\n  if (!isLocal) {\n    defaultLocale = l;\n  }\n  return locales[name] || locales[defaultLocale];\n}\n\n/**\n * get locale object\n * @param {string} name lang\n */\nexport function getLocale(name) {\n  return locale(name, null, true);\n}\n","/* istanbul ignore file */\nexport function rafThrottle(fn) {\n  let isRunning = false;\n  return function fnBinfRaf(...args) {\n    if (isRunning) return;\n    isRunning = true;\n    requestAnimationFrame(() => {\n      isRunning = false;\n      fn.apply(this, args);\n    });\n  };\n}\n","/**\n * get the hidden element width, height\n * @param {HTMLElement} element dom\n */\nexport function getPopupElementSize(element) {\n  const originalDisplay = element.style.display;\n  const originalVisibility = element.style.visibility;\n  element.style.display = 'block';\n  element.style.visibility = 'hidden';\n  const styles = window.getComputedStyle(element);\n  const width =\n    element.offsetWidth + parseInt(styles.marginLeft, 10) + parseInt(styles.marginRight, 10);\n  const height =\n    element.offsetHeight + parseInt(styles.marginTop, 10) + parseInt(styles.marginBottom, 10);\n  element.style.display = originalDisplay;\n  element.style.visibility = originalVisibility;\n  return { width, height };\n}\n\n/**\n * get the popup position\n * @param {HTMLElement} el relative element\n * @param {Number} targetWidth target element's width\n * @param {Number} targetHeight target element's height\n * @param {Boolean} fixed\n */\nexport function getRelativePosition(el, targetWidth, targetHeight, fixed) {\n  let left = 0;\n  let top = 0;\n  let offsetX = 0;\n  let offsetY = 0;\n  const relativeRect = el.getBoundingClientRect();\n  const dw = document.documentElement.clientWidth;\n  const dh = document.documentElement.clientHeight;\n  if (fixed) {\n    offsetX = window.pageXOffset + relativeRect.left;\n    offsetY = window.pageYOffset + relativeRect.top;\n  }\n  if (dw - relativeRect.left < targetWidth && relativeRect.right < targetWidth) {\n    left = offsetX - relativeRect.left + 1;\n  } else if (relativeRect.left + relativeRect.width / 2 <= dw / 2) {\n    left = offsetX;\n  } else {\n    left = offsetX + relativeRect.width - targetWidth;\n  }\n  if (relativeRect.top <= targetHeight && dh - relativeRect.bottom <= targetHeight) {\n    top = offsetY + dh - relativeRect.top - targetHeight;\n  } else if (relativeRect.top + relativeRect.height / 2 <= dh / 2) {\n    top = offsetY + relativeRect.height;\n  } else {\n    top = offsetY - targetHeight;\n  }\n  return { left: `${left}px`, top: `${top}px` };\n}\n\nexport function getScrollParent(node, until = document.body) {\n  if (!node || node === until) {\n    return null;\n  }\n\n  const style = (value, prop) => getComputedStyle(value, null).getPropertyValue(prop);\n\n  const regex = /(auto|scroll)/;\n\n  const scroll = regex.test(\n    style(node, 'overflow') + style(node, 'overflow-y') + style(node, 'overflow-x')\n  );\n\n  return scroll ? node : getScrollParent(node.parentNode, until);\n}\n","<template>\n  <transition :name=\"`${prefixClass}-zoom-in-down`\">\n    <div\n      v-if=\"visible\"\n      :class=\"`${prefixClass}-datepicker-main ${prefixClass}-datepicker-popup`\"\n      :style=\"{ top, left, position: 'absolute' }\"\n    >\n      <slot></slot>\n    </div>\n  </transition>\n</template>\n\n<script>\nimport { rafThrottle } from './util/throttle';\nimport { getPopupElementSize, getRelativePosition, getScrollParent } from './util/dom';\n\nexport default {\n  name: 'Popup',\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  props: {\n    visible: {\n      type: Boolean,\n      default: false,\n    },\n    appendToBody: {\n      type: Boolean,\n      default: true,\n    },\n  },\n  data() {\n    return {\n      top: '',\n      left: '',\n    };\n  },\n  watch: {\n    visible: {\n      immediate: true,\n      handler(val) {\n        this.$nextTick(() => {\n          if (val) {\n            this.displayPopup();\n          }\n        });\n      },\n    },\n  },\n  mounted() {\n    if (this.appendToBody) {\n      document.body.appendChild(this.$el);\n    }\n    this._clickoutEvent = 'ontouchend' in document ? 'touchstart' : 'mousedown';\n\n    document.addEventListener(this._clickoutEvent, this.handleClickOutside);\n\n    // change the popup position when resize or scroll\n    const relativeElement = this.$parent.$el;\n    this._displayPopup = rafThrottle(() => this.displayPopup());\n    this._scrollParent = getScrollParent(relativeElement) || window;\n    this._scrollParent.addEventListener('scroll', this._displayPopup);\n    window.addEventListener('resize', this._displayPopup);\n  },\n  beforeDestroy() {\n    if (this.appendToBody && this.$el.parentNode) {\n      this.$el.parentNode.removeChild(this.$el);\n    }\n\n    document.removeEventListener(this._clickoutEvent, this.handleClickOutside);\n\n    this._scrollParent.removeEventListener('scroll', this._displayPopup);\n    window.removeEventListener('resize', this._displayPopup);\n  },\n  methods: {\n    handleClickOutside(evt) {\n      if (!this.visible) return;\n      const { target } = evt;\n      const el = this.$el;\n      if (el && !el.contains(target)) {\n        this.$emit('clickoutside', evt);\n      }\n    },\n    displayPopup() {\n      if (!this.visible) return;\n      const popup = this.$el;\n      const relativeElement = this.$parent.$el;\n      const { appendToBody } = this;\n      if (!this._popupRect) {\n        this._popupRect = getPopupElementSize(popup);\n      }\n      const { width, height } = this._popupRect;\n      const { left, top } = getRelativePosition(relativeElement, width, height, appendToBody);\n      this.left = left;\n      this.top = top;\n    },\n  },\n};\n</script>\n","<template>\n  <button\n    type=\"button\"\n    :disabled=\"disabled\"\n    :class=\"[\n      `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-icon-${type}`,\n      {\n        disabled: disabled,\n      },\n    ]\"\n    v-on=\"$listeners\"\n  >\n    <i :class=\"`${prefixClass}-icon-${type}`\"></i>\n  </button>\n</template>\n\n<script>\nexport default {\n  props: {\n    type: String,\n    disabled: Boolean,\n  },\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n};\n</script>\n","<template>\n  <div :class=\"`${prefixClass}-calendar ${prefixClass}-calendar-panel-date`\">\n    <div :class=\"`${prefixClass}-calendar-header`\">\n      <icon-button\n        type=\"double-left\"\n        :disabled=\"isDisabledArrows('last-year')\"\n        @click=\"handleIconDoubleLeftClick\"\n      ></icon-button>\n      <icon-button\n        type=\"left\"\n        :disabled=\"isDisabledArrows('last-month')\"\n        @click=\"handleIconLeftClick\"\n      ></icon-button>\n      <icon-button\n        type=\"double-right\"\n        :disabled=\"isDisabledArrows('next-year')\"\n        @click=\"handleIconDoubleRightClick\"\n      ></icon-button>\n      <icon-button\n        type=\"right\"\n        :disabled=\"isDisabledArrows('next-month')\"\n        @click=\"handleIconRightClick\"\n      ></icon-button>\n      <span :class=\"`${prefixClass}-calendar-header-label`\">\n        <button\n          v-for=\"item in yearMonth\"\n          :key=\"item.panel\"\n          type=\"button\"\n          :class=\"\n            `${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-current-${item.panel}`\n          \"\n          @click=\"handlePanelChange(item.panel)\"\n        >\n          {{ item.label }}\n        </button>\n      </span>\n    </div>\n    <div :class=\"`${prefixClass}-calendar-content`\">\n      <table :class=\"`${prefixClass}-table ${prefixClass}-table-date`\">\n        <thead>\n          <tr>\n            <th v-if=\"showWeekNumber\" :class=\"`${prefixClass}-week-number-header`\"></th>\n            <th v-for=\"day in days\" :key=\"day\">{{ day }}</th>\n          </tr>\n        </thead>\n        <tbody @click=\"handleCellClick\">\n          <tr\n            v-for=\"(row, i) in dates\"\n            :key=\"i\"\n            :class=\"[`${prefixClass}-date-row`, getRowClasses(row)]\"\n          >\n            <td\n              v-if=\"showWeekNumber\"\n              :data-row-col=\"`${i},0`\"\n              :class=\"`${prefixClass}-week-number`\"\n            >\n              {{ getWeekNumber(row[0]) }}\n            </td>\n            <td\n              v-for=\"(cell, j) in row\"\n              :key=\"j\"\n              :data-row-col=\"`${i},${j}`\"\n              class=\"cell\"\n              :class=\"getCellClasses(cell)\"\n              :title=\"getCellTitle(cell)\"\n              @mouseenter=\"handleMouseEnter(cell)\"\n              @mouseleave=\"handleMouseLeave(cell)\"\n            >\n              <div>{{ cell.getDate() }}</div>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { getWeek, format } from 'date-format-parse';\nimport IconButton from './icon-button';\nimport { chunk } from '../util/base';\nimport { getCalendar, setMonth, setYear } from '../util/date';\nimport { getLocale } from '../locale';\n\nexport default {\n  name: 'TableDate',\n  components: { IconButton },\n  inject: {\n    getLocale: {\n      default: () => getLocale,\n    },\n    getWeek: {\n      default: () => getWeek,\n    },\n    prefixClass: {\n      default: 'mx',\n    },\n    onDateMouseEnter: {\n      default: undefined,\n    },\n    onDateMouseLeave: {\n      default: undefined,\n    },\n  },\n  props: {\n    disabledCalendarChanger: {\n      type: Function,\n      default: () => false,\n    },\n    calendar: {\n      type: Date,\n      default: () => new Date(),\n    },\n    showWeekNumber: {\n      type: Boolean,\n      default: false,\n    },\n    titleFormat: {\n      type: String,\n      default: 'YYYY-MM-DD',\n    },\n    getRowClasses: {\n      type: Function,\n      default: () => [],\n    },\n    getCellClasses: {\n      type: Function,\n      default: () => [],\n    },\n  },\n  computed: {\n    firstDayOfWeek() {\n      return this.getLocale().formatLocale.firstDayOfWeek || 0;\n    },\n    yearMonth() {\n      const { yearFormat, monthBeforeYear, monthFormat = 'MMM' } = this.getLocale();\n      const yearLabel = {\n        panel: 'year',\n        label: this.formatDate(this.calendar, yearFormat),\n      };\n      const monthLabel = {\n        panel: 'month',\n        label: this.formatDate(this.calendar, monthFormat),\n      };\n      return monthBeforeYear ? [monthLabel, yearLabel] : [yearLabel, monthLabel];\n    },\n    days() {\n      const locale = this.getLocale();\n      const days = locale.days || locale.formatLocale.weekdaysMin;\n      return days.concat(days).slice(this.firstDayOfWeek, this.firstDayOfWeek + 7);\n    },\n    dates() {\n      const year = this.calendar.getFullYear();\n      const month = this.calendar.getMonth();\n      const arr = getCalendar({\n        firstDayOfWeek: this.firstDayOfWeek,\n        year,\n        month,\n      });\n      return chunk(arr, 7);\n    },\n  },\n  methods: {\n    isDisabledArrows(type) {\n      const date = new Date(this.calendar);\n      switch (type) {\n        case 'last-year':\n          date.setFullYear(date.getFullYear() - 1, date.getMonth() + 1, 0);\n          date.setHours(23, 59, 59, 999);\n          break;\n        case 'next-year':\n          date.setFullYear(date.getFullYear() + 1);\n          break;\n        case 'last-month':\n          date.setMonth(date.getMonth(), 0);\n          date.setHours(23, 59, 59, 999);\n          break;\n        case 'next-month':\n          date.setMonth(date.getMonth() + 1);\n          break;\n        default:\n          break;\n      }\n      return this.disabledCalendarChanger(date, type);\n    },\n    handleIconLeftClick() {\n      this.$emit(\n        'changecalendar',\n        setMonth(this.calendar, v => v - 1),\n        'last-month'\n      );\n    },\n    handleIconRightClick() {\n      this.$emit(\n        'changecalendar',\n        setMonth(this.calendar, v => v + 1),\n        'next-month'\n      );\n    },\n    handleIconDoubleLeftClick() {\n      this.$emit(\n        'changecalendar',\n        setYear(this.calendar, v => v - 1),\n        'last-year'\n      );\n    },\n    handleIconDoubleRightClick() {\n      this.$emit(\n        'changecalendar',\n        setYear(this.calendar, v => v + 1),\n        'next-year'\n      );\n    },\n    handlePanelChange(panel) {\n      this.$emit('changepanel', panel);\n    },\n    handleMouseEnter(cell) {\n      if (typeof this.onDateMouseEnter === 'function') {\n        this.onDateMouseEnter(cell);\n      }\n    },\n    handleMouseLeave(cell) {\n      if (typeof this.onDateMouseLeave === 'function') {\n        this.onDateMouseLeave(cell);\n      }\n    },\n    handleCellClick(evt) {\n      let { target } = evt;\n      if (target.tagName.toUpperCase() === 'DIV') {\n        target = target.parentNode;\n      }\n      const index = target.getAttribute('data-row-col');\n      if (index) {\n        const [row, col] = index.split(',').map(v => parseInt(v, 10));\n        const date = this.dates[row][col];\n        this.$emit('select', new Date(date));\n      }\n    },\n    formatDate(date, fmt) {\n      return format(date, fmt, { locale: this.getLocale().formatLocale });\n    },\n    getCellTitle(date) {\n      const fmt = this.titleFormat;\n      return this.formatDate(date, fmt);\n    },\n    getWeekNumber(date) {\n      return this.getWeek(date, this.getLocale().formatLocale);\n    },\n  },\n};\n</script>\n","<template>\n  <div :class=\"`${prefixClass}-calendar ${prefixClass}-calendar-panel-month`\">\n    <div :class=\"`${prefixClass}-calendar-header`\">\n      <icon-button\n        type=\"double-left\"\n        :disabled=\"isDisabledArrows('last-year')\"\n        @click=\"handleIconDoubleLeftClick\"\n      ></icon-button>\n      <icon-button\n        type=\"double-right\"\n        :disabled=\"isDisabledArrows('next-year')\"\n        @click=\"handleIconDoubleRightClick\"\n      ></icon-button>\n      <span :class=\"`${prefixClass}-calendar-header-label`\">\n        <button\n          type=\"button\"\n          :class=\"`${prefixClass}-btn ${prefixClass}-btn-text`\"\n          @click=\"handlePanelChange\"\n        >\n          {{ calendarYear }}\n        </button>\n      </span>\n    </div>\n    <div :class=\"`${prefixClass}-calendar-content`\">\n      <table :class=\"`${prefixClass}-table ${prefixClass}-table-month`\" @click=\"handleClick\">\n        <tr v-for=\"(row, i) in months\" :key=\"i\">\n          <td\n            v-for=\"(cell, j) in row\"\n            :key=\"j\"\n            :data-month=\"cell.month\"\n            class=\"cell\"\n            :class=\"getCellClasses(cell.month)\"\n          >\n            <div>{{ cell.text }}</div>\n          </td>\n        </tr>\n      </table>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { chunk } from '../util/base';\nimport IconButton from './icon-button';\nimport { getLocale } from '../locale';\nimport { setYear } from '../util/date';\n\nexport default {\n  name: 'TableMonth',\n  components: { IconButton },\n  inject: {\n    getLocale: {\n      default: () => getLocale,\n    },\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  props: {\n    disabledCalendarChanger: {\n      type: Function,\n      default: () => false,\n    },\n    calendar: {\n      type: Date,\n      default: () => new Date(),\n    },\n    getCellClasses: {\n      type: Function,\n      default: () => [],\n    },\n  },\n  computed: {\n    calendarYear() {\n      return this.calendar.getFullYear();\n    },\n    months() {\n      const locale = this.getLocale();\n      const monthsLocale = locale.months || locale.formatLocale.monthsShort;\n      const months = monthsLocale.map((text, month) => {\n        return { text, month };\n      });\n      return chunk(months, 3);\n    },\n  },\n  methods: {\n    isDisabledArrows(type) {\n      const date = new Date(this.calendar);\n      switch (type) {\n        case 'last-year':\n          date.setFullYear(date.getFullYear() - 1, 11, 31);\n          date.setHours(23, 59, 59, 999);\n          break;\n        case 'next-year':\n          date.setFullYear(date.getFullYear() + 1, 0, 1);\n          break;\n        default:\n          break;\n      }\n      return this.disabledCalendarChanger(date, type);\n    },\n    handleIconDoubleLeftClick() {\n      this.$emit(\n        'changecalendar',\n        setYear(this.calendar, v => v - 1),\n        'last-year'\n      );\n    },\n    handleIconDoubleRightClick() {\n      this.$emit(\n        'changecalendar',\n        setYear(this.calendar, v => v + 1),\n        'next-year'\n      );\n    },\n    handlePanelChange() {\n      this.$emit('changepanel', 'year');\n    },\n    handleClick(evt) {\n      let { target } = evt;\n      if (target.tagName.toUpperCase() === 'DIV') {\n        target = target.parentNode;\n      }\n      const month = target.getAttribute('data-month');\n      if (month && !target.classList.contains('disabled')) {\n        this.$emit('select', parseInt(month, 10));\n      }\n    },\n  },\n};\n</script>\n","<template>\n  <div :class=\"`${prefixClass}-calendar ${prefixClass}-calendar-panel-year`\">\n    <div :class=\"`${prefixClass}-calendar-header`\">\n      <icon-button\n        type=\"double-left\"\n        :disabled=\"isDisabledArrows('last-decade')\"\n        @click=\"handleIconDoubleLeftClick\"\n      ></icon-button>\n      <icon-button\n        type=\"double-right\"\n        :disabled=\"isDisabledArrows('next-decade')\"\n        @click=\"handleIconDoubleRightClick\"\n      ></icon-button>\n      <span :class=\"`${prefixClass}-calendar-header-label`\">\n        <span>{{ firstYear }}</span>\n        <span :class=\"`${prefixClass}-calendar-decade-separator`\"></span>\n        <span>{{ lastYear }}</span>\n      </span>\n    </div>\n    <div :class=\"`${prefixClass}-calendar-content`\">\n      <table :class=\"`${prefixClass}-table ${prefixClass}-table-year`\" @click=\"handleClick\">\n        <tr v-for=\"(row, i) in years\" :key=\"i\">\n          <td\n            v-for=\"(cell, j) in row\"\n            :key=\"j\"\n            :data-year=\"cell\"\n            class=\"cell\"\n            :class=\"getCellClasses(cell)\"\n          >\n            <div>{{ cell }}</div>\n          </td>\n        </tr>\n      </table>\n    </div>\n  </div>\n</template>\n\n<script>\nimport IconButton from './icon-button';\nimport { chunk } from '../util/base';\nimport { setYear } from '../util/date';\n\nexport default {\n  name: 'TableYear',\n  components: { IconButton },\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  props: {\n    disabledCalendarChanger: {\n      type: Function,\n      default: () => false,\n    },\n    calendar: {\n      type: Date,\n      default: () => new Date(),\n    },\n    getCellClasses: {\n      type: Function,\n      default: () => [],\n    },\n    getYearPanel: {\n      type: Function,\n    },\n  },\n  computed: {\n    years() {\n      const calendar = new Date(this.calendar);\n      if (typeof this.getYearPanel === 'function') {\n        return this.getYearPanel(calendar);\n      }\n      return this.getYears(calendar);\n    },\n    firstYear() {\n      return this.years[0][0];\n    },\n    lastYear() {\n      const last = arr => arr[arr.length - 1];\n      return last(last(this.years));\n    },\n  },\n  methods: {\n    isDisabledArrows(type) {\n      const date = new Date(this.calendar);\n      switch (type) {\n        case 'last-decade':\n          date.setFullYear(this.firstYear - 1, 11, 31);\n          date.setHours(23, 59, 59, 999);\n          break;\n        case 'next-decade':\n          date.setFullYear(this.lastYear + 1, 0, 1);\n          break;\n        default:\n          break;\n      }\n      return this.disabledCalendarChanger(date, type);\n    },\n    getYears(calendar) {\n      const firstYear = Math.floor(calendar.getFullYear() / 10) * 10;\n      const years = [];\n      for (let i = 0; i < 10; i++) {\n        years.push(firstYear + i);\n      }\n      return chunk(years, 2);\n    },\n    handleIconDoubleLeftClick() {\n      this.$emit(\n        'changecalendar',\n        setYear(this.calendar, v => v - 10),\n        'last-decade'\n      );\n    },\n    handleIconDoubleRightClick() {\n      this.$emit(\n        'changecalendar',\n        setYear(this.calendar, v => v + 10),\n        'next-decade'\n      );\n    },\n    handleClick(evt) {\n      let { target } = evt;\n      if (target.tagName.toUpperCase() === 'DIV') {\n        target = target.parentNode;\n      }\n      const year = target.getAttribute('data-year');\n      if (year && !target.classList.contains('disabled')) {\n        this.$emit('select', parseInt(year, 10));\n      }\n    },\n  },\n};\n</script>\n","import {\n  getValidDate,\n  isValidDate,\n  createDate,\n  setMonth,\n  startOfYear,\n  startOfMonth,\n  startOfDay,\n} from '../util/date';\nimport TableDate from './table-date';\nimport TableMonth from './table-month';\nimport TableYear from './table-year';\n\nexport default {\n  name: 'CalendarPanel',\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n    dispatchDatePicker: {\n      default: () => () => {},\n    },\n  },\n  props: {\n    value: {},\n    defaultValue: {\n      default() {\n        const date = new Date();\n        date.setHours(0, 0, 0, 0);\n        return date;\n      },\n    },\n    defaultPanel: {\n      type: String,\n    },\n    disabledCalendarChanger: {\n      type: Function,\n      default: () => false,\n    },\n    disabledDate: {\n      type: Function,\n      default: () => false,\n    },\n    type: {\n      type: String,\n      default: 'date',\n    },\n    getClasses: {\n      type: Function,\n      default: () => [],\n    },\n    showWeekNumber: {\n      type: Boolean,\n      default: undefined,\n    },\n    getYearPanel: {\n      type: Function,\n    },\n    titleFormat: {\n      type: String,\n      default: 'YYYY-MM-DD',\n    },\n    calendar: Date,\n    // update date when select year or month\n    partialUpdate: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  data() {\n    const panels = ['date', 'month', 'year'];\n    const index = Math.max(panels.indexOf(this.type), panels.indexOf(this.defaultPanel));\n    const panel = index !== -1 ? panels[index] : 'date';\n    return {\n      panel,\n      innerCalendar: new Date(),\n    };\n  },\n  computed: {\n    innerValue() {\n      const value = Array.isArray(this.value) ? this.value : [this.value];\n      const map = {\n        year: startOfYear,\n        month: startOfMonth,\n        date: startOfDay,\n      };\n      const start = map[this.type] || map.date;\n      return value.filter(isValidDate).map(v => start(v));\n    },\n    calendarYear() {\n      return this.innerCalendar.getFullYear();\n    },\n    calendarMonth() {\n      return this.innerCalendar.getMonth();\n    },\n  },\n  watch: {\n    value: {\n      immediate: true,\n      handler: 'initCalendar',\n    },\n    calendar: {\n      handler: 'initCalendar',\n    },\n    defaultValue: {\n      handler: 'initCalendar',\n    },\n  },\n  methods: {\n    initCalendar() {\n      let calendarDate = this.calendar;\n      if (!isValidDate(calendarDate)) {\n        const { length } = this.innerValue;\n        calendarDate = getValidDate(length > 0 ? this.innerValue[length - 1] : this.defaultValue);\n      }\n      this.innerCalendar = startOfMonth(calendarDate);\n    },\n    isDisabled(date) {\n      return this.disabledDate(new Date(date), this.innerValue);\n    },\n    emitDate(date, type) {\n      if (!this.isDisabled(date)) {\n        this.$emit('select', date, type, this.innerValue);\n        // someone need get the first selected date to set range value. (#429)\n        this.dispatchDatePicker('pick', date, type);\n      }\n    },\n    handleCalendarChange(calendar, type) {\n      const oldCalendar = new Date(this.innerCalendar);\n      this.innerCalendar = calendar;\n      this.$emit('update:calendar', calendar);\n      this.dispatchDatePicker('calendar-change', calendar, oldCalendar, type);\n    },\n    handelPanelChange(panel) {\n      const oldPanel = this.panel;\n      this.panel = panel;\n      this.dispatchDatePicker('panel-change', panel, oldPanel);\n    },\n    handleSelectYear(year) {\n      if (this.type === 'year') {\n        const date = this.getYearCellDate(year);\n        this.emitDate(date, 'year');\n      } else {\n        this.handleCalendarChange(createDate(year, this.calendarMonth), 'year');\n        this.handelPanelChange('month');\n        if (this.partialUpdate && this.innerValue.length === 1) {\n          const date = new Date(this.innerValue[0]);\n          date.setFullYear(year);\n          this.emitDate(date, 'year');\n        }\n      }\n    },\n    handleSelectMonth(month) {\n      if (this.type === 'month') {\n        const date = this.getMonthCellDate(month);\n        this.emitDate(date, 'month');\n      } else {\n        this.handleCalendarChange(createDate(this.calendarYear, month), 'month');\n        this.handelPanelChange('date');\n        if (this.partialUpdate && this.innerValue.length === 1) {\n          const date = new Date(this.innerValue[0]);\n          date.setFullYear(this.calendarYear);\n          this.emitDate(setMonth(date, month), 'month');\n        }\n      }\n    },\n    handleSelectDate(date) {\n      this.emitDate(date, this.type === 'week' ? 'week' : 'date');\n    },\n    getMonthCellDate(month) {\n      return createDate(this.calendarYear, month);\n    },\n    getYearCellDate(year) {\n      return createDate(year, 0);\n    },\n    getDateClasses(cellDate) {\n      const notCurrentMonth = cellDate.getMonth() !== this.calendarMonth;\n      const classes = [];\n      if (cellDate.getTime() === new Date().setHours(0, 0, 0, 0)) {\n        classes.push('today');\n      }\n      if (notCurrentMonth) {\n        classes.push('not-current-month');\n      }\n      const state = this.getStateClass(cellDate);\n      if (!(state === 'active' && notCurrentMonth)) {\n        classes.push(state);\n      }\n      return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n    },\n    getMonthClasses(month) {\n      const classes = [];\n      if (this.type !== 'month') {\n        if (this.calendarMonth === month) {\n          classes.push('active');\n        }\n        const cellDate = this.getMonthCellDate(month);\n        if (this.disabledCalendarChanger(cellDate, 'month')) {\n          classes.push('disabled');\n        }\n        return classes;\n      }\n      const cellDate = this.getMonthCellDate(month);\n      classes.push(this.getStateClass(cellDate));\n      return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n    },\n    getYearClasses(year) {\n      const classes = [];\n      if (this.type !== 'year') {\n        if (this.calendarYear === year) {\n          classes.push('active');\n        }\n        const cellDate = this.getYearCellDate(year);\n        if (this.disabledCalendarChanger(cellDate, 'year')) {\n          classes.push('disabled');\n        }\n        return classes;\n      }\n      const cellDate = this.getYearCellDate(year);\n      classes.push(this.getStateClass(cellDate));\n      return classes.concat(this.getClasses(cellDate, this.innerValue, classes.join(' ')));\n    },\n    getStateClass(cellDate) {\n      if (this.isDisabled(cellDate)) {\n        return 'disabled';\n      }\n      if (this.innerValue.some(v => v.getTime() === cellDate.getTime())) {\n        return 'active';\n      }\n      return '';\n    },\n    getWeekState(row) {\n      if (this.type !== 'week') return '';\n      const start = row[0].getTime();\n      const end = row[6].getTime();\n      const active = this.innerValue.some(v => {\n        const time = v.getTime();\n        return time >= start && time <= end;\n      });\n      return active ? `${this.prefixClass}-active-week` : '';\n    },\n  },\n  render() {\n    const { panel, innerCalendar } = this;\n    if (panel === 'year') {\n      return (\n        <TableYear\n          disabledCalendarChanger={this.disabledCalendarChanger}\n          calendar={innerCalendar}\n          getCellClasses={this.getYearClasses}\n          getYearPanel={this.getYearPanel}\n          onSelect={this.handleSelectYear}\n          onChangecalendar={this.handleCalendarChange}\n        />\n      );\n    }\n    if (panel === 'month') {\n      return (\n        <TableMonth\n          disabledCalendarChanger={this.disabledCalendarChanger}\n          calendar={innerCalendar}\n          getCellClasses={this.getMonthClasses}\n          onSelect={this.handleSelectMonth}\n          onChangepanel={this.handelPanelChange}\n          onChangecalendar={this.handleCalendarChange}\n        />\n      );\n    }\n    return (\n      <TableDate\n        disabledCalendarChanger={this.disabledCalendarChanger}\n        class={{ [`${this.prefixClass}-calendar-week-mode`]: this.type === 'week' }}\n        calendar={innerCalendar}\n        getCellClasses={this.getDateClasses}\n        getRowClasses={this.getWeekState}\n        titleFormat={this.titleFormat}\n        showWeekNumber={\n          typeof this.showWeekNumber === 'boolean' ? this.showWeekNumber : this.type === 'week'\n        }\n        onSelect={this.handleSelectDate}\n        onChangepanel={this.handelPanelChange}\n        onChangecalendar={this.handleCalendarChange}\n      />\n    );\n  },\n};\n","import CalendarPanel from './calendar-panel';\nimport { getValidDate, isValidDate, isValidRangeDate, startOfMonth } from '../util/date';\n\nexport default {\n  name: 'CalendarRange',\n  components: { CalendarPanel },\n  provide() {\n    return {\n      onDateMouseEnter: this.onDateMouseEnter,\n      onDateMouseLeave: this.onDateMouseLeave,\n    };\n  },\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  props: {\n    ...CalendarPanel.props,\n  },\n  data() {\n    return {\n      innerValue: [],\n      calendars: [],\n      hoveredValue: null,\n    };\n  },\n  computed: {\n    // Minimum difference between start and end calendars\n    calendarMinDiff() {\n      const map = {\n        date: 1, // type:date  min 1 month\n        month: 1 * 12, // type:month min 1 year\n        year: 10 * 12, // type:year  min 10 year\n      };\n      return map[this.type] || map.date;\n    },\n    calendarMaxDiff() {\n      return Infinity;\n    },\n    defaultValues() {\n      return Array.isArray(this.defaultValue)\n        ? this.defaultValue\n        : [this.defaultValue, this.defaultValue];\n    },\n  },\n  watch: {\n    value: {\n      immediate: true,\n      handler() {\n        this.innerValue = isValidRangeDate(this.value)\n          ? this.value\n          : [new Date(NaN), new Date(NaN)];\n        const calendars = this.innerValue.map((v, i) =>\n          startOfMonth(getValidDate(v, this.defaultValues[i]))\n        );\n        this.updateCalendars(calendars);\n      },\n    },\n  },\n  methods: {\n    handleSelect(date, type) {\n      const [startValue, endValue] = this.innerValue;\n      if (isValidDate(startValue) && !isValidDate(endValue)) {\n        if (startValue.getTime() > date.getTime()) {\n          this.innerValue = [date, startValue];\n        } else {\n          this.innerValue = [startValue, date];\n        }\n        this.emitDate(this.innerValue, type);\n      } else {\n        this.innerValue = [date, new Date(NaN)];\n      }\n    },\n    onDateMouseEnter(cell) {\n      this.hoveredValue = cell;\n    },\n    onDateMouseLeave() {\n      this.hoveredValue = null;\n    },\n    emitDate(dates, type) {\n      this.$emit('select', dates, type);\n    },\n    updateStartCalendar(value) {\n      this.updateCalendars([value, this.calendars[1]], 1);\n    },\n    updateEndCalendar(value) {\n      this.updateCalendars([this.calendars[0], value], 0);\n    },\n    updateCalendars(calendars, adjustIndex = 1) {\n      const gap = this.getCalendarGap(calendars);\n      if (gap) {\n        const calendar = new Date(calendars[adjustIndex]);\n        calendar.setMonth(calendar.getMonth() + (adjustIndex === 0 ? -gap : gap));\n        calendars[adjustIndex] = calendar;\n      }\n      this.calendars = calendars;\n    },\n    getCalendarGap(calendars) {\n      const [calendarLeft, calendarRight] = calendars;\n      const yearDiff = calendarRight.getFullYear() - calendarLeft.getFullYear();\n      const monthDiff = calendarRight.getMonth() - calendarLeft.getMonth();\n      const diff = yearDiff * 12 + monthDiff;\n      const min = this.calendarMinDiff;\n      const max = this.calendarMaxDiff;\n      if (diff < min) {\n        return min - diff;\n      }\n      if (diff > max) {\n        return max - diff;\n      }\n      return 0;\n    },\n    getRangeClasses(cellDate, currentDates, classnames) {\n      const classes = [].concat(this.getClasses(cellDate, currentDates, classnames));\n\n      if (/disabled|active/.test(classnames)) return classes;\n\n      const inRange = (data, range, fn = v => v.getTime()) => {\n        const value = fn(data);\n        let [min, max] = range.map(fn);\n        if (min > max) {\n          [min, max] = [max, min];\n        }\n        return value > min && value < max;\n      };\n      if (currentDates.length === 2 && inRange(cellDate, currentDates)) {\n        return classes.concat('in-range');\n      }\n      if (\n        currentDates.length === 1 &&\n        this.hoveredValue &&\n        inRange(cellDate, [currentDates[0], this.hoveredValue])\n      ) {\n        return classes.concat('hover-in-range');\n      }\n\n      return classes;\n    },\n  },\n  render() {\n    const calendarRange = this.calendars.map((calendar, index) => {\n      const props = {\n        ...this.$props,\n        calendar,\n        value: this.innerValue,\n        defaultValue: this.defaultValues[index],\n        getClasses: this.getRangeClasses,\n        // don't update when range is true\n        partialUpdate: false,\n      };\n      const on = {\n        select: this.handleSelect,\n        'update:calendar': index === 0 ? this.updateStartCalendar : this.updateEndCalendar,\n      };\n      return <calendar-panel {...{ props, on }}></calendar-panel>;\n    });\n\n    const { prefixClass } = this;\n\n    return <div class={`${prefixClass}-range-wrapper`}>{calendarRange}</div>;\n  },\n};\n","let scrollBarWidth;\n\nexport default function() {\n  if (typeof window === 'undefined') return 0;\n  if (scrollBarWidth !== undefined) return scrollBarWidth;\n\n  const outer = document.createElement('div');\n  outer.style.visibility = 'hidden';\n  outer.style.overflow = 'scroll';\n  outer.style.width = '100px';\n  outer.style.position = 'absolute';\n  outer.style.top = '-9999px';\n  document.body.appendChild(outer);\n\n  const inner = document.createElement('div');\n  inner.style.width = '100%';\n  outer.appendChild(inner);\n\n  scrollBarWidth = outer.offsetWidth - inner.offsetWidth;\n  outer.parentNode.removeChild(outer);\n\n  return scrollBarWidth;\n}\n","<template>\n  <div\n    :class=\"`${prefixClass}-scrollbar`\"\n    :style=\"{\n      position: 'relative',\n      overflow: 'hidden',\n    }\"\n  >\n    <div\n      ref=\"wrap\"\n      :class=\"`${prefixClass}-scrollbar-wrap`\"\n      :style=\"{ marginRight: `-${scrollbarWidth}px` }\"\n      @scroll=\"handleScroll\"\n    >\n      <slot></slot>\n    </div>\n    <div :class=\"`${prefixClass}-scrollbar-track`\">\n      <div\n        ref=\"thumb\"\n        :class=\"`${prefixClass}-scrollbar-thumb`\"\n        :style=\"{ height: thumbHeight, top: thumbTop }\"\n        @mousedown=\"handleDragstart\"\n      ></div>\n    </div>\n  </div>\n</template>\n\n<script>\n/* istanbul ignore file */\nimport getScrollbarWidth from '../util/scrollbar-width';\n\nexport default {\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  data() {\n    return {\n      scrollbarWidth: 0,\n      thumbTop: '',\n      thumbHeight: '',\n    };\n  },\n  created() {\n    this.scrollbarWidth = getScrollbarWidth();\n    document.addEventListener('mouseup', this.handleDragend);\n  },\n  beforeDestroy() {\n    document.addEventListener('mouseup', this.handleDragend);\n  },\n  mounted() {\n    this.$nextTick(this.getThumbSize);\n  },\n  methods: {\n    getThumbSize() {\n      const { wrap } = this.$refs;\n      if (!wrap) return;\n      const heightPercentage = (wrap.clientHeight * 100) / wrap.scrollHeight;\n      this.thumbHeight = heightPercentage < 100 ? `${heightPercentage}%` : '';\n    },\n    handleScroll(evt) {\n      const el = evt.currentTarget;\n      const { scrollHeight, scrollTop } = el;\n      this.thumbTop = `${(scrollTop * 100) / scrollHeight}%`;\n    },\n    handleDragstart(evt) {\n      evt.stopImmediatePropagation();\n      this._draggable = true;\n      const { offsetTop } = this.$refs.thumb;\n      this._prevY = evt.clientY - offsetTop;\n      document.addEventListener('mousemove', this.handleDraging);\n    },\n    handleDraging(evt) {\n      if (!this._draggable) return;\n      const { clientY } = evt;\n      const { wrap } = this.$refs;\n      const { scrollHeight, clientHeight } = wrap;\n      const offsetY = clientY - this._prevY;\n      const top = (offsetY * scrollHeight) / clientHeight;\n      wrap.scrollTop = top;\n    },\n    handleDragend() {\n      if (this._draggable) {\n        this._draggable = false;\n        document.removeEventListener('mousemove', this.handleDraging);\n      }\n    },\n  },\n};\n</script>\n","<template>\n  <div :class=\"`${prefixClass}-time-columns`\">\n    <scrollbar-vertical v-for=\"(col, i) in columns\" :key=\"i\" :class=\"`${prefixClass}-time-column`\">\n      <ul\n        :class=\"`${prefixClass}-time-list`\"\n        :data-type=\"col.type\"\n        :data-index=\"i\"\n        @click=\"handleSelect\"\n      >\n        <li\n          v-for=\"(item, j) in col.list\"\n          :key=\"item.value\"\n          :data-index=\"j\"\n          :class=\"[`${prefixClass}-time-item`, getClasses(item.value, col.type)]\"\n        >\n          {{ item.text }}\n        </li>\n      </ul>\n    </scrollbar-vertical>\n  </div>\n</template>\n\n<script>\nimport ScrollbarVertical from '../scrollbar/scrollbar-vertical';\nimport { getScrollParent } from '../util/dom';\n\nconst padNumber = value => {\n  value = parseInt(value, 10);\n  return value < 10 ? `0${value}` : `${value}`;\n};\n\nconst generateOptions = (length, step, options) => {\n  if (Array.isArray(options)) {\n    return options.filter(v => v >= 0 && v < length);\n  }\n  if (step <= 0) {\n    step = 1;\n  }\n  const arr = [];\n  for (let i = 0; i < length; i += step) {\n    arr.push(i);\n  }\n  return arr;\n};\n\nconst scrollTo = (element, to, duration = 0) => {\n  // jump to target if duration zero\n  if (duration <= 0) {\n    requestAnimationFrame(() => {\n      element.scrollTop = to;\n    });\n    return;\n  }\n  const difference = to - element.scrollTop;\n  const tick = (difference / duration) * 10;\n  requestAnimationFrame(() => {\n    const scrollTop = element.scrollTop + tick;\n    if (scrollTop >= to) {\n      element.scrollTop = to;\n      return;\n    }\n    element.scrollTop = scrollTop;\n    scrollTo(element, to, duration - 10);\n  });\n};\n\nexport default {\n  name: 'ListColumns',\n  components: { ScrollbarVertical },\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  props: {\n    date: Date,\n    scrollDuration: {\n      type: Number,\n      default: 100,\n    },\n    getClasses: {\n      type: Function,\n      default: () => [],\n    },\n    hourOptions: Array,\n    minuteOptions: Array,\n    secondOptions: Array,\n    showHour: {\n      type: Boolean,\n      default: true,\n    },\n    showMinute: {\n      type: Boolean,\n      default: true,\n    },\n    showSecond: {\n      type: Boolean,\n      default: true,\n    },\n    hourStep: {\n      type: Number,\n      default: 1,\n    },\n    minuteStep: {\n      type: Number,\n      default: 1,\n    },\n    secondStep: {\n      type: Number,\n      default: 1,\n    },\n    use12h: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  computed: {\n    columns() {\n      const cols = [];\n      if (this.showHour) cols.push({ type: 'hour', list: this.getHoursList() });\n      if (this.showMinute) cols.push({ type: 'minute', list: this.getMinutesList() });\n      if (this.showSecond) cols.push({ type: 'second', list: this.getSecondsList() });\n      if (this.use12h) cols.push({ type: 'ampm', list: this.getAMPMList() });\n\n      return cols.filter(v => v.list.length > 0);\n    },\n  },\n  watch: {\n    date: {\n      handler() {\n        this.$nextTick(() => {\n          this.scrollToSelected(this.scrollDuration);\n        });\n      },\n    },\n  },\n  mounted() {\n    this.scrollToSelected(0);\n  },\n  methods: {\n    getHoursList() {\n      return generateOptions(this.use12h ? 12 : 24, this.hourStep, this.hourOptions).map(num => {\n        const date = new Date(this.date);\n        let text = padNumber(num);\n        if (this.use12h) {\n          if (num === 0) {\n            text = '12';\n          }\n          if (date.getHours() >= 12) {\n            num += 12;\n          }\n        }\n        const value = date.setHours(num);\n        return { value, text };\n      });\n    },\n    getMinutesList() {\n      return generateOptions(60, this.minuteStep, this.minuteOptions).map(num => {\n        const value = new Date(this.date).setMinutes(num);\n        return { value, text: padNumber(num) };\n      });\n    },\n    getSecondsList() {\n      return generateOptions(60, this.secondStep, this.secondOptions).map(num => {\n        const value = new Date(this.date).setSeconds(num);\n        return { value, text: padNumber(num) };\n      });\n    },\n    getAMPMList() {\n      return ['AM', 'PM'].map((text, i) => {\n        const date = new Date(this.date);\n        const value = date.setHours((date.getHours() % 12) + i * 12);\n        return { text, value };\n      });\n    },\n    scrollToSelected(duration) {\n      const elements = this.$el.querySelectorAll('.active');\n      for (let i = 0; i < elements.length; i++) {\n        const element = elements[i];\n        const scrollElement = getScrollParent(element, this.$el);\n        if (scrollElement) {\n          const to = element.offsetTop;\n          scrollTo(scrollElement, to, duration);\n        }\n      }\n    },\n    handleSelect(evt) {\n      const { target, currentTarget } = evt;\n      if (target.tagName.toUpperCase() !== 'LI') return;\n      const type = currentTarget.getAttribute('data-type');\n      const colIndex = parseInt(currentTarget.getAttribute('data-index'), 10);\n      const cellIndex = parseInt(target.getAttribute('data-index'), 10);\n      const { value } = this.columns[colIndex].list[cellIndex];\n      this.$emit('select', value, type);\n    },\n  },\n};\n</script>\n","<template>\n  <scrollbar-vertical>\n    <div\n      v-for=\"item in list\"\n      :key=\"item.value\"\n      :class=\"[`${prefixClass}-time-option`, getClasses(item.value)]\"\n      @click=\"handleSelect(item.value)\"\n    >\n      {{ item.text }}\n    </div>\n  </scrollbar-vertical>\n</template>\n\n<script>\nimport { format } from 'date-format-parse';\nimport ScrollbarVertical from '../scrollbar/scrollbar-vertical';\nimport { getScrollParent } from '../util/dom';\nimport { getLocale } from '../locale';\n\nfunction parseOption(time = '') {\n  const values = time.split(':');\n  if (values.length >= 2) {\n    const hours = parseInt(values[0], 10);\n    const minutes = parseInt(values[1], 10);\n    return {\n      hours,\n      minutes,\n    };\n  }\n  return null;\n}\n\nconst scrollTo = (element, to) => {\n  if (element) {\n    element.scrollTop = to;\n  }\n};\n\nexport default {\n  name: 'ListOptions',\n  components: { ScrollbarVertical },\n  inject: {\n    getLocale: {\n      default: () => getLocale,\n    },\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  props: {\n    date: Date,\n    options: {\n      type: [Object, Function],\n      default() {\n        return [];\n      },\n    },\n    format: {\n      type: String,\n      default: 'HH:mm:ss',\n    },\n    getClasses: {\n      type: Function,\n      default: () => [],\n    },\n  },\n  computed: {\n    list() {\n      const result = [];\n      const { options } = this;\n      if (typeof options === 'function') {\n        return options() || [];\n      }\n      const start = parseOption(options.start);\n      const end = parseOption(options.end);\n      const step = parseOption(options.step);\n      const fmt = options.format || this.format;\n      if (start && end && step) {\n        const startMinutes = start.minutes + start.hours * 60;\n        const endMinutes = end.minutes + end.hours * 60;\n        const stepMinutes = step.minutes + step.hours * 60;\n        const len = Math.floor((endMinutes - startMinutes) / stepMinutes);\n        for (let i = 0; i <= len; i++) {\n          const timeMinutes = startMinutes + i * stepMinutes;\n          const hours = Math.floor(timeMinutes / 60);\n          const minutes = timeMinutes % 60;\n          const value = new Date(this.date).setHours(hours, minutes, 0);\n          result.push({\n            value,\n            text: this.formatDate(value, fmt),\n          });\n        }\n      }\n      return result;\n    },\n  },\n  mounted() {\n    this.scrollToSelected();\n  },\n  methods: {\n    formatDate(date, fmt) {\n      return format(date, fmt, { locale: this.getLocale().formatLocale });\n    },\n    scrollToSelected() {\n      const element = this.$el.querySelector('.active');\n      if (!element) return;\n      const scrollElement = getScrollParent(element, this.$el);\n      if (!scrollElement) return;\n      const to = element.offsetTop;\n      scrollTo(scrollElement, to);\n    },\n    handleSelect(value) {\n      this.$emit('select', value, 'time');\n    },\n  },\n};\n</script>\n","<template>\n  <div :class=\"`${prefixClass}-time`\">\n    <div v-if=\"showTimeHeader\" :class=\"`${prefixClass}-time-header`\">\n      <button\n        type=\"button\"\n        :class=\"`${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-time-header-title`\"\n        @click=\"handleClickTitle\"\n      >\n        {{ title }}\n      </button>\n    </div>\n    <div :class=\"`${prefixClass}-time-content`\">\n      <list-options\n        v-if=\"timePickerOptions\"\n        :date=\"innerValue\"\n        :get-classes=\"getClasses\"\n        :options=\"timePickerOptions\"\n        :format=\"innerForamt\"\n        @select=\"handleSelect\"\n      ></list-options>\n      <list-columns\n        v-else\n        :date=\"innerValue\"\n        :get-classes=\"getClasses\"\n        :hour-options=\"hourOptions\"\n        :minute-options=\"minuteOptions\"\n        :second-options=\"secondOptions\"\n        :hour-step=\"hourStep\"\n        :minute-step=\"minuteStep\"\n        :second-step=\"secondStep\"\n        :scroll-duration=\"scrollDuration\"\n        v-bind=\"ShowHourMinuteSecondAMPM\"\n        @select=\"handleSelect\"\n      ></list-columns>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { format } from 'date-format-parse';\nimport { getValidDate } from '../util/date';\nimport ListColumns from './list-columns';\nimport ListOptions from './list-options';\nimport { getLocale } from '../locale';\n\nexport default {\n  name: 'TimePanel',\n  components: { ListColumns, ListOptions },\n  inject: {\n    getLocale: {\n      default: () => getLocale,\n    },\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  props: {\n    value: {},\n    defaultValue: {\n      default() {\n        const date = new Date();\n        date.setHours(0, 0, 0, 0);\n        return date;\n      },\n    },\n    format: {\n      default: 'HH:mm:ss',\n    },\n    timeTitleFormat: {\n      type: String,\n      default: 'YYYY-MM-DD',\n    },\n    showTimeHeader: {\n      type: Boolean,\n      default: false,\n    },\n    disabledTime: {\n      type: Function,\n      default: () => false,\n    },\n    timePickerOptions: {\n      type: [Object, Function],\n      default() {\n        return null;\n      },\n    },\n    hourOptions: Array,\n    minuteOptions: Array,\n    secondOptions: Array,\n    hourStep: {\n      type: Number,\n      default: 1,\n    },\n    minuteStep: {\n      type: Number,\n      default: 1,\n    },\n    secondStep: {\n      type: Number,\n      default: 1,\n    },\n    showHour: {\n      type: Boolean,\n      default: undefined,\n    },\n    showMinute: {\n      type: Boolean,\n      default: undefined,\n    },\n    showSecond: {\n      type: Boolean,\n      default: undefined,\n    },\n    use12h: {\n      type: Boolean,\n      default: undefined,\n    },\n    scrollDuration: {\n      type: Number,\n      default: 100,\n    },\n  },\n  data() {\n    return {\n      innerValue: getValidDate(this.value, this.defaultValue),\n    };\n  },\n  computed: {\n    title() {\n      const titleFormat = this.timeTitleFormat;\n      const date = new Date(this.innerValue);\n      return this.formatDate(date, titleFormat);\n    },\n    innerForamt() {\n      return typeof this.format === 'string' ? this.format : 'HH:mm:ss';\n    },\n    ShowHourMinuteSecondAMPM() {\n      const fmt = this.innerForamt;\n      const defaultProps = {\n        showHour: /[HhKk]/.test(fmt),\n        showMinute: /m/.test(fmt),\n        showSecond: /s/.test(fmt),\n        use12h: /a/i.test(fmt),\n      };\n      const obj = {};\n      Object.keys(defaultProps).forEach(key => {\n        obj[key] = typeof this[key] === 'boolean' ? this[key] : defaultProps[key];\n      });\n      return obj;\n    },\n  },\n  watch: {\n    value: {\n      immediate: true,\n      handler() {\n        this.innerValue = getValidDate(this.value, this.defaultValue);\n      },\n    },\n  },\n  methods: {\n    formatDate(date, fmt) {\n      return format(date, fmt, { locale: this.getLocale().formatLocale });\n    },\n    isDisabledTime(value) {\n      return this.disabledTime(new Date(value));\n    },\n    isDisabledHour(date) {\n      const value = new Date(date);\n      return (\n        this.isDisabledTime(value) &&\n        this.isDisabledTime(value.setMinutes(0, 0, 0)) &&\n        this.isDisabledTime(value.setMinutes(59, 59, 999))\n      );\n    },\n    isDisabledMinute(date) {\n      const value = new Date(date);\n      return (\n        this.isDisabledTime(value) &&\n        this.isDisabledTime(value.setSeconds(0, 0)) &&\n        this.isDisabledTime(value.setSeconds(59, 999))\n      );\n    },\n    isDisabledAMPM(date) {\n      const value = new Date(date);\n      const minHour = value.getHours() < 12 ? 0 : 12;\n      const maxHour = minHour + 11;\n      return (\n        this.isDisabledTime(value) &&\n        this.isDisabledTime(value.setHours(minHour, 0, 0, 0)) &&\n        this.isDisabledTime(value.setHours(maxHour, 59, 59, 999))\n      );\n    },\n    isDisabled(date, type) {\n      if (type === 'hour') {\n        return this.isDisabledHour(date);\n      }\n      if (type === 'minute') {\n        return this.isDisabledMinute(date);\n      }\n      if (type === 'ampm') {\n        return this.isDisabledAMPM(date);\n      }\n      return this.isDisabledTime(date);\n    },\n    handleSelect(value, type) {\n      const date = new Date(value);\n      if (!this.isDisabled(value, type)) {\n        this.innerValue = date;\n        if (!this.isDisabledTime(date)) {\n          this.$emit('select', date, type);\n        }\n      }\n    },\n    handleClickTitle() {\n      this.$emit('clicktitle');\n    },\n    getClasses(value, type) {\n      const cellDate = new Date(value);\n      if (this.isDisabled(value, type)) {\n        return 'disabled';\n      }\n      if (cellDate.getTime() === this.innerValue.getTime()) {\n        return 'active';\n      }\n      return '';\n    },\n  },\n};\n</script>\n","import TimePanel from './time-panel';\nimport { isValidRangeDate } from '../util/date';\n\nexport default {\n  name: 'TimeRange',\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  props: {\n    ...TimePanel.props,\n  },\n  data() {\n    return {\n      startValue: new Date(NaN),\n      endValue: new Date(NaN),\n    };\n  },\n  watch: {\n    value: {\n      immediate: true,\n      handler() {\n        if (isValidRangeDate(this.value)) {\n          const [startValue, endValue] = this.value;\n          this.startValue = startValue;\n          this.endValue = endValue;\n        } else {\n          this.startValue = new Date(NaN);\n          this.endValue = new Date(NaN);\n        }\n      },\n    },\n  },\n  methods: {\n    emitChange(type, index) {\n      const date = [this.startValue, this.endValue];\n      this.$emit('select', date, type === 'time' ? 'time-range' : type, index);\n    },\n    handleSelectStart(date, type) {\n      this.startValue = date;\n      // check the NaN\n      if (!(this.endValue.getTime() >= date.getTime())) {\n        this.endValue = date;\n      }\n      this.emitChange(type, 0);\n    },\n    handleSelectEnd(date, type) {\n      // check the NaN\n      this.endValue = date;\n      if (!(this.startValue.getTime() <= date.getTime())) {\n        this.startValue = date;\n      }\n      this.emitChange(type, 1);\n    },\n    disabledStartTime(date) {\n      return this.disabledTime(date, 0);\n    },\n    disabledEndTime(date) {\n      return date.getTime() < this.startValue.getTime() || this.disabledTime(date, 1);\n    },\n  },\n  render() {\n    const defaultValues = Array.isArray(this.defaultValue)\n      ? this.defaultValue\n      : [this.defaultValue, this.defaultValue];\n\n    const { prefixClass } = this;\n\n    return (\n      <div class={`${prefixClass}-range-wrapper`}>\n        <TimePanel\n          {...{\n            props: {\n              ...this.$props,\n              value: this.startValue,\n              defaultValue: defaultValues[0],\n              disabledTime: this.disabledStartTime,\n            },\n            on: {\n              ...this.$listeners,\n              select: this.handleSelectStart,\n            },\n          }}\n        />\n        <TimePanel\n          {...{\n            props: {\n              ...this.$props,\n              value: this.endValue,\n              defaultValue: defaultValues[1],\n              disabledTime: this.disabledEndTime,\n            },\n            on: {\n              ...this.$listeners,\n              select: this.handleSelectEnd,\n            },\n          }}\n        />\n      </div>\n    );\n  },\n};\n","import CalendarPanel from '../calendar/calendar-panel';\nimport TimePanel from '../time/time-panel';\nimport { assignTime, getValidDate } from '../util/date';\nimport { pick } from '../util/base';\n\nexport default {\n  name: 'DatetimePanel',\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  emits: ['select', 'update:show-time-panel'],\n  props: {\n    ...CalendarPanel.props,\n    ...TimePanel.props,\n    showTimePanel: {\n      type: Boolean,\n      default: undefined,\n    },\n  },\n  data() {\n    return {\n      defaultTimeVisible: false,\n      currentValue: this.value,\n    };\n  },\n  computed: {\n    timeVisible() {\n      return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n    },\n  },\n  watch: {\n    value(val) {\n      this.currentValue = val;\n    },\n  },\n  methods: {\n    closeTimePanel() {\n      this.defaultTimeVisible = false;\n      this.$emit('update:show-time-panel', false);\n    },\n    openTimePanel() {\n      this.defaultTimeVisible = true;\n      this.$emit('update:show-time-panel', true);\n    },\n    emitDate(date, type) {\n      this.$emit('select', date, type);\n    },\n    handleSelect(date, type) {\n      if (type === 'date') {\n        this.openTimePanel();\n      }\n      let datetime = assignTime(date, getValidDate(this.value, this.defaultValue));\n      if (this.disabledTime(new Date(datetime))) {\n        // set the time of defalutValue;\n        datetime = assignTime(date, this.defaultValue);\n        if (this.disabledTime(new Date(datetime))) {\n          // if disabled don't emit date\n          this.currentValue = datetime;\n          return;\n        }\n      }\n      this.emitDate(datetime, type);\n    },\n  },\n  render() {\n    const calendarProps = {\n      props: {\n        ...pick(this.$props, Object.keys(CalendarPanel.props)),\n        type: 'date',\n        value: this.currentValue,\n      },\n      on: {\n        select: this.handleSelect,\n      },\n    };\n    const timeProps = {\n      props: {\n        ...pick(this.$props, Object.keys(TimePanel.props)),\n        showTimeHeader: true,\n        value: this.currentValue,\n      },\n      on: {\n        select: this.emitDate,\n        clicktitle: this.closeTimePanel,\n      },\n    };\n\n    const { prefixClass } = this;\n\n    return (\n      <div>\n        <CalendarPanel {...calendarProps} />\n        {this.timeVisible && <TimePanel class={`${prefixClass}-calendar-time`} {...timeProps} />}\n      </div>\n    );\n  },\n};\n","import CalendarRange from '../calendar/calendar-range';\nimport TimeRange from '../time/time-range';\nimport { pick } from '../util/base';\nimport { isValidRangeDate, assignTime } from '../util/date';\n\nexport default {\n  name: 'DatetimeRange',\n  inject: {\n    prefixClass: {\n      default: 'mx',\n    },\n  },\n  emits: ['select', 'update:show-time-panel'],\n  props: {\n    ...CalendarRange.props,\n    ...TimeRange.props,\n    showTimePanel: {\n      type: Boolean,\n      default: undefined,\n    },\n  },\n  data() {\n    return {\n      defaultTimeVisible: false,\n      currentValue: this.value,\n    };\n  },\n  computed: {\n    timeVisible() {\n      return typeof this.showTimePanel === 'boolean' ? this.showTimePanel : this.defaultTimeVisible;\n    },\n  },\n  watch: {\n    value(val) {\n      this.currentValue = val;\n    },\n  },\n  methods: {\n    closeTimePanel() {\n      this.defaultTimeVisible = false;\n      this.$emit('update:show-time-panel', false);\n    },\n    openTimePanel() {\n      this.defaultTimeVisible = true;\n      this.$emit('update:show-time-panel', true);\n    },\n    emitDate(dates, type) {\n      this.$emit('select', dates, type);\n    },\n    handleSelect(dates, type) {\n      if (type === 'date') {\n        this.openTimePanel();\n      }\n      const defaultValues = Array.isArray(this.defaultValue)\n        ? this.defaultValue\n        : [this.defaultValue, this.defaultValue];\n      let datetimes = dates.map((date, i) => {\n        const time = isValidRangeDate(this.value) ? this.value[i] : defaultValues[i];\n        return assignTime(date, time);\n      });\n      if (datetimes[1].getTime() < datetimes[0].getTime()) {\n        datetimes = [datetimes[0], datetimes[0]];\n      }\n      if (datetimes.some(this.disabledTime)) {\n        datetimes = dates.map((date, i) => assignTime(date, defaultValues[i]));\n        if (datetimes.some(this.disabledTime)) {\n          this.currentValue = datetimes;\n          return;\n        }\n      }\n      this.emitDate(datetimes, type);\n    },\n  },\n  render() {\n    const calendarProps = {\n      props: {\n        ...pick(this.$props, Object.keys(CalendarRange.props)),\n        type: 'date',\n        value: this.currentValue,\n      },\n      on: {\n        select: this.handleSelect,\n      },\n    };\n    const timeProps = {\n      props: {\n        ...pick(this.$props, Object.keys(TimeRange.props)),\n        value: this.currentValue,\n        showTimeHeader: true,\n      },\n      on: {\n        select: this.emitDate,\n        clicktitle: this.closeTimePanel,\n      },\n    };\n\n    const { prefixClass } = this;\n\n    return (\n      <div>\n        <CalendarRange {...calendarProps} />\n        {this.timeVisible && <TimeRange class={`${prefixClass}-calendar-time`} {...timeProps} />}\n      </div>\n    );\n  },\n};\n","import { parse, format, getWeek } from 'date-format-parse';\nimport { isValidDate, isValidRangeDate, isValidDates } from './util/date';\nimport { pick, isObject, mergeDeep } from './util/base';\nimport { getLocale } from './locale';\nimport Popup from './popup';\nimport IconCalendar from './icon/icon-calendar';\nimport IconTime from './icon/icon-time';\nimport IconClose from './icon/icon-close';\nimport CalendarPanel from './calendar/calendar-panel';\nimport CalendarRange from './calendar/calendar-range';\nimport TimePanel from './time/time-panel';\nimport TimeRange from './time/time-range';\nimport DatetimePanel from './datetime/datetime-panel';\nimport DatetimeRange from './datetime/datetime-range';\n\nconst componentMap = {\n  default: CalendarPanel,\n  time: TimePanel,\n  datetime: DatetimePanel,\n};\nconst componentRangeMap = {\n  default: CalendarRange,\n  time: TimeRange,\n  datetime: DatetimeRange,\n};\n\nexport default {\n  name: 'DatePicker',\n  provide() {\n    return {\n      // make locale reactive\n      getLocale: () => this.locale,\n      getWeek: this.getWeek,\n      prefixClass: this.prefixClass,\n      dispatchDatePicker: this.$emit.bind(this),\n    };\n  },\n  props: {\n    ...DatetimePanel.props,\n    value: {},\n    valueType: {\n      type: String,\n      default: 'date', // date, format, timestamp, or token like 'YYYY-MM-DD'\n    },\n    type: {\n      type: String, // ['date', 'datetime', 'time', 'year', 'month', 'week']\n      default: 'date',\n    },\n    format: {\n      type: String,\n    },\n    formatter: {\n      type: Object,\n    },\n    range: {\n      type: Boolean,\n      default: false,\n    },\n    multiple: {\n      type: Boolean,\n      default: false,\n    },\n    rangeSeparator: {\n      type: String,\n    },\n    lang: {\n      type: [String, Object],\n    },\n    placeholder: {\n      type: String,\n      default: '',\n    },\n    editable: {\n      type: Boolean,\n      default: true,\n    },\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n    clearable: {\n      type: Boolean,\n      default: true,\n    },\n    prefixClass: {\n      type: String,\n      default: 'mx',\n    },\n    inputClass: {},\n    inputAttr: {\n      type: Object,\n      default: () => ({}),\n    },\n    appendToBody: {\n      type: Boolean,\n      default: true,\n    },\n    open: {\n      type: Boolean,\n      default: undefined,\n    },\n    popupClass: {},\n    popupStyle: {\n      type: Object,\n      default: () => ({}),\n    },\n    inline: {\n      type: Boolean,\n      default: false,\n    },\n    confirm: {\n      type: Boolean,\n      default: false,\n    },\n    confirmText: {\n      type: String,\n      default: 'OK',\n    },\n    renderInputText: {\n      type: Function,\n    },\n    shortcuts: {\n      type: Array,\n      validator(value) {\n        return (\n          Array.isArray(value) &&\n          value.every(\n            v => isObject(v) && typeof v.text === 'string' && typeof v.onClick === 'function'\n          )\n        );\n      },\n      default() {\n        return [];\n      },\n    },\n  },\n  data() {\n    return {\n      // cache the innervalue, wait to confirm\n      currentValue: null,\n      userInput: null,\n      defaultOpen: false,\n      mouseInInput: false,\n    };\n  },\n  computed: {\n    popupVisible() {\n      return !this.disabled && (typeof this.open === 'boolean' ? this.open : this.defaultOpen);\n    },\n    innerRangeSeparator() {\n      return this.rangeSeparator || (this.multiple ? ',' : ' ~ ');\n    },\n    innerFormat() {\n      const map = {\n        date: 'YYYY-MM-DD',\n        datetime: 'YYYY-MM-DD HH:mm:ss',\n        year: 'YYYY',\n        month: 'YYYY-MM',\n        time: 'HH:mm:ss',\n        week: 'w',\n      };\n      return this.format || map[this.type] || map.date;\n    },\n    innerValue() {\n      let { value } = this;\n      if (this.validMultipleType) {\n        value = Array.isArray(value) ? value : [];\n        return value.map(this.value2date);\n      }\n      if (this.range) {\n        value = Array.isArray(value) ? value.slice(0, 2) : [null, null];\n        return value.map(this.value2date);\n      }\n      return this.value2date(value);\n    },\n    text() {\n      if (this.userInput !== null) {\n        return this.userInput;\n      }\n      if (typeof this.renderInputText === 'function') {\n        return this.renderInputText(this.innerValue);\n      }\n      if (!this.isValidValue(this.innerValue)) {\n        return '';\n      }\n      if (Array.isArray(this.innerValue)) {\n        return this.innerValue.map(v => this.formatDate(v)).join(this.innerRangeSeparator);\n      }\n      return this.formatDate(this.innerValue);\n    },\n    showClearIcon() {\n      return !this.disabled && this.clearable && this.text && this.mouseInInput;\n    },\n    locale() {\n      if (isObject(this.lang)) {\n        return mergeDeep(getLocale(), this.lang);\n      }\n      return getLocale(this.lang);\n    },\n    validMultipleType() {\n      const types = ['date', 'month', 'year'];\n      return this.multiple && !this.range && types.indexOf(this.type) !== -1;\n    },\n  },\n  watch: {\n    innerValue: {\n      immediate: true,\n      handler(val) {\n        this.currentValue = val;\n      },\n    },\n    popupVisible: {\n      handler(val) {\n        if (val) {\n          this.currentValue = this.innerValue;\n        }\n      },\n    },\n  },\n  created() {\n    if (typeof this.format === 'object') {\n      console.warn(\n        \"[vue2-datepicker]: The prop `format` don't support Object any more. You can use the new prop `formatter` to replace it\"\n      );\n    }\n  },\n  methods: {\n    handleMouseEnter() {\n      this.mouseInInput = true;\n    },\n    handleMouseLeave() {\n      this.mouseInInput = false;\n    },\n    handleClickOutSide(evt) {\n      const { target } = evt;\n      if (!this.$el.contains(target)) {\n        this.closePopup();\n      }\n    },\n    getFormatter(key) {\n      return (\n        (isObject(this.formatter) && this.formatter[key]) ||\n        (isObject(this.format) && this.format[key])\n      );\n    },\n    getWeek(date, options) {\n      if (typeof this.getFormatter('getWeek') === 'function') {\n        return this.getFormatter('getWeek')(date, options);\n      }\n      return getWeek(date, options);\n    },\n    parseDate(value, fmt) {\n      fmt = fmt || this.innerFormat;\n      if (typeof this.getFormatter('parse') === 'function') {\n        return this.getFormatter('parse')(value, fmt);\n      }\n      const backupDate = new Date();\n      return parse(value, fmt, { locale: this.locale.formatLocale, backupDate });\n    },\n    formatDate(date, fmt) {\n      fmt = fmt || this.innerFormat;\n      if (typeof this.getFormatter('stringify') === 'function') {\n        return this.getFormatter('stringify')(date, fmt);\n      }\n      return format(date, fmt, { locale: this.locale.formatLocale });\n    },\n    // transform the outer value to inner date\n    value2date(value) {\n      switch (this.valueType) {\n        case 'date':\n          return value instanceof Date ? new Date(value.getTime()) : new Date(NaN);\n        case 'timestamp':\n          return typeof value === 'number' ? new Date(value) : new Date(NaN);\n        case 'format':\n          return typeof value === 'string' ? this.parseDate(value) : new Date(NaN);\n        default:\n          return typeof value === 'string' ? this.parseDate(value, this.valueType) : new Date(NaN);\n      }\n    },\n    // transform the inner date to outer value\n    date2value(date) {\n      if (!isValidDate(date)) return null;\n      switch (this.valueType) {\n        case 'date':\n          return date;\n        case 'timestamp':\n          return date.getTime();\n        case 'format':\n          return this.formatDate(date);\n        default:\n          return this.formatDate(date, this.valueType);\n      }\n    },\n    emitValue(date, type, close = true) {\n      // fix IE11/10 trigger input event when input is focused. (placeholder !== '')\n      this.userInput = null;\n      const value = Array.isArray(date) ? date.map(this.date2value) : this.date2value(date);\n      this.$emit('input', value);\n      this.$emit('change', value, type);\n      if (close) {\n        this.closePopup();\n      }\n      return value;\n    },\n    isValidValue(value) {\n      if (this.validMultipleType) {\n        return isValidDates(value);\n      }\n      if (this.range) {\n        return isValidRangeDate(value);\n      }\n      return isValidDate(value);\n    },\n    isValidValueAndNotDisabled(value) {\n      if (!this.isValidValue(value)) {\n        return false;\n      }\n      const disabledDate =\n        typeof this.disabledDate === 'function' ? this.disabledDate : () => false;\n      const disabledTime =\n        typeof this.disabledTime === 'function' ? this.disabledTime : () => false;\n      if (!Array.isArray(value)) {\n        value = [value];\n      }\n      return value.every(v => !disabledDate(v) && !disabledTime(v));\n    },\n    handleMultipleDates(date, dates) {\n      if (this.validMultipleType && dates) {\n        const nextDates = dates.filter(v => v.getTime() !== date.getTime());\n        if (nextDates.length === dates.length) {\n          nextDates.push(date);\n        }\n        return nextDates;\n      }\n      return date;\n    },\n    handleSelectDate(val, type, dates) {\n      val = this.handleMultipleDates(val, dates);\n      if (this.confirm) {\n        this.currentValue = val;\n      } else {\n        this.emitValue(\n          val,\n          type,\n          // this.type === 'datetime', click the time should close popup\n          !this.validMultipleType && (type === this.type || type === 'time')\n        );\n      }\n    },\n    clear() {\n      this.emitValue(this.range ? [null, null] : null);\n      this.$emit('clear');\n    },\n    handleClear(evt) {\n      evt.stopPropagation();\n      this.clear();\n    },\n    handleConfirmDate() {\n      const value = this.emitValue(this.currentValue);\n      this.$emit('confirm', value);\n    },\n    handleSelectShortcut(evt) {\n      const index = evt.currentTarget.getAttribute('data-index');\n      const item = this.shortcuts[parseInt(index, 10)];\n      if (isObject(item) && typeof item.onClick === 'function') {\n        const date = item.onClick(this);\n        if (date) {\n          this.emitValue(date);\n        }\n      }\n    },\n    openPopup(evt) {\n      if (this.popupVisible || this.disabled) return;\n      this.defaultOpen = true;\n      this.$emit('open', evt);\n      this.$emit('update:open', true);\n    },\n    closePopup() {\n      if (!this.popupVisible) return;\n      this.defaultOpen = false;\n      this.$emit('close');\n      this.$emit('update:open', false);\n    },\n    blur() {\n      // when use slot input\n      if (this.$refs.input) {\n        this.$refs.input.blur();\n      }\n    },\n    focus() {\n      if (this.$refs.input) {\n        this.$refs.input.focus();\n      }\n    },\n    handleInputChange() {\n      if (!this.editable || this.userInput === null) return;\n      const text = this.userInput.trim();\n      this.userInput = null;\n      if (text === '') {\n        this.clear();\n        return;\n      }\n      let date;\n      if (this.validMultipleType) {\n        date = text.split(this.innerRangeSeparator).map(v => this.parseDate(v.trim()));\n      } else if (this.range) {\n        let arr = text.split(this.innerRangeSeparator);\n        if (arr.length !== 2) {\n          // Maybe the separator during the day is the same as the separator for the date\n          // eg: 2019-10-09-2020-01-02\n          arr = text.split(this.innerRangeSeparator.trim());\n        }\n        date = arr.map(v => this.parseDate(v.trim()));\n      } else {\n        date = this.parseDate(text);\n      }\n      if (this.isValidValueAndNotDisabled(date)) {\n        this.emitValue(date);\n        this.blur();\n      } else {\n        this.$emit('input-error', text);\n      }\n    },\n    handleInputInput(evt) {\n      // slot input v-model\n      this.userInput = typeof evt === 'string' ? evt : evt.target.value;\n    },\n    handleInputKeydown(evt) {\n      const { keyCode } = evt;\n      // Tab 9 or Enter 13\n      if (keyCode === 9) {\n        this.closePopup();\n      } else if (keyCode === 13) {\n        this.handleInputChange();\n      }\n    },\n    handleInputBlur(evt) {\n      // tab close\n      this.$emit('blur', evt);\n    },\n    handleInputFocus(evt) {\n      this.openPopup(evt);\n      this.$emit('focus', evt);\n    },\n    hasSlot(name) {\n      return !!(this.$slots[name] || this.$scopedSlots[name]);\n    },\n    renderSlot(name, fallback, props) {\n      const slotFn = this.$scopedSlots[name];\n      if (slotFn) {\n        return slotFn(props) || fallback;\n      }\n      return this.$slots[name] || fallback;\n    },\n    renderInput() {\n      const { prefixClass } = this;\n      const props = {\n        name: 'date',\n        type: 'text',\n        autocomplete: 'off',\n        value: this.text,\n        class: this.inputClass || `${this.prefixClass}-input`,\n        readonly: !this.editable,\n        disabled: this.disabled,\n        placeholder: this.placeholder,\n        ...this.inputAttr,\n      };\n      const { value, class: className, ...attrs } = props;\n      const events = {\n        keydown: this.handleInputKeydown,\n        focus: this.handleInputFocus,\n        blur: this.handleInputBlur,\n        input: this.handleInputInput,\n        change: this.handleInputChange,\n      };\n      const input = this.renderSlot(\n        'input',\n        <input value={value} class={className} {...{ attrs, on: events }} ref=\"input\" />,\n        {\n          props,\n          events,\n        }\n      );\n      const calendarIcon = this.type === 'time' ? <IconTime /> : <IconCalendar />;\n      // remove touchstart event to avoid opens the popup while scrolling in mobile #469\n      return (\n        <div\n          class={`${prefixClass}-input-wrapper`}\n          onMouseenter={this.handleMouseEnter}\n          onMouseleave={this.handleMouseLeave}\n          onClick={this.openPopup}\n          ref=\"inputWrapper\"\n        >\n          {input}\n          {this.showClearIcon ? (\n            <i class={`${prefixClass}-icon-clear`} onClick={this.handleClear}>\n              {this.renderSlot('icon-clear', <IconClose />)}\n            </i>\n          ) : (\n            <i class={`${prefixClass}-icon-calendar`}>\n              {this.renderSlot('icon-calendar', calendarIcon)}\n            </i>\n          )}\n        </div>\n      );\n    },\n    renderContent() {\n      const map = this.range ? componentRangeMap : componentMap;\n      const Component = map[this.type] || map.default;\n      const props = {\n        ...pick(this.$props, Object.keys(Component.props)),\n        value: this.currentValue,\n      };\n      const on = {\n        ...pick(this.$listeners, Component.emits || []),\n        select: this.handleSelectDate,\n      };\n      const content = <Component {...{ props, on, ref: 'picker' }} />;\n      return (\n        <div class={`${this.prefixClass}-datepicker-body`}>\n          {this.renderSlot('content', content, {\n            value: this.currentValue,\n            emit: this.handleSelectDate,\n          })}\n        </div>\n      );\n    },\n    renderSidebar() {\n      const { prefixClass } = this;\n      return (\n        <div class={`${prefixClass}-datepicker-sidebar`}>\n          {this.renderSlot('sidebar', null, {\n            value: this.currentValue,\n            emit: this.handleSelectDate,\n          })}\n          {this.shortcuts.map((v, i) => (\n            <button\n              key={i}\n              data-index={i}\n              type=\"button\"\n              class={`${prefixClass}-btn ${prefixClass}-btn-text ${prefixClass}-btn-shortcut`}\n              onClick={this.handleSelectShortcut}\n            >\n              {v.text}\n            </button>\n          ))}\n        </div>\n      );\n    },\n    renderHeader() {\n      return (\n        <div class={`${this.prefixClass}-datepicker-header`}>\n          {this.renderSlot('header', null, {\n            value: this.currentValue,\n            emit: this.handleSelectDate,\n          })}\n        </div>\n      );\n    },\n    renderFooter() {\n      const { prefixClass } = this;\n      return (\n        <div class={`${prefixClass}-datepicker-footer`}>\n          {this.renderSlot('footer', null, {\n            value: this.currentValue,\n            emit: this.handleSelectDate,\n          })}\n          {this.confirm ? (\n            <button\n              type=\"button\"\n              class={`${prefixClass}-btn ${prefixClass}-datepicker-btn-confirm`}\n              onClick={this.handleConfirmDate}\n            >\n              {this.confirmText}\n            </button>\n          ) : null}\n        </div>\n      );\n    },\n  },\n  render() {\n    const { prefixClass, inline, disabled } = this;\n    const sidedar = this.hasSlot('sidebar') || this.shortcuts.length ? this.renderSidebar() : null;\n    const content = (\n      <div class={`${prefixClass}-datepicker-content`}>\n        {this.hasSlot('header') ? this.renderHeader() : null}\n        {this.renderContent()}\n        {this.hasSlot('footer') || this.confirm ? this.renderFooter() : null}\n      </div>\n    );\n    return (\n      <div\n        class={{\n          [`${prefixClass}-datepicker`]: true,\n          [`${prefixClass}-datepicker-range`]: this.range,\n          [`${prefixClass}-datepicker-inline`]: inline,\n          disabled,\n        }}\n      >\n        {!inline ? this.renderInput() : null}\n        {!inline ? (\n          <Popup\n            ref=\"popup\"\n            class={this.popupClass}\n            style={this.popupStyle}\n            visible={this.popupVisible}\n            appendToBody={this.appendToBody}\n            onClickoutside={this.handleClickOutSide}\n          >\n            {sidedar}\n            {content}\n          </Popup>\n        ) : (\n          <div class={`${prefixClass}-datepicker-main`}>\n            {sidedar}\n            {content}\n          </div>\n        )}\n      </div>\n    );\n  },\n};\n","/* istanbul ignore file */\nimport DatePicker from './date-picker';\nimport CalendarPanel from './calendar/calendar-panel';\nimport CalendarRange from './calendar/calendar-range';\nimport TimePanel from './time/time-panel';\nimport TimeRange from './time/time-range';\nimport DatetimePanel from './datetime/datetime-panel';\nimport DatetimeRange from './datetime/datetime-range';\nimport { locale } from './locale';\n\nDatePicker.locale = locale;\n\nDatePicker.install = function install(Vue) {\n  Vue.component(DatePicker.name, DatePicker);\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n  DatePicker.install(window.Vue);\n}\n\nObject.assign(DatePicker, {\n  CalendarPanel,\n  CalendarRange,\n  TimePanel,\n  TimeRange,\n  DatetimePanel,\n  DatetimeRange,\n});\n\nexport default DatePicker;\n"],"names":["_extends","Object","assign","a","b","c","arguments","length","d","prototype","hasOwnProperty","call","apply","normalMerge","toArrayMerge","functionalMerge","mergeJsxProps","reduce","indexOf","Array","e","concat","f","g","h","i","mergeFn","module","isDate","value","Date","toString","toDate","getTime","NaN","isValidDate","isNaN","startOfWeek","firstDayOfWeek","undefined","RangeError","date","day","getDay","diff","setDate","getDate","setHours","startOfWeekYear","_ref","_ref$firstDayOfWeek","_ref$firstWeekContain","firstWeekContainsDate","year","getFullYear","firstDateOfFirstWeek","setFullYear","getWeek","_ref2","_ref2$firstDayOfWeek","_ref2$firstWeekContai","firstDateOfThisWeek","Math","round","locale","months","monthsShort","weekdays","weekdaysShort","weekdaysMin","REGEX_FORMAT","pad","val","len","output","abs","sign","getOffset","getTimezoneOffset","formatTimezone","offset","delimeter","absOffset","hours","floor","minutes","meridiem","_","isLowercase","word","toLocaleLowerCase","formatFlags","Y","y","YY","substr","YYYY","M","getMonth","MM","MMM","MMMM","D","DD","H","getHours","HH","hh","m","getMinutes","mm","s","getSeconds","ss","S","getMilliseconds","SS","SSS","dd","ddd","dddd","A","meridiemFunc","Z","ZZ","X","x","w","ww","format","str","options","formatStr","String","defaultLocale","replace","match","p1","_toConsumableArray","arr","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","TypeError","iter","Symbol","iterator","from","isArray","arr2","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","enumerable","push","_objectSpread","target","source","forEach","key","_defineProperty","getOwnPropertyDescriptors","defineProperties","defineProperty","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","_e","_i","_s","next","done","err","obj","configurable","writable","formattingTokens","match1","match2","match3","match4","match1to2","matchShortOffset","matchSigned","matchTimestamp","YEAR","MONTH","DAY","HOUR","MINUTE","SECOND","MILLISECOND","parseFlags","addParseFlag","token","regex","callback","tokens","func","input","parseInt","escapeStringRegExp","matchWordRegExp","localeKey","array","Error","RegExp","map","join","matchWordCallback","index","cent","matchMeridiem","meridiemParse","defaultIsPM","toLowerCase","charAt","isPM","offsetFromString","_ref8","_ref9","symbol","hour","minute","parseFloat","to24hour","getFullInputArray","backupDate","result","backupArr","useBackup","createDate","ms","isFinite","createUTCDate","_len","args","_key","UTC","getUTCFullYear","setUTCFullYear","makeParser","dateString","mark","parseTo","parser","exec","parse","_options$locale","_locale","_options$backupDate","parseResult","month","second","millisecond","weekday","week","inputArray","firstDate","parsedDate","isValidRangeDate","every","isValidDates","dates","getValidDate","backup","startOfYear","setMonth","startOfMonth","startOfDay","getCalendar","calendar","lastDayInLastMonth","firstDayInLastMonth","lastDayInCurrentMonth","lastMonthLength","nextMonthLength","dirtyDate","dirtyMonth","Number","daysInMonth","min","setYear","dirtyYear","assignTime","time","chunk","size","slice","isObject","pick","props","res","prop","mergeDeep","exports","_default","default","lang","formatLocale","en","yearFormat","monthFormat","monthBeforeYear","locales","enUS","name","isLocal","l","getLocale","rafThrottle","fn","isRunning","fnBinfRaf","requestAnimationFrame","getPopupElementSize","element","originalDisplay","style","display","originalVisibility","visibility","styles","window","getComputedStyle","width","offsetWidth","marginLeft","marginRight","height","offsetHeight","marginTop","marginBottom","getRelativePosition","el","targetWidth","targetHeight","fixed","left","top","offsetX","offsetY","relativeRect","getBoundingClientRect","dw","document","documentElement","clientWidth","dh","clientHeight","pageXOffset","pageYOffset","right","bottom","getScrollParent","node","until","body","getPropertyValue","scroll","test","parentNode","inject","prefixClass","dispatchDatePicker","defaultValue","defaultPanel","type","disabledCalendarChanger","Function","disabledDate","getClasses","showWeekNumber","Boolean","getYearPanel","titleFormat","partialUpdate","data","panels","max","panel","innerCalendar","computed","innerValue","start","v","calendarYear","calendarMonth","watch","immediate","handler","methods","initCalendar","calendarDate","isDisabled","emitDate","$emit","handleCalendarChange","oldCalendar","handelPanelChange","oldPanel","handleSelectYear","getYearCellDate","handleSelectMonth","getMonthCellDate","handleSelectDate","getDateClasses","cellDate","notCurrentMonth","classes","state","getStateClass","getMonthClasses","getYearClasses","some","getWeekState","row","end","active","render","components","CalendarPanel","provide","onDateMouseEnter","onDateMouseLeave","calendars","hoveredValue","calendarMinDiff","calendarMaxDiff","Infinity","defaultValues","updateCalendars","handleSelect","startValue","endValue","cell","updateStartCalendar","updateEndCalendar","adjustIndex","gap","getCalendarGap","calendarLeft","calendarRight","yearDiff","monthDiff","getRangeClasses","currentDates","classnames","inRange","range","calendarRange","$props","on","select","scrollBarWidth","outer","createElement","overflow","position","appendChild","inner","removeChild","TimePanel","emitChange","handleSelectStart","handleSelectEnd","disabledStartTime","disabledTime","disabledEndTime","$listeners","emits","showTimePanel","defaultTimeVisible","currentValue","timeVisible","closeTimePanel","openTimePanel","datetime","calendarProps","timeProps","showTimeHeader","clicktitle","CalendarRange","TimeRange","datetimes","componentMap","DatetimePanel","componentRangeMap","DatetimeRange","bind","valueType","formatter","multiple","rangeSeparator","placeholder","editable","disabled","clearable","inputClass","inputAttr","appendToBody","open","popupClass","popupStyle","inline","confirm","confirmText","renderInputText","shortcuts","validator","text","onClick","userInput","defaultOpen","mouseInInput","popupVisible","innerRangeSeparator","innerFormat","validMultipleType","value2date","isValidValue","formatDate","showClearIcon","types","created","console","warn","handleMouseEnter","handleMouseLeave","handleClickOutSide","evt","$el","contains","closePopup","getFormatter","parseDate","fmt","date2value","emitValue","close","isValidValueAndNotDisabled","handleMultipleDates","nextDates","clear","handleClear","stopPropagation","handleConfirmDate","handleSelectShortcut","currentTarget","getAttribute","item","openPopup","blur","$refs","focus","handleInputChange","trim","split","handleInputInput","handleInputKeydown","keyCode","handleInputBlur","handleInputFocus","hasSlot","$slots","$scopedSlots","renderSlot","fallback","slotFn","renderInput","autocomplete","class","readonly","className","attrs","events","keydown","change","calendarIcon","renderContent","Component","content","ref","emit","renderSidebar","renderHeader","renderFooter","sidedar","DatePicker","install","Vue","component"],"mappings":"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"}